X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Fld-acess.so_src%2Floadlib.c;h=88297d5f17ad7ccd9279ace490fbd2ccb736d418;hb=2ebf89999759fc9d1ece6f98dfd439170995bb28;hp=a5f0bc260c9f8e65d92f326cd6505e7f61df7b36;hpb=560e97380a10c4a8cd8b14b2b7f5d133e32759e0;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/ld-acess.so_src/loadlib.c b/Usermode/Libraries/ld-acess.so_src/loadlib.c index a5f0bc26..88297d5f 100644 --- a/Usermode/Libraries/ld-acess.so_src/loadlib.c +++ b/Usermode/Libraries/ld-acess.so_src/loadlib.c @@ -13,12 +13,12 @@ #endif // === PROTOTYPES === -Uint IsFileLoaded(char *file); - int GetSymbolFromBase(Uint base, char *name, Uint *ret); +void *IsFileLoaded(char *file); + int GetSymbolFromBase(void *base, const char *name, void **ret); // === IMPORTS === extern const struct { - Uint Value; + void *Value; char *Name; } caLocalExports[]; extern const int ciNumLocalExports; @@ -54,12 +54,12 @@ char *FindLibrary(char *DestBuf, char *SoName, char *ExtraSearchDir) /** */ -Uint LoadLibrary(char *SoName, char *SearchDir, char **envp) +void *LoadLibrary(char *SoName, char *SearchDir, char **envp) { char sTmpName[1024]; char *filename; - Uint iArg; - void (*fEntry)(int, int, char *[], char**); + void *base; + void (*fEntry)(void *, int, char *[], char**); DEBUGS("LoadLibrary: (filename='%s', envp=0x%x)\n", filename, envp); @@ -71,34 +71,34 @@ Uint LoadLibrary(char *SoName, char *SearchDir, char **envp) } DEBUGS(" LoadLibrary: filename='%s'\n", filename); - if( (iArg = IsFileLoaded(filename)) ) - return iArg; + if( (base = IsFileLoaded(filename)) ) + return base; // Load Library - iArg = SysLoadBin(filename, (Uint*)&fEntry); - if(iArg == 0) { + base = SysLoadBin(filename, (void**)&fEntry); + if(!base) { DEBUGS("LoadLibrary: RETURN 0\n"); return 0; } - DEBUGS(" LoadLibrary: iArg=0x%x, iEntry=0x%x\n", iArg, fEntry); + DEBUGS(" LoadLibrary: iArg=%p, iEntry=0x%x\n", base, fEntry); // Load Symbols - fEntry = (void*)DoRelocate( iArg, envp, filename ); + fEntry = DoRelocate( base, envp, filename ); // Call Entrypoint DEBUGS(" LoadLibrary: '%s' Entry 0x%x\n", SoName, fEntry); - fEntry(iArg, 0, NULL, envp); + fEntry(base, 0, NULL, envp); DEBUGS("LoadLibrary: RETURN 1\n"); - return iArg; + return base; } /** * \fn Uint IsFileLoaded(char *file) * \brief Determine if a file is already loaded */ -Uint IsFileLoaded(char *file) +void *IsFileLoaded(char *file) { int i; DEBUGS("IsFileLoaded: (file='%s')", file); @@ -119,7 +119,7 @@ Uint IsFileLoaded(char *file) * \fn void AddLoaded(char *File, Uint base) * \brief Add a file to the loaded list */ -void AddLoaded(char *File, Uint base) +void AddLoaded(char *File, void *base) { int i, length; char *name = gsNextAvailString; @@ -155,7 +155,7 @@ void AddLoaded(char *File, Uint base) /** * \fn void Unload(Uint Base) */ -void Unload(Uint Base) +void Unload(void *Base) { int i, j; int id; @@ -192,13 +192,13 @@ void Unload(Uint Base) } /** - \fn Uint GetSymbol(char *name) + \fn Uint GetSymbol(const char *name) \brief Gets a symbol value from a loaded library */ -Uint GetSymbol(char *name) +void *GetSymbol(const char *name) { int i; - Uint ret; + void *ret; //SysDebug("ciNumLocalExports = %i", ciNumLocalExports); for(i=0;i