mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[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. llvm-svn: 271997
This commit is contained in:
parent
3b8db9c327
commit
d64bc3ec0b
@ -123,6 +123,8 @@ unsigned ARMELFObjectWriter::GetRelocTypeInner(const MCValue &Target,
|
|||||||
Type = ELF::R_ARM_JUMP24;
|
Type = ELF::R_ARM_JUMP24;
|
||||||
break;
|
break;
|
||||||
case ARM::fixup_t2_condbranch:
|
case ARM::fixup_t2_condbranch:
|
||||||
|
Type = ELF::R_ARM_THM_JUMP19;
|
||||||
|
break;
|
||||||
case ARM::fixup_t2_uncondbranch:
|
case ARM::fixup_t2_uncondbranch:
|
||||||
Type = ELF::R_ARM_THM_JUMP24;
|
Type = ELF::R_ARM_THM_JUMP24;
|
||||||
break;
|
break;
|
||||||
|
@ -9,4 +9,4 @@ _func1:
|
|||||||
@ CHECK-ERROR: unsupported relocation on symbol
|
@ CHECK-ERROR: unsupported relocation on symbol
|
||||||
|
|
||||||
@ CHECK-ELF: 7f f4 fe af bne.w #-4
|
@ CHECK-ELF: 7f f4 fe af bne.w #-4
|
||||||
@ CHECK-ELF-NEXT: R_ARM_THM_JUMP24 _func2
|
@ CHECK-ELF-NEXT: R_ARM_THM_JUMP19 _func2
|
||||||
|
Loading…
x
Reference in New Issue
Block a user