[distcc] distcc 2.14 not producing exactly same binaries,
dwarf section is different
Arkadiusz Miskiewicz
arekm at pld-linux.org
Tue May 25 15:08:57 GMT 2004
Hi,
It seems that binaries are different in terms of dwarf section:
[misiek at arm ~/rpm/BUILD/distcc-2.14]$ file distcc
distcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.0, dynamically linked (uses shared libs), not stripped
[misiek at arm ~/rpm/BUILD/distcc-2.14]$ file distcc.gcc
distcc.gcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.0, dynamically linked (uses shared libs), not stripped
distcc binary was compiled using distcc, distcc.gcc was
compiled using only local gcc 3.3.3.
Now the difference:
[misiek at arm ~/rpm/BUILD/distcc-2.14]$ readelf --debug-dump distcc 2>&1 |grep comp_dir | grep string
DW_AT_comp_dir DW_FORM_string
DW_AT_comp_dir DW_FORM_string
DW_AT_comp_dir DW_FORM_string
DW_AT_comp_dir DW_FORM_string
DW_AT_comp_dir DW_FORM_string
[...]
DW_AT_comp_dir DW_FORM_string
DW_AT_comp_dir DW_FORM_string
DW_AT_comp_dir DW_FORM_string
DW_AT_comp_dir DW_FORM_string
while
[misiek at arm ~/rpm/BUILD/distcc-2.14]$ readelf --debug-dump distcc.gcc 2>&1 |grep comp_dir | grep string
DW_AT_comp_dir : (indirect string, offset: 0x1020): /home/users/misiek/rpm/BUILD/distcc-2.14
DW_AT_comp_dir : (indirect string, offset: 0x1020): /home/users/misiek/rpm/BUILD/distcc-2.14
DW_AT_comp_dir : (indirect string, offset: 0x1020): /home/users/misiek/rpm/BUILD/distcc-2.14
DW_AT_comp_dir : (indirect string, offset: 0x1020): /home/users/misiek/rpm/BUILD/distcc-2.14
DW_AT_comp_dir : (indirect string, offset: 0x1020): /home/users/misiek/rpm/BUILD/distcc-2.14
DW_AT_comp_dir : (indirect string, offset: 0x1020): /home/users/misiek/rpm/BUILD/distcc-2.14
DW_AT_comp_dir : (indirect string, offset: 0x1020): /home/users/misiek/rpm/BUILD/distcc-2.14
DW_AT_comp_dir : (indirect string, offset: 0x1020): /home/users/misiek/rpm/BUILD/distcc-2.14
DW_AT_comp_dir : (indirect string, offset: 0x1020): /home/users/misiek/rpm/BUILD/distcc-2.14
DW_AT_comp_dir DW_FORM_string
DW_AT_comp_dir DW_FORM_string
DW_AT_comp_dir DW_FORM_string
DW_AT_comp_dir DW_FORM_string
as you can see distcc compiled using distcc misses proper DW_AT_comp_dir entry.
This breaks tool used in PLD Linux and in Fedora Core. It's called debugedit and it's part
of rpm package.
It's task is to find out paths, get list of source files so these can be placed in debug
files included in debugedit subpackages like this:
/usr/lib/debug/usr/bin/distcc.debug
/usr/lib/debug/usr/bin/distccd.debug
/usr/lib/debug/usr/bin/distccmon-gnome.debug
/usr/lib/debug/usr/bin/distccmon-text.debug
/usr/src/debug/distcc-2.14
/usr/src/debug/distcc-2.14/lzo
/usr/src/debug/distcc-2.14/lzo/lzoconf.h
/usr/src/debug/distcc-2.14/lzo/minilzo.c
/usr/src/debug/distcc-2.14/src
/usr/src/debug/distcc-2.14/src/access.c
/usr/src/debug/distcc-2.14/src/access.h
/usr/src/debug/distcc-2.14/src/arg.c
[...]
and then you can have /usr/bin/distcc stripped + load symbols in gdb via add-symbol-file.
Bad DW_AT_comp_dir causes that it can't find correct sources.
My setup is described in previous email (,,distcc 2.14 bugs in lzo code(?)'').
--
Arkadiusz Miśkiewicz CS at FoE, Wroclaw University of Technology
arekm.pld-linux.org, 1024/3DB19BBD, JID: arekm.jabber.org, PLD/Linux
More information about the distcc
mailing list