This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
gold --incremental not producing DWARF such that nm can handle it, internal error
- From: Britton Kerin <britton dot kerin at gmail dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Wed, 23 Mar 2016 15:24:35 -0800
- Subject: gold --incremental not producing DWARF such that nm can handle it, internal error
- Authentication-results: sourceware.org; auth=none
On gcc 4.8.1, nm and gold 2.26.20160125
I'm getting some strange effects trying to use nm on binaries produced
with --incremental.
Full log below but the upshot is:
* --incremental gold produces binaries st nm --line-numbers complains like this:
$ nm --line-numbers instrument_test >/dev/null
nm: Dwarf Error: Bad abbrev number: 0.
nm: Dwarf Error: found dwarf version '0', this reader only
handles version 2, 3 and 4 information.
nm: Dwarf Error: found dwarf version '0', this reader only
handles version 2, 3 and 4 information.
nm still coughs up the requested information but these are pretty
disturbing warnings.
* --incremental never succeeds, first time it say
instrument_test: stat: No such file or directory
linking with --incremental-full
for obvious reasons. But then after touching one source file:
$ make instrument_test
# See the comments in instrument.h for the reasons for these options
# and for the double build.
gcc -c -D_GNU_SOURCE -Wall -Wextra -Werror -gdwarf-4 -O2 -fPIC
instrument_test.c -o instrument_test.o
gcc -c -D_GNU_SOURCE -Wall -Wextra -Werror -gdwarf-4 -O0 -fPIC
instrument_test.c -o instrument_test.o
# See the Program Library Howto for a real life shared lib/DLL setup
gcc -Wl,-rpath,`pwd` -gdwarf-4 -fuse-ld=gold -Wl,--incremental
-fPIC instrument_test.o instrument.o libdemo_shared_lib.so -ldl -o
instrument_test
/home/bkerin/opt/binutils-2.26/bin/ld.gold: internal error in
init_got_plt_for_update, at target.h:1023
collect2: error: ld returned 1 exit status
make: *** [instrument_test] Error 1
2 $
Looking at gold/target.h:1023 it says something about a target needing
to imlement a virtual function to support incremental linking, so
maybe I didn't compile something right? I just built
binutils with ./configure --enable-gold=yes, perhaps something more is
required to support incremental linking?
Britton
$ make instrument_test
# See the comments in instrument.h for the reasons for these options
# and for the double build.
gcc -c -D_GNU_SOURCE -Wall -Wextra -Werror -gdwarf-4 -O2 -fPIC
instrument_test.c -o instrument_test.o
gcc -c -D_GNU_SOURCE -Wall -Wextra -Werror -gdwarf-4 -O0 -fPIC
instrument_test.c -o instrument_test.o
# See the comments in instrument.h for the reasons for these options
# and for the double build.
gcc -c -D_GNU_SOURCE -Wall -Wextra -Werror -gdwarf-4 -O2 -fPIC
instrument.c -o instrument.o
gcc -c -D_GNU_SOURCE -Wall -Wextra -Werror -gdwarf-4 -O0 -fPIC
instrument.c -o instrument.o
# See the comments in instrument.h for the reasons for these options
# and for the double build.
gcc -c -D_GNU_SOURCE -Wall -Wextra -Werror -gdwarf-4 -O2 -fPIC
demo_shared_lib.c -o demo_shared_lib.o
gcc -c -D_GNU_SOURCE -Wall -Wextra -Werror -gdwarf-4 -O0 -fPIC
demo_shared_lib.c -o demo_shared_lib.o
# See the Program Library Howto for a real life shared lib/DLL setup
gcc -Wl,-soname,libdemo_shared_lib.so -gdwarf-4 -fuse-ld=gold
-Wl,--incremental -fPIC -rdynamic -shared demo_shared_lib.o -o
libdemo_shared_lib.so
libdemo_shared_lib.so: stat: No such file or directory
linking with --incremental-full
# See the Program Library Howto for a real life shared lib/DLL setup
gcc -Wl,-rpath,`pwd` -gdwarf-4 -fuse-ld=gold -Wl,--incremental -fPIC
instrument_test.o instrument.o libdemo_shared_lib.so -ldl -o
instrument_test
instrument_test: stat: No such file or directory
linking with --incremental-full
$ nm --line-numbers instrument_test >/dev/null
nm: Dwarf Error: Bad abbrev number: 0.
nm: Dwarf Error: found dwarf version '0', this reader only handles
version 2, 3 and 4 information.
nm: Dwarf Error: found dwarf version '0', this reader only handles
version 2, 3 and 4 information.