* config/tc-mips.c (append_insn): Make sure that if we have a
authorIan Lance Taylor <ian@airs.com>
Fri, 6 Feb 1998 03:08:45 +0000 (03:08 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 6 Feb 1998 03:08:45 +0000 (03:08 +0000)
fixup for an unmatched %hi reloc, it does not associated with a
variant frag.

gas/ChangeLog
gas/config/tc-mips.c

index c5f6bdb490c589a403bf1cad97c619a45759f218..ccac0d68f4e9b1e125aa1a449ce208d915de0832 100644 (file)
@@ -1,5 +1,9 @@
 Thu Feb  5 12:39:08 1998  Ian Lance Taylor  <ian@cygnus.com>
 
+       * config/tc-mips.c (append_insn): Make sure that if we have a
+       fixup for an unmatched %hi reloc, it does not associated with a
+       variant frag.
+
        * configure, Makefile.in, aclocal.m4: Rebuild with new libtool.
        * doc/Makefile.in: Likewise.
 
index 33d1a683310bd3bd30bd37f8794d5ce6dffbf84b..109bd3984505d651f3fed31df2b36b8f25b3ced6 100644 (file)
@@ -880,7 +880,11 @@ md_begin ()
       else if (strcmp (cpu, "mips64vr4300") == 0)
         mips_cpu = 4300;
 
-      else if (strcmp (cpu, "mips64vr4100") == 0)
+      else if (strcmp (cpu, "mips64vr4100") == 0
+              /* start-sanitize-vr4111 */
+              || strcmp (cpu, "mips64vr4111") == 0
+               /* end-sanitize-vr4111 */
+              )
         mips_cpu = 4100;
 
       else if (strcmp (cpu, "r4010") == 0)
@@ -2213,6 +2217,16 @@ append_insn (place, ip, address_expr, reloc_type, unmatched_hi)
 
   /* We just output an insn, so the next one doesn't have a label.  */
   mips_clear_insn_labels ();
+
+  /* We must ensure that a fixup associated with an unmatched %hi
+     reloc does not become a variant frag.  Otherwise, the
+     rearrangement of %hi relocs in frob_file may confuse
+     tc_gen_reloc.  */
+  if (unmatched_hi)
+    {
+      frag_wane (frag_now);
+      frag_new (0);
+    }
 }
 
 /* This function forgets that there was any previous instruction or