OSDN Git Service

[ARM] Incorrect relocation type for Thumb2 B<cond>.w
authorPeter Smith <peter.smith@linaro.org>
Tue, 7 Jun 2016 10:34:33 +0000 (10:34 +0000)
committerPeter Smith <peter.smith@linaro.org>
Tue, 7 Jun 2016 10:34:33 +0000 (10:34 +0000)
commit884efc1a8531ad1e35713fd08f81f970937f7692
tree6707c02d623357f19f4df89f6e717a523e60e14d
parentc9bc1a4d8d2622e5bfd538a74c3887b33bac563b
[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
lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
test/MC/ARM/thumb1-relax-bcc.s