From c160f130d2562e4eefd0a3e3ddaa01dc51381b29 Mon Sep 17 00:00:00 2001 From: Paul Brook Date: Thu, 21 Jul 2005 13:11:28 +0000 Subject: [PATCH] 2005-07-21 Paul Brook gas/ * config/tc-arm.c (encode_thumb32_addr_mode): Don't set inst.reloc.pc_rel. gas/testsuite/ * gas/arm/thumb32.s: Add tests for [pc, #imm] addressing modes. * gas/arm/thumb32.d: Ditto. --- gas/ChangeLog | 5 +++++ gas/config/tc-arm.c | 1 - gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/arm/thumb32.d | 20 ++++++++++++++++++++ gas/testsuite/gas/arm/thumb32.s | 12 ++++++++++++ 5 files changed, 42 insertions(+), 1 deletion(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index a81af53986..453ae6fdc6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2005-07-21 Paul Brook + + * config/tc-arm.c (encode_thumb32_addr_mode): Don't set + inst.reloc.pc_rel. + 2005-07-20 Tavis Ormandy * messages.c: Use vsnprintf instead of vsprintf. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index dfdf7b554f..0c9911f767 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -5667,7 +5667,6 @@ encode_thumb32_addr_mode (int i, bfd_boolean is_t, bfd_boolean is_d) inst.instruction |= 0x00000100; } inst.reloc.type = BFD_RELOC_ARM_T32_OFFSET_IMM; - inst.reloc.pc_rel = is_pc; } else if (inst.operands[i].postind) { diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index c8176e468d..a4f02c793a 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-07-21 Paul Brook + + * gas/arm/thumb32.s: Add tests for [pc, #imm] addressing modes. + * gas/arm/thumb32.d: Ditto. + 2005-07-20 Kazuhiro Inaoka * gas/m32r/rel32.exp: New file. diff --git a/gas/testsuite/gas/arm/thumb32.d b/gas/testsuite/gas/arm/thumb32.d index eec016289f..a74253e0d7 100644 --- a/gas/testsuite/gas/arm/thumb32.d +++ b/gas/testsuite/gas/arm/thumb32.d @@ -991,3 +991,23 @@ Disassembly of section .text: 0+ca4 <[^>]+> fa52 f183 uxtab r1, r2, r3 0+ca8 <[^>]+> fa32 f183 uxtab16 r1, r2, r3 0+cac <[^>]+> fa12 f183 uxtah r1, r2, r3 +0+cb0 <[^>]+> f89f 12aa ldrb\.w r1, \[pc, #682\] ; 0+f5e <[^>]+> +0+cb4 <[^>]+> f89f 1155 ldrb\.w r1, \[pc, #341\] ; 0+e0d <[^>]+> +0+cb8 <[^>]+> f81f 12aa ldrb\.w r1, \[pc, #-682\] ; 0+a12 <[^>]+> +0+cbc <[^>]+> f81f 1155 ldrb\.w r1, \[pc, #-341\] ; 0+b6b <[^>]+> +0+cc0 <[^>]+> f99f 12aa ldrsb\.w r1, \[pc, #682\] ; 0+f6e <[^>]+> +0+cc4 <[^>]+> f99f 1155 ldrsb\.w r1, \[pc, #341\] ; 0+e1d <[^>]+> +0+cc8 <[^>]+> f91f 12aa ldrsb\.w r1, \[pc, #-682\] ; 0+a22 <[^>]+> +0+ccc <[^>]+> f91f 1155 ldrsb\.w r1, \[pc, #-341\] ; 0+b7b <[^>]+> +0+cd0 <[^>]+> f8bf 12aa ldrh\.w r1, \[pc, #682\] ; 0+f7e <[^>]+> +0+cd4 <[^>]+> f8bf 1155 ldrh\.w r1, \[pc, #341\] ; 0+e2d <[^>]+> +0+cd8 <[^>]+> f83f 12aa ldrh\.w r1, \[pc, #-682\] ; 0+a32 <[^>]+> +0+cdc <[^>]+> f83f 1155 ldrh\.w r1, \[pc, #-341\] ; 0+b8b <[^>]+> +0+ce0 <[^>]+> f9bf 12aa ldrsh\.w r1, \[pc, #682\] ; 0+f8e <[^>]+> +0+ce4 <[^>]+> f9bf 1155 ldrsh\.w r1, \[pc, #341\] ; 0+e3d <[^>]+> +0+ce8 <[^>]+> f93f 12aa ldrsh\.w r1, \[pc, #-682\] ; 0+a42 <[^>]+> +0+cec <[^>]+> f93f 1155 ldrsh\.w r1, \[pc, #-341\] ; 0+b9b <[^>]+> +0+cf0 <[^>]+> f8df 12aa ldr\.w r1, \[pc, #682\] ; 0+f9e <[^>]+> +0+cf4 <[^>]+> f8df 1155 ldr\.w r1, \[pc, #341\] ; 0+e4d <[^>]+> +0+cf8 <[^>]+> f85f 12aa ldr\.w r1, \[pc, #-682\] ; 0+a52 <[^>]+> +0+cfc <[^>]+> f85f 1155 ldr\.w r1, \[pc, #-341\] ; 0+bab <[^>]+> diff --git a/gas/testsuite/gas/arm/thumb32.s b/gas/testsuite/gas/arm/thumb32.s index 7db255aab1..4baf4ff24c 100644 --- a/gas/testsuite/gas/arm/thumb32.s +++ b/gas/testsuite/gas/arm/thumb32.s @@ -733,3 +733,15 @@ xta: uxtab r1, r2, r3 uxtab16 r1, r2, r3 uxtah r1, r2, r3 + + .macro ldpcimm op + \op r1, [pc, #0x2aa] + \op r1, [pc, #0x155] + \op r1, [pc, #-0x2aa] + \op r1, [pc, #-0x155] + .endm + ldpcimm ldrb + ldpcimm ldrsb + ldpcimm ldrh + ldpcimm ldrsh + ldpcimm ldr