gas/ChangeLog:
authorWill Newton <willnewton@sourceware.org>
Thu, 21 Mar 2013 18:39:35 +0000 (18:39 +0000)
committerWill Newton <willnewton@sourceware.org>
Thu, 21 Mar 2013 18:39:35 +0000 (18:39 +0000)
2013-03-21  Will Newton  <will.newton@linaro.org>

* config/tc-arm.c (encode_thumb32_addr_mode): Emit an error for all
pc-relative str instructions in Thumb mode.

gas/testsuite/ChangeLog:

2013-03-21  Will Newton  <will.newton@linaro.org>

* gas/arm/thumb2_relax.d: Strip out invalid pc-relative strs.
* gas/arm/thumb2_relax.s: Likewise.
* gas/arm/thumb32.d: Likewise.
* gas/arm/thumb32.l: Likewise.
* gas/arm/thumb32.s: Likewise.
* gas/arm/thumb2_str-bad.d: New file.
* gas/arm/thumb2_str-bad.l: Likewise.
* gas/arm/thumb2_str-bad.s: Likewise.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/thumb2_relax.d
gas/testsuite/gas/arm/thumb2_relax.s
gas/testsuite/gas/arm/thumb32.d
gas/testsuite/gas/arm/thumb32.l
gas/testsuite/gas/arm/thumb32.s

index c36941a..f60fd45 100644 (file)
@@ -1,3 +1,8 @@
+2013-03-21  Will Newton  <will.newton@linaro.org>
+
+       * config/tc-arm.c (encode_thumb32_addr_mode): Emit an error for all
+       pc-relative str instructions in Thumb mode.
+
 2013-03-21  Michael Schewe  <michael.schewe@gmx.net>
 
        * config/tc-h8300.c (do_a_fix_imm): Add relaxation of mov
index ee09e14..f883b86 100644 (file)
@@ -9471,8 +9471,8 @@ encode_thumb32_addr_mode (int i, bfd_boolean is_t, bfd_boolean is_d)
       constraint (is_pc && inst.operands[i].writeback, BAD_PC_WRITEBACK);
       constraint (is_t && inst.operands[i].writeback,
                  _("cannot use writeback with this instruction"));
-      constraint (is_pc && ((inst.instruction & THUMB2_LOAD_BIT) == 0)
-                 && !inst.reloc.pc_rel, BAD_PC_ADDRESSING);
+      constraint (is_pc && ((inst.instruction & THUMB2_LOAD_BIT) == 0),
+                 BAD_PC_ADDRESSING);
 
       if (is_d)
        {
index 622037e..29fe5cd 100644 (file)
@@ -1,3 +1,14 @@
+2013-03-21  Will Newton  <will.newton@linaro.org>
+
+       * gas/arm/thumb2_relax.d: Strip out invalid pc-relative strs.
+       * gas/arm/thumb2_relax.s: Likewise.
+       * gas/arm/thumb32.d: Likewise.
+       * gas/arm/thumb32.l: Likewise.
+       * gas/arm/thumb32.s: Likewise.
+       * gas/arm/thumb2_str-bad.d: New file.
+       * gas/arm/thumb2_str-bad.l: Likewise.
+       * gas/arm/thumb2_str-bad.s: Likewise.
+
 2013-03-20  Alexis Deruelle  <alexis.deruelle@gmail.com>
 
        PR gas/15082
index e99d55c..53483a7 100644 (file)
@@ -91,65 +91,14 @@ Disassembly of section .text:
 0+12e <[^>]+> f85f 1036        ldr.w   r1, \[pc, #-54\]        ; 0+0fa <[^>]+>
 0+132 <[^>]+> bf00             nop
 0+134 <[^>]+> bf00             nop
-0+136 <[^>]+> 7029             strb    r1, \[r5, #0\]
-0+138 <[^>]+> f885 1023        strb.w  r1, \[r5, #35\].*
-0+13c <[^>]+> 77e9             strb    r1, \[r5, #31\]
-0+13e <[^>]+> f885 101f        strb.w  r1, \[r5, #31\]
-0+142 <[^>]+> f805 1c1f        strb.w  r1, \[r5, #-31\]
-0+146 <[^>]+> f805 1b1f        strb.w  r1, \[r5\], #31
-0+14a <[^>]+> f805 1b1f        strb.w  r1, \[r5\], #31
-0+14e <[^>]+> f805 1f1f        strb.w  r1, \[r5, #31\]!
-0+152 <[^>]+> f805 1d1f        strb.w  r1, \[r5, #-31\]!
-0+156 <[^>]+> 5529             strb    r1, \[r5, r4\]
-0+158 <[^>]+> f809 100c        strb.w  r1, \[r9, ip\]
-0+15c <[^>]+> f88f 1010        strb.w  r1, \[pc, #16\] ; 0+170 <[^>]+>
-0+160 <[^>]+> f88f 100c        strb.w  r1, \[pc, #12\] ; 0+170 <[^>]+>
-0+164 <[^>]+> f88f 8008        strb.w  r8, \[pc, #8\]  ; 0+170 <[^>]+>
-0+168 <[^>]+> f88f 1006        strb.w  r1, \[pc, #6\]  ; 0+172 <[^>]+>
-0+16c <[^>]+> f80f 103a        strb.w  r1, \[pc, #-58\]        ; 0+136 <[^>]+>
-0+170 <[^>]+> bf00             nop
-0+172 <[^>]+> 8029             strh    r1, \[r5, #0\]
-0+174 <[^>]+> f8a5 1042        strh.w  r1, \[r5, #66\].*
-0+178 <[^>]+> 87e9             strh    r1, \[r5, #62\].*
-0+17a <[^>]+> f8a5 103e        strh.w  r1, \[r5, #62\].*
-0+17e <[^>]+> f825 1c3e        strh.w  r1, \[r5, #-62\].*
-0+182 <[^>]+> f825 1b3e        strh.w  r1, \[r5\], #62.*
-0+186 <[^>]+> f825 1b3e        strh.w  r1, \[r5\], #62.*
-0+18a <[^>]+> f825 1f3e        strh.w  r1, \[r5, #62\]!.*
-0+18e <[^>]+> f825 1d3e        strh.w  r1, \[r5, #-62\]!.*
-0+192 <[^>]+> 5329             strh    r1, \[r5, r4\]
-0+194 <[^>]+> f829 100c        strh.w  r1, \[r9, ip\]
-0+198 <[^>]+> f8af 1010        strh.w  r1, \[pc, #16\] ; 0+1ac <[^>]+>
-0+19c <[^>]+> f8af 100c        strh.w  r1, \[pc, #12\] ; 0+1ac <[^>]+>
-0+1a0 <[^>]+> f8af 8008        strh.w  r8, \[pc, #8\]  ; 0+1ac <[^>]+>
-0+1a4 <[^>]+> f8af 1006        strh.w  r1, \[pc, #6\]  ; 0+1ae <[^>]+>
-0+1a8 <[^>]+> f82f 103a        strh.w  r1, \[pc, #-58\]        ; 0+172 <[^>]+>
-0+1ac <[^>]+> bf00             nop
-0+1ae <[^>]+> 6029             str     r1, \[r5, #0\]
-0+1b0 <[^>]+> f8c5 1080        str.w   r1, \[r5, #128\].*
-0+1b4 <[^>]+> 67e9             str     r1, \[r5, #124\].*
-0+1b6 <[^>]+> f8c5 107c        str.w   r1, \[r5, #124\].*
-0+1ba <[^>]+> f845 1c7c        str.w   r1, \[r5, #-124\].*
-0+1be <[^>]+> f845 1b7c        str.w   r1, \[r5\], #124.*
-0+1c2 <[^>]+> f845 1b7c        str.w   r1, \[r5\], #124.*
-0+1c6 <[^>]+> f845 1f7c        str.w   r1, \[r5, #124\]!.*
-0+1ca <[^>]+> f845 1d7c        str.w   r1, \[r5, #-124\]!.*
-0+1ce <[^>]+> 5129             str     r1, \[r5, r4\]
-0+1d0 <[^>]+> f849 100c        str.w   r1, \[r9, ip\]
-0+1d4 <[^>]+> f8cf 1010        str.w   r1, \[pc, #16\] ; 0+1e8 <[^>]+>
-0+1d8 <[^>]+> f8cf 100c        str.w   r1, \[pc, #12\] ; 0+1e8 <[^>]+>
-0+1dc <[^>]+> f8cf 8008        str.w   r8, \[pc, #8\]  ; 0+1e8 <[^>]+>
-0+1e0 <[^>]+> f8cf 1006        str.w   r1, \[pc, #6\]  ; 0+1ea <[^>]+>
-0+1e4 <[^>]+> f84f 103a        str.w   r1, \[pc, #-58\]        ; 0+1ae <[^>]+>
-0+1e8 <[^>]+> bf00             nop
-0+1ea <[^>]+> a104             add     r1, pc, #16     ; \(adr r1, 0+1fc <[^>]+>\)
-0+1ec <[^>]+> f20f 010c        addw    r1, pc, #12
-0+1f0 <[^>]+> f20f 0808        addw    r8, pc, #8
-0+1f4 <[^>]+> f20f 0106        addw    r1, pc, #6
-0+1f8 <[^>]+> f2af 0112        subw    r1, pc, #18
-0+1fc <[^>]+> bf00             nop
-0+1fe <[^>]+> bf00             nop
-0+200 <[^>]+> f20f 0104        addw    r1, pc, #4
-0+204 <[^>]+> f20f 0102        addw    r1, pc, #2
-0+208 <[^>]+> bf00             nop
-0+20a <[^>]+> bf00             nop
+0+136 <[^>]+> a104             add     r1, pc, #16     ; \(adr r1, 0+148 <[^>]+>\)
+0+138 <[^>]+> f20f 010c        addw    r1, pc, #12
+0+13c <[^>]+> f20f 0808        addw    r8, pc, #8
+0+140 <[^>]+> f20f 0106        addw    r1, pc, #6
+0+144 <[^>]+> f2af 0112        subw    r1, pc, #18
+0+148 <[^>]+> bf00             nop
+0+14a <[^>]+> bf00             nop
+0+14c <[^>]+> f20f 0104        addw    r1, pc, #4
+0+150 <[^>]+> f20f 0102        addw    r1, pc, #2
+0+154 <[^>]+> bf00             nop
+0+156 <[^>]+> bf00             nop
index 428e6ff..60661e8 100644 (file)
@@ -30,17 +30,11 @@ thumb2_relax:
 .equ far_ldrh, 0x3e
 .equ far_ldrsh, 0x3e
 .equ far_ldr, 0x7c
-.equ far_strb, 0x1f
-.equ far_strh, 0x3e
-.equ far_str, 0x7c
        ls      ldrb
        ls      ldrsb
        ls      ldrh
        ls      ldrsh
        ls      ldr
-       ls      strb
-       ls      strh
-       ls      str
        .purgem ls
 1:
        adr     r1, 1f
index e446b9e..9fd5f24 100644 (file)
@@ -539,7 +539,6 @@ Disassembly of section .text:
 0[0-9a-f]+ <[^>]+> e9c5 2300   strd    r2, r3, \[r5\]
 0[0-9a-f]+ <[^>]+> e9c5 230c   strd    r2, r3, \[r5, #48\].*
 0[0-9a-f]+ <[^>]+> e945 230c   strd    r2, r3, \[r5, #-48\].*
-0[0-9a-f]+ <[^>]+> e94f 2308   strd    r2, r3, \[pc, #-32\]    ; 0+5f0 <here>
 0[0-9a-f]+ <[^>]+> f815 1e00   ldrbt   r1, \[r5\]
 0[0-9a-f]+ <[^>]+> f815 1e30   ldrbt   r1, \[r5, #48\].*
 0[0-9a-f]+ <[^>]+> f915 1e00   ldrsbt  r1, \[r5\]
@@ -948,26 +947,26 @@ Disassembly of section .text:
 0[0-9a-f]+ <[^>]+> fa52 f183   uxtab   r1, r2, r3
 0[0-9a-f]+ <[^>]+> fa32 f183   uxtab16 r1, r2, r3
 0[0-9a-f]+ <[^>]+> fa12 f183   uxtah   r1, r2, r3
-0[0-9a-f]+ <[^>]+> f89f 12aa   ldrb\.w r1, \[pc, #682\]        ; 0+e8a <[^>]+>
-0[0-9a-f]+ <[^>]+> f89f 1155   ldrb\.w r1, \[pc, #341\]        ; 0+d39 <[^>]+>
-0[0-9a-f]+ <[^>]+> f81f 12aa   ldrb\.w r1, \[pc, #-682\]       ; 0+93e <[^>]+>
-0[0-9a-f]+ <[^>]+> f81f 1155   ldrb\.w r1, \[pc, #-341\]       ; 0+a97 <[^>]+>
-0[0-9a-f]+ <[^>]+> f99f 12aa   ldrsb\.w        r1, \[pc, #682\]        ; 0+e9a <[^>]+>
-0[0-9a-f]+ <[^>]+> f99f 1155   ldrsb\.w        r1, \[pc, #341\]        ; 0+d49 <[^>]+>
-0[0-9a-f]+ <[^>]+> f91f 12aa   ldrsb\.w        r1, \[pc, #-682\]       ; 0+94e <[^>]+>
-0[0-9a-f]+ <[^>]+> f91f 1155   ldrsb\.w        r1, \[pc, #-341\]       ; 0+aa7 <[^>]+>
-0[0-9a-f]+ <[^>]+> f8bf 12aa   ldrh\.w r1, \[pc, #682\]        ; 0+eaa <[^>]+>
-0[0-9a-f]+ <[^>]+> f8bf 1155   ldrh\.w r1, \[pc, #341\]        ; 0+d59 <[^>]+>
-0[0-9a-f]+ <[^>]+> f83f 12aa   ldrh\.w r1, \[pc, #-682\]       ; 0+95e <[^>]+>
-0[0-9a-f]+ <[^>]+> f83f 1155   ldrh\.w r1, \[pc, #-341\]       ; 0+ab7 <[^>]+>
-0[0-9a-f]+ <[^>]+> f9bf 12aa   ldrsh\.w        r1, \[pc, #682\]        ; 0+eba <[^>]+>
-0[0-9a-f]+ <[^>]+> f9bf 1155   ldrsh\.w        r1, \[pc, #341\]        ; 0+d69 <[^>]+>
-0[0-9a-f]+ <[^>]+> f93f 12aa   ldrsh\.w        r1, \[pc, #-682\]       ; 0+96e <[^>]+>
-0[0-9a-f]+ <[^>]+> f93f 1155   ldrsh\.w        r1, \[pc, #-341\]       ; 0+ac7 <[^>]+>
-0[0-9a-f]+ <[^>]+> f8df 12aa   ldr\.w  r1, \[pc, #682\]        ; 0+eca <[^>]+>
-0[0-9a-f]+ <[^>]+> f8df 1155   ldr\.w  r1, \[pc, #341\]        ; 0+d79 <[^>]+>
-0[0-9a-f]+ <[^>]+> f85f 12aa   ldr\.w  r1, \[pc, #-682\]       ; 0+97e <[^>]+>
-0[0-9a-f]+ <[^>]+> f85f 1155   ldr\.w  r1, \[pc, #-341\]       ; 0+ad7 <[^>]+>
+0[0-9a-f]+ <[^>]+> f89f 12aa   ldrb\.w r1, \[pc, #682\]        ; 0+e86 <[^>]+>
+0[0-9a-f]+ <[^>]+> f89f 1155   ldrb\.w r1, \[pc, #341\]        ; 0+d35 <[^>]+>
+0[0-9a-f]+ <[^>]+> f81f 12aa   ldrb\.w r1, \[pc, #-682\]       ; 0+93a <[^>]+>
+0[0-9a-f]+ <[^>]+> f81f 1155   ldrb\.w r1, \[pc, #-341\]       ; 0+a93 <[^>]+>
+0[0-9a-f]+ <[^>]+> f99f 12aa   ldrsb\.w        r1, \[pc, #682\]        ; 0+e96 <[^>]+>
+0[0-9a-f]+ <[^>]+> f99f 1155   ldrsb\.w        r1, \[pc, #341\]        ; 0+d45 <[^>]+>
+0[0-9a-f]+ <[^>]+> f91f 12aa   ldrsb\.w        r1, \[pc, #-682\]       ; 0+94a <[^>]+>
+0[0-9a-f]+ <[^>]+> f91f 1155   ldrsb\.w        r1, \[pc, #-341\]       ; 0+aa3 <[^>]+>
+0[0-9a-f]+ <[^>]+> f8bf 12aa   ldrh\.w r1, \[pc, #682\]        ; 0+ea6 <[^>]+>
+0[0-9a-f]+ <[^>]+> f8bf 1155   ldrh\.w r1, \[pc, #341\]        ; 0+d55 <[^>]+>
+0[0-9a-f]+ <[^>]+> f83f 12aa   ldrh\.w r1, \[pc, #-682\]       ; 0+95a <[^>]+>
+0[0-9a-f]+ <[^>]+> f83f 1155   ldrh\.w r1, \[pc, #-341\]       ; 0+ab3 <[^>]+>
+0[0-9a-f]+ <[^>]+> f9bf 12aa   ldrsh\.w        r1, \[pc, #682\]        ; 0+eb6 <[^>]+>
+0[0-9a-f]+ <[^>]+> f9bf 1155   ldrsh\.w        r1, \[pc, #341\]        ; 0+d65 <[^>]+>
+0[0-9a-f]+ <[^>]+> f93f 12aa   ldrsh\.w        r1, \[pc, #-682\]       ; 0+96a <[^>]+>
+0[0-9a-f]+ <[^>]+> f93f 1155   ldrsh\.w        r1, \[pc, #-341\]       ; 0+ac3 <[^>]+>
+0[0-9a-f]+ <[^>]+> f8df 12aa   ldr\.w  r1, \[pc, #682\]        ; 0+ec6 <[^>]+>
+0[0-9a-f]+ <[^>]+> f8df 1155   ldr\.w  r1, \[pc, #341\]        ; 0+d75 <[^>]+>
+0[0-9a-f]+ <[^>]+> f85f 12aa   ldr\.w  r1, \[pc, #-682\]       ; 0+97a <[^>]+>
+0[0-9a-f]+ <[^>]+> f85f 1155   ldr\.w  r1, \[pc, #-341\]       ; 0+ad3 <[^>]+>
 0[0-9a-f]+ <[^>]+> f200 0900   addw    r9, r0, #0
 0[0-9a-f]+ <[^>]+> f60f 76ff   addw    r6, pc, #4095   ; 0xfff
 0[0-9a-f]+ <[^>]+> f6a9 2685   subw    r6, r9, #2693   ; 0xa85
index a439484..d2860e3 100644 (file)
@@ -1,4 +1,8 @@
 [^;]*: Assembler messages:
+[^;]*:450: Warning: s suffix on comparison instruction is deprecated
+[^;]*:450: Warning: s suffix on comparison instruction is deprecated
+[^;]*:450: Warning: s suffix on comparison instruction is deprecated
+[^;]*:450: Warning: s suffix on comparison instruction is deprecated
 [^;]*:451: Warning: s suffix on comparison instruction is deprecated
 [^;]*:451: Warning: s suffix on comparison instruction is deprecated
 [^;]*:451: Warning: s suffix on comparison instruction is deprecated
@@ -11,7 +15,3 @@
 [^;]*:453: Warning: s suffix on comparison instruction is deprecated
 [^;]*:453: Warning: s suffix on comparison instruction is deprecated
 [^;]*:453: Warning: s suffix on comparison instruction is deprecated
-[^;]*:454: Warning: s suffix on comparison instruction is deprecated
-[^;]*:454: Warning: s suffix on comparison instruction is deprecated
-[^;]*:454: Warning: s suffix on comparison instruction is deprecated
-[^;]*:454: Warning: s suffix on comparison instruction is deprecated
index baae71f..d6dbdd6 100644 (file)
@@ -380,7 +380,6 @@ here:
        strd    r2, r3, [r5]
        strd    r2, [r5, #0x30]
        strd    r2, [r5, #-0x30]
-       strd    r2, r3, here
        
        ldrbt   r1, [r5]
        ldrbt   r1, [r5, #0x30]