Home | History | Annotate | Line # | Download | only in gdb
linux-record.h revision 1.1
      1 /* Process record and replay target code for GNU/Linux.
      2 
      3    Copyright (C) 2008-2014 Free Software Foundation, Inc.
      4 
      5    This file is part of GDB.
      6 
      7    This program is free software; you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation; either version 3 of the License, or
     10    (at your option) any later version.
     11 
     12    This program is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19 
     20 #ifndef _LINUX_RECORD_H_
     21 #define _LINUX_RECORD_H_
     22 
     23 struct linux_record_tdep
     24 {
     25   /* The size of the type that will be used in a system call.  */
     26   int size_pointer;
     27   int size__old_kernel_stat;
     28   int size_tms;
     29   int size_loff_t;
     30   int size_flock;
     31   int size_oldold_utsname;
     32   int size_ustat;
     33   int size_old_sigaction;
     34   int size_old_sigset_t;
     35   int size_rlimit;
     36   int size_rusage;
     37   int size_timeval;
     38   int size_timezone;
     39   int size_old_gid_t;
     40   int size_old_uid_t;
     41   int size_fd_set;
     42   int size_dirent;
     43   int size_dirent64;
     44   int size_statfs;
     45   int size_statfs64;
     46   int size_sockaddr;
     47   int size_int;
     48   int size_long;
     49   int size_ulong;
     50   int size_msghdr;
     51   int size_itimerval;
     52   int size_stat;
     53   int size_old_utsname;
     54   int size_sysinfo;
     55   int size_msqid_ds;
     56   int size_shmid_ds;
     57   int size_new_utsname;
     58   int size_timex;
     59   int size_mem_dqinfo;
     60   int size_if_dqblk;
     61   int size_fs_quota_stat;
     62   int size_timespec;
     63   int size_pollfd;
     64   int size_NFS_FHSIZE;
     65   int size_knfsd_fh;
     66   int size_TASK_COMM_LEN;
     67   int size_sigaction;
     68   int size_sigset_t;
     69   int size_siginfo_t;
     70   int size_cap_user_data_t;
     71   int size_stack_t;
     72   int size_off_t;
     73   int size_stat64;
     74   int size_gid_t;
     75   int size_uid_t;
     76   int size_PAGE_SIZE;
     77   int size_flock64;
     78   int size_user_desc;
     79   int size_io_event;
     80   int size_iocb;
     81   int size_epoll_event;
     82   int size_itimerspec;
     83   int size_mq_attr;
     84   int size_siginfo;
     85   int size_termios;
     86   int size_termios2;
     87   int size_pid_t;
     88   int size_winsize;
     89   int size_serial_struct;
     90   int size_serial_icounter_struct;
     91   int size_hayes_esp_config;
     92   int size_size_t;
     93   int size_iovec;
     94 
     95   /* The values of the second argument of system call "sys_ioctl".  */
     96   int ioctl_TCGETS;
     97   int ioctl_TCSETS;
     98   int ioctl_TCSETSW;
     99   int ioctl_TCSETSF;
    100   int ioctl_TCGETA;
    101   int ioctl_TCSETA;
    102   int ioctl_TCSETAW;
    103   int ioctl_TCSETAF;
    104   int ioctl_TCSBRK;
    105   int ioctl_TCXONC;
    106   int ioctl_TCFLSH;
    107   int ioctl_TIOCEXCL;
    108   int ioctl_TIOCNXCL;
    109   int ioctl_TIOCSCTTY;
    110   int ioctl_TIOCGPGRP;
    111   int ioctl_TIOCSPGRP;
    112   int ioctl_TIOCOUTQ;
    113   int ioctl_TIOCSTI;
    114   int ioctl_TIOCGWINSZ;
    115   int ioctl_TIOCSWINSZ;
    116   int ioctl_TIOCMGET;
    117   int ioctl_TIOCMBIS;
    118   int ioctl_TIOCMBIC;
    119   int ioctl_TIOCMSET;
    120   int ioctl_TIOCGSOFTCAR;
    121   int ioctl_TIOCSSOFTCAR;
    122   int ioctl_FIONREAD;
    123   int ioctl_TIOCINQ;
    124   int ioctl_TIOCLINUX;
    125   int ioctl_TIOCCONS;
    126   int ioctl_TIOCGSERIAL;
    127   int ioctl_TIOCSSERIAL;
    128   int ioctl_TIOCPKT;
    129   int ioctl_FIONBIO;
    130   int ioctl_TIOCNOTTY;
    131   int ioctl_TIOCSETD;
    132   int ioctl_TIOCGETD;
    133   int ioctl_TCSBRKP;
    134   int ioctl_TIOCTTYGSTRUCT;
    135   int ioctl_TIOCSBRK;
    136   int ioctl_TIOCCBRK;
    137   int ioctl_TIOCGSID;
    138   int ioctl_TCGETS2;
    139   int ioctl_TCSETS2;
    140   int ioctl_TCSETSW2;
    141   int ioctl_TCSETSF2;
    142   int ioctl_TIOCGPTN;
    143   int ioctl_TIOCSPTLCK;
    144   int ioctl_FIONCLEX;
    145   int ioctl_FIOCLEX;
    146   int ioctl_FIOASYNC;
    147   int ioctl_TIOCSERCONFIG;
    148   int ioctl_TIOCSERGWILD;
    149   int ioctl_TIOCSERSWILD;
    150   int ioctl_TIOCGLCKTRMIOS;
    151   int ioctl_TIOCSLCKTRMIOS;
    152   int ioctl_TIOCSERGSTRUCT;
    153   int ioctl_TIOCSERGETLSR;
    154   int ioctl_TIOCSERGETMULTI;
    155   int ioctl_TIOCSERSETMULTI;
    156   int ioctl_TIOCMIWAIT;
    157   int ioctl_TIOCGICOUNT;
    158   int ioctl_TIOCGHAYESESP;
    159   int ioctl_TIOCSHAYESESP;
    160   int ioctl_FIOQSIZE;
    161 
    162   /* The values of the second argument of system call "sys_fcntl"
    163      and "sys_fcntl64".  */
    164   int fcntl_F_GETLK;
    165   int fcntl_F_GETLK64;
    166   int fcntl_F_SETLK64;
    167   int fcntl_F_SETLKW64;
    168 
    169   /* The number of the registers that are used as the arguments of
    170      a system call.  */
    171   int arg1;
    172   int arg2;
    173   int arg3;
    174   int arg4;
    175   int arg5;
    176   int arg6;
    177 };
    178 
    179 /* Enum that defines the gdb-canonical set of Linux syscall identifiers.
    180    Different architectures will have different sets of syscall ids, and
    181    each must provide a mapping from their set to this one.  */
    182 
    183 enum gdb_syscall {
    184   gdb_sys_restart_syscall = 0,
    185   gdb_sys_exit = 1,
    186   gdb_sys_fork = 2,
    187   gdb_sys_read = 3,
    188   gdb_sys_write = 4,
    189   gdb_sys_open = 5,
    190   gdb_sys_close = 6,
    191   gdb_sys_waitpid = 7,
    192   gdb_sys_creat = 8,
    193   gdb_sys_link = 9,
    194   gdb_sys_unlink = 10,
    195   gdb_sys_execve = 11,
    196   gdb_sys_chdir = 12,
    197   gdb_sys_time = 13,
    198   gdb_sys_mknod = 14,
    199   gdb_sys_chmod = 15,
    200   gdb_sys_lchown16 = 16,
    201   gdb_sys_ni_syscall17 = 17,
    202   gdb_sys_stat = 18,
    203   gdb_sys_lseek = 19,
    204   gdb_sys_getpid = 20,
    205   gdb_sys_mount = 21,
    206   gdb_sys_oldumount = 22,
    207   gdb_sys_setuid16 = 23,
    208   gdb_sys_getuid16 = 24,
    209   gdb_sys_stime = 25,
    210   gdb_sys_ptrace = 26,
    211   gdb_sys_alarm = 27,
    212   gdb_sys_fstat = 28,
    213   gdb_sys_pause = 29,
    214   gdb_sys_utime = 30,
    215   gdb_sys_ni_syscall31 = 31,
    216   gdb_sys_ni_syscall32 = 32,
    217   gdb_sys_access = 33,
    218   gdb_sys_nice = 34,
    219   gdb_sys_ni_syscall35 = 35,
    220   gdb_sys_sync = 36,
    221   gdb_sys_kill = 37,
    222   gdb_sys_rename = 38,
    223   gdb_sys_mkdir = 39,
    224   gdb_sys_rmdir = 40,
    225   gdb_sys_dup = 41,
    226   gdb_sys_pipe = 42,
    227   gdb_sys_times = 43,
    228   gdb_sys_ni_syscall44 = 44,
    229   gdb_sys_brk = 45,
    230   gdb_sys_setgid16 = 46,
    231   gdb_sys_getgid16 = 47,
    232   gdb_sys_signal = 48,
    233   gdb_sys_geteuid16 = 49,
    234   gdb_sys_getegid16 = 50,
    235   gdb_sys_acct = 51,
    236   gdb_sys_umount = 52,
    237   gdb_sys_ni_syscall53 = 53,
    238   gdb_sys_ioctl = 54,
    239   gdb_sys_fcntl = 55,
    240   gdb_sys_ni_syscall56 = 56,
    241   gdb_sys_setpgid = 57,
    242   gdb_sys_ni_syscall58 = 58,
    243   gdb_sys_olduname = 59,
    244   gdb_sys_umask = 60,
    245   gdb_sys_chroot = 61,
    246   gdb_sys_ustat = 62,
    247   gdb_sys_dup2 = 63,
    248   gdb_sys_getppid = 64,
    249   gdb_sys_getpgrp = 65,
    250   gdb_sys_setsid = 66,
    251   gdb_sys_sigaction = 67,
    252   gdb_sys_sgetmask = 68,
    253   gdb_sys_ssetmask = 69,
    254   gdb_sys_setreuid16 = 70,
    255   gdb_sys_setregid16 = 71,
    256   gdb_sys_sigsuspend = 72,
    257   gdb_sys_sigpending = 73,
    258   gdb_sys_sethostname = 74,
    259   gdb_sys_setrlimit = 75,
    260   gdb_sys_old_getrlimit = 76,
    261   gdb_sys_getrusage = 77,
    262   gdb_sys_gettimeofday = 78,
    263   gdb_sys_settimeofday = 79,
    264   gdb_sys_getgroups16 = 80,
    265   gdb_sys_setgroups16 = 81,
    266   gdb_old_select = 82,
    267   gdb_sys_symlink = 83,
    268   gdb_sys_lstat = 84,
    269   gdb_sys_readlink = 85,
    270   gdb_sys_uselib = 86,
    271   gdb_sys_swapon = 87,
    272   gdb_sys_reboot = 88,
    273   gdb_old_readdir = 89,
    274   gdb_old_mmap = 90,
    275   gdb_sys_munmap = 91,
    276   gdb_sys_truncate = 92,
    277   gdb_sys_ftruncate = 93,
    278   gdb_sys_fchmod = 94,
    279   gdb_sys_fchown16 = 95,
    280   gdb_sys_getpriority = 96,
    281   gdb_sys_setpriority = 97,
    282   gdb_sys_ni_syscall98 = 98,
    283   gdb_sys_statfs = 99,
    284   gdb_sys_fstatfs = 100,
    285   gdb_sys_ioperm = 101,
    286   gdb_sys_socketcall = 102,
    287   gdb_sys_syslog = 103,
    288   gdb_sys_setitimer = 104,
    289   gdb_sys_getitimer = 105,
    290   gdb_sys_newstat = 106,
    291   gdb_sys_newlstat = 107,
    292   gdb_sys_newfstat = 108,
    293   gdb_sys_uname = 109,
    294   gdb_sys_iopl = 110,
    295   gdb_sys_vhangup = 111,
    296   gdb_sys_ni_syscall112 = 112,
    297   gdb_sys_vm86old = 113,
    298   gdb_sys_wait4 = 114,
    299   gdb_sys_swapoff = 115,
    300   gdb_sys_sysinfo = 116,
    301   gdb_sys_ipc = 117,
    302   gdb_sys_fsync = 118,
    303   gdb_sys_sigreturn = 119,
    304   gdb_sys_clone = 120,
    305   gdb_sys_setdomainname = 121,
    306   gdb_sys_newuname = 122,
    307   gdb_sys_modify_ldt = 123,
    308   gdb_sys_adjtimex = 124,
    309   gdb_sys_mprotect = 125,
    310   gdb_sys_sigprocmask = 126,
    311   gdb_sys_ni_syscall127 = 127,
    312   gdb_sys_init_module = 128,
    313   gdb_sys_delete_module = 129,
    314   gdb_sys_ni_syscall130 = 130,
    315   gdb_sys_quotactl = 131,
    316   gdb_sys_getpgid = 132,
    317   gdb_sys_fchdir = 133,
    318   gdb_sys_bdflush = 134,
    319   gdb_sys_sysfs = 135,
    320   gdb_sys_personality = 136,
    321   gdb_sys_ni_syscall137 = 137,
    322   gdb_sys_setfsuid16 = 138,
    323   gdb_sys_setfsgid16 = 139,
    324   gdb_sys_llseek = 140,
    325   gdb_sys_getdents = 141,
    326   gdb_sys_select = 142,
    327   gdb_sys_flock = 143,
    328   gdb_sys_msync = 144,
    329   gdb_sys_readv = 145,
    330   gdb_sys_writev = 146,
    331   gdb_sys_getsid = 147,
    332   gdb_sys_fdatasync = 148,
    333   gdb_sys_sysctl = 149,
    334   gdb_sys_mlock = 150,
    335   gdb_sys_munlock = 151,
    336   gdb_sys_mlockall = 152,
    337   gdb_sys_munlockall = 153,
    338   gdb_sys_sched_setparam = 154,
    339   gdb_sys_sched_getparam = 155,
    340   gdb_sys_sched_setscheduler = 156,
    341   gdb_sys_sched_getscheduler = 157,
    342   gdb_sys_sched_yield = 158,
    343   gdb_sys_sched_get_priority_max = 159,
    344   gdb_sys_sched_get_priority_min = 160,
    345   gdb_sys_sched_rr_get_interval = 161,
    346   gdb_sys_nanosleep = 162,
    347   gdb_sys_mremap = 163,
    348   gdb_sys_setresuid16 = 164,
    349   gdb_sys_getresuid16 = 165,
    350   gdb_sys_vm86 = 166,
    351   gdb_sys_ni_syscall167 = 167,
    352   gdb_sys_poll = 168,
    353   gdb_sys_nfsservctl = 169,
    354   gdb_sys_setresgid16 = 170,
    355   gdb_sys_getresgid16 = 171,
    356   gdb_sys_prctl = 172,
    357   gdb_sys_rt_sigreturn = 173,
    358   gdb_sys_rt_sigaction = 174,
    359   gdb_sys_rt_sigprocmask = 175,
    360   gdb_sys_rt_sigpending = 176,
    361   gdb_sys_rt_sigtimedwait = 177,
    362   gdb_sys_rt_sigqueueinfo = 178,
    363   gdb_sys_rt_sigsuspend = 179,
    364   gdb_sys_pread64 = 180,
    365   gdb_sys_pwrite64 = 181,
    366   gdb_sys_chown16 = 182,
    367   gdb_sys_getcwd = 183,
    368   gdb_sys_capget = 184,
    369   gdb_sys_capset = 185,
    370   gdb_sys_sigaltstack = 186,
    371   gdb_sys_sendfile = 187,
    372   gdb_sys_ni_syscall188 = 188,
    373   gdb_sys_ni_syscall189 = 189,
    374   gdb_sys_vfork = 190,
    375   gdb_sys_getrlimit = 191,
    376   gdb_sys_mmap2 = 192,
    377   gdb_sys_truncate64 = 193,
    378   gdb_sys_ftruncate64 = 194,
    379   gdb_sys_stat64 = 195,
    380   gdb_sys_lstat64 = 196,
    381   gdb_sys_fstat64 = 197,
    382   gdb_sys_lchown = 198,
    383   gdb_sys_getuid = 199,
    384   gdb_sys_getgid = 200,
    385   gdb_sys_geteuid = 201,
    386   gdb_sys_getegid = 202,
    387   gdb_sys_setreuid = 203,
    388   gdb_sys_setregid = 204,
    389   gdb_sys_getgroups = 205,
    390   gdb_sys_setgroups = 206,
    391   gdb_sys_fchown = 207,
    392   gdb_sys_setresuid = 208,
    393   gdb_sys_getresuid = 209,
    394   gdb_sys_setresgid = 210,
    395   gdb_sys_getresgid = 211,
    396   gdb_sys_chown = 212,
    397   gdb_sys_setuid = 213,
    398   gdb_sys_setgid = 214,
    399   gdb_sys_setfsuid = 215,
    400   gdb_sys_setfsgid = 216,
    401   gdb_sys_pivot_root = 217,
    402   gdb_sys_mincore = 218,
    403   gdb_sys_madvise = 219,
    404   gdb_sys_getdents64 = 220,
    405   gdb_sys_fcntl64 = 221,
    406   gdb_sys_ni_syscall222 = 222,
    407   gdb_sys_ni_syscall223 = 223,
    408   gdb_sys_gettid = 224,
    409   gdb_sys_readahead = 225,
    410   gdb_sys_setxattr = 226,
    411   gdb_sys_lsetxattr = 227,
    412   gdb_sys_fsetxattr = 228,
    413   gdb_sys_getxattr = 229,
    414   gdb_sys_lgetxattr = 230,
    415   gdb_sys_fgetxattr = 231,
    416   gdb_sys_listxattr = 232,
    417   gdb_sys_llistxattr = 233,
    418   gdb_sys_flistxattr = 234,
    419   gdb_sys_removexattr = 235,
    420   gdb_sys_lremovexattr = 236,
    421   gdb_sys_fremovexattr = 237,
    422   gdb_sys_tkill = 238,
    423   gdb_sys_sendfile64 = 239,
    424   gdb_sys_futex = 240,
    425   gdb_sys_sched_setaffinity = 241,
    426   gdb_sys_sched_getaffinity = 242,
    427   gdb_sys_set_thread_area = 243,
    428   gdb_sys_get_thread_area = 244,
    429   gdb_sys_io_setup = 245,
    430   gdb_sys_io_destroy = 246,
    431   gdb_sys_io_getevents = 247,
    432   gdb_sys_io_submit = 248,
    433   gdb_sys_io_cancel = 249,
    434   gdb_sys_fadvise64 = 250,
    435   gdb_sys_ni_syscall251 = 251,
    436   gdb_sys_exit_group = 252,
    437   gdb_sys_lookup_dcookie = 253,
    438   gdb_sys_epoll_create = 254,
    439   gdb_sys_epoll_ctl = 255,
    440   gdb_sys_epoll_wait = 256,
    441   gdb_sys_remap_file_pages = 257,
    442   gdb_sys_set_tid_address = 258,
    443   gdb_sys_timer_create = 259,
    444   gdb_sys_timer_settime = 260,
    445   gdb_sys_timer_gettime = 261,
    446   gdb_sys_timer_getoverrun = 262,
    447   gdb_sys_timer_delete = 263,
    448   gdb_sys_clock_settime = 264,
    449   gdb_sys_clock_gettime = 265,
    450   gdb_sys_clock_getres = 266,
    451   gdb_sys_clock_nanosleep = 267,
    452   gdb_sys_statfs64 = 268,
    453   gdb_sys_fstatfs64 = 269,
    454   gdb_sys_tgkill = 270,
    455   gdb_sys_utimes = 271,
    456   gdb_sys_fadvise64_64 = 272,
    457   gdb_sys_ni_syscall273 = 273,
    458   gdb_sys_mbind = 274,
    459   gdb_sys_get_mempolicy = 275,
    460   gdb_sys_set_mempolicy = 276,
    461   gdb_sys_mq_open = 277,
    462   gdb_sys_mq_unlink = 278,
    463   gdb_sys_mq_timedsend = 279,
    464   gdb_sys_mq_timedreceive = 280,
    465   gdb_sys_mq_notify = 281,
    466   gdb_sys_mq_getsetattr = 282,
    467   gdb_sys_kexec_load = 283,
    468   gdb_sys_waitid = 284,
    469   gdb_sys_ni_syscall285 = 285,
    470   gdb_sys_add_key = 286,
    471   gdb_sys_request_key = 287,
    472   gdb_sys_keyctl = 288,
    473   gdb_sys_ioprio_set = 289,
    474   gdb_sys_ioprio_get = 290,
    475   gdb_sys_inotify_init = 291,
    476   gdb_sys_inotify_add_watch = 292,
    477   gdb_sys_inotify_rm_watch = 293,
    478   gdb_sys_migrate_pages = 294,
    479   gdb_sys_openat = 295,
    480   gdb_sys_mkdirat = 296,
    481   gdb_sys_mknodat = 297,
    482   gdb_sys_fchownat = 298,
    483   gdb_sys_futimesat = 299,
    484   gdb_sys_fstatat64 = 300,
    485   gdb_sys_unlinkat = 301,
    486   gdb_sys_renameat = 302,
    487   gdb_sys_linkat = 303,
    488   gdb_sys_symlinkat = 304,
    489   gdb_sys_readlinkat = 305,
    490   gdb_sys_fchmodat = 306,
    491   gdb_sys_faccessat = 307,
    492   gdb_sys_pselect6 = 308,
    493   gdb_sys_ppoll = 309,
    494   gdb_sys_unshare = 310,
    495   gdb_sys_set_robust_list = 311,
    496   gdb_sys_get_robust_list = 312,
    497   gdb_sys_splice = 313,
    498   gdb_sys_sync_file_range = 314,
    499   gdb_sys_tee = 315,
    500   gdb_sys_vmsplice = 316,
    501   gdb_sys_move_pages = 317,
    502   gdb_sys_getcpu = 318,
    503   gdb_sys_epoll_pwait = 319,
    504   gdb_sys_socket = 500,
    505   gdb_sys_connect = 501,
    506   gdb_sys_accept = 502,
    507   gdb_sys_sendto = 503,
    508   gdb_sys_recvfrom = 504,
    509   gdb_sys_sendmsg = 505,
    510   gdb_sys_recvmsg = 506,
    511   gdb_sys_shutdown = 507,
    512   gdb_sys_bind = 508,
    513   gdb_sys_listen = 509,
    514   gdb_sys_getsockname = 510,
    515   gdb_sys_getpeername = 511,
    516   gdb_sys_socketpair = 512,
    517   gdb_sys_setsockopt = 513,
    518   gdb_sys_getsockopt = 514,
    519   gdb_sys_recv = 515,
    520   gdb_sys_shmget = 520,
    521   gdb_sys_shmat = 521,
    522   gdb_sys_shmctl = 522,
    523   gdb_sys_semget = 523,
    524   gdb_sys_semop = 524,
    525   gdb_sys_semctl = 525,
    526   gdb_sys_shmdt = 527,
    527   gdb_sys_msgget = 528,
    528   gdb_sys_msgsnd = 529,
    529   gdb_sys_msgrcv = 530,
    530   gdb_sys_msgctl = 531,
    531   gdb_sys_semtimedop = 532,
    532   gdb_sys_newfstatat = 540,
    533 };
    534 
    535 /* Record a linux syscall.  */
    536 
    537 extern int record_linux_system_call (enum gdb_syscall num,
    538 				     struct regcache *regcache,
    539 				     struct linux_record_tdep *tdep);
    540 #endif /* _LINUX_RECORD_H_ */
    541