From a3c0ad68cf9640e9d913188fac2edff1e96ff027 Mon Sep 17 00:00:00 2001 From: rjs Date: Mon, 21 Oct 2019 11:14:44 +0000 Subject: Make C++ constructors work for aarch64. Discussed here: --- .../patches/patch-lib_Driver_ToolChains_NetBSD.cpp | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 lang/clang/patches/patch-lib_Driver_ToolChains_NetBSD.cpp (limited to 'lang') diff --git a/lang/clang/patches/patch-lib_Driver_ToolChains_NetBSD.cpp b/lang/clang/patches/patch-lib_Driver_ToolChains_NetBSD.cpp new file mode 100644 index 00000000000..6d69529c2db --- /dev/null +++ b/lang/clang/patches/patch-lib_Driver_ToolChains_NetBSD.cpp @@ -0,0 +1,26 @@ +$NetBSD: patch-lib_Driver_ToolChains_NetBSD.cpp,v 1.1 2019/10/21 11:14:44 rjs Exp $ + +--- lib/Driver/ToolChains/NetBSD.cpp.orig 2019-01-30 19:13:49.000000000 +0000 ++++ lib/Driver/ToolChains/NetBSD.cpp +@@ -469,10 +469,20 @@ SanitizerMask NetBSD::getSupportedSaniti + return Res; + } + +-void NetBSD::addClangTargetOptions(const ArgList &, ++void NetBSD::addClangTargetOptions(const ArgList &DriverArgs, + ArgStringList &CC1Args, + Action::OffloadKind) const { + const SanitizerArgs &SanArgs = getSanitizerArgs(); ++ bool UseInitArrayDefault = ++ getTriple().getArch() == llvm::Triple::aarch64 || ++ getTriple().getArch() == llvm::Triple::aarch64_be || ++ getTriple().getArch() == llvm::Triple::riscv32 || ++ getTriple().getArch() == llvm::Triple::riscv64; ++ ++ if (DriverArgs.hasFlag(options::OPT_fuse_init_array, ++ options::OPT_fno_use_init_array, UseInitArrayDefault)) ++ CC1Args.push_back("-fuse-init-array"); ++ + if (SanArgs.hasAnySanitizer()) + CC1Args.push_back("-D_REENTRANT"); + } -- cgit v1.2.3