Merge branch 'master' of git://git.ucc.asn.au/tpg/acess2
[tpg/acess2.git] / Usermode / Libraries / crt0.o_src / crt0.c
index 8363aea..3cdbe11 100644 (file)
@@ -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);
 }

UCC git Repository :: git.ucc.asn.au