mirror of
https://github.com/reactos/reactos.git
synced 2024-11-07 07:00:19 +00:00
60 lines
1 KiB
C
60 lines
1 KiB
C
/**
|
|
* This file has no copyright assigned and is placed in the Public Domain.
|
|
* This file is part of the w64 mingw-runtime package.
|
|
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
|
*/
|
|
|
|
//#include <windows.h>
|
|
#include <stdlib.h>
|
|
#include <setjmp.h>
|
|
|
|
typedef void (*func_ptr) (void);
|
|
extern func_ptr __CTOR_LIST__[];
|
|
extern func_ptr __DTOR_LIST__[];
|
|
|
|
void __do_global_dtors (void);
|
|
void __do_global_ctors (void);
|
|
void __main (void);
|
|
|
|
void
|
|
__do_global_dtors (void)
|
|
{
|
|
static func_ptr *p = __DTOR_LIST__ + 1;
|
|
|
|
while (*p)
|
|
{
|
|
(*(p)) ();
|
|
p++;
|
|
}
|
|
}
|
|
|
|
void
|
|
__do_global_ctors (void)
|
|
{
|
|
unsigned long nptrs = (unsigned long) (ptrdiff_t) __CTOR_LIST__[0];
|
|
unsigned long i;
|
|
|
|
if (nptrs == (unsigned long) -1)
|
|
{
|
|
for (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++);
|
|
}
|
|
|
|
for (i = nptrs; i >= 1; i--)
|
|
{
|
|
__CTOR_LIST__[i] ();
|
|
}
|
|
|
|
atexit (__do_global_dtors);
|
|
}
|
|
|
|
static int initialized = 0;
|
|
|
|
void
|
|
__main (void)
|
|
{
|
|
if (!initialized)
|
|
{
|
|
initialized = 1;
|
|
__do_global_ctors ();
|
|
}
|
|
}
|