mirror of
https://github.com/Fennix-Project/Userspace.git
synced 2025-05-28 15:34:26 +00:00
Fixed crash
This commit is contained in:
parent
ae1a9cfda6
commit
b33646cf11
@ -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)();
|
||||
}
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user