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://github.com/thepowersgang/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
f506d72
..
3cdbe11
100644
(file)
--- a/
Usermode/Libraries/crt0.o_src/crt0.c
+++ b/
Usermode/Libraries/crt0.o_src/crt0.c
@@
-6,23
+6,28
@@
typedef void (*exithandler_t)(void);
typedef void (*constructor_t)(void);
typedef void (*exithandler_t)(void);
typedef void (*constructor_t)(void);
+constructor_t _crtbegin_ctors[0] __attribute__((section(".ctors")));
+
exithandler_t _crt0_exit_handler;
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);
+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