This is the mail archive of the gdb-patches@sourceware.org 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]

[RFA] "Error in re-setting breakpoint," c++/12750


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.

Attachment: 12750.patch
Description: Text document


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