Fixed crash

This commit is contained in:
Alex 2022-12-10 09:32:53 +02:00
parent ae1a9cfda6
commit b33646cf11
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD
2 changed files with 21 additions and 16 deletions

View File

@ -1,21 +1,24 @@
extern void (*__preinit_array_start[])(void) __attribute__((weak));
extern void (*__preinit_array_end[])(void) __attribute__((weak));
extern void (*__init_array_start[])(void) __attribute__((weak));
extern void (*__init_array_end[])(void) __attribute__((weak));
extern void (*__fini_array_start []) (void) __attribute__((weak));
extern void (*__fini_array_end []) (void) __attribute__((weak));
// extern void (*__preinit_array_start[])(void) __attribute__((weak));
// extern void (*__preinit_array_end[])(void) __attribute__((weak));
// extern void (*__init_array_start[])(void) __attribute__((weak));
// extern void (*__init_array_end[])(void) __attribute__((weak));
// extern void (*__fini_array_start []) (void) __attribute__((weak));
// extern void (*__fini_array_end []) (void) __attribute__((weak));
extern void _init(void);
typedef void (*CallPtr)(void);
extern CallPtr __init_array_start[0], __init_array_end[0];
extern CallPtr __fini_array_start[0], __fini_array_end[0];
// TODO: This is not working properly
void __libc_init_array(void)
{
unsigned long Count = __preinit_array_end - __preinit_array_start;
for (unsigned long i = 0; i < Count; i++)
__preinit_array_start[i]();
_init();
Count = __init_array_end - __init_array_start;
for (unsigned long i = 0; i < Count; i++)
__init_array_start[i]();
// for (CallPtr *func = __init_array_start; func != __init_array_end; func++)
// (*func)();
}
void __libc_fini_array(void)
{
// for (CallPtr *func = __fini_array_start; func != __fini_array_end; func++)
// (*func)();
}

View File

@ -1,5 +1,6 @@
extern void __libc_init_array(void);
extern void __libc_fini_array(void);
void __libc_init(void)
{
@ -8,6 +9,7 @@ void __libc_init(void)
void _exit(int Code)
{
__libc_fini_array();
__asm__ __volatile__("syscall"
:
: "a"(0), "D"(Code)