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] |
>> 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 (¬es, name, name_length); preserved_copy_of_name = obstack_finish (¬es); -#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 (¬es, name, name_length); ret = obstack_finish (¬es); -#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] |