From: Richard Sandiford Date: Thu, 1 Aug 2002 20:14:49 +0000 (+0000) Subject: [gas/] X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9860559818f2a3fe6306660aa37e3e9bbf3cfe0b;p=binutils-gdb.git [gas/] * config/tc-mips.c (tc_gen_reloc): Extend GP-relative addend handling to BFD_RELOC_MIPS16_GPREL. [gas/testsuite/] * gas/mips/elf-rel6.[sd]: New test. * gas/mips/mips.exp: Run it. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 3493ddbd962..aea784282e1 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2002-08-01 Richard Sandiford + + * config/tc-mips.c (tc_gen_reloc): Extend GP-relative addend + handling to BFD_RELOC_MIPS16_GPREL. + 2002-08-01 Nick Clifton * config/tc-arm.c (add_to_lit_pool): Ensure that offset to literal diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 0290587dd9d..c8eba550b96 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -12694,7 +12694,7 @@ tc_gen_reloc (section, fixp) stop md_apply_fix3 from subtracting twice in the first place since the fake addend is required for variant frags above. */ if (fixp->fx_addsy != NULL && OUTPUT_FLAVOR == bfd_target_elf_flavour - && code == BFD_RELOC_GPREL16 + && (code == BFD_RELOC_GPREL16 || code == BFD_RELOC_MIPS16_GPREL) && reloc->addend != 0 && mips_need_elf_addend_fixup (fixp)) reloc->addend += S_GET_VALUE (fixp->fx_addsy); diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 76a4462a104..8d211f7182b 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2002-08-01 Richard Sandiford + + * gas/mips/elf-rel6.[sd]: New test. + * gas/mips/mips.exp: Run it. + 2002-07-29 Chris Demetriou * gas/mips/elf_ase_mips16.d: New file to test ELF MIPS16 ASE marking. diff --git a/gas/testsuite/gas/mips/elf-rel6.d b/gas/testsuite/gas/mips/elf-rel6.d new file mode 100644 index 00000000000..5baadf9445c --- /dev/null +++ b/gas/testsuite/gas/mips/elf-rel6.d @@ -0,0 +1,10 @@ +#objdump: -dr --prefix-addresses +#name: MIPS ELF reloc 6 + +.*: +file format elf.*mips.* + +Disassembly of section \.text: +0+00 <.*> lb v0,0\(v1\) + 0: R_MIPS16_GPREL bar +0+04 <.*> lb v0,1\(v1\) + 4: R_MIPS16_GPREL bar diff --git a/gas/testsuite/gas/mips/elf-rel6.s b/gas/testsuite/gas/mips/elf-rel6.s new file mode 100644 index 00000000000..e0bc37ab69e --- /dev/null +++ b/gas/testsuite/gas/mips/elf-rel6.s @@ -0,0 +1,16 @@ + .sdata + .global foo + .globl bar +foo: .byte 1 + .byte 2 +bar: .byte 3 + .byte 4 + + .text + .set mips16 + .global f + .ent f +f: + lb $2,%gprel(bar)($3) + lb $2,%gprel(bar+1)($3) + .end f diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index 1b02f7123b8..a3b6911f34c 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -205,6 +205,7 @@ if { [istarget mips*-*-*] } then { run_dump_test "e32-rel4" } run_dump_test "elf-rel5" + run_dump_test "elf-rel6" run_dump_test "${tmips}${el}empic" run_dump_test "empic2" run_dump_test "empic3_e"