From 97f50151221de0a023a8317559b1992a90f9cb8f Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Mon, 13 Jun 2016 16:52:42 +0100 Subject: [PATCH] MIPS/GAS: Don't convert RELA JALR relocations on R6 Revert an inadvertent change to make RELA JALR relocations section-relative on MIPS R6 targets made with commit 7361da2c952e ("Add support for MIPS R6."). There is no need to make this a special case and the comment introduced with the said change clearly indicates this was not intended. gas/ * config/tc-mips.c (mips_fix_adjustable): Don't convert RELA JALR relocations on R6. * testsuite/gas/mips/jal-svr4pic-local.d: New test. * testsuite/gas/mips/mips1@jal-svr4pic-local.d: New test. * testsuite/gas/mips/r3000@jal-svr4pic-local.d: New test. * testsuite/gas/mips/micromips@jal-svr4pic-local.d: New test. * testsuite/gas/mips/jal-svr4pic-local-n32.d: New test. * testsuite/gas/mips/micromips@jal-svr4pic-local-n32.d: New test. * testsuite/gas/mips/jal-svr4pic-local-n64.d: New test. * testsuite/gas/mips/micromips@jal-svr4pic-local-n64.d: New test. * testsuite/gas/mips/jal-svr4pic-local.s: New test source. * testsuite/gas/mips/jal-svr4pic-local-newabi.s: New test source. * testsuite/gas/mips/mips.exp: Run the new tests. --- gas/ChangeLog | 19 +++++++++++ gas/config/tc-mips.c | 12 ++++--- gas/testsuite/gas/mips/jal-svr4pic-local-n32.d | 33 +++++++++++++++++++ gas/testsuite/gas/mips/jal-svr4pic-local-n64.d | 37 ++++++++++++++++++++++ gas/testsuite/gas/mips/jal-svr4pic-local-newabi.s | 32 +++++++++++++++++++ gas/testsuite/gas/mips/jal-svr4pic-local.d | 31 ++++++++++++++++++ gas/testsuite/gas/mips/jal-svr4pic-local.s | 34 ++++++++++++++++++++ .../gas/mips/micromips@jal-svr4pic-local-n32.d | 33 +++++++++++++++++++ .../gas/mips/micromips@jal-svr4pic-local-n64.d | 37 ++++++++++++++++++++++ .../gas/mips/micromips@jal-svr4pic-local.d | 32 +++++++++++++++++++ gas/testsuite/gas/mips/mips.exp | 8 +++++ gas/testsuite/gas/mips/mips1@jal-svr4pic-local.d | 33 +++++++++++++++++++ gas/testsuite/gas/mips/r3000@jal-svr4pic-local.d | 6 ++++ 13 files changed, 342 insertions(+), 5 deletions(-) create mode 100644 gas/testsuite/gas/mips/jal-svr4pic-local-n32.d create mode 100644 gas/testsuite/gas/mips/jal-svr4pic-local-n64.d create mode 100644 gas/testsuite/gas/mips/jal-svr4pic-local-newabi.s create mode 100644 gas/testsuite/gas/mips/jal-svr4pic-local.d create mode 100644 gas/testsuite/gas/mips/jal-svr4pic-local.s create mode 100644 gas/testsuite/gas/mips/micromips@jal-svr4pic-local-n32.d create mode 100644 gas/testsuite/gas/mips/micromips@jal-svr4pic-local-n64.d create mode 100644 gas/testsuite/gas/mips/micromips@jal-svr4pic-local.d create mode 100644 gas/testsuite/gas/mips/mips1@jal-svr4pic-local.d create mode 100644 gas/testsuite/gas/mips/r3000@jal-svr4pic-local.d diff --git a/gas/ChangeLog b/gas/ChangeLog index fc4fd82..1218ae5 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,22 @@ +2016-06-13 Maciej W. Rozycki + + * config/tc-mips.c (mips_fix_adjustable): Don't convert RELA + JALR relocations on R6. + * testsuite/gas/mips/jal-svr4pic-local.d: New test. + * testsuite/gas/mips/mips1@jal-svr4pic-local.d: New test. + * testsuite/gas/mips/r3000@jal-svr4pic-local.d: New test. + * testsuite/gas/mips/micromips@jal-svr4pic-local.d: New test. + * testsuite/gas/mips/jal-svr4pic-local-n32.d: New test. + * testsuite/gas/mips/micromips@jal-svr4pic-local-n32.d: New + test. + * testsuite/gas/mips/jal-svr4pic-local-n64.d: New test. + * testsuite/gas/mips/micromips@jal-svr4pic-local-n64.d: New + test. + * testsuite/gas/mips/jal-svr4pic-local.s: New test source. + * testsuite/gas/mips/jal-svr4pic-local-newabi.s: New test + source. + * testsuite/gas/mips/mips.exp: Run the new tests. + 2016-06-13 Virendra Pathak * config/tc-aarch64.c (aarch64_cpus): Add Broadcom Vulcan. diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 2e8be58..4022829 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -17126,16 +17126,18 @@ mips_fix_adjustable (fixS *fixp) && (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_MERGE) != 0) return 0; - /* There is no place to store an in-place offset for JALR relocations. - Likewise an in-range offset of limited PC-relative relocations may + /* There is no place to store an in-place offset for JALR relocations. */ + if (jalr_reloc_p (fixp->fx_r_type) && HAVE_IN_PLACE_ADDENDS) + return 0; + + /* Likewise an in-range offset of limited PC-relative relocations may overflow the in-place relocatable field if recalculated against the start address of the symbol's containing section. Also, PC relative relocations for MIPS R6 need to be symbol rather than section relative to allow linker relaxations to be performed later on. */ - if ((HAVE_IN_PLACE_ADDENDS || ISA_IS_R6 (mips_opts.isa)) - && (limited_pcrel_reloc_p (fixp->fx_r_type) - || jalr_reloc_p (fixp->fx_r_type))) + if (limited_pcrel_reloc_p (fixp->fx_r_type) + && (HAVE_IN_PLACE_ADDENDS || ISA_IS_R6 (mips_opts.isa))) return 0; /* R_MIPS16_26 relocations against non-MIPS16 functions might resolve diff --git a/gas/testsuite/gas/mips/jal-svr4pic-local-n32.d b/gas/testsuite/gas/mips/jal-svr4pic-local-n32.d new file mode 100644 index 0000000..4c8b091 --- /dev/null +++ b/gas/testsuite/gas/mips/jal-svr4pic-local-n32.d @@ -0,0 +1,33 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS JALR relocation against local symbol (n32) +#as: -n32 +#source: jal-svr4pic-local-newabi.s + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> 27bdfff0 addiu sp,sp,-16 +[0-9a-f]+ <[^>]*> ffbc0000 sd gp,0\(sp\) +[0-9a-f]+ <[^>]*> 3c1c0000 lui gp,0x0 +[ ]*[0-9a-f]+: R_MIPS_GPREL16 foo +[ ]*[0-9a-f]+: R_MIPS_SUB \*ABS\* +[ ]*[0-9a-f]+: R_MIPS_HI16 \*ABS\* +[0-9a-f]+ <[^>]*> 279c0000 addiu gp,gp,0 +[ ]*[0-9a-f]+: R_MIPS_GPREL16 foo +[ ]*[0-9a-f]+: R_MIPS_SUB \*ABS\* +[ ]*[0-9a-f]+: R_MIPS_LO16 \*ABS\* +[0-9a-f]+ <[^>]*> 0399e021 addu gp,gp,t9 +[0-9a-f]+ <[^>]*> ffbf0008 sd ra,8\(sp\) +[0-9a-f]+ <[^>]*> 8f990000 lw t9,0\(gp\) +[ ]*[0-9a-f]+: R_MIPS_GOT_DISP \.text\+0x40 +[0-9a-f]+ <[^>]*> 0320f809 jalr t9 +[ ]*[0-9a-f]+: R_MIPS_JALR \.text\+0x40 +[0-9a-f]+ <[^>]*> 00000000 nop +[0-9a-f]+ <[^>]*> dfbf0008 ld ra,8\(sp\) +[0-9a-f]+ <[^>]*> dfbc0000 ld gp,0\(sp\) +[0-9a-f]+ <[^>]*> 03e0000[89] jr ra +[0-9a-f]+ <[^>]*> 27bd0010 addiu sp,sp,16 + \.\.\. +[0-9a-f]+ <[^>]*> 03e0000[89] jr ra +[0-9a-f]+ <[^>]*> 00000000 nop + \.\.\. diff --git a/gas/testsuite/gas/mips/jal-svr4pic-local-n64.d b/gas/testsuite/gas/mips/jal-svr4pic-local-n64.d new file mode 100644 index 0000000..05fae99 --- /dev/null +++ b/gas/testsuite/gas/mips/jal-svr4pic-local-n64.d @@ -0,0 +1,37 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS JALR relocation against local symbol (n64) +#as: -64 +#source: jal-svr4pic-local-newabi.s + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> 27bdfff0 addiu sp,sp,-16 +[0-9a-f]+ <[^>]*> ffbc0000 sd gp,0\(sp\) +[0-9a-f]+ <[^>]*> 3c1c0000 lui gp,0x0 +[ ]*[0-9a-f]+: R_MIPS_GPREL16 foo +[ ]*[0-9a-f]+: R_MIPS_SUB \*ABS\* +[ ]*[0-9a-f]+: R_MIPS_HI16 \*ABS\* +[0-9a-f]+ <[^>]*> 279c0000 addiu gp,gp,0 +[ ]*[0-9a-f]+: R_MIPS_GPREL16 foo +[ ]*[0-9a-f]+: R_MIPS_SUB \*ABS\* +[ ]*[0-9a-f]+: R_MIPS_LO16 \*ABS\* +[0-9a-f]+ <[^>]*> 0399e02d daddu gp,gp,t9 +[0-9a-f]+ <[^>]*> ffbf0008 sd ra,8\(sp\) +[0-9a-f]+ <[^>]*> df990000 ld t9,0\(gp\) +[ ]*[0-9a-f]+: R_MIPS_GOT_DISP \.text\+0x40 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x40 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x40 +[0-9a-f]+ <[^>]*> 0320f809 jalr t9 +[ ]*[0-9a-f]+: R_MIPS_JALR \.text\+0x40 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x40 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x40 +[0-9a-f]+ <[^>]*> 00000000 nop +[0-9a-f]+ <[^>]*> dfbf0008 ld ra,8\(sp\) +[0-9a-f]+ <[^>]*> dfbc0000 ld gp,0\(sp\) +[0-9a-f]+ <[^>]*> 03e0000[89] jr ra +[0-9a-f]+ <[^>]*> 27bd0010 addiu sp,sp,16 + \.\.\. +[0-9a-f]+ <[^>]*> 03e0000[89] jr ra +[0-9a-f]+ <[^>]*> 00000000 nop + \.\.\. diff --git a/gas/testsuite/gas/mips/jal-svr4pic-local-newabi.s b/gas/testsuite/gas/mips/jal-svr4pic-local-newabi.s new file mode 100644 index 0000000..8b82a85 --- /dev/null +++ b/gas/testsuite/gas/mips/jal-svr4pic-local-newabi.s @@ -0,0 +1,32 @@ + .abicalls + .text + + .align 4, 0 + .globl foo + .ent foo +foo: + .frame $sp, 16, $31 + .mask 0x90000000, -8 + .fmask 0x00000000, 0 + addiu $sp,$sp,-16 + .cpsetup $25, 0, foo + sd $31, 8($sp) + jal bar + ld $31,8($sp) + .cpreturn + addiu $sp,$sp,16 + jr $31 + .end foo + + .align 4, 0 + .ent bar +bar: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + jr $31 + .end bar + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/gas/testsuite/gas/mips/jal-svr4pic-local.d b/gas/testsuite/gas/mips/jal-svr4pic-local.d new file mode 100644 index 0000000..ce3eec8 --- /dev/null +++ b/gas/testsuite/gas/mips/jal-svr4pic-local.d @@ -0,0 +1,31 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS JALR relocation against local symbol +#as: -32 +#not-target: *-*-irix* + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> 3c1c0000 lui gp,0x0 +[ ]*[0-9a-f]+: R_MIPS_HI16 _gp_disp +[0-9a-f]+ <[^>]*> 279c0000 addiu gp,gp,0 +[ ]*[0-9a-f]+: R_MIPS_LO16 _gp_disp +[0-9a-f]+ <[^>]*> 0399e021 addu gp,gp,t9 +[0-9a-f]+ <[^>]*> 27bdffe0 addiu sp,sp,-32 +[0-9a-f]+ <[^>]*> afbf001c sw ra,28\(sp\) +[0-9a-f]+ <[^>]*> afbc0010 sw gp,16\(sp\) +[0-9a-f]+ <[^>]*> 8f990000 lw t9,0\(gp\) +[ ]*[0-9a-f]+: R_MIPS_GOT16 \.text +[0-9a-f]+ <[^>]*> 27390040 addiu t9,t9,64 +[ ]*[0-9a-f]+: R_MIPS_LO16 \.text +[0-9a-f]+ <[^>]*> 0320f809 jalr t9 +[ ]*[0-9a-f]+: R_MIPS_JALR bar +[0-9a-f]+ <[^>]*> 00000000 nop +[0-9a-f]+ <[^>]*> 8fbc0010 lw gp,16\(sp\) +[0-9a-f]+ <[^>]*> 8fbf001c lw ra,28\(sp\) +[0-9a-f]+ <[^>]*> 03e0000[89] jr ra +[0-9a-f]+ <[^>]*> 27bd0020 addiu sp,sp,32 + \.\.\. +[0-9a-f]+ <[^>]*> 03e0000[89] jr ra +[0-9a-f]+ <[^>]*> 00000000 nop + \.\.\. diff --git a/gas/testsuite/gas/mips/jal-svr4pic-local.s b/gas/testsuite/gas/mips/jal-svr4pic-local.s new file mode 100644 index 0000000..62ed5da --- /dev/null +++ b/gas/testsuite/gas/mips/jal-svr4pic-local.s @@ -0,0 +1,34 @@ + .abicalls + .text + + .align 4, 0 + .globl foo + .ent foo +foo: + .frame $sp, 32, $31 + .mask 0x80000000, -4 + .fmask 0x00000000, 0 + .set noreorder + .cpload $25 + .set reorder + addiu $sp, $sp, -32 + sw $31, 28($sp) + .cprestore 16 + jal bar + lw $31, 28($sp) + addiu $sp, $sp, 32 + jr $31 + .end foo + + .align 4, 0 + .ent bar +bar: + .frame $sp, 0, $31 + .mask 0x00000000, 0 + .fmask 0x00000000, 0 + jr $31 + .end bar + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/gas/testsuite/gas/mips/micromips@jal-svr4pic-local-n32.d b/gas/testsuite/gas/mips/micromips@jal-svr4pic-local-n32.d new file mode 100644 index 0000000..54001c2 --- /dev/null +++ b/gas/testsuite/gas/mips/micromips@jal-svr4pic-local-n32.d @@ -0,0 +1,33 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS JALR relocation against local symbol (n32) +#as: -n32 +#source: jal-svr4pic-local-newabi.s + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> 4ff9 addiu sp,sp,-16 +[0-9a-f]+ <[^>]*> db9d 0000 sd gp,0\(sp\) +[0-9a-f]+ <[^>]*> 41bc 0000 lui gp,0x0 +[ ]*[0-9a-f]+: R_MICROMIPS_GPREL16 foo +[ ]*[0-9a-f]+: R_MICROMIPS_SUB \*ABS\* +[ ]*[0-9a-f]+: R_MICROMIPS_HI16 \*ABS\* +[0-9a-f]+ <[^>]*> 339c 0000 addiu gp,gp,0 +[ ]*[0-9a-f]+: R_MICROMIPS_GPREL16 foo +[ ]*[0-9a-f]+: R_MICROMIPS_SUB \*ABS\* +[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \*ABS\* +[0-9a-f]+ <[^>]*> 033c e150 addu gp,gp,t9 +[0-9a-f]+ <[^>]*> dbfd 0008 sd ra,8\(sp\) +[0-9a-f]+ <[^>]*> ff3c 0000 lw t9,0\(gp\) +[ ]*[0-9a-f]+: R_MICROMIPS_GOT_DISP \.text\+0x31 +[0-9a-f]+ <[^>]*> 03f9 4f3c jalrs t9 +[ ]*[0-9a-f]+: R_MICROMIPS_JALR \.text\+0x31 +[0-9a-f]+ <[^>]*> 0c00 nop +[0-9a-f]+ <[^>]*> dffd 0008 ld ra,8\(sp\) +[0-9a-f]+ <[^>]*> df9d 0000 ld gp,0\(sp\) +[0-9a-f]+ <[^>]*> 459f jr ra +[0-9a-f]+ <[^>]*> 4c09 addiu sp,sp,16 +[0-9a-f]+ <[^>]*> 0000 0000 nop +[0-9a-f]+ <[^>]*> 459f jr ra +[0-9a-f]+ <[^>]*> 0c00 nop + \.\.\. diff --git a/gas/testsuite/gas/mips/micromips@jal-svr4pic-local-n64.d b/gas/testsuite/gas/mips/micromips@jal-svr4pic-local-n64.d new file mode 100644 index 0000000..5548b5c --- /dev/null +++ b/gas/testsuite/gas/mips/micromips@jal-svr4pic-local-n64.d @@ -0,0 +1,37 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS JALR relocation against local symbol (n64) +#as: -64 +#source: jal-svr4pic-local-newabi.s + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> 4ff9 addiu sp,sp,-16 +[0-9a-f]+ <[^>]*> db9d 0000 sd gp,0\(sp\) +[0-9a-f]+ <[^>]*> 41bc 0000 lui gp,0x0 +[ ]*[0-9a-f]+: R_MICROMIPS_GPREL16 foo +[ ]*[0-9a-f]+: R_MICROMIPS_SUB \*ABS\* +[ ]*[0-9a-f]+: R_MICROMIPS_HI16 \*ABS\* +[0-9a-f]+ <[^>]*> 339c 0000 addiu gp,gp,0 +[ ]*[0-9a-f]+: R_MICROMIPS_GPREL16 foo +[ ]*[0-9a-f]+: R_MICROMIPS_SUB \*ABS\* +[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \*ABS\* +[0-9a-f]+ <[^>]*> 5b3c e150 daddu gp,gp,t9 +[0-9a-f]+ <[^>]*> dbfd 0008 sd ra,8\(sp\) +[0-9a-f]+ <[^>]*> df3c 0000 ld t9,0\(gp\) +[ ]*[0-9a-f]+: R_MICROMIPS_GOT_DISP \.text\+0x31 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x31 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x31 +[0-9a-f]+ <[^>]*> 03f9 4f3c jalrs t9 +[ ]*[0-9a-f]+: R_MICROMIPS_JALR \.text\+0x31 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x31 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x31 +[0-9a-f]+ <[^>]*> 0c00 nop +[0-9a-f]+ <[^>]*> dffd 0008 ld ra,8\(sp\) +[0-9a-f]+ <[^>]*> df9d 0000 ld gp,0\(sp\) +[0-9a-f]+ <[^>]*> 459f jr ra +[0-9a-f]+ <[^>]*> 4c09 addiu sp,sp,16 +[0-9a-f]+ <[^>]*> 0000 0000 nop +[0-9a-f]+ <[^>]*> 459f jr ra +[0-9a-f]+ <[^>]*> 0c00 nop + \.\.\. diff --git a/gas/testsuite/gas/mips/micromips@jal-svr4pic-local.d b/gas/testsuite/gas/mips/micromips@jal-svr4pic-local.d new file mode 100644 index 0000000..6e48d44 --- /dev/null +++ b/gas/testsuite/gas/mips/micromips@jal-svr4pic-local.d @@ -0,0 +1,32 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS JALR relocation against local symbol +#as: -32 +#not-target: *-*-irix* +#source: jal-svr4pic-local.s + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> 41bc 0000 lui gp,0x0 +[ ]*[0-9a-f]+: R_MICROMIPS_HI16 _gp_disp +[0-9a-f]+ <[^>]*> 339c 0000 addiu gp,gp,0 +[ ]*[0-9a-f]+: R_MICROMIPS_LO16 _gp_disp +[0-9a-f]+ <[^>]*> 033c e150 addu gp,gp,t9 +[0-9a-f]+ <[^>]*> 4ff1 addiu sp,sp,-32 +[0-9a-f]+ <[^>]*> cbe7 sw ra,28\(sp\) +[0-9a-f]+ <[^>]*> fb9d 0010 sw gp,16\(sp\) +[0-9a-f]+ <[^>]*> ff3c 0000 lw t9,0\(gp\) +[ ]*[0-9a-f]+: R_MICROMIPS_GOT16 \.text +[0-9a-f]+ <[^>]*> 3339 0031 addiu t9,t9,49 +[ ]*[0-9a-f]+: R_MICROMIPS_LO16 \.text +[0-9a-f]+ <[^>]*> 03f9 4f3c jalrs t9 +[ ]*[0-9a-f]+: R_MICROMIPS_JALR bar +[0-9a-f]+ <[^>]*> 0c00 nop +[0-9a-f]+ <[^>]*> ff9d 0010 lw gp,16\(sp\) +[0-9a-f]+ <[^>]*> 4be7 lw ra,28\(sp\) +[0-9a-f]+ <[^>]*> 459f jr ra +[0-9a-f]+ <[^>]*> 4c11 addiu sp,sp,32 +[0-9a-f]+ <[^>]*> 0000 0000 nop +[0-9a-f]+ <[^>]*> 459f jr ra +[0-9a-f]+ <[^>]*> 0c00 nop + \.\.\. diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index f5ed674..4071434 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -655,6 +655,14 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test_arches "jal-svr4pic" [mips_arch_list_matching mips1] run_dump_test_arches "jal-svr4pic-noreorder" \ [mips_arch_list_matching mips1] + run_dump_test_arches "jal-svr4pic-local" \ + [mips_arch_list_matching mips1] + if $has_newabi { + run_dump_test_arches "jal-svr4pic-local-n32" \ + [mips_arch_list_matching mips3] + run_dump_test_arches "jal-svr4pic-local-n64" \ + [mips_arch_list_matching mips3] + } run_dump_test "jal-xgot" run_list_test_arches "jal-range" "-32" [mips_arch_list_matching mips1] if $has_newabi { run_dump_test "jal-newabi" } diff --git a/gas/testsuite/gas/mips/mips1@jal-svr4pic-local.d b/gas/testsuite/gas/mips/mips1@jal-svr4pic-local.d new file mode 100644 index 0000000..4054bfc --- /dev/null +++ b/gas/testsuite/gas/mips/mips1@jal-svr4pic-local.d @@ -0,0 +1,33 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS JALR relocation against local symbol +#as: -32 +#not-target: *-*-irix* +#source: jal-svr4pic-local.s + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> 3c1c0000 lui gp,0x0 +[ ]*[0-9a-f]+: R_MIPS_HI16 _gp_disp +[0-9a-f]+ <[^>]*> 279c0000 addiu gp,gp,0 +[ ]*[0-9a-f]+: R_MIPS_LO16 _gp_disp +[0-9a-f]+ <[^>]*> 0399e021 addu gp,gp,t9 +[0-9a-f]+ <[^>]*> 27bdffe0 addiu sp,sp,-32 +[0-9a-f]+ <[^>]*> afbf001c sw ra,28\(sp\) +[0-9a-f]+ <[^>]*> afbc0010 sw gp,16\(sp\) +[0-9a-f]+ <[^>]*> 8f990000 lw t9,0\(gp\) +[ ]*[0-9a-f]+: R_MIPS_GOT16 \.text +[0-9a-f]+ <[^>]*> 00000000 nop +[0-9a-f]+ <[^>]*> 27390040 addiu t9,t9,64 +[ ]*[0-9a-f]+: R_MIPS_LO16 \.text +[0-9a-f]+ <[^>]*> 0320f809 jalr t9 +[ ]*[0-9a-f]+: R_MIPS_JALR bar +[0-9a-f]+ <[^>]*> 00000000 nop +[0-9a-f]+ <[^>]*> 8fbc0010 lw gp,16\(sp\) +[0-9a-f]+ <[^>]*> 8fbf001c lw ra,28\(sp\) +[0-9a-f]+ <[^>]*> 27bd0020 addiu sp,sp,32 +[0-9a-f]+ <[^>]*> 03e0000[89] jr ra +[0-9a-f]+ <[^>]*> 00000000 nop +[0-9a-f]+ <[^>]*> 03e0000[89] jr ra +[0-9a-f]+ <[^>]*> 00000000 nop + \.\.\. diff --git a/gas/testsuite/gas/mips/r3000@jal-svr4pic-local.d b/gas/testsuite/gas/mips/r3000@jal-svr4pic-local.d new file mode 100644 index 0000000..a2bbf1b --- /dev/null +++ b/gas/testsuite/gas/mips/r3000@jal-svr4pic-local.d @@ -0,0 +1,6 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS JALR relocation against local symbol +#as: -32 +#not-target: *-*-irix* +#source: jal-svr4pic-local.s +#dump: mips1@jal-svr4pic-local.d -- 2.7.4