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_start[])(void) __attribute__((weak));
|
||||||
extern void (*__preinit_array_end[])(void) __attribute__((weak));
|
// extern void (*__preinit_array_end[])(void) __attribute__((weak));
|
||||||
extern void (*__init_array_start[])(void) __attribute__((weak));
|
// extern void (*__init_array_start[])(void) __attribute__((weak));
|
||||||
extern void (*__init_array_end[])(void) __attribute__((weak));
|
// extern void (*__init_array_end[])(void) __attribute__((weak));
|
||||||
extern void (*__fini_array_start []) (void) __attribute__((weak));
|
// extern void (*__fini_array_start []) (void) __attribute__((weak));
|
||||||
extern void (*__fini_array_end []) (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)
|
void __libc_init_array(void)
|
||||||
{
|
{
|
||||||
unsigned long Count = __preinit_array_end - __preinit_array_start;
|
// for (CallPtr *func = __init_array_start; func != __init_array_end; func++)
|
||||||
for (unsigned long i = 0; i < Count; i++)
|
// (*func)();
|
||||||
__preinit_array_start[i]();
|
}
|
||||||
|
|
||||||
_init();
|
void __libc_fini_array(void)
|
||||||
|
{
|
||||||
Count = __init_array_end - __init_array_start;
|
// for (CallPtr *func = __fini_array_start; func != __fini_array_end; func++)
|
||||||
for (unsigned long i = 0; i < Count; i++)
|
// (*func)();
|
||||||
__init_array_start[i]();
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
extern void __libc_init_array(void);
|
extern void __libc_init_array(void);
|
||||||
|
extern void __libc_fini_array(void);
|
||||||
|
|
||||||
void __libc_init(void)
|
void __libc_init(void)
|
||||||
{
|
{
|
||||||
@ -8,6 +9,7 @@ void __libc_init(void)
|
|||||||
|
|
||||||
void _exit(int Code)
|
void _exit(int Code)
|
||||||
{
|
{
|
||||||
|
__libc_fini_array();
|
||||||
__asm__ __volatile__("syscall"
|
__asm__ __volatile__("syscall"
|
||||||
:
|
:
|
||||||
: "a"(0), "D"(Code)
|
: "a"(0), "D"(Code)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user