2011-05-31 Paul Brook <paul@codesourcery.com>
authorPaul Brook <paul@codesourcery.com>
Tue, 31 May 2011 14:04:13 +0000 (14:04 +0000)
committerPaul Brook <paul@codesourcery.com>
Tue, 31 May 2011 14:04:13 +0000 (14:04 +0000)
gas/
* config/tc-arm.c (do_t_branch): Avoid relaxing branches to constant
addresses.

gas/testsuite/
* arm/t2-branch-global.d: New test.
* arm/t2-branch-global.s: New test.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/t2-branch-global.d [new file with mode: 0644]
gas/testsuite/gas/arm/t2-branch-global.s [new file with mode: 0644]

index 456f14a6290b86fc80639fdab02c84ddd67af36d..28c5231b6c753f3c02a4a5f19e7eb1a11b778300 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-31  Paul Brook  <paul@codesourcery.com>
+
+       * config/tc-arm.c (do_t_branch): Avoid relaxing branches to constant
+       addresses.
+
 2011-05-31  Paul Brook  <paul@codesourcery.com>
        Nathan Sidwell  <nathan@codesourcery.com>
 
index 375ff82d3fc4674a8d6d8c932fc3c71090b0701e..964384c5b842984a8451fd3dc707b2e6c0e15093 100644 (file)
@@ -9845,7 +9845,9 @@ do_t_branch (void)
 
   if (unified_syntax
       && (inst.size_req == 4
-         || (inst.size_req != 2 && inst.operands[0].hasreloc)))
+         || (inst.size_req != 2
+             && (inst.operands[0].hasreloc
+                 || inst.reloc.exp.X_op == O_constant))))
     {
       inst.instruction = THUMB_OP32(opcode);
       if (cond == COND_ALWAYS)
index fad5dfbd7044fb09d2b3a4f0f8cc7995681f2eab..859bcbe7b1ecf1b677c26f20083539e7ae017f20 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-31  Paul Brook  <paul@codesourcery.com>
+
+       * arm/t2-branch-global.d: New test.
+       * arm/t2-branch-global.s: New test.
+
 2011-05-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
        * gas/s390/esa-g5.d: Fix fp register pair operands.
diff --git a/gas/testsuite/gas/arm/t2-branch-global.d b/gas/testsuite/gas/arm/t2-branch-global.d
new file mode 100644 (file)
index 0000000..5850d6b
--- /dev/null
@@ -0,0 +1,14 @@
+#name: Thumb-2 branch to constant address
+#This test is only valid on ELF based ports.
+#not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
+#objdump: -rd
+
+
+.*: +file format.*arm.*
+
+
+Disassembly of section .text:
+
+00000000 <foo>:
+   0:  f... b...       b\.w    .*
+                       0: R_ARM_THM_JUMP24     \*ABS\*.*
diff --git a/gas/testsuite/gas/arm/t2-branch-global.s b/gas/testsuite/gas/arm/t2-branch-global.s
new file mode 100644 (file)
index 0000000..223d924
--- /dev/null
@@ -0,0 +1,5 @@
+.thumb
+.arch armv7
+.syntax unified
+foo:
+       b   0x10 @ Assembler must not relax this