diff options
author | Dmitry V. Levin <ldv@strace.io> | 2022-01-17 08:00:00 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@strace.io> | 2022-01-17 08:00:00 +0000 |
commit | 4cd3b254ebb73b0a660db56e7badfdfc40669380 (patch) | |
tree | 36072814176df1d5e6bc0d97a7cc19fc69aee453 /src/defs.h | |
parent | e71f3095a92fcce771c02296b8f87ed40e0ef39b (diff) | |
download | strace-4cd3b254ebb73b0a660db56e7badfdfc40669380.tar.gz |
Introduce scno_pers_in_range and scno_pers_is_valid
* src/defs.h (scno_pers_in_range, scno_pers_is_valid): New functions.
* src/syscall_name.c (syscall_name_arch): Use scno_pers_is_valid.
Diffstat (limited to 'src/defs.h')
-rw-r--r-- | src/defs.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/defs.h b/src/defs.h index 99a1cd263..66e2c385d 100644 --- a/src/defs.h +++ b/src/defs.h @@ -1891,6 +1891,13 @@ scno_in_range(kernel_ulong_t scno) return scno < nsyscalls; } +/* Like scno_in_range but for the specified personality. */ +static inline bool +scno_pers_in_range(kernel_ulong_t scno, unsigned int pers) +{ + return scno < nsyscall_vec[pers]; +} + /* * Checks whether scno is not out of range, * its corresponding sysent[scno].sys_func is non-NULL, @@ -1904,6 +1911,15 @@ scno_is_valid(kernel_ulong_t scno) && !(sysent[scno].sys_flags & TRACE_INDIRECT_SUBCALL); } +/* Like scno_is_valid but for the specified personality. */ +static inline bool +scno_pers_is_valid(kernel_ulong_t scno, unsigned int pers) +{ + return scno_pers_in_range(scno, pers) + && sysent_vec[pers][scno].sys_func + && !(sysent_vec[pers][scno].sys_flags & TRACE_INDIRECT_SUBCALL); +} + # define MPERS_FUNC_NAME__(prefix, name) prefix ## name # define MPERS_FUNC_NAME_(prefix, name) MPERS_FUNC_NAME__(prefix, name) # define MPERS_FUNC_NAME(name) MPERS_FUNC_NAME_(MPERS_PREFIX, name) |