gdb's debuglink support is broken
Radoslaw Zielinski
radek at pld-linux.org
Wed May 6 12:29:49 CEST 2009
This path is correct:
$ objdump -s -j .gnu_debuglink /usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg/Pg.so
/usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg/Pg.so: file format elf32-i386
Contents of section .gnu_debuglink:
0000 2f757372 2f6c6962 2f646562 75672f75 /usr/lib/debug/u
0010 73722f6c 69622f70 65726c35 2f76656e sr/lib/perl5/ven
0020 646f725f 7065726c 2f352e31 302e302f dor_perl/5.10.0/
0030 69363836 2d706c64 2d6c696e 75782d74 i686-pld-linux-t
0040 68726561 642d6d75 6c74692f 6175746f hread-multi/auto
0050 2f444244 2f50672f 50672e73 6f2e6465 /DBD/Pg/Pg.so.de
0060 62756700 96e2872f bug..../
...but gdb doesn't use it properly; neither of these makes sense:
$ echo "set args -MDBD::Pg -e 'warn42'\nr" > /tmp/foo
$ strace -etrace=file gdb -batch -x /tmp/foo perl 2>&1 | grep Pg.so.debug
open("/usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg//usr/lib/debug/usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg/Pg.so.debug", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg/.debug//usr/lib/debug/usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg/Pg.so.debug", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/lib/debug//usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg//usr/lib/debug/usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg/Pg.so.debug", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/lib/debug/usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg//usr/lib/debug/usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg/Pg.so.debug", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
According to [1], the paths should be:
/usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg/Pg.so.debug
/usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg/.debug/Pg.so.debug
/usr/lib/debug/usr/lib/perl5/vendor_perl/5.10.0/i686-pld-linux-thread-multi/auto/DBD/Pg/Pg.so.debug
I took a look at the 115 patches we have for gdb, but gave up. Anyone
familiar with this code?
[1] http://sources.redhat.com/gdb/current/onlinedocs/gdb_17.html#SEC166
--
Radosław Zieliński <radek at pld-linux.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
Url : /mailman/pipermail/pld-devel-en/attachments/20090506/4e07c796/attachment.sig
More information about the pld-devel-en
mailing list