Jeremie Courreges-Anglas:

> Those are two approaches to get past this failure, but I suspect that
> the root cause is just a bug / limitation introduced in this llvm
> release.   The approach taken by libintl looks reasonable to me,

I'm looking at security/pinentry as an example case, and it's a
headscratcher.

libglib-2.0.so is loaded first, and it has undefined references to
pthread_mutexattr_*() as well as a DT_NEEDED for libpthread.so.
libintl.so with its weak references to pthread_mutexattr_*() comes
later.  How can pthread_mutexattr_*() end up as undefined there?

IIRC, the last lld update saw a change where libxxx with DT_NEEDED
for libyyy now meant that only libxxx would see the symbols from
libyyy.  If other object files reference symbols from libyyy, an
explicit -lyyy is needed.  So that would explain why libintl doesn't
see the libpthread that is pulled in by libglib.  But in that case
libintl should fall back to the weak symbol reference.

-- 
Christian "naddy" Weisgerber                          [email protected]

Reply via email to