pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
clang-netbsd: Add X-Ray support
Module Name: pkgsrc-wip
Committed By: Kamil Rytarowski <n54%gmx.com@localhost>
Pushed By: kamil
Date: Fri Feb 16 05:13:34 2018 +0100
Changeset: 5d347b0fc565f842527398f9fe8150ae408315dc
Modified Files:
clang-netbsd/Makefile.common
clang-netbsd/distinfo
Added Files:
clang-netbsd/patches/patch-lib_Driver_ToolChains_NetBSD.cpp
Log Message:
clang-netbsd: Add X-Ray support
While there, disable llvm buildlink3 in order to track here just patches.
Patch untested.
Sponsored by <The NetBSD Foundation>
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=5d347b0fc565f842527398f9fe8150ae408315dc
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
clang-netbsd/Makefile.common | 4 +-
clang-netbsd/distinfo | 1 +
.../patches/patch-lib_Driver_ToolChains_NetBSD.cpp | 169 +++++++++++++++++++++
3 files changed, 172 insertions(+), 2 deletions(-)
diffs:
diff --git a/clang-netbsd/Makefile.common b/clang-netbsd/Makefile.common
index 6b82874ef4..a90e7606d0 100644
--- a/clang-netbsd/Makefile.common
+++ b/clang-netbsd/Makefile.common
@@ -113,7 +113,7 @@ post-extract:
.include "../../devel/googletest/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../lang/python/tool.mk"
-DEPENDS+= llvm-${PKGVERSION_NOREV}{,nb*}:../../wip/llvm-netbsd
-.include "../../wip/llvm-netbsd/buildlink3.mk"
+#DEPENDS+= llvm-${PKGVERSION_NOREV}{,nb*}:../../wip/llvm-netbsd
+#.include "../../wip/llvm-netbsd/buildlink3.mk"
.include "../../textproc/libxml2/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
diff --git a/clang-netbsd/distinfo b/clang-netbsd/distinfo
index b0f519db5d..3432e5d4b9 100644
--- a/clang-netbsd/distinfo
+++ b/clang-netbsd/distinfo
@@ -1,5 +1,6 @@
$NetBSD: distinfo,v 1.35 2015/09/11 01:21:57 tnn Exp $
SHA1 (patch-lib_Basic_Targets_OSTargets.h) = 9d229074c8e36be37176349971667817b227eaa5
+SHA1 (patch-lib_Driver_ToolChains_NetBSD.cpp) = e9fa3adccfb3ddfc24b83d51ced5dfa9ac17938e
SHA1 (patch-test_Sema_128bitfloat.cpp) = cc11582dd9495b603a22ef73609ab04f65324da2
SHA1 (patch-tools_clang-format_CMakeLists.txt) = f119d2a94cbfb8c00a285d1aa7789ed26f8309cf
diff --git a/clang-netbsd/patches/patch-lib_Driver_ToolChains_NetBSD.cpp b/clang-netbsd/patches/patch-lib_Driver_ToolChains_NetBSD.cpp
new file mode 100644
index 0000000000..56b1aaf42a
--- /dev/null
+++ b/clang-netbsd/patches/patch-lib_Driver_ToolChains_NetBSD.cpp
@@ -0,0 +1,169 @@
+$NetBSD$
+
+--- lib/Driver/ToolChains/NetBSD.cpp.orig 2018-02-16 03:40:05.438666489 +0000
++++ lib/Driver/ToolChains/NetBSD.cpp
+@@ -24,6 +24,30 @@ using namespace clang::driver::toolchain
+ using namespace clang;
+ using namespace llvm::opt;
+
++static bool addXRayRuntime(const ToolChain &TC, const ArgList &Args,
++ ArgStringList &CmdArgs) {
++ if (Args.hasArg(options::OPT_shared))
++ return false;
++
++ if (Args.hasFlag(options::OPT_fxray_instrument,
++ options::OPT_fnoxray_instrument, false)) {
++ CmdArgs.push_back("-whole-archive");
++ CmdArgs.push_back(TC.getCompilerRTArgString(Args, "xray", false));
++ CmdArgs.push_back("-no-whole-archive");
++ return true;
++ }
++
++ return false;
++}
++
++static void linkXRayRuntimeDeps(const ToolChain &TC, const ArgList &Args,
++ ArgStringList &CmdArgs) {
++ CmdArgs.push_back("--no-as-needed");
++ CmdArgs.push_back("-pthread");
++ CmdArgs.push_back("-lrt");
++ CmdArgs.push_back("-lm");
++}
++
+ void netbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
+ const InputInfo &Output,
+ const InputInfoList &Inputs,
+@@ -112,7 +136,9 @@ void netbsd::Linker::ConstructJob(Compil
+ const InputInfoList &Inputs,
+ const ArgList &Args,
+ const char *LinkingOutput) const {
+- const Driver &D = getToolChain().getDriver();
++ const toolchains::NetBSD &ToolChain =
++ static_cast<const toolchains::NetBSD &>(getToolChain());
++ const Driver &D = ToolChain.getDriver();
+ ArgStringList CmdArgs;
+
+ if (!D.SysRoot.empty())
+@@ -135,7 +161,7 @@ void netbsd::Linker::ConstructJob(Compil
+
+ // Many NetBSD architectures support more than one ABI.
+ // Determine the correct emulation for ld.
+- switch (getToolChain().getArch()) {
++ switch (ToolChain.getArch()) {
+ case llvm::Triple::x86:
+ CmdArgs.push_back("-m");
+ CmdArgs.push_back("elf_i386");
+@@ -143,7 +169,7 @@ void netbsd::Linker::ConstructJob(Compil
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ CmdArgs.push_back("-m");
+- switch (getToolChain().getTriple().getEnvironment()) {
++ switch (ToolChain.getTriple().getEnvironment()) {
+ case llvm::Triple::EABI:
+ case llvm::Triple::GNUEABI:
+ CmdArgs.push_back("armelf_nbsd_eabi");
+@@ -159,9 +185,9 @@ void netbsd::Linker::ConstructJob(Compil
+ break;
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb:
+- arm::appendEBLinkFlags(Args, CmdArgs, getToolChain().getEffectiveTriple());
++ arm::appendEBLinkFlags(Args, CmdArgs, ToolChain.getEffectiveTriple());
+ CmdArgs.push_back("-m");
+- switch (getToolChain().getTriple().getEnvironment()) {
++ switch (ToolChain.getTriple().getEnvironment()) {
+ case llvm::Triple::EABI:
+ case llvm::Triple::GNUEABI:
+ CmdArgs.push_back("armelfb_nbsd_eabi");
+@@ -179,13 +205,13 @@ void netbsd::Linker::ConstructJob(Compil
+ case llvm::Triple::mips64el:
+ if (mips::hasMipsAbiArg(Args, "32")) {
+ CmdArgs.push_back("-m");
+- if (getToolChain().getArch() == llvm::Triple::mips64)
++ if (ToolChain.getArch() == llvm::Triple::mips64)
+ CmdArgs.push_back("elf32btsmip");
+ else
+ CmdArgs.push_back("elf32ltsmip");
+ } else if (mips::hasMipsAbiArg(Args, "64")) {
+ CmdArgs.push_back("-m");
+- if (getToolChain().getArch() == llvm::Triple::mips64)
++ if (ToolChain.getArch() == llvm::Triple::mips64)
+ CmdArgs.push_back("elf64btsmip");
+ else
+ CmdArgs.push_back("elf64ltsmip");
+@@ -226,16 +252,16 @@ void netbsd::Linker::ConstructJob(Compil
+ if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
+ if (!Args.hasArg(options::OPT_shared)) {
+ CmdArgs.push_back(
+- Args.MakeArgString(getToolChain().GetFilePath("crt0.o")));
++ Args.MakeArgString(ToolChain.GetFilePath("crt0.o")));
+ }
+ CmdArgs.push_back(
+- Args.MakeArgString(getToolChain().GetFilePath("crti.o")));
++ Args.MakeArgString(ToolChain.GetFilePath("crti.o")));
+ if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie)) {
+ CmdArgs.push_back(
+- Args.MakeArgString(getToolChain().GetFilePath("crtbeginS.o")));
++ Args.MakeArgString(ToolChain.GetFilePath("crtbeginS.o")));
+ } else {
+ CmdArgs.push_back(
+- Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o")));
++ Args.MakeArgString(ToolChain.GetFilePath("crtbegin.o")));
+ }
+ }
+
+@@ -248,13 +274,14 @@ void netbsd::Linker::ConstructJob(Compil
+ Args.AddAllArgs(CmdArgs, options::OPT_r);
+
+ bool NeedsSanitizerDeps = addSanitizerRuntimes(getToolChain(), Args, CmdArgs);
++ bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs);
+ AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA);
+
+ unsigned Major, Minor, Micro;
+- getToolChain().getTriple().getOSVersion(Major, Minor, Micro);
++ ToolChain.getTriple().getOSVersion(Major, Minor, Micro);
+ bool useLibgcc = true;
+ if (Major >= 7 || Major == 0) {
+- switch (getToolChain().getArch()) {
++ switch (ToolChain.getArch()) {
+ case llvm::Triple::aarch64:
+ case llvm::Triple::aarch64_be:
+ case llvm::Triple::arm:
+@@ -278,12 +305,14 @@ void netbsd::Linker::ConstructJob(Compil
+ if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
+ addOpenMPRuntime(CmdArgs, getToolChain(), Args);
+ if (D.CCCIsCXX()) {
+- if (getToolChain().ShouldLinkCXXStdlib(Args))
+- getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
++ if (ToolChain.ShouldLinkCXXStdlib(Args))
++ ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
+ CmdArgs.push_back("-lm");
+ }
+ if (NeedsSanitizerDeps)
+ linkSanitizerRuntimeDeps(getToolChain(), CmdArgs);
++ if (NeedsXRayDeps)
++ linkXRayRuntimeDeps(ToolChain, Args, CmdArgs);
+ if (Args.hasArg(options::OPT_pthread))
+ CmdArgs.push_back("-lpthread");
+ CmdArgs.push_back("-lc");
+@@ -308,16 +337,16 @@ void netbsd::Linker::ConstructJob(Compil
+ if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
+ if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie))
+ CmdArgs.push_back(
+- Args.MakeArgString(getToolChain().GetFilePath("crtendS.o")));
++ Args.MakeArgString(ToolChain.GetFilePath("crtendS.o")));
+ else
+ CmdArgs.push_back(
+- Args.MakeArgString(getToolChain().GetFilePath("crtend.o")));
+- CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o")));
++ Args.MakeArgString(ToolChain.GetFilePath("crtend.o")));
++ CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
+ }
+
+- getToolChain().addProfileRTLibs(Args, CmdArgs);
++ ToolChain.addProfileRTLibs(Args, CmdArgs);
+
+- const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath());
++ const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+ C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
+ }
+
Home |
Main Index |
Thread Index |
Old Index