aboutsummaryrefslogtreecommitdiff
path: root/gdb/dbxread.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2013-01-25 17:55:24 +0000
committerTom Tromey <tromey@redhat.com>2013-01-25 17:55:24 +0000
commit195a3f6cae52fa948b8bb7d2525de6fdf95ad6c0 (patch)
tree3c6ad1dfea761f190c07f25ad32734e1485344e6 /gdb/dbxread.c
parent8ba0730a172c05805cb5072121ab71ee03654caa (diff)
downloadgdb-195a3f6cae52fa948b8bb7d2525de6fdf95ad6c0.zip
gdb-195a3f6cae52fa948b8bb7d2525de6fdf95ad6c0.tar.gz
gdb-195a3f6cae52fa948b8bb7d2525de6fdf95ad6c0.tar.bz2
* 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.
Diffstat (limited to 'gdb/dbxread.c')
-rw-r--r--gdb/dbxread.c35
1 files changed, 31 insertions, 4 deletions
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index fcd4d82..09b46a0 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);