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

   Copyright (C) 2008-2021 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 LINUX_RECORD_H
#define 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".  */
  int ioctl_TCGETS;
  int ioctl_TCSETS;
  int ioctl_TCSETSW;
  int ioctl_TCSETSF;
  int ioctl_TCGETA;
  int ioctl_TCSETA;
  int ioctl_TCSETAW;
  int ioctl_TCSETAF;
  int ioctl_TCSBRK;
  int ioctl_TCXONC;
  int ioctl_TCFLSH;
  int ioctl_TIOCEXCL;
  int ioctl_TIOCNXCL;
  int ioctl_TIOCSCTTY;
  int ioctl_TIOCGPGRP;
  int ioctl_TIOCSPGRP;
  int ioctl_TIOCOUTQ;
  int ioctl_TIOCSTI;
  int ioctl_TIOCGWINSZ;
  int ioctl_TIOCSWINSZ;
  int ioctl_TIOCMGET;
  int ioctl_TIOCMBIS;
  int ioctl_TIOCMBIC;
  int ioctl_TIOCMSET;
  int ioctl_TIOCGSOFTCAR;
  int ioctl_TIOCSSOFTCAR;
  int ioctl_FIONREAD;
  int ioctl_TIOCINQ;
  int ioctl_TIOCLINUX;
  int ioctl_TIOCCONS;
  int ioctl_TIOCGSERIAL;
  int ioctl_TIOCSSERIAL;
  int ioctl_TIOCPKT;
  int ioctl_FIONBIO;
  int ioctl_TIOCNOTTY;
  int ioctl_TIOCSETD;
  int ioctl_TIOCGETD;
  int ioctl_TCSBRKP;
  int ioctl_TIOCTTYGSTRUCT;
  int ioctl_TIOCSBRK;
  int ioctl_TIOCCBRK;
  int ioctl_TIOCGSID;
  int ioctl_TCGETS2;
  int ioctl_TCSETS2;
  int ioctl_TCSETSW2;
  int ioctl_TCSETSF2;
  int ioctl_TIOCGPTN;
  int ioctl_TIOCSPTLCK;
  int ioctl_FIONCLEX;
  int ioctl_FIOCLEX;
  int ioctl_FIOASYNC;
  int ioctl_TIOCSERCONFIG;
  int ioctl_TIOCSERGWILD;
  int ioctl_TIOCSERSWILD;
  int ioctl_TIOCGLCKTRMIOS;
  int ioctl_TIOCSLCKTRMIOS;
  int ioctl_TIOCSERGSTRUCT;
  int ioctl_TIOCSERGETLSR;
  int ioctl_TIOCSERGETMULTI;
  int ioctl_TIOCSERSETMULTI;
  int ioctl_TIOCMIWAIT;
  int ioctl_TIOCGICOUNT;
  int ioctl_TIOCGHAYESESP;
  int ioctl_TIOCSHAYESESP;
  int 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_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_old_readdir = 89,
  gdb_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_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_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 /* LINUX_RECORD_H */
