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