microMIPS/GAS: Handle several percent-ops with macros

In the microMIPS mode also accept %half, %got, %call, %got_hi, %got_lo,
%call_hi, %call_lo, %neg, %got_page, %highest, %got_disp, %tlsgd,
%tlsldm, %dtprel_hi, %dtprel_lo, %gottprel, %tprel_hi and %tprel_lo
percent-ops with macros, so that they can be used with instructions that
expand into sequences if relocation is required due to their limited
offset span, such as LL, LWL, etc., fixing GAS assertions:

.../gas/testsuite/gas/mips/elf-rel28.s: Assembler messages:
.../gas/testsuite/gas/mips/elf-rel28.s:17: Internal error in macro_build at .../gas/config/tc-mips.c:8854.
Please report this bug.

observed if an attempt is made to assemble the `elf-rel28.s' test case
modified to use one of the affected instructions to microMIPS code.

	gas/
	* config/tc-mips.c (macro_build) <'i', 'j'>: Also accept
	BFD_RELOC_16, BFD_RELOC_MIPS_GOT16, BFD_RELOC_MIPS_CALL16,
	BFD_RELOC_MIPS_GOT_HI16, BFD_RELOC_MIPS_GOT_LO16,
	BFD_RELOC_MIPS_CALL_HI16, BFD_RELOC_MIPS_CALL_LO16,
	BFD_RELOC_MIPS_SUB, BFD_RELOC_MIPS_GOT_PAGE,
	BFD_RELOC_MIPS_HIGHEST, BFD_RELOC_MIPS_GOT_DISP,
	BFD_RELOC_MIPS_TLS_GD, BFD_RELOC_MIPS_TLS_LDM,
	BFD_RELOC_MIPS_TLS_DTPREL_HI16, BFD_RELOC_MIPS_TLS_DTPREL_LO16,
	BFD_RELOC_MIPS_TLS_GOTTPREL, BFD_RELOC_MIPS_TLS_TPREL_HI16 and
	BFD_RELOC_MIPS_TLS_TPREL_LO16 relocations if in the microMIPS
	mode.
	* testsuite/gas/mips/elf-rel28-lldscd-n32.d: New test.
	* testsuite/gas/mips/elf-rel28-lldscd-micromips-n32.d: New test.
	* testsuite/gas/mips/elf-rel28-lldscd-n64.d: New test.
	* testsuite/gas/mips/elf-rel28-lldscd-micromips-n64.d: New test.
	* testsuite/gas/mips/elf-rel28.s: Add instruction selection.
	* testsuite/gas/mips/mips.exp: Run the new tests.
This commit is contained in:
Maciej W. Rozycki 2018-07-02 23:57:22 +01:00
parent 156f2c001e
commit 14c80123c0
8 changed files with 692 additions and 1 deletions

View File

@ -1,3 +1,23 @@
2018-07-02 Maciej W. Rozycki <macro@mips.com>
* config/tc-mips.c (macro_build) <'i', 'j'>: Also accept
BFD_RELOC_16, BFD_RELOC_MIPS_GOT16, BFD_RELOC_MIPS_CALL16,
BFD_RELOC_MIPS_GOT_HI16, BFD_RELOC_MIPS_GOT_LO16,
BFD_RELOC_MIPS_CALL_HI16, BFD_RELOC_MIPS_CALL_LO16,
BFD_RELOC_MIPS_SUB, BFD_RELOC_MIPS_GOT_PAGE,
BFD_RELOC_MIPS_HIGHEST, BFD_RELOC_MIPS_GOT_DISP,
BFD_RELOC_MIPS_TLS_GD, BFD_RELOC_MIPS_TLS_LDM,
BFD_RELOC_MIPS_TLS_DTPREL_HI16, BFD_RELOC_MIPS_TLS_DTPREL_LO16,
BFD_RELOC_MIPS_TLS_GOTTPREL, BFD_RELOC_MIPS_TLS_TPREL_HI16 and
BFD_RELOC_MIPS_TLS_TPREL_LO16 relocations if in the microMIPS
mode.
* testsuite/gas/mips/elf-rel28-lldscd-n32.d: New test.
* testsuite/gas/mips/elf-rel28-lldscd-micromips-n32.d: New test.
* testsuite/gas/mips/elf-rel28-lldscd-n64.d: New test.
* testsuite/gas/mips/elf-rel28-lldscd-micromips-n64.d: New test.
* testsuite/gas/mips/elf-rel28.s: Add instruction selection.
* testsuite/gas/mips/mips.exp: Run the new tests.
2018-07-02 Maciej W. Rozycki <macro@mips.com>
* testsuite/gas/mips/elf-rel28-micromips-n32.d: New test.

View File

@ -8851,7 +8851,26 @@ macro_build (expressionS *ep, const char *name, const char *fmt, ...)
|| *r == BFD_RELOC_MIPS_HIGHER
|| *r == BFD_RELOC_HI16_S
|| *r == BFD_RELOC_LO16
|| *r == BFD_RELOC_MIPS_GOT_OFST);
|| *r == BFD_RELOC_MIPS_GOT_OFST
|| (mips_opts.micromips
&& (*r == BFD_RELOC_16
|| *r == BFD_RELOC_MIPS_GOT16
|| *r == BFD_RELOC_MIPS_CALL16
|| *r == BFD_RELOC_MIPS_GOT_HI16
|| *r == BFD_RELOC_MIPS_GOT_LO16
|| *r == BFD_RELOC_MIPS_CALL_HI16
|| *r == BFD_RELOC_MIPS_CALL_LO16
|| *r == BFD_RELOC_MIPS_SUB
|| *r == BFD_RELOC_MIPS_GOT_PAGE
|| *r == BFD_RELOC_MIPS_HIGHEST
|| *r == BFD_RELOC_MIPS_GOT_DISP
|| *r == BFD_RELOC_MIPS_TLS_GD
|| *r == BFD_RELOC_MIPS_TLS_LDM
|| *r == BFD_RELOC_MIPS_TLS_DTPREL_HI16
|| *r == BFD_RELOC_MIPS_TLS_DTPREL_LO16
|| *r == BFD_RELOC_MIPS_TLS_GOTTPREL
|| *r == BFD_RELOC_MIPS_TLS_TPREL_HI16
|| *r == BFD_RELOC_MIPS_TLS_TPREL_LO16)));
break;
case 'o':

View File

@ -0,0 +1,138 @@
#source: elf-rel28.s
#as: -march=from-abi -mmicromips -n32 --defsym tlldscd=1
#objdump: -dr
#name: MIPS ELF reloc 28 (LLD/SCD, microMIPS, n32)
.*: file format .*
Disassembly of section \.text:
.* <foo>:
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_CALL_HI16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_CALL_LO16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_CALL16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT_DISP bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT_PAGE bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT_OFST bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT_HI16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT_LO16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GPREL16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MIPS_16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_HIGHEST bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_HIGHER bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_SUB bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_GD bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_LDM bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_DTPREL_HI16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_DTPREL_LO16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_TPREL_HI16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_TPREL_LO16 bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_GOTTPREL bar
.*: 6081 7000 lld a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_CALL_HI16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_CALL_LO16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_CALL16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT_DISP bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT_PAGE bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT_OFST bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT_HI16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT_LO16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GOT16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_GPREL16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MIPS_16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_HIGHEST bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_HIGHER bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_SUB bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_GD bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_LDM bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_DTPREL_HI16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_DTPREL_LO16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_TPREL_HI16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_TPREL_LO16 bar
.*: 6081 f000 scd a0,0\(at\)
.*: 3024 0000 addiu at,a0,0
.*: R_MICROMIPS_TLS_GOTTPREL bar
.*: 6081 f000 scd a0,0\(at\)
\.\.\.

View File

@ -0,0 +1,222 @@
#source: elf-rel28.s
#as: -march=from-abi -mmicromips -64 --defsym tlldscd=1
#objdump: -dr
#name: MIPS ELF reloc 28 (LLD/SCD, microMIPS, n64)
.*: file format .*
Disassembly of section \.text:
.* <foo>:
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_CALL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_CALL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_CALL16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT_DISP bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT_PAGE bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT_OFST bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GPREL16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MIPS_16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_HIGHEST bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_HIGHER bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_SUB bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_GD bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_LDM bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_DTPREL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_DTPREL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_TPREL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_TPREL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_GOTTPREL bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 7000 lld a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_CALL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_CALL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_CALL16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT_DISP bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT_PAGE bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT_OFST bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GOT16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_GPREL16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MIPS_16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_HIGHEST bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_HIGHER bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_SUB bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_GD bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_LDM bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_DTPREL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_DTPREL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_TPREL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_TPREL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
.*: 5c24 0000 daddiu at,a0,0
.*: R_MICROMIPS_TLS_GOTTPREL bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: 6081 f000 scd a0,0\(at\)
\.\.\.

View File

@ -0,0 +1,96 @@
#source: elf-rel28.s
#as: -march=from-abi -n32 --defsym tlldscd=1
#objdump: -dr
#name: MIPS ELF reloc 28 (LLD/SCD, n32)
.*: file format .*
Disassembly of section \.text:
.* <foo>:
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_CALL_HI16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_CALL_LO16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_CALL16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT_DISP bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT_PAGE bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT_OFST bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT_HI16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT_LO16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GPREL16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_HIGHEST bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_HIGHER bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_SUB bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_GD bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_LDM bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_DTPREL_HI16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_DTPREL_LO16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_TPREL_HI16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_TPREL_LO16 bar
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_GOTTPREL bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_CALL_HI16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_CALL_LO16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_CALL16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT_DISP bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT_PAGE bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT_OFST bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT_HI16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT_LO16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GPREL16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_HIGHEST bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_HIGHER bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_SUB bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_GD bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_LDM bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_DTPREL_HI16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_DTPREL_LO16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_TPREL_HI16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_TPREL_LO16 bar
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_GOTTPREL bar
\.\.\.

View File

@ -0,0 +1,180 @@
#source: elf-rel28.s
#as: -march=from-abi -64 --defsym tlldscd=1
#objdump: -dr
#name: MIPS ELF reloc 28 (LLD/SCD, n64)
.*: file format .*
Disassembly of section \.text:
.* <foo>:
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_CALL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_CALL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_CALL16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT_DISP bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT_PAGE bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT_OFST bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GOT16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_GPREL16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_HIGHEST bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_HIGHER bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_SUB bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_GD bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_LDM bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_DTPREL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_DTPREL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_TPREL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_TPREL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: d0840000 lld a0,0\(a0\)
.*: R_MIPS_TLS_GOTTPREL bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_CALL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_CALL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_CALL16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT_DISP bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT_PAGE bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT_OFST bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GOT16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_GPREL16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_HIGHEST bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_HIGHER bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_SUB bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_GD bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_LDM bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_DTPREL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_DTPREL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_TPREL_HI16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_TPREL_LO16 bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
.*: f0840000 scd a0,0\(a0\)
.*: R_MIPS_TLS_GOTTPREL bar
.*: R_MIPS_NONE \*ABS\*
.*: R_MIPS_NONE \*ABS\*
\.\.\.

View File

@ -1,3 +1,15 @@
# By default test ld/sd.
# If defined, test lld/scd instead.
.ifdef tlldscd
.macro ld ops:vararg
lld \ops
.endm
.macro sd ops:vararg
scd \ops
.endm
.endif
.ent foo
foo:
# Many of these do not make conceptual sense, but they should

View File

@ -1224,6 +1224,10 @@ if { [istarget mips*-*-vxworks*] } {
run_dump_test "elf-rel28-micromips-n32"
run_dump_test "elf-rel28-n64"
run_dump_test "elf-rel28-micromips-n64"
run_dump_test "elf-rel28-lldscd-n32"
run_dump_test "elf-rel28-lldscd-micromips-n32"
run_dump_test "elf-rel28-lldscd-n64"
run_dump_test "elf-rel28-lldscd-micromips-n64"
run_dump_test_arches "elf-rel29" [mips_arch_list_matching mips3]
}
run_list_test_arches "elf-rel30" "-32" [mips_arch_list_all]