[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