X-Git-Url: https://git.ucc.asn.au/?p=tpg%2Facess2.git;a=blobdiff_plain;f=Usermode%2FLibraries%2Fcrt0.o_src%2Fcrt0.c;fp=Usermode%2FLibraries%2Fcrt0.o_src%2Fcrt0.c;h=3cdbe119df16cb2fe37bd203fc2a95ec876f442e;hp=8363aea9ae889bcdf02e098e47123f77fc06f14d;hb=845b6f9d90bb87b5e760e4d49aa93b0e003ab750;hpb=67a7fe2bb79eceaf10c572a99bd8345c4e81cf5b diff --git a/Usermode/Libraries/crt0.o_src/crt0.c b/Usermode/Libraries/crt0.o_src/crt0.c index 8363aea9..3cdbe119 100644 --- a/Usermode/Libraries/crt0.o_src/crt0.c +++ b/Usermode/Libraries/crt0.o_src/crt0.c @@ -9,7 +9,8 @@ typedef void (*constructor_t)(void); constructor_t _crtbegin_ctors[0] __attribute__((section(".ctors"))); exithandler_t _crt0_exit_handler; -//extern constructor_t _crtbegin_ctors[]; +extern void _init(void); +extern void _fini(void); extern void _exit(int status) __attribute__((noreturn)); extern int main(int argc, char *argv[], char **envp); @@ -17,16 +18,16 @@ void _start(int argc, char *argv[], char **envp) __attribute__ ((alias("start")) void start(int argc, char *argv[], char **envp) { - int i; - int rv; - - for( i = 0; _crtbegin_ctors[i]; i ++ ) + // TODO: isn't this handled by _init? + for( int i = 0; _crtbegin_ctors[i]; i ++ ) _crtbegin_ctors[i](); + + _init(); - rv = main(argc, argv, envp); + int rv = main(argc, argv, envp); if( _crt0_exit_handler ) _crt0_exit_handler(); - + _fini(); _exit(rv); }