Usermode/libc - Fix strchr and strrchr behavior
[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 #include <acess/sys.h>
14 #include <assert.h>
15
16 typedef uintptr_t       Uint;
17 typedef uint8_t         Uint8;
18 typedef uint16_t        Uint16;
19 typedef uint32_t        Uint32;
20
21 #define ASSERT(cnd) do { if( !(cnd) ) { _SysDebug("ASSERT: "#cnd" failed"); *(volatile int*)1 = 123; } } while(0)
22
23 // HACK: Replace with underscored
24 #define SysDebug        _SysDebug
25
26 // === CONSTANTS ===
27 #define MAX_LOADED_LIBRARIES    64
28 #define MAX_STRINGS_BYTES       4096
29 #define SYSTEM_LIB_DIR  "/Acess/Libs/"
30
31 // === Types ===
32 typedef struct {
33         void    *Base;
34         char    *Name;
35 }       tLoadedLib;
36
37 typedef struct {
38         void    *Value;
39         const char      *Name;
40 } tLocalExport;
41
42 // === GLOBALS ===
43 extern tLoadedLib       gLoadedLibraries[MAX_LOADED_LIBRARIES];
44
45 // === Main ===
46 extern void     *DoRelocate(void *Base, char **envp, const char *Filename);
47
48 // === Library/Symbol Manipulation ==
49 extern void     *LoadLibrary(const char *Filename, const char *SearchDir, char **envp);
50 extern void     AddLoaded(const char *File, void *base);
51 extern int      GetSymbol(const char *Name, void **Value, size_t *size, void *IgnoreBase);
52 extern int      GetSymbolFromBase(void *base, const char *name, void **ret, size_t *size);
53
54 // === Library Functions ===
55 extern char     *strcpy(char *dest, const char *src);
56 extern char     *strcat(char *dest, const char *src);
57 extern int      strcmp(const char *s1, const char *s2);
58 extern int      strlen(const char *str);
59 extern int      file_exists(const char *filename);
60 extern void     *memcpy(void *dest, const void *src, size_t len);
61
62 // === System Calls ===
63
64 // === ELF Loader ===
65 extern void     *ElfRelocate(void *Base, char **envp, const char *Filename);
66 extern int      ElfGetSymbol(void *Base, const char *name, void **ret, size_t *Size);
67
68 // === PE Loader ===
69 extern void     *PE_Relocate(void *Base, char **envp, const char *Filename);
70 extern int      PE_GetSymbol(void *Base, const char *Name, void **ret, size_t *Size);
71
72 #endif

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