From fe71f3887cc13a4261b41ead855e6dd2455a293c Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 14 Sep 2015 23:21:31 +0000 Subject: [PATCH] [Solaris] Default to -fno-cxa-finalize. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no __cxa_finalize symbol available on recent Solaris OS versions, so we need this flag to make non trivial C++ programs run. Also stop looking for cxa_finalize.o, since it won't be there. Patch by Xan López! llvm-svn: 247634 --- clang/lib/Driver/Tools.cpp | 9 +++------ clang/test/Driver/solaris-opts.c | 4 ++++ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 clang/test/Driver/solaris-opts.c diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 7a5368a5faf3..db29be1367c9 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -4572,8 +4572,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (!Args.hasFlag(options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit, !IsWindowsCygnus && !IsWindowsGNU && - getToolChain().getArch() != llvm::Triple::hexagon && - getToolChain().getArch() != llvm::Triple::xcore) || + getToolChain().getTriple().getOS() != llvm::Triple::Solaris && + getToolChain().getArch() != llvm::Triple::hexagon && + getToolChain().getArch() != llvm::Triple::xcore) || KernelOrKext) CmdArgs.push_back("-fno-use-cxa-atexit"); @@ -6942,10 +6943,6 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA, Args.MakeArgString(getToolChain().GetFilePath("values-Xa.o"))); CmdArgs.push_back( Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o"))); - - if (getToolChain().getDriver().CCCIsCXX()) - CmdArgs.push_back( - Args.MakeArgString(getToolChain().GetFilePath("cxa_finalize.o"))); } const ToolChain::path_list &Paths = getToolChain().getFilePaths(); diff --git a/clang/test/Driver/solaris-opts.c b/clang/test/Driver/solaris-opts.c new file mode 100644 index 000000000000..8c54ae0a628d --- /dev/null +++ b/clang/test/Driver/solaris-opts.c @@ -0,0 +1,4 @@ +// RUN: %clang %s --target=sparc-sun-solaris2.11 -### -o %t.o 2>&1 | FileCheck %s + +// CHECK: "-fno-use-cxa-atexit" +