* config/tc-dvp.c (dvp_relax_frag): Adjust target address by stretch.
authorDoug Evans <dje@google.com>
Mon, 8 Jun 1998 22:44:03 +0000 (22:44 +0000)
committerDoug Evans <dje@google.com>
Mon, 8 Jun 1998 22:44:03 +0000 (22:44 +0000)
PR 16132.

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

index 9f933e42a0425e71ef2150f856b90801ee377c5d..739d6ea6bdbddf0bde76acd5089a07f1d95004e2 100644 (file)
@@ -1,3 +1,9 @@
+start-sanitize-sky
+Mon Jun  8 15:41:43 1998  Doug Evans  <devans@canuck.cygnus.com>
+
+       * config/tc-dvp.c (dvp_relax_frag): Adjust target address by stretch.
+
+end-sanitize-sky
 Mon Jun  8 12:20:30 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>
 
        * config/tc-i386.c: REPNE renamed to REPNE_PREFIX_OPCODE, and
index 848f141b098cbd7d0ca808e307fe80df95053315..292e21ac6250202a2c4f71e5c0696407a1750abf 100644 (file)
@@ -1612,6 +1612,7 @@ md_estimate_size_before_relax (fragP, segment)
 } 
 
 /* Perform the relaxation.
+   STRETCH is the amount the start of the frag has already been shifted by.
    All we have to do is figure out how many bytes we need to insert to
    get to the recorded symbol (which is at the required alignment).
    This function is also called for machine dependent vu insn frags.
@@ -1645,6 +1646,10 @@ dvp_relax_frag (fragP, stretch)
 
   if (fragP->fr_subtype == RELAX_MPG)
     {
+      /* The frag the symbol is in hasn't been relaxed yet so any .org
+        adjustments haven't been applied to it.  We know the symbol
+        is the address of the next frag so adjust target by stretch.  */
+      target += stretch;
       growth = target - address;
       if (growth < 0)
        as_fatal ("internal error: bad mpg alignment handling");
@@ -1654,6 +1659,10 @@ dvp_relax_frag (fragP, stretch)
 
   if (fragP->fr_subtype == RELAX_DIRECT)
     {
+      /* The frag the symbol is in hasn't been relaxed yet so any .org
+        adjustments haven't been applied to it.  We know the symbol
+        is the address of the next frag so adjust target by stretch.  */
+      target += stretch;
       growth = target - address;
       if (growth < 0)
        as_fatal ("internal error: bad direct alignment handling");