X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=AcessNative%2Fld-acess_src%2Fcommon.h;h=0d1dee886faf58c8aa37136d9c3526018477368c;hb=a4d8188f730bcc25cd4a6f4799ac7d65eb707cf2;hp=4667acba499885de5bcb0ce71b9768beb4ea022d;hpb=a09032f44bba55ce1e60dfab92a39cf6c909220b;p=tpg%2Facess2.git diff --git a/AcessNative/ld-acess_src/common.h b/AcessNative/ld-acess_src/common.h index 4667acba..0d1dee88 100644 --- a/AcessNative/ld-acess_src/common.h +++ b/AcessNative/ld-acess_src/common.h @@ -6,29 +6,50 @@ #include #include #include +#include -extern int Binary_GetSymbol(const char *SymbolName, uintptr_t *Value); +extern int Binary_GetSymbol(const char *SymbolName, uintptr_t *Value, size_t *Size); extern void *Binary_LoadLibrary(const char *Path); extern void *Binary_Load(const char *Path, uintptr_t *EntryPoint); extern void Binary_SetReadyToUse(void *Base); +// HACKS - So this can share the usermode elf.c +static inline void *GetSymbol(const char*sym, size_t*sz) +{ + uintptr_t rv; + if( !Binary_GetSymbol(sym, &rv, sz) ) + return NULL; + return (void*)rv; +} +static inline void *LoadLibrary(const char *Name, const char *SearchPath, char **envp) +{ + return Binary_LoadLibrary(Name); +} +static inline void AddLoaded(const char *Path, void *Base) +{ + Binary_SetReadyToUse(Base); +} + extern int AllocateMemory(uintptr_t VirtAddr, size_t ByteCount); extern uintptr_t FindFreeRange(size_t ByteCount, int MaxBits); extern void Warning(const char *Format, ...); extern void Notice(const char *Format, ...); +extern void Debug(const char *Format, ...); +#define SysDebug Debug -typedef struct { - char *Name; - void *Value; -} tSym; +#define ACESS_SEEK_CUR 0 +#define ACESS_SEEK_SET 1 +#define ACESS_SEEK_END -1 + +#include "exports.h" typedef struct sBinFmt { struct sBinFmt *Next; char *Name; - void *(*Load)(FILE *fp); + void *(*Load)(int fd); uintptr_t (*Relocate)(void *base); - int (*GetSymbol)(void*,char*,uintptr_t*); + int (*GetSymbol)(void*,char*,uintptr_t*,size_t*); } tBinFmt; #endif