bug-binutils
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]