]> 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:19:31 +0000 (17:49 +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 2734505648212d19f68aab8dd2761450a10f20c1..3c9ab9d44c3d34c940fe61809e54e22215690a49 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 c178266108784400caafa15082b69d015dfdb6b1..774afd3036d562a7087eb5d6e6883b12b7bd7214 100644 (file)
@@ -1387,6 +1387,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;