diff --git a/Usermode/Libraries/ld-acess.so_src/arch/x86_64.asm.h b/Usermode/Libraries/ld-acess.so_src/arch/x86_64.asm.h index 2c9d87fcd55e6dce875673388b4726fa41e4b771..ea605ef69bdd766eedeea09dbf7ab10f3ee3726f 100644 --- a/Usermode/Libraries/ld-acess.so_src/arch/x86_64.asm.h +++ b/Usermode/Libraries/ld-acess.so_src/arch/x86_64.asm.h @@ -142,8 +142,10 @@ _SYSCALL_TAIL ; // Override the clone syscall #define clone _clone_raw +#define _exit _exit_raw #include "syscalls.s.h" #undef clone +#undef _exit [global clone:func] clone: @@ -162,11 +164,16 @@ clone: sub rsi, 3*8 .doCall: mov eax, SYS_CLONE - mov rdi, rsi ; Stack - mov rsi, [rbp+2*8] ; Flags SYSCALL_OP mov [rel _errno], ebx pop rbx pop rbp ret +[global _exit:func] +_exit: + xor eax, eax + SYSCALL_OP + jmp $ + +; vim: ft=nasm diff --git a/Usermode/Libraries/ld-acess.so_src/loadlib.c b/Usermode/Libraries/ld-acess.so_src/loadlib.c index 182109bf814355f49e8be4a354be110c7b647c5f..b6637c227773c8f13cc93e2069853426d2726f3a 100644 --- a/Usermode/Libraries/ld-acess.so_src/loadlib.c +++ b/Usermode/Libraries/ld-acess.so_src/loadlib.c @@ -5,7 +5,7 @@ #include "common.h" #include <stdint.h> -#define DEBUG 1 +#define DEBUG 0 #if DEBUG # define DEBUGS(v...) SysDebug(v) diff --git a/Usermode/Libraries/libc.so_src/stub.c b/Usermode/Libraries/libc.so_src/stub.c index fbdf30d085d62b6fef52690a9b945b7faf19069a..3cab984df2eea9bc15d8a3561e6151704bb31210 100644 --- a/Usermode/Libraries/libc.so_src/stub.c +++ b/Usermode/Libraries/libc.so_src/stub.c @@ -83,6 +83,7 @@ int ErrorHandler(int Fault) // fprintf(stderr, "%02i: %p %s\n", i, gLoadedLibraries[i].Base, gLoadedLibraries[i].Name); } fprintf(stderr, "\n"); + exit(-1); return -1; }