diff options
author | Tom de Vries <tdevries@suse.de> | 2025-03-13 07:41:51 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2025-03-13 07:41:51 +0100 |
commit | fbfb29b304ef7d3270a918b5fc60c22b0909367e (patch) | |
tree | 7a81e2c874fd0dcec142f24ec28f7894e6ba45ed /gdb/i386-linux-tdep.c | |
parent | 0d1d25671598eed4fdeab09d0ef987c12afce21c (diff) | |
download | binutils-fbfb29b304ef7d3270a918b5fc60c22b0909367e.zip binutils-fbfb29b304ef7d3270a918b5fc60c22b0909367e.tar.gz binutils-fbfb29b304ef7d3270a918b5fc60c22b0909367e.tar.bz2 |
[gdb/tdep] Rewrite i386_canonicalize_syscall
On openSUSE Tumbleweed x86_64, with target board unix/-m32 and test-case
gdb.reverse/recvmsg-reverse.exp, I run into:
...
(gdb) continue^M
Continuing.^M
Process record and replay target doesn't support syscall number 360^M
Process record: failed to record execution log.^M
^M
Program stopped.^M
0xf7fc5575 in __kernel_vsyscall ()^M
(gdb) FAIL: $exp: continue to breakpoint: marker2
...
The syscall number 360 in i386 is for syscall socketpair, as we can see in
arch/x86/entry/syscalls/syscall_32.tbl:
...
<number> <abi> <name> <entry point>
360 i386 socketpair sys_socketpair
...
Function i386_canonicalize_syscall assumes that any syscall below 500 maps to
an identically valued enum in enum gdb_syscall:
...
static enum gdb_syscall
i386_canonicalize_syscall (int syscall)
{
enum { i386_syscall_max = 499 };
if (syscall <= i386_syscall_max)
return (enum gdb_syscall) syscall;
else
return gdb_sys_no_syscall;
}
...
However, that's not the case. The value of gdb_sys_socketpair is not 360,
but 512:
...
enum gdb_syscall {
...
gdb_sys_getrandom = 355,
gdb_sys_statx = 383,
...
gdb_sys_socketpair = 512,
...
Consequently, when record_linux_system_call is called with
syscall == i386_canonicalize_syscall (360), we hit the default case here:
....
switch (syscall)
{
...
default:
gdb_printf (gdb_stderr,
_("Process record and replay target doesn't "
"support syscall number %d\n"), syscall);
return -1;
break;
}
...
rather than hitting the case for gdb_sys_socketpair.
I initially wrote a trivial fix for this, changing the value of
gdb_sys_socketpair to 360. However, Andreas Schwab pointed out that there are
other functions (ppc_canonicalize_syscall and s390_canonicalize_syscall) that
make assumptions about specific values of enum gdb_syscall, and fixing this
for i386 may break things for ppc or s390.
So instead, I decided to rewrite i386_canonicalize_syscall to match the
approach taken in aarch64_canonicalize_syscall, which allows
gdb_sys_socketpair to keep the same value.
So, fix this by:
- adding a new table file gdb/i386-syscalls.def, using a SYSCALL entry for
each syscall, generated from arch/x86/entry/syscalls/syscall_32.tbl,
- using gdb/i386-syscalls.def to define enum i386_syscall, and
- using macros SYSCALL_MAP, SYSCALL_MAP_RENAME and UNSUPPORTED_SYSCALL_MAP to
define the mapping from enum i386_syscall to enum gdb_syscall in
i386_canonicalize_syscall.
I've created the mapping as follows:
- I used arch/x86/entry/syscalls/syscall_32.tbl to generate an initial mapping
using SYSCALL_MAP for each syscall,
- I attempted to compile this and used the compilation errors about
non-existing gdb_sys_ values to change those entries to
UNSUPPORTED_SYSCALL_MAP, which got me a compiling version,
- I reviewed the UNSUPPORTED_SYSCALL_MAP entries, changing to
SYSCALL_MAP_RENAME where necessary,
- I then reviewed syscalls below 500 that mapped to a gdb_syscall value below
500, but not the same, and fixed those using SYSCALL_MAP_RENAME, and
- reviewed the mapping for gdb_syscall entries >= 500.
On the resulting mapping, I was able to do the following sanity check:
...
for (int i = 0; i < 500; ++i)
{
int res = i386_canonicalize_syscall (i);
if (res == i)
continue;
if (res == -1)
continue;
if (res >= 500)
continue;
gdb_assert_not_reached ("");
}
}
...
to make sure that any syscall below 500 either:
- maps to the same number,
- is unsupported, or
- maps to a number >= 500.
Coming back to our original problem, the socket pair syscall is addressed by
an entry:
...
SYSCALL_MAP (socketpair);
...
which maps i386_sys_socketpair (360) to gdb_sys_socketpair (512).
Tested on x86_64-linux with target board unix/-m32.
Approved-By: Guinevere Larsen <guinevere@redhat.com>
PR tdep/32770
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32770
Diffstat (limited to 'gdb/i386-linux-tdep.c')
-rw-r--r-- | gdb/i386-linux-tdep.c | 496 |
1 files changed, 490 insertions, 6 deletions
diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c index 9dec83a..374a603 100644 --- a/gdb/i386-linux-tdep.c +++ b/gdb/i386-linux-tdep.c @@ -370,6 +370,16 @@ i386_all_but_ip_registers_record (struct regcache *regcache) return 0; } +enum i386_syscall +{ +#define SYSCALL(NUMBER,NAME) \ + i386_sys_ ## NAME = NUMBER, + +#include "gdb/i386-syscalls.def" + +#undef SYSCALL +}; + /* i386_canonicalize_syscall maps from the native i386 Linux set of syscall ids into a canonical set of syscall ids used by process record (a mostly trivial mapping, since the canonical @@ -378,12 +388,486 @@ i386_all_but_ip_registers_record (struct regcache *regcache) static enum gdb_syscall i386_canonicalize_syscall (int syscall) { - enum { i386_syscall_max = 499 }; - - if (syscall <= i386_syscall_max) - return (enum gdb_syscall) syscall; - else - return gdb_sys_no_syscall; + switch ((enum i386_syscall) syscall) + { +#define SYSCALL_MAP(SYSCALL) \ + case i386_sys_ ## SYSCALL: \ + return gdb_sys_ ## SYSCALL + +#define SYSCALL_MAP_RENAME(SYSCALL,GDB_SYSCALL) \ + case i386_sys_##SYSCALL: \ + return GDB_SYSCALL; + +#define UNSUPPORTED_SYSCALL_MAP(SYSCALL) \ + case i386_sys_ ## SYSCALL: \ + return gdb_sys_no_syscall; + + SYSCALL_MAP (restart_syscall); + SYSCALL_MAP (exit); + SYSCALL_MAP (fork); + SYSCALL_MAP (read); + SYSCALL_MAP (write); + SYSCALL_MAP (open); + SYSCALL_MAP (close); + SYSCALL_MAP (waitpid); + SYSCALL_MAP (creat); + SYSCALL_MAP (link); + SYSCALL_MAP (unlink); + SYSCALL_MAP (execve); + SYSCALL_MAP (chdir); + SYSCALL_MAP (time); + SYSCALL_MAP (mknod); + SYSCALL_MAP (chmod); + SYSCALL_MAP_RENAME (lchown, gdb_sys_lchown16); + SYSCALL_MAP_RENAME (break, gdb_sys_ni_syscall17); + SYSCALL_MAP_RENAME (oldstat, gdb_sys_stat); + SYSCALL_MAP (lseek); + SYSCALL_MAP (getpid); + SYSCALL_MAP (mount); + SYSCALL_MAP_RENAME (umount, gdb_sys_oldumount); + SYSCALL_MAP_RENAME (setuid, gdb_sys_setuid16); + SYSCALL_MAP_RENAME (getuid, gdb_sys_getuid16); + SYSCALL_MAP (stime); + SYSCALL_MAP (ptrace); + SYSCALL_MAP (alarm); + SYSCALL_MAP_RENAME (oldfstat, gdb_sys_fstat); + SYSCALL_MAP (pause); + SYSCALL_MAP (utime); + SYSCALL_MAP_RENAME (stty, gdb_sys_ni_syscall31); + SYSCALL_MAP_RENAME (gtty, gdb_sys_ni_syscall32); + SYSCALL_MAP (access); + SYSCALL_MAP (nice); + SYSCALL_MAP_RENAME (ftime, gdb_sys_ni_syscall35); + SYSCALL_MAP (sync); + SYSCALL_MAP (kill); + SYSCALL_MAP (rename); + SYSCALL_MAP (mkdir); + SYSCALL_MAP (rmdir); + SYSCALL_MAP (dup); + SYSCALL_MAP (pipe); + SYSCALL_MAP (times); + SYSCALL_MAP_RENAME (prof, gdb_sys_ni_syscall44); + SYSCALL_MAP (brk); + SYSCALL_MAP_RENAME (setgid, gdb_sys_setgid16); + SYSCALL_MAP_RENAME (getgid, gdb_sys_getgid16); + SYSCALL_MAP (signal); + SYSCALL_MAP_RENAME (geteuid, gdb_sys_geteuid16); + SYSCALL_MAP_RENAME (getegid, gdb_sys_getegid16); + SYSCALL_MAP (acct); + SYSCALL_MAP_RENAME (umount2, gdb_sys_umount); + SYSCALL_MAP_RENAME (lock, gdb_sys_ni_syscall53); + SYSCALL_MAP (ioctl); + SYSCALL_MAP (fcntl); + SYSCALL_MAP_RENAME (mpx, gdb_sys_ni_syscall56); + SYSCALL_MAP (setpgid); + SYSCALL_MAP_RENAME (ulimit, gdb_sys_ni_syscall58); + SYSCALL_MAP_RENAME (oldolduname, gdb_sys_olduname); + SYSCALL_MAP (umask); + SYSCALL_MAP (chroot); + SYSCALL_MAP (ustat); + SYSCALL_MAP (dup2); + SYSCALL_MAP (getppid); + SYSCALL_MAP (getpgrp); + SYSCALL_MAP (setsid); + SYSCALL_MAP (sigaction); + SYSCALL_MAP (sgetmask); + SYSCALL_MAP (ssetmask); + SYSCALL_MAP_RENAME (setreuid, gdb_sys_setreuid16); + SYSCALL_MAP_RENAME (setregid, gdb_sys_setregid16); + SYSCALL_MAP (sigsuspend); + SYSCALL_MAP (sigpending); + SYSCALL_MAP (sethostname); + SYSCALL_MAP (setrlimit); + SYSCALL_MAP_RENAME (getrlimit, gdb_sys_old_getrlimit); + SYSCALL_MAP (getrusage); + SYSCALL_MAP (gettimeofday); + SYSCALL_MAP (settimeofday); + SYSCALL_MAP_RENAME (getgroups, gdb_sys_getgroups16); + SYSCALL_MAP_RENAME (setgroups, gdb_sys_setgroups16); + SYSCALL_MAP_RENAME (select, gdb_old_select); + SYSCALL_MAP (symlink); + SYSCALL_MAP_RENAME (oldlstat, gdb_sys_lstat); + SYSCALL_MAP (readlink); + SYSCALL_MAP (uselib); + SYSCALL_MAP (swapon); + SYSCALL_MAP (reboot); + SYSCALL_MAP_RENAME (readdir, gdb_old_readdir); + SYSCALL_MAP_RENAME (mmap, gdb_old_mmap); + SYSCALL_MAP (munmap); + SYSCALL_MAP (truncate); + SYSCALL_MAP (ftruncate); + SYSCALL_MAP (fchmod); + SYSCALL_MAP_RENAME (fchown, gdb_sys_fchown16); + SYSCALL_MAP (getpriority); + SYSCALL_MAP (setpriority); + SYSCALL_MAP_RENAME (profil, gdb_sys_ni_syscall98); + SYSCALL_MAP (statfs); + SYSCALL_MAP (fstatfs); + SYSCALL_MAP (ioperm); + SYSCALL_MAP (socketcall); + SYSCALL_MAP (syslog); + SYSCALL_MAP (setitimer); + SYSCALL_MAP (getitimer); + SYSCALL_MAP_RENAME (stat, gdb_sys_newstat); + SYSCALL_MAP_RENAME (lstat, gdb_sys_newlstat); + SYSCALL_MAP_RENAME (fstat, gdb_sys_newfstat); + SYSCALL_MAP_RENAME (olduname, gdb_sys_uname); + SYSCALL_MAP (iopl); + SYSCALL_MAP (vhangup); + SYSCALL_MAP_RENAME (idle, gdb_sys_ni_syscall112); + SYSCALL_MAP (vm86old); + SYSCALL_MAP (wait4); + SYSCALL_MAP (swapoff); + SYSCALL_MAP (sysinfo); + SYSCALL_MAP (ipc); + SYSCALL_MAP (fsync); + SYSCALL_MAP (sigreturn); + SYSCALL_MAP (clone); + SYSCALL_MAP (setdomainname); + SYSCALL_MAP_RENAME (uname, gdb_sys_newuname); + SYSCALL_MAP (modify_ldt); + SYSCALL_MAP (adjtimex); + SYSCALL_MAP (mprotect); + SYSCALL_MAP (sigprocmask); + SYSCALL_MAP_RENAME (create_module, gdb_sys_ni_syscall127); + SYSCALL_MAP (init_module); + SYSCALL_MAP (delete_module); + SYSCALL_MAP_RENAME (get_kernel_syms, gdb_sys_ni_syscall130); + SYSCALL_MAP (quotactl); + SYSCALL_MAP (getpgid); + SYSCALL_MAP (fchdir); + SYSCALL_MAP (bdflush); + SYSCALL_MAP (sysfs); + SYSCALL_MAP (personality); + SYSCALL_MAP_RENAME (afs_syscall, gdb_sys_ni_syscall137); + SYSCALL_MAP_RENAME (setfsuid, gdb_sys_setfsuid16); + SYSCALL_MAP_RENAME (setfsgid, gdb_sys_setfsgid16); + SYSCALL_MAP_RENAME (_llseek, gdb_sys_llseek); + SYSCALL_MAP (getdents); + SYSCALL_MAP_RENAME (_newselect, gdb_sys_select); + SYSCALL_MAP (flock); + SYSCALL_MAP (msync); + SYSCALL_MAP (readv); + SYSCALL_MAP (writev); + SYSCALL_MAP (getsid); + SYSCALL_MAP (fdatasync); + SYSCALL_MAP_RENAME (_sysctl, gdb_sys_sysctl); + SYSCALL_MAP (mlock); + SYSCALL_MAP (munlock); + SYSCALL_MAP (mlockall); + SYSCALL_MAP (munlockall); + SYSCALL_MAP (sched_setparam); + SYSCALL_MAP (sched_getparam); + SYSCALL_MAP (sched_setscheduler); + SYSCALL_MAP (sched_getscheduler); + SYSCALL_MAP (sched_yield); + SYSCALL_MAP (sched_get_priority_max); + SYSCALL_MAP (sched_get_priority_min); + SYSCALL_MAP (sched_rr_get_interval); + SYSCALL_MAP (nanosleep); + SYSCALL_MAP (mremap); + SYSCALL_MAP_RENAME (setresuid, gdb_sys_setresuid16); + SYSCALL_MAP_RENAME (getresuid, gdb_sys_getresuid16); + SYSCALL_MAP (vm86); + SYSCALL_MAP_RENAME (query_module, gdb_sys_ni_syscall167); + SYSCALL_MAP (poll); + SYSCALL_MAP (nfsservctl); + SYSCALL_MAP_RENAME (setresgid, gdb_sys_setresgid16); + SYSCALL_MAP_RENAME (getresgid, gdb_sys_getresgid16); + SYSCALL_MAP (prctl); + SYSCALL_MAP (rt_sigreturn); + SYSCALL_MAP (rt_sigaction); + SYSCALL_MAP (rt_sigprocmask); + SYSCALL_MAP (rt_sigpending); + SYSCALL_MAP (rt_sigtimedwait); + SYSCALL_MAP (rt_sigqueueinfo); + SYSCALL_MAP (rt_sigsuspend); + SYSCALL_MAP (pread64); + SYSCALL_MAP (pwrite64); + SYSCALL_MAP_RENAME (chown, gdb_sys_chown16); + SYSCALL_MAP (getcwd); + SYSCALL_MAP (capget); + SYSCALL_MAP (capset); + SYSCALL_MAP (sigaltstack); + SYSCALL_MAP (sendfile); + SYSCALL_MAP_RENAME (getpmsg, gdb_sys_ni_syscall188); + SYSCALL_MAP_RENAME (putpmsg, gdb_sys_ni_syscall189); + SYSCALL_MAP (vfork); + SYSCALL_MAP_RENAME (ugetrlimit, gdb_sys_getrlimit); + SYSCALL_MAP (mmap2); + SYSCALL_MAP (truncate64); + SYSCALL_MAP (ftruncate64); + SYSCALL_MAP (stat64); + SYSCALL_MAP (lstat64); + SYSCALL_MAP (fstat64); + + SYSCALL_MAP_RENAME (lchown32, gdb_sys_lchown); + SYSCALL_MAP_RENAME (getuid32, gdb_sys_getuid); + SYSCALL_MAP_RENAME (getgid32, gdb_sys_getgid); + SYSCALL_MAP_RENAME (geteuid32, gdb_sys_geteuid); + SYSCALL_MAP_RENAME (getegid32, gdb_sys_getegid); + SYSCALL_MAP_RENAME (setreuid32, gdb_sys_setreuid); + SYSCALL_MAP_RENAME (setregid32, gdb_sys_setregid); + SYSCALL_MAP_RENAME (getgroups32, gdb_sys_getgroups); + SYSCALL_MAP_RENAME (setgroups32, gdb_sys_setgroups); + SYSCALL_MAP_RENAME (fchown32, gdb_sys_fchown); + SYSCALL_MAP_RENAME (setresuid32, gdb_sys_setresuid); + SYSCALL_MAP_RENAME (getresuid32, gdb_sys_getresuid); + SYSCALL_MAP_RENAME (setresgid32, gdb_sys_setresgid); + SYSCALL_MAP_RENAME (getresgid32, gdb_sys_getresgid); + SYSCALL_MAP_RENAME (chown32, gdb_sys_chown); + SYSCALL_MAP_RENAME (setuid32, gdb_sys_setuid); + SYSCALL_MAP_RENAME (setgid32, gdb_sys_setgid); + SYSCALL_MAP_RENAME (setfsuid32, gdb_sys_setfsuid); + SYSCALL_MAP_RENAME (setfsgid32, gdb_sys_setfsgid); + + SYSCALL_MAP (pivot_root); + SYSCALL_MAP (mincore); + SYSCALL_MAP (madvise); + SYSCALL_MAP (getdents64); + SYSCALL_MAP (fcntl64); + SYSCALL_MAP (gettid); + SYSCALL_MAP (readahead); + SYSCALL_MAP (setxattr); + SYSCALL_MAP (lsetxattr); + SYSCALL_MAP (fsetxattr); + SYSCALL_MAP (getxattr); + SYSCALL_MAP (lgetxattr); + SYSCALL_MAP (fgetxattr); + SYSCALL_MAP (listxattr); + SYSCALL_MAP (llistxattr); + SYSCALL_MAP (flistxattr); + SYSCALL_MAP (removexattr); + SYSCALL_MAP (lremovexattr); + SYSCALL_MAP (fremovexattr); + SYSCALL_MAP (tkill); + SYSCALL_MAP (sendfile64); + SYSCALL_MAP (futex); + SYSCALL_MAP (sched_setaffinity); + SYSCALL_MAP (sched_getaffinity); + SYSCALL_MAP (set_thread_area); + SYSCALL_MAP (get_thread_area); + SYSCALL_MAP (io_setup); + SYSCALL_MAP (io_destroy); + SYSCALL_MAP (io_getevents); + SYSCALL_MAP (io_submit); + SYSCALL_MAP (io_cancel); + SYSCALL_MAP (fadvise64); + SYSCALL_MAP (exit_group); + SYSCALL_MAP (lookup_dcookie); + SYSCALL_MAP (epoll_create); + SYSCALL_MAP (epoll_ctl); + SYSCALL_MAP (epoll_wait); + SYSCALL_MAP (remap_file_pages); + SYSCALL_MAP (set_tid_address); + SYSCALL_MAP (timer_create); + SYSCALL_MAP (timer_settime); + SYSCALL_MAP (timer_gettime); + SYSCALL_MAP (timer_getoverrun); + SYSCALL_MAP (timer_delete); + SYSCALL_MAP (clock_settime); + SYSCALL_MAP (clock_gettime); + SYSCALL_MAP (clock_getres); + SYSCALL_MAP (clock_nanosleep); + SYSCALL_MAP (statfs64); + SYSCALL_MAP (fstatfs64); + SYSCALL_MAP (tgkill); + SYSCALL_MAP (utimes); + SYSCALL_MAP (fadvise64_64); + SYSCALL_MAP_RENAME (vserver, gdb_sys_ni_syscall273); + SYSCALL_MAP (mbind); + SYSCALL_MAP (get_mempolicy); + SYSCALL_MAP (set_mempolicy); + SYSCALL_MAP (mq_open); + SYSCALL_MAP (mq_unlink); + SYSCALL_MAP (mq_timedsend); + SYSCALL_MAP (mq_timedreceive); + SYSCALL_MAP (mq_notify); + SYSCALL_MAP (mq_getsetattr); + SYSCALL_MAP (kexec_load); + SYSCALL_MAP (waitid); + SYSCALL_MAP (add_key); + SYSCALL_MAP (request_key); + SYSCALL_MAP (keyctl); + SYSCALL_MAP (ioprio_set); + SYSCALL_MAP (ioprio_get); + SYSCALL_MAP (inotify_init); + SYSCALL_MAP (inotify_add_watch); + SYSCALL_MAP (inotify_rm_watch); + SYSCALL_MAP (migrate_pages); + SYSCALL_MAP (openat); + SYSCALL_MAP (mkdirat); + SYSCALL_MAP (mknodat); + SYSCALL_MAP (fchownat); + SYSCALL_MAP (futimesat); + SYSCALL_MAP (fstatat64); + SYSCALL_MAP (unlinkat); + SYSCALL_MAP (renameat); + SYSCALL_MAP (linkat); + SYSCALL_MAP (symlinkat); + SYSCALL_MAP (readlinkat); + SYSCALL_MAP (fchmodat); + SYSCALL_MAP (faccessat); + SYSCALL_MAP (pselect6); + SYSCALL_MAP (ppoll); + SYSCALL_MAP (unshare); + SYSCALL_MAP (set_robust_list); + SYSCALL_MAP (get_robust_list); + SYSCALL_MAP (splice); + SYSCALL_MAP (sync_file_range); + SYSCALL_MAP (tee); + SYSCALL_MAP (vmsplice); + SYSCALL_MAP (move_pages); + SYSCALL_MAP (getcpu); + SYSCALL_MAP (epoll_pwait); + UNSUPPORTED_SYSCALL_MAP (utimensat); + UNSUPPORTED_SYSCALL_MAP (signalfd); + UNSUPPORTED_SYSCALL_MAP (timerfd_create); + UNSUPPORTED_SYSCALL_MAP (eventfd); + SYSCALL_MAP (fallocate); + UNSUPPORTED_SYSCALL_MAP (timerfd_settime); + UNSUPPORTED_SYSCALL_MAP (timerfd_gettime); + UNSUPPORTED_SYSCALL_MAP (signalfd4); + SYSCALL_MAP (eventfd2); + SYSCALL_MAP (epoll_create1); + SYSCALL_MAP (dup3); + SYSCALL_MAP (pipe2); + SYSCALL_MAP (inotify_init1); + UNSUPPORTED_SYSCALL_MAP (preadv); + UNSUPPORTED_SYSCALL_MAP (pwritev); + UNSUPPORTED_SYSCALL_MAP (rt_tgsigqueueinfo); + UNSUPPORTED_SYSCALL_MAP (perf_event_open); + UNSUPPORTED_SYSCALL_MAP (recvmmsg); + UNSUPPORTED_SYSCALL_MAP (fanotify_init); + UNSUPPORTED_SYSCALL_MAP (fanotify_mark); + UNSUPPORTED_SYSCALL_MAP (prlimit64); + UNSUPPORTED_SYSCALL_MAP (name_to_handle_at); + UNSUPPORTED_SYSCALL_MAP (open_by_handle_at); + UNSUPPORTED_SYSCALL_MAP (clock_adjtime); + UNSUPPORTED_SYSCALL_MAP (syncfs); + UNSUPPORTED_SYSCALL_MAP (sendmmsg); + UNSUPPORTED_SYSCALL_MAP (setns); + UNSUPPORTED_SYSCALL_MAP (process_vm_readv); + UNSUPPORTED_SYSCALL_MAP (process_vm_writev); + UNSUPPORTED_SYSCALL_MAP (kcmp); + UNSUPPORTED_SYSCALL_MAP (finit_module); + UNSUPPORTED_SYSCALL_MAP (sched_setattr); + UNSUPPORTED_SYSCALL_MAP (sched_getattr); + UNSUPPORTED_SYSCALL_MAP (renameat2); + UNSUPPORTED_SYSCALL_MAP (seccomp); + SYSCALL_MAP (getrandom); + UNSUPPORTED_SYSCALL_MAP (memfd_create); + UNSUPPORTED_SYSCALL_MAP (bpf); + UNSUPPORTED_SYSCALL_MAP (execveat); + SYSCALL_MAP (socket); + SYSCALL_MAP (socketpair); + SYSCALL_MAP (bind); + SYSCALL_MAP (connect); + SYSCALL_MAP (listen); + UNSUPPORTED_SYSCALL_MAP (accept4); + SYSCALL_MAP (getsockopt); + SYSCALL_MAP (setsockopt); + SYSCALL_MAP (getsockname); + SYSCALL_MAP (getpeername); + SYSCALL_MAP (sendto); + SYSCALL_MAP (sendmsg); + SYSCALL_MAP (recvfrom); + SYSCALL_MAP (recvmsg); + SYSCALL_MAP (shutdown); + UNSUPPORTED_SYSCALL_MAP (userfaultfd); + UNSUPPORTED_SYSCALL_MAP (membarrier); + UNSUPPORTED_SYSCALL_MAP (mlock2); + UNSUPPORTED_SYSCALL_MAP (copy_file_range); + UNSUPPORTED_SYSCALL_MAP (preadv2); + UNSUPPORTED_SYSCALL_MAP (pwritev2); + UNSUPPORTED_SYSCALL_MAP (pkey_mprotect); + UNSUPPORTED_SYSCALL_MAP (pkey_alloc); + UNSUPPORTED_SYSCALL_MAP (pkey_free); + SYSCALL_MAP (statx); + UNSUPPORTED_SYSCALL_MAP (arch_prctl); + UNSUPPORTED_SYSCALL_MAP (io_pgetevents); + UNSUPPORTED_SYSCALL_MAP (rseq); + SYSCALL_MAP (semget); + SYSCALL_MAP (semctl); + SYSCALL_MAP (shmget); + SYSCALL_MAP (shmctl); + SYSCALL_MAP (shmat); + SYSCALL_MAP (shmdt); + SYSCALL_MAP (msgget); + SYSCALL_MAP (msgsnd); + SYSCALL_MAP (msgrcv); + SYSCALL_MAP (msgctl); + SYSCALL_MAP (clock_gettime64); + UNSUPPORTED_SYSCALL_MAP (clock_settime64); + UNSUPPORTED_SYSCALL_MAP (clock_adjtime64); + UNSUPPORTED_SYSCALL_MAP (clock_getres_time64); + UNSUPPORTED_SYSCALL_MAP (clock_nanosleep_time64); + UNSUPPORTED_SYSCALL_MAP (timer_gettime64); + UNSUPPORTED_SYSCALL_MAP (timer_settime64); + UNSUPPORTED_SYSCALL_MAP (timerfd_gettime64); + UNSUPPORTED_SYSCALL_MAP (timerfd_settime64); + UNSUPPORTED_SYSCALL_MAP (utimensat_time64); + UNSUPPORTED_SYSCALL_MAP (pselect6_time64); + UNSUPPORTED_SYSCALL_MAP (ppoll_time64); + UNSUPPORTED_SYSCALL_MAP (io_pgetevents_time64); + UNSUPPORTED_SYSCALL_MAP (recvmmsg_time64); + UNSUPPORTED_SYSCALL_MAP (mq_timedsend_time64); + UNSUPPORTED_SYSCALL_MAP (mq_timedreceive_time64); + SYSCALL_MAP_RENAME (semtimedop_time64, gdb_sys_semtimedop); + UNSUPPORTED_SYSCALL_MAP (rt_sigtimedwait_time64); + UNSUPPORTED_SYSCALL_MAP (futex_time64); + UNSUPPORTED_SYSCALL_MAP (sched_rr_get_interval_time64); + UNSUPPORTED_SYSCALL_MAP (pidfd_send_signal); + UNSUPPORTED_SYSCALL_MAP (io_uring_setup); + UNSUPPORTED_SYSCALL_MAP (io_uring_enter); + UNSUPPORTED_SYSCALL_MAP (io_uring_register); + UNSUPPORTED_SYSCALL_MAP (open_tree); + UNSUPPORTED_SYSCALL_MAP (move_mount); + UNSUPPORTED_SYSCALL_MAP (fsopen); + UNSUPPORTED_SYSCALL_MAP (fsconfig); + UNSUPPORTED_SYSCALL_MAP (fsmount); + UNSUPPORTED_SYSCALL_MAP (fspick); + UNSUPPORTED_SYSCALL_MAP (pidfd_open); + UNSUPPORTED_SYSCALL_MAP (clone3); + UNSUPPORTED_SYSCALL_MAP (close_range); + UNSUPPORTED_SYSCALL_MAP (openat2); + UNSUPPORTED_SYSCALL_MAP (pidfd_getfd); + UNSUPPORTED_SYSCALL_MAP (faccessat2); + UNSUPPORTED_SYSCALL_MAP (process_madvise); + UNSUPPORTED_SYSCALL_MAP (epoll_pwait2); + UNSUPPORTED_SYSCALL_MAP (mount_setattr); + UNSUPPORTED_SYSCALL_MAP (quotactl_fd); + UNSUPPORTED_SYSCALL_MAP (landlock_create_ruleset); + UNSUPPORTED_SYSCALL_MAP (landlock_add_rule); + UNSUPPORTED_SYSCALL_MAP (landlock_restrict_self); + UNSUPPORTED_SYSCALL_MAP (memfd_secret); + UNSUPPORTED_SYSCALL_MAP (process_mrelease); + UNSUPPORTED_SYSCALL_MAP (futex_waitv); + UNSUPPORTED_SYSCALL_MAP (set_mempolicy_home_node); + UNSUPPORTED_SYSCALL_MAP (cachestat); + UNSUPPORTED_SYSCALL_MAP (fchmodat2); + UNSUPPORTED_SYSCALL_MAP (map_shadow_stack); + UNSUPPORTED_SYSCALL_MAP (futex_wake); + UNSUPPORTED_SYSCALL_MAP (futex_wait); + UNSUPPORTED_SYSCALL_MAP (futex_requeue); + UNSUPPORTED_SYSCALL_MAP (statmount); + UNSUPPORTED_SYSCALL_MAP (listmount); + UNSUPPORTED_SYSCALL_MAP (lsm_get_self_attr); + UNSUPPORTED_SYSCALL_MAP (lsm_set_self_attr); + UNSUPPORTED_SYSCALL_MAP (lsm_list_modules); + UNSUPPORTED_SYSCALL_MAP (mseal); + UNSUPPORTED_SYSCALL_MAP (setxattrat); + UNSUPPORTED_SYSCALL_MAP (getxattrat); + UNSUPPORTED_SYSCALL_MAP (listxattrat); + UNSUPPORTED_SYSCALL_MAP (removexattrat); + +#undef SYSCALL_MAP +#undef SYSCALL_MAP_RENAME +#undef UNSUPPORTED_SYSCALL_MAP + + default: + return gdb_sys_no_syscall; + } } /* Value of the sigcode in case of a boundary fault. */ |