| 1 | From 4699a580ca1aeecd35742494eb0259ee962e89a8 Mon Sep 17 00:00:00 2001
|
| 2 | Message-Id: <4699a580ca1aeecd35742494eb0259ee962e89a8.1685735399.git.dev@jpoiret.xyz>
|
| 3 | From: Josselin Poiret <[email protected]>
|
| 4 | Date: Fri, 2 Jun 2023 21:42:31 +0200
|
| 5 | Subject: [PATCH] Add clone3.
|
| 6 |
|
| 7 | From: Josselin Poiret <[email protected]>
|
| 8 |
|
| 9 | ---
|
| 10 | src/syscall/sysnums-arm.h | 1 +
|
| 11 | src/syscall/sysnums-arm64.h | 1 +
|
| 12 | src/syscall/sysnums-i386.h | 1 +
|
| 13 | src/syscall/sysnums-sh4.h | 1 +
|
| 14 | src/syscall/sysnums-x32.h | 1 +
|
| 15 | src/syscall/sysnums-x86_64.h | 1 +
|
| 16 | src/syscall/sysnums.list | 1 +
|
| 17 | src/tracee/tracee.c | 4 ++++
|
| 18 | 8 files changed, 11 insertions(+)
|
| 19 |
|
| 20 | diff --git a/src/syscall/sysnums-arm.h b/src/syscall/sysnums-arm.h
|
| 21 | index dfd512f..306e2b1 100644
|
| 22 | |
| 23 | |
| 24 | @@ -341,4 +341,5 @@ static const Sysnum sysnums_arm[] = {
|
| 25 | [ 382 ] = PR_renameat2,
|
| 26 | [ 397 ] = PR_statx,
|
| 27 | [ 412 ] = PR_utimensat_time64,
|
| 28 | + [ 435 ] = PR_clone3,
|
| 29 | };
|
| 30 | diff --git a/src/syscall/sysnums-arm64.h b/src/syscall/sysnums-arm64.h
|
| 31 | index dfb9889..65ccc4e 100644
|
| 32 | |
| 33 | |
| 34 | @@ -264,4 +264,5 @@ static const Sysnum sysnums_arm64[] = {
|
| 35 | [ 275 ] = PR_sched_getattr,
|
| 36 | [ 276 ] = PR_renameat2,
|
| 37 | [ 291 ] = PR_statx,
|
| 38 | + [ 435 ] = PR_clone3,
|
| 39 | };
|
| 40 | diff --git a/src/syscall/sysnums-i386.h b/src/syscall/sysnums-i386.h
|
| 41 | index 3bbb70e..0f3daf2 100644
|
| 42 | |
| 43 | |
| 44 | @@ -353,4 +353,5 @@ static const Sysnum sysnums_i386[] = {
|
| 45 | [ 353 ] = PR_renameat2,
|
| 46 | [ 383 ] = PR_statx,
|
| 47 | [ 412 ] = PR_utimensat_time64,
|
| 48 | + [ 435 ] = PR_clone3,
|
| 49 | };
|
| 50 | diff --git a/src/syscall/sysnums-sh4.h b/src/syscall/sysnums-sh4.h
|
| 51 | index 1d3758c..09acca6 100644
|
| 52 | |
| 53 | |
| 54 | @@ -344,4 +344,5 @@ static const Sysnum sysnums_sh4[] = {
|
| 55 | [ 369 ] = PR_sched_setattr,
|
| 56 | [ 370 ] = PR_sched_getattr,
|
| 57 | [ 371 ] = PR_renameat2,
|
| 58 | + [ 435 ] = PR_clone3,
|
| 59 | };
|
| 60 | diff --git a/src/syscall/sysnums-x32.h b/src/syscall/sysnums-x32.h
|
| 61 | index 448c699..a9fdb48 100644
|
| 62 | |
| 63 | |
| 64 | @@ -277,6 +277,7 @@ static const Sysnum sysnums_x32[] = {
|
| 65 | [ 315 ] = PR_sched_getattr,
|
| 66 | [ 316 ] = PR_renameat2,
|
| 67 | [ 332 ] = PR_statx,
|
| 68 | + [ 435 ] = PR_clone3,
|
| 69 | [ 439 ] = PR_faccessat2,
|
| 70 | [ 512 ] = PR_rt_sigaction,
|
| 71 | [ 513 ] = PR_rt_sigreturn,
|
| 72 | diff --git a/src/syscall/sysnums-x86_64.h b/src/syscall/sysnums-x86_64.h
|
| 73 | index 92229f8..9840b4a 100644
|
| 74 | |
| 75 | |
| 76 | @@ -319,5 +319,6 @@ static const Sysnum sysnums_x86_64[] = {
|
| 77 | [ 315 ] = PR_sched_getattr,
|
| 78 | [ 316 ] = PR_renameat2,
|
| 79 | [ 332 ] = PR_statx,
|
| 80 | + [ 435 ] = PR_clone3,
|
| 81 | [ 439 ] = PR_faccessat2,
|
| 82 | };
|
| 83 | diff --git a/src/syscall/sysnums.list b/src/syscall/sysnums.list
|
| 84 | index 1d6e666..2b6c9b2 100644
|
| 85 | |
| 86 | |
| 87 | @@ -38,6 +38,7 @@ SYSNUM(clock_gettime)
|
| 88 | SYSNUM(clock_nanosleep)
|
| 89 | SYSNUM(clock_settime)
|
| 90 | SYSNUM(clone)
|
| 91 | +SYSNUM(clone3)
|
| 92 | SYSNUM(close)
|
| 93 | SYSNUM(connect)
|
| 94 | SYSNUM(creat)
|
| 95 | diff --git a/src/tracee/tracee.c b/src/tracee/tracee.c
|
| 96 | index 58ab7df..9b16f6a 100644
|
| 97 | |
| 98 | |
| 99 | @@ -403,6 +403,10 @@ int new_child(Tracee *parent, word_t clone_flags)
|
| 100 | status = fetch_regs(parent);
|
| 101 | if (status >= 0 && get_sysnum(parent, CURRENT) == PR_clone)
|
| 102 | clone_flags = peek_reg(parent, CURRENT, SYSARG_1);
|
| 103 | + else if (status >= 0 && get_sysnum(parent, CURRENT) == PR_clone3)
|
| 104 | + // Look at the first word of the clone_args structure, which
|
| 105 | + // contains the usual clone flags.
|
| 106 | + clone_flags = peek_word(parent, peek_reg(parent, CURRENT, SYSARG_1));
|
| 107 |
|
| 108 | /* Get the pid of the parent's new child. */
|
| 109 | status = ptrace(PTRACE_GETEVENTMSG, parent->pid, NULL, &pid);
|
| 110 |
|
| 111 | base-commit: bd5a5f63d72f8210d8cee76195eb9f0749e5bd70
|
| 112 | --
|
| 113 | 2.40.1
|
| 114 |
|