Hi,

It seems that binaries are different in terms of dwarf section:

[EMAIL PROTECTED] ~/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
[EMAIL PROTECTED] ~/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:
[EMAIL PROTECTED] ~/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
[EMAIL PROTECTED] ~/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
__
distcc mailing list            http://distcc.samba.org/
To unsubscribe or change options:
http://lists.samba.org/mailman/listinfo/distcc

Reply via email to