1 /* Process record and replay target code for GNU/Linux.
3 Copyright (C) 2008, 2009 Free Software Foundation, Inc.
5 This file is part of GDB.
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.
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.
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/>. */
25 #include "linux-record.h"
27 /* These macros are the values of the first argument of system call
28 "sys_ptrace". The values of these macros were obtained from Linux
31 #define RECORD_PTRACE_PEEKTEXT 1
32 #define RECORD_PTRACE_PEEKDATA 2
33 #define RECORD_PTRACE_PEEKUSR 3
35 /* These macros are the values of the first argument of system call
36 "sys_socketcall". The values of these macros were obtained from
37 Linux Kernel source. */
39 #define RECORD_SYS_SOCKET 1
40 #define RECORD_SYS_BIND 2
41 #define RECORD_SYS_CONNECT 3
42 #define RECORD_SYS_LISTEN 4
43 #define RECORD_SYS_ACCEPT 5
44 #define RECORD_SYS_GETSOCKNAME 6
45 #define RECORD_SYS_GETPEERNAME 7
46 #define RECORD_SYS_SOCKETPAIR 8
47 #define RECORD_SYS_SEND 9
48 #define RECORD_SYS_RECV 10
49 #define RECORD_SYS_SENDTO 11
50 #define RECORD_SYS_RECVFROM 12
51 #define RECORD_SYS_SHUTDOWN 13
52 #define RECORD_SYS_SETSOCKOPT 14
53 #define RECORD_SYS_GETSOCKOPT 15
54 #define RECORD_SYS_SENDMSG 16
55 #define RECORD_SYS_RECVMSG 17
57 /* These macros are the values of the first argument of system call
58 "sys_ipc". The values of these macros were obtained from Linux
61 #define RECORD_SEMOP 1
62 #define RECORD_SEMGET 2
63 #define RECORD_SEMCTL 3
64 #define RECORD_SEMTIMEDOP 4
65 #define RECORD_MSGSND 11
66 #define RECORD_MSGRCV 12
67 #define RECORD_MSGGET 13
68 #define RECORD_MSGCTL 14
69 #define RECORD_SHMAT 21
70 #define RECORD_SHMDT 22
71 #define RECORD_SHMGET 23
72 #define RECORD_SHMCTL 24
74 /* These macros are the values of the first argument of system call
75 "sys_quotactl". The values of these macros were obtained from Linux
78 #define RECORD_Q_GETFMT 0x800004
79 #define RECORD_Q_GETINFO 0x800005
80 #define RECORD_Q_GETQUOTA 0x800007
81 #define RECORD_Q_XGETQSTAT (('5' << 8) + 5)
82 #define RECORD_Q_XGETQUOTA (('3' << 8) + 3)
84 #define OUTPUT_REG(val, num) phex_nz ((val), \
85 TYPE_LENGTH (gdbarch_register_type (get_regcache_arch (regcache), (num))))
88 record_linux_sockaddr (struct regcache
*regcache
,
89 struct linux_record_tdep
*tdep
, ULONGEST addr
,
94 struct gdbarch
*gdbarch
= get_regcache_arch (regcache
);
95 enum bfd_endian byte_order
= gdbarch_byte_order (gdbarch
);
100 a
= alloca (tdep
->size_int
);
102 if (record_arch_list_add_mem ((CORE_ADDR
) len
, tdep
->size_int
))
105 /* Get the addrlen. */
106 if (target_read_memory ((CORE_ADDR
) len
, a
, tdep
->size_int
))
109 fprintf_unfiltered (gdb_stdlog
,
110 "Process record: error reading "
111 "memory at addr = 0x%s len = %d.\n",
112 phex_nz (len
, tdep
->size_pointer
),
116 addrlen
= (int) extract_unsigned_integer (a
, tdep
->size_int
, byte_order
);
117 if (addrlen
<= 0 || addrlen
> tdep
->size_sockaddr
)
118 addrlen
= tdep
->size_sockaddr
;
120 if (record_arch_list_add_mem ((CORE_ADDR
) addr
, addrlen
))
127 record_linux_msghdr (struct regcache
*regcache
,
128 struct linux_record_tdep
*tdep
, ULONGEST addr
)
131 struct gdbarch
*gdbarch
= get_regcache_arch (regcache
);
132 enum bfd_endian byte_order
= gdbarch_byte_order (gdbarch
);
139 if (record_arch_list_add_mem ((CORE_ADDR
) addr
, tdep
->size_msghdr
))
142 a
= alloca (tdep
->size_msghdr
);
143 if (target_read_memory ((CORE_ADDR
) addr
, a
, tdep
->size_msghdr
))
146 fprintf_unfiltered (gdb_stdlog
,
147 "Process record: error reading "
148 "memory at addr = 0x%s "
150 phex_nz (addr
, tdep
->size_pointer
),
155 /* msg_name msg_namelen */
156 addr
= extract_unsigned_integer (a
, tdep
->size_pointer
, byte_order
);
157 a
+= tdep
->size_pointer
;
158 if (record_arch_list_add_mem ((CORE_ADDR
) addr
,
159 (int) extract_unsigned_integer (a
,
165 /* msg_iov msg_iovlen */
166 addr
= extract_unsigned_integer (a
, tdep
->size_pointer
, byte_order
);
167 a
+= tdep
->size_pointer
;
171 ULONGEST len
= extract_unsigned_integer (a
, tdep
->size_size_t
,
173 gdb_byte
*iov
= alloca (tdep
->size_iovec
);
175 for (i
= 0; i
< len
; i
++)
177 if (target_read_memory ((CORE_ADDR
) addr
, iov
, tdep
->size_iovec
))
180 fprintf_unfiltered (gdb_stdlog
,
181 "Process record: error "
185 phex_nz (addr
,tdep
->size_pointer
),
189 tmpaddr
= (CORE_ADDR
) extract_unsigned_integer (iov
,
192 tmpint
= (int) extract_unsigned_integer (iov
+ tdep
->size_pointer
,
195 if (record_arch_list_add_mem (tmpaddr
, tmpint
));
197 addr
+= tdep
->size_iovec
;
200 a
+= tdep
->size_size_t
;
202 /* msg_control msg_controllen */
203 addr
= extract_unsigned_integer (a
, tdep
->size_pointer
, byte_order
);
204 a
+= tdep
->size_pointer
;
205 tmpint
= (int) extract_unsigned_integer (a
, tdep
->size_size_t
, byte_order
);
206 if (record_arch_list_add_mem ((CORE_ADDR
) addr
, tmpint
));
212 /* When the architecture process record get a Linux syscall
213 instruction, it will get a Linux syscall number of this
214 architecture and convert it to the Linux syscall number "num" which
215 is internal to GDB. Most Linux syscalls across architectures in
216 Linux would be similar and mostly differ by sizes of types and
217 structures. This sizes are put to "tdep".
219 Record the values of the registers and memory that will be changed
220 in current system call.
222 Return -1 if something wrong. */
225 record_linux_system_call (int num
, struct regcache
*regcache
,
226 struct linux_record_tdep
*tdep
)
228 struct gdbarch
*gdbarch
= get_regcache_arch (regcache
);
229 enum bfd_endian byte_order
= gdbarch_byte_order (gdbarch
);
230 ULONGEST tmpulongest
;
236 /* sys_restart_syscall */
244 target_terminal_ours ();
245 q
= yquery (_("The next instruction is syscall exit. "
246 "It will make the program exit. "
247 "Do you want to stop the program?"));
248 target_terminal_inferior ();
261 ULONGEST addr
, count
;
262 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &addr
);
263 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &count
);
264 if (record_arch_list_add_mem ((CORE_ADDR
) addr
, (int) count
))
305 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
306 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
307 tdep
->size__old_kernel_stat
))
329 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
330 if (tmpulongest
== RECORD_PTRACE_PEEKTEXT
331 || tmpulongest
== RECORD_PTRACE_PEEKDATA
332 || tmpulongest
== RECORD_PTRACE_PEEKUSR
)
334 regcache_raw_read_unsigned (regcache
, tdep
->arg4
,
336 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, 4))
375 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
376 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_tms
))
404 /* XXX Need to add a lot of support of other ioctl requests. */
405 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
406 if (tmpulongest
== tdep
->ioctl_FIOCLEX
407 || tmpulongest
== tdep
->ioctl_FIONCLEX
408 || tmpulongest
== tdep
->ioctl_FIONBIO
409 || tmpulongest
== tdep
->ioctl_FIOASYNC
410 || tmpulongest
== tdep
->ioctl_TCSETS
411 || tmpulongest
== tdep
->ioctl_TCSETSW
412 || tmpulongest
== tdep
->ioctl_TCSETSF
413 || tmpulongest
== tdep
->ioctl_TCSETA
414 || tmpulongest
== tdep
->ioctl_TCSETAW
415 || tmpulongest
== tdep
->ioctl_TCSETAF
416 || tmpulongest
== tdep
->ioctl_TCSBRK
417 || tmpulongest
== tdep
->ioctl_TCXONC
418 || tmpulongest
== tdep
->ioctl_TCFLSH
419 || tmpulongest
== tdep
->ioctl_TIOCEXCL
420 || tmpulongest
== tdep
->ioctl_TIOCNXCL
421 || tmpulongest
== tdep
->ioctl_TIOCSCTTY
422 || tmpulongest
== tdep
->ioctl_TIOCSPGRP
423 || tmpulongest
== tdep
->ioctl_TIOCSTI
424 || tmpulongest
== tdep
->ioctl_TIOCSWINSZ
425 || tmpulongest
== tdep
->ioctl_TIOCMBIS
426 || tmpulongest
== tdep
->ioctl_TIOCMBIC
427 || tmpulongest
== tdep
->ioctl_TIOCMSET
428 || tmpulongest
== tdep
->ioctl_TIOCSSOFTCAR
429 || tmpulongest
== tdep
->ioctl_TIOCCONS
430 || tmpulongest
== tdep
->ioctl_TIOCSSERIAL
431 || tmpulongest
== tdep
->ioctl_TIOCPKT
432 || tmpulongest
== tdep
->ioctl_TIOCNOTTY
433 || tmpulongest
== tdep
->ioctl_TIOCSETD
434 || tmpulongest
== tdep
->ioctl_TCSBRKP
435 || tmpulongest
== tdep
->ioctl_TIOCTTYGSTRUCT
436 || tmpulongest
== tdep
->ioctl_TIOCSBRK
437 || tmpulongest
== tdep
->ioctl_TIOCCBRK
438 || tmpulongest
== tdep
->ioctl_TCSETS2
439 || tmpulongest
== tdep
->ioctl_TCSETSW2
440 || tmpulongest
== tdep
->ioctl_TCSETSF2
441 || tmpulongest
== tdep
->ioctl_TIOCSPTLCK
442 || tmpulongest
== tdep
->ioctl_TIOCSERCONFIG
443 || tmpulongest
== tdep
->ioctl_TIOCSERGWILD
444 || tmpulongest
== tdep
->ioctl_TIOCSERSWILD
445 || tmpulongest
== tdep
->ioctl_TIOCSLCKTRMIOS
446 || tmpulongest
== tdep
->ioctl_TIOCSERGETMULTI
447 || tmpulongest
== tdep
->ioctl_TIOCSERSETMULTI
448 || tmpulongest
== tdep
->ioctl_TIOCMIWAIT
449 || tmpulongest
== tdep
->ioctl_TIOCSHAYESESP
)
453 else if (tmpulongest
== tdep
->ioctl_TCGETS
454 || tmpulongest
== tdep
->ioctl_TCGETA
455 || tmpulongest
== tdep
->ioctl_TIOCGLCKTRMIOS
)
457 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
459 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
463 else if (tmpulongest
== tdep
->ioctl_TIOCGPGRP
464 || tmpulongest
== tdep
->ioctl_TIOCGSID
)
466 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
468 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
472 else if (tmpulongest
== tdep
->ioctl_TIOCOUTQ
473 || tmpulongest
== tdep
->ioctl_TIOCMGET
474 || tmpulongest
== tdep
->ioctl_TIOCGSOFTCAR
475 || tmpulongest
== tdep
->ioctl_FIONREAD
476 || tmpulongest
== tdep
->ioctl_TIOCINQ
477 || tmpulongest
== tdep
->ioctl_TIOCGETD
478 || tmpulongest
== tdep
->ioctl_TIOCGPTN
479 || tmpulongest
== tdep
->ioctl_TIOCSERGETLSR
)
481 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
483 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
487 else if (tmpulongest
== tdep
->ioctl_TIOCGWINSZ
)
489 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
491 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
495 else if (tmpulongest
== tdep
->ioctl_TIOCLINUX
)
497 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
499 /* This syscall affect a char size memory. */
500 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, 1))
503 else if (tmpulongest
== tdep
->ioctl_TIOCGSERIAL
)
505 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
507 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
508 tdep
->size_serial_struct
))
511 else if (tmpulongest
== tdep
->ioctl_TCGETS2
)
513 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
515 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
516 tdep
->size_termios2
))
519 else if (tmpulongest
== tdep
->ioctl_FIOQSIZE
)
521 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
523 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
527 else if (tmpulongest
== tdep
->ioctl_TIOCGICOUNT
)
529 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
531 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
532 tdep
->size_serial_icounter_struct
))
535 else if (tmpulongest
== tdep
->ioctl_TIOCGHAYESESP
)
537 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
539 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
540 tdep
->size_hayes_esp_config
))
543 else if (tmpulongest
== tdep
->ioctl_TIOCSERGSTRUCT
)
545 printf_unfiltered (_("Process record and replay target doesn't "
546 "support ioctl request TIOCSERGSTRUCT\n"));
551 printf_unfiltered (_("Process record and replay target doesn't "
552 "support ioctl request 0x%s.\n"),
553 OUTPUT_REG (tmpulongest
, tdep
->arg2
));
561 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
563 if (tmpulongest
== tdep
->fcntl_F_GETLK
)
565 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
567 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
583 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
584 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
585 tdep
->size_oldold_utsname
))
597 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
598 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
615 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
616 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
617 tdep
->size_old_sigaction
))
635 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
636 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
637 tdep
->size_old_sigset_t
))
641 /* sys_sethostname */
647 /* sys_old_getrlimit */
649 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
650 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
657 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
658 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
663 /* sys_gettimeofday */
665 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
666 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
669 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
670 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
671 tdep
->size_timezone
))
675 /* sys_settimeofday */
679 /* sys_getgroups16 */
681 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
682 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
683 tdep
->size_old_gid_t
))
687 /* sys_setgroups16 */
689 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
690 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
691 tdep
->size_old_gid_t
))
698 struct sel_arg_struct
707 regcache_raw_read_unsigned (regcache
, tdep
->arg1
,
711 if (target_read_memory (tmpulongest
, (gdb_byte
*) &sel
,
715 fprintf_unfiltered (gdb_stdlog
,
716 "Process record: error reading memory "
717 "at addr = 0x%s len = %lu.\n",
718 OUTPUT_REG (tmpulongest
, tdep
->arg1
),
719 (unsigned long) sizeof (sel
));
722 if (record_arch_list_add_mem (sel
.inp
, tdep
->size_fd_set
))
724 if (record_arch_list_add_mem (sel
.outp
, tdep
->size_fd_set
))
726 if (record_arch_list_add_mem (sel
.exp
, tdep
->size_fd_set
))
728 if (record_arch_list_add_mem (sel
.tvp
, tdep
->size_timeval
))
742 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,
744 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &len
);
745 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, (int) len
))
760 target_terminal_ours ();
762 yquery (_("The next instruction is syscall reboot. "
763 "It will restart the computer. "
764 "Do you want to stop the program?"));
765 target_terminal_inferior ();
773 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
774 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
789 regcache_raw_read_unsigned (regcache
, tdep
->arg1
,
791 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &len
);
792 target_terminal_ours ();
793 q
= yquery (_("The next instruction is syscall munmap. "
794 "It will free the memory addr = 0x%s len = %u. "
795 "It will make record target get error. "
796 "Do you want to stop the program?"),
797 OUTPUT_REG (tmpulongest
, tdep
->arg1
), (int) len
);
798 target_terminal_inferior ();
812 /* sys_getpriority */
814 /* sys_setpriority */
824 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
825 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
854 /* sys_getsockname */
856 /* sys_getpeername */
860 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
861 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &len
);
862 if (record_linux_sockaddr (regcache
, tdep
, tmpulongest
, len
))
871 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &tmpulongest
);
872 regcache_raw_read_unsigned (regcache
, tdep
->arg5
, &len
);
873 if (record_linux_sockaddr (regcache
, tdep
, tmpulongest
, len
))
880 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
881 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &size
);
882 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, (int) size
))
889 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
890 if (record_linux_msghdr (regcache
, tdep
, tmpulongest
))
896 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &tmpulongest
);
897 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_int
))
903 regcache_raw_read_unsigned (regcache
, tdep
->arg5
, &tmpulongest
);
907 gdb_byte
*optlenp
= alloca (tdep
->size_int
);
908 if (target_read_memory ((CORE_ADDR
) tmpulongest
, optlenp
,
912 fprintf_unfiltered (gdb_stdlog
,
913 "Process record: error reading "
914 "memory at addr = 0x%s "
916 OUTPUT_REG (tmpulongest
, tdep
->arg5
),
920 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &optvalp
);
921 tmpint
= (int) extract_signed_integer (optlenp
, tdep
->size_int
,
923 if (record_arch_list_add_mem ((CORE_ADDR
) optvalp
, tmpint
))
925 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
933 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
936 case RECORD_SYS_SOCKET
:
937 case RECORD_SYS_BIND
:
938 case RECORD_SYS_CONNECT
:
939 case RECORD_SYS_LISTEN
:
941 case RECORD_SYS_ACCEPT
:
942 case RECORD_SYS_GETSOCKNAME
:
943 case RECORD_SYS_GETPEERNAME
:
945 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,
949 gdb_byte
*a
= alloca (tdep
->size_ulong
* 2);
954 tmpulongest
+= tdep
->size_ulong
;
955 if (target_read_memory ((CORE_ADDR
) tmpulongest
, a
,
956 tdep
->size_ulong
* 2))
959 fprintf_unfiltered (gdb_stdlog
,
960 "Process record: error reading "
961 "memory at addr = 0x%s len = %d.\n",
962 OUTPUT_REG (tmpulongest
, tdep
->arg2
),
963 tdep
->size_ulong
* 2);
966 tmpulongest
= extract_unsigned_integer (a
,
969 len
= extract_unsigned_integer (a
+ tdep
->size_ulong
,
970 tdep
->size_ulong
, byte_order
);
971 if (record_linux_sockaddr (regcache
, tdep
, tmpulongest
, len
))
977 case RECORD_SYS_SOCKETPAIR
:
979 gdb_byte
*a
= alloca (tdep
->size_ulong
);
980 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,
984 tmpulongest
+= tdep
->size_ulong
* 3;
985 if (target_read_memory ((CORE_ADDR
) tmpulongest
, a
,
989 fprintf_unfiltered (gdb_stdlog
,
990 "Process record: error reading "
991 "memory at addr = 0x%s len = %d.\n",
992 OUTPUT_REG (tmpulongest
, tdep
->arg2
),
997 = (CORE_ADDR
) extract_unsigned_integer (a
, tdep
->size_ulong
,
999 if (record_arch_list_add_mem (tmpaddr
, tdep
->size_int
))
1004 case RECORD_SYS_SEND
:
1005 case RECORD_SYS_SENDTO
:
1007 case RECORD_SYS_RECVFROM
:
1008 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,
1012 gdb_byte
*a
= alloca (tdep
->size_ulong
* 2);
1017 tmpulongest
+= tdep
->size_ulong
* 4;
1018 if (target_read_memory ((CORE_ADDR
) tmpulongest
, a
,
1019 tdep
->size_ulong
* 2))
1022 fprintf_unfiltered (gdb_stdlog
,
1023 "Process record: error reading "
1024 "memory at addr = 0x%s len = %d.\n",
1025 OUTPUT_REG (tmpulongest
, tdep
->arg2
),
1026 tdep
->size_ulong
* 2);
1029 tmpulongest
= extract_unsigned_integer (a
, tdep
->size_ulong
,
1031 len
= extract_unsigned_integer (a
+ tdep
->size_ulong
,
1032 tdep
->size_ulong
, byte_order
);
1033 if (record_linux_sockaddr (regcache
, tdep
, tmpulongest
, len
))
1036 case RECORD_SYS_RECV
:
1037 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,
1041 gdb_byte
*a
= alloca (tdep
->size_ulong
* 2);
1043 tmpulongest
+= tdep
->size_ulong
;
1044 if (target_read_memory ((CORE_ADDR
) tmpulongest
, a
,
1048 fprintf_unfiltered (gdb_stdlog
,
1049 "Process record: error reading "
1050 "memory at addr = 0x%s len = %d.\n",
1051 OUTPUT_REG (tmpulongest
, tdep
->arg2
),
1055 tmpulongest
= extract_unsigned_integer (a
, tdep
->size_ulong
,
1059 a
+= tdep
->size_ulong
;
1060 tmpint
= (int) extract_unsigned_integer (a
, tdep
->size_ulong
,
1062 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1068 case RECORD_SYS_SHUTDOWN
:
1069 case RECORD_SYS_SETSOCKOPT
:
1071 case RECORD_SYS_GETSOCKOPT
:
1073 gdb_byte
*a
= alloca (tdep
->size_ulong
* 2);
1074 gdb_byte
*av
= alloca (tdep
->size_int
);
1076 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,
1080 tmpulongest
+= tdep
->size_ulong
* 3;
1081 if (target_read_memory ((CORE_ADDR
) tmpulongest
, a
,
1082 tdep
->size_ulong
* 2))
1085 fprintf_unfiltered (gdb_stdlog
,
1086 "Process record: error reading "
1087 "memory at addr = 0x%s len = %d.\n",
1088 OUTPUT_REG (tmpulongest
, tdep
->arg2
),
1089 tdep
->size_ulong
* 2);
1092 tmpulongest
= extract_unsigned_integer (a
+ tdep
->size_ulong
,
1097 if (target_read_memory ((CORE_ADDR
) tmpulongest
, av
,
1101 fprintf_unfiltered (gdb_stdlog
,
1102 "Process record: error reading "
1103 "memory at addr = 0x%s "
1105 phex_nz (tmpulongest
,
1111 = (CORE_ADDR
) extract_unsigned_integer (a
,
1114 tmpint
= (int) extract_unsigned_integer (av
,
1117 if (record_arch_list_add_mem (tmpaddr
, tmpint
))
1119 a
+= tdep
->size_ulong
;
1121 = (CORE_ADDR
) extract_unsigned_integer (a
,
1124 if (record_arch_list_add_mem (tmpaddr
, tdep
->size_int
))
1130 case RECORD_SYS_SENDMSG
:
1132 case RECORD_SYS_RECVMSG
:
1134 gdb_byte
*a
= alloca (tdep
->size_ulong
);
1136 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,
1140 tmpulongest
+= tdep
->size_ulong
;
1141 if (target_read_memory ((CORE_ADDR
) tmpulongest
, a
,
1145 fprintf_unfiltered (gdb_stdlog
,
1146 "Process record: error reading "
1147 "memory at addr = 0x%s len = %d.\n",
1148 OUTPUT_REG (tmpulongest
, tdep
->arg2
),
1152 tmpulongest
= extract_unsigned_integer (a
, tdep
->size_ulong
,
1154 if (record_linux_msghdr (regcache
, tdep
, tmpulongest
))
1160 printf_unfiltered (_("Process record and replay target "
1161 "doesn't support socketcall call 0x%s\n"),
1162 OUTPUT_REG (tmpulongest
, tdep
->arg1
));
1174 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1175 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1176 tdep
->size_itimerval
))
1182 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1183 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1184 tdep
->size_itimerval
))
1194 /* sys_newfstatat */
1196 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1197 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_stat
))
1203 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1204 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1205 tdep
->size_old_utsname
))
1213 /* sys_ni_syscall */
1221 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1222 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1225 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &tmpulongest
);
1226 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1237 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1238 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1239 tdep
->size_sysinfo
))
1252 /* XXX maybe need do some record works with sys_shmdt. */
1256 /* sys_semtimedop */
1262 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1263 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1270 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1271 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1272 tdep
->size_shmid_ds
))
1277 /* XXX sys_semctl 525 still not support. */
1283 regcache_raw_read_signed (regcache
, tdep
->arg3
, &tmpulongest
);
1284 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &msgp
);
1285 tmpint
= (int) tmpulongest
+ tdep
->size_long
;
1286 if (record_arch_list_add_mem ((CORE_ADDR
) msgp
, tmpint
))
1293 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1294 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1295 tdep
->size_msqid_ds
))
1301 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1302 tmpulongest
&= 0xffff;
1303 switch (tmpulongest
)
1307 case RECORD_SEMTIMEDOP
:
1310 /* XXX maybe need do some record works with RECORD_SHMDT. */
1318 regcache_raw_read_signed (regcache
, tdep
->arg3
, &second
);
1319 regcache_raw_read_unsigned (regcache
, tdep
->arg5
, &ptr
);
1320 tmpint
= (int) second
+ tdep
->size_long
;
1321 if (record_arch_list_add_mem ((CORE_ADDR
) ptr
, tmpint
))
1326 regcache_raw_read_unsigned (regcache
, tdep
->arg5
,
1328 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1329 tdep
->size_msqid_ds
))
1333 regcache_raw_read_unsigned (regcache
, tdep
->arg4
,
1335 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1340 regcache_raw_read_unsigned (regcache
, tdep
->arg5
,
1342 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1343 tdep
->size_shmid_ds
))
1347 /* XXX RECORD_SEMCTL still not support. */
1348 printf_unfiltered (_("Process record and replay target doesn't "
1349 "support ipc number %d\n"), (int) tmpulongest
);
1360 /* sys_setdomainname */
1366 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1367 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1368 tdep
->size_new_utsname
))
1372 /* sys_modify_ldt */
1374 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1375 if (tmpulongest
== 0 || tmpulongest
== 2)
1377 ULONGEST ptr
, bytecount
;
1378 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &ptr
);
1379 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &bytecount
);
1380 if (record_arch_list_add_mem ((CORE_ADDR
) ptr
, (int) bytecount
))
1387 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1388 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_timex
))
1396 /* sys_sigprocmask */
1398 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1399 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1400 tdep
->size_old_sigset_t
))
1404 /* sys_ni_syscall */
1406 /* sys_init_module */
1408 /* sys_delete_module */
1410 /* sys_ni_syscall */
1416 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1417 switch (tmpulongest
)
1419 case RECORD_Q_GETFMT
:
1420 regcache_raw_read_unsigned (regcache
, tdep
->arg4
,
1423 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, 4))
1426 case RECORD_Q_GETINFO
:
1427 regcache_raw_read_unsigned (regcache
, tdep
->arg4
,
1429 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1430 tdep
->size_mem_dqinfo
))
1433 case RECORD_Q_GETQUOTA
:
1434 regcache_raw_read_unsigned (regcache
, tdep
->arg4
,
1436 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1437 tdep
->size_if_dqblk
))
1440 case RECORD_Q_XGETQSTAT
:
1441 case RECORD_Q_XGETQUOTA
:
1442 regcache_raw_read_unsigned (regcache
, tdep
->arg4
,
1444 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1445 tdep
->size_fs_quota_stat
))
1461 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1462 if (tmpulongest
== 2)
1464 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
1466 /*XXX the size of memory is not very clear. */
1467 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, 10))
1472 /* sys_personality */
1474 /* sys_ni_syscall */
1476 /* sys_setfsuid16 */
1478 /* sys_setfsgid16 */
1484 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &tmpulongest
);
1485 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1494 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,
1496 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &count
);
1497 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1498 tdep
->size_dirent
* count
))
1505 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1506 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1509 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1510 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1513 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &tmpulongest
);
1514 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1517 regcache_raw_read_unsigned (regcache
, tdep
->arg5
, &tmpulongest
);
1518 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1519 tdep
->size_timeval
))
1534 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &vec
);
1537 gdb_byte
*iov
= alloca (tdep
->size_iovec
);
1539 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &vlen
);
1540 for (tmpulongest
= 0; tmpulongest
< vlen
; tmpulongest
++)
1542 if (target_read_memory ((CORE_ADDR
) vec
, iov
,
1546 fprintf_unfiltered (gdb_stdlog
,
1547 "Process record: error reading "
1548 "memory at addr = 0x%s len = %d.\n",
1549 OUTPUT_REG (vec
, tdep
->arg2
),
1554 = (CORE_ADDR
) extract_unsigned_integer (iov
,
1558 = (int) extract_unsigned_integer (iov
+ tdep
->size_pointer
,
1561 if (record_arch_list_add_mem (tmpaddr
, tmpint
))
1563 vec
+= tdep
->size_iovec
;
1583 /* sys_munlockall */
1585 /* sys_sched_setparam */
1589 /* sys_sched_getparam */
1591 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1592 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_int
))
1596 /* sys_sched_setscheduler */
1598 /* sys_sched_getscheduler */
1600 /* sys_sched_yield */
1602 /* sys_sched_get_priority_max */
1604 /* sys_sched_get_priority_min */
1608 /* sys_sched_rr_get_interval */
1612 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1613 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1614 tdep
->size_timespec
))
1620 /* sys_setresuid16 */
1624 /* sys_getresuid16 */
1626 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1627 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1628 tdep
->size_old_uid_t
))
1630 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1631 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1632 tdep
->size_old_uid_t
))
1634 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1635 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1636 tdep
->size_old_uid_t
))
1642 /* sys_ni_syscall */
1648 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1652 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &nfds
);
1653 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1654 tdep
->size_pollfd
* nfds
))
1659 /* sys_nfsservctl */
1661 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1662 if (tmpulongest
== 7 || tmpulongest
== 8)
1665 if (tmpulongest
== 7)
1666 rsize
= tdep
->size_NFS_FHSIZE
;
1668 rsize
= tdep
->size_knfsd_fh
;
1669 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
1671 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, rsize
))
1676 /* sys_setresgid16 */
1680 /* sys_getresgid16 */
1682 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1683 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1684 tdep
->size_old_gid_t
))
1686 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1687 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1688 tdep
->size_old_gid_t
))
1690 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1691 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1692 tdep
->size_old_gid_t
))
1698 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1699 switch (tmpulongest
)
1702 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,
1704 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1709 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,
1711 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1712 tdep
->size_TASK_COMM_LEN
))
1718 /* sys_rt_sigreturn */
1722 /* sys_rt_sigaction */
1724 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1725 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1726 tdep
->size_sigaction
))
1730 /* sys_rt_sigprocmask */
1732 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1733 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1734 tdep
->size_sigset_t
))
1738 /* sys_rt_sigpending */
1740 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1743 ULONGEST sigsetsize
;
1744 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,&sigsetsize
);
1745 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1751 /* sys_rt_sigtimedwait */
1753 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1754 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1755 tdep
->size_siginfo_t
))
1759 /* sys_rt_sigqueueinfo */
1761 /* sys_rt_sigsuspend */
1767 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1771 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,&count
);
1772 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, (int) count
))
1785 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1789 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &size
);
1790 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, (int) size
))
1797 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1798 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1799 tdep
->size_cap_user_data_t
))
1807 /* sys_sigaltstack */
1809 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1810 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1811 tdep
->size_stack_t
))
1817 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1818 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1823 /* sys_ni_syscall */
1825 /* sys_ni_syscall */
1833 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1834 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1843 /* sys_truncate64 */
1845 /* sys_ftruncate64 */
1855 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1856 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1879 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1882 ULONGEST gidsetsize
;
1883 regcache_raw_read_unsigned (regcache
, tdep
->arg1
,
1885 tmpint
= tdep
->size_gid_t
* (int) gidsetsize
;
1886 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tmpint
))
1901 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1902 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_uid_t
))
1904 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1905 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_uid_t
))
1907 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1908 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_uid_t
))
1918 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
1919 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_gid_t
))
1921 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1922 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_gid_t
))
1924 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1925 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_gid_t
))
1939 /* sys_pivot_root */
1945 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
1946 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1947 tdep
->size_PAGE_SIZE
))
1955 /* sys_getdents64 */
1959 regcache_raw_read_unsigned (regcache
, tdep
->arg2
,
1961 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &count
);
1962 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1963 tdep
->size_dirent64
* count
))
1970 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
1971 if (tmpulongest
== tdep
->fcntl_F_GETLK64
)
1973 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
1975 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
1976 tdep
->size_flock64
))
1979 else if (tmpulongest
!= tdep
->fcntl_F_SETLK64
1980 && tmpulongest
!= tdep
->fcntl_F_SETLKW64
)
1986 /* sys_ni_syscall */
1988 /* sys_ni_syscall */
2008 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2012 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &size
);
2013 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, (int) size
))
2020 /* sys_llistxattr */
2022 /* sys_flistxattr */
2024 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2028 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &size
);
2029 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, (int) size
))
2034 /* sys_removexattr */
2036 /* sys_lremovexattr */
2038 /* sys_fremovexattr */
2044 /* sys_sendfile64 */
2046 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2047 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2054 /* sys_sched_setaffinity */
2058 /* sys_sched_getaffinity */
2060 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2064 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &len
);
2065 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, (int) len
))
2070 /* sys_set_thread_area */
2072 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
2073 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_int
))
2077 /* sys_get_thread_area */
2079 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
2080 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2081 tdep
->size_user_desc
))
2087 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2088 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_long
))
2092 /* sys_io_destroy */
2096 /* sys_io_getevents */
2098 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &tmpulongest
);
2102 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &nr
);
2103 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2104 nr
* tdep
->size_io_event
))
2111 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2117 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &nr
);
2118 iocbp
= alloca (nr
* tdep
->size_pointer
);
2119 if (target_read_memory ((CORE_ADDR
) tmpulongest
, iocbp
,
2120 nr
* tdep
->size_pointer
))
2123 fprintf_unfiltered (gdb_stdlog
,
2124 "Process record: error reading memory "
2125 "at addr = 0x%s len = %u.\n",
2126 OUTPUT_REG (tmpulongest
, tdep
->arg2
),
2127 (int) (nr
* tdep
->size_pointer
));
2130 for (i
= 0; i
< nr
; i
++)
2133 = (CORE_ADDR
) extract_unsigned_integer (iocbp
,
2136 if (record_arch_list_add_mem (tmpaddr
, tdep
->size_iocb
))
2138 iocbp
+= tdep
->size_pointer
;
2145 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2146 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2147 tdep
->size_io_event
))
2153 /* sys_ni_syscall */
2157 /* sys_exit_group */
2161 target_terminal_ours ();
2162 q
= yquery (_("The next instruction is syscall exit_group. "
2163 "It will make the program exit. "
2164 "Do you want to stop the program?"));
2165 target_terminal_inferior ();
2171 /* sys_lookup_dcookie */
2173 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2177 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &len
);
2178 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, (int) len
))
2183 /* sys_epoll_create */
2189 /* sys_epoll_wait */
2191 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2195 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &maxevents
);
2196 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2197 maxevents
* tdep
->size_epoll_event
))
2202 /* sys_remap_file_pages */
2204 /* sys_set_tid_address */
2208 /* sys_timer_create */
2210 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2211 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_int
))
2215 /* sys_timer_settime */
2217 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &tmpulongest
);
2218 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2219 tdep
->size_itimerspec
))
2223 /* sys_timer_gettime */
2225 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2226 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2227 tdep
->size_itimerspec
))
2231 /* sys_timer_getoverrun */
2233 /* sys_timer_delete */
2235 /* sys_clock_settime */
2239 /* sys_clock_gettime */
2241 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2242 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2243 tdep
->size_timespec
))
2247 /* sys_clock_getres */
2249 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2250 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2251 tdep
->size_timespec
))
2255 /* sys_clock_nanosleep */
2257 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &tmpulongest
);
2258 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2259 tdep
->size_timespec
))
2267 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2268 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2269 tdep
->size_statfs64
))
2277 /* sys_fadvise64_64 */
2279 /* sys_ni_syscall */
2285 /* sys_get_mempolicy */
2287 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
2288 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_int
))
2290 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2294 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &maxnode
);
2295 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2296 maxnode
* tdep
->size_long
))
2301 /* sys_set_mempolicy */
2307 /* sys_mq_timedsend */
2311 /* sys_mq_timedreceive */
2313 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2317 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &msg_len
);
2318 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2322 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &tmpulongest
);
2323 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_int
))
2331 /* sys_mq_getsetattr */
2333 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2334 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2335 tdep
->size_mq_attr
))
2339 /* sys_kexec_load */
2345 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2346 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2347 tdep
->size_siginfo
))
2349 regcache_raw_read_unsigned (regcache
, tdep
->arg5
, &tmpulongest
);
2350 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2355 /* sys_ni_syscall */
2359 /* sys_request_key */
2365 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
2366 if (tmpulongest
== 6 || tmpulongest
== 11)
2368 regcache_raw_read_unsigned (regcache
, tdep
->arg3
,
2373 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &buflen
);
2374 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2381 /* sys_ioprio_set */
2383 /* sys_ioprio_get */
2385 /* sys_inotify_init */
2387 /* sys_inotify_add_watch */
2389 /* sys_inotify_rm_watch */
2391 /* sys_migrate_pages */
2407 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2408 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2423 /* sys_readlinkat */
2425 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2429 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &bufsiz
);
2430 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, (int) bufsiz
))
2443 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2444 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2447 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2448 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2451 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &tmpulongest
);
2452 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2455 regcache_raw_read_unsigned (regcache
, tdep
->arg5
, &tmpulongest
);
2456 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2457 tdep
->size_timespec
))
2463 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
2467 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &nfds
);
2468 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2469 tdep
->size_pollfd
* nfds
))
2472 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2473 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2474 tdep
->size_timespec
))
2480 /* sys_set_robust_list */
2484 /* sys_get_robust_list */
2486 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2487 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_int
))
2489 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2490 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_int
))
2496 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2497 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2500 regcache_raw_read_unsigned (regcache
, tdep
->arg4
, &tmpulongest
);
2501 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2506 /* sys_sync_file_range */
2514 /* sys_move_pages */
2516 regcache_raw_read_unsigned (regcache
, tdep
->arg5
, &tmpulongest
);
2520 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &nr_pages
);
2521 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2522 nr_pages
* tdep
->size_int
))
2529 regcache_raw_read_unsigned (regcache
, tdep
->arg1
, &tmpulongest
);
2530 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_int
))
2532 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2533 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tdep
->size_int
))
2535 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &tmpulongest
);
2536 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
,
2537 tdep
->size_ulong
* 2))
2541 /* sys_epoll_pwait */
2543 regcache_raw_read_unsigned (regcache
, tdep
->arg2
, &tmpulongest
);
2547 regcache_raw_read_unsigned (regcache
, tdep
->arg3
, &maxevents
);
2548 tmpint
= (int) maxevents
* tdep
->size_epoll_event
;
2549 if (record_arch_list_add_mem ((CORE_ADDR
) tmpulongest
, tmpint
))
2555 printf_unfiltered (_("Process record and replay target doesn't "
2556 "support syscall number %u\n"), num
);