/* Process record and replay target code for GNU/Linux.

   Copyright (C) 2008-2025 Free Software Foundation, Inc.

   This file is part of GDB.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

#ifndef GDB_LINUX_RECORD_H
#define GDB_LINUX_RECORD_H

struct linux_record_tdep
{
  /* The size of the type that will be used in a system call.  */
  int size_pointer;
  int size__old_kernel_stat;
  int size_tms;
  int size_loff_t;
  int size_flock;
  int size_oldold_utsname;
  int size_ustat;
  int size_old_sigaction;
  int size_old_sigset_t;
  int size_rlimit;
  int size_rusage;
  int size_timeval;
  int size_timezone;
  int size_old_gid_t;
  int size_old_uid_t;
  int size_fd_set;
  int size_old_dirent;
  int size_statfs;
  int size_statfs64;
  int size_sockaddr;
  int size_int;
  int size_long;
  int size_ulong;
  int size_msghdr;
  int size_itimerval;
  int size_stat;
  int size_old_utsname;
  int size_sysinfo;
  int size_msqid_ds;
  int size_shmid_ds;
  int size_new_utsname;
  int size_timex;
  int size_mem_dqinfo;
  int size_if_dqblk;
  int size_fs_quota_stat;
  int size_timespec;
  int size_pollfd;
  int size_NFS_FHSIZE;
  int size_knfsd_fh;
  int size_TASK_COMM_LEN;
  int size_sigaction;
  int size_sigset_t;
  int size_siginfo_t;
  int size_cap_user_data_t;
  int size_stack_t;
  int size_off_t;
  int size_stat64;
  int size_gid_t;
  int size_uid_t;
  int size_PAGE_SIZE;
  int size_flock64;
  int size_user_desc;
  int size_io_event;
  int size_iocb;
  int size_epoll_event;
  int size_itimerspec;
  int size_mq_attr;
  int size_termios;
  int size_termios2;
  int size_pid_t;
  int size_winsize;
  int size_serial_struct;
  int size_serial_icounter_struct;
  int size_hayes_esp_config;
  int size_size_t;
  int size_iovec;
  int size_time_t;

  /* The values of the second argument of system call "sys_ioctl".  */
  ULONGEST ioctl_TCGETS;
  ULONGEST ioctl_TCSETS;
  ULONGEST ioctl_TCSETSW;
  ULONGEST ioctl_TCSETSF;
  ULONGEST ioctl_TCGETA;
  ULONGEST ioctl_TCSETA;
  ULONGEST ioctl_TCSETAW;
  ULONGEST ioctl_TCSETAF;
  ULONGEST ioctl_TCSBRK;
  ULONGEST ioctl_TCXONC;
  ULONGEST ioctl_TCFLSH;
  ULONGEST ioctl_TIOCEXCL;
  ULONGEST ioctl_TIOCNXCL;
  ULONGEST ioctl_TIOCSCTTY;
  ULONGEST ioctl_TIOCGPGRP;
  ULONGEST ioctl_TIOCSPGRP;
  ULONGEST ioctl_TIOCOUTQ;
  ULONGEST ioctl_TIOCSTI;
  ULONGEST ioctl_TIOCGWINSZ;
  ULONGEST ioctl_TIOCSWINSZ;
  ULONGEST ioctl_TIOCMGET;
  ULONGEST ioctl_TIOCMBIS;
  ULONGEST ioctl_TIOCMBIC;
  ULONGEST ioctl_TIOCMSET;
  ULONGEST ioctl_TIOCGSOFTCAR;
  ULONGEST ioctl_TIOCSSOFTCAR;
  ULONGEST ioctl_FIONREAD;
  ULONGEST ioctl_TIOCINQ;
  ULONGEST ioctl_TIOCLINUX;
  ULONGEST ioctl_TIOCCONS;
  ULONGEST ioctl_TIOCGSERIAL;
  ULONGEST ioctl_TIOCSSERIAL;
  ULONGEST ioctl_TIOCPKT;
  ULONGEST ioctl_FIONBIO;
  ULONGEST ioctl_TIOCNOTTY;
  ULONGEST ioctl_TIOCSETD;
  ULONGEST ioctl_TIOCGETD;
  ULONGEST ioctl_TCSBRKP;
  ULONGEST ioctl_TIOCTTYGSTRUCT;
  ULONGEST ioctl_TIOCSBRK;
  ULONGEST ioctl_TIOCCBRK;
  ULONGEST ioctl_TIOCGSID;
  ULONGEST ioctl_TCGETS2;
  ULONGEST ioctl_TCSETS2;
  ULONGEST ioctl_TCSETSW2;
  ULONGEST ioctl_TCSETSF2;
  ULONGEST ioctl_TIOCGPTN;
  ULONGEST ioctl_TIOCSPTLCK;
  ULONGEST ioctl_FIONCLEX;
  ULONGEST ioctl_FIOCLEX;
  ULONGEST ioctl_FIOASYNC;
  ULONGEST ioctl_TIOCSERCONFIG;
  ULONGEST ioctl_TIOCSERGWILD;
  ULONGEST ioctl_TIOCSERSWILD;
  ULONGEST ioctl_TIOCGLCKTRMIOS;
  ULONGEST ioctl_TIOCSLCKTRMIOS;
  ULONGEST ioctl_TIOCSERGSTRUCT;
  ULONGEST ioctl_TIOCSERGETLSR;
  ULONGEST ioctl_TIOCSERGETMULTI;
  ULONGEST ioctl_TIOCSERSETMULTI;
  ULONGEST ioctl_TIOCMIWAIT;
  ULONGEST ioctl_TIOCGICOUNT;
  ULONGEST ioctl_TIOCGHAYESESP;
  ULONGEST ioctl_TIOCSHAYESESP;
  ULONGEST ioctl_FIOQSIZE;

  /* The values of the second argument of system call "sys_fcntl"
     and "sys_fcntl64".  */
  int fcntl_F_GETLK;
  int fcntl_F_GETLK64;
  int fcntl_F_SETLK64;
  int fcntl_F_SETLKW64;

  /* The number of the registers that are used as the arguments of
     a system call.  */
  int arg1;
  int arg2;
  int arg3;
  int arg4;
  int arg5;
  int arg6;
  int arg7;
};

/* Enum that defines the gdb-canonical set of Linux syscall identifiers.
   Different architectures will have different sets of syscall ids, and
   each must provide a mapping from their set to this one.  */

enum gdb_syscall {
  /* An unknown GDB syscall, not a real syscall.  */
  gdb_sys_no_syscall = -1,

  gdb_sys_restart_syscall = 0,
  gdb_sys_exit = 1,
  gdb_sys_fork = 2,
  gdb_sys_read = 3,
  gdb_sys_write = 4,
  gdb_sys_open = 5,
  gdb_sys_close = 6,
  gdb_sys_waitpid = 7,
  gdb_sys_creat = 8,
  gdb_sys_link = 9,
  gdb_sys_unlink = 10,
  gdb_sys_execve = 11,
  gdb_sys_chdir = 12,
  gdb_sys_time = 13,
  gdb_sys_mknod = 14,
  gdb_sys_chmod = 15,
  gdb_sys_lchown16 = 16,
  gdb_sys_ni_syscall17 = 17,
  gdb_sys_stat = 18,
  gdb_sys_lseek = 19,
  gdb_sys_getpid = 20,
  gdb_sys_mount = 21,
  gdb_sys_oldumount = 22,
  gdb_sys_setuid16 = 23,
  gdb_sys_getuid16 = 24,
  gdb_sys_stime = 25,
  gdb_sys_ptrace = 26,
  gdb_sys_alarm = 27,
  gdb_sys_fstat = 28,
  gdb_sys_pause = 29,
  gdb_sys_utime = 30,
  gdb_sys_ni_syscall31 = 31,
  gdb_sys_ni_syscall32 = 32,
  gdb_sys_access = 33,
  gdb_sys_nice = 34,
  gdb_sys_ni_syscall35 = 35,
  gdb_sys_sync = 36,
  gdb_sys_kill = 37,
  gdb_sys_rename = 38,
  gdb_sys_mkdir = 39,
  gdb_sys_rmdir = 40,
  gdb_sys_dup = 41,
  gdb_sys_pipe = 42,
  gdb_sys_times = 43,
  gdb_sys_ni_syscall44 = 44,
  gdb_sys_brk = 45,
  gdb_sys_setgid16 = 46,
  gdb_sys_getgid16 = 47,
  gdb_sys_signal = 48,
  gdb_sys_geteuid16 = 49,
  gdb_sys_getegid16 = 50,
  gdb_sys_acct = 51,
  gdb_sys_umount = 52,
  gdb_sys_ni_syscall53 = 53,
  gdb_sys_ioctl = 54,
  gdb_sys_fcntl = 55,
  gdb_sys_ni_syscall56 = 56,
  gdb_sys_setpgid = 57,
  gdb_sys_ni_syscall58 = 58,
  gdb_sys_olduname = 59,
  gdb_sys_umask = 60,
  gdb_sys_chroot = 61,
  gdb_sys_ustat = 62,
  gdb_sys_dup2 = 63,
  gdb_sys_getppid = 64,
  gdb_sys_getpgrp = 65,
  gdb_sys_setsid = 66,
  gdb_sys_sigaction = 67,
  gdb_sys_sgetmask = 68,
  gdb_sys_ssetmask = 69,
  gdb_sys_setreuid16 = 70,
  gdb_sys_setregid16 = 71,
  gdb_sys_sigsuspend = 72,
  gdb_sys_sigpending = 73,
  gdb_sys_sethostname = 74,
  gdb_sys_setrlimit = 75,
  gdb_sys_old_getrlimit = 76,
  gdb_sys_getrusage = 77,
  gdb_sys_gettimeofday = 78,
  gdb_sys_settimeofday = 79,
  gdb_sys_getgroups16 = 80,
  gdb_sys_setgroups16 = 81,
  gdb_sys_old_select = 82,
  gdb_sys_symlink = 83,
  gdb_sys_lstat = 84,
  gdb_sys_readlink = 85,
  gdb_sys_uselib = 86,
  gdb_sys_swapon = 87,
  gdb_sys_reboot = 88,
  gdb_sys_old_readdir = 89,
  gdb_sys_old_mmap = 90,
  gdb_sys_munmap = 91,
  gdb_sys_truncate = 92,
  gdb_sys_ftruncate = 93,
  gdb_sys_fchmod = 94,
  gdb_sys_fchown16 = 95,
  gdb_sys_getpriority = 96,
  gdb_sys_setpriority = 97,
  gdb_sys_ni_syscall98 = 98,
  gdb_sys_statfs = 99,
  gdb_sys_fstatfs = 100,
  gdb_sys_ioperm = 101,
  gdb_sys_socketcall = 102,
  gdb_sys_syslog = 103,
  gdb_sys_setitimer = 104,
  gdb_sys_getitimer = 105,
  gdb_sys_newstat = 106,
  gdb_sys_newlstat = 107,
  gdb_sys_newfstat = 108,
  gdb_sys_uname = 109,
  gdb_sys_iopl = 110,
  gdb_sys_vhangup = 111,
  gdb_sys_ni_syscall112 = 112,
  gdb_sys_vm86old = 113,
  gdb_sys_wait4 = 114,
  gdb_sys_swapoff = 115,
  gdb_sys_sysinfo = 116,
  gdb_sys_ipc = 117,
  gdb_sys_fsync = 118,
  gdb_sys_sigreturn = 119,
  gdb_sys_clone = 120,
  gdb_sys_setdomainname = 121,
  gdb_sys_newuname = 122,
  gdb_sys_modify_ldt = 123,
  gdb_sys_adjtimex = 124,
  gdb_sys_mprotect = 125,
  gdb_sys_sigprocmask = 126,
  gdb_sys_ni_syscall127 = 127,
  gdb_sys_init_module = 128,
  gdb_sys_delete_module = 129,
  gdb_sys_ni_syscall130 = 130,
  gdb_sys_quotactl = 131,
  gdb_sys_getpgid = 132,
  gdb_sys_fchdir = 133,
  gdb_sys_bdflush = 134,
  gdb_sys_sysfs = 135,
  gdb_sys_personality = 136,
  gdb_sys_ni_syscall137 = 137,
  gdb_sys_setfsuid16 = 138,
  gdb_sys_setfsgid16 = 139,
  gdb_sys_llseek = 140,
  gdb_sys_getdents = 141,
  gdb_sys_select = 142,
  gdb_sys_flock = 143,
  gdb_sys_msync = 144,
  gdb_sys_readv = 145,
  gdb_sys_writev = 146,
  gdb_sys_getsid = 147,
  gdb_sys_fdatasync = 148,
  gdb_sys_sysctl = 149,
  gdb_sys_mlock = 150,
  gdb_sys_munlock = 151,
  gdb_sys_mlockall = 152,
  gdb_sys_munlockall = 153,
  gdb_sys_sched_setparam = 154,
  gdb_sys_sched_getparam = 155,
  gdb_sys_sched_setscheduler = 156,
  gdb_sys_sched_getscheduler = 157,
  gdb_sys_sched_yield = 158,
  gdb_sys_sched_get_priority_max = 159,
  gdb_sys_sched_get_priority_min = 160,
  gdb_sys_sched_rr_get_interval = 161,
  gdb_sys_nanosleep = 162,
  gdb_sys_mremap = 163,
  gdb_sys_setresuid16 = 164,
  gdb_sys_getresuid16 = 165,
  gdb_sys_vm86 = 166,
  gdb_sys_ni_syscall167 = 167,
  gdb_sys_poll = 168,
  gdb_sys_nfsservctl = 169,
  gdb_sys_setresgid16 = 170,
  gdb_sys_getresgid16 = 171,
  gdb_sys_prctl = 172,
  gdb_sys_rt_sigreturn = 173,
  gdb_sys_rt_sigaction = 174,
  gdb_sys_rt_sigprocmask = 175,
  gdb_sys_rt_sigpending = 176,
  gdb_sys_rt_sigtimedwait = 177,
  gdb_sys_rt_sigqueueinfo = 178,
  gdb_sys_rt_sigsuspend = 179,
  gdb_sys_pread64 = 180,
  gdb_sys_pwrite64 = 181,
  gdb_sys_chown16 = 182,
  gdb_sys_getcwd = 183,
  gdb_sys_capget = 184,
  gdb_sys_capset = 185,
  gdb_sys_sigaltstack = 186,
  gdb_sys_sendfile = 187,
  gdb_sys_ni_syscall188 = 188,
  gdb_sys_ni_syscall189 = 189,
  gdb_sys_vfork = 190,
  gdb_sys_getrlimit = 191,
  gdb_sys_mmap2 = 192,
  gdb_sys_truncate64 = 193,
  gdb_sys_ftruncate64 = 194,
  gdb_sys_stat64 = 195,
  gdb_sys_lstat64 = 196,
  gdb_sys_fstat64 = 197,
  gdb_sys_lchown = 198,
  gdb_sys_getuid = 199,
  gdb_sys_getgid = 200,
  gdb_sys_geteuid = 201,
  gdb_sys_getegid = 202,
  gdb_sys_setreuid = 203,
  gdb_sys_setregid = 204,
  gdb_sys_getgroups = 205,
  gdb_sys_setgroups = 206,
  gdb_sys_fchown = 207,
  gdb_sys_setresuid = 208,
  gdb_sys_getresuid = 209,
  gdb_sys_setresgid = 210,
  gdb_sys_getresgid = 211,
  gdb_sys_chown = 212,
  gdb_sys_setuid = 213,
  gdb_sys_setgid = 214,
  gdb_sys_setfsuid = 215,
  gdb_sys_setfsgid = 216,
  gdb_sys_pivot_root = 217,
  gdb_sys_mincore = 218,
  gdb_sys_madvise = 219,
  gdb_sys_getdents64 = 220,
  gdb_sys_fcntl64 = 221,
  gdb_sys_ni_syscall222 = 222,
  gdb_sys_ni_syscall223 = 223,
  gdb_sys_gettid = 224,
  gdb_sys_readahead = 225,
  gdb_sys_setxattr = 226,
  gdb_sys_lsetxattr = 227,
  gdb_sys_fsetxattr = 228,
  gdb_sys_getxattr = 229,
  gdb_sys_lgetxattr = 230,
  gdb_sys_fgetxattr = 231,
  gdb_sys_listxattr = 232,
  gdb_sys_llistxattr = 233,
  gdb_sys_flistxattr = 234,
  gdb_sys_removexattr = 235,
  gdb_sys_lremovexattr = 236,
  gdb_sys_fremovexattr = 237,
  gdb_sys_tkill = 238,
  gdb_sys_sendfile64 = 239,
  gdb_sys_futex = 240,
  gdb_sys_sched_setaffinity = 241,
  gdb_sys_sched_getaffinity = 242,
  gdb_sys_set_thread_area = 243,
  gdb_sys_get_thread_area = 244,
  gdb_sys_io_setup = 245,
  gdb_sys_io_destroy = 246,
  gdb_sys_io_getevents = 247,
  gdb_sys_io_submit = 248,
  gdb_sys_io_cancel = 249,
  gdb_sys_fadvise64 = 250,
  gdb_sys_ni_syscall251 = 251,
  gdb_sys_exit_group = 252,
  gdb_sys_lookup_dcookie = 253,
  gdb_sys_epoll_create = 254,
  gdb_sys_epoll_ctl = 255,
  gdb_sys_epoll_wait = 256,
  gdb_sys_remap_file_pages = 257,
  gdb_sys_set_tid_address = 258,
  gdb_sys_timer_create = 259,
  gdb_sys_timer_settime = 260,
  gdb_sys_timer_gettime = 261,
  gdb_sys_timer_getoverrun = 262,
  gdb_sys_timer_delete = 263,
  gdb_sys_clock_settime = 264,
  gdb_sys_clock_gettime = 265,
  gdb_sys_clock_getres = 266,
  gdb_sys_clock_nanosleep = 267,
  gdb_sys_statfs64 = 268,
  gdb_sys_fstatfs64 = 269,
  gdb_sys_tgkill = 270,
  gdb_sys_utimes = 271,
  gdb_sys_fadvise64_64 = 272,
  gdb_sys_ni_syscall273 = 273,
  gdb_sys_mbind = 274,
  gdb_sys_get_mempolicy = 275,
  gdb_sys_set_mempolicy = 276,
  gdb_sys_mq_open = 277,
  gdb_sys_mq_unlink = 278,
  gdb_sys_mq_timedsend = 279,
  gdb_sys_mq_timedreceive = 280,
  gdb_sys_mq_notify = 281,
  gdb_sys_mq_getsetattr = 282,
  gdb_sys_kexec_load = 283,
  gdb_sys_waitid = 284,
  gdb_sys_ni_syscall285 = 285,
  gdb_sys_add_key = 286,
  gdb_sys_request_key = 287,
  gdb_sys_keyctl = 288,
  gdb_sys_ioprio_set = 289,
  gdb_sys_ioprio_get = 290,
  gdb_sys_inotify_init = 291,
  gdb_sys_inotify_add_watch = 292,
  gdb_sys_inotify_rm_watch = 293,
  gdb_sys_migrate_pages = 294,
  gdb_sys_openat = 295,
  gdb_sys_mkdirat = 296,
  gdb_sys_mknodat = 297,
  gdb_sys_fchownat = 298,
  gdb_sys_futimesat = 299,
  gdb_sys_fstatat64 = 300,
  gdb_sys_unlinkat = 301,
  gdb_sys_renameat = 302,
  gdb_sys_linkat = 303,
  gdb_sys_symlinkat = 304,
  gdb_sys_readlinkat = 305,
  gdb_sys_fchmodat = 306,
  gdb_sys_faccessat = 307,
  gdb_sys_pselect6 = 308,
  gdb_sys_ppoll = 309,
  gdb_sys_unshare = 310,
  gdb_sys_set_robust_list = 311,
  gdb_sys_get_robust_list = 312,
  gdb_sys_splice = 313,
  gdb_sys_sync_file_range = 314,
  gdb_sys_tee = 315,
  gdb_sys_vmsplice = 316,
  gdb_sys_move_pages = 317,
  gdb_sys_getcpu = 318,
  gdb_sys_epoll_pwait = 319,
  gdb_sys_fallocate = 324,
  gdb_sys_eventfd2 = 328,
  gdb_sys_epoll_create1 = 329,
  gdb_sys_dup3 = 330,
  gdb_sys_pipe2 = 331,
  gdb_sys_inotify_init1 = 332,
  gdb_sys_getrandom = 355,
  gdb_sys_statx = 383,
  gdb_sys_clock_gettime64 = 403,
  gdb_sys_socket = 500,
  gdb_sys_connect = 501,
  gdb_sys_accept = 502,
  gdb_sys_sendto = 503,
  gdb_sys_recvfrom = 504,
  gdb_sys_sendmsg = 505,
  gdb_sys_recvmsg = 506,
  gdb_sys_shutdown = 507,
  gdb_sys_bind = 508,
  gdb_sys_listen = 509,
  gdb_sys_getsockname = 510,
  gdb_sys_getpeername = 511,
  gdb_sys_socketpair = 512,
  gdb_sys_setsockopt = 513,
  gdb_sys_getsockopt = 514,
  gdb_sys_recv = 515,
  gdb_sys_shmget = 520,
  gdb_sys_shmat = 521,
  gdb_sys_shmctl = 522,
  gdb_sys_semget = 523,
  gdb_sys_semop = 524,
  gdb_sys_semctl = 525,
  gdb_sys_shmdt = 527,
  gdb_sys_msgget = 528,
  gdb_sys_msgsnd = 529,
  gdb_sys_msgrcv = 530,
  gdb_sys_msgctl = 531,
  gdb_sys_semtimedop = 532,
  gdb_sys_accept4 = 533,
  gdb_sys_newfstatat = 540,
};

/* Record a linux syscall.  */

extern int record_linux_system_call (enum gdb_syscall num, 
				     struct regcache *regcache,
				     struct linux_record_tdep *tdep);

#endif /* GDB_LINUX_RECORD_H */
