diff options
author | johannst <johannes.stoelp@gmail.com> | 2020-11-24 23:46:17 +0100 |
---|---|---|
committer | johannst <johannes.stoelp@gmail.com> | 2020-11-24 23:46:17 +0100 |
commit | 9e90abfdb0b1b1f270b4ae0e4f5d8742d1f2f472 (patch) | |
tree | eaf508a17c3d54206f39f6275642bd53db70680f /02_process_init | |
parent | 046fdcf0d37359c04735c0189b350757e893723c (diff) | |
download | dynld-9e90abfdb0b1b1f270b4ae0e4f5d8742d1f2f472.tar.gz dynld-9e90abfdb0b1b1f270b4ae0e4f5d8742d1f2f472.zip |
factorize printf into io.h
Diffstat (limited to '02_process_init')
-rw-r--r-- | 02_process_init/Makefile | 8 | ||||
-rw-r--r-- | 02_process_init/entry.c | 18 |
2 files changed, 6 insertions, 20 deletions
diff --git a/02_process_init/Makefile b/02_process_init/Makefile index 6e1f512..430b0a9 100644 --- a/02_process_init/Makefile +++ b/02_process_init/Makefile @@ -1,18 +1,16 @@ # Copyright (c) 2020 Johannes Stoelp show: entry - #gdb -q --batch -ex 'starti' -ex 'x/g $$rsp' -ex 'x/s *(char**)($$rsp+8)' ./$^ ./entry 1 2 3 4 entry: entry.S entry.c gcc -o $@ \ - -I ../include \ + -g -O0 \ -Wall -Wextra \ - -static \ + -I ../include \ -nostartfiles -nodefaultlibs \ - -g -O0 \ + -static \ $^ - clean: rm -f entry diff --git a/02_process_init/entry.c b/02_process_init/entry.c index a6b0918..360d205 100644 --- a/02_process_init/entry.c +++ b/02_process_init/entry.c @@ -1,26 +1,14 @@ // Copyright (c) 2020 Johannes Stoelp -#include <asm/unistd.h> #include <elf.h> -#include <fmt.h> -#include <stdint.h> -#include <syscall.h> +#define MAX_PRINTF_LEN 128 +#include <io.h> #if !defined(__linux__) || !defined(__x86_64__) # error "Only supported in linux(x86_64)!" #endif -int dynld_printf(const char* fmt, ...) { - va_list ap; - va_start(ap, fmt); - char buf[64]; - int ret = dynld_vsnprintf(buf, sizeof(buf), fmt, ap); - va_end(ap); - syscall3(__NR_write, 1 /* stdout */, buf, ret); - return ret; -} - -void entry(long* prctx) { +void entry(const long* prctx) { // Interpret data on the stack passed by the OS kernel as specified in the // x86_64 SysV ABI. |