Usermode/ld-acess - Fixing elf64 support (and x86-64)
[tpg/acess2.git] / Usermode / Libraries / ld-acess.so_src / loadlib.c
index 88297d5..9a1bc10 100644 (file)
@@ -4,7 +4,7 @@
 */
 #include "common.h"
 
-#define DEBUG  0
+#define DEBUG  1
 
 #if DEBUG
 # define DEBUGS(v...)  SysDebug(v)
@@ -13,7 +13,7 @@
 #endif
 
 // === PROTOTYPES ===
-void   *IsFileLoaded(char *file);
+void   *IsFileLoaded(const char *file);
  int   GetSymbolFromBase(void *base, const char *name, void **ret);
 
 // === IMPORTS ===
@@ -30,7 +30,7 @@ char  *gsNextAvailString = gsLoadedStrings;
 //tLoadLib     *gpLoadedLibraries = NULL;
 
 // === CODE ===
-char *FindLibrary(char *DestBuf, char *SoName, char *ExtraSearchDir)
+const char *FindLibrary(char *DestBuf, const char *SoName, const char *ExtraSearchDir)
 {      
        // -- #1: Executable Specified
        if(ExtraSearchDir)
@@ -54,43 +54,44 @@ char *FindLibrary(char *DestBuf, char *SoName, char *ExtraSearchDir)
 
 /**
  */
-void *LoadLibrary(char *SoName, char *SearchDir, char **envp)
+void *LoadLibrary(const char *SoName, const char *SearchDir, char **envp)
 {
        char    sTmpName[1024];
-       char    *filename;
+       const char      *filename;
        void    *base;
        void    (*fEntry)(void *, int, char *[], char**);
        
-       DEBUGS("LoadLibrary: (filename='%s', envp=0x%x)\n", filename, envp);
+       DEBUGS("LoadLibrary: (SoName='%s', SearchDir='%s', envp=0x%x)", SoName, SearchDir, envp);
        
        // Create Temp Name
        filename = FindLibrary(sTmpName, SoName, SearchDir);
        if(filename == NULL) {
-               DEBUGS("LoadLibrary: RETURN 0\n");
+               DEBUGS("LoadLibrary: RETURN 0");
                return 0;
        }
-       DEBUGS(" LoadLibrary: filename='%s'\n", filename);
+       DEBUGS(" LoadLibrary: filename='%s'", filename);
        
        if( (base = IsFileLoaded(filename)) )
                return base;
-       
+
+       DEBUGS(" LoadLibrary: SysLoadBin()");   
        // Load Library
        base = SysLoadBin(filename, (void**)&fEntry);
        if(!base) {
-               DEBUGS("LoadLibrary: RETURN 0\n");
+               DEBUGS("LoadLibrary: RETURN 0");
                return 0;
        }
        
-       DEBUGS(" LoadLibrary: iArg=%p, iEntry=0x%x\n", base, fEntry);
+       DEBUGS(" LoadLibrary: iArg=%p, iEntry=0x%x", base, fEntry);
        
        // Load Symbols
        fEntry = DoRelocate( base, envp, filename );
        
        // Call Entrypoint
-       DEBUGS(" LoadLibrary: '%s' Entry 0x%x\n", SoName, fEntry);
+       DEBUGS(" LoadLibrary: '%s' Entry 0x%x", SoName, fEntry);
        fEntry(base, 0, NULL, envp);
        
-       DEBUGS("LoadLibrary: RETURN 1\n");
+       DEBUGS("LoadLibrary: RETURN 1");
        return base;
 }
 
@@ -98,7 +99,7 @@ void *LoadLibrary(char *SoName, char *SearchDir, char **envp)
  * \fn Uint IsFileLoaded(char *file)
  * \brief Determine if a file is already loaded
  */
-void *IsFileLoaded(char *file)
+void *IsFileLoaded(const char *file)
 {
         int    i;
        DEBUGS("IsFileLoaded: (file='%s')", file);
@@ -119,7 +120,7 @@ void *IsFileLoaded(char *file)
  * \fn void AddLoaded(char *File, Uint base)
  * \brief Add a file to the loaded list
  */
-void AddLoaded(char *File, void *base)
+void AddLoaded(const char *File, void *base)
 {
         int    i, length;
        char    *name = gsNextAvailString;
@@ -148,7 +149,7 @@ void AddLoaded(char *File, void *base)
        strcpy(name, File);
        gLoadedLibraries[i].Name = name;
        gsNextAvailString = &name[length+1];
-       DEBUGS("'%s' (0x%x) loaded as %i\n", name, base, i);
+       DEBUGS("'%s' (0x%x) loaded as %i", name, base, i);
        return;
 }
 

UCC git Repository :: git.ucc.asn.au