* symbols.c (resolve_symbol_value): Always set segment, even when
authorAlan Modra <amodra@gmail.com>
Fri, 25 May 2001 10:07:43 +0000 (10:07 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 25 May 2001 10:07:43 +0000 (10:07 +0000)
not finalizing symbol value.

gas/ChangeLog
gas/symbols.c

index 8bcc652af036a11f7e927233da500177ba013003..b122f2013cbb9a80c17b0945b019271e41381120 100644 (file)
@@ -1,5 +1,8 @@
 2001-05-25  Alan Modra  <amodra@one.net.au>
 
+       * symbols.c (resolve_symbol_value): Always set segment, even when
+       not finalizing symbol value.
+
        * config/obj-ieee.c (write_object_file): Set finalize_syms.
        * config/obj-coff.c (write_object_file): Likewise.
        * (size_section): Remove rs_space assert as fr_symbol is no longer
index b8c78d26e01932cdcc20ef1ff12797442e2bb490..764217dbad19b443d43414cc97aa13ef0619f08c 100644 (file)
@@ -942,7 +942,7 @@ resolve_symbol_value (symp)
            {
              if (finalize_syms)
                {
-                 S_SET_SEGMENT (symp, S_GET_SEGMENT (add_symbol));
+                 final_seg = S_GET_SEGMENT (add_symbol);
                  symp->sy_value.X_op = O_symbol;
                  symp->sy_value.X_add_symbol = add_symbol;
                  symp->sy_value.X_add_number = final_val;
@@ -1146,18 +1146,18 @@ resolve_symbol_value (symp)
     }
 
   if (finalize_syms)
-    {
-      S_SET_VALUE (symp, final_val);
+    S_SET_VALUE (symp, final_val);
 
+exit_dont_set_value:
+  /* Always set the segment, even if not finalizing the value.
+     The segment is used to determine whether a symbol is defined.  */
 #if defined (OBJ_AOUT) && ! defined (BFD_ASSEMBLER)
-      /* The old a.out backend does not handle S_SET_SEGMENT correctly
-         for a stab symbol, so we use this bad hack.  */
-      if (final_seg != S_GET_SEGMENT (symp))
+  /* The old a.out backend does not handle S_SET_SEGMENT correctly
+     for a stab symbol, so we use this bad hack.  */
+  if (final_seg != S_GET_SEGMENT (symp))
 #endif
-       S_SET_SEGMENT (symp, final_seg);
-    }
+    S_SET_SEGMENT (symp, final_seg);
 
-exit_dont_set_value:
   /* Don't worry if we can't resolve an expr_section symbol.  */
   if (finalize_syms)
     {
This page took 0.031331 seconds and 4 git commands to generate.