From 0174e383ca06a8115b179428d4f68a7bdd3e08f2 Mon Sep 17 00:00:00 2001 From: Kaz Kojima Date: Sat, 30 Nov 2002 14:09:12 +0000 Subject: * config/tc-sh.c (md_apply_fix3): Take account of fx_offset for BFD_RELOC_32_PLT_PCREL. * sh/gas/sh/pic.s: Add a test for ".long foo@PLT+.-2-label". * sh/gas/sh/pic.d: Add expected output. --- gas/ChangeLog | 5 +++++ gas/config/tc-sh.c | 2 +- gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/sh/pic.d | 3 +++ gas/testsuite/gas/sh/pic.s | 2 ++ 5 files changed, 16 insertions(+), 1 deletion(-) (limited to 'gas') diff --git a/gas/ChangeLog b/gas/ChangeLog index 31bc8e1..ef0ae72 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2002-11-30 Kaz Kojima + + * config/tc-sh.c (md_apply_fix3): Take account of fx_offset + for BFD_RELOC_32_PLT_PCREL. + 2002-11-30 Alan Modra * dwarf2dbg.c, write.c, config/obj-aout.c, config/obj-coff.c, diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c index 74b7593..e9b5d0d 100644 --- a/gas/config/tc-sh.c +++ b/gas/config/tc-sh.c @@ -3516,7 +3516,7 @@ md_apply_fix3 (fixP, valP, seg) /* Make the jump instruction point to the address of the operand. At runtime we merely add the offset to the actual PLT entry. */ * valP = 0xfffffffc; - val = 0; + val = fixP->fx_offset; if (fixP->fx_subsy) val -= S_GET_VALUE (fixP->fx_subsy); fixP->fx_addnumber = val; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 396a852..3a7f205 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2002-11-30 Kaz Kojima + + * sh/gas/sh/pic.s: Add a test for ".long foo@PLT+.-2-label". + * sh/gas/sh/pic.d: Add expected output. + 2002-11-29 Nick Clifton * gas/arm/arch5tej.s: Replace "nop"s with tests of breakpoint diff --git a/gas/testsuite/gas/sh/pic.d b/gas/testsuite/gas/sh/pic.d index f4ac775..9a2d0ce 100644 --- a/gas/testsuite/gas/sh/pic.d +++ b/gas/testsuite/gas/sh/pic.d @@ -38,3 +38,6 @@ Disassembly of section \.text: 0x00000040 00 00 \.word 0x0000 40: R_SH_PLT32 foo 0x00000042 00 14 mov\.b r1,@\(r0,r0\) +0x00000044 00 00 \.word 0x0000 + 44: R_SH_PLT32 foo +0x00000046 00 1e mov\.l @\(r0,r1\),r0 diff --git a/gas/testsuite/gas/sh/pic.s b/gas/testsuite/gas/sh/pic.s index 6e0c53e..bb9551c 100644 --- a/gas/testsuite/gas/sh/pic.s +++ b/gas/testsuite/gas/sh/pic.s @@ -39,3 +39,5 @@ .long foo@PLT + . - (.LPLTcall_old + 2) .Lfooplt_new: .long foo@PLT - (.LPLTcall_new + 2 - .) +.Lfooplt_old2: + .long foo@PLT + . - 2 - .LPLTcall_old -- cgit v1.1