This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFA 3/6] Remove cleanup from ppc-linux-nat.c
- From: Simon Marchi <simon dot marchi at ericsson dot com>
- To: Tom Tromey <tom at tromey dot com>, <gdb-patches at sourceware dot org>
- Date: Mon, 16 Oct 2017 16:28:14 -0400
- Subject: Re: [RFA 3/6] Remove cleanup from ppc-linux-nat.c
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=none (sender IP is ) smtp.mailfrom=simon dot marchi at ericsson dot com;
- References: <20171016030427.21349-1-tom@tromey.com> <20171016030427.21349-4-tom@tromey.com>
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
On 2017-10-15 11:04 PM, Tom Tromey wrote:
> This removes a cleanup from ppc-linux-nat.c, by using
> unique_xmalloc_ptr. It also slightly simplifies the code by using
> XDUP rather than XNEW and memcpy.
>
> ChangeLog
> 2017-10-15 Tom Tromey <tom@tromey.com>
>
> * ppc-linux-nat.c (hwdebug_insert_point): Use
> gdb::unique_xmalloc_ptr, XDUP.
> ---
> gdb/ChangeLog | 5 +++++
> gdb/ppc-linux-nat.c | 11 +++--------
> 2 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
> index 45c8903ef6..7c8ab6c67b 100644
> --- a/gdb/ppc-linux-nat.c
> +++ b/gdb/ppc-linux-nat.c
> @@ -1541,16 +1541,13 @@ hwdebug_insert_point (struct ppc_hw_breakpoint *b, int tid)
> {
> int i;
> long slot;
> - struct ppc_hw_breakpoint *p = XNEW (struct ppc_hw_breakpoint);
> + gdb::unique_xmalloc_ptr<ppc_hw_breakpoint> p (XDUP (ppc_hw_breakpoint, b));
> struct hw_break_tuple *hw_breaks;
> - struct cleanup *c = make_cleanup (xfree, p);
> struct thread_points *t;
> struct hw_break_tuple *tuple;
>
> - memcpy (p, b, sizeof (struct ppc_hw_breakpoint));
> -
> errno = 0;
> - slot = ptrace (PPC_PTRACE_SETHWDEBUG, tid, 0, p);
> + slot = ptrace (PPC_PTRACE_SETHWDEBUG, tid, 0, p.get ());
> if (slot < 0)
> perror_with_name (_("Unexpected error setting breakpoint or watchpoint"));
>
> @@ -1564,13 +1561,11 @@ hwdebug_insert_point (struct ppc_hw_breakpoint *b, int tid)
> if (hw_breaks[i].hw_break == NULL)
> {
> hw_breaks[i].slot = slot;
> - hw_breaks[i].hw_break = p;
> + hw_breaks[i].hw_break = p.release ();
> break;
> }
>
> gdb_assert (i != max_slots_number);
> -
> - discard_cleanups (c);
> }
>
> /* This function is a generic wrapper that is responsible for removing a
>
I was going to say, it would make more sense to use the copy constructor:
std::unique_ptr<ppc_hw_breakpoint> p (new ppc_hw_breakpoint (*b));
but it would require other changes, and it's probably out of scope for your
current goal, so LGTM.
Simon