From 657585026a375d2cb2d06ab400f9deb487d89a17 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sat, 17 Jun 2023 17:53:23 +0200 Subject: libc: expand psdata into a proper struct, include executable base this is very useful for debugging userland programs using the qemu gdb stub --- src/user/lib/_start2.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'src/user/lib/_start2.c') diff --git a/src/user/lib/_start2.c b/src/user/lib/_start2.c index f55feab..b4eb76a 100644 --- a/src/user/lib/_start2.c +++ b/src/user/lib/_start2.c @@ -26,20 +26,17 @@ _Noreturn void _start2(struct execdata *ed) { elf_selfreloc(); /* done first so it isn't allocated elsewhere by accident */ - _sys_memflag(_libc_psdata, 1, MEMFLAG_PRESENT); - if (ed->argv[0]) { - strcpy(_libc_psdata, ed->argv[0]); - } else { - strcpy(_libc_psdata, "?"); - } + _sys_memflag(_psdata_loc, 1, MEMFLAG_PRESENT); + _psdata_loc->base = __executable_start; + /* sets ->desc */ + progname = shortname(ed->argv[0]); + setprogname(progname); + + _klogf("_start2 %s %p", progname, __executable_start); _sys_intr_set(intr_trampoline); intr_set(intr_default); __setinitialcwd(ed->cwd); - progname = shortname(ed->argv[0]); - setprogname(progname); - _klogf("_start2 %s %p", progname, __executable_start); - exit(main(ed->argc, ed->argv, ed->envp)); } -- cgit v1.2.3