aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2011-12-21 07:34:09 +0000
committerJoel Brobecker <brobecker@gnat.com>2011-12-21 07:34:09 +0000
commitbb2f58dc41241652af78a29619c0a7986669bcd3 (patch)
tree9e346ba08049ee709b119afa92fb9f4e16b38480
parent53907c915d3736e1859c3c0af66d713baf6fe6bd (diff)
downloadgdb-bb2f58dc41241652af78a29619c0a7986669bcd3.zip
gdb-bb2f58dc41241652af78a29619c0a7986669bcd3.tar.gz
gdb-bb2f58dc41241652af78a29619c0a7986669bcd3.tar.bz2
Use symbol search name in expand_symtabs_matching_via_partial...
We are iterating over all symbols in a partial symtab that would match a given name, so we should match the partial symbols search name against the given name rather than using the natural name. In C++, that does not make a difference, but it does in Ada, because Ada searches using the symbol encoded name... We also update the generation of the .gdb_index file to match this change in the search. Although technically an incompatible change, we do not increment the gdb_index version number, because Ada is the only language where it would make a difference - except that this feature is not supported for Ada. gdb/ChangeLog: * psymtab.c (expand_symtabs_matching_via_partial): Match the partial symbols using their SYMBOL_SEARCH_NAME. * symfile.h (struct quick_symbol_functions): Udate the documentation of expand_symtabs_matching. * dwarf2read.c (write_psymbols): Use SYMBOL_SEARCH_NAME instead of SYMBOL_NATURAL_NAME in index entry.
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/dwarf2read.c2
-rw-r--r--gdb/psymtab.c2
-rw-r--r--gdb/symfile.h7
4 files changed, 14 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b56e4e2..86c47a7 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
2011-12-21 Joel Brobecker <brobecker@adacore.com>
+ * psymtab.c (expand_symtabs_matching_via_partial): Match
+ the partial symbols using their SYMBOL_SEARCH_NAME.
+ * symfile.h (struct quick_symbol_functions): Udate the
+ documentation of expand_symtabs_matching.
+ * dwarf2read.c (write_psymbols): Use SYMBOL_SEARCH_NAME instead
+ of SYMBOL_NATURAL_NAME in index entry.
+
+2011-12-21 Joel Brobecker <brobecker@adacore.com>
+
* linespec.c (locate_first_half): Add handling of Ada operators
when the current language is Ada.
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index c482c43..7905052 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -16890,7 +16890,7 @@ write_psymbols (struct mapped_symtab *symtab,
if (!*slot)
{
*slot = lookup;
- add_index_entry (symtab, SYMBOL_NATURAL_NAME (*psymp), cu_index);
+ add_index_entry (symtab, SYMBOL_SEARCH_NAME (*psymp), cu_index);
}
}
}
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 74185cc..861b302 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -1305,7 +1305,7 @@ expand_symtabs_matching_via_partial
|| (kind == TYPES_DOMAIN
&& SYMBOL_CLASS (*psym) == LOC_TYPEDEF))
&& (*name_matcher) (current_language,
- SYMBOL_NATURAL_NAME (*psym), data))
+ SYMBOL_SEARCH_NAME (*psym), data))
{
PSYMTAB_TO_SYMTAB (ps);
keep_going = 0;
diff --git a/gdb/symfile.h b/gdb/symfile.h
index 44f0c01..91605a2 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -263,10 +263,9 @@ struct quick_symbol_functions
If even KIND matches, then NAME_MATCHER is called for each symbol
defined in the file. The current language, the symbol name and
- DATA are passed to NAME_MATCHER. The symbol "natural" name should
- be passed to NAME_MATCHER for all languages except Ada, where
- the encoded name is passed instead (see la_symbol_name_compare in
- struct language_defn for more details on this).
+ DATA are passed to NAME_MATCHER. The symbol "search" name should
+ be passed to NAME_MATCHER (see la_symbol_name_compare in struct
+ language_defn for more details on this).
If NAME_MATCHER returns zero, then this symbol is skipped.