diff options
author | Julian Brown <julian@codesourcery.com> | 2011-10-18 14:41:55 +0000 |
---|---|---|
committer | Julian Brown <julian@codesourcery.com> | 2011-10-18 14:41:55 +0000 |
commit | a415b1cd634be934d9d8b0ab73b942fc3af61db9 (patch) | |
tree | 28a268b903b0d50f37d78bfb06f048006a5f216a /gas | |
parent | 4af315526a36b17da6e2f2661d3c21efe935b5fb (diff) | |
download | gdb-a415b1cd634be934d9d8b0ab73b942fc3af61db9.zip gdb-a415b1cd634be934d9d8b0ab73b942fc3af61db9.tar.gz gdb-a415b1cd634be934d9d8b0ab73b942fc3af61db9.tar.bz2 |
Jie Zhang <jie@codesourcery.com>
Julian Brown <julian@codesourcery.com>
gas/
* config/tc-arm.c (parse_shifter_operand): Fix handling
of explicit rotation.
(encode_arm_shifter_operand): Likewise.
gas/testsuite/
* gas/arm/adrl.d: Adjust.
* gas/arm/immed2.d: New test.
* gas/arm/immed2.s: New test.
ld/testsuite/
* ld-arm/cortex-a8-fix-b-plt.d: Adjust.
* ld-arm/cortex-a8-fix-bcc-plt.d: Adjust.
* ld-arm/cortex-a8-fix-bl-plt.d: Adjust.
* ld-arm/cortex-a8-fix-bl-rel-plt.d: Adjust.
* ld-arm/cortex-a8-fix-blx-plt.d: Adjust.
* ld-arm/ifunc-1.dd: Adjust.
* ld-arm/ifunc-2.dd: Adjust.
* ld-arm/ifunc-3.dd: Adjust.
* ld-arm/ifunc-4.dd: Adjust.
* ld-arm/ifunc-5.dd: Adjust.
* ld-arm/ifunc-6.dd: Adjust.
* ld-arm/ifunc-7.dd: Adjust.
* ld-arm/ifunc-8.dd: Adjust.
* ld-arm/ifunc-9.dd: Adjust.
* ld-arm/ifunc-10.dd: Adjust.
* ld-arm/ifunc-14.dd: Adjust.
* ld-arm/ifunc-15.dd: Adjust.
* ld-arm/ifunc-16.dd: Adjust.
opcodes/
* arm-dis.c (print_insn_arm): Explicitly specify rotation
if needed.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 7 | ||||
-rw-r--r-- | gas/config/tc-arm.c | 13 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/adrl.d | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/immed2.d | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/immed2.s | 4 |
6 files changed, 37 insertions, 8 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 4c43c77..1dbb3dc 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2011-10-18 Jie Zhang <jie@codesourcery.com> + Julian Brown <julian@codesourcery.com> + + * config/tc-arm.c (parse_shifter_operand): Fix handling of explicit + rotation. + (encode_arm_shifter_operand): Likewise. + 2011-10-13 James Greenhalgh <james.greenhalgh@arm.com> * config/tc-arm.c (check_ldr_r15_aligned): New. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 8189c51..3871164 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -4884,10 +4884,9 @@ parse_shifter_operand (char **str, int i) return FAIL; } - /* Convert to decoded value. md_apply_fix will put it back. */ - inst.reloc.exp.X_add_number - = (((inst.reloc.exp.X_add_number << (32 - value)) - | (inst.reloc.exp.X_add_number >> value)) & 0xffffffff); + /* Encode as specified. */ + inst.operands[i].imm = inst.reloc.exp.X_add_number | value << 7; + return SUCCESS; } inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE; @@ -7018,7 +7017,11 @@ encode_arm_shifter_operand (int i) encode_arm_shift (i); } else - inst.instruction |= INST_IMMEDIATE; + { + inst.instruction |= INST_IMMEDIATE; + if (inst.reloc.type != BFD_RELOC_ARM_IMMEDIATE) + inst.instruction |= inst.operands[i].imm; + } } /* Subroutine of encode_arm_addr_mode_2 and encode_arm_addr_mode_3. */ diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index a162952..5de442f 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2011-10-18 Jie Zhang <jie@codesourcery.com> + Julian Brown <julian@codesourcery.com> + + * gas/arm/adrl.d: Adjust. + * gas/arm/immed2.d: New test. + * gas/arm/immed2.s: New test. + 2011-10-13 James Greenhalgh <james.greenhalgh@arm.com> * gas/arm/ldr-bad.s: New testcase. diff --git a/gas/testsuite/gas/arm/adrl.d b/gas/testsuite/gas/arm/adrl.d index 3261311..6276e8d 100644 --- a/gas/testsuite/gas/arm/adrl.d +++ b/gas/testsuite/gas/arm/adrl.d @@ -8,9 +8,9 @@ Disassembly of section .text: ... 0+2000 <.*> e24f0008 sub r0, pc, #8 -0+2004 <.*> e2400c20 sub r0, r0, #8192 ; 0x2000 +0+2004 <.*> e2400c20 sub r0, r0, #32, 24 ; 0x2000 0+2008 <.*> e28f0020 add r0, pc, #32 -0+200c <.*> e2800c20 add r0, r0, #8192 ; 0x2000 +0+200c <.*> e2800c20 add r0, r0, #32, 24 ; 0x2000 0+2010 <.*> e24f0018 sub r0, pc, #24 0+2014 <.*> e1a00000 nop ; \(mov r0, r0\) 0+2018 <.*> e28f0008 add r0, pc, #8 @@ -18,7 +18,7 @@ Disassembly of section .text: 0+2020 <.*> 028f0000 addeq r0, pc, #0 0+2024 <.*> e1a00000 nop ; \(mov r0, r0\) 0+2028 <.*> e24f0030 sub r0, pc, #48 ; 0x30 -0+202c <.*> e2400c20 sub r0, r0, #8192 ; 0x2000 +0+202c <.*> e2400c20 sub r0, r0, #32, 24 ; 0x2000 0+2030 <.*> e28f0c21 add r0, pc, #8448 ; 0x2100 0+2034 <.*> e1a00000 nop ; \(mov r0, r0\) ... diff --git a/gas/testsuite/gas/arm/immed2.d b/gas/testsuite/gas/arm/immed2.d new file mode 100644 index 0000000..49fa895 --- /dev/null +++ b/gas/testsuite/gas/arm/immed2.d @@ -0,0 +1,8 @@ +# name: modified immediate constants +# as: +# objdump: -dr --prefix-addresses --show-raw-insn + +.*: +file format .*arm.* + +Disassembly of section .text: +0+0000 <[^>]+> b351029c ? cmplt r1, #156, 4 ; 0xc0000009 diff --git a/gas/testsuite/gas/arm/immed2.s b/gas/testsuite/gas/arm/immed2.s new file mode 100644 index 0000000..0365236 --- /dev/null +++ b/gas/testsuite/gas/arm/immed2.s @@ -0,0 +1,4 @@ +@ Tests for modified immediate constants with specified rotate + .text +bar: + cmplt r1, #0x9c, 4 |