Re: Linux 2.5.60

From: Werner Almesberger (
Date: Thu Feb 13 2003 - 18:25:58 EST

Jeff Dike wrote:
>> Or it can use the linker to play games with symbol names to move the
>> kernel off into it's own separate name space.
> Maybe, I'm not expert enough with the linker to do that.

The basic trick is that -Wl,--wrap,foo renames the symbol "foo"
to "__real_foo", and resolves any reference to "foo" to "__wrap_foo".
So you can write wrappers that look like this:

whatever __wrap_foo(...)
    /* do stuff */
    blah = __real_foo(...);
    /* do more stuff */

While this sounds pretty cool, it comes with a few gotchas:

 - doesn't work for symbols that get resolved at compile time
   (static, maybe also anything in the same compilation unit)
 - when doing incremental linking, you need the -Wl,--wrap there,
 - changing the set of -Wl,--wrap options means that you have to
   rebuild from a make clean afterwards (okay, not such a nightmare
   anymore, thanks to ccache)

I've used this pretty extensively in umlsim. It's okay if you
really want to avoid touching the source underneath. But you
spend a lot of time tracking down the occasional symbol that is
affected by one of the gotchas above ...

- Werner

 / Werner Almesberger, Buenos Aires, Argentina /
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Sat Feb 15 2003 - 22:00:50 EST