diff options
Diffstat (limited to 'contrib/llvm-project/clang/lib/Driver/ToolChains/Darwin.h')
-rw-r--r-- | contrib/llvm-project/clang/lib/Driver/ToolChains/Darwin.h | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/contrib/llvm-project/clang/lib/Driver/ToolChains/Darwin.h b/contrib/llvm-project/clang/lib/Driver/ToolChains/Darwin.h index 64c252efea7d..25c63fed922a 100644 --- a/contrib/llvm-project/clang/lib/Driver/ToolChains/Darwin.h +++ b/contrib/llvm-project/clang/lib/Driver/ToolChains/Darwin.h @@ -11,6 +11,7 @@ #include "Cuda.h" #include "ROCm.h" +#include "clang/Basic/LangOptions.h" #include "clang/Driver/DarwinSDKInfo.h" #include "clang/Driver/Tool.h" #include "clang/Driver/ToolChain.h" @@ -62,7 +63,8 @@ class LLVM_LIBRARY_VISIBILITY Linker : public MachOTool { bool NeedsTempPath(const InputInfoList &Inputs) const; void AddLinkArgs(Compilation &C, const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs, - const InputInfoList &Inputs, unsigned Version[5]) const; + const InputInfoList &Inputs, unsigned Version[5], + bool LinkerIsLLD, bool LinkerIsLLDDarwinNew) const; public: Linker(const ToolChain &TC) : MachOTool("darwin::Linker", "linker", TC) {} @@ -436,7 +438,11 @@ public: bool isMacosxVersionLT(unsigned V0, unsigned V1 = 0, unsigned V2 = 0) const { assert(isTargetMacOS() && getTriple().isMacOSX() && "Unexpected call for non OS X target!"); - VersionTuple MinVers = getTriple().getMinimumSupportedOSVersion(); + // The effective triple might not be initialized yet, so construct a + // pseudo-effective triple to get the minimum supported OS version. + VersionTuple MinVers = + llvm::Triple(getTriple().getArchName(), "apple", "macos") + .getMinimumSupportedOSVersion(); return (!MinVers.empty() && MinVers > TargetVersion ? MinVers : TargetVersion) < VersionTuple(V0, V1, V2); @@ -487,17 +493,18 @@ public: return !(isTargetMacOS() && isMacosxVersionLT(10, 6)); } - unsigned GetDefaultStackProtectorLevel(bool KernelOrKext) const override { + LangOptions::StackProtectorMode + GetDefaultStackProtectorLevel(bool KernelOrKext) const override { // Stack protectors default to on for user code on 10.5, // and for everything in 10.6 and beyond if (isTargetIOSBased() || isTargetWatchOSBased()) - return 1; + return LangOptions::SSPOn; else if (isTargetMacOS() && !isMacosxVersionLT(10, 6)) - return 1; + return LangOptions::SSPOn; else if (isTargetMacOS() && !isMacosxVersionLT(10, 5) && !KernelOrKext) - return 1; + return LangOptions::SSPOn; - return 0; + return LangOptions::SSPOff; } void CheckObjCARC() const override; |