From c77b0fa7916f79c099ee4a6a80a093334e9090ac Mon Sep 17 00:00:00 2001 From: dzwdz Date: Wed, 27 Jul 2022 13:59:52 +0200 Subject: user/libc: execve() supports passing argv now --- src/user/lib/elfload.s | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/user/lib/elfload.s (limited to 'src/user/lib/elfload.s') diff --git a/src/user/lib/elfload.s b/src/user/lib/elfload.s new file mode 100644 index 0000000..faab85f --- /dev/null +++ b/src/user/lib/elfload.s @@ -0,0 +1,17 @@ +.section .text +.global _freejmp_chstack +.type _freejmp_chstack, @function +// void _freejmp_chstack(void *entry, void *low, size_t len, char **argv, char **envp, void *stack); +_freejmp_chstack: + mov %r9, %rsp + jmp _freejmp + +.section .text +.global execbuf_chstack +.type execbuf_chstack, @function +// _Noreturn void execbuf_chstack(void *stack, void __user *buf, size_t len); +execbuf_chstack: + mov %rdi, %rsp + mov $100, %rdi + syscall + jmp 0 // if execbuf failed we might as well crash -- cgit v1.2.3