termux-packages/packages/libllvm/cxx-libm.patch
Tom Yan 1e1167bc1f libllvm: make clang++ order -lm after -lgcc
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.
2019-05-16 20:18:48 +03:00

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");