X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Fld-acess.so_src%2Floadlib.c;h=53073019330baac99c440289cd7c442a2165743d;hb=8481db38ad481ab13963d44c33352bc8af740f25;hp=dcacd8a832c29b2a1797bda1b8c901b5e0b2ed5e;hpb=a41c4af4ae30e963f6bc370efad60dacc39b0275;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 dcacd8a8..53073019 100644 --- a/Usermode/Libraries/ld-acess.so_src/loadlib.c +++ b/Usermode/Libraries/ld-acess.so_src/loadlib.c @@ -24,6 +24,7 @@ extern const struct { } caLocalExports[]; extern const int ciNumLocalExports; extern char **gEnvP; +extern char gLinkedBase[]; // === GLOABLS === tLoadedLib gLoadedLibraries[MAX_LOADED_LIBRARIES]; @@ -108,6 +109,15 @@ void *IsFileLoaded(const char *file) { int i; DEBUGS("IsFileLoaded: (file='%s')", file); + + // Applications link against either libld-acess.so or ld-acess.so + if( strcmp(file, "/Acess/Libs/libld-acess.so") == 0 + || strcmp(file, "/Acess/Libs/ld-acess.so") == 0 ) + { + DEBUGS("IsFileLoaded: Found local (%p)", &gLinkedBase); + return &gLinkedBase; + } + for( i = 0; i < MAX_LOADED_LIBRARIES; i++ ) { if(gLoadedLibraries[i].Base == 0) break; // Last entry has Base set to NULL @@ -217,7 +227,7 @@ int GetSymbol(const char *name, void **Value, size_t *Size) } // Entry 0 is ld-acess, ignore it - for(i = 1; i < MAX_LOADED_LIBRARIES; i ++) + for(i = 0; i < MAX_LOADED_LIBRARIES; i ++) { if(gLoadedLibraries[i].Base == 0) break;