[PATCH v1] Add %open trace class.

glk0 hotkatz32 at gmail.com
Mon Apr 3 03:55:26 UTC 2023


The %open class includes syscalls syscalls used to open files: open,
openat, 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 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.
---
 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..5c6f0da9c 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 for syscalls used to open files.
 
 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



More information about the Strace-devel mailing list