Revert accidental commit
authorZack Weinberg <zackw@panix.com>
Tue, 7 Jun 2005 18:03:17 +0000 (18:03 +0000)
committerZack Weinberg <zackw@panix.com>
Tue, 7 Jun 2005 18:03:17 +0000 (18:03 +0000)
gas/config/tc-arm.c
gas/config/tc-arm.h
gas/testsuite/gas/arm/thumb.d
gas/testsuite/gas/arm/thumb.s
gas/testsuite/gas/arm/thumb32.d

index 5e7fb74..a3cc432 100644 (file)
@@ -1414,11 +1414,9 @@ find_real_start (symbolS * symbolP)
   if (name == NULL)
     abort ();
 
-  /* The compiler may generate BL instructions to local labels because
-     it needs to perform a branch to a far away location. These labels
-     do not have a corresponding ".real_start_of" label.  To accomodate
-     hand-written assembly, we don't insist on a leading ".L", just a
-     leading dot.  */
+  /* Names that start with '.' are local labels, not function entry points.
+     The compiler may generate BL instructions to these labels because it
+     needs to perform a branch to a far away location. */
   if (name[0] == '.')
     return symbolP;
 
@@ -10515,8 +10513,7 @@ md_apply_fix (fixS *    fixP,
 #define SEXT24(x)      ((((x) & 0xffffff) ^ (~ 0x7fffff)) + 0x800000)
 
 #ifdef OBJ_ELF
-      if (!fixP->fx_done)
-       value = fixP->fx_offset;
+      value = fixP->fx_offset;
 #endif
 
       /* We are going to store value (shifted right by two) in the
@@ -10586,8 +10583,7 @@ md_apply_fix (fixS *    fixP,
        newval = md_chars_to_number (buf, INSN_SIZE);
 
 #ifdef OBJ_ELF
-       if (!fixP->fx_done)
-         value = fixP->fx_offset;
+       value = fixP->fx_offset;
 #endif
        hbit   = (value >> 1) & 1;
        value  = (value >> 2) & 0x00ffffff;
@@ -10746,8 +10742,7 @@ md_apply_fix (fixS *    fixP,
        if (diff & 0x400000)
          diff |= ~0x3fffff;
 #ifdef OBJ_ELF
-       if (!fixP->fx_done)
-         value = fixP->fx_offset;
+       value = fixP->fx_offset;
 #endif
        value += diff;
 
@@ -11358,6 +11353,13 @@ arm_force_relocation (struct fix * fixp)
   if (fixp->fx_r_type == BFD_RELOC_RVA)
     return 1;
 #endif
+#ifdef OBJ_ELF
+  if (fixp->fx_r_type == BFD_RELOC_ARM_PCREL_BRANCH
+      || fixp->fx_r_type == BFD_RELOC_ARM_PCREL_BLX
+      || fixp->fx_r_type == BFD_RELOC_THUMB_PCREL_BLX
+      || fixp->fx_r_type == BFD_RELOC_THUMB_PCREL_BRANCH23)
+    return 1;
+#endif
 
   /* Resolve these relocations even if the symbol is extern or weak.  */
   if (fixp->fx_r_type == BFD_RELOC_ARM_IMMEDIATE
index de23b62..09a49ad 100644 (file)
@@ -127,9 +127,8 @@ struct fix;
 
 #define OPTIONAL_REGISTER_PREFIX '%'
 
-#define LOCAL_LABEL(name)  (name[0] == '.' && name[1] == 'L')
-#define LOCAL_LABELS_FB    1
-#define LOCAL_LABEL_PREFIX '.'
+#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L'))
+#define LOCAL_LABELS_FB   1
 
 /* This expression evaluates to true if the relocation is for a local
    object for which we still want to do the relocation at runtime.
@@ -169,6 +168,7 @@ struct fix;
 # define md_elf_section_change_hook()  arm_elf_change_section ()
 # define md_elf_section_type(str, len) arm_elf_section_type (str, len)
 # define GLOBAL_OFFSET_TABLE_NAME      "_GLOBAL_OFFSET_TABLE_"
+# define LOCAL_LABEL_PREFIX            '.'
 # define TC_SEGMENT_INFO_TYPE          struct arm_segment_info_type
 
 enum mstate
index 5c33adf..3561441 100644 (file)
@@ -119,41 +119,68 @@ Disassembly of section \.text:
 0+0de <[^>]+> 2f68             cmp     r7, #104
 0+0e0 <[^>]+> 46c0             nop                     \(mov r8, r8\)
 0+0e2 <[^>]+> 46c0             nop                     \(mov r8, r8\)
-0+0e4 <[^>]+> eafffffe         b       0+0e4 <[^>]+>
-0+0e8 <[^>]+> ea000011         b       0+134 <[^>]+>
-0+0ec <[^>]+> ebfffffc         bl      0+0e4 <[^>]+>
-0+0f0 <[^>]+> eb00000f         bl      0+134 <[^>]+>
+0+0e4 <[^>]+> ea000037         b       0+0e4 <[^>]+>
+                       e4: R_ARM_PC24  \.text
+0+0e8 <[^>]+> eafffffe         b       0+000 <[^>]+>
+                       e8: R_ARM_PC24  \.wombat
+0+0ec <[^>]+> eb000037         bl      0+0e4 <[^>]+>
+                       ec: R_ARM_PC24  \.text
+0+0f0 <[^>]+> ebfffffe         bl      0+000 <[^>]+>
+                       f0: R_ARM_PC24  \.wombat
 0+0f4 <[^>]+> e12fff10         bx      r0
 0+0f8 <[^>]+> ef123456         swi     0x00123456
 0+0fc <[^>]+> a004             add     r0, pc, #16     \(adr r0,0+110 <[^>]+>\)
 0+0fe <[^>]+> e77f             b.n     0+000 <[^>]+>
-0+100 <[^>]+> e018             b.n     0+134 <[^>]+>
-0+102 <[^>]+> f7ff ff7d        bl      0+000 <[^>]+>
-0+106 <[^>]+> f000 f815        bl      0+134 <[^>]+>
+0+100 <[^>]+> e7fe             b.n     0+000 <[^>]+>
+                       100: R_ARM_THM_JUMP11   \.wombat
+0+102 <[^>]+> f7ff fffe        bl      0+000 <[^>]+>
+                       102: R_ARM_THM_CALL     \.text
+0+106 <[^>]+> f7ff fffe        bl      0+000 <[^>]+>
+                       106: R_ARM_THM_CALL     \.wombat
 0+10a <[^>]+> 4700             bx      r0
 0+10c <[^>]+> dfff             swi     255
        \.\.\.
-0+110 <[^>]+> d010             beq.n   0+134 <[^>]+>
-0+112 <[^>]+> d10f             bne.n   0+134 <[^>]+>
-0+114 <[^>]+> d20e             bcs.n   0+134 <[^>]+>
-0+116 <[^>]+> d30d             bcc.n   0+134 <[^>]+>
-0+118 <[^>]+> d40c             bmi.n   0+134 <[^>]+>
-0+11a <[^>]+> d50b             bpl.n   0+134 <[^>]+>
-0+11c <[^>]+> d60a             bvs.n   0+134 <[^>]+>
-0+11e <[^>]+> d709             bvc.n   0+134 <[^>]+>
-0+120 <[^>]+> d808             bhi.n   0+134 <[^>]+>
-0+122 <[^>]+> d907             bls.n   0+134 <[^>]+>
-0+124 <[^>]+> da06             bge.n   0+134 <[^>]+>
-0+126 <[^>]+> dc05             bgt.n   0+134 <[^>]+>
-0+128 <[^>]+> db04             blt.n   0+134 <[^>]+>
-0+12a <[^>]+> dc03             bgt.n   0+134 <[^>]+>
-0+12c <[^>]+> dd02             ble.n   0+134 <[^>]+>
-0+12e <[^>]+> d801             bhi.n   0+134 <[^>]+>
-0+130 <[^>]+> d300             bcc.n   0+134 <[^>]+>
-0+132 <[^>]+> d3ff             bcc.n   0+134 <[^>]+>
-0+134 <[^>]+> f000 fc00        bl      0+938 <[^>]+>
+0+110 <[^>]+> d0fe             beq.n   0+000 <[^>]+>
+                       110: R_ARM_THM_JUMP8    \.wombat
+0+112 <[^>]+> d1fe             bne.n   0+000 <[^>]+>
+                       112: R_ARM_THM_JUMP8    \.wombat
+0+114 <[^>]+> d2fe             bcs.n   0+000 <[^>]+>
+                       114: R_ARM_THM_JUMP8    \.wombat
+0+116 <[^>]+> d3fe             bcc.n   0+000 <[^>]+>
+                       116: R_ARM_THM_JUMP8    \.wombat
+0+118 <[^>]+> d4fe             bmi.n   0+000 <[^>]+>
+                       118: R_ARM_THM_JUMP8    \.wombat
+0+11a <[^>]+> d5fe             bpl.n   0+000 <[^>]+>
+                       11a: R_ARM_THM_JUMP8    \.wombat
+0+11c <[^>]+> d6fe             bvs.n   0+000 <[^>]+>
+                       11c: R_ARM_THM_JUMP8    \.wombat
+0+11e <[^>]+> d7fe             bvc.n   0+000 <[^>]+>
+                       11e: R_ARM_THM_JUMP8    \.wombat
+0+120 <[^>]+> d8fe             bhi.n   0+000 <[^>]+>
+                       120: R_ARM_THM_JUMP8    \.wombat
+0+122 <[^>]+> d9fe             bls.n   0+000 <[^>]+>
+                       122: R_ARM_THM_JUMP8    \.wombat
+0+124 <[^>]+> dafe             bge.n   0+000 <[^>]+>
+                       124: R_ARM_THM_JUMP8    \.wombat
+0+126 <[^>]+> dcfe             bgt.n   0+000 <[^>]+>
+                       126: R_ARM_THM_JUMP8    \.wombat
+0+128 <[^>]+> dbfe             blt.n   0+000 <[^>]+>
+                       128: R_ARM_THM_JUMP8    \.wombat
+0+12a <[^>]+> dcfe             bgt.n   0+000 <[^>]+>
+                       12a: R_ARM_THM_JUMP8    \.wombat
+0+12c <[^>]+> ddfe             ble.n   0+000 <[^>]+>
+                       12c: R_ARM_THM_JUMP8    \.wombat
+0+12e <[^>]+> d8fe             bhi.n   0+000 <[^>]+>
+                       12e: R_ARM_THM_JUMP8    \.wombat
+0+130 <[^>]+> d3fe             bcc.n   0+000 <[^>]+>
+                       130: R_ARM_THM_JUMP8    \.wombat
+0+132 <[^>]+> d3fe             bcc.n   0+000 <[^>]+>
+                       132: R_ARM_THM_JUMP8    \.wombat
+0+134 <[^>]+> f000 fc9a        bl      0+938 <[^>]+>
+                       134: R_ARM_THM_CALL     \.text
        \.\.\.
-0+938 <[^>]+> f7ff fbfc        bl      0+134 <[^>]+>
+0+938 <[^>]+> f000 f898        bl      0+134 <[^>]+>
+                       938: R_ARM_THM_CALL     \.text
 0+93c <[^>]+> 4801             ldr     r0, \[pc, #4\]  \(0+944 <[^>]+>\)
 0+93e <[^>]+> 4801             ldr     r0, \[pc, #4\]  \(0+944 <[^>]+>\)
 0+940 <[^>]+> 4801             ldr     r0, \[pc, #4\]  \(0+948 <[^>]+>\)
index d1e4339..82c1ccd 100644 (file)
@@ -145,9 +145,9 @@ near:
        .arm
 .localbar:
        b       .localbar
-       b       .back
+       b       .wombat
        bl      .localbar
-       bl      .back
+       bl      .wombat
 
        bx      r0
        swi     0x123456
@@ -159,33 +159,33 @@ morethumb:
        adr     r0, forwardonly
 
        b       .foo
-       b       .back
+       b       .wombat
        bl      .foo
-       bl      .back
+       bl      .wombat
 
        bx      r0
 
        swi     0xff
        .align  0
 forwardonly:
-       beq     .back
-       bne     .back
-       bcs     .back
-       bcc     .back
-       bmi     .back
-       bpl     .back
-       bvs     .back
-       bvc     .back
-       bhi     .back
-       bls     .back
-       bge     .back
-       bgt     .back
-       blt     .back
-       bgt     .back
-       ble     .back
-       bhi     .back
-       blo     .back
-       bul     .back
+       beq     .wombat
+       bne     .wombat
+       bcs     .wombat
+       bcc     .wombat
+       bmi     .wombat
+       bpl     .wombat
+       bvs     .wombat
+       bvc     .wombat
+       bhi     .wombat
+       bls     .wombat
+       bge     .wombat
+       bgt     .wombat
+       blt     .wombat
+       bgt     .wombat
+       ble     .wombat
+       bhi     .wombat
+       blo     .wombat
+       bul     .wombat
 
 .back:
        bl      .local
index 6bd07ac..3d0fc6d 100644 (file)
@@ -295,10 +295,14 @@ Disassembly of section .text:
 0+3cc <[^>]+> f340 800c        ble\.w  0+3e8 <[^>]+>
 0+3d0 <[^>]+> f7ff bfae        b\.w    0+330 <[^>]+>
 0+3d4 <[^>]+> f000 b808        b\.w    0+3e8 <[^>]+>
-0+3d8 <[^>]+> f7ff ffaa        bl      0+330 <[^>]+>
-0+3dc <[^>]+> f000 f804        bl      0+3e8 <[^>]+>
-0+3e0 <[^>]+> f7ff efa6        blx     0+330 <[^>]+>
-0+3e4 <[^>]+> f000 e800        blx     0+3e8 <[^>]+>
+0+3d8 <[^>]+> f000 f996        bl      0+330 <[^>]+>
+                       3d8: R_ARM_THM_CALL     \.text
+0+3dc <[^>]+> f000 f9f2        bl      0+3e8 <[^>]+>
+                       3dc: R_ARM_THM_CALL     \.text
+0+3e0 <[^>]+> f000 e996        blx     0+330 <[^>]+>
+                       3e0: R_ARM_THM_XPC22    \.text
+0+3e4 <[^>]+> f000 e9f2        blx     0+3e8 <[^>]+>
+                       3e4: R_ARM_THM_XPC22    \.text
 0+3e8 <[^>]+> 4748             bx      r9
 0+3ea <[^>]+> 4780             blx     r0
 0+3ec <[^>]+> 47c8             blx     r9