git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git://git.ucc.asn.au/tpg/acess2
[tpg/acess2.git]
/
Usermode
/
Libraries
/
crt0.o_src
/
crt0.c
diff --git
a/Usermode/Libraries/crt0.o_src/crt0.c
b/Usermode/Libraries/crt0.o_src/crt0.c
index
8363aea
..
3cdbe11
100644
(file)
--- 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;
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);
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)
{
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]();
_crtbegin_ctors[i]();
+
+ _init();
- rv = main(argc, argv, envp);
+
int
rv = main(argc, argv, envp);
if( _crt0_exit_handler )
_crt0_exit_handler();
if( _crt0_exit_handler )
_crt0_exit_handler();
-
+ _fini();
_exit(rv);
}
_exit(rv);
}
UCC
git Repository :: git.ucc.asn.au