Usermode/ld-acess - Fixing ELF loader modifying .text during relocation
[tpg/acess2.git] / Usermode / Libraries / ld-acess.so_src / common.h
1 /*
2  AcessOS v1
3  By thePowersGang
4  ld-acess.so
5  COMMON.H
6 */
7 #ifndef _COMMON_H
8 #define _COMMON_H
9
10 #define NULL    ((void*)0)
11
12 #include <stdarg.h>
13
14 // HACK: Replace with underscored
15 #define SysDebug        _SysDebug
16
17 // === CONSTANTS ===
18 #define MAX_LOADED_LIBRARIES    64
19 #define MAX_STRINGS_BYTES       4096
20 #define SYSTEM_LIB_DIR  "/Acess/Libs/"
21
22 // === Types ===
23 typedef unsigned int    Uint;
24 typedef unsigned char   Uint8;
25 typedef unsigned short  Uint16;
26 typedef unsigned long   Uint32;
27 typedef signed char             Sint8;
28 typedef signed short    Sint16;
29 typedef signed long             Sint32;
30
31 typedef struct {
32         void    *Base;
33         char    *Name;
34 }       tLoadedLib;
35
36 // === GLOBALS ===
37 extern tLoadedLib       gLoadedLibraries[MAX_LOADED_LIBRARIES];
38
39 // === Main ===
40 extern void     *DoRelocate(void *Base, char **envp, char *Filename);
41
42 // === Library/Symbol Manipulation ==
43 extern void     *LoadLibrary(char *filename, char *SearchDir, char **envp);
44 extern void     AddLoaded(char *File, void *base);
45 extern void     *GetSymbol(const char *name);
46 extern int      GetSymbolFromBase(void *base, const char *name, void **ret);
47
48 // === Library Functions ===
49 extern char     *strcpy(char *dest, const char *src);
50 extern char     *strcat(char *dest, const char *src);
51 extern int      strcmp(const char *s1, const char *s2);
52 extern int      strlen(const char *str);
53 extern int      file_exists(char *filename);
54
55 // === System Calls ===
56 extern void     _exit(int retval);
57 extern void     SysDebug(const char *fmt, ...); //!< Now implemented in main.c
58 extern void     SysDebugV(const char *fmt, ...);
59 extern void     *SysLoadBin(const char *path, void **entry);
60 extern int      SysUnloadBin(void *Base);
61 extern void     SysSetFaultHandler(int (*Hanlder)(int));
62 extern int      open(const char *filename, int flags);
63 extern int      close(int fd);
64
65 // === ELF Loader ===
66 extern int      ElfGetSymbol(void *Base, const char *name, void **ret);
67
68 // === PE Loader ===
69 extern int      PE_GetSymbol(void *Base, char *Name, void **ret);
70
71 #endif

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