Linux process record and replay support.
[platform/upstream/binutils.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%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 }