Usermode/ld-acess - Large cleanup to ELF dynamic linking
[tpg/acess2.git] / Usermode / Libraries / ld-acess.so_src / export.c
1 /*
2  * Acess2 Dynamic Linker
3  */
4 #include "common.h"
5 #include <acess/sys.h>
6
7 extern uint64_t __udivdi3(uint64_t Num, uint64_t Den);
8 extern uint64_t __umoddi3(uint64_t Num, uint64_t Den);
9 extern int32_t  __divsi3(int32_t Num, int32_t Den);
10 extern int32_t  __modsi3(int32_t Num, int32_t Den);
11 extern uint32_t __udivsi3(uint32_t Num, uint32_t Den);
12 extern uint32_t __umodsi3(uint32_t Num, uint32_t Den);
13 extern void     ldacess_DumpLoadedLibraries(void);
14 extern void     _ZN4_sys5debugEPKcz(const char *,...);  // C++ "_sys::debug" used by STL debug
15
16 #define _STR(x) #x
17 #define STR(x)  _STR(x)
18 #define EXP(sym)        {&sym, STR(sym)}
19
20 #define SYSCALL0(name,num)      EXP(name),
21 #define SYSCALL1(name,num)      EXP(name),
22 #define SYSCALL2(name,num)      EXP(name),
23 #define SYSCALL3(name,num)      EXP(name),
24 #define SYSCALL4(name,num)      EXP(name),
25 #define SYSCALL5(name,num)      EXP(name),
26 #define SYSCALL6(name,num)      EXP(name),
27
28 // === CONSTANTS ===
29 const struct {
30         void    *Value;
31         char    *Name;
32 }       caLocalExports[] = {
33         EXP(gLoadedLibraries),
34         EXP(_errno),
35         EXP(ldacess_DumpLoadedLibraries),
36         
37         #define __ASSEMBLER__
38         #include "arch/syscalls.s.h"
39         #undef __ASSEMBLER__
40         
41         #ifdef ARCHDIR_is_armv7
42         {0, "__gnu_Unwind_Find_exidx"},
43         {0, "__cxa_call_unexpected"},
44         {0, "__cxa_type_match"},
45         {0, "__cxa_begin_cleanup"},
46         #endif
47 #if 0
48         EXP(__umoddi3),
49         EXP(__udivdi3),
50         EXP(__divsi3),
51         EXP(__modsi3),
52         EXP(__udivsi3),
53         EXP(__umodsi3)
54 #endif
55 };
56
57 const int       ciNumLocalExports = sizeof(caLocalExports)/sizeof(caLocalExports[0]);

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