Mon Oct 21 11:14:44 2019 UTC ()
Make C++ constructors work for aarch64.

Discussed here:

<http://mail-index.netbsd.org/tech-toolchain/2019/08/29/msg003611.html>


(rjs)
diff -r0 -r1.1 pkgsrc/lang/clang/patches/patch-lib_Driver_ToolChains_NetBSD.cpp

File Added: pkgsrc/lang/clang/patches/Attic/patch-lib_Driver_ToolChains_NetBSD.cpp
$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");
 }