[Top][All Lists]
[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
$
bfd_abs_section-bug.tar.gz
Description: Sample files
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- ld segfaults modifying bfd_abs_section,
Per Cederqvist <=