From 3655115e5a3c50fc06afd801100a9d75d813fd2b Mon Sep 17 00:00:00 2001 From: dzwdz Date: Wed, 19 Oct 2022 14:23:14 +0200 Subject: user/libc: BSD err.h, getprogname() --- src/user/lib/_start2.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/user/lib/_start2.c') diff --git a/src/user/lib/_start2.c b/src/user/lib/_start2.c index 6d1431f..0582dde 100644 --- a/src/user/lib/_start2.c +++ b/src/user/lib/_start2.c @@ -1,13 +1,30 @@ #include #include #include +#include #include #include int main(int argc, char **argv, char **envp); +__attribute__((visibility("hidden"))) +extern char _image_base[]; + +const char *shortname(const char *path) { + if (!path) return "unknown program"; + const char *slash = strrchr(path, '/'); + if (slash) return slash + 1; + return path; +} + _Noreturn void _start2(struct execdata *ed) { + const char *progname; elf_selfreloc(); __setinitialcwd(ed->cwd); + + progname = shortname(ed->argv[0]); + setprogname(progname); + _klogf("_start2 %s 0x%x", progname, _image_base); + exit(main(ed->argc, ed->argv, ed->envp)); } -- cgit v1.2.3