Hi,
I think we should revert commit [ca451a] Handle __CTOR_LIST__ internally
within mingw-w64
It is not ready yet and makes serious problems for GCC.
Mateusz
diff --git a/mingw-w64-crt/crt/gccmain.c b/mingw-w64-crt/crt/gccmain.c
index ba50691..fc0e350 100644
--- a/mingw-w64-crt/crt/gccmain.c
+++ b/mingw-w64-crt/crt/gccmain.c
@@ -9,15 +9,8 @@
#include <setjmp.h>
typedef void (*func_ptr) (void);
-#define STATIC static
-
-STATIC func_ptr __MINGW_CTOR_LIST__[1]
- __attribute__ ((__used__, section(".ctors"), aligned(sizeof(func_ptr))))
- = { (func_ptr) (-1) };
-
-STATIC func_ptr __MINGW_DTOR_LIST__[1]
- __attribute__((section(".dtors"), aligned(sizeof(func_ptr))))
- = { (func_ptr) (-1) };
+extern func_ptr __CTOR_LIST__[];
+extern func_ptr __DTOR_LIST__[];
void __do_global_dtors (void);
void __do_global_ctors (void);
@@ -26,7 +19,7 @@ void __main (void);
void
__do_global_dtors (void)
{
- static func_ptr *p = __MINGW_DTOR_LIST__ + 1;
+ static func_ptr *p = __DTOR_LIST__ + 1;
while (*p)
{
@@ -38,17 +31,17 @@ __do_global_dtors (void)
void
__do_global_ctors (void)
{
- unsigned long nptrs = (unsigned long) (ptrdiff_t) __MINGW_CTOR_LIST__[0];
+ unsigned long nptrs = (unsigned long) (ptrdiff_t) __CTOR_LIST__[0];
unsigned long i;
if (nptrs == (unsigned long) -1)
{
- for (nptrs = 0; __MINGW_CTOR_LIST__[nptrs + 1] != 0; nptrs++);
+ for (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++);
}
for (i = nptrs; i >= 1; i--)
{
- __MINGW_CTOR_LIST__[i] ();
+ __CTOR_LIST__[i] ();
}
atexit (__do_global_dtors);
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public