PR19498, Invalid "symbol definition loop"
authorAlan Modra <amodra@gmail.com>
Mon, 4 Apr 2016 06:49:27 +0000 (16:19 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 4 Apr 2016 06:50:58 +0000 (16:20 +0930)
PR 19498
* symbols.c (resolve_symbol_value): Clear sy_resolving on exit
from function on all paths that set sy_resolving.

gas/ChangeLog
gas/symbols.c

index e1e6ab5f53e36a000050caf0610293b93fdc6729..615921843bb13abd08a5d1e9b2ccbd792105eb65 100644 (file)
@@ -1,3 +1,9 @@
+2016-04-04  Alan Modra  <amodra@gmail.com>
+
+       PR 19498
+       * symbols.c (resolve_symbol_value): Clear sy_resolving on exit
+       from function on all paths that set sy_resolving.
+
 2016-04-03  Trevor Saunders  <tbsaunde+binutils@tbsaunde.org>
 
        * app.c (app_push): use XNEW macro.
index 642f6d771b40ca45432a189da32ea5f8d907f32e..4c3137a12786f0da059195e6c81bcbf2f2952e05 100644 (file)
@@ -1262,7 +1262,10 @@ resolve_symbol_value (symbolS *symp)
 
          resolved = symbol_resolved_p (add_symbol);
          if (S_IS_WEAKREFR (symp))
-           goto exit_dont_set_value;
+           {
+             symp->sy_flags.sy_resolving = 0;
+             goto exit_dont_set_value;
+           }
          break;
 
        case O_uminus: