summaryrefslogtreecommitdiff
path: root/src/user/lib/_start2.c
diff options
context:
space:
mode:
authordzwdz2022-10-18 18:41:22 +0200
committerdzwdz2022-10-18 23:01:28 +0200
commit753d43d349bfde6b83cff650c9354c4a0442a3ae (patch)
tree1bb20c6f37c57bb957c9f96bc13eafc6a1f54f72 /src/user/lib/_start2.c
parent6bb22b0a144646788f8c14bce1bde147693da780 (diff)
user/libc: rework exec(), use a C _start2
Diffstat (limited to 'src/user/lib/_start2.c')
-rw-r--r--src/user/lib/_start2.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/user/lib/_start2.c b/src/user/lib/_start2.c
new file mode 100644
index 0000000..6d1431f
--- /dev/null
+++ b/src/user/lib/_start2.c
@@ -0,0 +1,13 @@
+#include <camellia/syscalls.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <user/lib/elfload.h>
+
+int main(int argc, char **argv, char **envp);
+
+_Noreturn void _start2(struct execdata *ed) {
+ elf_selfreloc();
+ __setinitialcwd(ed->cwd);
+ exit(main(ed->argc, ed->argv, ed->envp));
+}