Commit 2518433f authored by Fangrui Song's avatar Fangrui Song
Browse files

Make __stack_chk_guard dso_local if Reloc::Static

This is currently implied by TargetMachine::shouldAssumeDSOLocal
but will be changed in the future.
parent 54971c3a
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -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.