[RFA,09/13] Use gdb::def_vector in ppc-linux-tdep.c

Message ID 20171102223612.3642-10-tom@tromey.com
State New, archived
Headers

Commit Message

Tom Tromey Nov. 2, 2017, 10:36 p.m. UTC
  This removes a cleanup from ppc-linux-tdep.c, replacing it with
gdb::def_vector.

gdb/ChangeLog
2017-11-02  Tom Tromey  <tom@tromey.com>

	* ppc-linux-tdep.c (ppc_linux_get_syscall_number): Use
	gdb::def_vector.
---
 gdb/ChangeLog        |  5 +++++
 gdb/ppc-linux-tdep.c | 13 ++++---------
 2 files changed, 9 insertions(+), 9 deletions(-)
  

Comments

Simon Marchi Nov. 3, 2017, 1:31 a.m. UTC | #1
On 2017-11-02 18:36, Tom Tromey wrote:
> This removes a cleanup from ppc-linux-tdep.c, replacing it with
> gdb::def_vector.
> 
> gdb/ChangeLog
> 2017-11-02  Tom Tromey  <tom@tromey.com>
> 
> 	* ppc-linux-tdep.c (ppc_linux_get_syscall_number): Use
> 	gdb::def_vector.
> ---
>  gdb/ChangeLog        |  5 +++++
>  gdb/ppc-linux-tdep.c | 13 ++++---------
>  2 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
> index 847908a6da..4d10a24ca9 100644
> --- a/gdb/ppc-linux-tdep.c
> +++ b/gdb/ppc-linux-tdep.c
> @@ -725,26 +725,21 @@ ppc_linux_get_syscall_number (struct gdbarch 
> *gdbarch,
>    struct regcache *regcache = get_thread_regcache (ptid);
>    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
>    enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> -  struct cleanup *cleanbuf;
> -  /* The content of a register */
> -  gdb_byte *buf;
>    /* The result */
>    LONGEST ret;
> 
>    /* Make sure we're in a 32- or 64-bit machine */
>    gdb_assert (tdep->wordsize == 4 || tdep->wordsize == 8);
> 
> -  buf = (gdb_byte *) xmalloc (tdep->wordsize * sizeof (gdb_byte));
> -
> -  cleanbuf = make_cleanup (xfree, buf);
> +  /* The content of a register */
> +  gdb::def_vector<gdb_byte> buf (tdep->wordsize);

I would prefer if you used gdb::byte_vector, so it's consistent across 
the codebase.

> 
>    /* Getting the system call number from the register.
>       When dealing with PowerPC architecture, this information
>       is stored at 0th register.  */
> -  regcache_cooked_read (regcache, tdep->ppc_gp0_regnum, buf);
> +  regcache_cooked_read (regcache, tdep->ppc_gp0_regnum, buf.data ());
> 
> -  ret = extract_signed_integer (buf, tdep->wordsize, byte_order);
> -  do_cleanups (cleanbuf);
> +  ret = extract_signed_integer (buf.data (), tdep->wordsize, 
> byte_order);
> 
>    return ret;
>  }

You can skip the ret variable.

Simon
  
Tom Tromey Nov. 3, 2017, 5:07 p.m. UTC | #2
>>>>> "Simon" == Simon Marchi <simon.marchi@polymtl.ca> writes:

Simon> I would prefer if you used gdb::byte_vector, so it's consistent across
Simon> the codebase.

...

Simon> You can skip the ret variable.

I made these changes.

Tom
  

Patch

diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
index 847908a6da..4d10a24ca9 100644
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
@@ -725,26 +725,21 @@  ppc_linux_get_syscall_number (struct gdbarch *gdbarch,
   struct regcache *regcache = get_thread_regcache (ptid);
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  struct cleanup *cleanbuf;
-  /* The content of a register */
-  gdb_byte *buf;
   /* The result */
   LONGEST ret;
 
   /* Make sure we're in a 32- or 64-bit machine */
   gdb_assert (tdep->wordsize == 4 || tdep->wordsize == 8);
 
-  buf = (gdb_byte *) xmalloc (tdep->wordsize * sizeof (gdb_byte));
-
-  cleanbuf = make_cleanup (xfree, buf);
+  /* The content of a register */
+  gdb::def_vector<gdb_byte> buf (tdep->wordsize);
 
   /* Getting the system call number from the register.
      When dealing with PowerPC architecture, this information
      is stored at 0th register.  */
-  regcache_cooked_read (regcache, tdep->ppc_gp0_regnum, buf);
+  regcache_cooked_read (regcache, tdep->ppc_gp0_regnum, buf.data ());
 
-  ret = extract_signed_integer (buf, tdep->wordsize, byte_order);
-  do_cleanups (cleanbuf);
+  ret = extract_signed_integer (buf.data (), tdep->wordsize, byte_order);
 
   return ret;
 }