RIT_ARM_ThumbBranch32Bit relocations are not used and should never be generated.
authorOwen Anderson <resistor@mac.com>
Tue, 22 Mar 2011 22:52:54 +0000 (22:52 +0000)
committerOwen Anderson <resistor@mac.com>
Tue, 22 Mar 2011 22:52:54 +0000 (22:52 +0000)
This fixes kimwitu++, bullet, and tramp3dv4 with the ARM integrated assembler.
Fixes <rdar://problem/9165738>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128117 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MachObjectWriter.cpp

index bd294c27e8a7654109ab1bbc29fb3089db82bd9e..f2e91c26719929c8efe0d8b66268150f76d2bf56 100644 (file)
@@ -821,7 +821,7 @@ public:
     //  1 - :upper16: for movt instructions
     // high bit of r_length:
     //  0 - arm instructions
-    //  1 - thumb instructions   
+    //  1 - thumb instructions
     // the other half of the relocated expression is in the following pair
     // relocation entry in the the low 16 bits of r_address field.
     unsigned ThumbBit = 0;
@@ -949,15 +949,11 @@ public:
 
       // Handle Thumb branches.
     case ARM::fixup_arm_thumb_br:
+    case ARM::fixup_arm_thumb_bl:
       RelocType = unsigned(macho::RIT_ARM_ThumbBranch22Bit);
       Log2Size = llvm::Log2_32(2);
       return true;
 
-    case ARM::fixup_arm_thumb_bl:
-      RelocType = unsigned(macho::RIT_ARM_ThumbBranch32Bit);
-      Log2Size = llvm::Log2_32(4);
-      return true;
-
     case ARM::fixup_arm_thumb_blx:
       RelocType = unsigned(macho::RIT_ARM_ThumbBranch22Bit);
       // Report as 'long', even though that is not quite accurate.