bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/3535] New: GNU strip 2.17 corrupts Sun CC/cc binaries (ld


From: swatts at ngms dot eu dot com
Subject: [Bug binutils/3535] New: GNU strip 2.17 corrupts Sun CC/cc binaries (ld issue?)
Date: 17 Nov 2006 13:39:33 -0000

GNU strip (2.17) build on sparc-sun-solaris2.8 with GNU toolchain (gcc 4.1.1).
Host: SunOS xxx 5.8 Generic_108528-29 sun4u sparc SUNW,Sun-Fire-V240 Solaris

Binaries build with GCC 4.1.1 (c/c++) appear to be stripped okay.  This is part
of the toolchain that includes binutils (built with, and uses).

Binaries build with SUN's Forte CC or cc (6U2) are corrupted:  Resultant
stripped binary is ~10 times larger that the original, and are 'killed' when
invoked.  This was where the problem was raised, as the GNU strip was being
picked up rather than the native strip for a release build.

Binaries build with GCC 2.8.1 from sparc-sun-solaris2.6 (run from that machine)
are also corrupted in the same way.  Note that this is from a seperate legacy
machine, and used the native ld there.

Stripping with the native ('/usr/ccs/bin/strip') works for all the above cases.

Rebuilding binutils 2.16.1 (previous version); strip works on the SUN/CC binary.

Building binutils 2.17:  'make check' passes on all subdirs except 'ld'.  A
abbreviated log of the results of make check on ld follows (includes insertions
from the detailed ld.log):

-------------------------------------
                === ld tests ===

Schedule of variations:
    unix

Running target unix
Using /opt/gnu/share/dejagnu/baseboards/unix.exp as board description file for
target.
Using /opt/gnu/share/dejagnu/config/unix.exp as generic interface file for 
target.
Using /export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/config/default.exp
as tool-and-target-specific interface file.

Running /export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf/elf.exp 
...
|       gcc  -B/export/data/simonw/SYS/binutils-build/ld/tmpdir/gas/
-I/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf -g -O2   -c -g
-O2  -c /export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf/preinit.c
-o tmpdir/preinit.o
|       /export/data/simonw/SYS/binutils-build/ld/ld-new -m elf32_sparc  -o
tmpdir/preinit /opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crt1.o
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crti.o /usr/ccs/lib/values-Xa.o
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crtbegin.o
-L/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf -static
tmpdir/preinit.o  --start-group
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/libgcc.a
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/libgcc_eh.a -lc --end-group
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crtend.o
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crtn.o
|       Running: tmpdir/preinit > tmpdir/preinit.out
|       diff tmpdir/preinit.out
/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf/preinit.out
|       0a1,3
|       > preinit array 0
|       > preinit array 1
|       > preinit array 2
|       child process exited abnormally
FAIL: static preinit array
|       gcc  -B/export/data/simonw/SYS/binutils-build/ld/tmpdir/gas/
-I/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf -g -O2   -c -g
-O2  -c /export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf/init.c -o
tmpdir/init.o
|       /export/data/simonw/SYS/binutils-build/ld/ld-new -m elf32_sparc  -o
tmpdir/init /opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crt1.o
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crti.o /usr/ccs/lib/values-Xa.o
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crtbegin.o
-L/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf -static
tmpdir/init.o  --start-group
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/libgcc.a
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/libgcc_eh.a -lc --end-group
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crtend.o
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crtn.o
|       Running: tmpdir/init > tmpdir/init.out
|       diff tmpdir/init.out
/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf/init.out
|       0a1,3
|       > init array 0
|       > init array 1
|       > init array 2
|       child process exited abnormally
FAIL: static init array
|       gcc  -B/export/data/simonw/SYS/binutils-build/ld/tmpdir/gas/
-I/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf -g -O2   -c -g
-O2  -c /export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf/fini.c -o
tmpdir/fini.o
|       /export/data/simonw/SYS/binutils-build/ld/ld-new -m elf32_sparc  -o
tmpdir/fini /opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crt1.o
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crti.o /usr/ccs/lib/values-Xa.o
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crtbegin.o
-L/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf -static
tmpdir/fini.o  --start-group
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/libgcc.a
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/libgcc_eh.a -lc --end-group
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crtend.o
/opt/gnu/lib/gcc/sparc-sun-solaris2.8/4.1.1/crtn.o
|       Running: tmpdir/fini > tmpdir/fini.out
|       diff tmpdir/fini.out
/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-elf/fini.out
|       0a1,3
|       > fini array 2
|       > fini array 1
|       > fini array 0
|       child process exited abnormally
FAIL: static fini array

Running
/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-shared/shared.exp ...
|       gcc -B/export/data/simonw/SYS/binutils-build/ld/tmpdir/ld/
-L/opt/gnu/sparc-sun-solaris2.8/lib -L/opt/gnu/lib -L/usr/local/lib
-L/usr/ccs/lib -L/lib -L/usr/lib  -o tmpdir/shnp.so -shared -T
/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-shared/elf-offset.ld
tmpdir/sh1np.o tmpdir/sh2np.o
|       gcc -B/export/data/simonw/SYS/binutils-build/ld/tmpdir/ld/
-L/opt/gnu/sparc-sun-solaris2.8/lib -L/opt/gnu/lib -L/usr/local/lib
-L/usr/ccs/lib -L/lib -L/usr/lib  -o tmpdir/shnp -Wl,-rpath,tmpdir
tmpdir/mainnp.o tmpdir/shnp.so
|       tmpdir/shnp >tmpdir/shnp.out
|       child killed: segmentation violation
FAIL: shared (non PIC, load offset)

Running
/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-sparc/sparc.exp ...
|       /export/data/simonw/SYS/binutils-build/ld/../gas/as-new   -o
tmpdir/tlssunbin64.o --64 -Av9
/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-sparc/tlssunbin64.s
|       /export/data/simonw/SYS/binutils-build/ld/ld-new  -o tmpdir/tlssunbin64
-L/export/home/simonw/data/SYS/binutils-2.17/ld/testsuite/ld-sparc -melf64_sparc
tmpdir/libtlslib64.so tmpdir/tlssunbinpic64.o tmpdir/tlssunbin64.o
|       /export/data/simonw/SYS/binutils-build/ld/../binutils/readelf -WSsrl
tmpdir/tlssunbin64 > dump.out
|       regexp_diff match failure
|       regexp "^ +\[ 6\] .text +PROGBITS +0+101000 0+1000 0+11a4 00 +AX +0 +0 
4096$"
|       line   "  [ 6] .text             PROGBITS        0000000100001000 001000
0011a4 00  AX  0   0 4096"
|       regexp_diff match failure
|       regexp "^ +\[ 7\] .tdata +PROGBITS +0+2021a4 0+21a4 0+0060 00 WAT +0 +0 
+4$"
|       line   "  [ 7] .tdata            PROGBITS        00000001001021a4 0021a4
000060 00 WAT  0   0  4"
|       regexp_diff match failure
|       regexp "^ +\[ 8\] .tbss +NOBITS +0+202204 0+2204 0+40 00 WAT +0 +0 +4$"
|       line   "  [ 8] .tbss             NOBITS          0000000100102204 002204
000040 00 WAT  0   0  4"
|       regexp_diff match failure
|       regexp "^ +\[ 9\] .dynamic +DYNAMIC +0+202208 0+2208 0+100 10 +WA +4 +0 
+8$"
|       line   "  [ 9] .dynamic          DYNAMIC         0000000100102208 002208
000100 10  WA  4   0  8"
|       regexp_diff match failure
|       regexp "^ +\[10\] .got +PROGBITS +0+202308 0+2308 0+28 08 +WA +0 +0 +8$"
|       line   "  [10] .got              PROGBITS        0000000100102308 002308
000028 08  WA  0   0  8"
|       regexp_diff match failure
|       regexp "^Entry point 0x102000$"
|       line   "Entry point 0x100002000"
|       regexp_diff match failure
|       regexp "^ +PHDR +0x0+40 0x0+100040 0x0+100040 0x0+150 0x0+150 R E 0x8$"
|       line   "  PHDR           0x000040 0x0000000100000040 0x0000000100000040
0x000150 0x000150 R E 0x8"
|       regexp_diff match failure
|       regexp "^ +INTERP +0x0+190 0x0+100190 0x0+100190 0x0+19 0x0+19 R +0x1$"
|       line   "  INTERP         0x000190 0x0000000100000190 0x0000000100000190
0x000019 0x000019 R   0x1"
FAIL: 64-bit: TLS -fpic and -fno-pic exec transitions

                === ld Summary ===

# of expected passes            190
# of unexpected failures        5
# of expected failures          5
# of untested testcases         6
-------------------------------------------------------

So...:  Is the problem we are seeing with 'strip' actually a problem with 'ld'?
(the gcc 2.8 test would have used the native ld from Solaris 5.6).

For comparison, when building binutils 2.16.1, the only failure in 'make check'
was from ld ld-shared.exp ("FAIL: shared (non PIC, load offset)"), which appears
the same failure as with 2.17.

-- 
           Summary: GNU strip 2.17 corrupts Sun CC/cc binaries (ld issue?)
           Product: binutils
           Version: 2.17
            Status: NEW
          Severity: critical
          Priority: P2
         Component: binutils
        AssignedTo: unassigned at sources dot redhat dot com
        ReportedBy: swatts at ngms dot eu dot com
                CC: bug-binutils at gnu dot org
 GCC build triplet: sparc-sun-solaris2.8
  GCC host triplet: sparc-sun-solaris2.8
GCC target triplet: sparc-sun-solaris2.8


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

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




reply via email to

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