[PATCH v0] Add %open trace class.

Kossi Glokpor hotkatz32 at gmail.com
Sat Apr 1 19:19:06 UTC 2023


This patch adds the %open trace class to trace syscalls used
to open files. The %open class includes open, openat, creat,
 openat2 and open_by_handle_at.

syscallent headers are updated using the following command:

sed -i -r '
/\((open(at(2)?|_by_handle_at)?|creat)\)/ {
s/(\{[^,]*,\t[^0][^,]*)/\1|TO/
s/(\{[^,]*,\s*)0/\1TO/
}
' linux/*/syscallent*.h

* basic_filters.c (lookup_class): Add %open member to syscall_class[].
* sysent.h: Add TRACE_OPEN macro.
* sysent_shorthand_defs.h: Likewise.
* sysent_shorthand_undefs.h: Add undef.
* doc/strace.1.in (.SS Filtering): Add a description for `-e trace=%open`.
* strace.c (usage): Add %open group to help message.
* linux/32/syscallent.h: Add TC flag for %open syscalls.
* linux/64/syscallent.h: Likewise.
* linux/alpha/syscallent.h: Likewise.
* linux/arm/syscallent.h: Likewise.
* linux/avr32/syscallent.h: Likewise.
* linux/bfin/syscallent.h: Likewise.
* linux/generic/syscallent-common.h: Likewise.
* linux/hppa/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/ia64/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/microblaze/syscallent.h: Likewise.
* linux/mips/syscallent-n32.h: Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* linux/xtensa/syscallent.h: Likewise.
* NEWS: mention this change.

Signed-off-by: Kossi Glokpor <hotkatz32 at gmail.com>
Signed-off-by: glk0 <hotkatz32 at gmail.com>
---
 NEWS                                  |  1 +
 doc/strace.1.in                       |  6 ++++
 src/basic_filters.c                   |  1 +
 src/linux/32/syscallent.h             |  4 +--
 src/linux/64/syscallent.h             |  4 +--
 src/linux/alpha/syscallent.h          |  6 ++--
 src/linux/arm/syscallent.h            |  8 ++---
 src/linux/avr32/syscallent.h          |  8 ++---
 src/linux/bfin/syscallent.h           |  8 ++---
 src/linux/generic/syscallent-common.h |  2 +-
 src/linux/hppa/syscallent.h           |  8 ++---
 src/linux/i386/syscallent.h           |  8 ++---
 src/linux/ia64/syscallent.h           |  8 ++---
 src/linux/m68k/syscallent.h           |  8 ++---
 src/linux/microblaze/syscallent.h     |  8 ++---
 src/linux/mips/syscallent-n32.h       |  8 ++---
 src/linux/mips/syscallent-n64.h       |  8 ++---
 src/linux/mips/syscallent-o32.h       |  8 ++---
 src/linux/powerpc/syscallent.h        |  8 ++---
 src/linux/powerpc64/syscallent.h      |  8 ++---
 src/linux/s390/syscallent.h           |  8 ++---
 src/linux/s390x/syscallent.h          |  8 ++---
 src/linux/sh/syscallent.h             |  8 ++---
 src/linux/sh64/syscallent.h           |  8 ++---
 src/linux/sparc/syscallent.h          |  8 ++---
 src/linux/sparc64/syscallent.h        |  8 ++---
 src/linux/x32/syscallent.h            |  8 ++---
 src/linux/x86_64/syscallent.h         |  8 ++---
 src/linux/xtensa/syscallent.h         |  8 ++---
 src/strace.c                          |  2 +-
 src/sysent.h                          | 49 ++++++++++++++-------------
 src/sysent_shorthand_defs.h           |  2 ++
 src/sysent_shorthand_undefs.h         |  1 +
 33 files changed, 133 insertions(+), 121 deletions(-)

diff --git a/NEWS b/NEWS
index 5bf6c80cb..f4f21136a 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ Noteworthy changes in release ?.? (????-??-??)

 * Improvements
   * Updated lists of ioctl commands from Linux 6.3.
+  * Added -e trace=%open option for tracing syscalls reading or modifying

 Noteworthy changes in release 6.2 (2023-02-26)
 ==============================================
diff --git a/doc/strace.1.in b/doc/strace.1.in
index 71661bd2e..bd45fbad1 100644
--- a/doc/strace.1.in
+++ b/doc/strace.1.in
@@ -620,6 +620,12 @@ regular expression.
 .BR %clock
 Trace system calls that read or modify system clocks.
 .TP
+.BR %open
+Trace syscalls used to open files.
+Currently, this list includes
+.BR open "(2), " openat "(2), " openat2 "(2), " creat "(2) and"
+.BR open_by_handle_at "(2) syscalls."
+.TP
 .BR %pure
 Trace syscalls that always succeed and have no arguments.
 Currently, this list includes
diff --git a/src/basic_filters.c b/src/basic_filters.c
index 8aa476bf3..3c676c744 100644
--- a/src/basic_filters.c
+++ b/src/basic_filters.c
@@ -129,6 +129,7 @@ qualify_syscall_class(const char *str, unsigned int p,
struct number_set *set)
  { TRACE_STATFS_LIKE, "%%statfs" },
  { TRACE_PURE, "%pure" },
  { TRACE_CLOCK, "%clock" },
+ { TRACE_OPEN, "%open" },
  /* legacy class names */
  { 0, "all" },
  { TRACE_DESC, "desc" },
diff --git a/src/linux/32/syscallent.h b/src/linux/32/syscallent.h
index 44bb908e1..6b8602517 100644
--- a/src/linux/32/syscallent.h
+++ b/src/linux/32/syscallent.h
@@ -64,7 +64,7 @@
 [ 53] = { 3, TD|TF, SEN(fchmodat), "fchmodat" },
 [ 54] = { 5, TD|TF, SEN(fchownat), "fchownat" },
 [ 55] = { 3, TD, SEN(fchown), "fchown" },
-[ 56] = { 4, TD|TF, SEN(openat), "openat" },
+[ 56] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [ 57] = { 1, TD, SEN(close), "close" },
 [ 58] = { 0, 0, SEN(vhangup), "vhangup" },
 [ 59] = { 2, TD, SEN(pipe2), "pipe2" },
@@ -262,7 +262,7 @@
 [262] = { 2, TD, SEN(fanotify_init), "fanotify_init" },
 [263] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [264] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[265] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[265] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 /* [266] clock_adjtime */
 [267] = { 1, TD, SEN(syncfs), "syncfs" },
 [268] = { 2, TD, SEN(setns), "setns" },
diff --git a/src/linux/64/syscallent.h b/src/linux/64/syscallent.h
index 1463d1974..bbec47c9d 100644
--- a/src/linux/64/syscallent.h
+++ b/src/linux/64/syscallent.h
@@ -61,7 +61,7 @@
 [ 53] = { 3, TD|TF, SEN(fchmodat), "fchmodat" },
 [ 54] = { 5, TD|TF, SEN(fchownat), "fchownat" },
 [ 55] = { 3, TD, SEN(fchown), "fchown" },
-[ 56] = { 4, TD|TF, SEN(openat), "openat" },
+[ 56] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [ 57] = { 1, TD, SEN(close), "close" },
 [ 58] = { 0, 0, SEN(vhangup), "vhangup" },
 [ 59] = { 2, TD, SEN(pipe2), "pipe2" },
@@ -255,7 +255,7 @@
 [262] = { 2, TD, SEN(fanotify_init), "fanotify_init" },
 [263] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [264] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[265] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[265] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [266] = { 2, TCL, SEN(clock_adjtime64), "clock_adjtime" },
 [267] = { 1, TD, SEN(syncfs), "syncfs" },
 [268] = { 2, TD, SEN(setns), "setns" },
diff --git a/src/linux/alpha/syscallent.h b/src/linux/alpha/syscallent.h
index 87cbe59bd..8c6b47475 100644
--- a/src/linux/alpha/syscallent.h
+++ b/src/linux/alpha/syscallent.h
@@ -52,7 +52,7 @@
 [ 42] = { 0, TD, SEN(pipe), "pipe" },
 [ 43] = { 4, 0, SEN(printargs), "osf_set_program_attributes" },
 [ 44] = { 5, 0, SEN(printargs), "osf_profil" }, /* not implemented */
-[ 45] = { 3, TD|TF, SEN(open), "open" },
+[ 45] = { 3, TD|TF|TO, SEN(open), "open" },
 [ 46] = { 5, 0, SEN(printargs), "osf_old_sigaction" }, /* not implemented
*/
 [ 47] = { 0, TC|PU|NF, SEN(getxgid), "getxgid" },
 [ 48] = { 2, TS, SEN(osf_sigprocmask), "osf_sigprocmask" },
@@ -393,7 +393,7 @@
 [447] = { 1, TD, SEN(fdatasync), "fdatasync" },
 [448] = { 4, 0, SEN(kexec_load), "kexec_load" },
 [449] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[450] = { 4, TD|TF, SEN(openat), "openat" },
+[450] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [451] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [452] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [453] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -441,7 +441,7 @@
 [495] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [496] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [497] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[498] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[498] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [499] = { 2, TCL, SEN(clock_adjtime64), "clock_adjtime" },
 [500] = { 1, TD, SEN(syncfs), "syncfs" },
 [501] = { 2, TD, SEN(setns), "setns" },
diff --git a/src/linux/arm/syscallent.h b/src/linux/arm/syscallent.h
index 2086308a2..96ccefecf 100644
--- a/src/linux/arm/syscallent.h
+++ b/src/linux/arm/syscallent.h
@@ -12,10 +12,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 3, TP, SEN(waitpid), "waitpid" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -329,7 +329,7 @@
 [319] = { 6, TM, SEN(mbind), "mbind" },
 [320] = { 5, TM, SEN(get_mempolicy), "get_mempolicy" },
 [321] = { 3, TM, SEN(set_mempolicy), "set_mempolicy" },
-[322] = { 4, TD|TF, SEN(openat), "openat" },
+[322] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [323] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [324] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [325] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -378,7 +378,7 @@
 [368] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [369] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [370] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[371] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[371] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [372] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [373] = { 1, TD, SEN(syncfs), "syncfs" },
 [374] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/avr32/syscallent.h b/src/linux/avr32/syscallent.h
index 104044e5f..d2240c671 100644
--- a/src/linux/avr32/syscallent.h
+++ b/src/linux/avr32/syscallent.h
@@ -11,10 +11,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 1, NF, SEN(umask), "umask" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -249,7 +249,7 @@
 [240] = { 0, TD, SEN(inotify_init), "inotify_init" },
 [241] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch" },
 [242] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
-[243] = { 4, TD|TF, SEN(openat), "openat" },
+[243] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [244] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [245] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [246] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -311,7 +311,7 @@
 [302] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [303] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [304] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[305] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[305] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [306] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [307] = { 1, TD, SEN(syncfs), "syncfs" },
 [308] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/bfin/syscallent.h b/src/linux/bfin/syscallent.h
index 05720b4f9..4bc1d37bd 100644
--- a/src/linux/bfin/syscallent.h
+++ b/src/linux/bfin/syscallent.h
@@ -12,10 +12,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 3, TP, SEN(waitpid), "waitpid" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -301,7 +301,7 @@
 [292] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch" },
 [293] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [294] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[295] = { 4, TD|TF, SEN(openat), "openat" },
+[295] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [296] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [297] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [298] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -382,7 +382,7 @@
 [373] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [374] = { 3, 0, SEN(cacheflush), "cacheflush" },
 [375] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[376] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[376] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [377] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [378] = { 1, TD, SEN(syncfs), "syncfs" },
 [379] = { 2, TD, SEN(setns), "setns" },
diff --git a/src/linux/generic/syscallent-common.h
b/src/linux/generic/syscallent-common.h
index 97ba328e6..058a72edb 100644
--- a/src/linux/generic/syscallent-common.h
+++ b/src/linux/generic/syscallent-common.h
@@ -21,7 +21,7 @@
 [BASE_NR + 434] = { 2, TD, SEN(pidfd_open), "pidfd_open" },
 [BASE_NR + 435] = { 2, TP, SEN(clone3), "clone3" },
 [BASE_NR + 436] = { 3, 0, SEN(close_range), "close_range" },
-[BASE_NR + 437] = { 4, TD|TF, SEN(openat2), "openat2" },
+[BASE_NR + 437] = { 4, TD|TF|TO, SEN(openat2), "openat2" },
 [BASE_NR + 438] = { 3, TD, SEN(pidfd_getfd), "pidfd_getfd" },
 [BASE_NR + 439] = { 4, TD|TF, SEN(faccessat2), "faccessat2" },
 [BASE_NR + 440] = { 5, TD, SEN(process_madvise), "process_madvise" },
diff --git a/src/linux/hppa/syscallent.h b/src/linux/hppa/syscallent.h
index a7dd57ce9..a8b3db888 100644
--- a/src/linux/hppa/syscallent.h
+++ b/src/linux/hppa/syscallent.h
@@ -8,10 +8,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 3, TP, SEN(waitpid), "waitpid" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -278,7 +278,7 @@
 [272] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
 [273] = { 6, TD, SEN(pselect6_time32), "pselect6" },
 [274] = { 5, TD, SEN(ppoll_time32), "ppoll" },
-[275] = { 4, TD|TF, SEN(openat), "openat" },
+[275] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [276] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [277] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [278] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -329,7 +329,7 @@
 [323] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [324] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [325] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[326] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[326] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [327] = { 1, TD, SEN(syncfs), "syncfs" },
 [328] = { 2, TD, SEN(setns), "setns" },
 [329] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/i386/syscallent.h b/src/linux/i386/syscallent.h
index 3553a0575..68ee77892 100644
--- a/src/linux/i386/syscallent.h
+++ b/src/linux/i386/syscallent.h
@@ -12,10 +12,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 3, TP, SEN(waitpid), "waitpid" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -301,7 +301,7 @@
 [292] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch" },
 [293] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [294] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[295] = { 4, TD|TF, SEN(openat), "openat" },
+[295] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [296] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [297] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [298] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -348,7 +348,7 @@
 [339] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [340] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [341] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[342] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[342] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [343] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [344] = { 1, TD, SEN(syncfs), "syncfs" },
 [345] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/ia64/syscallent.h b/src/linux/ia64/syscallent.h
index b47c1cce1..ecd805777 100644
--- a/src/linux/ia64/syscallent.h
+++ b/src/linux/ia64/syscallent.h
@@ -24,9 +24,9 @@
 [BASE_NR +   1] = { 1, TP|SE, SEN(exit), "exit" },
 [BASE_NR +   2] = { 3, TD, SEN(read), "read" },
 [BASE_NR +   3] = { 3, TD, SEN(write), "write" },
-[BASE_NR +   4] = { 3, TD|TF, SEN(open), "open" },
+[BASE_NR +   4] = { 3, TD|TF|TO, SEN(open), "open" },
 [BASE_NR +   5] = { 1, TD, SEN(close), "close" },
-[BASE_NR +   6] = { 2, TD|TF, SEN(creat), "creat" },
+[BASE_NR +   6] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [BASE_NR +   7] = { 2, TF, SEN(link), "link" },
 [BASE_NR +   8] = { 1, TF, SEN(unlink), "unlink" },
 [BASE_NR +   9] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -277,7 +277,7 @@
 [BASE_NR + 254] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch"
},
 [BASE_NR + 255] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [BASE_NR + 256] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[BASE_NR + 257] = { 4, TD|TF, SEN(openat), "openat" },
+[BASE_NR + 257] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [BASE_NR + 258] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [BASE_NR + 259] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [BASE_NR + 260] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -323,7 +323,7 @@
 [BASE_NR + 300] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [BASE_NR + 301] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [BASE_NR + 302] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at"
},
-[BASE_NR + 303] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[BASE_NR + 303] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at"
},
 [BASE_NR + 304] = { 2, TCL, SEN(clock_adjtime64), "clock_adjtime" },
 [BASE_NR + 305] = { 1, TD, SEN(syncfs), "syncfs" },
 [BASE_NR + 306] = { 2, TD, SEN(setns), "setns" },
diff --git a/src/linux/m68k/syscallent.h b/src/linux/m68k/syscallent.h
index 3abd77b0c..ffd9605a4 100644
--- a/src/linux/m68k/syscallent.h
+++ b/src/linux/m68k/syscallent.h
@@ -12,10 +12,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 3, TP, SEN(waitpid), "waitpid" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -294,7 +294,7 @@
 [285] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch" },
 [286] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [287] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[288] = { 4, TD|TF, SEN(openat), "openat" },
+[288] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [289] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [290] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [291] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -347,7 +347,7 @@
 [338] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [339] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [340] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[341] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[341] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [342] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [343] = { 1, TD, SEN(syncfs), "syncfs" },
 [344] = { 2, TD, SEN(setns), "setns" },
diff --git a/src/linux/microblaze/syscallent.h
b/src/linux/microblaze/syscallent.h
index 15ca048ca..9722f9f37 100644
--- a/src/linux/microblaze/syscallent.h
+++ b/src/linux/microblaze/syscallent.h
@@ -12,10 +12,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 3, TP, SEN(waitpid), "waitpid" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -301,7 +301,7 @@
 [292] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch" },
 [293] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [294] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[295] = { 4, TD|TF, SEN(openat), "openat" },
+[295] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [296] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [297] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [298] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -378,7 +378,7 @@
 [369] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [370] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [371] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[372] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[372] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [373] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [374] = { 1, TD, SEN(syncfs), "syncfs" },
 [375] = { 2, TD, SEN(setns), "setns" },
diff --git a/src/linux/mips/syscallent-n32.h
b/src/linux/mips/syscallent-n32.h
index a3e2f1de3..70bb125b1 100644
--- a/src/linux/mips/syscallent-n32.h
+++ b/src/linux/mips/syscallent-n32.h
@@ -10,7 +10,7 @@
 /* For an N32 strace decode the N32 64-bit syscalls. */
 [BASE_NR +   0] = { 3, TD, SEN(read), "read" }, /* start of Linux N32 */
 [BASE_NR +   1] = { 3, TD, SEN(write), "write" },
-[BASE_NR +   2] = { 3, TD|TF, SEN(open), "open" },
+[BASE_NR +   2] = { 3, TD|TF|TO, SEN(open), "open" },
 [BASE_NR +   3] = { 1, TD, SEN(close), "close" },
 [BASE_NR +   4] = { 2, TF|TST|TSTA, SEN(stat64), "stat" },
 [BASE_NR +   5] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat" },
@@ -91,7 +91,7 @@
 [BASE_NR +  80] = { 2, TF, SEN(rename), "rename" },
 [BASE_NR +  81] = { 2, TF, SEN(mkdir), "mkdir" },
 [BASE_NR +  82] = { 1, TF, SEN(rmdir), "rmdir" },
-[BASE_NR +  83] = { 2, TD|TF, SEN(creat), "creat" },
+[BASE_NR +  83] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [BASE_NR +  84] = { 2, TF, SEN(link), "link" },
 [BASE_NR +  85] = { 1, TF, SEN(unlink), "unlink" },
 [BASE_NR +  86] = { 2, TF, SEN(symlink), "symlink" },
@@ -259,7 +259,7 @@
 [BASE_NR + 248] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch"
},
 [BASE_NR + 249] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [BASE_NR + 250] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[BASE_NR + 251] = { 4, TD|TF, SEN(openat), "openat" },
+[BASE_NR + 251] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [BASE_NR + 252] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [BASE_NR + 253] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [BASE_NR + 254] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -312,7 +312,7 @@
 [BASE_NR + 301] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [BASE_NR + 302] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [BASE_NR + 303] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at"
},
-[BASE_NR + 304] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[BASE_NR + 304] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at"
},
 [BASE_NR + 305] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [BASE_NR + 306] = { 1, TD, SEN(syncfs), "syncfs" },
 [BASE_NR + 307] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/mips/syscallent-n64.h
b/src/linux/mips/syscallent-n64.h
index 0eb9a4d57..271d85200 100644
--- a/src/linux/mips/syscallent-n64.h
+++ b/src/linux/mips/syscallent-n64.h
@@ -10,7 +10,7 @@
 /* For an N64 strace decode the N64 64-bit syscalls. */
 [BASE_NR +   0] = { 3, TD, SEN(read), "read" }, /* start of Linux N64 */
 [BASE_NR +   1] = { 3, TD, SEN(write), "write" },
-[BASE_NR +   2] = { 3, TD|TF, SEN(open), "open" },
+[BASE_NR +   2] = { 3, TD|TF|TO, SEN(open), "open" },
 [BASE_NR +   3] = { 1, TD, SEN(close), "close" },
 [BASE_NR +   4] = { 2, TF|TST|TSTA, SEN(stat), "stat" },
 [BASE_NR +   5] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
@@ -91,7 +91,7 @@
 [BASE_NR +  80] = { 2, TF, SEN(rename), "rename" },
 [BASE_NR +  81] = { 2, TF, SEN(mkdir), "mkdir" },
 [BASE_NR +  82] = { 1, TF, SEN(rmdir), "rmdir" },
-[BASE_NR +  83] = { 2, TD|TF, SEN(creat), "creat" },
+[BASE_NR +  83] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [BASE_NR +  84] = { 2, TF, SEN(link), "link" },
 [BASE_NR +  85] = { 1, TF, SEN(unlink), "unlink" },
 [BASE_NR +  86] = { 2, TF, SEN(symlink), "symlink" },
@@ -255,7 +255,7 @@
 [BASE_NR + 244] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch"
},
 [BASE_NR + 245] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [BASE_NR + 246] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[BASE_NR + 247] = { 4, TD|TF, SEN(openat), "openat" },
+[BASE_NR + 247] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [BASE_NR + 248] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [BASE_NR + 249] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [BASE_NR + 250] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -307,7 +307,7 @@
 [BASE_NR + 296] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [BASE_NR + 297] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [BASE_NR + 298] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at"
},
-[BASE_NR + 299] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[BASE_NR + 299] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at"
},
 [BASE_NR + 300] = { 2, TCL, SEN(clock_adjtime64), "clock_adjtime" },
 [BASE_NR + 301] = { 1, TD, SEN(syncfs), "syncfs" },
 [BASE_NR + 302] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/mips/syscallent-o32.h
b/src/linux/mips/syscallent-o32.h
index 61eb35dfe..b92a02bc4 100644
--- a/src/linux/mips/syscallent-o32.h
+++ b/src/linux/mips/syscallent-o32.h
@@ -14,10 +14,10 @@
 [BASE_NR +   2] = { 0, TP, SEN(fork), "fork" },
 [BASE_NR +   3] = { 3, TD, SEN(read), "read" },
 [BASE_NR +   4] = { 3, TD, SEN(write), "write" },
-[BASE_NR +   5] = { 3, TD|TF, SEN(open), "open" },
+[BASE_NR +   5] = { 3, TD|TF|TO, SEN(open), "open" },
 [BASE_NR +   6] = { 1, TD, SEN(close), "close" },
 [BASE_NR +   7] = { 3, TP, SEN(waitpid), "waitpid" },
-[BASE_NR +   8] = { 2, TD|TF, SEN(creat), "creat" },
+[BASE_NR +   8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [BASE_NR +   9] = { 2, TF, SEN(link), "link" },
 [BASE_NR +  10] = { 1, TF, SEN(unlink), "unlink" },
 [BASE_NR +  11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -297,7 +297,7 @@
 [BASE_NR + 285] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch"
},
 [BASE_NR + 286] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [BASE_NR + 287] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[BASE_NR + 288] = { 4, TD|TF, SEN(openat), "openat" },
+[BASE_NR + 288] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [BASE_NR + 289] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [BASE_NR + 290] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [BASE_NR + 291] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -349,7 +349,7 @@
 [BASE_NR + 337] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [BASE_NR + 338] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [BASE_NR + 339] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at"
},
-[BASE_NR + 340] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[BASE_NR + 340] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at"
},
 [BASE_NR + 341] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [BASE_NR + 342] = { 1, TD, SEN(syncfs), "syncfs" },
 [BASE_NR + 343] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/powerpc/syscallent.h b/src/linux/powerpc/syscallent.h
index 34b78cfb2..1d4400a1d 100644
--- a/src/linux/powerpc/syscallent.h
+++ b/src/linux/powerpc/syscallent.h
@@ -12,10 +12,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 3, TP, SEN(waitpid), "waitpid" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -293,7 +293,7 @@
 [283] = { 6, TD, SEN(splice), "splice" },
 [284] = { 4, TD, SEN(tee), "tee" },
 [285] = { 4, TD, SEN(vmsplice), "vmsplice" },
-[286] = { 4, TD|TF, SEN(openat), "openat" },
+[286] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [287] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [288] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [289] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -353,7 +353,7 @@
 [343] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" },
 [344] = { 4, TN, SEN(accept4), "accept4" },
 [345] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[346] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[346] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [347] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [348] = { 1, TD, SEN(syncfs), "syncfs" },
 [349] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/powerpc64/syscallent.h
b/src/linux/powerpc64/syscallent.h
index 0a4f7a8b5..51d9c86d5 100644
--- a/src/linux/powerpc64/syscallent.h
+++ b/src/linux/powerpc64/syscallent.h
@@ -12,10 +12,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 3, TP, SEN(waitpid), "waitpid" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -293,7 +293,7 @@
 [283] = { 6, TD, SEN(splice), "splice" },
 [284] = { 4, TD, SEN(tee), "tee" },
 [285] = { 4, TD, SEN(vmsplice), "vmsplice" },
-[286] = { 4, TD|TF, SEN(openat), "openat" },
+[286] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [287] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [288] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [289] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -353,7 +353,7 @@
 [343] = { 5, TN, SEN(recvmmsg_time64), "recvmmsg" },
 [344] = { 4, TN, SEN(accept4), "accept4" },
 [345] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[346] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[346] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [347] = { 2, TCL, SEN(clock_adjtime64), "clock_adjtime" },
 [348] = { 1, TD, SEN(syncfs), "syncfs" },
 [349] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/s390/syscallent.h b/src/linux/s390/syscallent.h
index a808c7b5b..cd83b85fa 100644
--- a/src/linux/s390/syscallent.h
+++ b/src/linux/s390/syscallent.h
@@ -14,10 +14,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 0, 0, SEN(restart_syscall), "restart_syscall" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -297,7 +297,7 @@
 [285] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch" },
 [286] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [287] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[288] = { 4, TD|TF, SEN(openat), "openat" },
+[288] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [289] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [290] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [291] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -345,7 +345,7 @@
 [333] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [334] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [335] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[336] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[336] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [337] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [338] = { 1, TD, SEN(syncfs), "syncfs" },
 [339] = { 2, TD, SEN(setns), "setns" },
diff --git a/src/linux/s390x/syscallent.h b/src/linux/s390x/syscallent.h
index 90bf993b7..df589569a 100644
--- a/src/linux/s390x/syscallent.h
+++ b/src/linux/s390x/syscallent.h
@@ -13,10 +13,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 0, 0, SEN(restart_syscall), "restart_syscall" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -281,7 +281,7 @@
 [285] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch" },
 [286] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [287] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[288] = { 4, TD|TF, SEN(openat), "openat" },
+[288] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [289] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [290] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [291] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -329,7 +329,7 @@
 [333] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [334] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [335] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[336] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[336] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [337] = { 2, TCL, SEN(clock_adjtime64), "clock_adjtime" },
 [338] = { 1, TD, SEN(syncfs), "syncfs" },
 [339] = { 2, TD, SEN(setns), "setns" },
diff --git a/src/linux/sh/syscallent.h b/src/linux/sh/syscallent.h
index c238f0400..f959b7b72 100644
--- a/src/linux/sh/syscallent.h
+++ b/src/linux/sh/syscallent.h
@@ -14,10 +14,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 3, TP, SEN(waitpid), "waitpid" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -301,7 +301,7 @@
 [292] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [293] = { },
 [294] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[295] = { 4, TD|TF, SEN(openat), "openat" },
+[295] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [296] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [297] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [298] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -366,7 +366,7 @@
 [357] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" },
 [358] = { 4, TN, SEN(accept4), "accept4" },
 [359] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[360] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[360] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [361] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [362] = { 1, TD, SEN(syncfs), "syncfs" },
 [363] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/sh64/syscallent.h b/src/linux/sh64/syscallent.h
index f33504235..8a04cfdde 100644
--- a/src/linux/sh64/syscallent.h
+++ b/src/linux/sh64/syscallent.h
@@ -12,10 +12,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 3, TP, SEN(waitpid), "waitpid" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 3, CC|TF|TP|TSD|SE|SI, SEN(execve), "execve" },
@@ -327,7 +327,7 @@
 [320] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [321] = { },
 [322] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[323] = { 4, TD|TF, SEN(openat), "openat" },
+[323] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [324] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [325] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [326] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -375,7 +375,7 @@
 [368] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [369] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [370] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[371] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[371] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [372] = { 2, TCL, SEN(clock_adjtime64), "clock_adjtime" },
 [373] = { 1, TD, SEN(syncfs), "syncfs" },
 [374] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/sparc/syscallent.h b/src/linux/sparc/syscallent.h
index ba2b1b0f1..5ec3c17d7 100644
--- a/src/linux/sparc/syscallent.h
+++ b/src/linux/sparc/syscallent.h
@@ -10,10 +10,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 4, TP, SEN(wait4), "wait4" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 2, CC|TF|TP|TSD|SE|SI, SEN(execv), "execv" },
@@ -289,7 +289,7 @@
 [281] = { 5, 0, SEN(add_key), "add_key" },
 [282] = { 4, 0, SEN(request_key), "request_key" },
 [283] = { 5, 0, SEN(keyctl), "keyctl" },
-[284] = { 4, TD|TF, SEN(openat), "openat" },
+[284] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [285] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [286] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [287] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -338,7 +338,7 @@
 [330] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [331] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [332] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[333] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[333] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [334] = { 2, TCL, SEN(clock_adjtime32), "clock_adjtime" },
 [335] = { 1, TD, SEN(syncfs), "syncfs" },
 [336] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/sparc64/syscallent.h b/src/linux/sparc64/syscallent.h
index 940d36635..ca3ee4863 100644
--- a/src/linux/sparc64/syscallent.h
+++ b/src/linux/sparc64/syscallent.h
@@ -10,10 +10,10 @@
 [  2] = { 0, TP, SEN(fork), "fork" },
 [  3] = { 3, TD, SEN(read), "read" },
 [  4] = { 3, TD, SEN(write), "write" },
-[  5] = { 3, TD|TF, SEN(open), "open" },
+[  5] = { 3, TD|TF|TO, SEN(open), "open" },
 [  6] = { 1, TD, SEN(close), "close" },
 [  7] = { 4, TP, SEN(wait4), "wait4" },
-[  8] = { 2, TD|TF, SEN(creat), "creat" },
+[  8] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [  9] = { 2, TF, SEN(link), "link" },
 [ 10] = { 1, TF, SEN(unlink), "unlink" },
 [ 11] = { 2, CC|TF|TP|TSD|SE|SI, SEN(execv), "execv" },
@@ -289,7 +289,7 @@
 [281] = { 5, 0, SEN(add_key), "add_key" },
 [282] = { 4, 0, SEN(request_key), "request_key" },
 [283] = { 5, 0, SEN(keyctl), "keyctl" },
-[284] = { 4, TD|TF, SEN(openat), "openat" },
+[284] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [285] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [286] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [287] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -338,7 +338,7 @@
 [330] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [331] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [332] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[333] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[333] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [334] = { 2, TCL, SEN(clock_sparc64_adjtime), "clock_adjtime" },
 [335] = { 1, TD, SEN(syncfs), "syncfs" },
 [336] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/x32/syscallent.h b/src/linux/x32/syscallent.h
index d9a773fa3..a07b4af54 100644
--- a/src/linux/x32/syscallent.h
+++ b/src/linux/x32/syscallent.h
@@ -7,7 +7,7 @@

 [  0] = { 3, TD, SEN(read), "read" },
 [  1] = { 3, TD, SEN(write), "write" },
-[  2] = { 3, TD|TF, SEN(open), "open" },
+[  2] = { 3, TD|TF|TO, SEN(open), "open" },
 [  3] = { 1, TD, SEN(close), "close" },
 [  4] = { 2, TF|TST|TSTA, SEN(stat), "stat" },
 [  5] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
@@ -90,7 +90,7 @@
 [ 82] = { 2, TF, SEN(rename), "rename" },
 [ 83] = { 2, TF, SEN(mkdir), "mkdir" },
 [ 84] = { 1, TF, SEN(rmdir), "rmdir" },
-[ 85] = { 2, TD|TF, SEN(creat), "creat" },
+[ 85] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [ 86] = { 2, TF, SEN(link), "link" },
 [ 87] = { 1, TF, SEN(unlink), "unlink" },
 [ 88] = { 2, TF, SEN(symlink), "symlink" },
@@ -262,7 +262,7 @@
 [254] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch" },
 [255] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [256] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[257] = { 4, TD|TF, SEN(openat), "openat" },
+[257] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [258] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [259] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [260] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -309,7 +309,7 @@
 [301] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [302] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [303] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[304] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[304] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [305] = { 2, TCL, SEN(clock_adjtime64), "clock_adjtime" },
 [306] = { 1, TD, SEN(syncfs), "syncfs" },
 [307] = { 4, TN, SEN(printargs), "sendmmsg#64" },
diff --git a/src/linux/x86_64/syscallent.h b/src/linux/x86_64/syscallent.h
index 9fd1e3f22..56eae3627 100644
--- a/src/linux/x86_64/syscallent.h
+++ b/src/linux/x86_64/syscallent.h
@@ -7,7 +7,7 @@

 [  0] = { 3, TD, SEN(read), "read" },
 [  1] = { 3, TD, SEN(write), "write" },
-[  2] = { 3, TD|TF, SEN(open), "open" },
+[  2] = { 3, TD|TF|TO, SEN(open), "open" },
 [  3] = { 1, TD, SEN(close), "close" },
 [  4] = { 2, TF|TST|TSTA, SEN(stat), "stat" },
 [  5] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
@@ -90,7 +90,7 @@
 [ 82] = { 2, TF, SEN(rename), "rename" },
 [ 83] = { 2, TF, SEN(mkdir), "mkdir" },
 [ 84] = { 1, TF, SEN(rmdir), "rmdir" },
-[ 85] = { 2, TD|TF, SEN(creat), "creat" },
+[ 85] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [ 86] = { 2, TF, SEN(link), "link" },
 [ 87] = { 1, TF, SEN(unlink), "unlink" },
 [ 88] = { 2, TF, SEN(symlink), "symlink" },
@@ -262,7 +262,7 @@
 [254] = { 3, TD|TF, SEN(inotify_add_watch), "inotify_add_watch" },
 [255] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
 [256] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
-[257] = { 4, TD|TF, SEN(openat), "openat" },
+[257] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [258] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [259] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [260] = { 5, TD|TF, SEN(fchownat), "fchownat" },
@@ -309,7 +309,7 @@
 [301] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
 [302] = { 4, 0, SEN(prlimit64), "prlimit64" },
 [303] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[304] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[304] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [305] = { 2, TCL, SEN(clock_adjtime64), "clock_adjtime" },
 [306] = { 1, TD, SEN(syncfs), "syncfs" },
 [307] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
diff --git a/src/linux/xtensa/syscallent.h b/src/linux/xtensa/syscallent.h
index 09fed329c..d1502f763 100644
--- a/src/linux/xtensa/syscallent.h
+++ b/src/linux/xtensa/syscallent.h
@@ -8,7 +8,7 @@
 [  0] = { 0, 0, SEN(printargs), "spill" },
 [  1] = { 0, 0, SEN(printargs), "xtensa" },
 [  2 ... 7] = { },
-[  8] = { 3, TD|TF, SEN(open), "open" },
+[  8] = { 3, TD|TF|TO, SEN(open), "open" },
 [  9] = { 1, TD, SEN(close), "close" },
 [ 10] = { 1, TD, SEN(dup), "dup" },
 [ 11] = { 2, TD, SEN(dup2), "dup2" },
@@ -21,7 +21,7 @@
 [ 18] = { 4, TD, SEN(epoll_wait), "epoll_wait" },
 [ 19] = { 4, TD, SEN(epoll_ctl), "epoll_ctl" },
 [ 20] = { 1, TD, SEN(epoll_create), "epoll_create" },
-[ 21] = { 2, TD|TF, SEN(creat), "creat" },
+[ 21] = { 2, TD|TF|TO, SEN(creat), "creat" },
 [ 22] = { 2, TF, SEN(truncate), "truncate" },
 [ 23] = { 2, TD, SEN(ftruncate), "ftruncate" },
 [ 24] = { 3, TD, SEN(readv), "readv" },
@@ -284,7 +284,7 @@
 [284] = { 2, 0, SEN(set_robust_list), "set_robust_list" },
 [285] = { 3, 0, SEN(get_robust_list), "get_robust_list" },
 [286 ... 287] = { },
-[288] = { 4, TD|TF, SEN(openat), "openat" },
+[288] = { 4, TD|TF|TO, SEN(openat), "openat" },
 [289] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
 [290] = { 4, TD|TF, SEN(mknodat), "mknodat" },
 [291] = { 3, TD|TF, SEN(unlinkat), "unlinkat" },
@@ -320,7 +320,7 @@
 [322] = { 6, 0, SEN(process_vm_readv), "process_vm_readv" },
 [323] = { 6, 0, SEN(process_vm_writev), "process_vm_writev" },
 [324] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
-[325] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
+[325] = { 3, TD|TO, SEN(open_by_handle_at), "open_by_handle_at" },
 [326] = { 6, TD, SEN(sync_file_range2), "sync_file_range2" },
 [327] = { 5, TD, SEN(perf_event_open), "perf_event_open" },
 [328] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" },
diff --git a/src/strace.c b/src/strace.c
index 21b693d02..bf3be8e7d 100644
--- a/src/strace.c
+++ b/src/strace.c
@@ -328,7 +328,7 @@ Filtering:\n\
                  trace only specified syscalls.\n\
      groups:     %%clock, %%creds, %%desc, %%file, %%fstat, %%fstatfs
%%ipc, %%lstat,\n\
                  %%memory, %%net, %%process, %%pure, %%signal, %%stat,
%%%%stat,\n\
-                 %%statfs, %%%%statfs\n\
+                 %%statfs, %%%%statfs, %%open\n\
   -e signal=SET, --signal=SET\n\
                  trace only the specified set of signals\n\
                  print only the signals from SET\n\
diff --git a/src/sysent.h b/src/sysent.h
index a551db8d5..05e1fca4e 100644
--- a/src/sysent.h
+++ b/src/sysent.h
@@ -18,29 +18,30 @@ typedef struct sysent {
  const char *sys_name;
 } struct_sysent;

-# define TRACE_FILE 000000001 /* Trace file-related syscalls. */
-# define TRACE_IPC 000000002 /* Trace IPC-related syscalls. */
-# define TRACE_NETWORK 000000004 /* Trace network-related syscalls. */
-# define TRACE_PROCESS 000000010 /* Trace process-related syscalls. */
-# define TRACE_SIGNAL 000000020 /* Trace signal-related syscalls. */
-# define TRACE_DESC 000000040 /* Trace file descriptor-related syscalls. */
-# define TRACE_MEMORY 000000100 /* Trace memory mapping-related syscalls.
*/
-# define SYSCALL_NEVER_FAILS 000000200 /* Syscall is always successful. */
-# define MEMORY_MAPPING_CHANGE 000000400 /* Trigger proc/maps cache
updating */
-# define STACKTRACE_CAPTURE_ON_ENTER 000001000 /* Capture stacktrace on
"entering" stage */
-# define TRACE_INDIRECT_SUBCALL 000002000 /* Syscall is an indirect
socket/ipc subcall. */
-# define COMPAT_SYSCALL_TYPES 000004000 /* A compat syscall that uses
compat types. */
-# define TRACE_STAT 000010000 /* Trace {,*_}{,old}{,x}stat{,64} syscalls.
*/
-# define TRACE_LSTAT 000020000 /* Trace *lstat* syscalls. */
-# define TRACE_STATFS 000040000 /* Trace statfs, statfs64, and statvfs
syscalls. */
-# define TRACE_FSTATFS 000100000 /* Trace fstatfs, fstatfs64 and fstatvfs
syscalls. */
-# define TRACE_STATFS_LIKE 000200000 /* Trace statfs-like, fstatfs-like
and ustat syscalls. */
-# define TRACE_FSTAT 000400000 /* Trace *fstat{,at}{,64} syscalls. */
-# define TRACE_STAT_LIKE 001000000 /* Trace *{,l,f}stat{,x,at}{,64}
syscalls. */
-# define TRACE_PURE 002000000 /* Trace getter syscalls with no arguments.
*/
-# define TRACE_SECCOMP_DEFAULT 004000000 /* Syscall is traced by seccomp
filter by default. */
-# define TRACE_CREDS 010000000 /* Trace process credentials-related
syscalls. */
-# define TRACE_CLOCK 020000000 /* Trace syscalls reading or modifying
system clocks. */
-# define COMM_CHANGE 040000000 /* Trigger /proc/$pid/comm cache update. */
+# define TRACE_FILE 0000000001 /* Trace file-related syscalls. */
+# define TRACE_IPC 0000000002 /* Trace IPC-related syscalls. */
+# define TRACE_NETWORK 0000000004 /* Trace network-related syscalls. */
+# define TRACE_PROCESS 0000000010 /* Trace process-related syscalls. */
+# define TRACE_SIGNAL 0000000020 /* Trace signal-related syscalls. */
+# define TRACE_DESC 0000000040 /* Trace file descriptor-related syscalls.
*/
+# define TRACE_MEMORY 0000000100 /* Trace memory mapping-related syscalls.
*/
+# define SYSCALL_NEVER_FAILS 0000000200 /* Syscall is always successful. */
+# define MEMORY_MAPPING_CHANGE 0000000400 /* Trigger proc/maps cache
updating */
+# define STACKTRACE_CAPTURE_ON_ENTER 0000001000 /* Capture stacktrace on
"entering" stage */
+# define TRACE_INDIRECT_SUBCALL 0000002000 /* Syscall is an indirect
socket/ipc subcall. */
+# define COMPAT_SYSCALL_TYPES 0000004000 /* A compat syscall that uses
compat types. */
+# define TRACE_STAT 0000010000 /* Trace {,*_}{,old}{,x}stat{,64} syscalls.
*/
+# define TRACE_LSTAT 0000020000 /* Trace *lstat* syscalls. */
+# define TRACE_STATFS 0000040000 /* Trace statfs, statfs64, and statvfs
syscalls. */
+# define TRACE_FSTATFS 0000100000 /* Trace fstatfs, fstatfs64 and fstatvfs
syscalls. */
+# define TRACE_STATFS_LIKE 0000200000 /* Trace statfs-like, fstatfs-like
and ustat syscalls. */
+# define TRACE_FSTAT 0000400000 /* Trace *fstat{,at}{,64} syscalls. */
+# define TRACE_STAT_LIKE 0001000000 /* Trace *{,l,f}stat{,x,at}{,64}
syscalls. */
+# define TRACE_PURE 0002000000 /* Trace getter syscalls with no arguments.
*/
+# define TRACE_SECCOMP_DEFAULT 0004000000 /* Syscall is traced by seccomp
filter by default. */
+# define TRACE_CREDS 0010000000 /* Trace process credentials-related
syscalls. */
+# define TRACE_CLOCK 0020000000 /* Trace syscalls reading or modifying
system clocks. */
+# define COMM_CHANGE 0040000000 /* Trigger /proc/$pid/comm cache update. */
+# define TRACE_OPEN 0100000000  /* Trace open, openat and creat syscalls */

 #endif /* !STRACE_SYSENT_H */
diff --git a/src/sysent_shorthand_defs.h b/src/sysent_shorthand_defs.h
index 4cf65342a..952b8f3f8 100644
--- a/src/sysent_shorthand_defs.h
+++ b/src/sysent_shorthand_defs.h
@@ -30,6 +30,7 @@
 # define TSD 0
 # define TC 0
 # define TCL 0
+# define TO    0
 # define CC     0
 # define SEN(a) 0, 0

@@ -59,6 +60,7 @@
 # define TC TRACE_CREDS
 # define TCL TRACE_CLOCK
 # define CC COMM_CHANGE
+# define TO TRACE_OPEN
 /* SEN(a) is defined elsewhere */

 #endif
diff --git a/src/sysent_shorthand_undefs.h b/src/sysent_shorthand_undefs.h
index b5ce3c6b2..7729eb44b 100644
--- a/src/sysent_shorthand_undefs.h
+++ b/src/sysent_shorthand_undefs.h
@@ -29,4 +29,5 @@
 #undef TC
 #undef TCL
 #undef CC
+#undef TO
 #undef SEN
-- 
2.34.1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20230401/797e520c/attachment.htm>


More information about the Strace-devel mailing list