From 9956e4a24bd27efe03a1b9d1920163c91dac6f9b Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Mon, 6 Aug 2018 11:32:44 +0000 Subject: 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 --- llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp') 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)) -- cgit v1.2.3