Hi,

Upon doing a mock build of yelp-2.28.1-2.fc13 with the new version of binutils
(containing the proposed DSO link changes to ld) from
http://roland.fedorapeople.org/ld-test/, the build fails.

/usr/bin/ld.bfd: 
/usr/lib/xulrunner-sdk-1.9.2/lib/libxpcomglue.a(nsGlueLinkingDlopen.o): 
undefined reference to symbol 'dlopen@@GLIBC_2.1'
/usr/bin/ld.bfd: note: 'dlopen@@GLIBC_2.1' is defined in DSO 
/usr/lib/gcc/i686-redhat-linux/4.4.3/../../../libdl.so so try adding it to the 
linker command line

In the linker line we can see "-ldl -lxpcomeglue" present. -lxpcomglue uses
symbols from -ldl, while yelp does not. Since -lxpcomglue is a static library,
the -ldl was added to satisfy this.

The problem is with the order in which libraries are declared. Since -ldl is
declared before -lxpcomglue in the link line, and since nothing in yelp uses
symbols from -ldl, it is dropped at that point leaving -lxpcomglue with 
undefined
symbols from -ldl.

The following potential solutions were proposed by Roland McGrath to this issue 
:

Rearranging the link line would fix this ("-lxpcomglue -ldl"), or
xulrunner-devel could add a libxpcomglue.so linker script containing :

AS_NEEDED ( libxpcomglue.a -ldl )

This way any package using -lxpcomglue would not need to know whether
it is a shared/static library, and what other libraries it makes use of.


Thank-You,
-- 
Roland Grunberg
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel

Reply via email to