*/
#include "common.h"
#include <stdint.h>
+#include <acess/sys.h>
#define DEBUG 0
} 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
DEBUGS(" LoadLibrary: SysLoadBin()");
// Load Library
- base = SysLoadBin(filename, (void**)&fEntry);
+ base = _SysLoadBin(filename, (void**)&fEntry);
if(!base) {
DEBUGS("LoadLibrary: RETURN 0");
return 0;
{
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
if(id == MAX_LOADED_LIBRARIES) return;
// Unload Binary
- SysUnloadBin( Base );
+ _SysUnloadBin( Base );
// Save String Pointer
str = gLoadedLibraries[id].Name;
}
// 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;