diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2010-11-10 13:36:31 +0000 |
---|---|---|
committer | Richard Sandiford <rdsandiford@googlemail.com> | 2010-11-10 13:36:31 +0000 |
commit | 12d6b0b7ba4c753349cc4a87986ef093959e3a77 (patch) | |
tree | 342831c0c08b2730e8a0f9d5c50828e8ffc9987f /gas | |
parent | fd3646071c278ca4c39ac6904a9a520c24cd25f9 (diff) | |
download | gdb-12d6b0b7ba4c753349cc4a87986ef093959e3a77.zip gdb-12d6b0b7ba4c753349cc4a87986ef093959e3a77.tar.gz gdb-12d6b0b7ba4c753349cc4a87986ef093959e3a77.tar.bz2 |
gas/
* config/tc-arm.c (do_t_branch): Treat (PLT) branches as wide.
gas/testsuite/
* gas/arm/plt-1.s, gas/arm/plt-1.d: New test.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 4 | ||||
-rw-r--r-- | gas/config/tc-arm.c | 6 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/plt-1.d | 38 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/plt-1.s | 27 |
5 files changed, 77 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 8433afd..9fee273 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2010-11-10 Richard Sandiford <richard.sandiford@linaro.org> + + * config/tc-arm.c (do_t_branch): Treat (PLT) branches as wide. + 2010-11-05 Nick Clifton <nickc@redhat.com> * config/tc-cr16.c (getprocreg_image): Fix typo MAX_PREG -> diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 8dd342b..9a87342 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -2213,7 +2213,7 @@ create_neon_reg_alias (char *newname, char *p) struct reg_entry mybasereg; struct neon_type ntype; struct neon_typed_alias typeinfo; - char *namebuf, *nameend; + char *namebuf, *nameend ATTRIBUTE_UNUSED; int namelen; typeinfo.defined = 0; @@ -9683,7 +9683,9 @@ do_t_branch (void) else opcode = inst.instruction; - if (unified_syntax && inst.size_req == 4) + if (unified_syntax + && (inst.size_req == 4 + || (inst.size_req != 2 && inst.operands[0].hasreloc))) { inst.instruction = THUMB_OP32(opcode); if (cond == COND_ALWAYS) diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 7c4bdc2..b6e6219 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2010-11-10 Richard Sandiford <richard.sandiford@linaro.org> + + * gas/arm/plt-1.s, gas/arm/plt-1.d: New test. + 2010-11-08 Thomas Schwinge <thomas@schwinge.name> * lib/gas-defs.exp (is_elf_format): Consider for *-*-gnu*, too. diff --git a/gas/testsuite/gas/arm/plt-1.d b/gas/testsuite/gas/arm/plt-1.d new file mode 100644 index 0000000..ba25f8d --- /dev/null +++ b/gas/testsuite/gas/arm/plt-1.d @@ -0,0 +1,38 @@ +# name: Thumb branch to PLT +# as: +# objdump: -dr +# This test is only valid on ELF based ports. +#not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix* + +.*: +file format .*arm.* + + +Disassembly of section \.text: + +0+000 <Strong1>: + 0: f7ff bffe b\.w 12 <Strong2> + 0: R_ARM_THM_JUMP24 Strong2 + 4: f7ff bffe b\.w 12 <Strong2> + 4: R_ARM_THM_JUMP24 Strong2 + 8: e7fe b\.n 12 <Strong2> + 8: R_ARM_THM_JUMP11 Strong2 + a: e7fe b\.n 12 <Strong2> + a: R_ARM_THM_JUMP11 Strong2 + c: f7ff bffe b\.w 12 <Strong2> + c: R_ARM_THM_JUMP24 Strong2 + 10: e7fe b\.n 12 <Strong2> + 10: R_ARM_THM_JUMP11 Strong2 + +0+012 <Strong2>: + 12: f7ff bffe b\.w 0 <Strong1> + 12: R_ARM_THM_JUMP24 Strong1 + 16: f7ff bffe b\.w 0 <Strong1> + 16: R_ARM_THM_JUMP24 Strong1 + 1a: e7fe b\.n 0 <Strong1> + 1a: R_ARM_THM_JUMP11 Strong1 + 1c: e7fe b\.n 0 <Strong1> + 1c: R_ARM_THM_JUMP11 Strong1 + 1e: f7ff bffe b\.w 0 <Strong1> + 1e: R_ARM_THM_JUMP24 Strong1 + 22: e7fe b\.n 0 <Strong1> + 22: R_ARM_THM_JUMP11 Strong1 diff --git a/gas/testsuite/gas/arm/plt-1.s b/gas/testsuite/gas/arm/plt-1.s new file mode 100644 index 0000000..262980a --- /dev/null +++ b/gas/testsuite/gas/arm/plt-1.s @@ -0,0 +1,27 @@ + .syntax unified + .text + .thumb + + .globl Strong1 + .thumb_func + .type Strong1, %function +Strong1: + b Strong2(PLT) + b.w Strong2(PLT) + b.n Strong2(PLT) + b Strong2 + b.w Strong2 + b.n Strong2 + .size Strong1,.-Strong1 + + .globl Strong2 + .thumb_func + .type Strong2, %function +Strong2: + b Strong1(PLT) + b.w Strong1(PLT) + b.n Strong1(PLT) + b Strong1 + b.w Strong1 + b.n Strong1 + .size Strong2, .-Strong2 |