[RFA] "Error in re-setting breakpoint," c++/12750
Keith Seitz
keiths@redhat.com
Fri May 20 18:47:00 GMT 2011
Hi,
This bug is a regression caused by some breakpoint canonicalization
churn that committed a while ago. Basically:
(gdb) break xxx::fun1
Breakpoint 1 at 0xblahblah: file main.cc, line blah.
(gdb) run
Starting program: a.out
Error in re-setting breakpoint 1: Can't find member of namespace, class,
struct, or union named "main.cc:xxx::fun1"
As you can see, the first time decode_line_1 is called (with
"xxx::fun1"), parsing the linespec succeeds. The breakpoint code stores
a canonicalized version of this string ("main.cc:xxx::fun1"), and
decode_line_1 is unable to properly parse this.
The attached patch is an attempt to correct this. It essentially makes
two changes: 1) look up the file symtab first; 2) pass this file symtab
to any function which might call lookup_symbol[_*], and use this symtab
to determine the appropriate block to search.
The test case included here will require the patch for symtab/12704. I
ran across this bug while working on that bug, so I've included a test
for that specific case, too.
Tested on the buildbot.
Keith
PR c++/12750
* linespec.c (get_search_block): New function.
(find_methods): Add FILE_SYMTATB parameter and use it and
get_search_block to pass an appropriate block to
lookup_symbol_in_namespace.
(decode_line_1): Record if *ARGPTR is single-quote enclosed.
Check if *ARGPTR starts with a filename first.
If it does, call locate_first_half again to locate the next
"first half" of the linespec.
Pass FILE_SYMTATB to decode_objc and decode_compound.
Swallow the trailing single-quote if IS_SQUOTE_ENCLOSED.
(locate_first_half): Stop on the first colon seen.
(decode_compound): Add FILE_SYMTAB parameter.
Pass FILE_SYMTAB to lookup_prefix_sym and find_method.
(lookup_prefix_sym): Add FILE_SYMTAB parameter and use
get_search_block with lookup_symbol.
(find_method): Add FILE_SYMTAB parameter and pass it to
find_methods.
(decode_objc): Use get_search_block.
testsuite/ChangeLog
2010-05-18 Keith Seitz <keiths@redhat.com>
PR c++/12750
* gdb.cp/static-method.cc: New file.
* gdb.cp/static-method.exp: New file.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 12750.patch
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20110520/012fbc52/attachment.ksh>
More information about the Gdb-patches
mailing list