Module Name:    src
Committed By:   rin
Date:           Sat Oct  7 11:26:09 UTC 2023

Modified Files:
        src/external/gpl3/binutils/dist/gas/config: tc-vax.c

Log Message:
binutils/gas: vax: Cherry-pick upstream commits for binutils-gdb/30715

PR port-vax/57646: Import major vax toolchain fix by Kalvis Duckmanton

(1/2) 
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=8c8224dc1637a3e695c17e4c1026247196813c48
----
commit 8c8224dc163
Author: Kalvis Duckmanton <kalvisd at gmail>
Date:   Sat Aug 12 14:27:00 2023 +0930

PR30715, VAX: md_create_long_jump

    PR 30715
    * config/tc-vax.c (md_create_long_jump): Use pc-relative addressing.
    * testsuite/gas/vax/broken_word.d,
    * testsuite/gas/vax/broken_word.s: New test.
    * testsuite/gas/vax/vax.exp: Run it.
----

(2/2) 
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=33efa77ecf7b040973657408f92325a4db13b9e5
----
commit 33efa77ecf7
Author: Alan Modra <amodra at gmail>
Date:   Mon Aug 14 17:05:01 2023 +0930

Re: PR30715, VAX: md_create_long_jump

Tidy comment formatting.
----


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 \
    src/external/gpl3/binutils/dist/gas/config/tc-vax.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/binutils/dist/gas/config/tc-vax.c
diff -u src/external/gpl3/binutils/dist/gas/config/tc-vax.c:1.15 src/external/gpl3/binutils/dist/gas/config/tc-vax.c:1.16
--- src/external/gpl3/binutils/dist/gas/config/tc-vax.c:1.15	Mon Aug 28 00:39:05 2023
+++ src/external/gpl3/binutils/dist/gas/config/tc-vax.c	Sat Oct  7 11:26:09 2023
@@ -2257,18 +2257,19 @@ md_create_short_jump (char *ptr,
 
 void
 md_create_long_jump (char *ptr,
-		     addressT from_addr ATTRIBUTE_UNUSED,
+		     addressT from_addr,
 		     addressT to_addr,
-		     fragS *frag,
-		     symbolS *to_symbol)
+		     fragS *frag ATTRIBUTE_UNUSED,
+		     symbolS *to_symbol ATTRIBUTE_UNUSED)
 {
   valueT offset;
 
-  offset = to_addr - S_GET_VALUE (to_symbol);
-  *ptr++ = VAX_JMP;		/* Arbitrary jump.  */
-  *ptr++ = VAX_ABSOLUTE_MODE;
+  /* Account for 1 byte instruction, 1 byte of address specifier and
+     4 bytes of offset from PC.  */
+  offset = to_addr - (from_addr + 1 + 1 + 4);
+  *ptr++ = VAX_JMP;
+  *ptr++ = VAX_PC_RELATIVE_MODE;
   md_number_to_chars (ptr, offset, 4);
-  fix_new (frag, ptr - frag->fr_literal, 4, to_symbol, (long) 0, 0, NO_RELOC);
 }
 
 #ifdef OBJ_VMS

Reply via email to