From patchwork Fri Mar 6 19:58:02 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pedro Alves X-Patchwork-Id: 5505 Received: (qmail 54739 invoked by alias); 6 Mar 2015 19:58:28 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 54644 invoked by uid 89); 6 Mar 2015 19:58:28 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL, BAYES_00, SPF_HELO_PASS, SPF_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Fri, 06 Mar 2015 19:58:12 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id t26JwAOw003335 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Fri, 6 Mar 2015 14:58:10 -0500 Received: from brno.lan (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t26Jw60m024787 for ; Fri, 6 Mar 2015 14:58:09 -0500 From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH 2/6] Introduce throw_ptrace_error Date: Fri, 6 Mar 2015 19:58:02 +0000 Message-Id: <1425671886-7798-3-git-send-email-palves@redhat.com> In-Reply-To: <1425671886-7798-1-git-send-email-palves@redhat.com> References: <1425671886-7798-1-git-send-email-palves@redhat.com> This adds a new function that is meant to be called instead of perror_with_name whenever we get an error out of ptrace. The idea is to convert some errno errors to different GDB exceptions in a following patch. gdb/ 2015-03-06 Pedro Alves * Makefile.in (HFILES_NO_SRCDIR): Add nat/ptrace-utils.h. (ptrace-utils.o): New rule. * aarch64-linux-nat.c: Include nat/ptrace-utils.h and use throw_ptrace error intead of perror_with_name. * alphabsd-nat.c, amd64-linux-nat.c, amd64bsd-nat.c, arm-linux-nat.c, hppabsd-nat.c, hppanbsd-nat.c, i386-linux-nat.c, i386bsd-nat.c, i386fbsd-nat.c, inf-ptrace.c, linux-nat.c, m32r-linux-nat.c, m68kbsd-nat.c, m68klinux-nat.c, m88kbsd-nat.c, mips-linux-nat.c, mips64obsd-nat.c, mipsnbsd-nat.c, obsd-nat.c, ppc-linux-nat.c, ppcfbsd-nat.c, ppcnbsd-nat.c, ppcobsd-nat.c, rs6000-nat.c, shnbsd-nat.c, sparc-nat.c, spu-linux-nat.c, tilegx-linux-nat.c, vaxbsd-nat.c, x86-linux-nat.c, xtensa-linux-nat.c. * nat/ptrace-utils.c: New file. * nat/ptrace-utils.h: New file. * config/aarch64/linux.mh, config/alpha/alpha-linux.mh, config/alpha/fbsd.mh, config/alpha/nbsd.mh, config/arm/linux.mh, config/i386/fbsd.mh, config/i386/fbsd64.mh, config/i386/linux.mh, config/i386/linux64.mh, config/i386/nbsdelf.mh, config/i386/obsd.mh, config/i386/obsd64.mh, config/ia64/linux.mh, config/m32r/linux.mh, config/m68k/linux.mh, config/m68k/nbsdelf.mh, config/m68k/obsd.mh, config/m88k/obsd.mh, config/mips/linux.mh, config/mips/nbsd.mh, config/mips/obsd64.mh, config/pa/hpux.mh, config/pa/linux.mh, config/pa/nbsd.mh, config/pa/obsd.mh, config/powerpc/fbsd.mh, config/powerpc/linux.mh, config/powerpc/nbsd.mh, config/powerpc/obsd.mh, config/powerpc/ppc64-linux.mh, config/powerpc/spu-linux.mh, config/s390/linux.mh, config/sh/nbsd.mh, config/sparc/fbsd.mh, config/sparc/linux.mh, config/sparc/linux64.mh, config/sparc/nbsd64.mh, config/sparc/nbsdelf.mh, config/sparc/obsd64.mh, config/tilegx/linux.mh, config/vax/nbsdelf.mh, config/vax/obsd.mh, config/xtensa/linux.mh: Add ptrace-utils.o. gdb/gdbserver/ChangeLog: 2015-03-06 Pedro Alves * Makefile.in (SFILES): Add nat/ptrace-utils.c. (ptrace-utils.o): New rule. * configure.srv (srv_linux_obj): Add ptrace-utils.o. --- gdb/Makefile.in | 6 +++- gdb/aarch64-linux-nat.c | 13 ++++---- gdb/alphabsd-nat.c | 13 ++++---- gdb/amd64-linux-nat.c | 19 ++++++------ gdb/amd64bsd-nat.c | 19 ++++++------ gdb/arm-linux-nat.c | 9 +++--- gdb/config/aarch64/linux.mh | 2 +- gdb/config/alpha/alpha-linux.mh | 2 +- gdb/config/alpha/fbsd.mh | 2 +- gdb/config/alpha/nbsd.mh | 2 +- gdb/config/arm/linux.mh | 2 +- gdb/config/arm/nbsdelf.mh | 2 +- gdb/config/i386/fbsd.mh | 2 +- gdb/config/i386/fbsd64.mh | 2 +- gdb/config/i386/linux.mh | 2 +- gdb/config/i386/linux64.mh | 2 +- gdb/config/i386/nbsd64.mh | 2 +- gdb/config/i386/nbsdelf.mh | 2 +- gdb/config/i386/obsd.mh | 2 +- gdb/config/i386/obsd64.mh | 2 +- gdb/config/ia64/linux.mh | 2 +- gdb/config/m32r/linux.mh | 2 +- gdb/config/m68k/linux.mh | 2 +- gdb/config/m68k/nbsdelf.mh | 2 +- gdb/config/m68k/obsd.mh | 2 +- gdb/config/m88k/obsd.mh | 2 +- gdb/config/mips/linux.mh | 2 +- gdb/config/mips/nbsd.mh | 2 +- gdb/config/mips/obsd64.mh | 2 +- gdb/config/pa/hpux.mh | 2 +- gdb/config/pa/linux.mh | 2 +- gdb/config/pa/nbsd.mh | 2 +- gdb/config/pa/obsd.mh | 2 +- gdb/config/powerpc/aix.mh | 2 +- gdb/config/powerpc/fbsd.mh | 2 +- gdb/config/powerpc/linux.mh | 2 +- gdb/config/powerpc/nbsd.mh | 2 +- gdb/config/powerpc/obsd.mh | 2 +- gdb/config/powerpc/ppc64-linux.mh | 2 +- gdb/config/powerpc/spu-linux.mh | 2 +- gdb/config/s390/linux.mh | 2 +- gdb/config/sh/nbsd.mh | 2 +- gdb/config/sparc/fbsd.mh | 2 +- gdb/config/sparc/linux.mh | 2 +- gdb/config/sparc/linux64.mh | 2 +- gdb/config/sparc/nbsd64.mh | 2 +- gdb/config/sparc/nbsdelf.mh | 2 +- gdb/config/sparc/obsd64.mh | 2 +- gdb/config/tilegx/linux.mh | 2 +- gdb/config/vax/nbsdelf.mh | 2 +- gdb/config/vax/obsd.mh | 2 +- gdb/config/xtensa/linux.mh | 2 +- gdb/gdbserver/Makefile.in | 6 +++- gdb/gdbserver/configure.srv | 2 +- gdb/hppanbsd-nat.c | 13 ++++---- gdb/hppaobsd-nat.c | 13 ++++---- gdb/i386-linux-nat.c | 27 +++++++++-------- gdb/i386bsd-nat.c | 23 +++++++------- gdb/i386fbsd-nat.c | 3 +- gdb/inf-ptrace.c | 19 ++++++------ gdb/linux-nat.c | 3 +- gdb/m32r-linux-nat.c | 7 +++-- gdb/m68kbsd-nat.c | 13 ++++---- gdb/m68klinux-nat.c | 12 ++++---- gdb/m88kbsd-nat.c | 7 +++-- gdb/mips-linux-nat.c | 19 ++++++------ gdb/mips64obsd-nat.c | 7 +++-- gdb/mipsnbsd-nat.c | 13 ++++---- gdb/nat/ptrace-utils.c | 29 ++++++++++++++++++ gdb/nat/ptrace-utils.h | 28 +++++++++++++++++ gdb/obsd-nat.c | 9 +++--- gdb/ppc-linux-nat.c | 63 ++++++++++++++++++++------------------- gdb/ppcfbsd-nat.c | 13 ++++---- gdb/ppcnbsd-nat.c | 13 ++++---- gdb/ppcobsd-nat.c | 13 ++++---- gdb/rs6000-nat.c | 3 +- gdb/s390-linux-nat.c | 26 ++++++++-------- gdb/shnbsd-nat.c | 7 +++-- gdb/sparc-nat.c | 15 +++++----- gdb/spu-linux-nat.c | 3 +- gdb/tilegx-linux-nat.c | 6 ++-- gdb/vaxbsd-nat.c | 7 +++-- gdb/x86-linux-nat.c | 9 +++--- gdb/xtensa-linux-nat.c | 12 ++++---- 84 files changed, 354 insertions(+), 260 deletions(-) create mode 100644 gdb/nat/ptrace-utils.c create mode 100644 gdb/nat/ptrace-utils.h diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 8c2a4de..b1bf620 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -966,7 +966,7 @@ common/print-utils.h common/rsp-low.h nat/x86-dregs.h x86-linux-nat.h \ i386-linux-nat.h common/common-defs.h common/errors.h common/common-types.h \ common/common-debug.h common/cleanups.h common/gdb_setjmp.h \ common/common-exceptions.h target/target.h common/symbol.h \ -common/common-regcache.h fbsd-tdep.h nat/linux-personality.h +common/common-regcache.h fbsd-tdep.h nat/linux-personality.h nat/ptrace-utils.h # Header files that already have srcdir in them, or which are in objdir. @@ -2295,6 +2295,10 @@ linux-personality.o: ${srcdir}/nat/linux-personality.c $(COMPILE) $(srcdir)/nat/linux-personality.c $(POSTCOMPILE) +ptrace-utils.o: $(srcdir)/nat/ptrace-utils.c + $(COMPILE) $(srcdir)/nat/ptrace-utils.c + $(POSTCOMPILE) + # # gdb/tui/ dependencies # diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c index aae4853..523f5b8 100644 --- a/gdb/aarch64-linux-nat.c +++ b/gdb/aarch64-linux-nat.c @@ -24,6 +24,7 @@ #include "gdbcore.h" #include "regcache.h" #include "linux-nat.h" +#include "nat/ptrace-utils.h" #include "target-descriptions.h" #include "auxv.h" #include "gdbcmd.h" @@ -469,7 +470,7 @@ fetch_gregs_from_thread (struct regcache *regcache) ret = ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec); if (ret < 0) - perror_with_name (_("Unable to fetch general registers.")); + throw_ptrace_error (_("Unable to fetch general registers.")); for (regno = AARCH64_X0_REGNUM; regno <= AARCH64_CPSR_REGNUM; regno++) regcache_raw_supply (regcache, regno, @@ -493,7 +494,7 @@ store_gregs_to_thread (const struct regcache *regcache) ret = ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec); if (ret < 0) - perror_with_name (_("Unable to fetch general registers.")); + throw_ptrace_error (_("Unable to fetch general registers.")); for (regno = AARCH64_X0_REGNUM; regno <= AARCH64_CPSR_REGNUM; regno++) if (REG_VALID == regcache_register_status (regcache, regno)) @@ -502,7 +503,7 @@ store_gregs_to_thread (const struct regcache *regcache) ret = ptrace (PTRACE_SETREGSET, tid, NT_PRSTATUS, &iovec); if (ret < 0) - perror_with_name (_("Unable to store general registers.")); + throw_ptrace_error (_("Unable to store general registers.")); } /* Fill GDB's register array with the fp/simd register values @@ -522,7 +523,7 @@ fetch_fpregs_from_thread (struct regcache *regcache) ret = ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec); if (ret < 0) - perror_with_name (_("Unable to fetch FP/SIMD registers.")); + throw_ptrace_error (_("Unable to fetch FP/SIMD registers.")); for (regno = AARCH64_V0_REGNUM; regno <= AARCH64_V31_REGNUM; regno++) regcache_raw_supply (regcache, regno, @@ -549,7 +550,7 @@ store_fpregs_to_thread (const struct regcache *regcache) ret = ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec); if (ret < 0) - perror_with_name (_("Unable to fetch FP/SIMD registers.")); + throw_ptrace_error (_("Unable to fetch FP/SIMD registers.")); for (regno = AARCH64_V0_REGNUM; regno <= AARCH64_V31_REGNUM; regno++) if (REG_VALID == regcache_register_status (regcache, regno)) @@ -563,7 +564,7 @@ store_fpregs_to_thread (const struct regcache *regcache) ret = ptrace (PTRACE_SETREGSET, tid, NT_FPREGSET, &iovec); if (ret < 0) - perror_with_name (_("Unable to store FP/SIMD registers.")); + throw_ptrace_error (_("Unable to store FP/SIMD registers.")); } /* Implement the "to_fetch_register" target_ops method. */ diff --git a/gdb/alphabsd-nat.c b/gdb/alphabsd-nat.c index 37a5c8d..74757ab 100644 --- a/gdb/alphabsd-nat.c +++ b/gdb/alphabsd-nat.c @@ -24,6 +24,7 @@ #include "alpha-tdep.h" #include "alphabsd-tdep.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" #include #include @@ -93,7 +94,7 @@ alphabsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &gregs, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); alphabsd_supply_reg (regcache, (char *) &gregs, regno); if (regno != -1) @@ -107,7 +108,7 @@ alphabsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); alphabsd_supply_fpreg (regcache, (char *) &fpregs, regno); } @@ -125,13 +126,13 @@ alphabsd_store_inferior_registers (struct target_ops *ops, struct reg gregs; if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &gregs, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); alphabsd_fill_reg (regcache, (char *) &gregs, regno); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &gregs, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); if (regno != -1) return; @@ -144,13 +145,13 @@ alphabsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); alphabsd_fill_fpreg (regcache, (char *) &fpregs, regno); if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); } } diff --git a/gdb/amd64-linux-nat.c b/gdb/amd64-linux-nat.c index 22a1359..e35a52e 100644 --- a/gdb/amd64-linux-nat.c +++ b/gdb/amd64-linux-nat.c @@ -31,6 +31,7 @@ #include "amd64-nat.h" #include "linux-nat.h" +#include "nat/ptrace-utils.h" #include "amd64-tdep.h" #include "amd64-linux-tdep.h" #include "i386-linux-tdep.h" @@ -138,7 +139,7 @@ amd64_linux_fetch_inferior_registers (struct target_ops *ops, elf_gregset_t regs; if (ptrace (PTRACE_GETREGS, tid, 0, (long) ®s) < 0) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); amd64_supply_native_gregset (regcache, ®s, -1); if (regnum != -1) @@ -158,14 +159,14 @@ amd64_linux_fetch_inferior_registers (struct target_ops *ops, iov.iov_len = sizeof (xstateregs); if (ptrace (PTRACE_GETREGSET, tid, (unsigned int) NT_X86_XSTATE, (long) &iov) < 0) - perror_with_name (_("Couldn't get extended state status")); + throw_ptrace_error (_("Couldn't get extended state status")); amd64_supply_xsave (regcache, -1, xstateregs); } else { if (ptrace (PTRACE_GETFPREGS, tid, 0, (long) &fpregs) < 0) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); amd64_supply_fxsave (regcache, -1, &fpregs); } @@ -193,12 +194,12 @@ amd64_linux_store_inferior_registers (struct target_ops *ops, elf_gregset_t regs; if (ptrace (PTRACE_GETREGS, tid, 0, (long) ®s) < 0) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); amd64_collect_native_gregset (regcache, ®s, regnum); if (ptrace (PTRACE_SETREGS, tid, 0, (long) ®s) < 0) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); if (regnum != -1) return; @@ -217,23 +218,23 @@ amd64_linux_store_inferior_registers (struct target_ops *ops, iov.iov_len = sizeof (xstateregs); if (ptrace (PTRACE_GETREGSET, tid, (unsigned int) NT_X86_XSTATE, (long) &iov) < 0) - perror_with_name (_("Couldn't get extended state status")); + throw_ptrace_error (_("Couldn't get extended state status")); amd64_collect_xsave (regcache, regnum, xstateregs, 0); if (ptrace (PTRACE_SETREGSET, tid, (unsigned int) NT_X86_XSTATE, (long) &iov) < 0) - perror_with_name (_("Couldn't write extended state status")); + throw_ptrace_error (_("Couldn't write extended state status")); } else { if (ptrace (PTRACE_GETFPREGS, tid, 0, (long) &fpregs) < 0) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); amd64_collect_fxsave (regcache, regnum, &fpregs); if (ptrace (PTRACE_SETFPREGS, tid, 0, (long) &fpregs) < 0) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); } } } diff --git a/gdb/amd64bsd-nat.c b/gdb/amd64bsd-nat.c index 31060a123..e28715c 100644 --- a/gdb/amd64bsd-nat.c +++ b/gdb/amd64bsd-nat.c @@ -33,6 +33,7 @@ #include "amd64-nat.h" #include "amd64bsd-nat.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" /* Fetch register REGNUM from the inferior. If REGNUM is -1, do this @@ -50,7 +51,7 @@ amd64bsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); amd64_supply_native_gregset (regcache, ®s, -1); if (regnum != -1) @@ -63,7 +64,7 @@ amd64bsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); amd64_supply_fxsave (regcache, -1, &fpregs); } @@ -84,13 +85,13 @@ amd64bsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); amd64_collect_native_gregset (regcache, ®s, regnum); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); if (regnum != -1) return; @@ -102,13 +103,13 @@ amd64bsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); amd64_collect_fxsave (regcache, regnum, &fpregs); if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); } } @@ -138,7 +139,7 @@ amd64bsd_dr_get (ptid_t ptid, int regnum) if (ptrace (PT_GETDBREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &dbregs, 0) == -1) - perror_with_name (_("Couldn't read debug registers")); + throw_ptrace_error (_("Couldn't read debug registers")); return DBREG_DRX ((&dbregs), regnum); } @@ -150,7 +151,7 @@ amd64bsd_dr_set (int regnum, unsigned long value) if (ptrace (PT_GETDBREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &dbregs, 0) == -1) - perror_with_name (_("Couldn't get debug registers")); + throw_ptrace_error (_("Couldn't get debug registers")); /* For some mysterious reason, some of the reserved bits in the debug control register get set. Mask these off, otherwise the @@ -161,7 +162,7 @@ amd64bsd_dr_set (int regnum, unsigned long value) if (ptrace (PT_SETDBREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &dbregs, 0) == -1) - perror_with_name (_("Couldn't write debug registers")); + throw_ptrace_error (_("Couldn't write debug registers")); } void diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c index bb8358c..34bc2db 100644 --- a/gdb/arm-linux-nat.c +++ b/gdb/arm-linux-nat.c @@ -22,6 +22,7 @@ #include "regcache.h" #include "target.h" #include "linux-nat.h" +#include "nat/ptrace-utils.h" #include "target-descriptions.h" #include "auxv.h" #include "observer.h" @@ -1347,12 +1348,12 @@ arm_linux_prepare_to_resume (struct lwp_info *lwp) if (arm_hwbp_control_is_enabled (bpts[i].control)) if (ptrace (PTRACE_SETHBPREGS, pid, (PTRACE_TYPE_ARG3) ((i << 1) + 1), &bpts[i].address) < 0) - perror_with_name (_("Unexpected error setting breakpoint")); + throw_ptrace_error (_("Unexpected error setting breakpoint")); if (bpts[i].control != 0) if (ptrace (PTRACE_SETHBPREGS, pid, (PTRACE_TYPE_ARG3) ((i << 1) + 2), &bpts[i].control) < 0) - perror_with_name (_("Unexpected error setting breakpoint")); + throw_ptrace_error (_("Unexpected error setting breakpoint")); arm_lwp_info->bpts_changed[i] = 0; } @@ -1364,12 +1365,12 @@ arm_linux_prepare_to_resume (struct lwp_info *lwp) if (arm_hwbp_control_is_enabled (wpts[i].control)) if (ptrace (PTRACE_SETHBPREGS, pid, (PTRACE_TYPE_ARG3) -((i << 1) + 1), &wpts[i].address) < 0) - perror_with_name (_("Unexpected error setting watchpoint")); + throw_ptrace_error (_("Unexpected error setting watchpoint")); if (wpts[i].control != 0) if (ptrace (PTRACE_SETHBPREGS, pid, (PTRACE_TYPE_ARG3) -((i << 1) + 2), &wpts[i].control) < 0) - perror_with_name (_("Unexpected error setting watchpoint")); + throw_ptrace_error (_("Unexpected error setting watchpoint")); arm_lwp_info->wpts_changed[i] = 0; } diff --git a/gdb/config/aarch64/linux.mh b/gdb/config/aarch64/linux.mh index 7f96e4d..3b47df2 100644 --- a/gdb/config/aarch64/linux.mh +++ b/gdb/config/aarch64/linux.mh @@ -19,7 +19,7 @@ # along with this program. If not, see . NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o aarch64-linux-nat.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o aarch64-linux-nat.o \ proc-service.o linux-thread-db.o linux-nat.o linux-fork.o \ linux-procfs.o linux-ptrace.o linux-osdata.o linux-waitpid.o \ linux-personality.o diff --git a/gdb/config/alpha/alpha-linux.mh b/gdb/config/alpha/alpha-linux.mh index 2ea02a1..b2ac9b5 100644 --- a/gdb/config/alpha/alpha-linux.mh +++ b/gdb/config/alpha/alpha-linux.mh @@ -1,6 +1,6 @@ # Host: Little-endian Alpha running Linux NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o alpha-linux-nat.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o alpha-linux-nat.o \ fork-child.o proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o linux-procfs.o linux-ptrace.o \ linux-waitpid.o linux-personality.o diff --git a/gdb/config/alpha/fbsd.mh b/gdb/config/alpha/fbsd.mh index 6d1fe29..3867ca6 100644 --- a/gdb/config/alpha/fbsd.mh +++ b/gdb/config/alpha/fbsd.mh @@ -1,5 +1,5 @@ # Host: FreeBSD/alpha -NATDEPFILES= fork-child.o inf-ptrace.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o \ fbsd-nat.o alphabsd-nat.o bsd-kvm.o \ core-regset.o diff --git a/gdb/config/alpha/nbsd.mh b/gdb/config/alpha/nbsd.mh index b4185a7..b4b160f 100644 --- a/gdb/config/alpha/nbsd.mh +++ b/gdb/config/alpha/nbsd.mh @@ -1,4 +1,4 @@ # Host: NetBSD/alpha -NATDEPFILES= fork-child.o inf-ptrace.o alphabsd-nat.o bsd-kvm.o +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o alphabsd-nat.o bsd-kvm.o LOADLIBES= -lkvm diff --git a/gdb/config/arm/linux.mh b/gdb/config/arm/linux.mh index 549bf42..9304e5d 100644 --- a/gdb/config/arm/linux.mh +++ b/gdb/config/arm/linux.mh @@ -1,7 +1,7 @@ # Host: ARM based machine running GNU/Linux NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o arm-linux-nat.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o arm-linux-nat.o \ proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o linux-procfs.o linux-ptrace.o \ linux-waitpid.o linux-personality.o diff --git a/gdb/config/arm/nbsdelf.mh b/gdb/config/arm/nbsdelf.mh index 4efb8a3..c1f122a 100644 --- a/gdb/config/arm/nbsdelf.mh +++ b/gdb/config/arm/nbsdelf.mh @@ -1,2 +1,2 @@ # Host: NetBSD/arm -NATDEPFILES= fork-child.o inf-ptrace.o armnbsd-nat.o +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o armnbsd-nat.o diff --git a/gdb/config/i386/fbsd.mh b/gdb/config/i386/fbsd.mh index e5bff3a..37e19cb 100644 --- a/gdb/config/i386/fbsd.mh +++ b/gdb/config/i386/fbsd.mh @@ -1,5 +1,5 @@ # Host: FreeBSD/i386 -NATDEPFILES= fork-child.o inf-ptrace.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o \ fbsd-nat.o x86-nat.o x86-dregs.o i386bsd-nat.o i386fbsd-nat.o \ bsd-kvm.o NAT_FILE= nm-fbsd.h diff --git a/gdb/config/i386/fbsd64.mh b/gdb/config/i386/fbsd64.mh index 329c526..3b82c7f 100644 --- a/gdb/config/i386/fbsd64.mh +++ b/gdb/config/i386/fbsd64.mh @@ -1,5 +1,5 @@ # Host: FreeBSD/amd64 -NATDEPFILES= fork-child.o inf-ptrace.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o \ fbsd-nat.o amd64-nat.o amd64bsd-nat.o amd64fbsd-nat.o \ bsd-kvm.o x86-nat.o x86-dregs.o HAVE_NATIVE_GCORE_HOST = 1 diff --git a/gdb/config/i386/linux.mh b/gdb/config/i386/linux.mh index 33fb281..c941245 100644 --- a/gdb/config/i386/linux.mh +++ b/gdb/config/i386/linux.mh @@ -1,7 +1,7 @@ # Host: Intel 386 running GNU/Linux. NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o \ x86-nat.o x86-dregs.o i386-linux-nat.o x86-linux-nat.o \ proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o linux-procfs.o linux-ptrace.o \ diff --git a/gdb/config/i386/linux64.mh b/gdb/config/i386/linux64.mh index d52eb52..d5b45d0 100644 --- a/gdb/config/i386/linux64.mh +++ b/gdb/config/i386/linux64.mh @@ -1,5 +1,5 @@ # Host: GNU/Linux x86-64 -NATDEPFILES= inf-ptrace.o fork-child.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o \ x86-nat.o x86-dregs.o amd64-nat.o amd64-linux-nat.o \ x86-linux-nat.o \ linux-nat.o linux-osdata.o \ diff --git a/gdb/config/i386/nbsd64.mh b/gdb/config/i386/nbsd64.mh index 5de8cf5..369a32d 100644 --- a/gdb/config/i386/nbsd64.mh +++ b/gdb/config/i386/nbsd64.mh @@ -1,3 +1,3 @@ # Host: NetBSD/amd64 -NATDEPFILES= fork-child.o inf-ptrace.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o \ nbsd-nat.o amd64-nat.o amd64bsd-nat.o amd64nbsd-nat.o diff --git a/gdb/config/i386/nbsdelf.mh b/gdb/config/i386/nbsdelf.mh index d27c842..087696d 100644 --- a/gdb/config/i386/nbsdelf.mh +++ b/gdb/config/i386/nbsdelf.mh @@ -1,5 +1,5 @@ # Host: NetBSD/i386 ELF -NATDEPFILES= fork-child.o inf-ptrace.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o \ nbsd-nat.o i386bsd-nat.o i386nbsd-nat.o bsd-kvm.o LOADLIBES= -lkvm diff --git a/gdb/config/i386/obsd.mh b/gdb/config/i386/obsd.mh index a9041f4..15383f1 100644 --- a/gdb/config/i386/obsd.mh +++ b/gdb/config/i386/obsd.mh @@ -1,5 +1,5 @@ # Host: OpenBSD/i386 ELF -NATDEPFILES= fork-child.o inf-ptrace.o obsd-nat.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o obsd-nat.o \ i386bsd-nat.o i386obsd-nat.o bsd-kvm.o LOADLIBES= -lkvm diff --git a/gdb/config/i386/obsd64.mh b/gdb/config/i386/obsd64.mh index 386a582..abd06b9 100644 --- a/gdb/config/i386/obsd64.mh +++ b/gdb/config/i386/obsd64.mh @@ -1,5 +1,5 @@ # Host: OpenBSD/amd64 -NATDEPFILES= fork-child.o inf-ptrace.o obsd-nat.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o obsd-nat.o \ amd64-nat.o amd64bsd-nat.o amd64obsd-nat.o bsd-kvm.o LOADLIBES= -lkvm diff --git a/gdb/config/ia64/linux.mh b/gdb/config/ia64/linux.mh index 9dce22b..c502340 100644 --- a/gdb/config/ia64/linux.mh +++ b/gdb/config/ia64/linux.mh @@ -1,7 +1,7 @@ # Host: Intel IA-64 running GNU/Linux NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o \ ia64-linux-nat.o \ proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o \ diff --git a/gdb/config/m32r/linux.mh b/gdb/config/m32r/linux.mh index 6b810e6..6a9456f 100644 --- a/gdb/config/m32r/linux.mh +++ b/gdb/config/m32r/linux.mh @@ -1,7 +1,7 @@ # Host: M32R based machine running GNU/Linux NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o \ m32r-linux-nat.o proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o linux-procfs.o linux-ptrace.o \ linux-waitpid.o linux-personality.o diff --git a/gdb/config/m68k/linux.mh b/gdb/config/m68k/linux.mh index f3b3baa..8317666 100644 --- a/gdb/config/m68k/linux.mh +++ b/gdb/config/m68k/linux.mh @@ -1,7 +1,7 @@ # Host: Motorola m68k running GNU/Linux. NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o \ m68klinux-nat.o \ proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o linux-procfs.o linux-ptrace.o \ diff --git a/gdb/config/m68k/nbsdelf.mh b/gdb/config/m68k/nbsdelf.mh index f2d97a1..7d458a7 100644 --- a/gdb/config/m68k/nbsdelf.mh +++ b/gdb/config/m68k/nbsdelf.mh @@ -1,4 +1,4 @@ # Host: NetBSD/m68k ELF -NATDEPFILES= m68kbsd-nat.o bsd-kvm.o fork-child.o inf-ptrace.o +NATDEPFILES= m68kbsd-nat.o bsd-kvm.o fork-child.o inf-ptrace.o ptrace-utils.o LOADLIBES= -lkvm diff --git a/gdb/config/m68k/obsd.mh b/gdb/config/m68k/obsd.mh index 7930e3b..92c00d7 100644 --- a/gdb/config/m68k/obsd.mh +++ b/gdb/config/m68k/obsd.mh @@ -1,4 +1,4 @@ # Host: OpenBSD/m68k -NATDEPFILES= m68kbsd-nat.o bsd-kvm.o fork-child.o inf-ptrace.o +NATDEPFILES= m68kbsd-nat.o bsd-kvm.o fork-child.o inf-ptrace.o ptrace-utils.o LOADLIBES= -lkvm diff --git a/gdb/config/m88k/obsd.mh b/gdb/config/m88k/obsd.mh index 2978edf..a9c9365 100644 --- a/gdb/config/m88k/obsd.mh +++ b/gdb/config/m88k/obsd.mh @@ -1,2 +1,2 @@ # Host: OpenBSD/m88k -NATDEPFILES= fork-child.o inf-ptrace.o m88kbsd-nat.o +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o m88kbsd-nat.o diff --git a/gdb/config/mips/linux.mh b/gdb/config/mips/linux.mh index d6a802f..eabc470 100644 --- a/gdb/config/mips/linux.mh +++ b/gdb/config/mips/linux.mh @@ -1,6 +1,6 @@ # Host: Linux/MIPS NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o mips-linux-nat.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o mips-linux-nat.o \ linux-thread-db.o proc-service.o \ linux-nat.o linux-osdata.o linux-fork.o \ linux-procfs.o linux-ptrace.o linux-waitpid.o \ diff --git a/gdb/config/mips/nbsd.mh b/gdb/config/mips/nbsd.mh index b76df13..fe437dd 100644 --- a/gdb/config/mips/nbsd.mh +++ b/gdb/config/mips/nbsd.mh @@ -1,2 +1,2 @@ # Host: NetBSD/mips -NATDEPFILES= fork-child.o inf-ptrace.o mipsnbsd-nat.o +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o mipsnbsd-nat.o diff --git a/gdb/config/mips/obsd64.mh b/gdb/config/mips/obsd64.mh index ed04f9e..e9b7a7f 100644 --- a/gdb/config/mips/obsd64.mh +++ b/gdb/config/mips/obsd64.mh @@ -1,2 +1,2 @@ # Host: OpenBSD/mips64 -NATDEPFILES= fork-child.o inf-ptrace.o obsd-nat.o mips64obsd-nat.o +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o obsd-nat.o mips64obsd-nat.o diff --git a/gdb/config/pa/hpux.mh b/gdb/config/pa/hpux.mh index 3151120..ec61058 100644 --- a/gdb/config/pa/hpux.mh +++ b/gdb/config/pa/hpux.mh @@ -1,3 +1,3 @@ # Host: PA-RISC HP-UX -NATDEPFILES= fork-child.o inf-ptrace.o inf-ttrace.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o inf-ttrace.o \ hppa-hpux-nat.o diff --git a/gdb/config/pa/linux.mh b/gdb/config/pa/linux.mh index 9539b64..15c3752 100644 --- a/gdb/config/pa/linux.mh +++ b/gdb/config/pa/linux.mh @@ -1,6 +1,6 @@ # Host: Hewlett-Packard PA-RISC machine, running Linux NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o \ hppa-linux-nat.o proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o \ linux-procfs.o linux-ptrace.o linux-waitpid.o \ diff --git a/gdb/config/pa/nbsd.mh b/gdb/config/pa/nbsd.mh index 5cff698..ff34c78 100644 --- a/gdb/config/pa/nbsd.mh +++ b/gdb/config/pa/nbsd.mh @@ -1,2 +1,2 @@ # Host: NetBSD/hppa -NATDEPFILES= fork-child.o inf-ptrace.o nbsd-nat.o hppanbsd-nat.o +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o nbsd-nat.o hppanbsd-nat.o diff --git a/gdb/config/pa/obsd.mh b/gdb/config/pa/obsd.mh index 50a1192..8e025b8 100644 --- a/gdb/config/pa/obsd.mh +++ b/gdb/config/pa/obsd.mh @@ -1,2 +1,2 @@ # Host: OpenBSD/hppa -NATDEPFILES= fork-child.o inf-ptrace.o obsd-nat.o hppaobsd-nat.o +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o obsd-nat.o hppaobsd-nat.o diff --git a/gdb/config/powerpc/aix.mh b/gdb/config/powerpc/aix.mh index 141501d..52930df 100644 --- a/gdb/config/powerpc/aix.mh +++ b/gdb/config/powerpc/aix.mh @@ -1,7 +1,7 @@ # Host: IBM PowerPC running AIX # aix-thread.o is not listed in NATDEPFILES as it is pulled in by configure. -NATDEPFILES= fork-child.o inf-ptrace.o rs6000-nat.o +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o rs6000-nat.o # When compiled with cc, for debugging, this argument should be passed. # We have no idea who our current compiler is though, so we skip it. diff --git a/gdb/config/powerpc/fbsd.mh b/gdb/config/powerpc/fbsd.mh index e4e7b47..1ed4f49 100644 --- a/gdb/config/powerpc/fbsd.mh +++ b/gdb/config/powerpc/fbsd.mh @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . */ -NATDEPFILES= fbsd-nat.o fork-child.o inf-ptrace.o ppcfbsd-nat.o bsd-kvm.o +NATDEPFILES= fbsd-nat.o fork-child.o inf-ptrace.o ptrace-utils.o ppcfbsd-nat.o bsd-kvm.o HAVE_NATIVE_GCORE_HOST = 1 LOADLIBES= -lkvm diff --git a/gdb/config/powerpc/linux.mh b/gdb/config/powerpc/linux.mh index 76e62c0..44f4a91 100644 --- a/gdb/config/powerpc/linux.mh +++ b/gdb/config/powerpc/linux.mh @@ -3,7 +3,7 @@ XM_CLIBS= NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o \ ppc-linux-nat.o proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o linux-procfs.o linux-ptrace.o \ linux-waitpid.o linux-personality.o diff --git a/gdb/config/powerpc/nbsd.mh b/gdb/config/powerpc/nbsd.mh index db0390c..edea9dd 100644 --- a/gdb/config/powerpc/nbsd.mh +++ b/gdb/config/powerpc/nbsd.mh @@ -1,4 +1,4 @@ # Host: NetBSD/powerpc -NATDEPFILES= fork-child.o inf-ptrace.o ppcnbsd-nat.o bsd-kvm.o +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o ppcnbsd-nat.o bsd-kvm.o LOADLIBES= -lkvm diff --git a/gdb/config/powerpc/obsd.mh b/gdb/config/powerpc/obsd.mh index 2af667a..f8892ba 100644 --- a/gdb/config/powerpc/obsd.mh +++ b/gdb/config/powerpc/obsd.mh @@ -1,4 +1,4 @@ # Host: OpenBSD/powerpc -NATDEPFILES= fork-child.o inf-ptrace.o obsd-nat.o ppcobsd-nat.o bsd-kvm.o +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o obsd-nat.o ppcobsd-nat.o bsd-kvm.o LOADLIBES= -lkvm diff --git a/gdb/config/powerpc/ppc64-linux.mh b/gdb/config/powerpc/ppc64-linux.mh index 7eb6507..80c80fd 100644 --- a/gdb/config/powerpc/ppc64-linux.mh +++ b/gdb/config/powerpc/ppc64-linux.mh @@ -3,7 +3,7 @@ XM_CLIBS= NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o \ ppc-linux-nat.o proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o linux-procfs.o linux-ptrace.o \ linux-waitpid.o ppc-linux.o linux-personality.o diff --git a/gdb/config/powerpc/spu-linux.mh b/gdb/config/powerpc/spu-linux.mh index d44aeeb..38f1588 100644 --- a/gdb/config/powerpc/spu-linux.mh +++ b/gdb/config/powerpc/spu-linux.mh @@ -3,6 +3,6 @@ # This implements a 'pseudo-native' GDB running on the # PPU side of the Cell BE and debugging the SPU side. -NATDEPFILES = spu-linux-nat.o fork-child.o inf-ptrace.o \ +NATDEPFILES = spu-linux-nat.o fork-child.o inf-ptrace.o ptrace-utils.o \ linux-procfs.o linux-ptrace.o linux-waitpid.o linux-personality.o diff --git a/gdb/config/s390/linux.mh b/gdb/config/s390/linux.mh index e1ad899..11fd721 100644 --- a/gdb/config/s390/linux.mh +++ b/gdb/config/s390/linux.mh @@ -1,6 +1,6 @@ # Host: S390, running Linux NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o s390-linux-nat.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o s390-linux-nat.o \ linux-thread-db.o proc-service.o \ linux-nat.o linux-osdata.o linux-fork.o linux-procfs.o linux-ptrace.o \ linux-personality.o \ diff --git a/gdb/config/sh/nbsd.mh b/gdb/config/sh/nbsd.mh index d5e67cb..d97e699 100644 --- a/gdb/config/sh/nbsd.mh +++ b/gdb/config/sh/nbsd.mh @@ -1,2 +1,2 @@ # Host: NetBSD/sh -NATDEPFILES= fork-child.o inf-ptrace.o shnbsd-nat.o +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o shnbsd-nat.o diff --git a/gdb/config/sparc/fbsd.mh b/gdb/config/sparc/fbsd.mh index 2774efb..45579b4 100644 --- a/gdb/config/sparc/fbsd.mh +++ b/gdb/config/sparc/fbsd.mh @@ -1,5 +1,5 @@ # Host: FreeBSD/sparc64 -NATDEPFILES= fork-child.o inf-ptrace.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o \ fbsd-nat.o sparc-nat.o sparc64-nat.o sparc64fbsd-nat.o \ bsd-kvm.o HAVE_NATIVE_GCORE_HOST = 1 diff --git a/gdb/config/sparc/linux.mh b/gdb/config/sparc/linux.mh index bd7fc86..3b43eab 100644 --- a/gdb/config/sparc/linux.mh +++ b/gdb/config/sparc/linux.mh @@ -1,7 +1,7 @@ # Host: GNU/Linux SPARC NAT_FILE= config/nm-linux.h NATDEPFILES= sparc-nat.o sparc-linux-nat.o \ - fork-child.o inf-ptrace.o \ + fork-child.o inf-ptrace.o ptrace-utils.o \ proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o \ linux-procfs.o linux-ptrace.o linux-waitpid.o \ diff --git a/gdb/config/sparc/linux64.mh b/gdb/config/sparc/linux64.mh index 86f984f..2f4d163 100644 --- a/gdb/config/sparc/linux64.mh +++ b/gdb/config/sparc/linux64.mh @@ -1,7 +1,7 @@ # Host: GNU/Linux UltraSPARC NAT_FILE= config/nm-linux.h NATDEPFILES= sparc-nat.o sparc64-nat.o sparc64-linux-nat.o \ - fork-child.o inf-ptrace.o \ + fork-child.o inf-ptrace.o ptrace-utils.o \ proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o \ linux-procfs.o linux-ptrace.o linux-waitpid.o \ diff --git a/gdb/config/sparc/nbsd64.mh b/gdb/config/sparc/nbsd64.mh index 056b74d..5a9ea07 100644 --- a/gdb/config/sparc/nbsd64.mh +++ b/gdb/config/sparc/nbsd64.mh @@ -1,5 +1,5 @@ # Host: NetBSD/sparc64 -NATDEPFILES= fork-child.o inf-ptrace.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o \ sparc64nbsd-nat.o sparc-nat.o bsd-kvm.o LOADLIBES= -lkvm diff --git a/gdb/config/sparc/nbsdelf.mh b/gdb/config/sparc/nbsdelf.mh index 6bf898f..6ae92bf 100644 --- a/gdb/config/sparc/nbsdelf.mh +++ b/gdb/config/sparc/nbsdelf.mh @@ -1,5 +1,5 @@ # Host: NetBSD/sparc ELF -NATDEPFILES= fork-child.o inf-ptrace.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o \ sparc-nat.o sparcnbsd-nat.o bsd-kvm.o LOADLIBES= -lkvm diff --git a/gdb/config/sparc/obsd64.mh b/gdb/config/sparc/obsd64.mh index d15e34d..d82386c 100644 --- a/gdb/config/sparc/obsd64.mh +++ b/gdb/config/sparc/obsd64.mh @@ -1,5 +1,5 @@ # Host: OpenBSD/sparc64 -NATDEPFILES= fork-child.o inf-ptrace.o obsd-nat.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o obsd-nat.o \ sparc64obsd-nat.o sparc-nat.o bsd-kvm.o LOADLIBES= -lkvm diff --git a/gdb/config/tilegx/linux.mh b/gdb/config/tilegx/linux.mh index b5edcd4..cdc96b9 100644 --- a/gdb/config/tilegx/linux.mh +++ b/gdb/config/tilegx/linux.mh @@ -1,7 +1,7 @@ # Host: Tilera TILE-Gx running GNU/Linux. NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o \ tilegx-linux-nat.o \ proc-service.o linux-thread-db.o \ linux-nat.o linux-osdata.o linux-fork.o \ diff --git a/gdb/config/vax/nbsdelf.mh b/gdb/config/vax/nbsdelf.mh index dd9441b..28f0276 100644 --- a/gdb/config/vax/nbsdelf.mh +++ b/gdb/config/vax/nbsdelf.mh @@ -1,5 +1,5 @@ # Host: NetBSD/vax ELF -NATDEPFILES= fork-child.o inf-ptrace.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o \ vaxbsd-nat.o bsd-kvm.o LOADLIBES= -lkvm diff --git a/gdb/config/vax/obsd.mh b/gdb/config/vax/obsd.mh index d4d444f..57e729e 100644 --- a/gdb/config/vax/obsd.mh +++ b/gdb/config/vax/obsd.mh @@ -1,5 +1,5 @@ # Host: OpenBSD/vax -NATDEPFILES= fork-child.o inf-ptrace.o \ +NATDEPFILES= fork-child.o inf-ptrace.o ptrace-utils.o \ vaxbsd-nat.o bsd-kvm.o LOADLIBES= -lkvm diff --git a/gdb/config/xtensa/linux.mh b/gdb/config/xtensa/linux.mh index b4e59b3..50779d8 100644 --- a/gdb/config/xtensa/linux.mh +++ b/gdb/config/xtensa/linux.mh @@ -2,7 +2,7 @@ NAT_FILE= config/nm-linux.h -NATDEPFILES= inf-ptrace.o fork-child.o xtensa-linux-nat.o \ +NATDEPFILES= inf-ptrace.o ptrace-utils.o fork-child.o xtensa-linux-nat.o \ linux-thread-db.o proc-service.o \ linux-nat.o linux-osdata.o linux-fork.o linux-procfs.o linux-ptrace.o \ linux-waitpid.o linux-personality.o diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in index 6dddf26..f3ef383 100644 --- a/gdb/gdbserver/Makefile.in +++ b/gdb/gdbserver/Makefile.in @@ -179,7 +179,8 @@ SFILES= $(srcdir)/gdbreplay.c $(srcdir)/inferiors.c $(srcdir)/dll.c \ $(srcdir)/common/rsp-low.c $(srcdir)/common/errors.c \ $(srcdir)/common/common-debug.c $(srcdir)/common/cleanups.c \ $(srcdir)/common/common-exceptions.c $(srcdir)/symbol.c \ - $(srcdir)/common/btrace-common.c + $(srcdir)/common/btrace-common.c \ + $(srcdir)/nat/ptrace-utils.c DEPFILES = @GDBSERVER_DEPFILES@ @@ -605,6 +606,9 @@ linux-personality.o: ../nat/linux-personality.c btrace-common.o: ../common/btrace-common.c $(COMPILE) $< $(POSTCOMPILE) +ptrace-utils.o: ../nat/ptrace-utils.c + $(COMPILE) $< + $(POSTCOMPILE) aarch64.c : $(srcdir)/../regformats/aarch64.dat $(regdat_sh) $(SHELL) $(regdat_sh) $(srcdir)/../regformats/aarch64.dat aarch64.c diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv index 98dd0d9..69fe157 100644 --- a/gdb/gdbserver/configure.srv +++ b/gdb/gdbserver/configure.srv @@ -42,7 +42,7 @@ srv_amd64_linux_xmlfiles="i386/amd64-linux.xml i386/amd64-avx-linux.xml i386/amd # Linux object files. This is so we don't have to repeat # these files over and over again. -srv_linux_obj="linux-low.o linux-osdata.o linux-procfs.o linux-ptrace.o linux-waitpid.o linux-personality.o" +srv_linux_obj="linux-low.o linux-osdata.o linux-procfs.o linux-ptrace.o linux-waitpid.o linux-personality.o ptrace-utils.o" # Input is taken from the "${target}" variable. diff --git a/gdb/hppanbsd-nat.c b/gdb/hppanbsd-nat.c index 0c96b49..568de05 100644 --- a/gdb/hppanbsd-nat.c +++ b/gdb/hppanbsd-nat.c @@ -27,6 +27,7 @@ #include "hppa-tdep.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" #include "nbsd-nat.h" @@ -169,7 +170,7 @@ hppanbsd_fetch_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); hppanbsd_supply_gregset (regcache, ®s); } @@ -180,7 +181,7 @@ hppanbsd_fetch_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); hppanbsd_supply_fpregset (regcache, &fpregs); } @@ -199,13 +200,13 @@ hppanbsd_store_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); hppanbsd_collect_gregset (regcache, ®s, regnum); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } if (regnum == -1 || hppanbsd_fpregset_supplies_p (regnum)) @@ -214,13 +215,13 @@ hppanbsd_store_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); hppanbsd_collect_fpregset (regcache, &fpregs, regnum); if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); } } diff --git a/gdb/hppaobsd-nat.c b/gdb/hppaobsd-nat.c index fe49b99..5728b6c 100644 --- a/gdb/hppaobsd-nat.c +++ b/gdb/hppaobsd-nat.c @@ -28,6 +28,7 @@ #include "hppa-tdep.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" #include "obsd-nat.h" @@ -195,7 +196,7 @@ hppaobsd_fetch_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); hppaobsd_supply_gregset (regcache, ®s); } @@ -206,7 +207,7 @@ hppaobsd_fetch_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); hppaobsd_supply_fpregset (regcache, &fpregs); } @@ -225,13 +226,13 @@ hppaobsd_store_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); hppaobsd_collect_gregset (regcache, ®s, regnum); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } if (regnum == -1 || hppaobsd_fpregset_supplies_p (regnum)) @@ -240,13 +241,13 @@ hppaobsd_store_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); hppaobsd_collect_fpregset (regcache, &fpregs, regnum); if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); } } diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c index 8cb8c66..1a0dfc0 100644 --- a/gdb/i386-linux-nat.c +++ b/gdb/i386-linux-nat.c @@ -34,6 +34,7 @@ #include "x86-xstate.h" #include "x86-linux-nat.h" +#include "nat/ptrace-utils.h" /* The register sets used in GNU/Linux ELF core-dumps are identical to the register sets in `struct user' that is used for a.out @@ -212,7 +213,7 @@ fetch_regs (struct regcache *regcache, int tid) return; } - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); } supply_gregset (regcache, (const elf_gregset_t *) regs_p); @@ -227,12 +228,12 @@ store_regs (const struct regcache *regcache, int tid, int regno) elf_gregset_t regs; if (ptrace (PTRACE_GETREGS, tid, 0, (int) ®s) < 0) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); fill_gregset (regcache, ®s, regno); if (ptrace (PTRACE_SETREGS, tid, 0, (int) ®s) < 0) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } #else @@ -276,7 +277,7 @@ fetch_fpregs (struct regcache *regcache, int tid) elf_fpregset_t fpregs; if (ptrace (PTRACE_GETFPREGS, tid, 0, (int) &fpregs) < 0) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); supply_fpregset (regcache, (const elf_fpregset_t *) &fpregs); } @@ -290,12 +291,12 @@ store_fpregs (const struct regcache *regcache, int tid, int regno) elf_fpregset_t fpregs; if (ptrace (PTRACE_GETFPREGS, tid, 0, (int) &fpregs) < 0) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); fill_fpregset (regcache, &fpregs, regno); if (ptrace (PTRACE_SETFPREGS, tid, 0, (int) &fpregs) < 0) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); } #else @@ -332,7 +333,7 @@ fetch_xstateregs (struct regcache *regcache, int tid) iov.iov_len = sizeof(xstateregs); if (ptrace (PTRACE_GETREGSET, tid, (unsigned int) NT_X86_XSTATE, &iov) < 0) - perror_with_name (_("Couldn't read extended state status")); + throw_ptrace_error (_("Couldn't read extended state status")); i387_supply_xsave (regcache, -1, xstateregs); return 1; @@ -355,13 +356,13 @@ store_xstateregs (const struct regcache *regcache, int tid, int regno) iov.iov_len = sizeof(xstateregs); if (ptrace (PTRACE_GETREGSET, tid, (unsigned int) NT_X86_XSTATE, &iov) < 0) - perror_with_name (_("Couldn't read extended state status")); + throw_ptrace_error (_("Couldn't read extended state status")); i387_collect_xsave (regcache, regno, xstateregs, 0); if (ptrace (PTRACE_SETREGSET, tid, (unsigned int) NT_X86_XSTATE, (int) &iov) < 0) - perror_with_name (_("Couldn't write extended state status")); + throw_ptrace_error (_("Couldn't write extended state status")); return 1; } @@ -388,7 +389,7 @@ fetch_fpxregs (struct regcache *regcache, int tid) return 0; } - perror_with_name (_("Couldn't read floating-point and SSE registers")); + throw_ptrace_error (_("Couldn't read floating-point and SSE registers")); } i387_supply_fxsave (regcache, -1, (const elf_fpxregset_t *) &fpxregs); @@ -415,13 +416,13 @@ store_fpxregs (const struct regcache *regcache, int tid, int regno) return 0; } - perror_with_name (_("Couldn't read floating-point and SSE registers")); + throw_ptrace_error (_("Couldn't read floating-point and SSE registers")); } i387_collect_fxsave (regcache, regno, &fpxregs); if (ptrace (PTRACE_SETFPXREGS, tid, 0, &fpxregs) == -1) - perror_with_name (_("Couldn't write floating-point and SSE registers")); + throw_ptrace_error (_("Couldn't write floating-point and SSE registers")); return 1; } @@ -709,7 +710,7 @@ i386_linux_resume (struct target_ops *ops, } if (ptrace (request, pid, 0, gdb_signal_to_host (signal)) == -1) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); } diff --git a/gdb/i386bsd-nat.c b/gdb/i386bsd-nat.c index 16e0707..44b24b0 100644 --- a/gdb/i386bsd-nat.c +++ b/gdb/i386bsd-nat.c @@ -31,6 +31,7 @@ #include "i387-tdep.h" #include "i386bsd-nat.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" /* In older BSD versions we cannot get at some of the segment @@ -136,7 +137,7 @@ i386bsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); i386bsd_supply_gregset (regcache, ®s); if (regnum != -1) @@ -160,14 +161,14 @@ i386bsd_fetch_inferior_registers (struct target_ops *ops, { if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); i387_supply_fsave (regcache, -1, &fpregs); } #else if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); i387_supply_fsave (regcache, -1, &fpregs); #endif @@ -187,13 +188,13 @@ i386bsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); i386bsd_collect_gregset (regcache, ®s, regnum); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); if (regnum != -1) return; @@ -215,7 +216,7 @@ i386bsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_SETXMMREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) xmmregs, 0) == -1) - perror_with_name (_("Couldn't write XMM registers")); + throw_ptrace_error (_("Couldn't write XMM registers")); } else { @@ -223,13 +224,13 @@ i386bsd_store_inferior_registers (struct target_ops *ops, #endif if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); i387_collect_fsave (regcache, regnum, &fpregs); if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); #ifdef HAVE_PT_GETXMMREGS } #endif @@ -268,7 +269,7 @@ i386bsd_dr_get (ptid_t ptid, int regnum) if (ptrace (PT_GETDBREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &dbregs, 0) == -1) - perror_with_name (_("Couldn't read debug registers")); + throw_ptrace_error (_("Couldn't read debug registers")); return DBREG_DRX ((&dbregs), regnum); } @@ -280,7 +281,7 @@ i386bsd_dr_set (int regnum, unsigned int value) if (ptrace (PT_GETDBREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &dbregs, 0) == -1) - perror_with_name (_("Couldn't get debug registers")); + throw_ptrace_error (_("Couldn't get debug registers")); /* For some mysterious reason, some of the reserved bits in the debug control register get set. Mask these off, otherwise the @@ -291,7 +292,7 @@ i386bsd_dr_set (int regnum, unsigned int value) if (ptrace (PT_SETDBREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &dbregs, 0) == -1) - perror_with_name (_("Couldn't write debug registers")); + throw_ptrace_error (_("Couldn't write debug registers")); } void diff --git a/gdb/i386fbsd-nat.c b/gdb/i386fbsd-nat.c index ad439e3..ad37c13 100644 --- a/gdb/i386fbsd-nat.c +++ b/gdb/i386fbsd-nat.c @@ -31,6 +31,7 @@ #include "i386-tdep.h" #include "x86-nat.h" #include "i386bsd-nat.h" +#include "nat/ptrace-utils.h" /* Resume execution of the inferior process. If STEP is nonzero, single-step it. If SIGNAL is nonzero, give it that signal. */ @@ -77,7 +78,7 @@ i386fbsd_resume (struct target_ops *ops, written a new PC value to the child.) */ if (ptrace (request, pid, (caddr_t) 1, gdb_signal_to_host (signal)) == -1) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); } diff --git a/gdb/inf-ptrace.c b/gdb/inf-ptrace.c index cd58dfb..06382d5 100644 --- a/gdb/inf-ptrace.c +++ b/gdb/inf-ptrace.c @@ -29,6 +29,7 @@ #include #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" #include "inf-child.h" #include "gdbthread.h" @@ -52,7 +53,7 @@ inf_ptrace_follow_fork (struct target_ops *ops, int follow_child, infrun.c. */ if (ptrace (PT_DETACH, child_pid, (PTRACE_TYPE_ARG3)1, 0) == -1) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); } return 0; @@ -130,7 +131,7 @@ inf_ptrace_post_startup_inferior (struct target_ops *self, ptid_t pid) pe.pe_set_event |= PTRACE_FORK; if (ptrace (PT_SET_EVENT_MASK, ptid_get_pid (pid), (PTRACE_TYPE_ARG3)&pe, sizeof pe) == -1) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); } #endif @@ -197,7 +198,7 @@ inf_ptrace_attach (struct target_ops *ops, const char *args, int from_tty) errno = 0; ptrace (PT_ATTACH, pid, (PTRACE_TYPE_ARG3)0, 0); if (errno != 0) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); #else error (_("This system does not support attaching to a process")); #endif @@ -226,7 +227,7 @@ inf_ptrace_post_attach (struct target_ops *self, int pid) pe.pe_set_event |= PTRACE_FORK; if (ptrace (PT_SET_EVENT_MASK, pid, (PTRACE_TYPE_ARG3)&pe, sizeof pe) == -1) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); } #endif @@ -260,7 +261,7 @@ inf_ptrace_detach (struct target_ops *ops, const char *args, int from_tty) errno = 0; ptrace (PT_DETACH, pid, (PTRACE_TYPE_ARG3)1, sig); if (errno != 0) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); #else error (_("This system does not support detaching from a process")); #endif @@ -356,7 +357,7 @@ inf_ptrace_resume (struct target_ops *ops, errno = 0; ptrace (request, pid, (PTRACE_TYPE_ARG3)1, gdb_signal_to_host (signal)); if (errno != 0) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); } /* Wait for the child specified by PTID to do something. Return the @@ -409,7 +410,7 @@ inf_ptrace_wait (struct target_ops *ops, if (ptrace (PT_GET_PROCESS_STATE, pid, (PTRACE_TYPE_ARG3)&pe, sizeof pe) == -1) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); switch (pe.pe_report_event) { @@ -420,11 +421,11 @@ inf_ptrace_wait (struct target_ops *ops, /* Make sure the other end of the fork is stopped too. */ fpid = waitpid (pe.pe_other_pid, &status, 0); if (fpid == -1) - perror_with_name (("waitpid")); + throw_ptrace_error (("waitpid")); if (ptrace (PT_GET_PROCESS_STATE, fpid, (PTRACE_TYPE_ARG3)&pe, sizeof pe) == -1) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); gdb_assert (pe.pe_report_event == PTRACE_FORK); gdb_assert (pe.pe_other_pid == pid); diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 627280e..20fe533 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -40,6 +40,7 @@ #include "regset.h" #include "inf-child.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" #include "auxv.h" #include /* for elf_gregset etc. */ #include "elf-bfd.h" /* for elfcore_write_* */ @@ -425,7 +426,7 @@ linux_child_follow_fork (struct target_ops *ops, int follow_child, { linux_disable_event_reporting (child_pid); if (ptrace (PTRACE_SINGLESTEP, child_pid, 0, 0) < 0) - perror_with_name (_("Couldn't do single step")); + throw_ptrace_error (_("Couldn't do single step")); if (my_waitpid (child_pid, &status, 0) < 0) perror_with_name (_("Couldn't wait vfork process")); } diff --git a/gdb/m32r-linux-nat.c b/gdb/m32r-linux-nat.c index e5e867b..3ece241 100644 --- a/gdb/m32r-linux-nat.c +++ b/gdb/m32r-linux-nat.c @@ -22,6 +22,7 @@ #include "gdbcore.h" #include "regcache.h" #include "linux-nat.h" +#include "nat/ptrace-utils.h" #include "target.h" #include #include @@ -109,7 +110,7 @@ fetch_regs (struct regcache *regcache, int tid) elf_gregset_t regs; if (ptrace (PTRACE_GETREGS, tid, 0, (int) ®s) < 0) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); supply_gregset (regcache, (const elf_gregset_t *) ®s); } @@ -158,12 +159,12 @@ store_regs (const struct regcache *regcache, int tid, int regno) elf_gregset_t regs; if (ptrace (PTRACE_GETREGS, tid, 0, (int) ®s) < 0) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); fill_gregset (regcache, ®s, regno); if (ptrace (PTRACE_SETREGS, tid, 0, (int) ®s) < 0) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } diff --git a/gdb/m68kbsd-nat.c b/gdb/m68kbsd-nat.c index 0b7ea21..2126dfd 100644 --- a/gdb/m68kbsd-nat.c +++ b/gdb/m68kbsd-nat.c @@ -28,6 +28,7 @@ #include "m68k-tdep.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" static int m68kbsd_gregset_supplies_p (int regnum) @@ -117,7 +118,7 @@ m68kbsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); m68kbsd_supply_gregset (regcache, ®s); } @@ -128,7 +129,7 @@ m68kbsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); m68kbsd_supply_fpregset (regcache, &fpregs); } @@ -147,13 +148,13 @@ m68kbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); m68kbsd_collect_gregset (regcache, ®s, regnum); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } if (regnum == -1 || m68kbsd_fpregset_supplies_p (regnum)) @@ -162,13 +163,13 @@ m68kbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); m68kbsd_collect_fpregset (regcache, &fpregs, regnum); if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); } } diff --git a/gdb/m68klinux-nat.c b/gdb/m68klinux-nat.c index 8f89d7b..ee95ffd 100644 --- a/gdb/m68klinux-nat.c +++ b/gdb/m68klinux-nat.c @@ -265,7 +265,7 @@ fetch_regs (struct regcache *regcache, int tid) return; } - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); } supply_gregset (regcache, (const elf_gregset_t *) ®s); @@ -280,12 +280,12 @@ store_regs (const struct regcache *regcache, int tid, int regno) elf_gregset_t regs; if (ptrace (PTRACE_GETREGS, tid, 0, (int) ®s) < 0) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); fill_gregset (regcache, ®s, regno); if (ptrace (PTRACE_SETREGS, tid, 0, (int) ®s) < 0) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } #else @@ -362,7 +362,7 @@ fetch_fpregs (struct regcache *regcache, int tid) elf_fpregset_t fpregs; if (ptrace (PTRACE_GETFPREGS, tid, 0, (int) &fpregs) < 0) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); supply_fpregset (regcache, (const elf_fpregset_t *) &fpregs); } @@ -376,12 +376,12 @@ store_fpregs (const struct regcache *regcache, int tid, int regno) elf_fpregset_t fpregs; if (ptrace (PTRACE_GETFPREGS, tid, 0, (int) &fpregs) < 0) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); fill_fpregset (regcache, &fpregs, regno); if (ptrace (PTRACE_SETFPREGS, tid, 0, (int) &fpregs) < 0) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); } #else diff --git a/gdb/m88kbsd-nat.c b/gdb/m88kbsd-nat.c index 22c2a77..85ce83c 100644 --- a/gdb/m88kbsd-nat.c +++ b/gdb/m88kbsd-nat.c @@ -28,6 +28,7 @@ #include "m88k-tdep.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" /* Supply the general-purpose registers stored in GREGS to REGCACHE. */ @@ -70,7 +71,7 @@ m88kbsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); m88kbsd_supply_gregset (regcache, ®s); } @@ -86,13 +87,13 @@ m88kbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); m88kbsd_collect_gregset (regcache, ®s, regnum); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c index a36bb63..74b2f98 100644 --- a/gdb/mips-linux-nat.c +++ b/gdb/mips-linux-nat.c @@ -36,6 +36,7 @@ #include #include "nat/mips-linux-watch.h" +#include "nat/ptrace-utils.h" #include "features/mips-linux.c" #include "features/mips-dsp-linux.c" @@ -259,7 +260,7 @@ mips64_linux_regsets_fetch_registers (struct target_ops *ops, have_ptrace_regsets = 0; return; } - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); } mips64_supply_gregset (regcache, @@ -278,7 +279,7 @@ mips64_linux_regsets_fetch_registers (struct target_ops *ops, have_ptrace_regsets = 0; return; } - perror_with_name (_("Couldn't get FP registers")); + throw_ptrace_error (_("Couldn't get FP registers")); } mips64_supply_fpregset (regcache, @@ -341,12 +342,12 @@ mips64_linux_regsets_store_registers (struct target_ops *ops, mips64_elf_gregset_t regs; if (ptrace (PTRACE_GETREGS, tid, 0L, (PTRACE_TYPE_ARG3) ®s) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); mips64_fill_gregset (regcache, ®s, regno); if (ptrace (PTRACE_SETREGS, tid, 0L, (PTRACE_TYPE_ARG3) ®s) == -1) - perror_with_name (_("Couldn't set registers")); + throw_ptrace_error (_("Couldn't set registers")); } if (regno == -1 || is_fp) @@ -355,13 +356,13 @@ mips64_linux_regsets_store_registers (struct target_ops *ops, if (ptrace (PTRACE_GETFPREGS, tid, 0L, (PTRACE_TYPE_ARG3) &fp_regs) == -1) - perror_with_name (_("Couldn't get FP registers")); + throw_ptrace_error (_("Couldn't get FP registers")); mips64_fill_fpregset (regcache, &fp_regs, regno); if (ptrace (PTRACE_SETFPREGS, tid, 0L, (PTRACE_TYPE_ARG3) &fp_regs) == -1) - perror_with_name (_("Couldn't set FP registers")); + throw_ptrace_error (_("Couldn't set FP registers")); } if (is_dsp) @@ -446,7 +447,7 @@ mips_linux_read_description (struct target_ops *ops) have_dsp = 0; break; default: - perror_with_name (_("Couldn't check DSP support")); + throw_ptrace_error (_("Couldn't check DSP support")); break; } } @@ -615,7 +616,7 @@ write_watchpoint_regs (void) { tid = ptid_get_lwp (lp->ptid); if (ptrace (PTRACE_SET_WATCH_REGS, tid, &watch_mirror) == -1) - perror_with_name (_("Couldn't write debug register")); + throw_ptrace_error (_("Couldn't write debug register")); } return 0; } @@ -635,7 +636,7 @@ mips_linux_new_thread (struct lwp_info *lp) tid = ptid_get_lwp (lp->ptid); if (ptrace (PTRACE_SET_WATCH_REGS, tid, &watch_mirror) == -1) - perror_with_name (_("Couldn't write debug register")); + throw_ptrace_error (_("Couldn't write debug register")); } /* Target to_insert_watchpoint implementation. Try to insert a new diff --git a/gdb/mips64obsd-nat.c b/gdb/mips64obsd-nat.c index 56d4fa9..e268edc 100644 --- a/gdb/mips64obsd-nat.c +++ b/gdb/mips64obsd-nat.c @@ -28,6 +28,7 @@ #include "mips-tdep.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" #include "obsd-nat.h" /* Shorthand for some register numbers used below. */ @@ -85,7 +86,7 @@ mips64obsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); mips64obsd_supply_gregset (regcache, ®s); } @@ -101,13 +102,13 @@ mips64obsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); mips64obsd_collect_gregset (regcache, ®s, regnum); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } diff --git a/gdb/mipsnbsd-nat.c b/gdb/mipsnbsd-nat.c index 34dcd87..3ff1e96 100644 --- a/gdb/mipsnbsd-nat.c +++ b/gdb/mipsnbsd-nat.c @@ -29,6 +29,7 @@ #include "mips-tdep.h" #include "mipsnbsd-tdep.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" /* Determine if PT_GETREGS fetches this register. */ static int @@ -49,7 +50,7 @@ mipsnbsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); mipsnbsd_supply_reg (regcache, (char *) ®s, regno); if (regno != -1) @@ -63,7 +64,7 @@ mipsnbsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); mipsnbsd_supply_fpreg (regcache, (char *) &fpregs, regno); } @@ -80,13 +81,13 @@ mipsnbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); mipsnbsd_fill_reg (regcache, (char *) ®s, regno); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); if (regno != -1) return; @@ -99,13 +100,13 @@ mipsnbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); mipsnbsd_fill_fpreg (regcache, (char *) &fpregs, regno); if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); } } diff --git a/gdb/nat/ptrace-utils.c b/gdb/nat/ptrace-utils.c new file mode 100644 index 0000000..a3dc9b5 --- /dev/null +++ b/gdb/nat/ptrace-utils.c @@ -0,0 +1,29 @@ +/* Misc ptrace utils. + + Copyright (C) 2015 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include "common-defs.h" +#include "ptrace-utils.h" + +/* See ptrace-utils.h. */ + +void +throw_ptrace_error (const char *string) +{ + perror_with_name (string); +} diff --git a/gdb/nat/ptrace-utils.h b/gdb/nat/ptrace-utils.h new file mode 100644 index 0000000..886d156 --- /dev/null +++ b/gdb/nat/ptrace-utils.h @@ -0,0 +1,28 @@ +/* ptrace utilities. + + Copyright (C) 2015 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef PTRACE_UTILS_H +#define PTRACE_UTILS_H + +/* Translates an error out of a ptrace call to a GDB exception. */ + +extern void throw_ptrace_error (const char *string) + ATTRIBUTE_NORETURN; + +#endif diff --git a/gdb/obsd-nat.c b/gdb/obsd-nat.c index 72ed10c..2208d3b 100644 --- a/gdb/obsd-nat.c +++ b/gdb/obsd-nat.c @@ -28,6 +28,7 @@ #include "inf-child.h" #include "obsd-nat.h" +#include "nat/ptrace-utils.h" /* OpenBSD 5.2 and later include rthreads which uses a thread model that maps userland threads directly onto kernel threads in a 1:1 @@ -58,7 +59,7 @@ obsd_update_thread_list (struct target_ops *ops) prune_threads (); if (ptrace (PT_GET_THREAD_FIRST, pid, (caddr_t)&pts, sizeof pts) == -1) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); while (pts.pts_tid != -1) { @@ -73,7 +74,7 @@ obsd_update_thread_list (struct target_ops *ops) } if (ptrace (PT_GET_THREAD_NEXT, pid, (caddr_t)&pts, sizeof pts) == -1) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); } } @@ -123,7 +124,7 @@ obsd_wait (struct target_ops *ops, pid_t fpid; if (ptrace (PT_GET_PROCESS_STATE, pid, (caddr_t)&pe, sizeof pe) == -1) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); switch (pe.pe_report_event) { @@ -138,7 +139,7 @@ obsd_wait (struct target_ops *ops, if (ptrace (PT_GET_PROCESS_STATE, fpid, (caddr_t)&pe, sizeof pe) == -1) - perror_with_name (("ptrace")); + throw_ptrace_error (("ptrace")); gdb_assert (pe.pe_report_event == PTRACE_FORK); gdb_assert (pe.pe_other_pid == pid); diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c index 88ca49e..779a84a 100644 --- a/gdb/ppc-linux-nat.c +++ b/gdb/ppc-linux-nat.c @@ -47,6 +47,7 @@ #include "auxv.h" #include "nat/ppc-linux.h" +#include "nat/ptrace-utils.h" /* Similarly for the hardware watchpoint support. These requests are used when the PowerPC HWDEBUG ptrace interface is not available. */ @@ -372,7 +373,7 @@ fetch_vsx_register (struct regcache *regcache, int tid, int regno) have_ptrace_getsetvsxregs = 0; return; } - perror_with_name (_("Unable to fetch VSX register")); + throw_ptrace_error (_("Unable to fetch VSX register")); } regcache_raw_supply (regcache, regno, @@ -401,7 +402,7 @@ fetch_altivec_register (struct regcache *regcache, int tid, int regno) have_ptrace_getvrregs = 0; return; } - perror_with_name (_("Unable to fetch AltiVec register")); + throw_ptrace_error (_("Unable to fetch AltiVec register")); } /* VSCR is fetched as a 16 bytes quantity, but it is really 4 bytes @@ -439,7 +440,7 @@ get_spe_registers (int tid, struct gdb_evrregset_t *evrregset) have_ptrace_getsetevrregs = 0; else /* Anything else needs to be reported. */ - perror_with_name (_("Unable to fetch SPE registers")); + throw_ptrace_error (_("Unable to fetch SPE registers")); } } @@ -553,7 +554,7 @@ fetch_register (struct regcache *regcache, int tid, int regno) char message[128]; xsnprintf (message, sizeof (message), "reading register %s (#%d)", gdbarch_register_name (gdbarch, regno), regno); - perror_with_name (message); + throw_ptrace_error (message); } memcpy (&buf[bytes_transferred], &l, sizeof (l)); } @@ -634,7 +635,7 @@ fetch_vsx_registers (struct regcache *regcache, int tid) have_ptrace_getsetvsxregs = 0; return; } - perror_with_name (_("Unable to fetch VSX registers")); + throw_ptrace_error (_("Unable to fetch VSX registers")); } supply_vsxregset (regcache, ®s); } @@ -653,7 +654,7 @@ fetch_altivec_registers (struct regcache *regcache, int tid) have_ptrace_getvrregs = 0; return; } - perror_with_name (_("Unable to fetch AltiVec registers")); + throw_ptrace_error (_("Unable to fetch AltiVec registers")); } supply_vrregset (regcache, ®s); } @@ -664,7 +665,7 @@ fetch_altivec_registers (struct regcache *regcache, int tid) If the ptrace request does not exist, this function returns 0 and properly sets the have_ptrace_* flag. If the request fails, - this function calls perror_with_name. Otherwise, if the request + this function calls throw_ptrace_error. Otherwise, if the request succeeds, then the regcache gets filled and 1 is returned. */ static int fetch_all_gp_regs (struct regcache *regcache, int tid) @@ -680,7 +681,7 @@ fetch_all_gp_regs (struct regcache *regcache, int tid) have_ptrace_getsetregs = 0; return 0; } - perror_with_name (_("Couldn't get general-purpose registers.")); + throw_ptrace_error (_("Couldn't get general-purpose registers.")); } supply_gregset (regcache, (const gdb_gregset_t *) &gregset); @@ -718,7 +719,7 @@ fetch_gp_regs (struct regcache *regcache, int tid) If the ptrace request does not exist, this function returns 0 and properly sets the have_ptrace_* flag. If the request fails, - this function calls perror_with_name. Otherwise, if the request + this function calls throw_ptrace_error. Otherwise, if the request succeeds, then the regcache gets filled and 1 is returned. */ static int fetch_all_fp_regs (struct regcache *regcache, int tid) @@ -732,7 +733,7 @@ fetch_all_fp_regs (struct regcache *regcache, int tid) have_ptrace_getsetfpregs = 0; return 0; } - perror_with_name (_("Couldn't get floating-point registers.")); + throw_ptrace_error (_("Couldn't get floating-point registers.")); } supply_fpregset (regcache, (const gdb_fpregset_t *) &fpregs); @@ -842,7 +843,7 @@ store_vsx_register (const struct regcache *regcache, int tid, int regno) have_ptrace_getsetvsxregs = 0; return; } - perror_with_name (_("Unable to fetch VSX register")); + throw_ptrace_error (_("Unable to fetch VSX register")); } regcache_raw_collect (regcache, regno, regs + @@ -850,7 +851,7 @@ store_vsx_register (const struct regcache *regcache, int tid, int regno) ret = ptrace (PTRACE_SETVSXREGS, tid, 0, ®s); if (ret < 0) - perror_with_name (_("Unable to store VSX register")); + throw_ptrace_error (_("Unable to store VSX register")); } /* Store one register. */ @@ -872,7 +873,7 @@ store_altivec_register (const struct regcache *regcache, int tid, int regno) have_ptrace_getvrregs = 0; return; } - perror_with_name (_("Unable to fetch AltiVec register")); + throw_ptrace_error (_("Unable to fetch AltiVec register")); } /* VSCR is fetched as a 16 bytes quantity, but it is really 4 bytes @@ -886,7 +887,7 @@ store_altivec_register (const struct regcache *regcache, int tid, int regno) ret = ptrace (PTRACE_SETVRREGS, tid, 0, ®s); if (ret < 0) - perror_with_name (_("Unable to store AltiVec register")); + throw_ptrace_error (_("Unable to store AltiVec register")); } /* Assuming TID referrs to an SPE process, set the top halves of TID's @@ -913,7 +914,7 @@ set_spe_registers (int tid, struct gdb_evrregset_t *evrregset) have_ptrace_getsetevrregs = 0; else /* Anything else needs to be reported. */ - perror_with_name (_("Unable to set SPE registers")); + throw_ptrace_error (_("Unable to set SPE registers")); } } } @@ -1047,7 +1048,7 @@ store_register (const struct regcache *regcache, int tid, int regno) char message[128]; xsnprintf (message, sizeof (message), "writing register %s (#%d)", gdbarch_register_name (gdbarch, regno), regno); - perror_with_name (message); + throw_ptrace_error (message); } } } @@ -1102,13 +1103,13 @@ store_vsx_registers (const struct regcache *regcache, int tid) have_ptrace_getsetvsxregs = 0; return; } - perror_with_name (_("Couldn't get VSX registers")); + throw_ptrace_error (_("Couldn't get VSX registers")); } fill_vsxregset (regcache, ®s); if (ptrace (PTRACE_SETVSXREGS, tid, 0, ®s) < 0) - perror_with_name (_("Couldn't write VSX registers")); + throw_ptrace_error (_("Couldn't write VSX registers")); } static void @@ -1125,13 +1126,13 @@ store_altivec_registers (const struct regcache *regcache, int tid) have_ptrace_getvrregs = 0; return; } - perror_with_name (_("Couldn't get AltiVec registers")); + throw_ptrace_error (_("Couldn't get AltiVec registers")); } fill_vrregset (regcache, ®s); if (ptrace (PTRACE_SETVRREGS, tid, 0, ®s) < 0) - perror_with_name (_("Couldn't write AltiVec registers")); + throw_ptrace_error (_("Couldn't write AltiVec registers")); } /* This function actually issues the request to ptrace, telling @@ -1140,7 +1141,7 @@ store_altivec_registers (const struct regcache *regcache, int tid) If the ptrace request does not exist, this function returns 0 and properly sets the have_ptrace_* flag. If the request fails, - this function calls perror_with_name. Otherwise, if the request + this function calls throw_ptrace_error. Otherwise, if the request succeeds, then the regcache is stored and 1 is returned. */ static int store_all_gp_regs (const struct regcache *regcache, int tid, int regno) @@ -1156,7 +1157,7 @@ store_all_gp_regs (const struct regcache *regcache, int tid, int regno) have_ptrace_getsetregs = 0; return 0; } - perror_with_name (_("Couldn't get general-purpose registers.")); + throw_ptrace_error (_("Couldn't get general-purpose registers.")); } fill_gregset (regcache, &gregset, regno); @@ -1168,7 +1169,7 @@ store_all_gp_regs (const struct regcache *regcache, int tid, int regno) have_ptrace_getsetregs = 0; return 0; } - perror_with_name (_("Couldn't set general-purpose registers.")); + throw_ptrace_error (_("Couldn't set general-purpose registers.")); } return 1; @@ -1204,7 +1205,7 @@ store_gp_regs (const struct regcache *regcache, int tid, int regno) If the ptrace request does not exist, this function returns 0 and properly sets the have_ptrace_* flag. If the request fails, - this function calls perror_with_name. Otherwise, if the request + this function calls throw_ptrace_error. Otherwise, if the request succeeds, then the regcache is stored and 1 is returned. */ static int store_all_fp_regs (const struct regcache *regcache, int tid, int regno) @@ -1218,7 +1219,7 @@ store_all_fp_regs (const struct regcache *regcache, int tid, int regno) have_ptrace_getsetfpregs = 0; return 0; } - perror_with_name (_("Couldn't get floating-point registers.")); + throw_ptrace_error (_("Couldn't get floating-point registers.")); } fill_fpregset (regcache, &fpregs, regno); @@ -1230,7 +1231,7 @@ store_all_fp_regs (const struct regcache *regcache, int tid, int regno) have_ptrace_getsetfpregs = 0; return 0; } - perror_with_name (_("Couldn't set floating-point registers.")); + throw_ptrace_error (_("Couldn't set floating-point registers.")); } return 1; @@ -1559,7 +1560,7 @@ hwdebug_insert_point (struct ppc_hw_breakpoint *b, int tid) errno = 0; slot = ptrace (PPC_PTRACE_SETHWDEBUG, tid, 0, p); if (slot < 0) - perror_with_name (_("Unexpected error setting breakpoint or watchpoint")); + throw_ptrace_error (_("Unexpected error setting breakpoint or watchpoint")); /* Everything went fine, so we have to register this *point. */ t = hwdebug_find_thread_points_by_tid (tid, 1); @@ -1606,7 +1607,7 @@ hwdebug_remove_point (struct ppc_hw_breakpoint *b, int tid) errno = 0; if (ptrace (PPC_PTRACE_DELHWDEBUG, tid, 0, hw_breaks[i].slot) < 0) if (errno != ENOENT) - perror_with_name (_("Unexpected error deleting " + throw_ptrace_error (_("Unexpected error deleting " "breakpoint or watchpoint")); xfree (hw_breaks[i].hw_break); @@ -2419,7 +2420,7 @@ ppc_linux_read_description (struct target_ops *ops) /* EIO means that the PTRACE_GETEVRREGS request isn't supported. Anything else needs to be reported. */ else if (errno != EIO) - perror_with_name (_("Unable to fetch SPE registers")); + throw_ptrace_error (_("Unable to fetch SPE registers")); } if (have_ptrace_getsetvsxregs) @@ -2432,7 +2433,7 @@ ppc_linux_read_description (struct target_ops *ops) /* EIO means that the PTRACE_GETVSXREGS request isn't supported. Anything else needs to be reported. */ else if (errno != EIO) - perror_with_name (_("Unable to fetch VSX registers")); + throw_ptrace_error (_("Unable to fetch VSX registers")); } if (have_ptrace_getvrregs) @@ -2445,7 +2446,7 @@ ppc_linux_read_description (struct target_ops *ops) /* EIO means that the PTRACE_GETVRREGS request isn't supported. Anything else needs to be reported. */ else if (errno != EIO) - perror_with_name (_("Unable to fetch AltiVec registers")); + throw_ptrace_error (_("Unable to fetch AltiVec registers")); } /* Power ISA 2.05 (implemented by Power 6 and newer processors) increases diff --git a/gdb/ppcfbsd-nat.c b/gdb/ppcfbsd-nat.c index 778b4bb..544fe7a 100644 --- a/gdb/ppcfbsd-nat.c +++ b/gdb/ppcfbsd-nat.c @@ -35,6 +35,7 @@ #include "ppc-tdep.h" #include "ppcfbsd-tdep.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" #include "bsd-kvm.h" /* Fill GDB's register array with the general-purpose register values @@ -123,7 +124,7 @@ ppcfbsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); supply_gregset (regcache, ®s); @@ -134,7 +135,7 @@ ppcfbsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get FP registers")); + throw_ptrace_error (_("Couldn't get FP registers")); ppc_supply_fpregset (fpregset, regcache, regno, &fpregs, sizeof fpregs); } @@ -151,13 +152,13 @@ ppcfbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); fill_gregset (regcache, ®s, regno); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); if (regno == -1 || getfpregs_supplies (get_regcache_arch (regcache), regno)) { @@ -165,13 +166,13 @@ ppcfbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get FP registers")); + throw_ptrace_error (_("Couldn't get FP registers")); fill_fpregset (regcache, &fpregs, regno); if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't set FP registers")); + throw_ptrace_error (_("Couldn't set FP registers")); } } diff --git a/gdb/ppcnbsd-nat.c b/gdb/ppcnbsd-nat.c index 59195c0..bc7e852 100644 --- a/gdb/ppcnbsd-nat.c +++ b/gdb/ppcnbsd-nat.c @@ -35,6 +35,7 @@ #include "ppcnbsd-tdep.h" #include "bsd-kvm.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" /* Returns true if PT_GETREGS fetches this register. */ @@ -88,7 +89,7 @@ ppcnbsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); ppc_supply_gregset (&ppcnbsd_gregset, regcache, regnum, ®s, sizeof regs); @@ -100,7 +101,7 @@ ppcnbsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get FP registers")); + throw_ptrace_error (_("Couldn't get FP registers")); ppc_supply_fpregset (&ppcnbsd_fpregset, regcache, regnum, &fpregs, sizeof fpregs); @@ -119,14 +120,14 @@ ppcnbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); ppc_collect_gregset (&ppcnbsd_gregset, regcache, regnum, ®s, sizeof regs); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } if (regnum == -1 || getfpregs_supplies (gdbarch, regnum)) @@ -135,14 +136,14 @@ ppcnbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get FP registers")); + throw_ptrace_error (_("Couldn't get FP registers")); ppc_collect_fpregset (&ppcnbsd_fpregset, regcache, regnum, &fpregs, sizeof fpregs); if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't set FP registers")); + throw_ptrace_error (_("Couldn't set FP registers")); } } diff --git a/gdb/ppcobsd-nat.c b/gdb/ppcobsd-nat.c index eef7305..b1f3654 100644 --- a/gdb/ppcobsd-nat.c +++ b/gdb/ppcobsd-nat.c @@ -32,6 +32,7 @@ #include "ppc-tdep.h" #include "ppcobsd-tdep.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" #include "obsd-nat.h" #include "bsd-kvm.h" @@ -78,7 +79,7 @@ ppcobsd_fetch_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); ppc_supply_gregset (&ppcobsd_gregset, regcache, -1, ®s, sizeof regs); @@ -95,7 +96,7 @@ ppcobsd_fetch_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); ppc_supply_fpregset (&ppcobsd_fpregset, regcache, -1, &fpregs, sizeof fpregs); @@ -114,7 +115,7 @@ ppcobsd_store_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); ppc_collect_gregset (&ppcobsd_gregset, regcache, regnum, ®s, sizeof regs); @@ -125,7 +126,7 @@ ppcobsd_store_registers (struct target_ops *ops, if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); #ifdef PT_GETFPREGS if (regnum == -1 @@ -135,14 +136,14 @@ ppcobsd_store_registers (struct target_ops *ops, if (ptrace (PT_GETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); ppc_collect_fpregset (&ppcobsd_fpregset, regcache, regnum, &fpregs, sizeof fpregs); if (ptrace (PT_SETFPREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); } #endif } diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c index 8cdd86f..3c48a73 100644 --- a/gdb/rs6000-nat.c +++ b/gdb/rs6000-nat.c @@ -30,6 +30,7 @@ #include "arch-utils.h" #include "inf-child.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" #include "ppc-tdep.h" #include "rs6000-tdep.h" #include "rs6000-aix-tdep.h" @@ -608,7 +609,7 @@ rs6000_ptrace_ldinfo (ptid_t ptid) break; /* Success, we got the entire ld_info data. */ if (errno != ENOMEM) - perror_with_name (_("ptrace ldinfo")); + throw_ptrace_error (_("ptrace ldinfo")); /* ldi is not big enough. Double it and try again. */ ldi_size *= 2; diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c index 367b610..4837738 100644 --- a/gdb/s390-linux-nat.c +++ b/gdb/s390-linux-nat.c @@ -213,7 +213,7 @@ fetch_regs (struct regcache *regcache, int tid) parea.process_addr = (addr_t) ®s; parea.kernel_addr = offsetof (struct user_regs_struct, psw); if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea) < 0) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); supply_gregset (regcache, (const gregset_t *) ®s); } @@ -230,12 +230,12 @@ store_regs (const struct regcache *regcache, int tid, int regnum) parea.process_addr = (addr_t) ®s; parea.kernel_addr = offsetof (struct user_regs_struct, psw); if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea) < 0) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); fill_gregset (regcache, ®s, regnum); if (ptrace (PTRACE_POKEUSR_AREA, tid, (long) &parea) < 0) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } /* Fetch all floating-point registers from process/thread TID and store @@ -250,7 +250,7 @@ fetch_fpregs (struct regcache *regcache, int tid) parea.process_addr = (addr_t) &fpregs; parea.kernel_addr = offsetof (struct user_regs_struct, fp_regs); if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea) < 0) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); supply_fpregset (regcache, (const fpregset_t *) &fpregs); } @@ -267,12 +267,12 @@ store_fpregs (const struct regcache *regcache, int tid, int regnum) parea.process_addr = (addr_t) &fpregs; parea.kernel_addr = offsetof (struct user_regs_struct, fp_regs); if (ptrace (PTRACE_PEEKUSR_AREA, tid, (long) &parea) < 0) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); fill_fpregset (regcache, &fpregs, regnum); if (ptrace (PTRACE_POKEUSR_AREA, tid, (long) &parea) < 0) - perror_with_name (_("Couldn't write floating point status")); + throw_ptrace_error (_("Couldn't write floating point status")); } /* Fetch all registers in the kernel's register set whose number is @@ -294,7 +294,7 @@ fetch_regset (struct regcache *regcache, int tid, if (errno == ENODATA) regcache_supply_regset (regset, regcache, -1, NULL, regsize); else - perror_with_name (_("Couldn't get register set")); + throw_ptrace_error (_("Couldn't get register set")); } else regcache_supply_regset (regset, regcache, -1, buf, regsize); @@ -314,12 +314,12 @@ store_regset (struct regcache *regcache, int tid, iov.iov_len = regsize; if (ptrace (PTRACE_GETREGSET, tid, (long) regset_id, (long) &iov) < 0) - perror_with_name (_("Couldn't get register set")); + throw_ptrace_error (_("Couldn't get register set")); regcache_collect_regset (regset, regcache, -1, buf, regsize); if (ptrace (PTRACE_SETREGSET, tid, (long) regset_id, (long) &iov) < 0) - perror_with_name (_("Couldn't set register set")); + throw_ptrace_error (_("Couldn't set register set")); } /* Check whether the kernel provides a register set with number REGSET @@ -449,7 +449,7 @@ s390_stopped_by_watchpoint (struct target_ops *ops) parea.process_addr = (addr_t) & per_lowcore; parea.kernel_addr = offsetof (struct user_regs_struct, per_info.lowcore); if (ptrace (PTRACE_PEEKUSR_AREA, s390_inferior_tid (), &parea) < 0) - perror_with_name (_("Couldn't retrieve watchpoint status")); + throw_ptrace_error (_("Couldn't retrieve watchpoint status")); result = (per_lowcore.perc_storage_alteration == 1 && per_lowcore.perc_store_real_address == 0); @@ -459,7 +459,7 @@ s390_stopped_by_watchpoint (struct target_ops *ops) /* Do not report this watchpoint again. */ memset (&per_lowcore, 0, sizeof (per_lowcore)); if (ptrace (PTRACE_POKEUSR_AREA, s390_inferior_tid (), &parea) < 0) - perror_with_name (_("Couldn't clear watchpoint status")); + throw_ptrace_error (_("Couldn't clear watchpoint status")); } return result; @@ -490,7 +490,7 @@ s390_fix_watch_points (struct lwp_info *lp) parea.process_addr = (addr_t) & per_info; parea.kernel_addr = offsetof (struct user_regs_struct, per_info); if (ptrace (PTRACE_PEEKUSR_AREA, tid, &parea) < 0) - perror_with_name (_("Couldn't retrieve watchpoint status")); + throw_ptrace_error (_("Couldn't retrieve watchpoint status")); if (watch_base) { @@ -506,7 +506,7 @@ s390_fix_watch_points (struct lwp_info *lp) per_info.ending_addr = watch_hi_addr; if (ptrace (PTRACE_POKEUSR_AREA, tid, &parea) < 0) - perror_with_name (_("Couldn't modify watchpoint status")); + throw_ptrace_error (_("Couldn't modify watchpoint status")); } static int diff --git a/gdb/shnbsd-nat.c b/gdb/shnbsd-nat.c index e0ed5e6..56e5943 100644 --- a/gdb/shnbsd-nat.c +++ b/gdb/shnbsd-nat.c @@ -28,6 +28,7 @@ #include "sh-tdep.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" #include "regcache.h" @@ -51,7 +52,7 @@ shnbsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &inferior_registers, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); sh_corefile_supply_regset (&sh_corefile_gregset, regcache, regno, (char *) &inferior_registers, @@ -72,7 +73,7 @@ shnbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &inferior_registers, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); sh_corefile_collect_regset (&sh_corefile_gregset, regcache, regno, (char *) &inferior_registers, @@ -80,7 +81,7 @@ shnbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) &inferior_registers, 0) == -1) - perror_with_name (_("Couldn't set registers")); + throw_ptrace_error (_("Couldn't set registers")); if (regno != -1) return; diff --git a/gdb/sparc-nat.c b/gdb/sparc-nat.c index f1d82e5..152f6bb 100644 --- a/gdb/sparc-nat.c +++ b/gdb/sparc-nat.c @@ -32,6 +32,7 @@ #include "sparc-tdep.h" #include "sparc-nat.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" /* With some trickery we can use the code in this file for most (if not all) ptrace(2) based SPARC systems, which includes SunOS 4, @@ -170,7 +171,7 @@ sparc_fetch_inferior_registers (struct target_ops *ops, gregset_t regs; if (ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); sparc_supply_gregset (sparc_gregmap, regcache, -1, ®s); if (regnum != -1) @@ -182,7 +183,7 @@ sparc_fetch_inferior_registers (struct target_ops *ops, fpregset_t fpregs; if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating point status")); + throw_ptrace_error (_("Couldn't get floating point status")); sparc_supply_fpregset (sparc_fpregmap, regcache, -1, &fpregs); } @@ -206,12 +207,12 @@ sparc_store_inferior_registers (struct target_ops *ops, gregset_t regs; if (ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); sparc_collect_gregset (sparc_gregmap, regcache, regnum, ®s); if (ptrace (PTRACE_SETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); /* Deal with the stack regs. */ if (regnum == -1 || regnum == SPARC_SP_REGNUM @@ -232,7 +233,7 @@ sparc_store_inferior_registers (struct target_ops *ops, fpregset_t fpregs, saved_fpregs; if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't get floating-point registers")); + throw_ptrace_error (_("Couldn't get floating-point registers")); memcpy (&saved_fpregs, &fpregs, sizeof (fpregs)); sparc_collect_fpregset (sparc_fpregmap, regcache, regnum, &fpregs); @@ -245,7 +246,7 @@ sparc_store_inferior_registers (struct target_ops *ops, { if (ptrace (PTRACE_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) - perror_with_name (_("Couldn't write floating-point registers")); + throw_ptrace_error (_("Couldn't write floating-point registers")); } if (regnum != -1) @@ -291,7 +292,7 @@ sparc_xfer_wcookie (struct target_ops *ops, enum target_object object, if (ptrace (PT_WCOOKIE, pid, (PTRACE_TYPE_ARG3) &wcookie, 0) == -1) { if (errno != EINVAL) - perror_with_name (_("Couldn't get StackGhost cookie")); + throw_ptrace_error (_("Couldn't get StackGhost cookie")); /* Although PT_WCOOKIE is defined on OpenBSD 3.1 and later, the request wasn't implemented until after OpenBSD 3.4. If diff --git a/gdb/spu-linux-nat.c b/gdb/spu-linux-nat.c index b0942a9..cf0f4df 100644 --- a/gdb/spu-linux-nat.c +++ b/gdb/spu-linux-nat.c @@ -24,6 +24,7 @@ #include "inferior.h" #include "inf-child.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" #include "regcache.h" #include "symfile.h" #include "gdb_wait.h" @@ -77,7 +78,7 @@ fetch_ppc_register (int regno) { char mess[128]; xsnprintf (mess, sizeof mess, "reading PPC register #%d", regno); - perror_with_name (_(mess)); + throw_ptrace_error (_(mess)); } return (ULONGEST) (unsigned long) res; diff --git a/gdb/tilegx-linux-nat.c b/gdb/tilegx-linux-nat.c index b8f0c76..68c2391 100644 --- a/gdb/tilegx-linux-nat.c +++ b/gdb/tilegx-linux-nat.c @@ -133,7 +133,7 @@ fetch_inferior_registers (struct target_ops *ops, tid = ptid_get_pid (inferior_ptid); if (ptrace (PTRACE_GETREGS, tid, 0, (PTRACE_TYPE_ARG3) ®s) < 0) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); supply_gregset (regcache, (const elf_gregset_t *)®s); } @@ -153,12 +153,12 @@ store_inferior_registers (struct target_ops *ops, tid = ptid_get_pid (inferior_ptid); if (ptrace (PTRACE_GETREGS, tid, 0, (PTRACE_TYPE_ARG3) ®s) < 0) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); fill_gregset (regcache, ®s, regnum); if (ptrace (PTRACE_SETREGS, tid, 0, (PTRACE_TYPE_ARG3) ®s) < 0) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } diff --git a/gdb/vaxbsd-nat.c b/gdb/vaxbsd-nat.c index 866b958..7caae30 100644 --- a/gdb/vaxbsd-nat.c +++ b/gdb/vaxbsd-nat.c @@ -28,6 +28,7 @@ #include "vax-tdep.h" #include "inf-ptrace.h" +#include "nat/ptrace-utils.h" /* Supply the general-purpose registers stored in GREGS to REGCACHE. */ @@ -70,7 +71,7 @@ vaxbsd_fetch_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); vaxbsd_supply_gregset (regcache, ®s); } @@ -86,13 +87,13 @@ vaxbsd_store_inferior_registers (struct target_ops *ops, if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); vaxbsd_collect_gregset (regcache, ®s, regnum); if (ptrace (PT_SETREGS, ptid_get_pid (inferior_ptid), (PTRACE_TYPE_ARG3) ®s, 0) == -1) - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); } diff --git a/gdb/x86-linux-nat.c b/gdb/x86-linux-nat.c index 26ae0b8..d184e41 100644 --- a/gdb/x86-linux-nat.c +++ b/gdb/x86-linux-nat.c @@ -28,6 +28,7 @@ #include "x86-nat.h" #include "linux-nat.h" +#include "nat/ptrace-utils.h" #ifndef __x86_64__ #include "i386-linux-nat.h" #endif @@ -78,7 +79,7 @@ x86_linux_dr_get (ptid_t ptid, int regnum) value = ptrace (PTRACE_PEEKUSER, tid, u_debugreg_offset (regnum), 0); if (errno != 0) - perror_with_name (_("Couldn't read debug register")); + throw_ptrace_error (_("Couldn't read debug register")); return value; } @@ -96,7 +97,7 @@ x86_linux_dr_set (ptid_t ptid, int regnum, unsigned long value) errno = 0; ptrace (PTRACE_POKEUSER, tid, u_debugreg_offset (regnum), value); if (errno != 0) - perror_with_name (_("Couldn't write debug register")); + throw_ptrace_error (_("Couldn't write debug register")); } /* Return the inferior's debug register REGNUM. */ @@ -323,7 +324,7 @@ x86_linux_read_description (struct target_ops *ops) cs = ptrace (PTRACE_PEEKUSER, tid, offsetof (struct user_regs_struct, cs), 0); if (errno != 0) - perror_with_name (_("Couldn't get CS register")); + throw_ptrace_error (_("Couldn't get CS register")); is_64bit = cs == AMD64_LINUX_USER64_CS; @@ -332,7 +333,7 @@ x86_linux_read_description (struct target_ops *ops) ds = ptrace (PTRACE_PEEKUSER, tid, offsetof (struct user_regs_struct, ds), 0); if (errno != 0) - perror_with_name (_("Couldn't get DS register")); + throw_ptrace_error (_("Couldn't get DS register")); is_x32 = ds == AMD64_LINUX_X32_DS; diff --git a/gdb/xtensa-linux-nat.c b/gdb/xtensa-linux-nat.c index 921bc99..428fe37 100644 --- a/gdb/xtensa-linux-nat.c +++ b/gdb/xtensa-linux-nat.c @@ -189,7 +189,7 @@ fetch_gregs (struct regcache *regcache, int regnum) if (ptrace (PTRACE_GETREGS, tid, 0, (long) ®s) < 0) { - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); return; } @@ -208,7 +208,7 @@ store_gregs (struct regcache *regcache, int regnum) if (ptrace (PTRACE_GETREGS, tid, 0, (long) ®s) < 0) { - perror_with_name (_("Couldn't get registers")); + throw_ptrace_error (_("Couldn't get registers")); return; } @@ -216,7 +216,7 @@ store_gregs (struct regcache *regcache, int regnum) if (ptrace (PTRACE_SETREGS, tid, 0, (long) ®s) < 0) { - perror_with_name (_("Couldn't write registers")); + throw_ptrace_error (_("Couldn't write registers")); return; } } @@ -235,7 +235,7 @@ fetch_xtregs (struct regcache *regcache, int regnum) char xtregs [XTENSA_ELF_XTREG_SIZE]; if (ptrace (PTRACE_GETXTREGS, tid, 0, (long)&xtregs) < 0) - perror_with_name (_("Couldn't get extended registers")); + throw_ptrace_error (_("Couldn't get extended registers")); for (ptr = xtensa_regmap_table; ptr->name; ptr++) if (regnum == ptr->gdb_regnum || regnum == -1) @@ -251,7 +251,7 @@ store_xtregs (struct regcache *regcache, int regnum) char xtregs [XTENSA_ELF_XTREG_SIZE]; if (ptrace (PTRACE_GETXTREGS, tid, 0, (long)&xtregs) < 0) - perror_with_name (_("Couldn't get extended registers")); + throw_ptrace_error (_("Couldn't get extended registers")); for (ptr = xtensa_regmap_table; ptr->name; ptr++) if (regnum == ptr->gdb_regnum || regnum == -1) @@ -259,7 +259,7 @@ store_xtregs (struct regcache *regcache, int regnum) xtregs + ptr->ptrace_offset); if (ptrace (PTRACE_SETXTREGS, tid, 0, (long)&xtregs) < 0) - perror_with_name (_("Couldn't write extended registers")); + throw_ptrace_error (_("Couldn't write extended registers")); } void