diff options
author | Sami Wagiaalla <swagiaal@redhat.com> | 2010-03-15 17:29:36 +0000 |
---|---|---|
committer | Sami Wagiaalla <swagiaal@redhat.com> | 2010-03-15 17:29:36 +0000 |
commit | 13387711b26dfd93e5b00e529df30f0132ec38fd (patch) | |
tree | 1ba99c3985dc63eea2ec15eb5d6df734b4197b95 /gdb/symtab.c | |
parent | 6e31430b7070860436f93153ee1f8d832ca8b7ca (diff) | |
download | gdb-13387711b26dfd93e5b00e529df30f0132ec38fd.zip gdb-13387711b26dfd93e5b00e529df30f0132ec38fd.tar.gz gdb-13387711b26dfd93e5b00e529df30f0132ec38fd.tar.bz2 |
2010-03-15 Sami Wagiaalla <swagiaal@redhat.com>
PR c++/7936:
* cp-support.h: Added char *declaration element to using_direct
data struct.
(cp_add_using): Added char *declaration argument.
(cp_add_using_directive): Ditto.
(cp_lookup_symbol_imports): made extern.
* cp-namespace.c: Updated with the above changes.
* dwarf2read.c (read_import_statement): Ditto.
(read_namespace): Ditto.
(read_import_statement): Support import declarations.
* cp-namespace.c (cp_lookup_symbol_imports): Check for imported
declarations.
Added support for 'declaration_only' search.
(cp_lookup_symbol_namespace): Attempt to search for the name as
is before consideration of imports.
* symtab.c (lookup_symbol_aux_local): Added a 'declaration_only'
search at every block level search.
Now takes language argument.
(lookup_symbol_aux): Updated.
2010-03-15 Sami Wagiaalla <swagiaal@redhat.com>
* gdb.cp/shadow.exp: Removed kfail; test has been fix.
* gdb.cp/nsusing.exp: Ditto.
Diffstat (limited to 'gdb/symtab.c')
-rw-r--r-- | gdb/symtab.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/gdb/symtab.c b/gdb/symtab.c index aa0aae6..78118ee 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -95,7 +95,8 @@ static struct symbol *lookup_symbol_aux (const char *name, static struct symbol *lookup_symbol_aux_local (const char *name, const struct block *block, - const domain_enum domain); + const domain_enum domain, + enum language language); static struct symbol *lookup_symbol_aux_symtabs (int block_index, @@ -1029,12 +1030,12 @@ lookup_symbol_aux (const char *name, const struct block *block, /* Search specified block and its superiors. Don't search STATIC_BLOCK or GLOBAL_BLOCK. */ - sym = lookup_symbol_aux_local (name, block, domain); + sym = lookup_symbol_aux_local (name, block, domain, language); if (sym != NULL) return sym; /* If requested to do so by the caller and if appropriate for LANGUAGE, - check to see if NAME is a field of `this'. */ + check to see if NAME is a field of `this'. */ langdef = language_def (language); @@ -1107,11 +1108,13 @@ lookup_symbol_aux (const char *name, const struct block *block, static struct symbol * lookup_symbol_aux_local (const char *name, const struct block *block, - const domain_enum domain) + const domain_enum domain, + enum language language) { struct symbol *sym; const struct block *static_block = block_static_block (block); - + const char *scope = block_scope (block); + /* Check if either no block is specified or it's a global block. */ if (static_block == NULL) @@ -1123,6 +1126,18 @@ lookup_symbol_aux_local (const char *name, const struct block *block, if (sym != NULL) return sym; + if (language == language_cplus) + { + sym = cp_lookup_symbol_imports (scope, + name, + block, + domain, + 1, + 1); + if (sym != NULL) + return sym; + } + if (BLOCK_FUNCTION (block) != NULL && block_inlined_p (block)) break; block = BLOCK_SUPERBLOCK (block); |