diff options
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/ada-exp.y | 3 | ||||
-rw-r--r-- | gdb/ada-lang.c | 15 | ||||
-rw-r--r-- | gdb/ada-lang.h | 2 |
4 files changed, 21 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ad316c6..c6a6d8f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,14 @@ 2012-02-29 Joel Brobecker <brobecker@adacore.com> + * ada-lang.h (ada_find_renaming_symbol): Replace parameter + "name" with "struct symbol *name_sym". + * ada-exp.y (write_var_or_type): Update call to + ada_find_renaming_symbol. + "name" with "struct symbol *name_sym". Adjust Implementation + accordingly. Adjust the function documentation. + +2012-02-29 Joel Brobecker <brobecker@adacore.com> + * ada-lang.h (ada_find_any_symbol, ada_find_any_type): Delete. * ada-lang.c (ada_find_any_type): Add advance declaration. Make static. Replace ada_find_any_symbol by diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y index d1c7367..226cc1d 100644 --- a/gdb/ada-exp.y +++ b/gdb/ada-exp.y @@ -1288,8 +1288,7 @@ write_var_or_type (struct block *block, struct stoken name0) if (nsyms == 1) { struct symbol *ren_sym = - ada_find_renaming_symbol (SYMBOL_LINKAGE_NAME (syms[0].sym), - syms[0].block); + ada_find_renaming_symbol (syms[0].sym, syms[0].block); if (ren_sym != NULL) syms[0].sym = ren_sym; diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index c5d5ff7..349ca17 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -7054,16 +7054,21 @@ ada_find_any_type (const char *name) return NULL; } -/* Given NAME and an associated BLOCK, search all symbols for - NAME suffixed with "___XR", which is the ``renaming'' symbol - associated to NAME. Return this symbol if found, return - NULL otherwise. */ +/* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol + associated with NAME_SYM's name. NAME_SYM may itself be a renaming + symbol, in which case it is returned. Otherwise, this looks for + symbols whose name is that of NAME_SYM suffixed with "___XR". + Return symbol if found, and NULL otherwise. */ struct symbol * -ada_find_renaming_symbol (const char *name, struct block *block) +ada_find_renaming_symbol (struct symbol *name_sym, struct block *block) { + const char *name = SYMBOL_LINKAGE_NAME (name_sym); struct symbol *sym; + if (strstr (name, "___XR") != NULL) + return name_sym; + sym = find_old_style_renaming_symbol (name, block); if (sym != NULL) diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h index abf9c53..fd7b0df 100644 --- a/gdb/ada-lang.h +++ b/gdb/ada-lang.h @@ -333,7 +333,7 @@ extern struct type *ada_find_parallel_type (struct type *, extern LONGEST get_int_var_value (char *, int *); -extern struct symbol *ada_find_renaming_symbol (const char *name, +extern struct symbol *ada_find_renaming_symbol (struct symbol *name_sym, struct block *block); extern int ada_prefer_type (struct type *, struct type *); |