aboutsummaryrefslogtreecommitdiff
path: root/gas/symbols.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-05-18 13:30:59 +0930
committerAlan Modra <amodra@gmail.com>2020-05-18 13:46:27 +0930
commitd402189f2faa0aaa9fb8ad4669fdf0059946cd8a (patch)
tree9eab0921b5514839e2970951fbdcc7e11ef8546c /gas/symbols.c
parent503648e41efa19dfb059757ffddf0206b6060520 (diff)
downloadgdb-d402189f2faa0aaa9fb8ad4669fdf0059946cd8a.zip
gdb-d402189f2faa0aaa9fb8ad4669fdf0059946cd8a.tar.gz
gdb-d402189f2faa0aaa9fb8ad4669fdf0059946cd8a.tar.bz2
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.
Diffstat (limited to 'gas/symbols.c')
-rw-r--r--gas/symbols.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gas/symbols.c b/gas/symbols.c
index 711730d..b1376a5 100644
--- a/gas/symbols.c
+++ b/gas/symbols.c
@@ -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;