From 3730a015c05cde8d151f94bef20e43ea2bf96ccc Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 18 May 2020 13:30:59 +0930 Subject: [PATCH] Re: Fix tight loop on recursively-defined symbols 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 | 5 +++++ gas/symbols.c | 1 + 2 files changed, 6 insertions(+) diff --git a/gas/ChangeLog b/gas/ChangeLog index 27345056482..3c9ab9d44c3 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2020-05-18 Alan Modra + + * symbols.c (resolve_symbol_value): Invoke LOCAL_SYMBOL_CHECK + before looking at add_symbol->sy_flags. + 2020-05-15 Alan Modra Alex Coplan diff --git a/gas/symbols.c b/gas/symbols.c index c1782661087..774afd3036d 100644 --- a/gas/symbols.c +++ b/gas/symbols.c @@ -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; -- 2.39.5