This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[2/10] RFC: make symbol_set_demangled_name take an obstack
- From: Tom Tromey <tromey at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Mon, 18 Feb 2013 12:58:32 -0700
- Subject: [2/10] RFC: make symbol_set_demangled_name take an obstack
This patch changes symbol_set_demangled_name and friends to take an
obstack argument rather than an objfile.
The existing objfile argument is only used for its obstack. Changing it
to take an obstack instead paves the way for a subsequent patch and
makes it simpler to break a symbol->objfile backlink.
Tom
* symtab.c (symbol_init_cplus_specific, symbol_set_demangled_name):
Take an obstack, not an objfile.
(symbol_set_names): Update.
* symtab.h (symbol_set_demangled_name): Update.
---
gdb/symtab.c | 15 ++++++++-------
gdb/symtab.h | 2 +-
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 6cd8d1f..db7a32f 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -416,15 +416,15 @@ gdb_mangle_name (struct type *type, int method_id, int signature_id)
static void
symbol_init_cplus_specific (struct general_symbol_info *gsymbol,
- struct objfile *objfile)
+ struct obstack *obstack)
{
/* A language_specific structure should not have been previously
initialized. */
gdb_assert (gsymbol->language_specific.cplus_specific == NULL);
- gdb_assert (objfile != NULL);
+ gdb_assert (obstack != NULL);
gsymbol->language_specific.cplus_specific =
- OBSTACK_ZALLOC (&objfile->objfile_obstack, struct cplus_specific);
+ OBSTACK_ZALLOC (obstack, struct cplus_specific);
}
/* Set the demangled name of GSYMBOL to NAME. NAME must be already
@@ -435,12 +435,12 @@ symbol_init_cplus_specific (struct general_symbol_info *gsymbol,
void
symbol_set_demangled_name (struct general_symbol_info *gsymbol,
const char *name,
- struct objfile *objfile)
+ struct obstack *obstack)
{
if (gsymbol->language == language_cplus)
{
if (gsymbol->language_specific.cplus_specific == NULL)
- symbol_init_cplus_specific (gsymbol, objfile);
+ symbol_init_cplus_specific (gsymbol, obstack);
gsymbol->language_specific.cplus_specific->demangled_name = name;
}
@@ -787,9 +787,10 @@ symbol_set_names (struct general_symbol_info *gsymbol,
gsymbol->name = (*slot)->mangled + lookup_len - len;
if ((*slot)->demangled[0] != '\0')
- symbol_set_demangled_name (gsymbol, (*slot)->demangled, objfile);
+ symbol_set_demangled_name (gsymbol, (*slot)->demangled,
+ &objfile->objfile_obstack);
else
- symbol_set_demangled_name (gsymbol, NULL, objfile);
+ symbol_set_demangled_name (gsymbol, NULL, &objfile->objfile_obstack);
}
/* Return the source code name of a symbol. In languages where
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 8368eef..6189d99 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -169,7 +169,7 @@ struct general_symbol_info
extern void symbol_set_demangled_name (struct general_symbol_info *,
const char *,
- struct objfile *);
+ struct obstack *);
extern const char *symbol_get_demangled_name
(const struct general_symbol_info *);
--
1.7.7.6