1e1167bc1f
Without this patch, libm will be linked before libgcc (which is a linker script that links to both libunwind and libgcc_real); as libm.so in our system exports unwind symbols, it prevents the built objects from being linked to the unwinders properly. Since libm is a part of bionic, we can't ship it like we do for libc++_shared or zlib. Therefore, patching clang++ is probably the only way.
23 lines
862 B
Diff
23 lines
862 B
Diff
diff --git a/tools/clang/lib/Driver/ToolChains/Gnu.cpp~ b/tools/clang/lib/Driver/ToolChains/Gnu.cpp
|
|
index 2ad4509..4d0b060 100644
|
|
--- a/tools/clang/lib/Driver/ToolChains/Gnu.cpp~
|
|
+++ b/tools/clang/lib/Driver/ToolChains/Gnu.cpp
|
|
@@ -483,7 +483,6 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
|
if (OnlyLibstdcxxStatic)
|
|
CmdArgs.push_back("-Bdynamic");
|
|
}
|
|
- CmdArgs.push_back("-lm");
|
|
}
|
|
// Silence warnings when linking C code with a C++ '-stdlib' argument.
|
|
Args.ClaimAllArgs(options::OPT_stdlib_EQ);
|
|
@@ -513,6 +512,9 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
|
|
|
|
AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
|
|
|
|
+ if (D.CCCIsCXX())
|
|
+ CmdArgs.push_back("-lm");
|
|
+
|
|
if (WantPthread && !isAndroid)
|
|
CmdArgs.push_back("-lpthread");
|
|
|