User/Kernel - ARMv7 fixes (relocation of .text)
[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 #include <stddef.h>
11 #include <stdarg.h>
12 #include <stdint.h>
13
14 typedef uintptr_t       Uint;
15 typedef uint8_t         Uint8;
16 typedef uint16_t        Uint16;
17 typedef uint32_t        Uint32;
18
19 // HACK: Replace with underscored
20 #define SysDebug        _SysDebug
21
22 // === CONSTANTS ===
23 #define MAX_LOADED_LIBRARIES    64
24 #define MAX_STRINGS_BYTES       4096
25 #define SYSTEM_LIB_DIR  "/Acess/Libs/"
26
27 // === Types ===
28 typedef struct {
29         void    *Base;
30         char    *Name;
31 }       tLoadedLib;
32
33 // === GLOBALS ===
34 extern tLoadedLib       gLoadedLibraries[MAX_LOADED_LIBRARIES];
35
36 // === Main ===
37 extern void     *DoRelocate(void *Base, char **envp, const char *Filename);
38
39 // === Library/Symbol Manipulation ==
40 extern void     *LoadLibrary(const char *Filename, const char *SearchDir, char **envp);
41 extern void     AddLoaded(const char *File, void *base);
42 extern int      GetSymbol(const char *Name, void **Value, size_t *size);
43 extern int      GetSymbolFromBase(void *base, const char *name, void **ret, size_t *size);
44
45 // === Library Functions ===
46 extern char     *strcpy(char *dest, const char *src);
47 extern char     *strcat(char *dest, const char *src);
48 extern int      strcmp(const char *s1, const char *s2);
49 extern int      strlen(const char *str);
50 extern int      file_exists(const char *filename);
51 extern void     *memcpy(void *dest, const void *src, size_t len);
52
53 // === System Calls ===
54 extern void     _exit(int retval);
55 extern void     SysDebug(const char *fmt, ...); //!< Now implemented in main.c
56 extern void     SysDebugV(const char *fmt, ...);
57 extern void     *SysLoadBin(const char *path, void **entry);
58 extern int      SysUnloadBin(void *Base);
59 extern void     SysSetFaultHandler(int (*Hanlder)(int));
60 extern int      open(const char *filename, int flags, ...);
61 extern int      close(int fd);
62
63 // === ELF Loader ===
64 extern void     *ElfRelocate(void *Base, char **envp, const char *Filename);
65 extern int      ElfGetSymbol(void *Base, const char *name, void **ret, size_t *Size);
66
67 // === PE Loader ===
68 extern void     *PE_Relocate(void *Base, char **envp, const char *Filename);
69 extern int      PE_GetSymbol(void *Base, const char *Name, void **ret, size_t *Size);
70
71 #endif

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