diff options
| author | Peter Smith <peter.smith@linaro.org> | 2016-06-07 10:34:33 +0000 |
|---|---|---|
| committer | Peter Smith <peter.smith@linaro.org> | 2016-06-07 10:34:33 +0000 |
| commit | 353a2286e2325f28718501c64ac9139d1fdedd85 (patch) | |
| tree | 9de64ee5035214a3dc6cf0e3e239cc9eb127a26a | |
| parent | db9893fb90c29783d2e1fc6195dc8e9a6a149b2a (diff) | |
| download | bcm5719-llvm-353a2286e2325f28718501c64ac9139d1fdedd85.tar.gz bcm5719-llvm-353a2286e2325f28718501c64ac9139d1fdedd85.zip | |
[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
| -rw-r--r-- | llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/MC/ARM/thumb1-relax-bcc.s | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp index d618df446fc..4118fe8e8cd 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp @@ -123,6 +123,8 @@ unsigned ARMELFObjectWriter::GetRelocTypeInner(const MCValue &Target, Type = ELF::R_ARM_JUMP24; break; case ARM::fixup_t2_condbranch: + Type = ELF::R_ARM_THM_JUMP19; + break; case ARM::fixup_t2_uncondbranch: Type = ELF::R_ARM_THM_JUMP24; break; diff --git a/llvm/test/MC/ARM/thumb1-relax-bcc.s b/llvm/test/MC/ARM/thumb1-relax-bcc.s index 02fde2e040e..f17840ff763 100644 --- a/llvm/test/MC/ARM/thumb1-relax-bcc.s +++ b/llvm/test/MC/ARM/thumb1-relax-bcc.s @@ -9,4 +9,4 @@ _func1: @ CHECK-ERROR: unsupported relocation on symbol @ 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 |

