diff options
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/cp-namespace.c | 37 | ||||
-rw-r--r-- | gdb/cp-support.h | 6 | ||||
-rw-r--r-- | gdb/dbxread.c | 35 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 8 |
5 files changed, 44 insertions, 51 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index bb9692b44df..d3c8be4deb1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2013-01-25 Tom Tromey <tromey@redhat.com> + + * cp-namespace.c (cp_set_block_scope): Remove. + * cp-support.h (cp_set_block_scope): Remove. + * dbxread.c: Include block.h. + (cp_set_block_scope): New function. + (process_one_symbol): Update. + * dwarf2read.c (read_func_scope): Use block_set_scope. + 2013-01-25 Pedro Alves <palves@redhat.com> * remote.c (add_current_inferior_and_thread): Tweak comment. diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c index 32f6d34997d..c137eec2b7f 100644 --- a/gdb/cp-namespace.c +++ b/gdb/cp-namespace.c @@ -205,43 +205,6 @@ cp_add_using_directive (const char *dest, using_directives = new; } -/* Record the namespace that the function defined by SYMBOL was - defined in, if necessary. BLOCK is the associated block; use - OBSTACK for allocation. */ - -void -cp_set_block_scope (const struct symbol *symbol, - struct block *block, - struct obstack *obstack, - const char *processing_current_prefix, - int processing_has_namespace_info) -{ - if (processing_has_namespace_info) - { - block_set_scope - (block, obstack_copy0 (obstack, processing_current_prefix, - strlen (processing_current_prefix)), - obstack); - } - else if (SYMBOL_DEMANGLED_NAME (symbol) != NULL) - { - /* Try to figure out the appropriate namespace from the - demangled name. */ - - /* FIXME: carlton/2003-04-15: If the function in question is - a method of a class, the name will actually include the - name of the class as well. This should be harmless, but - is a little unfortunate. */ - - const char *name = SYMBOL_DEMANGLED_NAME (symbol); - unsigned int prefix_len = cp_entire_prefix_len (name); - - block_set_scope (block, - obstack_copy0 (obstack, name, prefix_len), - obstack); - } -} - /* Test whether or not NAMESPACE looks like it mentions an anonymous namespace; return nonzero if so. */ diff --git a/gdb/cp-support.h b/gdb/cp-support.h index 3734886818e..c7141d51cd3 100644 --- a/gdb/cp-support.h +++ b/gdb/cp-support.h @@ -189,12 +189,6 @@ extern void cp_add_using_directive (const char *dest, int copy_names, struct obstack *obstack); -extern void cp_set_block_scope (const struct symbol *symbol, - struct block *block, - struct obstack *obstack, - const char *processing_current_prefix, - int processing_has_namespace_info); - extern void cp_scan_for_anonymous_namespaces (const struct symbol *symbol, struct objfile *objfile); diff --git a/gdb/dbxread.c b/gdb/dbxread.c index fcd4d821523..09b46a024a0 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -55,6 +55,7 @@ #include "cp-abi.h" #include "cp-support.h" #include "psympriv.h" +#include "block.h" #include "gdb_assert.h" #include "gdb_string.h" @@ -2706,6 +2707,34 @@ read_ofile_symtab (struct objfile *objfile, struct partial_symtab *pst) } +/* Record the namespace that the function defined by SYMBOL was + defined in, if necessary. BLOCK is the associated block; use + OBSTACK for allocation. */ + +static void +cp_set_block_scope (const struct symbol *symbol, + struct block *block, + struct obstack *obstack) +{ + if (SYMBOL_DEMANGLED_NAME (symbol) != NULL) + { + /* Try to figure out the appropriate namespace from the + demangled name. */ + + /* FIXME: carlton/2003-04-15: If the function in question is + a method of a class, the name will actually include the + name of the class as well. This should be harmless, but + is a little unfortunate. */ + + const char *name = SYMBOL_DEMANGLED_NAME (symbol); + unsigned int prefix_len = cp_entire_prefix_len (name); + + block_set_scope (block, + obstack_copy0 (obstack, name, prefix_len), + obstack); + } +} + /* This handles a single symbol from the symbol-file, building symbols into a GDB symtab. It takes these arguments and an implicit argument. @@ -2813,8 +2842,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name, /* For C++, set the block's scope. */ if (SYMBOL_LANGUAGE (new->name) == language_cplus) - cp_set_block_scope (new->name, block, &objfile->objfile_obstack, - "", 0); + cp_set_block_scope (new->name, block, &objfile->objfile_obstack); /* May be switching to an assembler file which may not be using block relative stabs, so reset the offset. */ @@ -3219,8 +3247,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name, /* For C++, set the block's scope. */ if (SYMBOL_LANGUAGE (new->name) == language_cplus) cp_set_block_scope (new->name, block, - &objfile->objfile_obstack, - "", 0); + &objfile->objfile_obstack); } new = push_context (0, valu); diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 6395eca8a55..e4f7b942d90 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -9564,10 +9564,10 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu) lowpc, highpc, objfile); /* For C++, set the block's scope. */ - if (cu->language == language_cplus || cu->language == language_fortran) - cp_set_block_scope (new->name, block, &objfile->objfile_obstack, - determine_prefix (die, cu), - processing_has_namespace_info); + if ((cu->language == language_cplus || cu->language == language_fortran) + && processing_has_namespace_info) + block_set_scope (block, determine_prefix (die, cu), + &objfile->objfile_obstack); /* If we have address ranges, record them. */ dwarf2_record_block_ranges (die, block, baseaddr, cu); |