* symbols.c(colon): if a symbol is being multiply defined as exactly
authorSteve Chamberlain <sac@cygnus>
Fri, 24 Jan 1992 01:33:07 +0000 (01:33 +0000)
committerSteve Chamberlain <sac@cygnus>
Fri, 24 Jan 1992 01:33:07 +0000 (01:33 +0000)
the same value, then don't cause a fatal error. This fixes
P00000616 - where a def _foo= . followed by foo: is seen.

gas/ChangeLog
gas/symbols.c

index 241cd2401cc0f68f53173a92edfe7eb7af6d7788..6d132521dd6d3cee851e0b446338c5112f3ddd40 100644 (file)
@@ -1,4 +1,16 @@
+Thu Jan 23 17:30:08 1992  Steve Chamberlain  (sac at rtl.cygnus.com)
+
+       * symbols.c(colon): if a symbol is being multiply defined as exactly
+       the same value, then don't cause a fatal error. This fixes
+       P00000616 - where a def _foo= . followed by foo: is seen.
+
 Wed Jan  8 11:26:40 1992  Steve Chamberlain  (sac at rtl.cygnus.com)
+
+       * config/obj-coffbfd.c: lint
+       * config/tc-h8300.c, config/tc-h8300.h: Too Many bug fixes
+       * config/tc-m68k.h, config/tc-sparc.h: Override default
+       listing options to give better effect.
+
         Added support for listings
        * Makefile.in: include listing.[co]
        * as.c: parse -l
index 9d75ae1ea43001ee0a81726116ec68ffff78b1f1..2ac48c1e511562eb45e26922b628cacc75fdd30e 100644 (file)
@@ -205,7 +205,7 @@ fragS *frag;                        /* Associated fragment */
        obj_symbol_new_hook(symbolP);
        
 #ifdef DEBUG
-       verify_symbol_chain(symbol_rootP, symbol_lastP);
+/*     verify_symbol_chain(symbol_rootP, symbol_lastP); */
 #endif /* DEBUG */
 
        return(symbolP);
@@ -367,8 +367,13 @@ void colon(sym_name)               /* just seen "x:" - rattle symbols & frags */
 #endif /* OBJ_COFF */
                          }
                  } /* if the undefined symbol has no value */
-         } else {
-                 as_fatal("Symbol %s already defined.", sym_name);
+         } else 
+         {
+           /* Don't blow up if the definition is the same */
+           if (!(frag_now == symbolP->sy_frag
+                 && S_GET_VALUE(symbolP) == obstack_next_free(&frags) - frag_now->fr_literal
+                 && S_GET_SEGMENT(symbolP) == now_seg) )
+            as_fatal("Symbol %s already defined.", sym_name);
          } /* if this symbol is not yet defined */
 
   } else {
@@ -515,7 +520,7 @@ symbolS **lastPP;
 #endif /* SYMBOLS_NEED_BACKPOINTERS */
 
 #ifdef DEBUG
-       verify_symbol_chain(*rootPP, *lastPP);
+/*     verify_symbol_chain(*rootPP, *lastPP); */
 #endif /* DEBUG */
 
        return;