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