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.

Reply via email to