]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Re: Fix tight loop on recursively-defined symbols
authorAlan Modra <amodra@gmail.com>
Mon, 18 May 2020 04:00:59 +0000 (13:30 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 18 May 2020 08:13:42 +0000 (17:43 +0930)
sy_resolving ought to not be set for a struct local_symbol, but it is
apparent from local_symbol_make that the field is not initialised.

* symbols.c (resolve_symbol_value): Invoke LOCAL_SYMBOL_CHECK
before looking at add_symbol->sy_flags.sy_resolving.

(cherry picked from commit d402189f2faa0aaa9fb8ad4669fdf0059946cd8a)

gas/ChangeLog
gas/symbols.c

index 7a623e8b86e7e49ba4cedbc04593d89cdb6e40f5..0ee90564723d65fa36760e39b95adb9d62ec1161 100644 (file)
@@ -1,3 +1,8 @@
+2020-05-18  Alan Modra  <amodra@gmail.com>
+
+       * symbols.c (resolve_symbol_value): Invoke LOCAL_SYMBOL_CHECK
+       before looking at add_symbol->sy_flags.
+
 2020-05-15  Alan Modra  <amodra@gmail.com>
            Alex Coplan  <alex.coplan@arm.com>
 
index 9bae085e6832a3cf5b48de6ace528b0c2f24114d..acdab3f5e084f11bf301b351989bf170aa8e5005 100644 (file)
@@ -1389,6 +1389,7 @@ resolve_symbol_value (symbolS *symp)
 
          /* Don't leave symbol loops.  */
          if (finalize_syms
+             && !LOCAL_SYMBOL_CHECK (add_symbol)
              && add_symbol->sy_flags.sy_resolving)
            break;