blob: c0a740e2517b34bd9cca7a33dc9224afed44ee33 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
From 2de5743add75ae90442e9ff47061a67ff65e76d1 Mon Sep 17 00:00:00 2001
From: Jonathan Yong <10walls@gmail.com>
Date: Thu, 30 Oct 2014 17:15:02 +0800
Subject: [PATCH 17/21] __cxa-atexit for Cygwin
---
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 75807f5..aa5c032 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1655,6 +1655,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
@@ -1964,6 +1965,7 @@ mep-*-*)
with_headers=yes
fi
use_gcc_stdint=wrap
+ default_use_cxa_atexit=yes
;;
microblaze*-linux*)
case $target in
diff --git a/libgcc/config/i386/cygming-crtbegin.c b/libgcc/config/i386/cygming-crtbegin.c
index 87928e5..90904cd 100644
--- a/libgcc/config/i386/cygming-crtbegin.c
+++ b/libgcc/config/i386/cygming-crtbegin.c
@@ -183,7 +183,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.4.5
|