summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-09-14 23:21:31 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-09-14 23:21:31 +0000
commitfe71f3887cc13a4261b41ead855e6dd2455a293c (patch)
treef15b53d58f61692b2feaff58f7812a4f760635b0
parent8ef7a5b4b7270ecc4a53e053c533bcee6e6b976e (diff)
downloadbcm5719-llvm-fe71f3887cc13a4261b41ead855e6dd2455a293c.tar.gz
bcm5719-llvm-fe71f3887cc13a4261b41ead855e6dd2455a293c.zip
[Solaris] Default to -fno-cxa-finalize.
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
-rw-r--r--clang/lib/Driver/Tools.cpp9
-rw-r--r--clang/test/Driver/solaris-opts.c4
2 files changed, 7 insertions, 6 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 7a5368a5faf..db29be1367c 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 00000000000..8c54ae0a628
--- /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"
+
OpenPOWER on IntegriCloud