From: Jan Beulich Date: Fri, 18 Aug 2023 06:57:34 +0000 (+0200) Subject: gas: make S_IS_LOCAL() and S_IS_EXTERNAL() exclusive of one another X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b41ef0baac449de58c84d1a0261af0d91443b540;p=binutils-gdb.git gas: make S_IS_LOCAL() and S_IS_EXTERNAL() exclusive of one another While they aren't opposites of each other, there also shouldn't be any symbol for which both return true; both may return false. Therefore use S_IS_EXTERNAL() in S_IS_LOCAL(), thus subsuming the sanity check which so far both did alike. --- diff --git a/gas/symbols.c b/gas/symbols.c index ea05801e356..45e46ed39b7 100644 --- a/gas/symbols.c +++ b/gas/symbols.c @@ -2420,15 +2420,14 @@ S_IS_LOCAL (symbolS *s) if (s->flags.local_symbol) return 1; - flags = s->bsym->flags; - - /* Sanity check. */ - if ((flags & BSF_LOCAL) && (flags & BSF_GLOBAL)) - abort (); + if (S_IS_EXTERNAL (s)) + return 0; if (bfd_asymbol_section (s->bsym) == reg_section) return 1; + flags = s->bsym->flags; + if (flag_strip_local_absolute /* Keep BSF_FILE symbols in order to allow debuggers to identify the source file even when the object file is stripped. */