bug-gnu-utils
[Top][All Lists]
Advanced

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

ld segfaults modifying bfd_abs_section


From: Per Cederqvist
Subject: ld segfaults modifying bfd_abs_section
Date: 14 Feb 2001 00:27:54 +0100
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.0.95

Summary: ld dies with segmentation fault, apparently trying to modify
bfd_abs_section.

Version: binutils-2.10.1.0.7 downloaded from
ftp://ftp.varesearch.com/pub/support/hjl/binutils/

ld --version reports this:
GNU ld version 2.10.91 (with BFD 2.10.1.0.7)

Patches applied: none.

Hardware: 600 MHz AMD Athlon.

OS: Linux 2.4.1, glibc-2.2.

Compiler: gcc-2.95.2.

Makefile that reproduces the problem:

--- cut here ---
CC=gcc

elf.out: fdct_mmx.o fdctdata.o main.o
        gcc -v -o $@ $^

fdct_mmx.o: fdct_mmx.s
        nasm -o fdct_mmx.o -f elf fdct_mmx.s

fdctdata.o: fdctdata.c

main.o: main.c

--- cut here ---

Sample session:

$ rm elf.out *.o
$ make
nasm -o fdct_mmx.o -f elf fdct_mmx.s
gcc    -c -o fdctdata.o fdctdata.c
gcc    -c -o main.o main.c
gcc -v -o elf.out fdct_mmx.o fdctdata.o main.o
Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/specs
gcc version 2.95.2 19991024 (release)
 /usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/collect2 -m elf_i386 -dynamic-linker 
/lib/ld-linux.so.2 -o elf.out /usr/lib/crt1.o /usr/lib/crti.o 
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/crtbegin.o 
-L/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2 -L/usr/i686-pc-linux-gnu/lib 
fdct_mmx.o fdctdata.o main.o -lgcc -lc -lgcc 
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/crtend.o /usr/lib/crtn.o
collect2: ld terminated with signal 11 [Segmentation fault], core dumped
make: *** [elf.out] Error 1
$


Using the "-v" option of collect2 I found out how ld is invoked.
Running it standalone with those arguments also reproduces the crash:

$ ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o elf.out /usr/lib/crt1.o 
/usr/lib/crti.o /usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/crtbegin.o 
-L/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2 -L/usr/i686-pc-linux-gnu/lib 
fdct_mmx.o fdctdata.o main.o -lgcc -lc -lgcc 
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/crtend.o /usr/lib/crtn.o
Segmentation fault
$

GDB session:

$ gdb /usr/bin/ld
(gdb) r -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o elf.out 
/usr/lib/crt1.o /usr/lib/crti.o 
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/crtbegin.o 
-L/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2 -L/usr/i686-pc-linux-gnu/lib 
fdct_mmx.o fdctdata.o main.o -lgcc -lc -lgcc 
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/crtend.o /usr/lib/crtn.o
Starting program: /usr/bin/ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o 
elf.out /usr/lib/crt1.o /usr/lib/crti.o 
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/crtbegin.o 
-L/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2 -L/usr/i686-pc-linux-gnu/lib 
fdct_mmx.o fdctdata.o main.o -lgcc -lc -lgcc 
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/crtend.o /usr/lib/crtn.o

Program received signal SIGSEGV, Segmentation fault.
0x8072f12 in elf_link_input_bfd (finfo=0xbffff784, input_bfd=0x80e5770)
    at elflink.h:5552
5552                isec->symbol->value = isym->st_value;
(gdb) p &bfd_abs_section
$1 = (asection *) 0x80b8360
(gdb) p isec
$2 = (asection *) 0x80b8360
(gdb) info symbol &bfd_abs_section 
bfd_abs_section in section .rodata
(gdb)

Enclosed is a tar file that contains the Makefile, the three source
files needed to reproduce the problem, and the three object files in
case it is gcc or nasm that produces something strange.  (This is a
stripped-down example that cannot be run, but it is enough to
reproduce the bug in ld.)

ld from binutils-2.10.1 (from ftp://ftp.gnu.org/pub/gnu/binutils/) can
link these files:

$ /tmp/binutils-2.10.1/bin/ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o 
elf.out /usr/lib/crt1.o /usr/lib/crti.o 
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/crtbegin.o 
-L/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2 -L/usr/i686-pc-linux-gnu/lib 
fdct_mmx.o fdctdata.o main.o -lgcc -lc -lgcc 
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/crtend.o /usr/lib/crtn.o
$ echo $?
0
$

Attachment: bfd_abs_section-bug.tar.gz
Description: Sample files


reply via email to

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