|
| 1 | +diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChain.cpp a/lib/Driver/ToolChain.cpp |
| 2 | +--- a~/lib/Driver/ToolChain.cpp 1970-01-01 00:00:00 |
| 3 | ++++ a/lib/Driver/ToolChain.cpp 1970-01-01 00:00:00 |
| 4 | +@@ -1280,9 +1280,7 @@ void ToolChain::AddClangCXXStdlibIsystem |
| 5 | + } |
| 6 | + |
| 7 | + bool ToolChain::ShouldLinkCXXStdlib(const llvm::opt::ArgList &Args) const { |
| 8 | +- return getDriver().CCCIsCXX() && |
| 9 | +- !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs, |
| 10 | +- options::OPT_nostdlibxx); |
| 11 | ++ return getDriver().CCCIsCXX() && !Args.hasArg(options::OPT_nostdlibxx); |
| 12 | + } |
| 13 | + |
| 14 | + void ToolChain::AddCXXStdlibLibArgs(const ArgList &Args, |
| 15 | +diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChains/Solaris.cpp a/lib/Driver/ToolChains/Solaris.cpp |
| 16 | +--- a~/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00 |
| 17 | ++++ a/lib/Driver/ToolChains/Solaris.cpp 1970-01-01 00:00:00 |
| 18 | +@@ -206,6 +206,9 @@ void solaris::Linker::ConstructJob(Compi |
| 19 | + bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs); |
| 20 | + AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); |
| 21 | + |
| 22 | ++ if (ToolChain.ShouldLinkCXXStdlib(Args) && !Args.hasArg(options::OPT_r)) |
| 23 | ++ ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs); |
| 24 | ++ |
| 25 | + if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs, |
| 26 | + options::OPT_r)) { |
| 27 | + // Use the static OpenMP runtime with -static-openmp |
| 28 | +@@ -214,8 +217,6 @@ void solaris::Linker::ConstructJob(Compi |
| 29 | + addOpenMPRuntime(C, CmdArgs, ToolChain, Args, StaticOpenMP); |
| 30 | + |
| 31 | + if (D.CCCIsCXX()) { |
| 32 | +- if (ToolChain.ShouldLinkCXXStdlib(Args)) |
| 33 | +- ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs); |
| 34 | + CmdArgs.push_back("-lm"); |
| 35 | + } |
| 36 | + // Silence warnings when linking C code with a C++ '-stdlib' argument. |
| 37 | +@@ -419,3 +420,16 @@ void Solaris::addLibStdCxxIncludePaths( |
| 38 | + TripleStr, Multilib.includeSuffix(), DriverArgs, |
| 39 | + CC1Args); |
| 40 | + } |
| 41 | ++ |
| 42 | ++void Solaris::AddCXXStdlibLibArgs(const ArgList &Args, |
| 43 | ++ ArgStringList &CmdArgs) const { |
| 44 | ++ Generic_ELF::AddCXXStdlibLibArgs(Args, CmdArgs); |
| 45 | ++ |
| 46 | ++ if (GetCXXStdlibType(Args) != ToolChain::CST_Libstdcxx) |
| 47 | ++ return; |
| 48 | ++ |
| 49 | ++ StringRef LibSuffix = getSolarisLibSuffix(getTriple()); |
| 50 | ++ std::string MajVer = GCCInstallation.getVersion().MajorStr; |
| 51 | ++ CmdArgs.push_back(Args.MakeArgString(StringRef("-R") |
| 52 | ++ + "/usr/gcc/" + MajVer + "/lib" + LibSuffix)); |
| 53 | ++} |
| 54 | +diff -wpruN --no-dereference '--exclude=*.orig' a~/lib/Driver/ToolChains/Solaris.h a/lib/Driver/ToolChains/Solaris.h |
| 55 | +--- a~/lib/Driver/ToolChains/Solaris.h 1970-01-01 00:00:00 |
| 56 | ++++ a/lib/Driver/ToolChains/Solaris.h 1970-01-01 00:00:00 |
| 57 | +@@ -64,6 +64,9 @@ public: |
| 58 | + addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs, |
| 59 | + llvm::opt::ArgStringList &CC1Args) const override; |
| 60 | + |
| 61 | ++ void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args, |
| 62 | ++ llvm::opt::ArgStringList &CmdArgs) const override; |
| 63 | ++ |
| 64 | + SanitizerMask getSupportedSanitizers() const override; |
| 65 | + |
| 66 | + const char *getDefaultLinker() const override; |
0 commit comments