mgorny created this revision.
mgorny added reviewers: ddunbar, EricWF, rsmith, phosek.
mgorny added a subscriber: cfe-commits.
Herald added a subscriber: dberris.
Include -lunwind by default when libc++ is used as the standard C++
library and compiler-rt used as the runtime library. This aims to make
it possible to build programs using '-rtlib=compiler-rt -stdlib=libc++'
out-of-the-box on platforms not having those by default, since clang
missed an unlinker library so far in this case.
This aims to match the current '-rtlib=libgcc' behavior which includes
the gcc unwinder library unconditionally (libgcc_s or libgcc_eh).
However, the unwind library is added only if libc++ is used as
the standard C++ library since libstdc++ implicitly includes
the unwinder. Furthermore, -lunwind is only used for C++ to avoid adding
unnecessary dependencies for C builds that could make bootstrap harder.
https://reviews.llvm.org/D25402
Files:
lib/Driver/ToolChain.cpp
Index: lib/Driver/ToolChain.cpp
===================================================================
--- lib/Driver/ToolChain.cpp
+++ lib/Driver/ToolChain.cpp
@@ -646,6 +646,8 @@
switch (Type) {
case ToolChain::CST_Libcxx:
CmdArgs.push_back("-lc++");
+ if (GetRuntimeLibType(Args) == ToolChain::RLT_CompilerRT)
+ CmdArgs.push_back("-lunwind");
break;
case ToolChain::CST_Libstdcxx:
Index: lib/Driver/ToolChain.cpp
===================================================================
--- lib/Driver/ToolChain.cpp
+++ lib/Driver/ToolChain.cpp
@@ -646,6 +646,8 @@
switch (Type) {
case ToolChain::CST_Libcxx:
CmdArgs.push_back("-lc++");
+ if (GetRuntimeLibType(Args) == ToolChain::RLT_CompilerRT)
+ CmdArgs.push_back("-lunwind");
break;
case ToolChain::CST_Libstdcxx:
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits