X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibc.so_src%2Fstub.c;h=f723d54427b782c4946f3c8ed1f4fbc1e95ef2d5;hb=edddd69f17803d29b7f435da85ef23b7a5430c1f;hp=7e535a7d17733834634adee37ac35762eac177ea;hpb=27cb4fff4ed854d8be598a1157265c6de8aa035a;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc.so_src/stub.c b/Usermode/Libraries/libc.so_src/stub.c index 7e535a7d..f723d544 100644 --- a/Usermode/Libraries/libc.so_src/stub.c +++ b/Usermode/Libraries/libc.so_src/stub.c @@ -23,14 +23,12 @@ static void cpuid(uint32_t Num, uint32_t *EAX, uint32_t *EBX, uint32_t *EDX, uin // === IMPORTS === extern tLoadedLib gLoadedLibraries[64]; -extern int _SysSetFaultHandler(int (*Handler)(int)); +extern void *_crt0_exit_handler; +extern void _stdio_init(void); +extern void _call_atexit_handlers(void); // === GLOBALS === extern char **_envp; -extern struct sFILE _iob[]; -extern struct sFILE *stdin; -extern struct sFILE *stdout; -extern struct sFILE *stderr; // --- CPU Features --- #if USE_CPUID tCPUID gCPU_Features; @@ -61,14 +59,8 @@ int SoMain(UNUSED(uintptr_t, BaseAddress), UNUSED(int, argc), UNUSED(char **, ar } } #endif - - // Init FileIO Pointers - stdin = &_iob[0]; - stdin->FD = 0; stdin->Flags = FILE_FLAG_MODE_READ; - stdout = &_iob[1]; - stdout->FD = 1; stdout->Flags = FILE_FLAG_MODE_WRITE; - stderr = &_iob[2]; - stderr->FD = 2; stderr->Flags = FILE_FLAG_MODE_WRITE; + + _stdio_init(); #if USE_CPUID { @@ -79,6 +71,8 @@ int SoMain(UNUSED(uintptr_t, BaseAddress), UNUSED(int, argc), UNUSED(char **, ar } #endif + _crt0_exit_handler = _call_atexit_handlers; + // Set Error handler _SysSetFaultHandler(ErrorHandler); @@ -100,11 +94,6 @@ int ErrorHandler(int Fault) return -1; } -EXPORT int *libc_geterrno() -{ - return &_errno; -} - #if USE_CPUID /** * \brief Call the CPUID opcode