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] |
On Thu, 24 Feb 2011 21:40:36 +0100, Keith Seitz wrote:
This is still not fixed. I quoted there the line:
+ char *paren = strchr (p, '(');
- Added some more tests based on your input - Added a new function to collect all this naming stuff that started appearing in decode_line_1 and decode_compound. - Rewrote this naming stuff to remove a bunch of bad/unintended assumptions (strchr ('('), whitespace)
Maybe some - simplified while (isspace (*p)) p++; if (*p == '(') would be enough? I did not try.
This is also not fixed. Reproducible by modifying the testcase: - set method "${class}::foo ($ovld) const" + set method "${class}::foo ($ovld) const"
The problem is the quoted code:
+ /* Make sure we keep important kewords like "const" */ + if (strncmp (p, " const", 6) == 0) + p += 6;
Also I am suspicious on not checking that !isalnum (p[strlen ("const")]) - that there is a word break and isn't there something like: (gdb) break method(int) constvariablename
Here isn't tested: set method "${class}::foo"
I've attached the next revision of this mega-linespec-fixing patch. Keith
ChangeLog 2011-03-01 Keith Seitz <keiths@redhat.com>
* linespec.c (find_methods): Canonicalize NAME before looking up the symbol. (name_end): New function. (is_overloaded): New function. (keep_name_info): New function. (decode_line_1): Use keep_name_info. (decode_compound): Likewise.
PR c++/12273 * linespec.c (locate_first_half): Keep overload information, too. (decode_compound): Use a string to represent break characters to escape the loop. If P points to a break character, do not increment it. For C++ and Java, keep overload information and relevant keywords. If we cannot find a symbol, search the minimal symbols.
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. Pass a valid block to lookup_symbol. (lookup_prefix_sym): Likewise. (find_method): Construct search name based on SYM_CLASS instead of SAVED_ARG. * 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 2011-03-01 Keith Seitz <keiths@redhat.com>
PR c++/12273 * gdb.cp/cmpd-minsyms.exp: New test. * gdb.cp/cmpd-minsyms.cc: New file.
PR c++/11734 * gdb.cp/ovsrch.exp: New test. * gdb.cp/ovsrch.h: New file. * gdb.cp/ovsrch1.cc: New file. * gdb.cp/ovsrch2.cc: New file. * gdb.cp/ovsrch3.cc: New file. * gdb.cp/ovsrch4.cc: New file.
Attachment:
big-linespec.patch
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |