diff options
| author | Tim Northover <tnorthover@apple.com> | 2018-08-06 11:32:44 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2018-08-06 11:32:44 +0000 |
| commit | 9956e4a24bd27efe03a1b9d1920163c91dac6f9b (patch) | |
| tree | 7a4c2b3006728e90a337dd2e6e11e88e2821a729 /llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp | |
| parent | 2dbbd64cb7b3340ca692eb75e789048196b9d33b (diff) | |
| download | bcm5719-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.cpp | 1 |
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)) |

