From: Fangrui Song Date: Sat, 5 Dec 2020 00:57:45 +0000 (-0800) Subject: Make __stack_chk_guard dso_local if Reloc::Static X-Git-Tag: llvmorg-13-init~4304 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2518433f861fcb877d0a7bdd9aec1aec1f77505a;p=platform%2Fupstream%2Fllvm.git Make __stack_chk_guard dso_local if Reloc::Static This is currently implied by TargetMachine::shouldAssumeDSOLocal but will be changed in the future. --- diff --git a/llvm/lib/CodeGen/TargetLoweringBase.cpp b/llvm/lib/CodeGen/TargetLoweringBase.cpp index 23b6245..61a2de7 100644 --- a/llvm/lib/CodeGen/TargetLoweringBase.cpp +++ b/llvm/lib/CodeGen/TargetLoweringBase.cpp @@ -1969,10 +1969,13 @@ Value *TargetLoweringBase::getIRStackGuard(IRBuilder<> &IRB) const { // Currently only support "standard" __stack_chk_guard. // TODO: add LOAD_STACK_GUARD support. void TargetLoweringBase::insertSSPDeclarations(Module &M) const { - if (!M.getNamedValue("__stack_chk_guard")) - new GlobalVariable(M, Type::getInt8PtrTy(M.getContext()), false, - GlobalVariable::ExternalLinkage, - nullptr, "__stack_chk_guard"); + if (!M.getNamedValue("__stack_chk_guard")) { + auto *GV = new GlobalVariable(M, Type::getInt8PtrTy(M.getContext()), false, + GlobalVariable::ExternalLinkage, nullptr, + "__stack_chk_guard"); + if (getTargetMachine().getRelocationModel() == Reloc::Static) + GV->setDSOLocal(true); + } } // Currently only support "standard" __stack_chk_guard.