X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Fld-acess.so_src%2Fcommon.h;h=e0620c264da9224f642b9afaa818d9375091f304;hb=6fbf6b93bec9b8b5bd6d7c683eefb0ebed8dff77;hp=fad0344a6ac7fe4227089b8cb2dacefa14cf9199;hpb=560e97380a10c4a8cd8b14b2b7f5d133e32759e0;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/ld-acess.so_src/common.h b/Usermode/Libraries/ld-acess.so_src/common.h index fad0344a..e0620c26 100644 --- a/Usermode/Libraries/ld-acess.so_src/common.h +++ b/Usermode/Libraries/ld-acess.so_src/common.h @@ -7,9 +7,16 @@ #ifndef _COMMON_H #define _COMMON_H -#define NULL ((void*)0) - +#include #include +#include +#include +#include + +typedef uintptr_t Uint; +typedef uint8_t Uint8; +typedef uint16_t Uint16; +typedef uint32_t Uint32; // HACK: Replace with underscored #define SysDebug _SysDebug @@ -20,16 +27,8 @@ #define SYSTEM_LIB_DIR "/Acess/Libs/" // === Types === -typedef unsigned int Uint; -typedef unsigned char Uint8; -typedef unsigned short Uint16; -typedef unsigned long Uint32; -typedef signed char Sint8; -typedef signed short Sint16; -typedef signed long Sint32; - typedef struct { - Uint Base; + void *Base; char *Name; } tLoadedLib; @@ -37,35 +36,30 @@ typedef struct { extern tLoadedLib gLoadedLibraries[MAX_LOADED_LIBRARIES]; // === Main === -extern int DoRelocate( Uint base, char **envp, char *Filename ); +extern void *DoRelocate(void *Base, char **envp, const char *Filename); // === Library/Symbol Manipulation == -extern Uint LoadLibrary(char *filename, char *SearchDir, char **envp); -extern void AddLoaded(char *File, Uint base); -extern Uint GetSymbol(char *name); -extern int GetSymbolFromBase(Uint base, char *name, Uint *ret); +extern void *LoadLibrary(const char *Filename, const char *SearchDir, char **envp); +extern void AddLoaded(const char *File, void *base); +extern int GetSymbol(const char *Name, void **Value, size_t *size, void *IgnoreBase); +extern int GetSymbolFromBase(void *base, const char *name, void **ret, size_t *size); // === Library Functions === extern char *strcpy(char *dest, const char *src); extern char *strcat(char *dest, const char *src); extern int strcmp(const char *s1, const char *s2); extern int strlen(const char *str); -extern int file_exists(char *filename); +extern int file_exists(const char *filename); +extern void *memcpy(void *dest, const void *src, size_t len); // === System Calls === -extern void _exit(int retval); -extern void SysDebug(const char *fmt, ...); //!< Now implemented in main.c -extern void SysDebugV(const char *fmt, ...); -extern Uint SysLoadBin(const char *path, Uint *entry); -extern Uint SysUnloadBin(Uint Base); -extern void SysSetFaultHandler(int (*Hanlder)(int)); -extern int open(const char *filename, int flags); -extern void close(int fd); // === ELF Loader === -extern int ElfGetSymbol(Uint Base, char *name, Uint *ret); +extern void *ElfRelocate(void *Base, char **envp, const char *Filename); +extern int ElfGetSymbol(void *Base, const char *name, void **ret, size_t *Size); // === PE Loader === -extern int PE_GetSymbol(Uint Base, char *Name, Uint *ret); +extern void *PE_Relocate(void *Base, char **envp, const char *Filename); +extern int PE_GetSymbol(void *Base, const char *Name, void **ret, size_t *Size); #endif