https://sourceware.org/bugzilla/show_bug.cgi?id=33177
Bug ID: 33177 Summary: pr26590 etc. FAIL due to Solaris ABI symbols Product: binutils Version: 2.45 Status: NEW Severity: normal Priority: P2 Component: ld Assignee: unassigned at sourceware dot org Reporter: ro at gcc dot gnu.org Target Milestone: --- Target: *-*-solaris2.11 A couple of ld tests FAIL on Solaris for the same reason: FAIL: Build pr26590 (1) FAIL: Run with pr14862-1.c libpr14862.so FAIL: pr26580-3 The first of those FAILs due to extra regexps in /vol/src/gnu/binutils/hg/binutils-2.45-branch/local/ld/testsuite/ld-elf/pr26590.err starting with "^.*: tmpdir/libpr26590b.so: undefined reference to `f1'$" EOF from tmpdir/ld.messages Linker was expected to give error or warning while on Linux, I get the expected /var/gcc/binutils/i686/obj/binutils-2.45-branch-g3/ld/tmpdir/ld/collect-ld: tmpdir/libpr26590b.so: undefined reference to `f1' It turns out that libpr26590b.so on Solaris has a dependency on libpr26590a.so] $ readelf -d tmpdir/libpr26590b.so | grep -i needed 0x00000001 (NEEDED) Shared library: [tmpdir/libpr26590a.so] 0x00000001 (NEEDED) Shared library: [libc.so.1] while on Linux it has not: $ readelf -d tmpdir/libpr26590b.so|grep -i needed 0x00000001 (NEEDED) Shared library: [libc.so.6] and the Solaris executable depends on both libpr26590[ab].so: $ readelf -d tmpdir/pr26590 | grep -i needed 0x00000001 (NEEDED) Shared library: [tmpdir/libpr26590a.so] 0x00000001 (NEEDED) Shared library: [tmpdir/libpr26590b.so] 0x00000001 (NEEDED) Shared library: [libc.so.1] Performing both links with ld -M, on Solaris I get As-needed library included to satisfy reference by file (symbol) tmpdir/libpr26590a.so /usr/lib/crt1.o (_GLOBAL_OFFSET_TABLE_) tmpdir/libpr26590b.so tmpdir/pr26590c.o (f2) libc.so.1 /usr/lib/crt1.o (_exit@@SYSVABI_1.3) while on Linux there's As-needed library included to satisfy reference by file (symbol) tmpdir/libpr26590b.so tmpdir/pr26590c.o (f2) libc.so.6 tmpdir/pr26590c.o (puts@@GLIBC_2.0) This happens because every executable and shared object is required to define a couple of symbols, which is implemented in emultempl/solaris2.em (elf_solaris2_before_allocation). To avoid the resulting failures, I wondered if there's a way to treat those symbols specially to avoid defeating --as-needed in this way, but couldn't easily find any (probably in bfd/elflink.c?). Any help would be appreciated. Thanks. Rainer -- You are receiving this mail because: You are on the CC list for the bug.