[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