From 42042f5ddcf51f647d3a2f5968ae9c48cc153a9b Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Thu, 1 Aug 2002 20:14:49 +0000 Subject: [PATCH] [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. --- gas/ChangeLog | 5 +++++ gas/config/tc-mips.c | 2 +- gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/mips/elf-rel6.d | 10 ++++++++++ gas/testsuite/gas/mips/elf-rel6.s | 16 ++++++++++++++++ gas/testsuite/gas/mips/mips.exp | 1 + 6 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 gas/testsuite/gas/mips/elf-rel6.d create mode 100644 gas/testsuite/gas/mips/elf-rel6.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 3493ddbd96..aea784282e 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 0290587dd9..c8eba550b9 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 76a4462a10..8d211f7182 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 0000000000..5baadf9445 --- /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 0000000000..e0bc37ab69 --- /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 1b02f7123b..a3b6911f34 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" -- 2.11.0