X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Fld-acess.so_src%2Fmain.c;h=976ceec445a3c6483d3020ca50129d93d14290a5;hb=2238e69eea50d2274553926f3f294822c1972ff0;hp=e379a70af18848c4327aef942c24c831ddfc9226;hpb=b806b8f55067584cb90fe20277235369a1111c66;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/ld-acess.so_src/main.c b/Usermode/Libraries/ld-acess.so_src/main.c index e379a70a..976ceec4 100644 --- a/Usermode/Libraries/ld-acess.so_src/main.c +++ b/Usermode/Libraries/ld-acess.so_src/main.c @@ -5,6 +5,7 @@ #include #include #include "common.h" +#undef SoMain // === PROTOTYPES === void *DoRelocate(void *base, char **envp, const char *Filename); @@ -14,6 +15,7 @@ void *DoRelocate(void *base, char **envp, const char *Filename); extern char gLinkedBase[]; char **gEnvP; extern int memcmp(const void *m1, const void *m2, size_t size); +extern void CallQueuedEntrypoints(char **EnvP); // === CODE === /** @@ -41,7 +43,6 @@ void *SoMain(void *base, int argc, char **argv, char **envp) } // Otherwise do relocations - //ret = DoRelocate( base, envp, "Executable" ); ret = DoRelocate( base, NULL, "Executable" ); if( ret == 0 ) { SysDebug("ld-acess - SoMain: Relocate failed, base=0x%x\n", base); @@ -49,7 +50,10 @@ void *SoMain(void *base, int argc, char **argv, char **envp) for(;;); } - SysDebug("ld-acess - SoMain: ret = %p", ret); + // Call queued entry points (from libraries) + CallQueuedEntrypoints(envp); + + SysDebug("ld-acess - SoMain: Program entry %p", ret); return ret; } @@ -97,6 +101,11 @@ int CallUser(void *entry, void *sp) for(;;); } +void exit(int val) +{ + _exit(val); +} + void abort(void) { _exit(-4);