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