llvm.org GIT mirror llvm / 884efc1
[ARM] Incorrect relocation type for Thumb2 B<cond>.w The Thumb2 conditional branch B<cond>.W has a different encoding (T3) to the unconditional branch B.W (T4) as it needs to record <cond>. As the encoding is different the B<cond>.W is given a different relocation type. ELF for the ARM Architecture 4.6.1.6 (Table-13) states that R_ARM_THM_JUMP19 should be used for B<cond>.W. At present the MC layer is using the R_ARM_THM_JUMP24 from B.W. This change makes B<cond>.W use R_ARM_THM_JUMP19 and alters the existing test that checks for R_ARM_THM_JUMP24 to expect R_ARM_THM_JUMP19. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271997 91177308-0d34-0410-b5e6-96231b3b80d8 Peter Smith 3 years ago
2 changed file(s) with 3 addition(s) and 1 deletion(s). Raw diff Collapse all Expand all
122122 Type = ELF::R_ARM_JUMP24;
123123 break;
124124 case ARM::fixup_t2_condbranch:
125 Type = ELF::R_ARM_THM_JUMP19;
126 break;
125127 case ARM::fixup_t2_uncondbranch:
126128 Type = ELF::R_ARM_THM_JUMP24;
127129 break;
88 @ CHECK-ERROR: unsupported relocation on symbol
99
1010 @ CHECK-ELF: 7f f4 fe af bne.w #-4
11 @ CHECK-ELF-NEXT: R_ARM_THM_JUMP24 _func2
11 @ CHECK-ELF-NEXT: R_ARM_THM_JUMP19 _func2