http://sourceware.org/bugzilla/show_bug.cgi?id=14773

             Bug #: 14773
           Summary: ld --as-needed reports undefined reference in the
                    wrong library
           Product: binutils
           Version: 2.23
            Status: NEW
          Severity: minor
          Priority: P2
         Component: ld
        AssignedTo: unassig...@sourceware.org
        ReportedBy: ats-sourcew...@offog.org
    Classification: Unclassified
              Host: x86_64-unknown-linux-gnu
            Target: x86_64-unknown-linux-gnu
             Build: x86_64-unknown-linux-gnu


Created attachment 6702
  --> http://sourceware.org/bugzilla/attachment.cgi?id=6702
Script to reproduce the problem

If I have:

- libshared.so linked with -lX11, containing func which calls XFillRectangle
- libstatic.a, containing func2 which calls XFillRectangle
- main.o, containing main which calls func and func2

... and I do:

gcc -Wl,--as-needed -o main main.o libshared.so -lX11 libstatic.a

... then I get an error like this:

/gar/bin/ld: libshared.so: undefined reference to symbol 'XFillRectangle'
/gar/bin/ld: note: 'XFillRectangle' is defined in DSO /lib64/libX11.so so try
adding it to the linker command line
/lib64/libX11.so: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status

The "undefined reference" report is misleading -- XFillRectangle isn't an
undefined symbol in libshared.so, because libshared.so was correctly linked
against -lX11. It's an undefined symbol in libstatic.a.

This happens for me with binutils 2.23 and 2.22 built from source, and with
Debian wheezy's 2.22. I'll attach the output from all three of these, but it's
effectively the same, just with different paths.

I actually ran into this problem while building motif 2.3.4, where the static
library was libExm.a, the shared library was libXm.so, and the executable being
linked was simple_app.

Interestingly, if you remove the -lX11 from the ld invocation, then it links
quite happily -- which I didn't expect with --as-needed...

Let me know if you need any more details -- thanks!

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to