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