Usermode/libm - Add hacky INFINITY and NAN macros
[tpg/acess2.git] / Usermode / Libraries / ld-acess.so_src / pe.c
index afcb4ce..057345c 100644 (file)
 #endif\r
 \r
 // === PROTOTYPES ===\r
- int   PE_Relocate(void *Base, char **envp, char *Filename);\r
+void   *PE_Relocate(void *Base, char **envp, const char *Filename);\r
 char   *PE_int_GetTrueFile(char *file);\r
  int   PE_int_GetForwardSymbol(char *Fwd, void **Value);\r
 \r
 // === CODE ===\r
-int PE_Relocate(void *Base, char *envp[], char *Filename)\r
+void *PE_Relocate(void *Base, char **envp, const char *Filename)\r
 {\r
        tPE_DOS_HEADER          *dosHdr = Base;\r
        tPE_IMAGE_HEADERS       *peHeaders;\r
@@ -67,7 +67,8 @@ int PE_Relocate(void *Base, char *envp[], char *Filename)
                                void    *symPtr = 0;\r
                                name = (void*)( iBase + importTab[j] );\r
                                DEBUGS(" PE_Relocate: Import Name '%s', Hint 0x%x\n", name->Name, name->Hint);\r
-                               if( GetSymbolFromBase(pLibBase, name->Name, symPtr) == 0 ) {\r
+                               if( GetSymbolFromBase(pLibBase, name->Name, symPtr, NULL) == 0 )\r
+                               {\r
                                        SysDebug("Unable to find symbol '%s' in library '%s'\n", name->Name, impDir[i].DLLName);\r
                                        return 0;\r
                                }\r
@@ -85,13 +86,13 @@ int PE_Relocate(void *Base, char *envp[], char *Filename)
        \r
        DEBUGS("PE_Relocate: RETURN 0x%x\n", iBase + peHeaders->OptHeader.EntryPoint);\r
        \r
-       return iBase + peHeaders->OptHeader.EntryPoint;\r
+       return (void*)( iBase + peHeaders->OptHeader.EntryPoint );\r
 }\r
 \r
 /**\r
- * \fn int PE_GetSymbol(Uint Base, char *Name, Uint *Ret)\r
+ * \fn int PE_GetSymbol(Uint Base, const char *Name, Uint *Ret)\r
  */\r
-int PE_GetSymbol(void *Base, char *Name, void **Ret)\r
+int PE_GetSymbol(void *Base, const char *Name, void **Ret, size_t *Size)\r
 {\r
        tPE_DOS_HEADER          *dosHdr = Base;\r
        tPE_IMAGE_HEADERS       *peHeaders;\r
@@ -129,6 +130,7 @@ int PE_GetSymbol(void *Base, char *Name, void **Ret)
                                return PE_int_GetForwardSymbol(fwd, Ret);\r
                        }\r
                        *Ret = (void*)retVal;\r
+                       if(Size)        *Size = 0;\r
                        return 1;\r
                }\r
        }\r
@@ -174,9 +176,10 @@ int PE_int_GetForwardSymbol(char *Fwd, void **Value)
        DEBUGS(" PE_int_GetForwardSymbol: Get '%s' from '%s'\n", sym, libname);\r
        \r
        libbase = LoadLibrary(libname, DLL_BASE_PATH, NULL);\r
-       ret = GetSymbolFromBase(libbase, sym, Value);\r
+       ret = GetSymbolFromBase(libbase, sym, Value, NULL);\r
        if(!ret) {\r
                SysDebug(" PE_int_GetForwardSymbol: Unable to find '%s' in '%s'\n", sym, libname);\r
+               return 0;\r
        }\r
        Fwd[i] = '.';\r
        return ret;\r

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