Heikki Lindholm wrote:
Philippe Gerum kirjoitti:
Heikki Lindholm wrote:
libpthread_rt won't produce usable exec apps on ppc64 if it uses --wrap.
There seems to be no reason to use --wrap for building the lib itself.
Good catch for the lib flags. However, substituting __real calls with
the genuine ones seems wrong to me. You'd just end up causing the same
issue.
I don't think so. Although, I'm not sure how ld is supposed to handle
--wrap case for libraries, this works in the dynamic case, at least, for
the ppc32 and ppc64 (tested on debian sarge and gentoo ppc64), whereas
leaving the __real*'s in dynamic library will fail with unrelocatable
symbols.
Ok, that's another issue. We still need to call __real entry points, but
we also have to care for the specific issue of dynamic linking which
does not substitute the calls:
Excerpt from ld's info page, talking about wrapping malloc:
You may wish to provide a `__real_malloc' function as well, so that
links without the `--wrap' option will succeed. If you do this,
you should not put the definition of `__real_malloc' in the same
file as `__wrap_malloc'; if you do, the assembler may resolve the
call before the linker has a chance to wrap it to `malloc'.
So we need a separate .c file glued to the lib, which basically does:
__real_foo ()
{
foo();
}
For all __real symbols referenced.
I suppose the library-object is excluded from --wrap if it
wasn't linked with that originally. If someone actually knows how this
should happen, do step in.
-- Heikki Lindholm
_______________________________________________
Rtai-dev mailing list
[EMAIL PROTECTED]
https://mail.gna.org/listinfo/rtai-dev
--
Philippe.