This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Re: gas/config/te-sysv32.h, STRIP_UNDERSCORE


>> Actually, do you think there is a need to keep symbol_find_base then at all? All symbol_find now does is call symbol_find_base...
>
>I think Alan has gone to sleep, so I will butt in here and say "good 
>idea - please feel free to submit and apply a pre-approved patch to 
>remove symbol_find_base as well".

Removing STRIP_UNDERSCORE, DO_NOT_STRIP, and collapsing symbol_find_base
and symbol_find into a single function.

Built and tested on i686-pc-linux-gnu and as cross tools for arm-coff,
h8300-coff, h8500-coff, i686-coff, sh-coff, w65-unknown-coff, and z8k-coff.

Would you confirm that the pre-approval covers all of this.

gas/
2005-04-19  Jan Beulich  <jbeulich@novell.com>

	* symbols.h (symbol_find_base): Remove prototype.
	* symbols.c (save_symbol_name): Remove code section conditional upon
	STRIP_UNDERSCORE.
	(symbol_find): Remove.
	(symbol_find_base): Rename to symbol_find.
	* subsegs.c (section_symbol): Replace use of symbol_find_base with
	symbol_find.
	* config/obj-coff.c (tag_insert): Remove code section conditional
	upon STRIP_UNDERSCORE.
	(obj_coff_def): Likewise.
	(obj_coff_endef): Replace use of symbol_find_base with symbol_find.
	(coff_frob_symbol): Likewise.
	(yank_symbols): Likewise.
	(c_section_symbol): Likewise.
	* config/obj-coff.h (DO_NOT_STRIP): Remove.
	* config/tc-arm.c (symbol_locate): Remove code section conditional
	upon STRIP_UNDERSCORE.
	* config/tc-h8300.h (DO_NOT_STRIP): Remove.
	* config/tc-h8500.h (DO_NOT_STRIP): Remove.
	* config/tc-sh.h (DO_NOT_STRIP): Remove.
	* config/tc-w65.h (DO_NOT_STRIP): Remove.
	* config/tc-z8k.h (DO_NOT_STRIP): Remove.

--- /home/jbeulich/src/binutils/mainline/2005-04-15/gas/config/obj-coff.c	2005-03-29 15:26:53.000000000 +0200
+++ 2005-04-15/gas/config/obj-coff.c	2005-04-19 14:01:42.192773136 +0200
@@ -137,10 +137,6 @@ tag_insert (const char *name, symbolS *s
 static symbolS *
 tag_find (char *name)
 {
-#ifdef STRIP_UNDERSCORE
-  if (*name == '_')
-    name++;
-#endif /* STRIP_UNDERSCORE */
   return (symbolS *) hash_find (tag_hash, name);
 }
 
@@ -529,11 +525,6 @@ obj_coff_def (int what ATTRIBUTE_UNUSED)
   SKIP_WHITESPACES ();
 
   symbol_name = input_line_pointer;
-#ifdef STRIP_UNDERSCORE
-  if (symbol_name[0] == '_' && symbol_name[1] != 0)
-    symbol_name++;
-#endif
-
   name_end = get_symbol_end ();
   symbol_name_length = strlen (symbol_name);
   symbol_name_copy = xmalloc (symbol_name_length + 1);
@@ -723,8 +714,7 @@ obj_coff_endef (int ignore ATTRIBUTE_UNU
 	  && !SF_GET_TAG (def_symbol_in_progress))
       || S_GET_SEGMENT (def_symbol_in_progress) == absolute_section
       || ! symbol_constant_p (def_symbol_in_progress)
-      || (symbolP = symbol_find_base (S_GET_NAME (def_symbol_in_progress),
-				      DO_NOT_STRIP)) == NULL
+      || (symbolP = symbol_find (S_GET_NAME (def_symbol_in_progress))) == NULL
       || SF_GET_TAG (def_symbol_in_progress) != SF_GET_TAG (symbolP))
     {
       /* If it already is at the end of the symbol list, do nothing */
@@ -771,8 +761,7 @@ obj_coff_endef (int ignore ATTRIBUTE_UNU
     {
       symbolS *oldtag;
 
-      oldtag = symbol_find_base (S_GET_NAME (def_symbol_in_progress),
-				 DO_NOT_STRIP);
+      oldtag = symbol_find (S_GET_NAME (def_symbol_in_progress));
       if (oldtag == NULL || ! SF_GET_TAG (oldtag))
 	tag_insert (S_GET_NAME (def_symbol_in_progress),
 		    def_symbol_in_progress);
@@ -1245,7 +1234,7 @@ coff_frob_symbol (symbolS *symp, int *pu
 	  && !SF_GET_STATICS (symp)
 	  && S_GET_STORAGE_CLASS (symp) != C_LABEL
 	  && symbol_constant_p (symp)
-	  && (real = symbol_find_base (S_GET_NAME (symp), DO_NOT_STRIP))
+	  && (real = symbol_find (S_GET_NAME (symp)))
 	  && S_GET_STORAGE_CLASS (real) == C_NULL
 	  && real != symp)
 	{
@@ -2453,13 +2442,7 @@ obj_coff_def (int what ATTRIBUTE_UNUSED)
 #endif
 
   /* Initialize the new symbol.  */
-#ifdef STRIP_UNDERSCORE
-  S_SET_NAME (def_symbol_in_progress, (*symbol_name_copy == '_'
-				       ? symbol_name_copy + 1
-				       : symbol_name_copy));
-#else /* STRIP_UNDERSCORE */
   S_SET_NAME (def_symbol_in_progress, symbol_name_copy);
-#endif /* STRIP_UNDERSCORE */
   /* free(symbol_name_copy); */
   def_symbol_in_progress->sy_name_offset = (unsigned long) ~0;
   def_symbol_in_progress->sy_number = ~0;
@@ -2611,7 +2594,7 @@ obj_coff_endef (int ignore ATTRIBUTE_UNU
 	  && !SF_GET_TAG (def_symbol_in_progress))
       || S_GET_SEGMENT (def_symbol_in_progress) == absolute_section
       || def_symbol_in_progress->sy_value.X_op != O_constant
-      || (symbolP = symbol_find_base (S_GET_NAME (def_symbol_in_progress), DO_NOT_STRIP)) == NULL
+      || (symbolP = symbol_find (S_GET_NAME (def_symbol_in_progress))) == NULL
       || (SF_GET_TAG (def_symbol_in_progress) != SF_GET_TAG (symbolP)))
     {
       symbol_append (def_symbol_in_progress, symbol_lastP, &symbol_rootP,
@@ -2654,8 +2637,7 @@ obj_coff_endef (int ignore ATTRIBUTE_UNU
     {
       symbolS *oldtag;
 
-      oldtag = symbol_find_base (S_GET_NAME (def_symbol_in_progress),
-				 DO_NOT_STRIP);
+      oldtag = symbol_find (S_GET_NAME (def_symbol_in_progress));
       if (oldtag == NULL || ! SF_GET_TAG (oldtag))
 	tag_insert (S_GET_NAME (def_symbol_in_progress),
 		    def_symbol_in_progress);
@@ -2977,7 +2959,7 @@ yank_symbols (void)
 	      && !SF_GET_STATICS (symbolP)
 	      && S_GET_STORAGE_CLASS (symbolP) != C_LABEL
 	      && symbolP->sy_value.X_op == O_constant
-	      && (real_symbolP = symbol_find_base (S_GET_NAME (symbolP), DO_NOT_STRIP))
+	      && (real_symbolP = symbol_find (S_GET_NAME (symbolP)))
 	      && real_symbolP != symbolP)
 	    {
 	      /* FIXME-SOON: where do dups come from?
@@ -3240,7 +3222,7 @@ c_section_symbol (char *name, int idx)
 {
   symbolS *symbolP;
 
-  symbolP = symbol_find_base (name, DO_NOT_STRIP);
+  symbolP = symbol_find (name);
   if (symbolP == NULL)
     symbolP = symbol_new (name, idx, 0, &zero_address_frag);
   else
--- /home/jbeulich/src/binutils/mainline/2005-04-15/gas/config/obj-coff.h	2005-03-17 12:41:56.000000000 +0100
+++ 2005-04-15/gas/config/obj-coff.h	2005-04-19 09:59:24.000000000 +0200
@@ -265,8 +265,6 @@
 #define SYM_AUXINFO(S) \
   (&coffsymbol (symbol_get_bfdsym (S))->native[1])
 
-#define DO_NOT_STRIP	0
-
 /* The number of auxiliary entries.  */
 #define S_GET_NUMBER_AUXILIARY(s) \
   (coffsymbol (symbol_get_bfdsym (s))->native->u.syment.n_numaux)
@@ -453,9 +451,6 @@ typedef struct
   unsigned int ost_flags;
 } obj_symbol_type;
 
-#ifndef DO_NOT_STRIP
-#define DO_NOT_STRIP	0
-#endif
 /* Symbol table macros and constants.  */
 
 /* Possible and useful section number in symbol table
--- /home/jbeulich/src/binutils/mainline/2005-04-15/gas/config/tc-arm.c	2005-03-31 16:25:47.000000000 +0200
+++ 2005-04-15/gas/config/tc-arm.c	2005-04-19 10:05:23.000000000 +0200
@@ -1137,10 +1137,6 @@ symbol_locate (symbolS *    symbolP,
   name_length = strlen (name) + 1;   /* +1 for \0.  */
   obstack_grow (&notes, name, name_length);
   preserved_copy_of_name = obstack_finish (&notes);
-#ifdef STRIP_UNDERSCORE
-  if (preserved_copy_of_name[0] == '_')
-    preserved_copy_of_name++;
-#endif
 
 #ifdef tc_canonicalize_symbol_name
   preserved_copy_of_name =
--- /home/jbeulich/src/binutils/mainline/2005-04-15/gas/config/tc-h8300.h	2005-03-04 15:51:42.000000000 +0100
+++ 2005-04-15/gas/config/tc-h8300.h	2005-04-19 10:00:40.000000000 +0200
@@ -88,7 +88,6 @@ extern void tc_reloc_mangle (struct fix 
 
 #define TC_CONS_RELOC          (Hmode ? R_RELLONG: R_RELWORD)
 
-#define DO_NOT_STRIP 0
 #define LISTING_HEADER "Renesas H8/300 GAS "
 #define NEED_FX_R_TYPE 1
 #ifndef OBJ_ELF
--- /home/jbeulich/src/binutils/mainline/2005-04-15/gas/config/tc-h8500.h	2005-03-29 15:26:56.000000000 +0200
+++ 2005-04-15/gas/config/tc-h8500.h	2005-04-19 10:00:46.000000000 +0200
@@ -41,7 +41,6 @@ struct internal_reloc;
 extern void tc_reloc_mangle
   (struct fix *, struct internal_reloc *, bfd_vma);
 
-#define DO_NOT_STRIP 0
 #define LISTING_HEADER "Renesas H8/500 GAS "
 #define NEED_FX_R_TYPE 1
 #define RELOC_32 1234
--- /home/jbeulich/src/binutils/mainline/2005-04-15/gas/config/tc-sh.h	2005-03-04 15:51:45.000000000 +0100
+++ 2005-04-15/gas/config/tc-sh.h	2005-04-19 10:03:13.000000000 +0200
@@ -135,8 +135,6 @@ extern void sh_frob_file (void);
 #ifdef OBJ_COFF
 /* COFF specific definitions.  */
 
-#define DO_NOT_STRIP 0
-
 /* This macro translates between an internal fix and a coff reloc type.  */
 #define TC_COFF_FIX2RTYPE(fix) ((fix)->fx_r_type)
 
--- /home/jbeulich/src/binutils/mainline/2005-04-15/gas/config/tc-w65.h	2005-03-29 15:27:01.000000000 +0200
+++ 2005-04-15/gas/config/tc-w65.h	2005-04-19 10:00:10.000000000 +0200
@@ -41,7 +41,6 @@ struct fix;
 #define TC_RELOC_MANGLE(s,a,b,c) tc_reloc_mangle (a,b,c)
 extern void tc_reloc_mangle (struct fix *, struct internal_reloc *, bfd_vma);
 
-#define DO_NOT_STRIP 0
 #define LISTING_HEADER "W65816 GAS "
 #define NEED_FX_R_TYPE 1
 #define RELOC_32 1234
--- /home/jbeulich/src/binutils/mainline/2005-04-15/gas/config/tc-z8k.h	2005-03-04 15:51:47.000000000 +0100
+++ 2005-04-15/gas/config/tc-z8k.h	2005-04-19 10:00:23.000000000 +0200
@@ -44,7 +44,6 @@ struct internal_reloc;
 extern void tc_reloc_mangle
   PARAMS ((struct fix *, struct internal_reloc *, bfd_vma));
 
-#define DO_NOT_STRIP 0
 #define LISTING_HEADER "Zilog Z8000 GAS "
 #define NEED_FX_R_TYPE 1
 #define RELOC_32 1234
--- /home/jbeulich/src/binutils/mainline/2005-04-15/gas/subsegs.c	2005-03-04 15:51:40.000000000 +0100
+++ 2005-04-15/gas/subsegs.c	2005-04-19 14:01:10.034661912 +0200
@@ -524,7 +524,7 @@ section_symbol (segT sec)
   else
     {
       segT seg;
-      s = symbol_find_base (sec->symbol->name, 0);
+      s = symbol_find (sec->symbol->name);
       /* We have to make sure it is the right symbol when we
 	 have multiple sections with the same section name.  */
       if (s == NULL
--- /home/jbeulich/src/binutils/mainline/2005-04-15/gas/symbols.c	2005-04-11 08:11:27.000000000 +0200
+++ 2005-04-15/gas/symbols.c	2005-04-19 14:00:51.256516624 +0200
@@ -113,11 +113,6 @@ save_symbol_name (const char *name)
   obstack_grow (&notes, name, name_length);
   ret = obstack_finish (&notes);
 
-#ifdef STRIP_UNDERSCORE
-  if (ret[0] == '_')
-    ++ret;
-#endif
-
 #ifdef tc_canonicalize_symbol_name
   ret = tc_canonicalize_symbol_name (ret);
 #endif
@@ -600,16 +595,6 @@ symbol_temp_make (void)
    of a struct symbol associated with that name.  */
 
 symbolS *
-symbol_find (const char *name)
-{
-#ifdef STRIP_UNDERSCORE
-  return (symbol_find_base (name, 1));
-#else /* STRIP_UNDERSCORE */
-  return (symbol_find_base (name, 0));
-#endif /* STRIP_UNDERSCORE */
-}
-
-symbolS *
 symbol_find_exact (const char *name)
 {
 #ifdef BFD_ASSEMBLER
@@ -626,11 +611,8 @@ symbol_find_exact (const char *name)
 }
 
 symbolS *
-symbol_find_base (const char *name, int strip_underscore)
+symbol_find (const char *name)
 {
-  if (strip_underscore && *name == '_')
-    name++;
-
 #ifdef tc_canonicalize_symbol_name
   {
     char *copy;
--- /home/jbeulich/src/binutils/mainline/2005-04-15/gas/symbols.h	2005-04-11 08:11:27.000000000 +0200
+++ 2005-04-15/gas/symbols.h	2005-04-19 14:00:35.773870344 +0200
@@ -50,7 +50,6 @@ extern int symbols_case_sensitive;
 char *decode_local_label_name (char *s);
 symbolS *symbol_find (const char *name);
 symbolS *symbol_find_exact (const char *name);
-symbolS *symbol_find_base (const char *name, int strip_underscore);
 symbolS *symbol_find_or_make (const char *name);
 symbolS *symbol_make (const char *name);
 symbolS *symbol_new (const char *name, segT segment, valueT value,

Attachment: binutils-mainline-strip-underscore.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]