OSDN Git Service

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