64 lines
3.9 KiB
Diff
64 lines
3.9 KiB
Diff
From 4bd6a1abf6d4e5ed4e53089a71b831b597b4e4ca Mon Sep 17 00:00:00 2001
|
|
From: jeremyd2019 <github@jdrake.com>
|
|
Date: Tue, 22 Apr 2025 23:48:08 -0700
|
|
Subject: [PATCH] [Clang] [Driver] use __cxa_atexit by default on Cygwin.
|
|
(#135701)
|
|
|
|
GCC on Cygwin and MSYS2 are built with --enable-__cxa_atexit.
|
|
|
|
Adjust test to expect this change.
|
|
---
|
|
clang/lib/Driver/ToolChains/Clang.cpp | 4 +++-
|
|
clang/test/Driver/cxa-atexit.cpp | 7 ++++---
|
|
2 files changed, 7 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
|
|
index 57b7d2bd46..f8b4267b94 100644
|
|
--- a/clang/lib/Driver/ToolChains/Clang.cpp
|
|
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
|
|
@@ -7230,7 +7230,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|
// -fuse-cxa-atexit is default.
|
|
if (!Args.hasFlag(
|
|
options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit,
|
|
- !RawTriple.isOSAIX() && !RawTriple.isOSWindows() &&
|
|
+ !RawTriple.isOSAIX() &&
|
|
+ (!RawTriple.isOSWindows() ||
|
|
+ RawTriple.isWindowsCygwinEnvironment()) &&
|
|
((RawTriple.getVendor() != llvm::Triple::MipsTechnologies) ||
|
|
RawTriple.hasEnvironment())) ||
|
|
KernelOrKext)
|
|
diff --git a/clang/test/Driver/cxa-atexit.cpp b/clang/test/Driver/cxa-atexit.cpp
|
|
index 537a11a35f..8bfb938e8e 100644
|
|
--- a/clang/test/Driver/cxa-atexit.cpp
|
|
+++ b/clang/test/Driver/cxa-atexit.cpp
|
|
@@ -1,15 +1,15 @@
|
|
// RUN: %clang -### -target armv7-unknown-windows-msvc -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
// RUN: %clang -### -target armv7-unknown-windows-itanium -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
// RUN: %clang -### -target armv7-unknown-windows-gnu -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
-// RUN: %clang -### -target armv7-unknown-windows-cygnus -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
+// RUN: %clang -### -target armv7-unknown-windows-cygnus -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-CYGWIN
|
|
// RUN: %clang -### -target i686-unknown-windows-msvc -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
// RUN: %clang -### -target i686-unknown-windows-itanium -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
// RUN: %clang -### -target i686-unknown-windows-gnu -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
-// RUN: %clang -### -target i686-unknown-windows-cygnus -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
+// RUN: %clang -### -target i686-unknown-windows-cygnus -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-CYGWIN
|
|
// RUN: %clang -### -target x86_64-unknown-windows-msvc -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
// RUN: %clang -### -target x86_64-unknown-windows-itanium -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
// RUN: %clang -### -target x86_64-unknown-windows-gnu -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
-// RUN: %clang -### -target x86_64-unknown-windows-cygnus -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-WINDOWS
|
|
+// RUN: %clang -### -target x86_64-unknown-windows-cygnus -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-CYGWIN
|
|
// RUN: %clang -### -target hexagon-unknown-none -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-HEXAGON
|
|
// RUN: %clang -### -target xcore-unknown-none -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-XCORE
|
|
// RUN: %clang -### -target armv7-mti-none -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-MTI
|
|
@@ -21,6 +21,7 @@
|
|
// RUN: %clang -### -target powerpc64-ibm-aix-xcoff -c %s -o /dev/null 2>&1 | FileCheck %s -check-prefix CHECK-AIX
|
|
|
|
// CHECK-WINDOWS: "-fno-use-cxa-atexit"
|
|
+// CHECK-CYGWIN-NOT: "-fno-use-cxa-atexit"
|
|
// CHECK-SOLARIS-NOT: "-fno-use-cxa-atexit"
|
|
// CHECK-HEXAGON-NOT: "-fno-use-cxa-atexit"
|
|
// CHECK-XCORE: "-fno-use-cxa-atexit"
|
|
--
|
|
2.50.1.windows.1
|
|
|