11 extern int giSyscall_ClientID;
12 extern int gbSyscallDebugEnabled;
13 extern void acess__exit(int Status);
14 extern void Request_Preinit(void);
17 void CallUser(void *Entry, int argc, char *argv[], char **envp) __attribute__((noreturn));
23 int main(int argc, char *argv[], char **envp)
29 int (*appMain)(int, char *[], char **);
37 // int syscall_handle = -1;
39 for( i = 1; i < argc; i ++ )
41 if(strcmp(argv[i], "--key") == 0) {
42 giSyscall_ClientID = atoi(argv[++i]);
46 if(strcmp(argv[i], "--socket") == 0) {
47 gSocket = atoi(argv[++i]);
51 if(strcmp(argv[i], "--binary") == 0) {
56 if(strcmp(argv[i], "--open") == 0) {
57 if( acess__SysOpen(argv[++i], 6) == -1 ) { // Read/Write
58 fprintf(stderr, "Unable to open '%s'\n", argv[i]);
63 if( strcmp(argv[i], "--trace") == 0 ) {
64 gbSyscallDebugEnabled = 1;
68 if( argv[i][0] != '-' ) break;
73 "Usage: ld-acess <executable> [arguments ...]\n"
75 "--key\t(internal) used to pass the system call handle when run with execve\n"
76 "--binary\tLoad a local binary directly\n"
77 "--open\tOpen a file before executing\n"
88 // printf("Exectutable Path: '%s'\n", appPath);
89 // printf("Executable argc = %i\n", appArgc);
91 base = Binary_Load(appPath, (uintptr_t*)&appMain);
92 printf("[DEBUG %i] base = %p\n", giSyscall_ClientID, base);
98 printf("==============================\n");
99 printf("[DEBUG %i] %i ", giSyscall_ClientID, appArgc);
100 for(i = 0; i < appArgc; i ++)
101 printf("\"%s\" ", appArgv[i]);
103 printf("[DEBUG %i] appMain = %p\n", giSyscall_ClientID, appMain);
104 // CallUser(appMain, appArgc, appArgv, envp);
105 rv = appMain(appArgc, appArgv, envp);
110 void CallUser(void *Entry, int argc, char *argv[], char **envp)
113 __asm__ __volatile__ (
118 : : "r" (Entry), "r" (argc), "r" (argv), "r" (envp)
125 void Warning(const char *Format, ...)
128 printf("[WARN %i] ", giSyscall_ClientID);
129 va_start(args, Format);
130 vprintf(Format, args);
135 void Notice(const char *Format, ...)
138 printf("[NOTICE %i] ", giSyscall_ClientID);
139 va_start(args, Format);
140 vprintf(Format, args);
145 void Debug(const char *Format, ...)
149 printf("%2i] ", giSyscall_ClientID);
150 va_start(args, Format);
151 vprintf(Format, args);