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