[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