[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/13255] New: Wrong `local symbol is referenced by DSO' warnings o
From: |
ro at TechFak dot Uni-Bielefeld.DE |
Subject: |
[Bug ld/13255] New: Wrong `local symbol is referenced by DSO' warnings on Solaris |
Date: |
Tue, 04 Oct 2011 14:30:07 +0000 |
http://sourceware.org/bugzilla/show_bug.cgi?id=13255
Bug #: 13255
Summary: Wrong `local symbol is referenced by DSO' warnings on
Solaris
Product: binutils
Version: 2.22
Status: NEW
Severity: critical
Priority: P1
Component: ld
AssignedTo: address@hidden
ReportedBy: address@hidden
Classification: Unclassified
Host: i386-pc-solaris2.11
Target: i386-pc-solaris2.11
Build: i386-pc-solaris2.11
I've just tried gcc mainline with binutils 2.21.90 on Solaris 11/x86. Apart
from
PR ld/13254, I've got many gcc testsuite failures like the following:
FAIL: gcc.dg/special/gcsec-1.c (test for excess errors)
Excess errors:
/vol/gcc/bin/gld-2.21.90: .
WARNING: gcc.dg/special/gcsec-1.c compilation failed to produce executable
Running test manually yields
> /vol/gcc/obj/gcc-4.7.0-20110930/11-gcc-gas-gld22190/gcc/xgcc
> -B/vol/gcc/obj/gcc-4.7.0-20110930/11-gcc-gas-gld22190/gcc/
> /vol/gcc/src/hg/trunk/solaris/gcc/testsuite/gcc.dg/special/gcsec-1.c
> -ffunction-sections -fdata-sections -Wl,--gc-sections -lm -o ./gcsec-1.exe
/vol/gcc/bin/gld-2.21.90: ./gcsec-1.exe: local symbol
`__flt_rounds@@SYSVABI_1.3' in /lib/libc.so is referenced by DSO
/vol/gcc/bin/gld-2.21.90: final link failed: Bad value
collect2: error: ld returned 1 exit status
so it seems most of the error message is stripped by the gcc testsuite
framework.
> gld-2.21.90 --eh-frame-hdr -m elf_i386_sol2 -Y P,/usr/ccs/lib:/lib:/usr/lib
> -Qy -o ./gcsec-1.exe /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/values-Xa.o
> /vol/gcc/obj/gcc-4.7.0-20110930/11-gcc-gas-gld22190/gcc/crtbegin.o
> -L/vol/gcc/obj/gcc-4.7.0-20110930/11-gcc-gas-gld22190/gcc gcsec-1.o
> --gc-sections -lm -lgcc -lgcc_eh -lc -lgcc -lgcc_eh
> /vol/gcc/obj/gcc-4.7.0-20110930/11-gcc-gas-gld22190/gcc/crtend.o
> /usr/lib/crtn.o
gld-2.21.90: ./gcsec-1.exe: local symbol `__flt_rounds@@SYSVABI_1.3' in
/lib/libc.so is referenced by DSO
gld-2.21.90: final link failed: Bad value
The main problem is that the error is wrong: __flt_rounds *isn't* a local
symbol:
address@hidden 185 > nm /lib/libc.so|grep __flt_rounds
[8262] | 1496252| 4|OBJT |GLOB |0 |29 |__flt_rounds
[1237] | 0| 0|FILE |LOCL |0 |ABS |__flt_rounds.c
It is referenced in libm.so:
/lib/libm.so: [2411] | 0| 0|OBJT |GLOB |0 |UNDEF
|__flt_rounds
/lib/libc.so: [8262] | 1496252| 4|OBJT |GLOB |0 |29
|__flt_rounds
/lib/libc.so: [1237] | 0| 0|FILE |LOCL |0 |ABS
|__flt_rounds.c
Apart from that, even if it were correct, the error message is pretty useless:
which DSO does it reference?
I fear this is a showstopper bug: it renders gld complete useless on Solaris.
I've only tried Solaris 11 so far, but expect that there's no difference on
older releases.
Rainer
--
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 ld/13255] New: Wrong `local symbol is referenced by DSO' warnings on Solaris,
ro at TechFak dot Uni-Bielefeld.DE <=