Linux process record and replay support.
[deliverable/binutils-gdb.git] / gdb / linux-record.c
CommitLineData
b7f6bf22
HZ
1/* Process record and replay target code for GNU/Linux.
2
3 Copyright (C) 2008, 2009 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20#include "defs.h"
21#include "target.h"
22#include "regcache.h"
23#include "record.h"
24#include "linux-record.h"
25
26/* These macros are the values of the first argument of system call
27 "sys_ptrace". The values of these macros were obtained from Linux
28 Kernel source. */
29
30#define RECORD_PTRACE_PEEKTEXT 1
31#define RECORD_PTRACE_PEEKDATA 2
32#define RECORD_PTRACE_PEEKUSR 3
33
34/* These macros are the values of the first argument of system call
35 "sys_socketcall". The values of these macros were obtained from
36 Linux Kernel source. */
37
38#define RECORD_SYS_SOCKET 1
39#define RECORD_SYS_BIND 2
40#define RECORD_SYS_CONNECT 3
41#define RECORD_SYS_LISTEN 4
42#define RECORD_SYS_ACCEPT 5
43#define RECORD_SYS_GETSOCKNAME 6
44#define RECORD_SYS_GETPEERNAME 7
45#define RECORD_SYS_SOCKETPAIR 8
46#define RECORD_SYS_SEND 9
47#define RECORD_SYS_RECV 10
48#define RECORD_SYS_SENDTO 11
49#define RECORD_SYS_RECVFROM 12
50#define RECORD_SYS_SHUTDOWN 13
51#define RECORD_SYS_SETSOCKOPT 14
52#define RECORD_SYS_GETSOCKOPT 15
53#define RECORD_SYS_SENDMSG 16
54#define RECORD_SYS_RECVMSG 17
55
56/* These macros are the values of the first argument of system call
57 "sys_ipc". The values of these macros were obtained from Linux
58 Kernel source. */
59
60#define RECORD_SEMOP 1
61#define RECORD_SEMGET 2
62#define RECORD_SEMCTL 3
63#define RECORD_SEMTIMEDOP 4
64#define RECORD_MSGSND 11
65#define RECORD_MSGRCV 12
66#define RECORD_MSGGET 13
67#define RECORD_MSGCTL 14
68#define RECORD_SHMAT 21
69#define RECORD_SHMDT 22
70#define RECORD_SHMGET 23
71#define RECORD_SHMCTL 24
72
73/* These macros are the values of the first argument of system call
74 "sys_quotactl". The values of these macros were obtained from Linux
75 Kernel source. */
76
77#define RECORD_Q_GETFMT 0x800004
78#define RECORD_Q_GETINFO 0x800005
79#define RECORD_Q_GETQUOTA 0x800007
80#define RECORD_Q_XGETQSTAT (('5' << 8) + 5)
81#define RECORD_Q_XGETQUOTA (('3' << 8) + 3)
82
83/* When the architecture process record get a Linux syscall
84 instruction, it will get a Linux syscall number of this
85 architecture and convert it to the Linux syscall number "num" which
86 is internal to GDB. Most Linux syscalls across architectures in
87 Linux would be similar and mostly differ by sizes of types and
88 structures. This sizes are put to "tdep".
89
90 Record the values of the registers and memory that will be changed
91 in current system call.
92
93 Return -1 if something wrong. */
94
95int
96record_linux_system_call (int num, struct regcache *regcache,
97 struct linux_record_tdep *tdep)
98{
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%08x.\n"),
397 tmpu32);
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 == 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 = %d.\n",
550 paddr_nz (tmpu32),
551 (int) 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 = %d. "
627 "It will make record target get error. "
628 "Do you want to stop the program?"),
629 paddr_nz (tmpu32), 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 = %d.\n",
690 paddr_nz (tmpu32),
691 (int) 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 = %d.\n",
715 paddr_nz (tmpu32),
716 (int) 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 = %d.\n",
740 paddr_nz (tmpu32),
741 (int) 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 = %d.\n",
754 paddr_nz (a[2]),
755 (int) 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 = %d.\n",
777 paddr_nz (tmpu32),
778 (int) 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 = %d.\n",
791 paddr_nz (a[2]),
792 (int) 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 = %d.\n",
823 paddr_nz (tmpu32),
824 (int) 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 = %d.\n",
837 paddr_nz (a[4]),
838 (int) 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 = %d.\n",
880 paddr_nz (tmpu32),
881 (int) 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 = %d.\n",
896 paddr_nz (a[1]),
897 (int) 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 = %d.\n",
920 paddr_nz (rec.
921 msg_iov),
922 (int) 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%08x\n"),
938 tmpu32);
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 = %d.\n",
1237 paddr_nz (vec),
1238 (int) 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 switch (tmpu32)
1635 {
1636 case F_GETLK64:
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 break;
1642 case F_SETLK64:
1643 case F_SETLKW64:
1644 break;
1645 default:
1646 goto sys_fcntl;
1647 break;
1648 }
1649 break;
1650
1651 /* sys_ni_syscall */
1652 case 222:
1653 /* sys_ni_syscall */
1654 case 223:
1655 /* sys_gettid */
1656 case 224:
1657 /* sys_readahead */
1658 case 225:
1659 /* sys_setxattr */
1660 case 226:
1661 /* sys_lsetxattr */
1662 case 227:
1663 /* sys_fsetxattr */
1664 case 228:
1665 break;
1666
1667 /* sys_getxattr */
1668 case 229:
1669 /* sys_lgetxattr */
1670 case 230:
1671 /* sys_fgetxattr */
1672 case 231:
1673 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1674 if (tmpu32)
1675 {
1676 uint32_t size;
1677 regcache_raw_read (regcache, tdep->arg4,
1678 (gdb_byte *) & size);
1679 if (record_arch_list_add_mem (tmpu32, size))
1680 return -1;
1681 }
1682 break;
1683
1684 /* sys_listxattr */
1685 case 232:
1686 /* sys_llistxattr */
1687 case 233:
1688 /* sys_flistxattr */
1689 case 234:
1690 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1691 if (tmpu32)
1692 {
1693 uint32_t size;
1694 regcache_raw_read (regcache, tdep->arg3,
1695 (gdb_byte *) & size);
1696 if (record_arch_list_add_mem (tmpu32, size))
1697 return -1;
1698 }
1699 break;
1700
1701 /* sys_removexattr */
1702 case 235:
1703 /* sys_lremovexattr */
1704 case 236:
1705 /* sys_fremovexattr */
1706 case 237:
1707 /* sys_tkill */
1708 case 238:
1709 break;
1710
1711 /* sys_sendfile64 */
1712 case 239:
1713 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1714 if (record_arch_list_add_mem (tmpu32, tdep->size_loff_t))
1715 return -1;
1716 break;
1717
1718 /* sys_futex */
1719 case 240:
1720 /* sys_sched_setaffinity */
1721 case 241:
1722 break;
1723
1724 /* sys_sched_getaffinity */
1725 case 242:
1726 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1727 if (tmpu32)
1728 {
1729 uint32_t len;
1730 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & len);
1731 if (record_arch_list_add_mem (tmpu32, len))
1732 return -1;
1733 }
1734 break;
1735
1736 /* sys_set_thread_area */
1737 case 243:
1738 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1739 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
1740 return -1;
1741 break;
1742
1743 /* sys_get_thread_area */
1744 case 244:
1745 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1746 if (record_arch_list_add_mem (tmpu32, tdep->size_user_desc))
1747 return -1;
1748 break;
1749
1750 /* sys_io_setup */
1751 case 245:
1752 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1753 if (record_arch_list_add_mem (tmpu32, tdep->size_long))
1754 return -1;
1755 break;
1756
1757 /* sys_io_destroy */
1758 case 246:
1759 break;
1760
1761 /* sys_io_getevents */
1762 case 247:
1763 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
1764 if (tmpu32)
1765 {
1766 int32_t nr;
1767 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & nr);
1768 if (record_arch_list_add_mem (tmpu32, nr * tdep->size_io_event))
1769 return -1;
1770 }
1771 break;
1772
1773 /* sys_io_submit */
1774 case 248:
1775 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1776 if (tmpu32)
1777 {
1778 int32_t i, nr;
1779 uint32_t *iocbp;
1780 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & nr);
1781 iocbp = (uint32_t *) alloca (nr * tdep->size_int);
1782 if (target_read_memory
1783 (tmpu32, (gdb_byte *) iocbp, nr * tdep->size_int))
1784 {
1785 if (record_debug)
1786 fprintf_unfiltered (gdb_stdlog,
1787 "Process record: error reading memory "
1788 "at addr = 0x%s len = %d.\n",
1789 paddr_nz (tmpu32), nr * tdep->size_int);
1790 return -1;
1791 }
1792 for (i = 0; i < nr; i++)
1793 {
1794 if (record_arch_list_add_mem (iocbp[i], tdep->size_iocb))
1795 return -1;
1796 }
1797 }
1798 break;
1799
1800 /* sys_io_cancel */
1801 case 249:
1802 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1803 if (record_arch_list_add_mem (tmpu32, tdep->size_io_event))
1804 return -1;
1805 break;
1806
1807 /* sys_fadvise64 */
1808 case 250:
1809 /* sys_ni_syscall */
1810 case 251:
1811 break;
1812
1813 /* sys_exit_group */
1814 case 252:
1815 {
1816 int q;
1817 target_terminal_ours ();
1818 q =
1819 yquery (_("The next instruction is syscall exit_group. "
1820 "It will make the program exit. "
1821 "Do you want to stop the program?"));
1822 target_terminal_inferior ();
1823 if (q)
1824 return 1;
1825 }
1826 break;
1827
1828 /* sys_lookup_dcookie */
1829 case 253:
1830 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1831 if (tmpu32)
1832 {
1833 uint32_t len;
1834 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & len);
1835 if (record_arch_list_add_mem (tmpu32, len))
1836 return -1;
1837 }
1838 break;
1839
1840 /* sys_epoll_create */
1841 case 254:
1842 /* sys_epoll_ctl */
1843 case 255:
1844 break;
1845
1846 /* sys_epoll_wait */
1847 case 256:
1848 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1849 if (tmpu32)
1850 {
1851 int32_t maxevents;
1852 regcache_raw_read (regcache, tdep->arg3,
1853 (gdb_byte *) & maxevents);
1854 if (record_arch_list_add_mem
1855 (tmpu32, maxevents * tdep->size_epoll_event))
1856 return -1;
1857 }
1858 break;
1859
1860 /* sys_remap_file_pages */
1861 case 257:
1862 /* sys_set_tid_address */
1863 case 258:
1864 break;
1865
1866 /* sys_timer_create */
1867 case 259:
1868 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1869 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
1870 return -1;
1871 break;
1872
1873 /* sys_timer_settime */
1874 case 260:
1875 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
1876 if (record_arch_list_add_mem (tmpu32, tdep->size_itimerspec))
1877 return -1;
1878 break;
1879
1880 /* sys_timer_gettime */
1881 case 261:
1882 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1883 if (record_arch_list_add_mem (tmpu32, tdep->size_itimerspec))
1884 return -1;
1885 break;
1886
1887 /* sys_timer_getoverrun */
1888 case 262:
1889 /* sys_timer_delete */
1890 case 263:
1891 /* sys_clock_settime */
1892 case 264:
1893 break;
1894
1895 /* sys_clock_gettime */
1896 case 265:
1897 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1898 if (record_arch_list_add_mem (tmpu32, tdep->size_timespec))
1899 return -1;
1900 break;
1901
1902 /* sys_clock_getres */
1903 case 266:
1904 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1905 if (record_arch_list_add_mem (tmpu32, tdep->size_timespec))
1906 return -1;
1907 break;
1908
1909 /* sys_clock_nanosleep */
1910 case 267:
1911 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
1912 if (record_arch_list_add_mem (tmpu32, tdep->size_timespec))
1913 return -1;
1914 break;
1915
1916 /* sys_statfs64 */
1917 case 268:
1918 /* sys_fstatfs64 */
1919 case 269:
1920 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1921 if (record_arch_list_add_mem (tmpu32, tdep->size_statfs64))
1922 return -1;
1923 break;
1924
1925 /* sys_tgkill */
1926 case 270:
1927 /* sys_utimes */
1928 case 271:
1929 /* sys_fadvise64_64 */
1930 case 272:
1931 /* sys_ni_syscall */
1932 case 273:
1933 /* sys_mbind */
1934 case 274:
1935 break;
1936
1937 /* sys_get_mempolicy */
1938 case 275:
1939 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
1940 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
1941 return -1;
1942 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1943 if (tmpu32)
1944 {
1945 uint32_t maxnode;
1946 regcache_raw_read (regcache, tdep->arg3,
1947 (gdb_byte *) & maxnode);
1948 if (record_arch_list_add_mem (tmpu32, maxnode * tdep->size_long))
1949 return -1;
1950 }
1951 break;
1952
1953 /* sys_set_mempolicy */
1954 case 276:
1955 /* sys_mq_open */
1956 case 277:
1957 /* sys_mq_unlink */
1958 case 278:
1959 /* sys_mq_timedsend */
1960 case 279:
1961 break;
1962
1963 /* sys_mq_timedreceive */
1964 case 280:
1965 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
1966 if (tmpu32)
1967 {
1968 uint32_t msg_len;
1969 regcache_raw_read (regcache, tdep->arg3,
1970 (gdb_byte *) & msg_len);
1971 if (record_arch_list_add_mem (tmpu32, msg_len))
1972 return -1;
1973 }
1974 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
1975 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
1976 return -1;
1977 break;
1978
1979 /* sys_mq_notify */
1980 case 281:
1981 break;
1982
1983 /* sys_mq_getsetattr */
1984 case 282:
1985 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1986 if (record_arch_list_add_mem (tmpu32, tdep->size_mq_attr))
1987 return -1;
1988 break;
1989
1990 /* sys_kexec_load */
1991 case 283:
1992 break;
1993
1994 /* sys_waitid */
1995 case 284:
1996 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
1997 if (record_arch_list_add_mem (tmpu32, tdep->size_siginfo))
1998 return -1;
1999 regcache_raw_read (regcache, tdep->arg5, (gdb_byte *) & tmpu32);
2000 if (record_arch_list_add_mem (tmpu32, tdep->size_rusage))
2001 return -1;
2002 break;
2003
2004 /* sys_ni_syscall */
2005 case 285:
2006 /* sys_add_key */
2007 case 286:
2008 /* sys_request_key */
2009 case 287:
2010 break;
2011
2012 /* sys_keyctl */
2013 case 288:
2014 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
2015 if (tmpu32 == 6 || tmpu32 == 11)
2016 {
2017 regcache_raw_read (regcache, tdep->arg3,
2018 (gdb_byte *) & tmpu32);
2019 if (tmpu32)
2020 {
2021 uint32_t buflen;
2022 regcache_raw_read (regcache, tdep->arg4,
2023 (gdb_byte *) & buflen);
2024 if (record_arch_list_add_mem (tmpu32, buflen))
2025 return -1;
2026 }
2027 }
2028 break;
2029
2030 /* sys_ioprio_set */
2031 case 289:
2032 /* sys_ioprio_get */
2033 case 290:
2034 /* sys_inotify_init */
2035 case 291:
2036 /* sys_inotify_add_watch */
2037 case 292:
2038 /* sys_inotify_rm_watch */
2039 case 293:
2040 /* sys_migrate_pages */
2041 case 294:
2042 /* sys_openat */
2043 case 295:
2044 /* sys_mkdirat */
2045 case 296:
2046 /* sys_mknodat */
2047 case 297:
2048 /* sys_fchownat */
2049 case 298:
2050 /* sys_futimesat */
2051 case 299:
2052 break;
2053
2054 /* sys_fstatat64 */
2055 case 300:
2056 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2057 if (record_arch_list_add_mem (tmpu32, tdep->size_stat64))
2058 return -1;
2059 break;
2060
2061 /* sys_unlinkat */
2062 case 301:
2063 /* sys_renameat */
2064 case 302:
2065 /* sys_linkat */
2066 case 303:
2067 /* sys_symlinkat */
2068 case 304:
2069 break;
2070
2071 /* sys_readlinkat */
2072 case 305:
2073 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2074 if (tmpu32)
2075 {
2076 int32_t bufsiz;
2077 regcache_raw_read (regcache, tdep->arg4,
2078 (gdb_byte *) & bufsiz);
2079 if (record_arch_list_add_mem (tmpu32, bufsiz))
2080 return -1;
2081 }
2082 break;
2083
2084 /* sys_fchmodat */
2085 case 306:
2086 /* sys_faccessat */
2087 case 307:
2088 break;
2089
2090 /* sys_pselect6 */
2091 case 308:
2092 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
2093 if (record_arch_list_add_mem (tmpu32, tdep->size_fd_set))
2094 return -1;
2095 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2096 if (record_arch_list_add_mem (tmpu32, tdep->size_fd_set))
2097 return -1;
2098 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
2099 if (record_arch_list_add_mem (tmpu32, tdep->size_fd_set))
2100 return -1;
2101 regcache_raw_read (regcache, tdep->arg5, (gdb_byte *) & tmpu32);
2102 if (record_arch_list_add_mem (tmpu32, tdep->size_timespec))
2103 return -1;
2104 break;
2105
2106 /* sys_ppoll */
2107 case 309:
2108 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
2109 if (tmpu32)
2110 {
2111 uint32_t nfds;
2112 regcache_raw_read (regcache, tdep->arg2,
2113 (gdb_byte *) & nfds);
2114 if (record_arch_list_add_mem (tmpu32, tdep->size_pollfd * nfds))
2115 return -1;
2116 }
2117 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2118 if (record_arch_list_add_mem (tmpu32, tdep->size_timespec))
2119 return -1;
2120 break;
2121
2122 /* sys_unshare */
2123 case 310:
2124 /* sys_set_robust_list */
2125 case 311:
2126 break;
2127
2128 /* sys_get_robust_list */
2129 case 312:
2130 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
2131 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
2132 return -1;
2133 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2134 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
2135 return -1;
2136 break;
2137
2138 /* sys_splice */
2139 case 313:
2140 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
2141 if (record_arch_list_add_mem (tmpu32, tdep->size_loff_t))
2142 return -1;
2143 regcache_raw_read (regcache, tdep->arg4, (gdb_byte *) & tmpu32);
2144 if (record_arch_list_add_mem (tmpu32, tdep->size_loff_t))
2145 return -1;
2146 break;
2147
2148 /* sys_sync_file_range */
2149 case 314:
2150 /* sys_tee */
2151 case 315:
2152 /* sys_vmsplice */
2153 case 316:
2154 break;
2155
2156 /* sys_move_pages */
2157 case 317:
2158 regcache_raw_read (regcache, tdep->arg5, (gdb_byte *) & tmpu32);
2159 if (tmpu32)
2160 {
2161 uint32_t nr_pages;
2162 regcache_raw_read (regcache, tdep->arg2,
2163 (gdb_byte *) & nr_pages);
2164 if (record_arch_list_add_mem (tmpu32, nr_pages * tdep->size_int))
2165 return -1;
2166 }
2167 break;
2168
2169 /* sys_getcpu */
2170 case 318:
2171 regcache_raw_read (regcache, tdep->arg1, (gdb_byte *) & tmpu32);
2172 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
2173 return -1;
2174 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
2175 if (record_arch_list_add_mem (tmpu32, tdep->size_int))
2176 return -1;
2177 regcache_raw_read (regcache, tdep->arg3, (gdb_byte *) & tmpu32);
2178 if (record_arch_list_add_mem (tmpu32, tdep->size_ulong * 2))
2179 return -1;
2180 break;
2181
2182 /* sys_epoll_pwait */
2183 case 319:
2184 regcache_raw_read (regcache, tdep->arg2, (gdb_byte *) & tmpu32);
2185 if (tmpu32)
2186 {
2187 int32_t maxevents;
2188 regcache_raw_read (regcache, tdep->arg3,
2189 (gdb_byte *) & maxevents);
2190 if (record_arch_list_add_mem
2191 (tmpu32, maxevents * tdep->size_epoll_event))
2192 return -1;
2193 }
2194 break;
2195
2196 default:
2197 printf_unfiltered (_("Process record and replay target doesn't "
2198 "support syscall number 0x%08x\n"),
2199 tmpu32);
2200 return -1;
2201 break;
2202 }
2203
2204 return 0;
2205}
This page took 0.099665 seconds and 4 git commands to generate.