summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2018-08-06 11:32:44 +0000
committerTim Northover <tnorthover@apple.com>2018-08-06 11:32:44 +0000
commit9956e4a24bd27efe03a1b9d1920163c91dac6f9b (patch)
tree7a4c2b3006728e90a337dd2e6e11e88e2821a729 /llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
parent2dbbd64cb7b3340ca692eb75e789048196b9d33b (diff)
downloadbcm5719-llvm-9956e4a24bd27efe03a1b9d1920163c91dac6f9b.tar.gz
bcm5719-llvm-9956e4a24bd27efe03a1b9d1920163c91dac6f9b.zip
ARM-MachO: don't add Thumb bit for addend to non-external relocation.
ld64 supplies its own Thumb bit for Thumb functions, and intentionally zeroes out that part of any addend in an object file. But it only does that for symbols marked N_EXT -- i.e. external symbols. So LLVM should avoid setting that extra bit in other cases. llvm-svn: 339007
Diffstat (limited to 'llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp')
-rw-r--r--llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
index f524a008130..c2a07d4ddce 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
@@ -373,6 +373,7 @@ unsigned ARMAsmBackend::adjustFixupValue(const MCAssembler &Asm,
// interfere with checking valid expressions.
if (const MCSymbolRefExpr *A = Target.getSymA()) {
if (A->hasSubsectionsViaSymbols() && Asm.isThumbFunc(&A->getSymbol()) &&
+ A->getSymbol().isExternal() &&
(Kind == FK_Data_4 || Kind == ARM::fixup_arm_movw_lo16 ||
Kind == ARM::fixup_arm_movt_hi16 || Kind == ARM::fixup_t2_movw_lo16 ||
Kind == ARM::fixup_t2_movt_hi16))
OpenPOWER on IntegriCloud