From 4699a580ca1aeecd35742494eb0259ee962e89a8 Mon Sep 17 00:00:00 2001 Message-Id: <4699a580ca1aeecd35742494eb0259ee962e89a8.1685735399.git.dev@jpoiret.xyz> From: Josselin Poiret Date: Fri, 2 Jun 2023 21:42:31 +0200 Subject: [PATCH] Add clone3. From: Josselin Poiret --- src/syscall/sysnums-arm.h | 1 + src/syscall/sysnums-arm64.h | 1 + src/syscall/sysnums-i386.h | 1 + src/syscall/sysnums-sh4.h | 1 + src/syscall/sysnums-x32.h | 1 + src/syscall/sysnums-x86_64.h | 1 + src/syscall/sysnums.list | 1 + src/tracee/tracee.c | 4 ++++ 8 files changed, 11 insertions(+) diff --git a/src/syscall/sysnums-arm.h b/src/syscall/sysnums-arm.h index dfd512f..306e2b1 100644 --- a/src/syscall/sysnums-arm.h +++ b/src/syscall/sysnums-arm.h @@ -341,4 +341,5 @@ static const Sysnum sysnums_arm[] = { [ 382 ] = PR_renameat2, [ 397 ] = PR_statx, [ 412 ] = PR_utimensat_time64, + [ 435 ] = PR_clone3, }; diff --git a/src/syscall/sysnums-arm64.h b/src/syscall/sysnums-arm64.h index dfb9889..65ccc4e 100644 --- a/src/syscall/sysnums-arm64.h +++ b/src/syscall/sysnums-arm64.h @@ -264,4 +264,5 @@ static const Sysnum sysnums_arm64[] = { [ 275 ] = PR_sched_getattr, [ 276 ] = PR_renameat2, [ 291 ] = PR_statx, + [ 435 ] = PR_clone3, }; diff --git a/src/syscall/sysnums-i386.h b/src/syscall/sysnums-i386.h index 3bbb70e..0f3daf2 100644 --- a/src/syscall/sysnums-i386.h +++ b/src/syscall/sysnums-i386.h @@ -353,4 +353,5 @@ static const Sysnum sysnums_i386[] = { [ 353 ] = PR_renameat2, [ 383 ] = PR_statx, [ 412 ] = PR_utimensat_time64, + [ 435 ] = PR_clone3, }; diff --git a/src/syscall/sysnums-sh4.h b/src/syscall/sysnums-sh4.h index 1d3758c..09acca6 100644 --- a/src/syscall/sysnums-sh4.h +++ b/src/syscall/sysnums-sh4.h @@ -344,4 +344,5 @@ static const Sysnum sysnums_sh4[] = { [ 369 ] = PR_sched_setattr, [ 370 ] = PR_sched_getattr, [ 371 ] = PR_renameat2, + [ 435 ] = PR_clone3, }; diff --git a/src/syscall/sysnums-x32.h b/src/syscall/sysnums-x32.h index 448c699..a9fdb48 100644 --- a/src/syscall/sysnums-x32.h +++ b/src/syscall/sysnums-x32.h @@ -277,6 +277,7 @@ static const Sysnum sysnums_x32[] = { [ 315 ] = PR_sched_getattr, [ 316 ] = PR_renameat2, [ 332 ] = PR_statx, + [ 435 ] = PR_clone3, [ 439 ] = PR_faccessat2, [ 512 ] = PR_rt_sigaction, [ 513 ] = PR_rt_sigreturn, diff --git a/src/syscall/sysnums-x86_64.h b/src/syscall/sysnums-x86_64.h index 92229f8..9840b4a 100644 --- a/src/syscall/sysnums-x86_64.h +++ b/src/syscall/sysnums-x86_64.h @@ -319,5 +319,6 @@ static const Sysnum sysnums_x86_64[] = { [ 315 ] = PR_sched_getattr, [ 316 ] = PR_renameat2, [ 332 ] = PR_statx, + [ 435 ] = PR_clone3, [ 439 ] = PR_faccessat2, }; diff --git a/src/syscall/sysnums.list b/src/syscall/sysnums.list index 1d6e666..2b6c9b2 100644 --- a/src/syscall/sysnums.list +++ b/src/syscall/sysnums.list @@ -38,6 +38,7 @@ SYSNUM(clock_gettime) SYSNUM(clock_nanosleep) SYSNUM(clock_settime) SYSNUM(clone) +SYSNUM(clone3) SYSNUM(close) SYSNUM(connect) SYSNUM(creat) diff --git a/src/tracee/tracee.c b/src/tracee/tracee.c index 58ab7df..9b16f6a 100644 --- a/src/tracee/tracee.c +++ b/src/tracee/tracee.c @@ -403,6 +403,10 @@ int new_child(Tracee *parent, word_t clone_flags) status = fetch_regs(parent); if (status >= 0 && get_sysnum(parent, CURRENT) == PR_clone) clone_flags = peek_reg(parent, CURRENT, SYSARG_1); + else if (status >= 0 && get_sysnum(parent, CURRENT) == PR_clone3) + // Look at the first word of the clone_args structure, which + // contains the usual clone flags. + clone_flags = peek_word(parent, peek_reg(parent, CURRENT, SYSARG_1)); /* Get the pid of the parent's new child. */ status = ptrace(PTRACE_GETEVENTMSG, parent->pid, NULL, &pid); base-commit: bd5a5f63d72f8210d8cee76195eb9f0749e5bd70 -- 2.40.1 4 13 (call-with-status-report _ _) In guix/scripts/system.scm: 1181:4 12 (process-action _ _ _) In guix/store.scm: 623:10 11 (call-with-store _) 1800:24 10 (run-with-store _ _ #:guile-for-build _ #:system _ #:target _) In guix/scripts/system.scm: 920:13 9 (_ _) 409:8 8 (_ _) In unknown file: 7 (primitive-load "/gnu/store/dha7j9gcz3vgb8cy7vfvvaswwsywrrzj-activate") In ice-9/boot-9.scm: 260:13 6 (for-each #<procedure primitive-load (_)> _) In unknown file: 5 (primitive-load "/gnu/store/ql1xjxrssxm51z2bn2v6l3mlrncij84h-activate-service") In ice-9/eval.scm: 619:8 4 (_ #f) 196:35 3 (_ #f) 196:27 2 (_ #f) 223:20 1 (proc #<directory (guile-user) 1fa4140>) In unknown file: 0 (%resolve-variable (7 . cut) #<directory (guile-user) 1fa4140>) ERROR: In procedure %resolve-variable: error: cut: unbound variable Reported-by: Alex McGrath on #guix. * gnu/services/nix.scm (nix-activation): Import and use (srfi srfi-26). Tobias Geerinckx-Rice 2019-06-10services: Add 'nix-service-type'....* gnu/services/nix.scm: New file. * gnu/local.mk: Add this. * doc/guix.texi (Miscellaneous Services): Document this. Oleg Pykhalov