MSYS2-packages/mingw-w64-cross-gcc/0007-Cygwin-__cxa-atexit.patch
Christoph Reiter 5d0ae9ff04 cross-gcc: Update to 13.2.0
* sync in patches from cygwin gcc
* sync in important patches from mingw gcc not related to the build
* enabling stripping (not sure why it was disabled)
* reduce diff for build options to the mingw gcc build a bit
2023-11-13 19:49:38 +01:00

42 lines
1.2 KiB
Diff

From c4dd31d2a2c6dfa1f68393e6b57d2e4f9dd19a62 Mon Sep 17 00:00:00 2001
From: Jonathan Yong <10walls@gmail.com>
Date: Thu, 30 Oct 2014 17:15:02 +0800
Subject: [PATCH 07/13] Cygwin: __cxa-atexit
---
gcc/config.gcc | 2 ++
libgcc/config/i386/cygming-crtbegin.c | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 5636acc2270..7a654f18923 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -2135,6 +2135,7 @@ i[34567]86-*-cygwin*)
fi
default_use_cxa_atexit=yes
use_gcc_stdint=wrap
+ default_use_cxa_atexit=yes
;;
x86_64-*-cygwin*)
need_64bit_isa=yes
diff --git a/libgcc/config/i386/cygming-crtbegin.c b/libgcc/config/i386/cygming-crtbegin.c
index a89dfedca76..76fd3907ec5 100644
--- a/libgcc/config/i386/cygming-crtbegin.c
+++ b/libgcc/config/i386/cygming-crtbegin.c
@@ -145,7 +145,11 @@ __gcc_register_frame (void)
/* If we use the __cxa_atexit method to register C++ dtors
at object construction, also use atexit to register eh frame
info cleanup. */
+#ifdef __CYGWIN__
+ __cxa_atexit(__gcc_deregister_frame, NULL, (void *)&__dso_handle);
+#else
atexit(__gcc_deregister_frame);
+#endif /* __CYGWIN__ */
#endif /* DEFAULT_USE_CXA_ATEXIT */
}
--
2.39.0