X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fx86-bsd-nat.c;h=b000976619ff3e21c9efd5bb1a45351249067540;hb=4a4c04f1f4a926f986a77e72277c16e1b90c2b73;hp=1d37b2f05d4c4bb1c0fa6b5ddc23893cfda41794;hpb=a379bfd00effbbb0fb4df02dc686c2c110023cea;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/x86-bsd-nat.c b/gdb/x86-bsd-nat.c index 1d37b2f05d..b000976619 100644 --- a/gdb/x86-bsd-nat.c +++ b/gdb/x86-bsd-nat.c @@ -1,6 +1,6 @@ /* Native-dependent code for X86 BSD's. - Copyright (C) 2003-2017 Free Software Foundation, Inc. + Copyright (C) 2003-2019 Free Software Foundation, Inc. This file is part of GDB. @@ -40,16 +40,6 @@ size_t x86bsd_xsave_len; /* Support for debug registers. */ #ifdef HAVE_PT_GETDBREGS -static void (*super_mourn_inferior) (struct target_ops *ops); - -/* Implement the "to_mourn_inferior" target_ops method. */ - -static void -x86bsd_mourn_inferior (struct target_ops *ops) -{ - x86_cleanup_dregs (); - super_mourn_inferior (ops); -} /* Helper macro to access debug register X. FreeBSD/amd64 and modern versions of FreeBSD/i386 provide this macro in system headers. Define @@ -77,7 +67,6 @@ x86bsd_dr_get (ptid_t ptid, int regnum) static void x86bsd_dr_set (int regnum, unsigned long value) { - struct thread_info *thread; struct dbreg dbregs; if (ptrace (PT_GETDBREGS, get_ptrace_pid (inferior_ptid), @@ -91,13 +80,12 @@ x86bsd_dr_set (int regnum, unsigned long value) DBREG_DRX ((&dbregs), regnum) = value; - ALL_NON_EXITED_THREADS (thread) - if (thread->inf == current_inferior ()) - { - if (ptrace (PT_SETDBREGS, get_ptrace_pid (thread->ptid), - (PTRACE_TYPE_ARG3) &dbregs, 0) == -1) - perror_with_name (_("Couldn't write debug registers")); - } + for (thread_info *thread : current_inferior ()->non_exited_threads ()) + { + if (ptrace (PT_SETDBREGS, get_ptrace_pid (thread->ptid), + (PTRACE_TYPE_ARG3) &dbregs, 0) == -1) + perror_with_name (_("Couldn't write debug registers")); + } } static void @@ -134,28 +122,15 @@ x86bsd_dr_get_control (void) #endif /* PT_GETDBREGS */ -/* Create a prototype *BSD/x86 target. The client can override it - with local methods. */ - -struct target_ops * -x86bsd_target (void) +void +_initialize_x86_bsd_nat () { - struct target_ops *t; - - t = inf_ptrace_target (); - #ifdef HAVE_PT_GETDBREGS - x86_use_watchpoints (t); - x86_dr_low.set_control = x86bsd_dr_set_control; x86_dr_low.set_addr = x86bsd_dr_set_addr; x86_dr_low.get_addr = x86bsd_dr_get_addr; x86_dr_low.get_status = x86bsd_dr_get_status; x86_dr_low.get_control = x86bsd_dr_get_control; x86_set_debug_register_length (sizeof (void *)); - super_mourn_inferior = t->to_mourn_inferior; - t->to_mourn_inferior = x86bsd_mourn_inferior; #endif /* HAVE_PT_GETDBREGS */ - - return t; }