Correctly calculate the pc relative offset of the target destination for jmp
authorNick Clifton <nickc@redhat.com>
Fri, 25 Aug 2000 18:40:16 +0000 (18:40 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 25 Aug 2000 18:40:16 +0000 (18:40 +0000)
instructions.

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

index 02f3661c0f5cf76f0b9dcc4dee2f2b95bbb0afe1..effaaaaf30d1c192657e06e133c48ec231429b0f 100644 (file)
@@ -1,3 +1,9 @@
+2000-08-25  J. David Anglin  <dave@hiauly1.hia.nrc.ca>
+
+        * tc-vax.c (md_convert_frag): Correctly calculate the pc relative
+        offset of the target destination for jmp instructions.
+        (md_assemble): Change mode to VAX_ABSOLUTE_MODE as per comments.
+
 2000-08-24  Hans-Peter Nilsson  <hp@axis.com>
 
        * NEWS: Mention support for CRIS.
index acf78ee199f008290ca7478420a1e7eff5fecba8..23429227ff3d0027244d3fa70144524f7c25f3b6 100644 (file)
@@ -775,7 +775,7 @@ md_assemble (instruction_string)
                                  p[1] = VAX_BRB;
                                  p[2] = 6;
                                  p[3] = VAX_JMP;
-                                 p[4] = VAX_PC_RELATIVE_MODE + 1;      /* @#... */
+                                  p[4] = VAX_ABSOLUTE_MODE;     /* @#... */
                                  md_number_to_chars (p + 5, this_add_number, 4);
                                  /*
                                   * Now (eg)   xOBxxx  1f
@@ -1349,7 +1349,7 @@ md_convert_frag (headers, seg, fragP)
       addressP[0] = 6;
       addressP[1] = VAX_JMP;
       addressP[2] = VAX_PC_RELATIVE_MODE;
-      md_number_to_chars (addressP + 3, target_address, 4);
+      md_number_to_chars (addressP + 3, target_address - (address_of_var + 7), 4);
       extension = 7;
       break;
 
@@ -1383,7 +1383,7 @@ md_convert_frag (headers, seg, fragP)
       addressP[3] = 6;
       addressP[4] = VAX_JMP;
       addressP[5] = VAX_PC_RELATIVE_MODE;
-      md_number_to_chars (addressP + 6, target_address, 4);
+      md_number_to_chars (addressP + 6, target_address - (address_of_var + 10), 4);
       extension = 10;
       break;
 
@@ -1407,7 +1407,7 @@ md_convert_frag (headers, seg, fragP)
       addressP[2] = 6;
       addressP[3] = VAX_JMP;
       addressP[4] = VAX_PC_RELATIVE_MODE;
-      md_number_to_chars (addressP + 5, target_address, 4);
+      md_number_to_chars (addressP + 5, target_address - (address_of_var + 9), 4);
       extension = 9;
       break;