This is the mail archive of the gdb-prs@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

symtab/1607: GDB doesn't know about #included source files until after full symtab read


>Number:         1607
>Category:       symtab
>Synopsis:       GDB doesn't know about #included source files until after full symtab read
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Tue Apr 06 23:38:01 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     jimb@redhat.com
>Release:        GDB HEAD 2004-04-06
>Organization:
>Environment:
GCC 3.3, Red Hat Linux 8
>Description:
When a program is complied with Dwarf 2 debugging information, GDB is unable to set breakpoints in #included files, if the breakpoint location is specified as FILE:LINE.
>How-To-Repeat:
Apply the attached patch at the top of the GDB source tree.  It adds a new test, incfunc.exp, which you can run by typing the following at the top of a GDB build tree:

$ make check-gdb RUNTESTFLAGS=incfunc.exp

The interesting part of the transcript left in gdb/testsuite/gdb.log is this:

GNU gdb 2004-04-01-cvs
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
(gdb) set height 0
(gdb) set width 0
(gdb) dir
Reinitialize source path to empty? (y or n) y
Source directories searched: $cdir:$cwd
(gdb) dir $SRC/gdb/testsuite/gdb.base
Source directories searched: $SRC/gdb/testsuite/gdb.base:$cdir:$cwd
(gdb) file $BUILD/gdb/testsuite/gdb.base/incfunc
Reading symbols from $BUILD/gdb/testsuite/gdb.base/incfunc...done.
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) break incfunc2.c:4
No source file named incfunc2.c.
Make breakpoint pending on future shared library load? (y or [n])

GDB should be able to set a breakpoint on incfunc2.c:4.
>Fix:
The problem is that the Dwarf 2 reader doesn't create partial symbol tables for #included files, the way the STABS reader does.  The psymtab construction pass should create one partial symbol table for each distinct header file name it sees, and make that psymtab depend on the psymtab for the compilation unit that #included it.  (A given header file will usually be included into several different compilation units, so there will be more than one legitimate choice of psymtab to depend on.)

To see how the resultant psymtabs should look, compile the test program with -gstabs+, and then say 'maint info psymtab incfunc' to see the psymtabs for the test program's files.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="jimb.gdb-testsuite-incfunc.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="jimb.gdb-testsuite-incfunc.patch"

SW5kZXg6IGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5jZnVuYy5leHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmNmdW5jLmV4cApkaWZmIC1OIGdkYi90ZXN0
c3VpdGUvZ2RiLmJhc2UvaW5jZnVuYy5leHAKKioqIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5j
ZnVuYy5leHAJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAotLS0gZ2RiL3Rlc3RzdWl0ZS9nZGIu
YmFzZS9pbmNmdW5jLmV4cAk2IEFwciAyMDA0IDIzOjI0OjM5IC0wMDAwCioqKioqKioqKioqKioq
KgoqKiogMCAqKioqCi0tLSAxLDcwIC0tLS0KKyAjIENvcHlyaWdodCAyMDA0IEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLgorIAorICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAjIGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisg
IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvcgorICMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAjIAor
ICMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAjIAorICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAjIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgIyBGb3VuZGF0
aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt
MTMwNywgVVNBLiAgCisgCisgIyBQbGVhc2UgZW1haWwgYW55IGJ1Z3MsIGNvbW1lbnRzLCBhbmQv
b3IgYWRkaXRpb25zIHRvIHRoaXMgZmlsZSB0bzoKKyAjIGJ1Zy1nZGJAZ251Lm9yZworIAorICMg
TWFrZSBzdXJlIEdEQidzIGRlYnVnIGluZm9ybWF0aW9uIHJlYWRlciBpbmNsdWRlcyB0aGUgbmFt
ZXMgb2YKKyAjIGhlYWRlciBmaWxlcyBpbiB0aGUgcGFydGlhbCBzeW1ib2wgdGFibGUuCisgCisg
aWYgJHRyYWNlbGV2ZWwgeworICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKKyB9CisgCisgIworICMg
dGVzdCBydW5uaW5nIHByb2dyYW1zCisgIworIHNldCBwcm1zX2lkIDAKKyBzZXQgYnVnX2lkIDAK
KyAKKyBzZXQgdGVzdGZpbGUgaW5jZnVuYworIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKyBz
ZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisgaWYgIHsgW2dkYl9j
b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVj
dXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0geworICAgICAgZ2RiX3N1cHByZXNzX2VudGlyZV9maWxl
ICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwgc28gYWxsIHRlc3RzIGluIHRoaXMgZmlsZSB3aWxs
IGF1dG9tYXRpY2FsbHkgZmFpbC4iCisgfQorIAorIGdkYl9leGl0CisgZ2RiX3N0YXJ0CisgZ2Ri
X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisgZ2RiX2xvYWQgJHtiaW5maWxlfQor
IAorIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7CisgICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRv
IGJyZWFrcG9pbnQiCisgICAgIGNvbnRpbnVlCisgfQorIAorIGdldF9kZWJ1Z19mb3JtYXQKKyAK
KyAjIFdoZW4gd2Ugc3RvcHBlZCBhdCBtYWluLCB3ZSByZWFkIGZ1bGwgc3ltYm9scyBmb3IgbWFp
bidzIGNvbXBpbGF0aW9uCisgIyB1bml0LiAgQnV0IHRoZSB0ZXN0IG5lZWRzIHRvIHJ1biBiZWZv
cmUgd2UndmUgcmVhZCBhbnkgZnVsbCBzeW1ib2xzLAorICMgc28gcmUtc3RhcnQgR0RCLgorIGdk
Yl9leGl0CisgZ2RiX3N0YXJ0CisgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly
CisgZ2RiX2xvYWQgJHtiaW5maWxlfQorIAorIGlmIHsgW3Rlc3RfZGVidWdfZm9ybWF0ICJEV0FS
RiAyIl0gfSB0aGVuIHsKKyAgICAgc2V0dXBfa2ZhaWwgImdkYi8/Pz8iICotKi0qCisgfQorIGdk
Yl90ZXN0X211bHRpcGxlICJicmVhayBpbmNmdW5jMi5jOjQiICJzZXQgYnJlYWtwb2ludCBpbiBp
bmNsdWRlZCBmaWxlIiB7CisgICAgIC1yZSAiQnJlYWtwb2ludCAke2RlY2ltYWx9IGF0ICR7aGV4
fTogZmlsZSAuKmluY2Z1bmMyLmMsIGxpbmUgLioke2dkYl9wcm9tcHR9IiB7CisgICAgICAgICBw
YXNzICJzZXQgYnJlYWtwb2ludCBpbiBpbmNsdWRlZCBmaWxlIgorICAgICB9CisgICAgIC1yZSAi
TWFrZSBicmVha3BvaW50IHBlbmRpbmcgb24gZnV0dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQuIC55
IG9yIC5uLi4gIiB7CisgICAgICAgICBmYWlsICJzZXQgYnJlYWtwb2ludCBpbiBpbmNsdWRlZCBm
aWxlIgorICAgICB9CisgfQpJbmRleDogZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmNmdW5jMi5j
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5jZnVuYzIuYwpk
aWZmIC1OIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5jZnVuYzIuYwoqKiogZ2RiL3Rlc3RzdWl0
ZS9nZGIuYmFzZS9pbmNmdW5jMi5jCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKLS0tIGdkYi90
ZXN0c3VpdGUvZ2RiLmJhc2UvaW5jZnVuYzIuYwk2IEFwciAyMDA0IDIzOjI0OjM5IC0wMDAwCioq
KioqKioqKioqKioqKgoqKiogMCAqKioqCi0tLSAxLDUgLS0tLQorIHZvaWQKKyBmICh2b2lkKQor
IHsKKyAgIHB1dHMgKCJIZWxsby5cbiIpOworIH0KSW5kZXg6IGdkYi90ZXN0c3VpdGUvZ2RiLmJh
c2UvaW5jZnVuYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv
aW5jZnVuYy5jCmRpZmYgLU4gZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmNmdW5jLmMKKioqIGdk
Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5jZnVuYy5jCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAK
LS0tIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5jZnVuYy5jCTYgQXByIDIwMDQgMjM6MjQ6Mzkg
LTAwMDAKKioqKioqKioqKioqKioqCioqKiAwICoqKioKLS0tIDEsOCAtLS0tCisgI2luY2x1ZGUg
PHN0ZGlvLmg+CisgI2luY2x1ZGUgImluY2Z1bmMyLmMiCisgCisgaW50CisgbWFpbiAoKQorIHsK
KyAgIGYgKCk7CisgfQo=


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]