llvm-project/llvm/lib/LTO
Fangrui Song d2ef8c1f2c [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker()
dso_local leads to direct access even if the definition is not within this compilation unit (it is
still in the same linkage unit). On ELF, such a relocation (e.g. R_X86_64_PC32) referencing a
STB_GLOBAL STV_DEFAULT object can cause a linker error in a -shared link.

If the linkage is changed to available_externally, the dso_local flag should be dropped, so that no
direct access will be generated.

The current behavior is benign, because -fpic does not assume dso_local
(clang/lib/CodeGen/CodeGenModule.cpp:shouldAssumeDSOLocal).
If we do that for -fno-semantic-interposition (D73865), there will be an
R_X86_64_PC32 linker error without this patch.

Reviewed By: tejohnson

Differential Revision: https://reviews.llvm.org/D74751
2020-04-07 15:46:01 -07:00
..
CMakeLists.txt [cmake] Explicitly mark libraries defined in lib/ as "Component Libraries" 2019-11-21 10:48:08 -08:00
Caching.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
LLVMBuild.txt [LTO][Legacy] Add explicit dependency on BinaryFormat 2020-02-28 15:50:43 -08:00
LTO.cpp [LTO] Replace hand-rolled endian conversion with support::endian. NFCI. 2020-04-06 13:23:27 +02:00
LTOBackend.cpp [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
LTOCodeGenerator.cpp Revert "[Darwin] Respect -fno-unroll-loops during LTO." 2020-03-30 15:20:30 +01:00
LTOModule.cpp [LTO][Legacy] Add new API to query Mach-O CPU (sub)type 2020-02-28 12:56:05 -08:00
SummaryBasedOptimizations.cpp Add missing includes needed to prune LLVMContext.h include, NFC 2019-11-14 15:23:15 -08:00
ThinLTOCodeGenerator.cpp [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
UpdateCompilerUsed.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00