build file symbol fwd pointers properly, don't deref symbol #s as pointers
authorKen Raeburn <raeburn@cygnus>
Tue, 30 Mar 1993 15:22:27 +0000 (15:22 +0000)
committerKen Raeburn <raeburn@cygnus>
Tue, 30 Mar 1993 15:22:27 +0000 (15:22 +0000)
gas/config/obj-coffbfd.c

index 610a6851a966a097486add318c8bce76ffe8e1e2..be47f48f6ff7846ccb5d6f6a3ffb2370093dae22 100644 (file)
@@ -1353,12 +1353,12 @@ stack *block_stack;
 symbolS *last_functionP = NULL;
 symbolS *last_tagP;
 
-
 static unsigned int
 DEFUN_VOID (yank_symbols)
 {
   symbolS *symbolP;
   unsigned int symbol_number = 0;
+  unsigned int last_file_symno = 0;
 
   for (symbolP = symbol_rootP;
        symbolP;
@@ -1456,10 +1456,9 @@ DEFUN_VOID (yank_symbols)
                         sizeof (symbolP->sy_symbol.ost_auxent[0].x_sym.x_fcnary.x_ary.x_dimen));
 #endif
                }
-             /* The C_FCN doesn't need any additional information.
-              I don't even know if this is needed for sdb. But the
-              standard assembler generates it, so...
-              */
+             /* The C_FCN doesn't need any additional information.  I
+                don't even know if this is needed for sdb. But the
+                standard assembler generates it, so...  */
              if (S_GET_STORAGE_CLASS (symbolP) == C_EFCN)
                {
                  if (last_functionP == (symbolS *) 0)
@@ -1488,8 +1487,8 @@ DEFUN_VOID (yank_symbols)
        {
          if (S_GET_VALUE (symbolP))
            {
-             S_SET_VALUE ((symbolS *) S_GET_VALUE (symbolP), symbol_number);
-             S_SET_VALUE (symbolP, 0);
+             S_SET_VALUE (symbolP, last_file_symno);
+             last_file_symno = symbol_number;
            }                   /* no one points at the first .file symbol */
        }                       /* if debug or tag or eos or file */