2009-08-10 Hui Zhu <teawater@gmail.com>
[deliverable/binutils-gdb.git] / gdb / linux-record.c
CommitLineData
b7f6bf22
HZ
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#include "defs.h"
21#include "target.h"
22#include "regcache.h"
23#include "record.h"
24#include "linux-record.h"
25
26/* These macros are the values of the first argument of system call
27 "sys_ptrace". The values of these macros were obtained from Linux
28 Kernel source. */
29
30#define RECORD_PTRACE_PEEKTEXT 1
31#define RECORD_PTRACE_PEEKDATA 2
32#define RECORD_PTRACE_PEEKUSR 3
33
34/* These macros are the values of the first argument of system call
35 "sys_socketcall". The values of these macros were obtained from
36 Linux Kernel source. */
37
38#define RECORD_SYS_SOCKET 1
39#define RECORD_SYS_BIND 2
40#define RECORD_SYS_CONNECT 3
41#define RECORD_SYS_LISTEN 4
42#define RECORD_SYS_ACCEPT 5
43#define RECORD_SYS_GETSOCKNAME 6
44#define RECORD_SYS_GETPEERNAME 7
45#define RECORD_SYS_SOCKETPAIR 8
46#define RECORD_SYS_SEND 9
47#define RECORD_SYS_RECV 10
48#define RECORD_SYS_SENDTO 11
49#define RECORD_SYS_RECVFROM 12
50#define RECORD_SYS_SHUTDOWN 13
51#define RECORD_SYS_SETSOCKOPT 14
52#define RECORD_SYS_GETSOCKOPT 15
53#define RECORD_SYS_SENDMSG 16
54#define RECORD_SYS_RECVMSG 17
55
56/* These macros are the values of the first argument of system call
57 "sys_ipc". The values of these macros were obtained from Linux
58 Kernel source. */
59
60#define RECORD_SEMOP 1
61#define RECORD_SEMGET 2
62#define RECORD_SEMCTL 3
63#define RECORD_SEMTIMEDOP 4
64#define RECORD_MSGSND 11
65#define RECORD_MSGRCV 12
66#define RECORD_MSGGET 13
67#define RECORD_MSGCTL 14
68#define RECORD_SHMAT 21
69#define RECORD_SHMDT 22
70#define RECORD_SHMGET 23
71#define RECORD_SHMCTL 24
72
73/* These macros are the values of the first argument of system call
74 "sys_quotactl". The values of these macros were obtained from Linux
75 Kernel source. */
76
77#define RECORD_Q_GETFMT 0x800004
78#define RECORD_Q_GETINFO 0x800005
79#define RECORD_Q_GETQUOTA 0x800007
80#define RECORD_Q_XGETQSTAT (('5' << 8) + 5)
81#define RECORD_Q_XGETQUOTA (('3' << 8) + 3)
82
83/* When the architecture process record get a Linux syscall
84 instruction, it will get a Linux syscall number of this
85 architecture and convert it to the Linux syscall number "num" which
86 is internal to GDB. Most Linux syscalls across architectures in
87 Linux would be similar and mostly differ by sizes of types and
88 structures. This sizes are put to "tdep".
89
90 Record the values of the registers and memory that will be changed
91 in current system call.
92
93 Return -1 if something wrong. */
94
95int
96record_linux_system_call (int num, struct regcache *regcache,
97 struct linux_record_tdep *tdep)
98{
5af949e3 99 struct gdbarch *gdbarch = get_regcache_arch (regcache);
b7f6bf22
HZ
100 uint32_t tmpu32;
101
102 switch (num)
103 {
104 /* sys_restart_syscall */
105 case 0:
106 break;
107
108 /* sys_exit */
109 case 1:
110 {
111 int q;
112 target_terminal_ours ();
113 q =
114 yquery (_ ("The next instruction is syscall exit. "
115 "It will make the program exit. "
116 "Do you want to stop the program?"));
117 target_terminal_inferior ();
118 if (q)
119 return 1;
120 }
121 break;
122
123 /* sys_fork */
124 case 2:
125 break;
126
127 /* sys_read */
128 case 3:
129 {
130 uint32_t addr, count;
131 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & addr);
132 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & count);
133 if (record_arch_list_add_mem (addr, count))
134 return -1;
135 }
136 break;
137
138 /* sys_write */
139 case 4:
140 /* sys_open */
141 case 5:
142 /* sys_close */
143 case 6:
144 /* sys_waitpid */
145 case 7:
146 /* sys_creat */
147 case 8:
148 /* sys_link */
149 case 9:
150 /* sys_unlink */
151 case 10:
152 /* sys_execve */
153 case 11:
154 /* sys_chdir */
155 case 12:
156 /* sys_time */
157 case 13:
158 /* sys_mknod */
159 case 14:
160 /* sys_chmod */
161 case 15:
162 /* sys_lchown16 */
163 case 16:
164 /* sys_ni_syscall */
165 case 17:
166 break;
167
168 /* sys_stat */
169 case 18:
170 /* sys_fstat */
171 case 28:
172 /* sys_lstat */
173 case 84:
174 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
175 if (record_arch_list_add_mem (tmpu32, tdep->size__old_kernel_stat))
176 return -1;
177 break;
178
179 /* sys_lseek */
180 case 19:
181 /* sys_getpid */
182 case 20:
183 /* sys_mount */
184 case 21:
185 /* sys_oldumount */
186 case 22:
187 /* sys_setuid16 */
188 case 23:
189 /* sys_getuid16 */
190 case 24:
191 /* sys_stime */
192 case 25:
193 break;
194
195 /* sys_ptrace */
196 case 26:
197 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
198 if (tmpu32 == RECORD_PTRACE_PEEKTEXT
199 || tmpu32 == RECORD_PTRACE_PEEKDATA
200 || tmpu32 == RECORD_PTRACE_PEEKUSR)
201 {
202 regcache_raw_read (regcache, tdep->arg4,
203 (gdb_byte *) & tmpu32);
204 if (record_arch_list_add_mem (tmpu32, 4))
205 return -1;
206 }
207 break;
208
209 /* sys_alarm */
210 case 27:
211 /* sys_pause */
212 case 29:
213 /* sys_utime */
214 case 30:
215 /* sys_ni_syscall */
216 case 31:
217 /* sys_ni_syscall */
218 case 32:
219 /* sys_access */
220 case 33:
221 /* sys_nice */
222 case 34:
223 /* sys_ni_syscall */
224 case 35:
225 /* sys_sync */
226 case 36:
227 /* sys_kill */
228 case 37:
229 /* sys_rename */
230 case 38:
231 /* sys_mkdir */
232 case 39:
233 /* sys_rmdir */
234 case 40:
235 /* sys_dup */
236 case 41:
237 /* sys_pipe */
238 case 42:
239 break;
240
241 /* sys_times */
242 case 43:
243 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
244 if (record_arch_list_add_mem (tmpu32, tdep->size_tms))
245 return -1;
246 break;
247
248 /* sys_ni_syscall */
249 case 44:
250 /* sys_brk */
251 case 45:
252 /* sys_setgid16 */
253 case 46:
254 /* sys_getgid16 */
255 case 47:
256 /* sys_signal */
257 case 48:
258 /* sys_geteuid16 */
259 case 49:
260 /* sys_getegid16 */
261 case 50:
262 /* sys_acct */
263 case 51:
264 /* sys_umount */
265 case 52:
266 /* sys_ni_syscall */
267 case 53:
268 break;
269
270 /* sys_ioctl */
271 case 54:
272 /* XXX Need to add a lot of support of other ioctl requests. */
273 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
274 if (tmpu32 == tdep->ioctl_FIOCLEX || tmpu32 == tdep->ioctl_FIONCLEX
275 || tmpu32 == tdep->ioctl_FIONBIO || tmpu32 == tdep->ioctl_FIOASYNC
276 || tmpu32 == tdep->ioctl_TCSETS || tmpu32 == tdep->ioctl_TCSETSW
277 || tmpu32 == tdep->ioctl_TCSETSF || tmpu32 == tdep->ioctl_TCSETA
278 || tmpu32 == tdep->ioctl_TCSETAW || tmpu32 == tdep->ioctl_TCSETAF
279 || tmpu32 == tdep->ioctl_TCSBRK || tmpu32 == tdep->ioctl_TCXONC
280 || tmpu32 == tdep->ioctl_TCFLSH || tmpu32 == tdep->ioctl_TIOCEXCL
281 || tmpu32 == tdep->ioctl_TIOCNXCL
282 || tmpu32 == tdep->ioctl_TIOCSCTTY
283 || tmpu32 == tdep->ioctl_TIOCSPGRP || tmpu32 == tdep->ioctl_TIOCSTI
284 || tmpu32 == tdep->ioctl_TIOCSWINSZ
285 || tmpu32 == tdep->ioctl_TIOCMBIS || tmpu32 == tdep->ioctl_TIOCMBIC
286 || tmpu32 == tdep->ioctl_TIOCMSET
287 || tmpu32 == tdep->ioctl_TIOCSSOFTCAR
288 || tmpu32 == tdep->ioctl_TIOCCONS
289 || tmpu32 == tdep->ioctl_TIOCSSERIAL
290 || tmpu32 == tdep->ioctl_TIOCPKT || tmpu32 == tdep->ioctl_TIOCNOTTY
291 || tmpu32 == tdep->ioctl_TIOCSETD || tmpu32 == tdep->ioctl_TCSBRKP
292 || tmpu32 == tdep->ioctl_TIOCTTYGSTRUCT
293 || tmpu32 == tdep->ioctl_TIOCSBRK || tmpu32 == tdep->ioctl_TIOCCBRK
294 || tmpu32 == tdep->ioctl_TCSETS2 || tmpu32 == tdep->ioctl_TCSETSW2
295 || tmpu32 == tdep->ioctl_TCSETSF2
296 || tmpu32 == tdep->ioctl_TIOCSPTLCK
297 || tmpu32 == tdep->ioctl_TIOCSERCONFIG
298 || tmpu32 == tdep->ioctl_TIOCSERGWILD
299 || tmpu32 == tdep->ioctl_TIOCSERSWILD
300 || tmpu32 == tdep->ioctl_TIOCSLCKTRMIOS
301 || tmpu32 == tdep->ioctl_TIOCSERGETMULTI
302 || tmpu32 == tdep->ioctl_TIOCSERSETMULTI
303 || tmpu32 == tdep->ioctl_TIOCMIWAIT
304 || tmpu32 == tdep->ioctl_TIOCSHAYESESP)
305 {
306 /* Nothing to do. */
307 }
308 else if (tmpu32 == tdep->ioctl_TCGETS || tmpu32 == tdep->ioctl_TCGETA
309 || tmpu32 == tdep->ioctl_TIOCGLCKTRMIOS)
310 {
311 regcache_raw_read (regcache, tdep->arg3,
312 (gdb_byte *) & tmpu32);
313 if (record_arch_list_add_mem (tmpu32, tdep->size_termios))
314 return -1;
315 }
316 else if (tmpu32 == tdep->ioctl_TIOCGPGRP
317 || tmpu32 == tdep->ioctl_TIOCGSID)
318 {
319 regcache_raw_read (regcache, tdep->arg3,
320 (gdb_byte *) & tmpu32);
321 if (record_arch_list_add_mem (tmpu32, tdep->size_pid_t))
322 return -1;
323 }
324 else if (tmpu32 == tdep->ioctl_TIOCOUTQ
325 || tmpu32 == tdep->ioctl_TIOCMGET
326 || tmpu32 == tdep->ioctl_TIOCGSOFTCAR
327 || tmpu32 == tdep->ioctl_FIONREAD
328 || tmpu32 == tdep->ioctl_TIOCINQ
329 || tmpu32 == tdep->ioctl_TIOCGETD
330 || tmpu32 == tdep->ioctl_TIOCGPTN
331 || tmpu32 == tdep->ioctl_TIOCSERGETLSR)
332 {
333 regcache_raw_read (regcache, tdep->arg3,
334 (gdb_byte *) & tmpu32);
335 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
336 return -1;
337 }
338 else if (tmpu32 == tdep->ioctl_TIOCGWINSZ)
339 {
340 regcache_raw_read (regcache, tdep->arg3,
341 (gdb_byte *) & tmpu32);
342 if (record_arch_list_add_mem (tmpu32, tdep->size_winsize))
343 return -1;
344 }
345 else if (tmpu32 == tdep->ioctl_TIOCLINUX)
346 {
347 regcache_raw_read (regcache, tdep->arg3,
348 (gdb_byte *) & tmpu32);
5e31abdf
HZ
349 /* This syscall affect a char size memory. */
350 if (record_arch_list_add_mem (tmpu32, 1))
b7f6bf22
HZ
351 return -1;
352 }
353 else if (tmpu32 == tdep->ioctl_TIOCGSERIAL)
354 {
355 regcache_raw_read (regcache, tdep->arg3,
356 (gdb_byte *) & tmpu32);
357 if (record_arch_list_add_mem (tmpu32, tdep->size_serial_struct))
358 return -1;
359 }
360 else if (tmpu32 == tdep->ioctl_TCGETS2)
361 {
362 regcache_raw_read (regcache, tdep->arg3,
363 (gdb_byte *) & tmpu32);
364 if (record_arch_list_add_mem (tmpu32, tdep->size_termios2))
365 return -1;
366 }
367 else if (tmpu32 == tdep->ioctl_FIOQSIZE)
368 {
369 regcache_raw_read (regcache, tdep->arg3,
370 (gdb_byte *) & tmpu32);
371 if (record_arch_list_add_mem (tmpu32, tdep->size_loff_t))
372 return -1;
373 }
374 else if (tmpu32 == tdep->ioctl_TIOCGICOUNT)
375 {
376 regcache_raw_read (regcache, tdep->arg3,
377 (gdb_byte *) & tmpu32);
378 if (record_arch_list_add_mem
379 (tmpu32, tdep->size_serial_icounter_struct))
380 return -1;
381 }
382 else if (tmpu32 == tdep->ioctl_TIOCGHAYESESP)
383 {
384 regcache_raw_read (regcache, tdep->arg3,
385 (gdb_byte *) & tmpu32);
386 if (record_arch_list_add_mem (tmpu32, tdep->size_hayes_esp_config))
387 return -1;
388 }
389 else if (tmpu32 == tdep->ioctl_TIOCSERGSTRUCT)
390 {
391 printf_unfiltered (_("Process record and replay target doesn't "
392 "support ioctl request TIOCSERGSTRUCT\n"));
393 return 1;
394 }
395 else
396 {
397 printf_unfiltered (_("Process record and replay target doesn't "
50ef67b3
HZ
398 "support ioctl request 0x%s.\n"),
399 phex_nz (tmpu32, 4));
b7f6bf22
HZ
400 return 1;
401 }
402 break;
403
404 /* sys_fcntl */
405 case 55:
406 /* XXX */
407 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
408 sys_fcntl:
50ef67b3 409 if (tmpu32 == tdep->fcntl_F_GETLK)
b7f6bf22
HZ
410 {
411 regcache_raw_read (regcache, tdep->arg3,
412 (gdb_byte *) & tmpu32);
413 if (record_arch_list_add_mem (tmpu32, tdep->size_flock))
414 return -1;
415 }
416 break;
417
418 /* sys_ni_syscall */
419 case 56:
420 /* sys_setpgid */
421 case 57:
422 /* sys_ni_syscall */
423 case 58:
424 break;
425
426 /* sys_olduname */
427 case 59:
428 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
429 if (record_arch_list_add_mem (tmpu32, tdep->size_oldold_utsname))
430 return -1;
431 break;
432
433 /* sys_umask */
434 case 60:
435 /* sys_chroot */
436 case 61:
437 break;
438
439 /* sys_ustat */
440 case 62:
441 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
442 if (record_arch_list_add_mem (tmpu32, tdep->size_ustat))
443 return -1;
444 break;
445
446 /* sys_dup2 */
447 case 63:
448 /* sys_getppid */
449 case 64:
450 /* sys_getpgrp */
451 case 65:
452 /* sys_setsid */
453 case 66:
454 break;
455
456 /* sys_sigaction */
457 case 67:
458 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
459 if (record_arch_list_add_mem (tmpu32, tdep->size_old_sigaction))
460 return -1;
461 break;
462
463 /* sys_sgetmask */
464 case 68:
465 /* sys_ssetmask */
466 case 69:
467 /* sys_setreuid16 */
468 case 70:
469 /* sys_setregid16 */
470 case 71:
471 /* sys_sigsuspend */
472 case 72:
473 break;
474
475 /* sys_sigpending */
476 case 73:
477 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
478 if (record_arch_list_add_mem (tmpu32, tdep->size_old_sigset_t))
479 return -1;
480 break;
481
482 /* sys_sethostname */
483 case 74:
484 /* sys_setrlimit */
485 case 75:
486 break;
487
488 /* sys_old_getrlimit */
489 case 76:
490 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
491 if (record_arch_list_add_mem (tmpu32, tdep->size_rlimit))
492 return -1;
493 break;
494
495 /* sys_getrusage */
496 case 77:
497 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
498 if (record_arch_list_add_mem (tmpu32, tdep->size_rusage))
499 return -1;
500 break;
501
502 /* sys_gettimeofday */
503 case 78:
504 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
505 if (record_arch_list_add_mem (tmpu32, tdep->size_timeval))
506 return -1;
507 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
508 if (record_arch_list_add_mem (tmpu32, tdep->size_timezone))
509 return -1;
510 break;
511
512 /* sys_settimeofday */
513 case 79:
514 break;
515
516 /* sys_getgroups16 */
517 case 80:
518 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
519 if (record_arch_list_add_mem (tmpu32, tdep->size_old_gid_t))
520 return -1;
521 break;
522
523 /* sys_setgroups16 */
524 case 81:
525 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
526 if (record_arch_list_add_mem (tmpu32, tdep->size_old_gid_t))
527 return -1;
528 break;
529
530 /* old_select */
531 case 82:
532 {
533 struct sel_arg_struct
534 {
535 CORE_ADDR n;
536 CORE_ADDR inp;
537 CORE_ADDR outp;
538 CORE_ADDR exp;
539 CORE_ADDR tvp;
540 } sel;
541
542 regcache_raw_read (regcache, tdep->arg1,
543 (gdb_byte *) & tmpu32);
544 if (tmpu32)
545 {
546 if (target_read_memory (tmpu32, (gdb_byte *) & sel, sizeof (sel)))
547 {
548 if (record_debug)
549 fprintf_unfiltered (gdb_stdlog,
550 "Process record: error reading memory "
5af949e3
UW
551 "at addr = %s len = %lu.\n",
552 paddress (gdbarch, tmpu32),
50ef67b3 553 (unsigned long)sizeof (sel));
b7f6bf22
HZ
554 return -1;
555 }
556 if (record_arch_list_add_mem (sel.inp, tdep->size_fd_set))
557 return -1;
558 if (record_arch_list_add_mem (sel.outp, tdep->size_fd_set))
559 return -1;
560 if (record_arch_list_add_mem (sel.exp, tdep->size_fd_set))
561 return -1;
562 if (record_arch_list_add_mem (sel.tvp, tdep->size_timeval))
563 return -1;
564 }
565 }
566 break;
567
568 /* sys_symlink */
569 case 83:
570 break;
571
572 /* sys_readlink */
573 case 85:
574 {
575 uint32_t len;
576 regcache_raw_read (regcache, tdep->arg2,
577 (gdb_byte *) & tmpu32);
578 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & len);
579 if (record_arch_list_add_mem (tmpu32, len))
580 return -1;
581 }
582 break;
583
584 /* sys_uselib */
585 case 86:
586 /* sys_swapon */
587 case 87:
588 break;
589
590 /* sys_reboot */
591 case 88:
592 {
593 int q;
594 target_terminal_ours ();
595 q =
596 yquery (_("The next instruction is syscall reboot. "
597 "It will restart the computer. "
598 "Do you want to stop the program?"));
599 target_terminal_inferior ();
600 if (q)
601 return 1;
602 }
603 break;
604
605 /* old_readdir */
606 case 89:
607 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
608 if (record_arch_list_add_mem (tmpu32, tdep->size_dirent))
609 return -1;
610 break;
611
612 /* old_mmap */
613 case 90:
614 break;
615
616 /* sys_munmap */
617 case 91:
618 {
619 int q;
620 uint32_t len;
621
622 regcache_raw_read (regcache, tdep->arg1,
623 (gdb_byte *) & tmpu32);
624 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & len);
625 target_terminal_ours ();
626 q =
627 yquery (_("The next instruction is syscall munmap. "
5af949e3 628 "It will free the memory addr = %s len = %u. "
b7f6bf22
HZ
629 "It will make record target get error. "
630 "Do you want to stop the program?"),
5af949e3 631 paddress (gdbarch, tmpu32), (int)len);
b7f6bf22
HZ
632 target_terminal_inferior ();
633 if (q)
634 return 1;
635 }
636 break;
637
638 /* sys_truncate */
639 case 92:
640 /* sys_ftruncate */
641 case 93:
642 /* sys_fchmod */
643 case 94:
644 /* sys_fchown16 */
645 case 95:
646 /* sys_getpriority */
647 case 96:
648 /* sys_setpriority */
649 case 97:
650 /* sys_ni_syscall */
651 case 98:
652 break;
653
654 /* sys_statfs */
655 case 99:
656 /* sys_fstatfs */
657 case 100:
658 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
659 if (record_arch_list_add_mem (tmpu32, tdep->size_statfs))
660 return -1;
661 break;
662
663 /* sys_ioperm */
664 case 101:
665 break;
666
667 /* sys_socketcall */
668 case 102:
669 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
670 switch (tmpu32)
671 {
672 case RECORD_SYS_SOCKET:
673 case RECORD_SYS_BIND:
674 case RECORD_SYS_CONNECT:
675 case RECORD_SYS_LISTEN:
676 break;
677 case RECORD_SYS_ACCEPT:
678 case RECORD_SYS_GETSOCKNAME:
679 case RECORD_SYS_GETPEERNAME:
680 {
681 uint32_t a[3];
682 regcache_raw_read (regcache, tdep->arg2,
683 (gdb_byte *) & tmpu32);
684 if (tmpu32)
685 {
686 if (target_read_memory (tmpu32, (gdb_byte *) a, sizeof (a)))
687 {
688 if (record_debug)
689 fprintf_unfiltered (gdb_stdlog,
690 "Process record: error reading "
5af949e3
UW
691 "memory at addr = %s len = %lu.\n",
692 paddress (gdbarch, tmpu32),
50ef67b3 693 (unsigned long)sizeof (a));
b7f6bf22
HZ
694 return -1;
695 }
696 if (record_arch_list_add_mem (a[1], tdep->size_sockaddr))
697 return -1;
698 if (record_arch_list_add_mem (a[2], tdep->size_int))
699 return -1;
700 }
701 }
702 break;
703
704 case RECORD_SYS_SOCKETPAIR:
705 {
706 uint32_t a[4];
707 regcache_raw_read (regcache, tdep->arg2,
708 (gdb_byte *) & tmpu32);
709 if (tmpu32)
710 {
711 if (target_read_memory (tmpu32, (gdb_byte *) a, sizeof (a)))
712 {
713 if (record_debug)
714 fprintf_unfiltered (gdb_stdlog,
715 "Process record: error reading "
5af949e3
UW
716 "memory at addr = %s len = %lu.\n",
717 paddress (gdbarch, tmpu32),
50ef67b3 718 (unsigned long)sizeof (a));
b7f6bf22
HZ
719 return -1;
720 }
721 if (record_arch_list_add_mem (a[3], tdep->size_int))
722 return -1;
723 }
724 }
725 break;
726 case RECORD_SYS_SEND:
727 case RECORD_SYS_SENDTO:
728 break;
729 case RECORD_SYS_RECV:
730 {
731 uint32_t a[3];
732 regcache_raw_read (regcache, tdep->arg2,
733 (gdb_byte *) & tmpu32);
734 if (tmpu32)
735 {
736 if (target_read_memory (tmpu32, (gdb_byte *) a, sizeof (a)))
737 {
738 if (record_debug)
739 fprintf_unfiltered (gdb_stdlog,
740 "Process record: error reading "
5af949e3
UW
741 "memory at addr = %s len = %lu.\n",
742 paddress (gdbarch, tmpu32),
50ef67b3 743 (unsigned long)sizeof (a));
b7f6bf22
HZ
744 return -1;
745 }
746 if (a[2])
747 {
748 if (target_read_memory
749 (a[2], (gdb_byte *) & (a[2]), sizeof (a[2])))
750 {
751 if (record_debug)
752 fprintf_unfiltered (gdb_stdlog,
753 "Process record: error reading "
5af949e3 754 "memory at addr = %s "
50ef67b3 755 "len = %lu.\n",
5af949e3 756 paddress (gdbarch, a[2]),
50ef67b3 757 (unsigned long)sizeof (a[2]));
b7f6bf22
HZ
758 return -1;
759 }
760 if (record_arch_list_add_mem (a[1], a[2]))
761 return -1;
762 }
763 }
764 }
765 break;
766 case RECORD_SYS_RECVFROM:
767 {
768 uint32_t a[6];
769 regcache_raw_read (regcache, tdep->arg2,
770 (gdb_byte *) & tmpu32);
771 if (tmpu32)
772 {
773 if (target_read_memory (tmpu32, (gdb_byte *) a, sizeof (a)))
774 {
775 if (record_debug)
776 fprintf_unfiltered (gdb_stdlog,
777 "Process record: error reading "
5af949e3
UW
778 "memory at addr = %s len = %lu.\n",
779 paddress (gdbarch, tmpu32),
50ef67b3 780 (unsigned long)sizeof (a));
b7f6bf22
HZ
781 return -1;
782 }
783 if (a[2])
784 {
785 if (target_read_memory
786 (a[2], (gdb_byte *) & (a[2]), sizeof (a[2])))
787 {
788 if (record_debug)
789 fprintf_unfiltered (gdb_stdlog,
790 "Process record: error reading "
5af949e3 791 "memory at addr = %s "
50ef67b3 792 "len = %lu.\n",
5af949e3 793 paddress (gdbarch, a[2]),
50ef67b3 794 (unsigned long)sizeof (a[2]));
b7f6bf22
HZ
795 return -1;
796 }
797 if (record_arch_list_add_mem (a[1], a[2]))
798 return -1;
799 if (record_arch_list_add_mem (a[4], tdep->size_sockaddr))
800 return -1;
801 if (record_arch_list_add_mem (a[5], tdep->size_int))
802 return -1;
803 }
804 }
805 }
806 break;
807 case RECORD_SYS_SHUTDOWN:
808 case RECORD_SYS_SETSOCKOPT:
809 break;
810 case RECORD_SYS_GETSOCKOPT:
811 {
812 uint32_t a[5];
813 uint32_t av;
814
815 regcache_raw_read (regcache, tdep->arg2,
816 (gdb_byte *) & tmpu32);
817 if (tmpu32)
818 {
819 if (target_read_memory (tmpu32, (gdb_byte *) a, sizeof (a)))
820 {
821 if (record_debug)
822 fprintf_unfiltered (gdb_stdlog,
823 "Process record: error reading "
5af949e3
UW
824 "memory at addr = %s len = %lu.\n",
825 paddress (gdbarch, tmpu32),
50ef67b3 826 (unsigned long)sizeof (a));
b7f6bf22
HZ
827 return -1;
828 }
829 if (a[4])
830 {
831 if (target_read_memory
832 (a[4], (gdb_byte *) & av, sizeof (av)))
833 {
834 if (record_debug)
835 fprintf_unfiltered (gdb_stdlog,
836 "Process record: error reading "
5af949e3 837 "memory at addr = %s "
50ef67b3 838 "len = %lu.\n",
5af949e3 839 paddress (gdbarch, a[4]),
50ef67b3 840 (unsigned long)sizeof (av));
b7f6bf22
HZ
841 return -1;
842 }
843 if (record_arch_list_add_mem (a[3], av))
844 return -1;
845 if (record_arch_list_add_mem (a[4], tdep->size_int))
846 return -1;
847 }
848 }
849 }
850 break;
851 case RECORD_SYS_SENDMSG:
852 break;
853 case RECORD_SYS_RECVMSG:
854 {
855 uint32_t a[2], i;
856 struct record_msghdr
857 {
858 uint32_t msg_name;
859 uint32_t msg_namelen;
860 uint32_t msg_iov;
861 uint32_t msg_iovlen;
862 uint32_t msg_control;
863 uint32_t msg_controllen;
864 uint32_t msg_flags;
865 } rec;
866 struct record_iovec
867 {
868 uint32_t iov_base;
869 uint32_t iov_len;
870 } iov;
871
872 regcache_raw_read (regcache, tdep->arg2,
873 (gdb_byte *) & tmpu32);
874 if (tmpu32)
875 {
876 if (target_read_memory (tmpu32, (gdb_byte *) a, sizeof (a)))
877 {
878 if (record_debug)
879 fprintf_unfiltered (gdb_stdlog,
880 "Process record: error reading "
5af949e3
UW
881 "memory at addr = %s len = %lu.\n",
882 paddress (gdbarch, tmpu32),
50ef67b3 883 (unsigned long)sizeof (a));
b7f6bf22
HZ
884 return -1;
885 }
886 if (record_arch_list_add_mem (a[1], tdep->size_msghdr))
887 return -1;
888 if (a[1])
889 {
890 if (target_read_memory
891 (a[1], (gdb_byte *) & rec, sizeof (rec)))
892 {
893 if (record_debug)
894 fprintf_unfiltered (gdb_stdlog,
895 "Process record: error reading "
5af949e3 896 "memory at addr = %s "
50ef67b3 897 "len = %lu.\n",
5af949e3 898 paddress (gdbarch, a[1]),
50ef67b3 899 (unsigned long)sizeof (rec));
b7f6bf22
HZ
900 return -1;
901 }
902 if (record_arch_list_add_mem
903 (rec.msg_name, rec.msg_namelen))
904 return -1;
905 if (record_arch_list_add_mem
906 (rec.msg_control, rec.msg_controllen))
907 return -1;
908 if (rec.msg_iov)
909 {
910 for (i = 0; i < rec.msg_iovlen; i++)
911 {
912 if (target_read_memory
913 (rec.msg_iov, (gdb_byte *) & iov,
914 sizeof (iov)))
915 {
916 if (record_debug)
917 fprintf_unfiltered (gdb_stdlog,
918 "Process record: error "
919 "reading memory at "
5af949e3 920 "addr = %s "
50ef67b3 921 "len = %lu.\n",
5af949e3
UW
922 paddress (gdbarch,
923 rec.msg_iov),
50ef67b3 924 (unsigned long)sizeof (iov));
b7f6bf22
HZ
925 return -1;
926 }
927 if (record_arch_list_add_mem
928 (iov.iov_base, iov.iov_len))
929 return -1;
930 rec.msg_iov += sizeof (struct record_iovec);
931 }
932 }
933 }
934 }
935 }
936 break;
937 default:
938 printf_unfiltered (_("Process record and replay target "
50ef67b3
HZ
939 "doesn't support socketcall call 0x%s\n"),
940 phex_nz (tmpu32, 4));
b7f6bf22
HZ
941 return -1;
942 break;
943 }
944 break;
945
946 /* sys_syslog */
947 case 103:
948 break;
949
950 /* sys_setitimer */
951 case 104:
952 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
953 if (record_arch_list_add_mem (tmpu32, tdep->size_itimerval))
954 return -1;
955 break;
956
957 /* sys_getitimer */
958 case 105:
959 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
960 if (record_arch_list_add_mem (tmpu32, tdep->size_itimerval))
961 return -1;
962 break;
963
964 /* sys_newstat */
965 case 106:
966 /* sys_newlstat */
967 case 107:
968 /* sys_newfstat */
969 case 108:
970 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
971 if (record_arch_list_add_mem (tmpu32, tdep->size_stat))
972 return -1;
973 break;
974
975 /* sys_uname */
976 case 109:
977 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
978 if (record_arch_list_add_mem (tmpu32, tdep->size_old_utsname))
979 return -1;
980 break;
981
982 /* sys_iopl */
983 case 110:
984 /* sys_vhangup */
985 case 111:
986 /* sys_ni_syscall */
987 case 112:
988 /* sys_vm86old */
989 case 113:
990 break;
991
992 /* sys_wait4 */
993 case 114:
994 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
995 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
996 return -1;
997 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
998 if (record_arch_list_add_mem (tmpu32, tdep->size_rusage))
999 return -1;
1000 break;
1001
1002 /* sys_swapoff */
1003 case 115:
1004 break;
1005
1006 /* sys_sysinfo */
1007 case 116:
1008 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1009 if (record_arch_list_add_mem (tmpu32, tdep->size_sysinfo))
1010 return -1;
1011 break;
1012
1013 /* sys_ipc */
1014 case 117:
1015 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1016 switch (tmpu32)
1017 {
1018 case RECORD_MSGRCV:
1019 {
1020 int32_t second;
1021 uint32_t ptr;
1022 regcache_raw_read (regcache, tdep->arg3,
1023 (gdb_byte *) & second);
1024 regcache_raw_read (regcache, tdep->arg5,
1025 (gdb_byte *) & ptr);
1026 if (record_arch_list_add_mem (ptr, second + tdep->size_long))
1027 return -1;
1028 }
1029 break;
1030 case RECORD_MSGCTL:
1031 regcache_raw_read (regcache, tdep->arg5,
1032 (gdb_byte *) & tmpu32);
1033 if (record_arch_list_add_mem (tmpu32, tdep->size_msqid_ds))
1034 return -1;
1035 break;
1036 case RECORD_SHMAT:
1037 regcache_raw_read (regcache, tdep->arg4,
1038 (gdb_byte *) & tmpu32);
1039 if (record_arch_list_add_mem (tmpu32, tdep->size_ulong))
1040 return -1;
1041 break;
1042 case RECORD_SHMCTL:
1043 regcache_raw_read (regcache, tdep->arg5,
1044 (gdb_byte *) & tmpu32);
1045 if (record_arch_list_add_mem (tmpu32, tdep->size_shmid_ds))
1046 return -1;
1047 break;
1048 }
1049 break;
1050
1051 /* sys_fsync */
1052 case 118:
1053 /* sys_sigreturn */
1054 case 119:
1055 /* sys_clone */
1056 case 120:
1057 /* sys_setdomainname */
1058 case 121:
1059 break;
1060
1061 /* sys_newuname */
1062 case 122:
1063 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1064 if (record_arch_list_add_mem (tmpu32, tdep->size_new_utsname))
1065 return -1;
1066 break;
1067
1068 /* sys_modify_ldt */
1069 case 123:
1070 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1071 if (tmpu32 == 0 || tmpu32 == 2)
1072 {
1073 uint32_t ptr, bytecount;
1074 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & ptr);
1075 regcache_raw_read (regcache, tdep->arg3,
1076 (gdb_byte *) & bytecount);
1077 if (record_arch_list_add_mem (ptr, bytecount))
1078 return -1;
1079 }
1080 break;
1081
1082 /* sys_adjtimex */
1083 case 124:
1084 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1085 if (record_arch_list_add_mem (tmpu32, tdep->size_timex))
1086 return -1;
1087 break;
1088
1089 /* sys_mprotect */
1090 case 125:
1091 break;
1092
1093 /* sys_sigprocmask */
1094 case 126:
1095 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1096 if (record_arch_list_add_mem (tmpu32, tdep->size_old_sigset_t))
1097 return -1;
1098 break;
1099
1100 /* sys_ni_syscall */
1101 case 127:
1102 /* sys_init_module */
1103 case 128:
1104 /* sys_delete_module */
1105 case 129:
1106 /* sys_ni_syscall */
1107 case 130:
1108 break;
1109
1110 /* sys_quotactl */
1111 case 131:
1112 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1113 switch (tmpu32)
1114 {
1115 case RECORD_Q_GETFMT:
1116 regcache_raw_read (regcache, tdep->arg4,
1117 (gdb_byte *) & tmpu32);
1118 if (record_arch_list_add_mem (tmpu32, 4))
1119 return -1;
1120 break;
1121 case RECORD_Q_GETINFO:
1122 regcache_raw_read (regcache, tdep->arg4,
1123 (gdb_byte *) & tmpu32);
1124 if (record_arch_list_add_mem (tmpu32, tdep->size_mem_dqinfo))
1125 return -1;
1126 break;
1127 case RECORD_Q_GETQUOTA:
1128 regcache_raw_read (regcache, tdep->arg4,
1129 (gdb_byte *) & tmpu32);
1130 if (record_arch_list_add_mem (tmpu32, tdep->size_if_dqblk))
1131 return -1;
1132 break;
1133 case RECORD_Q_XGETQSTAT:
1134 case RECORD_Q_XGETQUOTA:
1135 regcache_raw_read (regcache, tdep->arg4,
1136 (gdb_byte *) & tmpu32);
1137 if (record_arch_list_add_mem (tmpu32, tdep->size_fs_quota_stat))
1138 return -1;
1139 break;
1140 }
1141 break;
1142
1143 /* sys_getpgid */
1144 case 132:
1145 /* sys_fchdir */
1146 case 133:
1147 /* sys_bdflush */
1148 case 134:
1149 break;
1150
1151 /* sys_sysfs */
1152 case 135:
1153 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1154 if (tmpu32 == 2)
1155 {
1156 regcache_raw_read (regcache, tdep->arg3,
1157 (gdb_byte *) & tmpu32);
1158 /*XXX the size of memory is not very clear. */
1159 if (record_arch_list_add_mem (tmpu32, 10))
1160 return -1;
1161 }
1162 break;
1163
1164 /* sys_personality */
1165 case 136:
1166 /* sys_ni_syscall */
1167 case 137:
1168 /* sys_setfsuid16 */
1169 case 138:
1170 /* sys_setfsgid16 */
1171 case 139:
1172 break;
1173
1174 /* sys_llseek */
1175 case 140:
1176 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
1177 if (record_arch_list_add_mem (tmpu32, tdep->size_loff_t))
1178 return -1;
1179 break;
1180
1181 /* sys_getdents */
1182 case 141:
1183 {
1184 uint32_t count;
1185 regcache_raw_read (regcache, tdep->arg2,
1186 (gdb_byte *) & tmpu32);
1187 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & count);
1188 if (record_arch_list_add_mem (tmpu32, tdep->size_dirent * count))
1189 return -1;
1190 }
1191 break;
1192
1193 /* sys_select */
1194 case 142:
1195 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1196 if (record_arch_list_add_mem (tmpu32, tdep->size_fd_set))
1197 return -1;
1198 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1199 if (record_arch_list_add_mem (tmpu32, tdep->size_fd_set))
1200 return -1;
1201 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
1202 if (record_arch_list_add_mem (tmpu32, tdep->size_fd_set))
1203 return -1;
1204 regcache_raw_read (regcache, tdep->arg5, (gdb_byte *) & tmpu32);
1205 if (record_arch_list_add_mem (tmpu32, tdep->size_timeval))
1206 return -1;
1207 break;
1208
1209 /* sys_flock */
1210 case 143:
1211 /* sys_msync */
1212 case 144:
1213 break;
1214
1215 /* sys_readv */
1216 case 145:
1217 {
1218 uint32_t vec;
1219 uint32_t vlen;
1220 struct record_iovec
1221 {
1222 uint32_t iov_base;
1223 uint32_t iov_len;
1224 } iov;
1225 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & vec);
1226 if (vec)
1227 {
1228 regcache_raw_read (regcache, tdep->arg3,
1229 (gdb_byte *) & vlen);
1230 for (tmpu32 = 0; tmpu32 < vlen; tmpu32++)
1231 {
1232 if (target_read_memory
1233 (vec, (gdb_byte *) & iov, sizeof (struct record_iovec)))
1234 {
1235 if (record_debug)
1236 fprintf_unfiltered (gdb_stdlog,
1237 "Process record: error reading "
5af949e3
UW
1238 "memory at addr = %s len = %lu.\n",
1239 paddress (gdbarch, vec),
50ef67b3 1240 (unsigned long)sizeof (struct record_iovec));
b7f6bf22
HZ
1241 return -1;
1242 }
1243 if (record_arch_list_add_mem (iov.iov_base, iov.iov_len))
1244 return -1;
1245 vec += sizeof (struct record_iovec);
1246 }
1247 }
1248 }
1249 break;
1250
1251 /* sys_writev */
1252 case 146:
1253 /* sys_getsid */
1254 case 147:
1255 /* sys_fdatasync */
1256 case 148:
1257 /* sys_sysctl */
1258 case 149:
1259 /* sys_mlock */
1260 case 150:
1261 /* sys_munlock */
1262 case 151:
1263 /* sys_mlockall */
1264 case 152:
1265 /* sys_munlockall */
1266 case 153:
1267 /* sys_sched_setparam */
1268 case 154:
1269 break;
1270
1271 /* sys_sched_getparam */
1272 case 155:
1273 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1274 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
1275 return -1;
1276 break;
1277
1278 /* sys_sched_setscheduler */
1279 case 156:
1280 /* sys_sched_getscheduler */
1281 case 157:
1282 /* sys_sched_yield */
1283 case 158:
1284 /* sys_sched_get_priority_max */
1285 case 159:
1286 /* sys_sched_get_priority_min */
1287 case 160:
1288 break;
1289
1290 /* sys_sched_rr_get_interval */
1291 case 161:
1292 /* sys_nanosleep */
1293 case 162:
1294 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1295 if (record_arch_list_add_mem (tmpu32, tdep->size_timespec))
1296 return -1;
1297 break;
1298
1299 /* sys_mremap */
1300 case 163:
1301 /* sys_setresuid16 */
1302 case 164:
1303 break;
1304
1305 /* sys_getresuid16 */
1306 case 165:
1307 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1308 if (record_arch_list_add_mem (tmpu32, tdep->size_old_uid_t))
1309 return -1;
1310 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1311 if (record_arch_list_add_mem (tmpu32, tdep->size_old_uid_t))
1312 return -1;
1313 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1314 if (record_arch_list_add_mem (tmpu32, tdep->size_old_uid_t))
1315 return -1;
1316 break;
1317
1318 /* sys_vm86 */
1319 case 166:
1320 /* sys_ni_syscall */
1321 case 167:
1322 break;
1323
1324 /* sys_poll */
1325 case 168:
1326 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1327 if (tmpu32)
1328 {
1329 uint32_t nfds;
1330 regcache_raw_read (regcache, tdep->arg2,
1331 (gdb_byte *) & nfds);
1332 if (record_arch_list_add_mem (tmpu32, tdep->size_pollfd * nfds))
1333 return -1;
1334 }
1335 break;
1336
1337 /* sys_nfsservctl */
1338 case 169:
1339 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1340 if (tmpu32 == 7 || tmpu32 == 8)
1341 {
1342 uint32_t rsize;
1343 if (tmpu32 == 7)
1344 rsize = tdep->size_NFS_FHSIZE;
1345 else
1346 rsize = tdep->size_knfsd_fh;
1347 regcache_raw_read (regcache, tdep->arg3,
1348 (gdb_byte *) & tmpu32);
1349 if (record_arch_list_add_mem (tmpu32, rsize))
1350 return -1;
1351 }
1352 break;
1353
1354 /* sys_setresgid16 */
1355 case 170:
1356 break;
1357
1358 /* sys_getresgid16 */
1359 case 171:
1360 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1361 if (record_arch_list_add_mem (tmpu32, tdep->size_old_gid_t))
1362 return -1;
1363 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1364 if (record_arch_list_add_mem (tmpu32, tdep->size_old_gid_t))
1365 return -1;
1366 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1367 if (record_arch_list_add_mem (tmpu32, tdep->size_old_gid_t))
1368 return -1;
1369 break;
1370
1371 /* sys_prctl */
1372 case 172:
1373 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1374 switch (tmpu32)
1375 {
1376 case 2:
1377 regcache_raw_read (regcache, tdep->arg2,
1378 (gdb_byte *) & tmpu32);
1379 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
1380 return -1;
1381 break;
1382 case 16:
1383 regcache_raw_read (regcache, tdep->arg2,
1384 (gdb_byte *) & tmpu32);
1385 if (record_arch_list_add_mem (tmpu32, tdep->size_TASK_COMM_LEN))
1386 return -1;
1387 break;
1388 }
1389 break;
1390
1391 /* sys_rt_sigreturn */
1392 case 173:
1393 break;
1394
1395 /* sys_rt_sigaction */
1396 case 174:
1397 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1398 if (record_arch_list_add_mem (tmpu32, tdep->size_sigaction))
1399 return -1;
1400 break;
1401
1402 /* sys_rt_sigprocmask */
1403 case 175:
1404 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1405 if (record_arch_list_add_mem (tmpu32, tdep->size_sigset_t))
1406 return -1;
1407 break;
1408
1409 /* sys_rt_sigpending */
1410 case 176:
1411 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1412 if (tmpu32)
1413 {
1414 uint32_t sigsetsize;
1415 regcache_raw_read (regcache, tdep->arg2,
1416 (gdb_byte *) & sigsetsize);
1417 if (record_arch_list_add_mem (tmpu32, sigsetsize))
1418 return -1;
1419 }
1420 break;
1421
1422 /* sys_rt_sigtimedwait */
1423 case 177:
1424 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1425 if (record_arch_list_add_mem (tmpu32, tdep->size_siginfo_t))
1426 return -1;
1427 break;
1428
1429 /* sys_rt_sigqueueinfo */
1430 case 178:
1431 /* sys_rt_sigsuspend */
1432 case 179:
1433 break;
1434
1435 /* sys_pread64 */
1436 case 180:
1437 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1438 if (tmpu32)
1439 {
1440 uint32_t count;
1441 regcache_raw_read (regcache, tdep->arg3,
1442 (gdb_byte *) & count);
1443 if (record_arch_list_add_mem (tmpu32, count))
1444 return -1;
1445 }
1446 break;
1447
1448 /* sys_pwrite64 */
1449 case 181:
1450 /* sys_chown16 */
1451 case 182:
1452 break;
1453
1454 /* sys_getcwd */
1455 case 183:
1456 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1457 if (tmpu32)
1458 {
1459 uint32_t size;
1460 regcache_raw_read (regcache, tdep->arg2,
1461 (gdb_byte *) & size);
1462 if (record_arch_list_add_mem (tmpu32, size))
1463 return -1;
1464 }
1465 break;
1466
1467 /* sys_capget */
1468 case 184:
1469 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1470 if (record_arch_list_add_mem (tmpu32, tdep->size_cap_user_data_t))
1471 return -1;
1472 break;
1473
1474 /* sys_capset */
1475 case 185:
1476 break;
1477
1478 /* sys_sigaltstack */
1479 case 186:
1480 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1481 if (record_arch_list_add_mem (tmpu32, tdep->size_stack_t))
1482 return -1;
1483 break;
1484
1485 /* sys_sendfile */
1486 case 187:
1487 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1488 if (record_arch_list_add_mem (tmpu32, tdep->size_off_t))
1489 return -1;
1490 break;
1491
1492 /* sys_ni_syscall */
1493 case 188:
1494 /* sys_ni_syscall */
1495 case 189:
1496 /* sys_vfork */
1497 case 190:
1498 break;
1499
1500 /* sys_getrlimit */
1501 case 191:
1502 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1503 if (record_arch_list_add_mem (tmpu32, tdep->size_rlimit))
1504 return -1;
1505 break;
1506
1507 /* sys_mmap2 */
1508 case 192:
1509 break;
1510
1511 /* sys_truncate64 */
1512 case 193:
1513 /* sys_ftruncate64 */
1514 case 194:
1515 break;
1516
1517 /* sys_stat64 */
1518 case 195:
1519 /* sys_lstat64 */
1520 case 196:
1521 /* sys_fstat64 */
1522 case 197:
1523 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1524 if (record_arch_list_add_mem (tmpu32, tdep->size_stat64))
1525 return -1;
1526 break;
1527
1528 /* sys_lchown */
1529 case 198:
1530 /* sys_getuid */
1531 case 199:
1532 /* sys_getgid */
1533 case 200:
1534 /* sys_geteuid */
1535 case 201:
1536 /* sys_getegid */
1537 case 202:
1538 /* sys_setreuid */
1539 case 203:
1540 /* sys_setregid */
1541 case 204:
1542 break;
1543
1544 /* sys_getgroups */
1545 case 205:
1546 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1547 if (tmpu32)
1548 {
1549 int gidsetsize;
1550 regcache_raw_read (regcache, tdep->arg1,
1551 (gdb_byte *) & gidsetsize);
1552 if (record_arch_list_add_mem
1553 (tmpu32, tdep->size_gid_t * gidsetsize))
1554 return -1;
1555 }
1556 break;
1557
1558 /* sys_setgroups */
1559 case 206:
1560 /* sys_fchown */
1561 case 207:
1562 /* sys_setresuid */
1563 case 208:
1564 break;
1565
1566 /* sys_getresuid */
1567 case 209:
1568 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1569 if (record_arch_list_add_mem (tmpu32, tdep->size_uid_t))
1570 return -1;
1571 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1572 if (record_arch_list_add_mem (tmpu32, tdep->size_uid_t))
1573 return -1;
1574 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1575 if (record_arch_list_add_mem (tmpu32, tdep->size_uid_t))
1576 return -1;
1577 break;
1578
1579 /* sys_setresgid */
1580 case 210:
1581 break;
1582
1583 /* sys_getresgid */
1584 case 211:
1585 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1586 if (record_arch_list_add_mem (tmpu32, tdep->size_gid_t))
1587 return -1;
1588 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1589 if (record_arch_list_add_mem (tmpu32, tdep->size_gid_t))
1590 return -1;
1591 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1592 if (record_arch_list_add_mem (tmpu32, tdep->size_gid_t))
1593 return -1;
1594 break;
1595
1596 /* sys_chown */
1597 case 212:
1598 /* sys_setuid */
1599 case 213:
1600 /* sys_setgid */
1601 case 214:
1602 /* sys_setfsuid */
1603 case 215:
1604 /* sys_setfsgid */
1605 case 216:
1606 /* sys_pivot_root */
1607 case 217:
1608 break;
1609
1610 /* sys_mincore */
1611 case 218:
1612 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1613 if (record_arch_list_add_mem (tmpu32, tdep->size_PAGE_SIZE))
1614 return -1;
1615 break;
1616
1617 /* sys_madvise */
1618 case 219:
1619 break;
1620
1621 /* sys_getdents64 */
1622 case 220:
1623 {
1624 uint32_t count;
1625 regcache_raw_read (regcache, tdep->arg2,
1626 (gdb_byte *) & tmpu32);
1627 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & count);
1628 if (record_arch_list_add_mem (tmpu32, tdep->size_dirent64 * count))
1629 return -1;
1630 }
1631 break;
1632
1633 /* sys_fcntl64 */
1634 case 221:
1635 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
50ef67b3
HZ
1636 if (tmpu32 == tdep->fcntl_F_GETLK64)
1637 {
b7f6bf22
HZ
1638 regcache_raw_read (regcache, tdep->arg3,
1639 (gdb_byte *) & tmpu32);
1640 if (record_arch_list_add_mem (tmpu32, tdep->size_flock64))
1641 return -1;
50ef67b3
HZ
1642 }
1643 else if (tmpu32 != tdep->fcntl_F_SETLK64
1644 && tmpu32 != tdep->fcntl_F_SETLKW64)
1645 {
b7f6bf22 1646 goto sys_fcntl;
b7f6bf22
HZ
1647 }
1648 break;
1649
1650 /* sys_ni_syscall */
1651 case 222:
1652 /* sys_ni_syscall */
1653 case 223:
1654 /* sys_gettid */
1655 case 224:
1656 /* sys_readahead */
1657 case 225:
1658 /* sys_setxattr */
1659 case 226:
1660 /* sys_lsetxattr */
1661 case 227:
1662 /* sys_fsetxattr */
1663 case 228:
1664 break;
1665
1666 /* sys_getxattr */
1667 case 229:
1668 /* sys_lgetxattr */
1669 case 230:
1670 /* sys_fgetxattr */
1671 case 231:
1672 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1673 if (tmpu32)
1674 {
1675 uint32_t size;
1676 regcache_raw_read (regcache, tdep->arg4,
1677 (gdb_byte *) & size);
1678 if (record_arch_list_add_mem (tmpu32, size))
1679 return -1;
1680 }
1681 break;
1682
1683 /* sys_listxattr */
1684 case 232:
1685 /* sys_llistxattr */
1686 case 233:
1687 /* sys_flistxattr */
1688 case 234:
1689 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1690 if (tmpu32)
1691 {
1692 uint32_t size;
1693 regcache_raw_read (regcache, tdep->arg3,
1694 (gdb_byte *) & size);
1695 if (record_arch_list_add_mem (tmpu32, size))
1696 return -1;
1697 }
1698 break;
1699
1700 /* sys_removexattr */
1701 case 235:
1702 /* sys_lremovexattr */
1703 case 236:
1704 /* sys_fremovexattr */
1705 case 237:
1706 /* sys_tkill */
1707 case 238:
1708 break;
1709
1710 /* sys_sendfile64 */
1711 case 239:
1712 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1713 if (record_arch_list_add_mem (tmpu32, tdep->size_loff_t))
1714 return -1;
1715 break;
1716
1717 /* sys_futex */
1718 case 240:
1719 /* sys_sched_setaffinity */
1720 case 241:
1721 break;
1722
1723 /* sys_sched_getaffinity */
1724 case 242:
1725 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1726 if (tmpu32)
1727 {
1728 uint32_t len;
1729 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & len);
1730 if (record_arch_list_add_mem (tmpu32, len))
1731 return -1;
1732 }
1733 break;
1734
1735 /* sys_set_thread_area */
1736 case 243:
1737 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1738 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
1739 return -1;
1740 break;
1741
1742 /* sys_get_thread_area */
1743 case 244:
1744 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1745 if (record_arch_list_add_mem (tmpu32, tdep->size_user_desc))
1746 return -1;
1747 break;
1748
1749 /* sys_io_setup */
1750 case 245:
1751 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1752 if (record_arch_list_add_mem (tmpu32, tdep->size_long))
1753 return -1;
1754 break;
1755
1756 /* sys_io_destroy */
1757 case 246:
1758 break;
1759
1760 /* sys_io_getevents */
1761 case 247:
1762 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
1763 if (tmpu32)
1764 {
1765 int32_t nr;
1766 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & nr);
1767 if (record_arch_list_add_mem (tmpu32, nr * tdep->size_io_event))
1768 return -1;
1769 }
1770 break;
1771
1772 /* sys_io_submit */
1773 case 248:
1774 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1775 if (tmpu32)
1776 {
1777 int32_t i, nr;
1778 uint32_t *iocbp;
1779 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & nr);
1780 iocbp = (uint32_t *) alloca (nr * tdep->size_int);
1781 if (target_read_memory
1782 (tmpu32, (gdb_byte *) iocbp, nr * tdep->size_int))
1783 {
1784 if (record_debug)
1785 fprintf_unfiltered (gdb_stdlog,
1786 "Process record: error reading memory "
5af949e3
UW
1787 "at addr = %s len = %u.\n",
1788 paddress (gdbarch, tmpu32),
50ef67b3 1789 (int)(nr * tdep->size_int));
b7f6bf22
HZ
1790 return -1;
1791 }
1792 for (i = 0; i < nr; i++)
1793 {
1794 if (record_arch_list_add_mem (iocbp[i], tdep->size_iocb))
1795 return -1;
1796 }
1797 }
1798 break;
1799
1800 /* sys_io_cancel */
1801 case 249:
1802 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1803 if (record_arch_list_add_mem (tmpu32, tdep->size_io_event))
1804 return -1;
1805 break;
1806
1807 /* sys_fadvise64 */
1808 case 250:
1809 /* sys_ni_syscall */
1810 case 251:
1811 break;
1812
1813 /* sys_exit_group */
1814 case 252:
1815 {
1816 int q;
1817 target_terminal_ours ();
1818 q =
1819 yquery (_("The next instruction is syscall exit_group. "
1820 "It will make the program exit. "
1821 "Do you want to stop the program?"));
1822 target_terminal_inferior ();
1823 if (q)
1824 return 1;
1825 }
1826 break;
1827
1828 /* sys_lookup_dcookie */
1829 case 253:
1830 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1831 if (tmpu32)
1832 {
1833 uint32_t len;
1834 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & len);
1835 if (record_arch_list_add_mem (tmpu32, len))
1836 return -1;
1837 }
1838 break;
1839
1840 /* sys_epoll_create */
1841 case 254:
1842 /* sys_epoll_ctl */
1843 case 255:
1844 break;
1845
1846 /* sys_epoll_wait */
1847 case 256:
1848 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1849 if (tmpu32)
1850 {
1851 int32_t maxevents;
1852 regcache_raw_read (regcache, tdep->arg3,
1853 (gdb_byte *) & maxevents);
1854 if (record_arch_list_add_mem
1855 (tmpu32, maxevents * tdep->size_epoll_event))
1856 return -1;
1857 }
1858 break;
1859
1860 /* sys_remap_file_pages */
1861 case 257:
1862 /* sys_set_tid_address */
1863 case 258:
1864 break;
1865
1866 /* sys_timer_create */
1867 case 259:
1868 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1869 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
1870 return -1;
1871 break;
1872
1873 /* sys_timer_settime */
1874 case 260:
1875 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
1876 if (record_arch_list_add_mem (tmpu32, tdep->size_itimerspec))
1877 return -1;
1878 break;
1879
1880 /* sys_timer_gettime */
1881 case 261:
1882 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1883 if (record_arch_list_add_mem (tmpu32, tdep->size_itimerspec))
1884 return -1;
1885 break;
1886
1887 /* sys_timer_getoverrun */
1888 case 262:
1889 /* sys_timer_delete */
1890 case 263:
1891 /* sys_clock_settime */
1892 case 264:
1893 break;
1894
1895 /* sys_clock_gettime */
1896 case 265:
1897 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1898 if (record_arch_list_add_mem (tmpu32, tdep->size_timespec))
1899 return -1;
1900 break;
1901
1902 /* sys_clock_getres */
1903 case 266:
1904 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1905 if (record_arch_list_add_mem (tmpu32, tdep->size_timespec))
1906 return -1;
1907 break;
1908
1909 /* sys_clock_nanosleep */
1910 case 267:
1911 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
1912 if (record_arch_list_add_mem (tmpu32, tdep->size_timespec))
1913 return -1;
1914 break;
1915
1916 /* sys_statfs64 */
1917 case 268:
1918 /* sys_fstatfs64 */
1919 case 269:
1920 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1921 if (record_arch_list_add_mem (tmpu32, tdep->size_statfs64))
1922 return -1;
1923 break;
1924
1925 /* sys_tgkill */
1926 case 270:
1927 /* sys_utimes */
1928 case 271:
1929 /* sys_fadvise64_64 */
1930 case 272:
1931 /* sys_ni_syscall */
1932 case 273:
1933 /* sys_mbind */
1934 case 274:
1935 break;
1936
1937 /* sys_get_mempolicy */
1938 case 275:
1939 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1940 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
1941 return -1;
1942 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1943 if (tmpu32)
1944 {
1945 uint32_t maxnode;
1946 regcache_raw_read (regcache, tdep->arg3,
1947 (gdb_byte *) & maxnode);
1948 if (record_arch_list_add_mem (tmpu32, maxnode * tdep->size_long))
1949 return -1;
1950 }
1951 break;
1952
1953 /* sys_set_mempolicy */
1954 case 276:
1955 /* sys_mq_open */
1956 case 277:
1957 /* sys_mq_unlink */
1958 case 278:
1959 /* sys_mq_timedsend */
1960 case 279:
1961 break;
1962
1963 /* sys_mq_timedreceive */
1964 case 280:
1965 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1966 if (tmpu32)
1967 {
1968 uint32_t msg_len;
1969 regcache_raw_read (regcache, tdep->arg3,
1970 (gdb_byte *) & msg_len);
1971 if (record_arch_list_add_mem (tmpu32, msg_len))
1972 return -1;
1973 }
1974 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
1975 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
1976 return -1;
1977 break;
1978
1979 /* sys_mq_notify */
1980 case 281:
1981 break;
1982
1983 /* sys_mq_getsetattr */
1984 case 282:
1985 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1986 if (record_arch_list_add_mem (tmpu32, tdep->size_mq_attr))
1987 return -1;
1988 break;
1989
1990 /* sys_kexec_load */
1991 case 283:
1992 break;
1993
1994 /* sys_waitid */
1995 case 284:
1996 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1997 if (record_arch_list_add_mem (tmpu32, tdep->size_siginfo))
1998 return -1;
1999 regcache_raw_read (regcache, tdep->arg5, (gdb_byte *) & tmpu32);
2000 if (record_arch_list_add_mem (tmpu32, tdep->size_rusage))
2001 return -1;
2002 break;
2003
2004 /* sys_ni_syscall */
2005 case 285:
2006 /* sys_add_key */
2007 case 286:
2008 /* sys_request_key */
2009 case 287:
2010 break;
2011
2012 /* sys_keyctl */
2013 case 288:
2014 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
2015 if (tmpu32 == 6 || tmpu32 == 11)
2016 {
2017 regcache_raw_read (regcache, tdep->arg3,
2018 (gdb_byte *) & tmpu32);
2019 if (tmpu32)
2020 {
2021 uint32_t buflen;
2022 regcache_raw_read (regcache, tdep->arg4,
2023 (gdb_byte *) & buflen);
2024 if (record_arch_list_add_mem (tmpu32, buflen))
2025 return -1;
2026 }
2027 }
2028 break;
2029
2030 /* sys_ioprio_set */
2031 case 289:
2032 /* sys_ioprio_get */
2033 case 290:
2034 /* sys_inotify_init */
2035 case 291:
2036 /* sys_inotify_add_watch */
2037 case 292:
2038 /* sys_inotify_rm_watch */
2039 case 293:
2040 /* sys_migrate_pages */
2041 case 294:
2042 /* sys_openat */
2043 case 295:
2044 /* sys_mkdirat */
2045 case 296:
2046 /* sys_mknodat */
2047 case 297:
2048 /* sys_fchownat */
2049 case 298:
2050 /* sys_futimesat */
2051 case 299:
2052 break;
2053
2054 /* sys_fstatat64 */
2055 case 300:
2056 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2057 if (record_arch_list_add_mem (tmpu32, tdep->size_stat64))
2058 return -1;
2059 break;
2060
2061 /* sys_unlinkat */
2062 case 301:
2063 /* sys_renameat */
2064 case 302:
2065 /* sys_linkat */
2066 case 303:
2067 /* sys_symlinkat */
2068 case 304:
2069 break;
2070
2071 /* sys_readlinkat */
2072 case 305:
2073 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2074 if (tmpu32)
2075 {
2076 int32_t bufsiz;
2077 regcache_raw_read (regcache, tdep->arg4,
2078 (gdb_byte *) & bufsiz);
2079 if (record_arch_list_add_mem (tmpu32, bufsiz))
2080 return -1;
2081 }
2082 break;
2083
2084 /* sys_fchmodat */
2085 case 306:
2086 /* sys_faccessat */
2087 case 307:
2088 break;
2089
2090 /* sys_pselect6 */
2091 case 308:
2092 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
2093 if (record_arch_list_add_mem (tmpu32, tdep->size_fd_set))
2094 return -1;
2095 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2096 if (record_arch_list_add_mem (tmpu32, tdep->size_fd_set))
2097 return -1;
2098 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
2099 if (record_arch_list_add_mem (tmpu32, tdep->size_fd_set))
2100 return -1;
2101 regcache_raw_read (regcache, tdep->arg5, (gdb_byte *) & tmpu32);
2102 if (record_arch_list_add_mem (tmpu32, tdep->size_timespec))
2103 return -1;
2104 break;
2105
2106 /* sys_ppoll */
2107 case 309:
2108 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
2109 if (tmpu32)
2110 {
2111 uint32_t nfds;
2112 regcache_raw_read (regcache, tdep->arg2,
2113 (gdb_byte *) & nfds);
2114 if (record_arch_list_add_mem (tmpu32, tdep->size_pollfd * nfds))
2115 return -1;
2116 }
2117 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2118 if (record_arch_list_add_mem (tmpu32, tdep->size_timespec))
2119 return -1;
2120 break;
2121
2122 /* sys_unshare */
2123 case 310:
2124 /* sys_set_robust_list */
2125 case 311:
2126 break;
2127
2128 /* sys_get_robust_list */
2129 case 312:
2130 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
2131 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
2132 return -1;
2133 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2134 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
2135 return -1;
2136 break;
2137
2138 /* sys_splice */
2139 case 313:
2140 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
2141 if (record_arch_list_add_mem (tmpu32, tdep->size_loff_t))
2142 return -1;
2143 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
2144 if (record_arch_list_add_mem (tmpu32, tdep->size_loff_t))
2145 return -1;
2146 break;
2147
2148 /* sys_sync_file_range */
2149 case 314:
2150 /* sys_tee */
2151 case 315:
2152 /* sys_vmsplice */
2153 case 316:
2154 break;
2155
2156 /* sys_move_pages */
2157 case 317:
2158 regcache_raw_read (regcache, tdep->arg5, (gdb_byte *) & tmpu32);
2159 if (tmpu32)
2160 {
2161 uint32_t nr_pages;
2162 regcache_raw_read (regcache, tdep->arg2,
2163 (gdb_byte *) & nr_pages);
2164 if (record_arch_list_add_mem (tmpu32, nr_pages * tdep->size_int))
2165 return -1;
2166 }
2167 break;
2168
2169 /* sys_getcpu */
2170 case 318:
2171 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
2172 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
2173 return -1;
2174 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
2175 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
2176 return -1;
2177 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2178 if (record_arch_list_add_mem (tmpu32, tdep->size_ulong * 2))
2179 return -1;
2180 break;
2181
2182 /* sys_epoll_pwait */
2183 case 319:
2184 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
2185 if (tmpu32)
2186 {
2187 int32_t maxevents;
2188 regcache_raw_read (regcache, tdep->arg3,
2189 (gdb_byte *) & maxevents);
2190 if (record_arch_list_add_mem
2191 (tmpu32, maxevents * tdep->size_epoll_event))
2192 return -1;
2193 }
2194 break;
2195
2196 default:
2197 printf_unfiltered (_("Process record and replay target doesn't "
50ef67b3
HZ
2198 "support syscall number %u\n"),
2199 (int)tmpu32);
b7f6bf22
HZ
2200 return -1;
2201 break;
2202 }
2203
2204 return 0;
2205}
This page took 0.130384 seconds and 4 git commands to generate.