logo

mstrace

Small Linux strace(1) implementationgit clone https://anongit.hacktivis.me/git/mstrace.git/
commit: 52f4560cc44c91ea8253fb72a9d33f12c490d204
parent 1394b58c98283546139668e56c6d99937007d0b1
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Tue,  8 Apr 2025 00:01:51 +0200

add support for nanosleep(2)

Diffstat:

Mprint_syscall.c1+
Msyscalls.sh18+++++++++++-------
Msyscalls.txt1+
3 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/print_syscall.c b/print_syscall.c @@ -13,6 +13,7 @@ #include <string.h> // memcpy #include <sys/ptrace.h> // ptrace() #include <sys/syscall.h> // SYS_* +#include <time.h> // struct timespec #include <unistd.h> // pid_t extern pid_t child; diff --git a/syscalls.sh b/syscalls.sh @@ -12,34 +12,38 @@ do "") break ;; - "size") + size) fmt="${fmt}${fmt_sep}\"%zd\"" fmt_args="${fmt_args}, (size_t)args[$n]" ;; - "off") + off) fmt="${fmt}${fmt_sep}Pri_u" fmt_args="${fmt_args}, (off_t)args[$n]" ;; - "uint") + uint) fmt="${fmt}${fmt_sep}Pri_u" fmt_args="${fmt_args}, (uint64_t)args[$n]" ;; - "int") + int) fmt="${fmt}${fmt_sep}Pri_i" fmt_args="${fmt_args}, (int64_t)args[$n]" ;; - "oct") + oct) fmt="${fmt}${fmt_sep}Pri_o" fmt_args="${fmt_args}, (int64_t)args[$n]" ;; - "hex"|"buf") + hex|buf|str) fmt="${fmt}${fmt_sep}Pri_x" fmt_args="${fmt_args}, (int64_t)args[$n]" ;; - "path") + path) fmt="${fmt}${fmt_sep}Pri_str" fmt_args="${fmt_args}, read_str(args[$n], PATH_MAX)" ;; + timespec) + fmt="${fmt}${fmt_sep}\"{tv_sec=\"Pri_i\", tv_nsec=\"Pri_i\"}\"" + fmt_args="${fmt_args}, (int64_t)(((const struct timespec *)args[$n])->tv_sec), (int64_t)(((const struct timespec *)args[$n])->tv_nsec)" + ;; *) echo "syscalls.sh: error: Unhandled type ${i}" >&2 exit 1 diff --git a/syscalls.txt b/syscalls.txt @@ -45,3 +45,4 @@ unlink path unlinkat int path vfork write int buf size +nanosleep timespec timespec