} caLocalExports[];
extern const int ciNumLocalExports;
extern char **gEnvP;
+extern char gLinkedBase[];
// === GLOABLS ===
tLoadedLib gLoadedLibraries[MAX_LOADED_LIBRARIES];
//tLoadLib *gpLoadedLibraries = NULL;
// === CODE ===
+void ldacess_DumpLoadedLibraries(void)
+{
+ for( int i = 0; i < MAX_LOADED_LIBRARIES; i ++ )
+ {
+ if(gLoadedLibraries[i].Base == 0) break; // Last entry has Base set to NULL
+ _SysDebug("%p: %s",
+ gLoadedLibraries[i].Base,
+ gLoadedLibraries[i].Name
+ );
+ }
+}
+
const char *FindLibrary(char *DestBuf, const char *SoName, const char *ExtraSearchDir)
{
// -- #1: Executable Specified
{
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
}
// 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;