#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
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
\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
return PE_int_GetForwardSymbol(fwd, Ret);\r
}\r
*Ret = (void*)retVal;\r
+ if(Size) *Size = 0;\r
return 1;\r
}\r
}\r
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