Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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;


             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