[RFA] c++/11734 revisited

Keith Seitz keiths@redhat.com
Tue Dec 14 20:03:00 GMT 2010


On 12/09/2010 01:44 PM, Tom Tromey wrote:
>>>>>> "Keith" == Keith Seitz<keiths@redhat.com>  writes:

> I don't think this problem would affect psymtab.c.  So, you could
> probably still use pre-expansion if you think that is better.

I don't think it really matters. This patch seems simple enough to 
understand, and it works. I prefer to err on the side of least invasive. 
I fear that pre-expansion might have unforeseen consequences. I don't 
really need another dwarf2_physname! :-)

> Keith>  It's such a nightmare, it would actually a primary reason to
> Keith>  rewrite linespec.c entirely. One of these days, I'll find the
> Keith>  time to do it.
>
> That will be a happy day.  For us anyway ;-)

Or for me, since I seem to keep ending up dealing with problems in 
decode_line_1/decode_compound!


> The ChangeLog entry should mention the PR, so the commit will end up in
> bugzilla.

Yes, of course. I completely forgot. Fixed.

> For overlapping copies you must use memmove.

Fixed.

> I guess the search language could be a parameter.  I realize that at
> some point we'll need to use current_language, and that symtab.c isn't
> exactly clean in this regard.  It doesn't seem too hard to avoid letting
> the rot creep into this code, though.

I've added this parameter and pushed the language setting up a level 
into symtab.c.

> The return type of this function should be just "char *".
> Otherwise you will need casts when freeing.

Okay.

> I don't know if you can use prepare_for_testing here, but
> if not you can at least use clean_restart.

I've switched to prepare_for_testing, as I mentioned in my follow-up to 
Jan's message.

Revised patch attached.

Keith

ChangeLog
2010-12-14  Keith Seitz  <keiths@redhat.com>

	PR c++/11734
	* linespec.c (decode_compound): Rename SAVED_ARG to
	THE_REAL_SAVED_ARG.
	Make a copy of THE_REAL_SAVED_ARG in SAVED_ARG and strip
	single-quotes.

	* psymtab.c (lookup_partial_symbol): Add language parameter.
	(lookup_symbol_aux_psymtabs): Likewise.
	Don't assume that the psymtab we found was the right one. Search
	for the desired symbol in the symtab to be certain.
	(psymtab_search_name): New function.
	(lookup_partial_symbol): Use psymtab_search_name.
	Add language parameter.
	(read_symtabs_for_function): Add language parameter and pass to
	lookup_partial_symbol.
	(find_symbol_file_from_partial): Likewise.
	* symfile.h (struct quick_symbol_functions): Add language parameter
	to lookup_symbol, expand_symtabs_for_function, and find_symbol_file.
	* cp-support.c (make_symbol_overload_list): Update above API
	changes.
	* symtab.c (lookup_symbol_aux_quick): Pass the current language
	to the quick symbol functions.
	(basic_lookup_transparent_type_quick): Likewise.
	(find_main_filename): Likewise.
	* dwarf2_read.c (dw2_lookup_symbol): Add langauge parameter.
	(dw2_expand_symtabs_for_function): Likewise.
	(dw2_find_symbol_file): Likewise.

testsuite/ChangeLog
2010-12-14  Keith Seitz  <keiths@redhat.com>

	PR c++/11734
	* gdb.cp/pr11734.exp: New test.
	* gdb.cp/pr11734.h: New file.
	* gdb.cp/pr11734-1.cc: New file.
	* gdb.cp/pr11734-2.cc: New file.
	* gdb.cp/pr11734-3.cc: New file.
	* gdb.cp/pr11734-4.cc: New file.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: pr11734-5.patch
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20101214/62fdf716/attachment.ksh>


More information about the Gdb-patches mailing list