Linux process record and replay support.
[external/binutils.git] / gdb / linux-record.h
1 /* Process record and replay target code for GNU/Linux.
2
3    Copyright (C) 2008, 2009 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__old_kernel_stat;
27   int size_tms;
28   int size_loff_t;
29   int size_flock;
30   int size_oldold_utsname;
31   int size_ustat;
32   int size_old_sigaction;
33   int size_old_sigset_t;
34   int size_rlimit;
35   int size_rusage;
36   int size_timeval;
37   int size_timezone;
38   int size_old_gid_t;
39   int size_old_uid_t;
40   int size_fd_set;
41   int size_dirent;
42   int size_dirent64;
43   int size_statfs;
44   int size_statfs64;
45   int size_sockaddr;
46   int size_int;
47   int size_long;
48   int size_ulong;
49   int size_msghdr;
50   int size_itimerval;
51   int size_stat;
52   int size_old_utsname;
53   int size_sysinfo;
54   int size_msqid_ds;
55   int size_shmid_ds;
56   int size_new_utsname;
57   int size_timex;
58   int size_mem_dqinfo;
59   int size_if_dqblk;
60   int size_fs_quota_stat;
61   int size_timespec;
62   int size_pollfd;
63   int size_NFS_FHSIZE;
64   int size_knfsd_fh;
65   int size_TASK_COMM_LEN;
66   int size_sigaction;
67   int size_sigset_t;
68   int size_siginfo_t;
69   int size_cap_user_data_t;
70   int size_stack_t;
71   int size_off_t;
72   int size_stat64;
73   int size_gid_t;
74   int size_uid_t;
75   int size_PAGE_SIZE;
76   int size_flock64;
77   int size_user_desc;
78   int size_io_event;
79   int size_iocb;
80   int size_epoll_event;
81   int size_itimerspec;
82   int size_mq_attr;
83   int size_siginfo;
84
85   int size_termios;
86   int size_termios2;
87   int size_pid_t;
88   int size_winsize;
89   int size_char;
90   int size_serial_struct;
91   int size_serial_icounter_struct;
92   int size_hayes_esp_config;
93
94   /* The values of the second argument of system call "sys_ioctl".  */
95   int ioctl_TCGETS;
96   int ioctl_TCSETS;
97   int ioctl_TCSETSW;
98   int ioctl_TCSETSF;
99   int ioctl_TCGETA;
100   int ioctl_TCSETA;
101   int ioctl_TCSETAW;
102   int ioctl_TCSETAF;
103   int ioctl_TCSBRK;
104   int ioctl_TCXONC;
105   int ioctl_TCFLSH;
106   int ioctl_TIOCEXCL;
107   int ioctl_TIOCNXCL;
108   int ioctl_TIOCSCTTY;
109   int ioctl_TIOCGPGRP;
110   int ioctl_TIOCSPGRP;
111   int ioctl_TIOCOUTQ;
112   int ioctl_TIOCSTI;
113   int ioctl_TIOCGWINSZ;
114   int ioctl_TIOCSWINSZ;
115   int ioctl_TIOCMGET;
116   int ioctl_TIOCMBIS;
117   int ioctl_TIOCMBIC;
118   int ioctl_TIOCMSET;
119   int ioctl_TIOCGSOFTCAR;
120   int ioctl_TIOCSSOFTCAR;
121   int ioctl_FIONREAD;
122   int ioctl_TIOCINQ;
123   int ioctl_TIOCLINUX;
124   int ioctl_TIOCCONS;
125   int ioctl_TIOCGSERIAL;
126   int ioctl_TIOCSSERIAL;
127   int ioctl_TIOCPKT;
128   int ioctl_FIONBIO;
129   int ioctl_TIOCNOTTY;
130   int ioctl_TIOCSETD;
131   int ioctl_TIOCGETD;
132   int ioctl_TCSBRKP;
133   int ioctl_TIOCTTYGSTRUCT;
134   int ioctl_TIOCSBRK;
135   int ioctl_TIOCCBRK;
136   int ioctl_TIOCGSID;
137   int ioctl_TCGETS2;
138   int ioctl_TCSETS2;
139   int ioctl_TCSETSW2;
140   int ioctl_TCSETSF2;
141   int ioctl_TIOCGPTN;
142   int ioctl_TIOCSPTLCK;
143   int ioctl_FIONCLEX;
144   int ioctl_FIOCLEX;
145   int ioctl_FIOASYNC;
146   int ioctl_TIOCSERCONFIG;
147   int ioctl_TIOCSERGWILD;
148   int ioctl_TIOCSERSWILD;
149   int ioctl_TIOCGLCKTRMIOS;
150   int ioctl_TIOCSLCKTRMIOS;
151   int ioctl_TIOCSERGSTRUCT;
152   int ioctl_TIOCSERGETLSR;
153   int ioctl_TIOCSERGETMULTI;
154   int ioctl_TIOCSERSETMULTI;
155   int ioctl_TIOCMIWAIT;
156   int ioctl_TIOCGICOUNT;
157   int ioctl_TIOCGHAYESESP;
158   int ioctl_TIOCSHAYESESP;
159   int ioctl_FIOQSIZE;
160
161   /* The number of the registers that are used as the arguments of
162      a system call.  */
163   int arg1;
164   int arg2;
165   int arg3;
166   int arg4;
167   int arg5;
168 };
169
170 extern int record_linux_system_call (int num, struct regcache *regcache,
171                                      struct linux_record_tdep *tdep);
172
173 #endif /* _LINUX_RECORD_H_ */