From: Daniel Jacobowitz <drow@false.org>
To: gdb-patches@sources.redhat.com
Subject: [rfa] Add SYMBOL_SET_LINKAGE_NAME
Date: Mon, 16 Feb 2004 21:24:00 -0000 [thread overview]
Message-ID: <20040216212406.GC17141@nevyn.them.org> (raw)
This patch adds a macro, SYMBOL_SET_LINKAGE_NAME, which is used to set
a symbol's name when the name should not be demangled. Used for things
like typedefs whose name comes from debug info. I did not change
anything related to memory allocation when I did this - though in
hpread I found a few inconsistencies.
After this patch and my others from today there are no direct
assignments to the symbol name. In addition to the cleanup value, I'm
testing an approach which would change the storage of symbol names,
which prompted me to do this. This patch has a trivial dependency on
the previous hpread patch (introduction of a local variable in
hpread_process_one_debug_symbol) but otherwise they can be applied in
any order.
OK?
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
2004-02-16 Daniel Jacobowitz <drow@mvista.com>
* symtab.h (SYMBOL_SET_LINKAGE_NAME): Define.
* ada-lang.c (add_symbols_from_enclosing_procs): Use
SYMBOL_SET_LINKAGE_NAME.
* dwarfread.c (enum_type, synthesize_typedef): Likewise.
* jv-lang.c (add_class_symbol): Likewise.
* stabsread.c (patch_block_stabs, define_symbol, read_enum_type)
(common_block_end): Likewise.
* xcoffread.c (process_xcoff_symbol): Likewise.
* hpread.c (hpread_read_enum_type, hpread_read_function_type)
(hpread_read_doc_function_type): Use SYMBOL_SET_LINKAGE_NAME.
(hpread_process_one_debug_symbol): Likewise.
--- hpread.c 7 Feb 2004 23:13:47 -0000 1.45
+++ hpread.c 15 Feb 2004 23:56:30 -0000
@@ -5101,7 +5098,8 @@ hpread_process_one_debug_symbol (union d
sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack,
sizeof (struct symbol));
memset (sym, 0, sizeof (struct symbol));
- DEPRECATED_SYMBOL_NAME (sym) = obsavestring (name, strlen (name), &objfile->objfile_obstack);
+ set_name = obsavestring (name, strlen (name), &objfile->objfile_obstack);
+ SYMBOL_SET_LINKAGE_NAME (sym, set_name);
SYMBOL_LANGUAGE (sym) = language_auto;
SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
SYMBOL_LINE (sym) = 0;
@@ -5889,7 +5867,7 @@ hpread_process_one_debug_symbol (union d
newsym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack,
sizeof (struct symbol));
memset (newsym, 0, sizeof (struct symbol));
- DEPRECATED_SYMBOL_NAME (newsym) = name;
+ SYMBOL_SET_LINKAGE_NAME (newsym, name);
SYMBOL_LANGUAGE (newsym) = language_auto;
SYMBOL_DOMAIN (newsym) = VAR_DOMAIN;
SYMBOL_LINE (newsym) = 0;
--- ada-lang.c 23 Jan 2004 23:03:28 -0000 1.35
+++ ada-lang.c 15 Feb 2004 23:56:24 -0000
@@ -3533,7 +3533,7 @@ add_symbols_from_enclosing_procs (const
/* Initialize the local variable symbol that stands for the
* static link (when it exists). */
static_link = &static_link_sym;
- DEPRECATED_SYMBOL_NAME (static_link) = "";
+ SYMBOL_SET_LINKAGE_NAME (static_link, "");
SYMBOL_LANGUAGE (static_link) = language_unknown;
SYMBOL_CLASS (static_link) = LOC_LOCAL;
SYMBOL_DOMAIN (static_link) = VAR_DOMAIN;
--- jv-lang.c 7 Feb 2004 23:13:47 -0000 1.29
+++ jv-lang.c 15 Feb 2004 23:56:30 -0000
@@ -142,7 +142,7 @@ add_class_symbol (struct type *type, COR
obstack_alloc (&dynamics_objfile->objfile_obstack, sizeof (struct symbol));
memset (sym, 0, sizeof (struct symbol));
SYMBOL_LANGUAGE (sym) = language_java;
- DEPRECATED_SYMBOL_NAME (sym) = TYPE_TAG_NAME (type);
+ SYMBOL_SET_LINKAGE_NAME (sym, TYPE_TAG_NAME (type));
SYMBOL_CLASS (sym) = LOC_TYPEDEF;
/* SYMBOL_VALUE (sym) = valu; */
SYMBOL_TYPE (sym) = type;
--- stabsread.c 7 Feb 2004 23:13:47 -0000 1.74
+++ stabsread.c 15 Feb 2004 23:56:34 -0000
@@ -367,6 +367,8 @@ patch_block_stabs (struct pending *symbo
sym = find_symbol_in_list (symbols, name, pp - name);
if (!sym)
{
+ char *sym_name;
+
/* FIXME-maybe: it would be nice if we noticed whether
the variable was defined *anywhere*, not just whether
it is defined in this compilation unit. But neither
@@ -385,8 +387,9 @@ patch_block_stabs (struct pending *symbo
memset (sym, 0, sizeof (struct symbol));
SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
- DEPRECATED_SYMBOL_NAME (sym) =
- obsavestring (name, pp - name, &objfile->objfile_obstack);
+ sym_name = obsavestring (name, pp - name,
+ &objfile->objfile_obstack);
+ SYMBOL_SET_LINKAGE_NAME (sym, sym_name);
pp += 2;
if (*(pp - 1) == 'F' || *(pp - 1) == 'f')
{
@@ -641,12 +644,15 @@ define_symbol (CORE_ADDR valu, char *str
if (is_cplus_marker (string[0]))
{
+ char *sym_name;
+
/* Special GNU C++ names. */
switch (string[1])
{
case 't':
- DEPRECATED_SYMBOL_NAME (sym) = obsavestring ("this", strlen ("this"),
- &objfile->objfile_obstack);
+ sym_name = obsavestring ("this", strlen ("this"),
+ &objfile->objfile_obstack);
+ SYMBOL_SET_LINKAGE_NAME (sym, sym_name);
break;
case 'v': /* $vtbl_ptr_type */
@@ -654,8 +660,9 @@ define_symbol (CORE_ADDR valu, char *str
goto normal;
case 'e':
- DEPRECATED_SYMBOL_NAME (sym) = obsavestring ("eh_throw", strlen ("eh_throw"),
- &objfile->objfile_obstack);
+ sym_name = obsavestring ("eh_throw", strlen ("eh_throw"),
+ &objfile->objfile_obstack);
+ SYMBOL_SET_LINKAGE_NAME (sym, sym_name);
break;
case '_':
@@ -1130,13 +1137,15 @@ define_symbol (CORE_ADDR valu, char *str
SYMBOL_CLASS (sym) = LOC_STATIC;
SYMBOL_VALUE_ADDRESS (sym) = valu;
#ifdef STATIC_TRANSFORM_NAME
- if (IS_STATIC_TRANSFORM_NAME (DEPRECATED_SYMBOL_NAME (sym)))
+ if (IS_STATIC_TRANSFORM_NAME (SYMBOL_LINKAGE_NAME (sym)))
{
struct minimal_symbol *msym;
- msym = lookup_minimal_symbol (DEPRECATED_SYMBOL_NAME (sym), NULL, objfile);
+ msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), NULL, objfile);
if (msym != NULL)
{
- DEPRECATED_SYMBOL_NAME (sym) = STATIC_TRANSFORM_NAME (DEPRECATED_SYMBOL_NAME (sym));
+ char *sym_name
+ = STATIC_TRANSFORM_NAME (SYMBOL_LINKAGE_NAME (sym));
+ SYMBOL_SET_LINKAGE_NAME (sym, sym_name);
SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym);
}
}
@@ -1276,13 +1285,16 @@ define_symbol (CORE_ADDR valu, char *str
SYMBOL_CLASS (sym) = LOC_STATIC;
SYMBOL_VALUE_ADDRESS (sym) = valu;
#ifdef STATIC_TRANSFORM_NAME
- if (IS_STATIC_TRANSFORM_NAME (DEPRECATED_SYMBOL_NAME (sym)))
+ }
+ if (IS_STATIC_TRANSFORM_NAME (SYMBOL_LINKAGE_NAME (sym)))
{
struct minimal_symbol *msym;
- msym = lookup_minimal_symbol (DEPRECATED_SYMBOL_NAME (sym), NULL, objfile);
+ msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), NULL, objfile);
if (msym != NULL)
{
- DEPRECATED_SYMBOL_NAME (sym) = STATIC_TRANSFORM_NAME (DEPRECATED_SYMBOL_NAME (sym));
+ char *sym_name
+ = STATIC_TRANSFORM_NAME (SYMBOL_LINKAGE_NAME (sym));
+ SYMBOL_SET_LINKAGE_NAME (sym, sym_name);
SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym);
}
}
@@ -3493,7 +3505,7 @@ read_enum_type (char **pp, struct type *
sym = (struct symbol *)
obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
memset (sym, 0, sizeof (struct symbol));
- DEPRECATED_SYMBOL_NAME (sym) = name;
+ SYMBOL_SET_LINKAGE_NAME (sym, name);
SYMBOL_LANGUAGE (sym) = current_subfile->language;
SYMBOL_CLASS (sym) = LOC_CONST;
SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
@@ -4068,7 +4080,7 @@ common_block_end (struct objfile *objfil
obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
memset (sym, 0, sizeof (struct symbol));
/* Note: common_block_name already saved on objfile_obstack */
- DEPRECATED_SYMBOL_NAME (sym) = common_block_name;
+ SYMBOL_SET_LINKAGE_NAME (sym, common_block_name);
SYMBOL_CLASS (sym) = LOC_BLOCK;
/* Now we copy all the symbols which have been defined since the BCOMM. */
--- dwarfread.c 14 Feb 2004 15:46:32 -0000 1.37
+++ dwarfread.c 15 Feb 2004 23:56:27 -0000
@@ -1710,8 +1710,9 @@ enum_type (struct dieinfo *dip, struct o
sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack,
sizeof (struct symbol));
memset (sym, 0, sizeof (struct symbol));
- DEPRECATED_SYMBOL_NAME (sym) = create_name (list->field.name,
- &objfile->objfile_obstack);
+ SYMBOL_SET_LINKAGE_NAME (sym,
+ create_name (list->field.name,
+ &objfile->objfile_obstack));
SYMBOL_INIT_LANGUAGE_SPECIFIC (sym, cu_language);
SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
SYMBOL_CLASS (sym) = LOC_CONST;
@@ -3013,8 +3014,8 @@ synthesize_typedef (struct dieinfo *dip,
obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
OBJSTAT (objfile, n_syms++);
memset (sym, 0, sizeof (struct symbol));
- DEPRECATED_SYMBOL_NAME (sym) = create_name (dip->at_name,
- &objfile->objfile_obstack);
+ SYMBOL_SET_LINKAGE_NAME (sym, create_name (dip->at_name,
+ &objfile->objfile_obstack));
SYMBOL_INIT_LANGUAGE_SPECIFIC (sym, cu_language);
SYMBOL_TYPE (sym) = type;
SYMBOL_CLASS (sym) = LOC_TYPEDEF;
--- symtab.h 7 Feb 2004 23:13:47 -0000 1.87
+++ symtab.h 15 Feb 2004 23:56:37 -0000
@@ -195,6 +195,11 @@ extern void symbol_set_names (struct gen
const char *linkage_name, int len,
struct objfile *objfile);
+#define SYMBOL_SET_LINKAGE_NAME(symbol,linkage_name) \
+ do { \
+ (symbol)->ginfo.name = (linkage_name); \
+ } while (0)
+
/* Now come lots of name accessor macros. Short version as to when to
use which: Use SYMBOL_NATURAL_NAME to refer to the name of the
symbol in the original source code. Use SYMBOL_LINKAGE_NAME if you
--- xcoffread.c 14 Feb 2004 15:46:33 -0000 1.40
+++ xcoffread.c 15 Feb 2004 23:56:38 -0000
@@ -1477,7 +1477,8 @@ process_xcoff_symbol (struct coff_symbol
will be patched with the type from its stab entry later on in
patch_block_stabs (), unless the file was compiled without -g. */
- DEPRECATED_SYMBOL_NAME (sym) = SYMNAME_ALLOC (name, symname_alloced);
+ SYMBOL_SET_LINKAGE_NAME (sym,
+ SYMNAME_ALLOC (name, symname_alloced));
SYMBOL_TYPE (sym) = func_symbol_type;
SYMBOL_CLASS (sym) = LOC_BLOCK;
next reply other threads:[~2004-02-16 21:24 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-16 21:24 Daniel Jacobowitz [this message]
2004-02-16 21:53 ` Elena Zannoni
2004-02-16 22:57 ` Daniel Jacobowitz
2004-02-16 23:35 ` Paul Hilfinger
2004-02-17 0:05 ` Daniel Jacobowitz
2004-02-17 9:59 ` Paul N. Hilfinger
2004-02-17 15:57 ` Andrew Cagney
2004-02-17 16:01 ` Daniel Jacobowitz
2004-02-17 19:14 ` Elena Zannoni
2004-02-17 19:29 ` Daniel Jacobowitz
2004-02-17 23:10 ` Andrew Cagney
2004-02-18 0:43 ` Elena Zannoni
2004-02-18 1:04 ` Daniel Jacobowitz
2004-02-18 0:20 ` David Carlton
2004-02-18 0:23 ` Daniel Jacobowitz
2004-02-18 0:27 ` Elena Zannoni
2004-02-18 0:32 ` Daniel Jacobowitz
2004-02-18 0:54 ` Elena Zannoni
2004-02-18 1:06 ` Daniel Jacobowitz
2004-02-18 0:49 ` Paul Hilfinger
2004-02-18 1:27 ` David Carlton
2004-02-18 8:12 ` Paul N. Hilfinger
2004-02-18 16:45 ` David Carlton
2004-02-20 9:32 ` Paul N. Hilfinger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040216212406.GC17141@nevyn.them.org \
--to=drow@false.org \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox