diff options
| author | Uneven Prankster <unevenprankster@protonmail.com> | 2023-07-12 13:22:29 -0300 |
|---|---|---|
| committer | Uneven Prankster <unevenprankster@protonmail.com> | 2023-07-12 13:22:29 -0300 |
| commit | fa2bdd711212ba6b7a94a20971e8bfa281e73296 (patch) | |
| tree | 6713b3c0379507d49558287b71dd360ce188a2f0 /tinycc/win32/lib/crtinit.c | |
lol
Diffstat (limited to 'tinycc/win32/lib/crtinit.c')
| -rw-r--r-- | tinycc/win32/lib/crtinit.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tinycc/win32/lib/crtinit.c b/tinycc/win32/lib/crtinit.c new file mode 100644 index 0000000..31f087b --- /dev/null +++ b/tinycc/win32/lib/crtinit.c @@ -0,0 +1,26 @@ +//+--------------------------------------------------------------------------- + +#ifdef __leading_underscore +# define _(s) s +#else +# define _(s) _##s +#endif + +extern void (*_(_init_array_start)[]) (int argc, _TCHAR **argv, _TCHAR **envp); +extern void (*_(_init_array_end)[]) (int argc, _TCHAR **argv, _TCHAR **envp); +extern void (*_(_fini_array_start)[]) (void); +extern void (*_(_fini_array_end)[]) (void); + +static void run_ctors(int argc, _TCHAR **argv, _TCHAR **env) +{ + int i = 0; + while (&_(_init_array_start)[i] != _(_init_array_end)) + (*_(_init_array_start)[i++])(argc, argv, env); +} + +static void run_dtors(void) +{ + int i = 0; + while (&_(_fini_array_end)[i] != _(_fini_array_start)) + (*_(_fini_array_end)[--i])(); +} |
