50 lines
1.5 KiB
Diff
50 lines
1.5 KiB
Diff
From e83f365cde50e5566b270efd9b69ddc6eb900979 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/11] 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 357b0bed067..d67edad6df3 100644
|
|
--- a/gcc/config.gcc
|
|
+++ b/gcc/config.gcc
|
|
@@ -2130,6 +2130,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
|
|
@@ -2744,6 +2745,7 @@ mipstx39-*-elf* | mipstx39el-*-elf*)
|
|
mmix-knuth-mmixware)
|
|
tm_file="${tm_file} newlib-stdint.h"
|
|
use_gcc_stdint=wrap
|
|
+ default_use_cxa_atexit=yes
|
|
;;
|
|
mn10300-*-*)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
|
|
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.31.1
|
|
|