X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Flinux-record.c;h=58733655169eed5d45997fbec446f8d4ab66b7d0;hb=b08b78e7d4bb56f395d3212eed6184ede236c760;hp=af862800e1eda25a84f4b6cb88174b0452186e32;hpb=13b6d1d459210ab9ad250fc24df977bb1b178a3a;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/linux-record.c b/gdb/linux-record.c index af862800e1..5873365516 100644 --- a/gdb/linux-record.c +++ b/gdb/linux-record.c @@ -1,6 +1,6 @@ /* Process record and replay target code for GNU/Linux. - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008-2015 Free Software Foundation, Inc. This file is part of GDB. @@ -22,6 +22,7 @@ #include "gdbtypes.h" #include "regcache.h" #include "record.h" +#include "record-full.h" #include "linux-record.h" /* These macros are the values of the first argument of system call @@ -97,9 +98,9 @@ record_linux_sockaddr (struct regcache *regcache, if (!addr) return 0; - a = alloca (tdep->size_int); + a = (gdb_byte *) alloca (tdep->size_int); - if (record_arch_list_add_mem ((CORE_ADDR) len, tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) len, tdep->size_int)) return -1; /* Get the addrlen. */ @@ -117,7 +118,7 @@ record_linux_sockaddr (struct regcache *regcache, if (addrlen <= 0 || addrlen > tdep->size_sockaddr) addrlen = tdep->size_sockaddr; - if (record_arch_list_add_mem ((CORE_ADDR) addr, addrlen)) + if (record_full_arch_list_add_mem ((CORE_ADDR) addr, addrlen)) return -1; return 0; @@ -136,10 +137,10 @@ record_linux_msghdr (struct regcache *regcache, if (!addr) return 0; - if (record_arch_list_add_mem ((CORE_ADDR) addr, tdep->size_msghdr)) + if (record_full_arch_list_add_mem ((CORE_ADDR) addr, tdep->size_msghdr)) return -1; - a = alloca (tdep->size_msghdr); + a = (gdb_byte *) alloca (tdep->size_msghdr); if (target_read_memory ((CORE_ADDR) addr, a, tdep->size_msghdr)) { if (record_debug) @@ -155,10 +156,11 @@ record_linux_msghdr (struct regcache *regcache, /* msg_name msg_namelen */ addr = extract_unsigned_integer (a, tdep->size_pointer, byte_order); a += tdep->size_pointer; - if (record_arch_list_add_mem ((CORE_ADDR) addr, - (int) extract_unsigned_integer (a, - tdep->size_int, - byte_order))) + if (record_full_arch_list_add_mem + ((CORE_ADDR) addr, + (int) extract_unsigned_integer (a, + tdep->size_int, + byte_order))) return -1; a += tdep->size_int; @@ -170,7 +172,7 @@ record_linux_msghdr (struct regcache *regcache, ULONGEST i; ULONGEST len = extract_unsigned_integer (a, tdep->size_size_t, byte_order); - gdb_byte *iov = alloca (tdep->size_iovec); + gdb_byte *iov = (gdb_byte *) alloca (tdep->size_iovec); for (i = 0; i < len; i++) { @@ -192,7 +194,7 @@ record_linux_msghdr (struct regcache *regcache, tmpint = (int) extract_unsigned_integer (iov + tdep->size_pointer, tdep->size_size_t, byte_order); - if (record_arch_list_add_mem (tmpaddr, tmpint)); + if (record_full_arch_list_add_mem (tmpaddr, tmpint)) return -1; addr += tdep->size_iovec; } @@ -203,7 +205,7 @@ record_linux_msghdr (struct regcache *regcache, addr = extract_unsigned_integer (a, tdep->size_pointer, byte_order); a += tdep->size_pointer; tmpint = (int) extract_unsigned_integer (a, tdep->size_size_t, byte_order); - if (record_arch_list_add_mem ((CORE_ADDR) addr, tmpint)); + if (record_full_arch_list_add_mem ((CORE_ADDR) addr, tmpint)) return -1; return 0; @@ -240,6 +242,7 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_exit: { int q; + target_terminal_ours (); q = yquery (_("The next instruction is syscall exit. " "It will make the program exit. " @@ -256,9 +259,10 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_read: { ULONGEST addr, count; + regcache_raw_read_unsigned (regcache, tdep->arg2, &addr); regcache_raw_read_unsigned (regcache, tdep->arg3, &count); - if (record_arch_list_add_mem ((CORE_ADDR) addr, (int) count)) + if (record_full_arch_list_add_mem ((CORE_ADDR) addr, (int) count)) return -1; } break; @@ -283,8 +287,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_fstat: case gdb_sys_lstat: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size__old_kernel_stat)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size__old_kernel_stat)) return -1; break; @@ -305,7 +309,7 @@ record_linux_system_call (enum gdb_syscall syscall, { regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, 4)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, 4)) return -1; } break; @@ -329,7 +333,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_times: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_tms)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_tms)) return -1; break; @@ -401,8 +406,8 @@ record_linux_system_call (enum gdb_syscall syscall, { regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_termios)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_termios)) return -1; } else if (tmpulongest == tdep->ioctl_TIOCGPGRP @@ -410,8 +415,8 @@ record_linux_system_call (enum gdb_syscall syscall, { regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_pid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_pid_t)) return -1; } else if (tmpulongest == tdep->ioctl_TIOCOUTQ @@ -425,16 +430,16 @@ record_linux_system_call (enum gdb_syscall syscall, { regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; } else if (tmpulongest == tdep->ioctl_TIOCGWINSZ) { regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_winsize)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_winsize)) return -1; } else if (tmpulongest == tdep->ioctl_TIOCLINUX) @@ -442,47 +447,47 @@ record_linux_system_call (enum gdb_syscall syscall, regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); /* This syscall affects a char-size memory. */ - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, 1)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, 1)) return -1; } else if (tmpulongest == tdep->ioctl_TIOCGSERIAL) { regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_serial_struct)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_serial_struct)) return -1; } else if (tmpulongest == tdep->ioctl_TCGETS2) { regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_termios2)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_termios2)) return -1; } else if (tmpulongest == tdep->ioctl_FIOQSIZE) { regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_loff_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_loff_t)) return -1; } else if (tmpulongest == tdep->ioctl_TIOCGICOUNT) { regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_serial_icounter_struct)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_serial_icounter_struct)) return -1; } else if (tmpulongest == tdep->ioctl_TIOCGHAYESESP) { regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_hayes_esp_config)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_hayes_esp_config)) return -1; } else if (tmpulongest == tdep->ioctl_TIOCSERGSTRUCT) @@ -508,8 +513,8 @@ record_linux_system_call (enum gdb_syscall syscall, { regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_flock)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_flock)) return -1; } break; @@ -521,8 +526,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_olduname: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_oldold_utsname)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_oldold_utsname)) return -1; break; @@ -532,8 +537,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_ustat: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_ustat)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_ustat)) return -1; break; @@ -545,8 +550,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_sigaction: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_sigaction)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_sigaction)) return -1; break; @@ -559,8 +564,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_sigpending: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_sigset_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_sigset_t)) return -1; break; @@ -570,26 +575,26 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_old_getrlimit: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_rlimit)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_rlimit)) return -1; break; case gdb_sys_getrusage: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_rusage)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_rusage)) return -1; break; case gdb_sys_gettimeofday: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_timeval)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_timeval)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_timezone)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_timezone)) return -1; break; @@ -598,15 +603,15 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_getgroups16: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_gid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_gid_t)) return -1; break; case gdb_sys_setgroups16: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_gid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_gid_t)) return -1; break; @@ -636,13 +641,13 @@ record_linux_system_call (enum gdb_syscall syscall, (unsigned long) sizeof (sel)); return -1; } - if (record_arch_list_add_mem (sel.inp, tdep->size_fd_set)) + if (record_full_arch_list_add_mem (sel.inp, tdep->size_fd_set)) return -1; - if (record_arch_list_add_mem (sel.outp, tdep->size_fd_set)) + if (record_full_arch_list_add_mem (sel.outp, tdep->size_fd_set)) return -1; - if (record_arch_list_add_mem (sel.exp, tdep->size_fd_set)) + if (record_full_arch_list_add_mem (sel.exp, tdep->size_fd_set)) return -1; - if (record_arch_list_add_mem (sel.tvp, tdep->size_timeval)) + if (record_full_arch_list_add_mem (sel.tvp, tdep->size_timeval)) return -1; } } @@ -654,10 +659,11 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_readlink: { ULONGEST len; + regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); regcache_raw_read_unsigned (regcache, tdep->arg3, &len); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, (int) len)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, (int) len)) return -1; } break; @@ -669,11 +675,11 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_reboot: { int q; + target_terminal_ours (); - q = - yquery (_("The next instruction is syscall reboot. " - "It will restart the computer. " - "Do you want to stop the program?")); + q = yquery (_("The next instruction is syscall reboot. " + "It will restart the computer. " + "Do you want to stop the program?")); target_terminal_inferior (); if (q) return 1; @@ -682,8 +688,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_old_readdir: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_dirent)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_dirent)) return -1; break; @@ -692,21 +698,26 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_munmap: { - int q; ULONGEST len; regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); regcache_raw_read_unsigned (regcache, tdep->arg2, &len); - target_terminal_ours (); - q = yquery (_("The next instruction is syscall munmap. " - "It will free the memory addr = 0x%s len = %u. " - "It will make record target get error. " - "Do you want to stop the program?"), - OUTPUT_REG (tmpulongest, tdep->arg1), (int) len); - target_terminal_inferior (); - if (q) - return 1; + if (record_full_memory_query) + { + int q; + + target_terminal_ours (); + q = yquery (_("\ +The next instruction is syscall munmap.\n\ +It will free the memory addr = 0x%s len = %u.\n\ +It will make record target cannot record some memory change.\n\ +Do you want to stop the program?"), + OUTPUT_REG (tmpulongest, tdep->arg1), (int) len); + target_terminal_inferior (); + if (q) + return 1; + } } break; @@ -722,8 +733,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_statfs: case gdb_sys_fstatfs: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_statfs)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_statfs)) return -1; break; @@ -745,6 +756,7 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_getpeername: { ULONGEST len; + regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); regcache_raw_read_unsigned (regcache, tdep->arg3, &len); if (record_linux_sockaddr (regcache, tdep, tmpulongest, len)) @@ -755,17 +767,22 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_recvfrom: { ULONGEST len; + regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); regcache_raw_read_unsigned (regcache, tdep->arg5, &len); if (record_linux_sockaddr (regcache, tdep, tmpulongest, len)) return -1; } + break; + case gdb_sys_recv: { ULONGEST size; + regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); regcache_raw_read_unsigned (regcache, tdep->arg3, &size); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, (int) size)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (int) size)) return -1; } break; @@ -778,7 +795,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_socketpair: regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; break; @@ -787,7 +805,8 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST optvalp; - gdb_byte *optlenp = alloca (tdep->size_int); + gdb_byte *optlenp = (gdb_byte *) alloca (tdep->size_int); + if (target_read_memory ((CORE_ADDR) tmpulongest, optlenp, tdep->size_int)) { @@ -803,10 +822,10 @@ record_linux_system_call (enum gdb_syscall syscall, regcache_raw_read_unsigned (regcache, tdep->arg4, &optvalp); tmpint = (int) extract_signed_integer (optlenp, tdep->size_int, byte_order); - if (record_arch_list_add_mem ((CORE_ADDR) optvalp, tmpint)) + if (record_full_arch_list_add_mem ((CORE_ADDR) optvalp, tmpint)) return -1; - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; } break; @@ -828,9 +847,7 @@ record_linux_system_call (enum gdb_syscall syscall, &tmpulongest); if (tmpulongest) { - gdb_byte *a = alloca (tdep->size_ulong * 2); - int addrlen; - gdb_byte *addrlenp; + gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong * 2); ULONGEST len; tmpulongest += tdep->size_ulong; @@ -858,7 +875,8 @@ record_linux_system_call (enum gdb_syscall syscall, case RECORD_SYS_SOCKETPAIR: { - gdb_byte *a = alloca (tdep->size_ulong); + gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong); + regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); if (tmpulongest) @@ -878,7 +896,7 @@ record_linux_system_call (enum gdb_syscall syscall, tmpaddr = (CORE_ADDR) extract_unsigned_integer (a, tdep->size_ulong, byte_order); - if (record_arch_list_add_mem (tmpaddr, tdep->size_int)) + if (record_full_arch_list_add_mem (tmpaddr, tdep->size_int)) return -1; } } @@ -891,9 +909,7 @@ record_linux_system_call (enum gdb_syscall syscall, &tmpulongest); if (tmpulongest) { - gdb_byte *a = alloca (tdep->size_ulong * 2); - int addrlen; - gdb_byte *addrlenp; + gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong * 2); ULONGEST len; tmpulongest += tdep->size_ulong * 4; @@ -920,7 +936,7 @@ record_linux_system_call (enum gdb_syscall syscall, &tmpulongest); if (tmpulongest) { - gdb_byte *a = alloca (tdep->size_ulong * 2); + gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong * 2); tmpulongest += tdep->size_ulong; if (target_read_memory ((CORE_ADDR) tmpulongest, a, @@ -941,8 +957,8 @@ record_linux_system_call (enum gdb_syscall syscall, a += tdep->size_ulong; tmpint = (int) extract_unsigned_integer (a, tdep->size_ulong, byte_order); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tmpint)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tmpint)) return -1; } } @@ -952,8 +968,8 @@ record_linux_system_call (enum gdb_syscall syscall, break; case RECORD_SYS_GETSOCKOPT: { - gdb_byte *a = alloca (tdep->size_ulong * 2); - gdb_byte *av = alloca (tdep->size_int); + gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong * 2); + gdb_byte *av = (gdb_byte *) alloca (tdep->size_int); regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); @@ -996,14 +1012,15 @@ record_linux_system_call (enum gdb_syscall syscall, tmpint = (int) extract_unsigned_integer (av, tdep->size_int, byte_order); - if (record_arch_list_add_mem (tmpaddr, tmpint)) + if (record_full_arch_list_add_mem (tmpaddr, tmpint)) return -1; a += tdep->size_ulong; tmpaddr = (CORE_ADDR) extract_unsigned_integer (a, tdep->size_ulong, byte_order); - if (record_arch_list_add_mem (tmpaddr, tdep->size_int)) + if (record_full_arch_list_add_mem (tmpaddr, + tdep->size_int)) return -1; } } @@ -1013,7 +1030,7 @@ record_linux_system_call (enum gdb_syscall syscall, break; case RECORD_SYS_RECVMSG: { - gdb_byte *a = alloca (tdep->size_ulong); + gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong); regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); @@ -1052,15 +1069,15 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_setitimer: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_itimerval)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_itimerval)) return -1; break; case gdb_sys_getitimer: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_itimerval)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_itimerval)) return -1; break; @@ -1069,14 +1086,15 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_newfstat: case gdb_sys_newfstatat: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_stat)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_stat)) return -1; break; case gdb_sys_uname: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_utsname)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_utsname)) return -1; break; @@ -1088,12 +1106,12 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_wait4: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_rusage)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_rusage)) return -1; break; @@ -1102,8 +1120,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_sysinfo: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_sysinfo)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_sysinfo)) return -1; break; @@ -1119,15 +1137,15 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_shmat: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_ulong)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_ulong)) return -1; break; case gdb_sys_shmctl: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_shmid_ds)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_shmid_ds)) return -1; break; @@ -1137,18 +1155,20 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_msgrcv: { ULONGEST msgp; - regcache_raw_read_signed (regcache, tdep->arg3, &tmpulongest); + LONGEST l; + + regcache_raw_read_signed (regcache, tdep->arg3, &l); regcache_raw_read_unsigned (regcache, tdep->arg2, &msgp); - tmpint = (int) tmpulongest + tdep->size_long; - if (record_arch_list_add_mem ((CORE_ADDR) msgp, tmpint)) + tmpint = l + tdep->size_long; + if (record_full_arch_list_add_mem ((CORE_ADDR) msgp, tmpint)) return -1; } break; case gdb_sys_msgctl: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_msqid_ds)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_msqid_ds)) return -1; break; @@ -1168,34 +1188,35 @@ record_linux_system_call (enum gdb_syscall syscall, break; case RECORD_MSGRCV: { - ULONGEST second; + LONGEST second; ULONGEST ptr; + regcache_raw_read_signed (regcache, tdep->arg3, &second); regcache_raw_read_unsigned (regcache, tdep->arg5, &ptr); tmpint = (int) second + tdep->size_long; - if (record_arch_list_add_mem ((CORE_ADDR) ptr, tmpint)) + if (record_full_arch_list_add_mem ((CORE_ADDR) ptr, tmpint)) return -1; } break; case RECORD_MSGCTL: regcache_raw_read_unsigned (regcache, tdep->arg5, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_msqid_ds)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_msqid_ds)) return -1; break; case RECORD_SHMAT: regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_ulong)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_ulong)) return -1; break; case RECORD_SHMCTL: regcache_raw_read_unsigned (regcache, tdep->arg5, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_shmid_ds)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_shmid_ds)) return -1; break; default: @@ -1215,8 +1236,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_newuname: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_new_utsname)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_new_utsname)) return -1; break; @@ -1225,16 +1246,18 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest == 0 || tmpulongest == 2) { ULONGEST ptr, bytecount; + regcache_raw_read_unsigned (regcache, tdep->arg2, &ptr); regcache_raw_read_unsigned (regcache, tdep->arg3, &bytecount); - if (record_arch_list_add_mem ((CORE_ADDR) ptr, (int) bytecount)) + if (record_full_arch_list_add_mem ((CORE_ADDR) ptr, (int) bytecount)) return -1; } break; case gdb_sys_adjtimex: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_timex)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_timex)) return -1; break; @@ -1243,8 +1266,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_sigprocmask: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_sigset_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_sigset_t)) return -1; break; @@ -1262,29 +1285,29 @@ record_linux_system_call (enum gdb_syscall syscall, regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); /* __u32 */ - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, 4)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, 4)) return -1; break; case RECORD_Q_GETINFO: regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_mem_dqinfo)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_mem_dqinfo)) return -1; break; case RECORD_Q_GETQUOTA: regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_if_dqblk)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_if_dqblk)) return -1; break; case RECORD_Q_XGETQSTAT: case RECORD_Q_XGETQUOTA: regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_fs_quota_stat)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_fs_quota_stat)) return -1; break; } @@ -1302,7 +1325,7 @@ record_linux_system_call (enum gdb_syscall syscall, regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); /*XXX the size of memory is not very clear. */ - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, 10)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, 10)) return -1; } break; @@ -1315,39 +1338,40 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_llseek: regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_loff_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_loff_t)) return -1; break; case gdb_sys_getdents: { ULONGEST count; + regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); regcache_raw_read_unsigned (regcache, tdep->arg3, &count); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_dirent * count)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_dirent * count)) return -1; } break; case gdb_sys_select: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_fd_set)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_fd_set)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_fd_set)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_fd_set)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_fd_set)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_fd_set)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg5, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_timeval)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_timeval)) return -1; break; @@ -1362,7 +1386,7 @@ record_linux_system_call (enum gdb_syscall syscall, regcache_raw_read_unsigned (regcache, tdep->arg2, &vec); if (vec) { - gdb_byte *iov = alloca (tdep->size_iovec); + gdb_byte *iov = (gdb_byte *) alloca (tdep->size_iovec); regcache_raw_read_unsigned (regcache, tdep->arg3, &vlen); for (tmpulongest = 0; tmpulongest < vlen; tmpulongest++) @@ -1386,7 +1410,7 @@ record_linux_system_call (enum gdb_syscall syscall, = (int) extract_unsigned_integer (iov + tdep->size_pointer, tdep->size_size_t, byte_order); - if (record_arch_list_add_mem (tmpaddr, tmpint)) + if (record_full_arch_list_add_mem (tmpaddr, tmpint)) return -1; vec += tdep->size_iovec; } @@ -1407,7 +1431,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_sched_getparam: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; break; @@ -1421,8 +1446,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_sched_rr_get_interval: case gdb_sys_nanosleep: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_timespec)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_timespec)) return -1; break; @@ -1432,16 +1457,16 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_getresuid16: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_uid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_uid_t)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_uid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_uid_t)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_uid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_uid_t)) return -1; break; @@ -1454,9 +1479,10 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST nfds; + regcache_raw_read_unsigned (regcache, tdep->arg2, &nfds); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_pollfd * nfds)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_pollfd * nfds)) return -1; } break; @@ -1466,13 +1492,14 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest == 7 || tmpulongest == 8) { int rsize; + if (tmpulongest == 7) rsize = tdep->size_NFS_FHSIZE; else rsize = tdep->size_knfsd_fh; regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, rsize)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, rsize)) return -1; } break; @@ -1482,16 +1509,16 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_getresgid16: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_gid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_gid_t)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_gid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_gid_t)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_old_gid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_old_gid_t)) return -1; break; @@ -1502,15 +1529,15 @@ record_linux_system_call (enum gdb_syscall syscall, case 2: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; break; case 16: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_TASK_COMM_LEN)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_TASK_COMM_LEN)) return -1; break; } @@ -1521,15 +1548,15 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_rt_sigaction: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_sigaction)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_sigaction)) return -1; break; case gdb_sys_rt_sigprocmask: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_sigset_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_sigset_t)) return -1; break; @@ -1538,17 +1565,18 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST sigsetsize; + regcache_raw_read_unsigned (regcache, tdep->arg2,&sigsetsize); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - (int) sigsetsize)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (int) sigsetsize)) return -1; } break; case gdb_sys_rt_sigtimedwait: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_siginfo_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_siginfo_t)) return -1; break; @@ -1561,8 +1589,10 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST count; + regcache_raw_read_unsigned (regcache, tdep->arg3,&count); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, (int) count)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (int) count)) return -1; } break; @@ -1576,16 +1606,18 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST size; + regcache_raw_read_unsigned (regcache, tdep->arg2, &size); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, (int) size)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (int) size)) return -1; } break; case gdb_sys_capget: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_cap_user_data_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_cap_user_data_t)) return -1; break; @@ -1594,15 +1626,15 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_sigaltstack: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_stack_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_stack_t)) return -1; break; case gdb_sys_sendfile: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_off_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_off_t)) return -1; break; @@ -1613,8 +1645,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_getrlimit: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_rlimit)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_rlimit)) return -1; break; @@ -1629,8 +1661,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_lstat64: case gdb_sys_fstat64: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_stat64)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_stat64)) return -1; break; @@ -1648,10 +1680,11 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST gidsetsize; + regcache_raw_read_unsigned (regcache, tdep->arg1, &gidsetsize); tmpint = tdep->size_gid_t * (int) gidsetsize; - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tmpint)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, tmpint)) return -1; } break; @@ -1663,13 +1696,16 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_getresuid: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_uid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_uid_t)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_uid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_uid_t)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_uid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_uid_t)) return -1; break; @@ -1678,13 +1714,16 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_getresgid: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_gid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_gid_t)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_gid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_gid_t)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_gid_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_gid_t)) return -1; break; @@ -1698,8 +1737,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_mincore: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_PAGE_SIZE)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_PAGE_SIZE)) return -1; break; @@ -1709,11 +1748,12 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_getdents64: { ULONGEST count; + regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); regcache_raw_read_unsigned (regcache, tdep->arg3, &count); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_dirent64 * count)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_dirent64 * count)) return -1; } break; @@ -1724,8 +1764,8 @@ record_linux_system_call (enum gdb_syscall syscall, { regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_flock64)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_flock64)) return -1; } else if (tmpulongest != tdep->fcntl_F_SETLK64 @@ -1751,8 +1791,10 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST size; + regcache_raw_read_unsigned (regcache, tdep->arg4, &size); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, (int) size)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (int) size)) return -1; } break; @@ -1764,8 +1806,10 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST size; + regcache_raw_read_unsigned (regcache, tdep->arg3, &size); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, (int) size)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (int) size)) return -1; } break; @@ -1778,8 +1822,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_sendfile64: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_loff_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_loff_t)) return -1; break; @@ -1792,28 +1836,32 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST len; + regcache_raw_read_unsigned (regcache, tdep->arg2, &len); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, (int) len)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (int) len)) return -1; } break; case gdb_sys_set_thread_area: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; break; case gdb_sys_get_thread_area: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_user_desc)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_user_desc)) return -1; break; case gdb_sys_io_setup: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_long)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_long)) return -1; break; @@ -1825,9 +1873,10 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST nr; + regcache_raw_read_unsigned (regcache, tdep->arg3, &nr); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - nr * tdep->size_io_event)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + nr * tdep->size_io_event)) return -1; } break; @@ -1840,7 +1889,7 @@ record_linux_system_call (enum gdb_syscall syscall, gdb_byte *iocbp; regcache_raw_read_unsigned (regcache, tdep->arg2, &nr); - iocbp = alloca (nr * tdep->size_pointer); + iocbp = (gdb_byte *) alloca (nr * tdep->size_pointer); if (target_read_memory ((CORE_ADDR) tmpulongest, iocbp, nr * tdep->size_pointer)) { @@ -1858,7 +1907,7 @@ record_linux_system_call (enum gdb_syscall syscall, = (CORE_ADDR) extract_unsigned_integer (iocbp, tdep->size_pointer, byte_order); - if (record_arch_list_add_mem (tmpaddr, tdep->size_iocb)) + if (record_full_arch_list_add_mem (tmpaddr, tdep->size_iocb)) return -1; iocbp += tdep->size_pointer; } @@ -1867,8 +1916,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_io_cancel: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_io_event)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_io_event)) return -1; break; @@ -1879,6 +1928,7 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_exit_group: { int q; + target_terminal_ours (); q = yquery (_("The next instruction is syscall exit_group. " "It will make the program exit. " @@ -1894,8 +1944,10 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST len; + regcache_raw_read_unsigned (regcache, tdep->arg3, &len); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, (int) len)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (int) len)) return -1; } break; @@ -1909,9 +1961,11 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST maxevents; + regcache_raw_read_unsigned (regcache, tdep->arg3, &maxevents); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - maxevents * tdep->size_epoll_event)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (maxevents + * tdep->size_epoll_event))) return -1; } break; @@ -1922,21 +1976,22 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_timer_create: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; break; case gdb_sys_timer_settime: regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_itimerspec)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_itimerspec)) return -1; break; case gdb_sys_timer_gettime: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_itimerspec)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_itimerspec)) return -1; break; @@ -1947,30 +2002,30 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_clock_gettime: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_timespec)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_timespec)) return -1; break; case gdb_sys_clock_getres: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_timespec)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_timespec)) return -1; break; case gdb_sys_clock_nanosleep: regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_timespec)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_timespec)) return -1; break; case gdb_sys_statfs64: case gdb_sys_fstatfs64: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_statfs64)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_statfs64)) return -1; break; @@ -1983,15 +2038,17 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_get_mempolicy: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); if (tmpulongest) { ULONGEST maxnode; + regcache_raw_read_unsigned (regcache, tdep->arg3, &maxnode); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - maxnode * tdep->size_long)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + maxnode * tdep->size_long)) return -1; } break; @@ -2007,13 +2064,15 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST msg_len; + regcache_raw_read_unsigned (regcache, tdep->arg3, &msg_len); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - (int) msg_len)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (int) msg_len)) return -1; } regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; break; @@ -2022,8 +2081,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_mq_getsetattr: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_mq_attr)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_mq_attr)) return -1; break; @@ -2032,12 +2091,12 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_waitid: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_siginfo)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_siginfo)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg5, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_rusage)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_rusage)) return -1; break; @@ -2055,9 +2114,10 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST buflen; + regcache_raw_read_unsigned (regcache, tdep->arg4, &buflen); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - (int) buflen)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (int) buflen)) return -1; } } @@ -2078,8 +2138,8 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_fstatat64: regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_stat64)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_stat64)) return -1; break; @@ -2094,8 +2154,10 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST bufsiz; + regcache_raw_read_unsigned (regcache, tdep->arg4, &bufsiz); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, (int) bufsiz)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + (int) bufsiz)) return -1; } break; @@ -2106,20 +2168,20 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_pselect6: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_fd_set)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_fd_set)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_fd_set)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_fd_set)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_fd_set)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_fd_set)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg5, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_timespec)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_timespec)) return -1; break; @@ -2128,14 +2190,15 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST nfds; + regcache_raw_read_unsigned (regcache, tdep->arg2, &nfds); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_pollfd * nfds)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_pollfd * nfds)) return -1; } regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_timespec)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_timespec)) return -1; break; @@ -2145,21 +2208,23 @@ record_linux_system_call (enum gdb_syscall syscall, case gdb_sys_get_robust_list: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; break; case gdb_sys_splice: regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_loff_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_loff_t)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg4, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_loff_t)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_loff_t)) return -1; break; @@ -2173,23 +2238,26 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST nr_pages; + regcache_raw_read_unsigned (regcache, tdep->arg2, &nr_pages); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - nr_pages * tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + nr_pages * tdep->size_int)) return -1; } break; case gdb_sys_getcpu: regcache_raw_read_unsigned (regcache, tdep->arg1, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg2, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tdep->size_int)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_int)) return -1; regcache_raw_read_unsigned (regcache, tdep->arg3, &tmpulongest); - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, - tdep->size_ulong * 2)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, + tdep->size_ulong * 2)) return -1; break; @@ -2198,9 +2266,10 @@ record_linux_system_call (enum gdb_syscall syscall, if (tmpulongest) { ULONGEST maxevents; + regcache_raw_read_unsigned (regcache, tdep->arg3, &maxevents); tmpint = (int) maxevents * tdep->size_epoll_event; - if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest, tmpint)) + if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest, tmpint)) return -1; } break;