From b41ef0baac449de58c84d1a0261af0d91443b540 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 18 Aug 2023 08:57:34 +0200 Subject: [PATCH] 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. --- gas/symbols.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) 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. */ -- 2.30.2