diff options
Diffstat (limited to 'gas/config/tc-arm.c')
-rw-r--r-- | gas/config/tc-arm.c | 65 |
1 files changed, 31 insertions, 34 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 2f6fea6..683774f 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -21625,29 +21625,9 @@ md_pcrel_from_section (fixS * fixP, segT seg) static bfd_boolean flag_warn_syms = TRUE; -/* Under ELF we need to default _GLOBAL_OFFSET_TABLE. - Otherwise we have no need to default values of symbols. */ - -symbolS * -md_undefined_symbol (char * name ATTRIBUTE_UNUSED) +bfd_boolean +arm_tc_equal_in_insn (int c ATTRIBUTE_UNUSED, char * name) { -#ifdef OBJ_ELF - if (name[0] == '_' && name[1] == 'G' - && streq (name, GLOBAL_OFFSET_TABLE_NAME)) - { - if (!GOT_symbol) - { - if (symbol_find (name)) - as_bad (_("GOT already in the symbol table")); - - GOT_symbol = symbol_new (name, undefined_section, - (valueT) 0, & zero_address_frag); - } - - return GOT_symbol; - } -#endif - /* PR 18347 - Warn if the user attempts to create a symbol with the same name as an ARM instruction. Whilst strictly speaking it is allowed, it does mean that the resulting code might be very confusing to the reader. @@ -21662,17 +21642,8 @@ md_undefined_symbol (char * name ATTRIBUTE_UNUSED) Note - ARM instructions are case-insensitive but the strings in the hash table are all stored in lower case, so we must first ensure that name is - lower case too. - - Some names are problematical. Several gas tests for example use: - - b: - - as a label, but of course this matches the branch instruction. For now - we punt and only check names longer than 1. - - FIXME: Should this be made into generic code for all targets ? */ - if (flag_warn_syms && arm_ops_hsh && strlen (name) > 1) + lower case too. */ + if (flag_warn_syms && arm_ops_hsh) { char * nbuf = strdup (name); char * p; @@ -21688,12 +21659,38 @@ md_undefined_symbol (char * name ATTRIBUTE_UNUSED) /* Only warn about the symbol once. To keep the code simple we let hash_insert do the lookup for us. */ if (hash_insert (already_warned, name, NULL) == NULL) - as_warn (_("[-mwarn-syms]: Symbol '%s' matches an ARM instruction - is this intentional ?"), name); + as_warn (_("[-mwarn-syms]: Assignment makes a symbol match an ARM instruction: %s"), name); } else free (nbuf); } + return FALSE; +} + +/* Under ELF we need to default _GLOBAL_OFFSET_TABLE. + Otherwise we have no need to default values of symbols. */ + +symbolS * +md_undefined_symbol (char * name ATTRIBUTE_UNUSED) +{ +#ifdef OBJ_ELF + if (name[0] == '_' && name[1] == 'G' + && streq (name, GLOBAL_OFFSET_TABLE_NAME)) + { + if (!GOT_symbol) + { + if (symbol_find (name)) + as_bad (_("GOT already in the symbol table")); + + GOT_symbol = symbol_new (name, undefined_section, + (valueT) 0, & zero_address_frag); + } + + return GOT_symbol; + } +#endif + return NULL; } |