[all-commits] [llvm/llvm-project] 0b4a04: [LLD][ELF][ARM] Do not substitute BL/BLX for non S...
Peter Smith via All-commits
all-commits at lists.llvm.org
Wed Jan 29 03:42:41 PST 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 0b4a047bfbd11fe1f5abda8da0e2391c1918162a
https://github.com/llvm/llvm-project/commit/0b4a047bfbd11fe1f5abda8da0e2391c1918162a
Author: Peter Smith <peter.smith at linaro.org>
Date: 2020-01-29 (Wed, 29 Jan 2020)
Changed paths:
M lld/ELF/Arch/ARM.cpp
M lld/test/ELF/arm-thumb-interwork-notfunc.s
M lld/test/ELF/arm-thumb-undefined-weak.s
M lld/test/ELF/arm-undefined-weak.s
Log Message:
-----------
[LLD][ELF][ARM] Do not substitute BL/BLX for non STT_FUNC symbols.
D73474 disabled the generation of interworking thunks for branch
relocations to non STT_FUNC symbols. This patch handles the case of BL and
BLX instructions to non STT_FUNC symbols. LLD would normally look at the
state of the caller and the callee and write a BL if the states are the
same and a BLX if the states are different.
This patch disables BL/BLX substitution when the destination symbol does
not have type STT_FUNC. This brings our behavior in line with GNU ld which
may prevent difficult to diagnose runtime errors when switching to lld.
Differential Revision: https://reviews.llvm.org/D73542
More information about the All-commits
mailing list