* config/tc-mips.c (macro)[ldd_std]: Fix the relaxation variant
authorMaciej W. Rozycki <macro@linux-mips.org>
Mon, 18 Oct 2010 00:17:43 +0000 (00:17 +0000)
committerMaciej W. Rozycki <macro@linux-mips.org>
Mon, 18 Oct 2010 00:17:43 +0000 (00:17 +0000)
for absolute addressing.

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

index 68cea17d6ed9d9fff7a6ddf2b96637f15162bd31..ac328477afa27af35e3e7ca6d09a960c51c98caa 100644 (file)
@@ -1,3 +1,8 @@
+2010-10-18  Maciej W. Rozycki  <macro@linux-mips.org>
+
+       * config/tc-mips.c (macro)[ldd_std]: Fix the relaxation variant
+       for absolute addressing.
+
 2010-10-18  Maciej W. Rozycki  <macro@linux-mips.org>
 
        * config/tc-mips.c (macro)[M_LD_OB, M_SD_OB]: Handle 64-bit ABIs.
index bf26235b84a82f01bc79e4c4dff245548620926c..51dbd6f4153545a896ff31281ca9bc774b60a2e8 100644 (file)
@@ -7203,26 +7203,7 @@ macro (struct mips_cl_insn *ip)
 
              relax_switch ();
 
-             /* We just generated two relocs.  When tc_gen_reloc
-                handles this case, it will skip the first reloc and
-                handle the second.  The second reloc already has an
-                extra addend of 4, which we added above.  We must
-                subtract it out, and then subtract another 4 to make
-                the first reloc come out right.  The second reloc
-                will come out right because we are going to add 4 to
-                offset_expr when we build its instruction below.
-
-                If we have a symbol, then we don't want to include
-                the offset, because it will wind up being included
-                when we generate the reloc.  */
-
-             if (offset_expr.X_op == O_constant)
-               offset_expr.X_add_number -= 8;
-             else
-               {
-                 offset_expr.X_add_number = -4;
-                 offset_expr.X_op = O_constant;
-               }
+             offset_expr.X_add_number -= 4;
            }
          used_at = 1;
          macro_build_lui (&offset_expr, AT);