From ccbe4c82d5219502806dc62aa1cf51e5b1a4b479 Mon Sep 17 00:00:00 2001 From: Luis Machado Date: Wed, 23 Dec 2020 16:06:11 -0300 Subject: [PATCH] Use gdb::array_view for setting value bytes in trad-frame This patch updates the functions setting value bytes in trad-frame to use a gdb::array_view instead of passing a buffer and a size. gdb/ChangeLog: 2021-01-19 Luis Machado * aarch64-linux-tdep.c (aarch64_linux_restore_vreg): Pass in an array_view. * trad-frame.c (trad_frame_set_value_bytes): Use gdb::array_view instead of buffer and size. (trad_frame_set_reg_value_bytes): Likewise. * trad-frame.h (trad_frame_set_reg_value_bytes): Likewise. (trad_frame_set_value_bytes): Likewise. --- gdb/ChangeLog | 10 ++++++++++ gdb/aarch64-linux-tdep.c | 14 +++++++------- gdb/trad-frame.c | 15 +++++++-------- gdb/trad-frame.h | 8 ++++---- 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 136893036a5..e31ed432187 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2021-01-19 Luis Machado + + * aarch64-linux-tdep.c (aarch64_linux_restore_vreg): Pass in an + array_view. + * trad-frame.c (trad_frame_set_value_bytes): Use gdb::array_view + instead of buffer and size. + (trad_frame_set_reg_value_bytes): Likewise. + * trad-frame.h (trad_frame_set_reg_value_bytes): Likewise. + (trad_frame_set_value_bytes): Likewise. + 2021-01-18 Mike Frysinger * copyright.py (NOT_FSF_LIST): Delete sim/testsuite/sim/bfin/s21.s. diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c index 4c2caf8e05b..954b05ca740 100644 --- a/gdb/aarch64-linux-tdep.c +++ b/gdb/aarch64-linux-tdep.c @@ -222,27 +222,27 @@ aarch64_linux_restore_vreg (struct trad_frame_cache *cache, int num_regs, /* Now we can store the correct bytes for the V register. */ trad_frame_set_reg_value_bytes (cache, AARCH64_V0_REGNUM + vreg_num, - buf, V_REGISTER_SIZE); + {buf, V_REGISTER_SIZE}); trad_frame_set_reg_value_bytes (cache, num_regs + AARCH64_Q0_REGNUM - + vreg_num, buf, Q_REGISTER_SIZE); + + vreg_num, {buf, Q_REGISTER_SIZE}); trad_frame_set_reg_value_bytes (cache, num_regs + AARCH64_D0_REGNUM - + vreg_num, buf, D_REGISTER_SIZE); + + vreg_num, {buf, D_REGISTER_SIZE}); trad_frame_set_reg_value_bytes (cache, num_regs + AARCH64_S0_REGNUM - + vreg_num, buf, S_REGISTER_SIZE); + + vreg_num, {buf, S_REGISTER_SIZE}); trad_frame_set_reg_value_bytes (cache, num_regs + AARCH64_H0_REGNUM - + vreg_num, buf, H_REGISTER_SIZE); + + vreg_num, {buf, H_REGISTER_SIZE}); trad_frame_set_reg_value_bytes (cache, num_regs + AARCH64_B0_REGNUM - + vreg_num, buf, B_REGISTER_SIZE); + + vreg_num, {buf, B_REGISTER_SIZE}); if (has_sve) trad_frame_set_reg_value_bytes (cache, num_regs + AARCH64_SVE_V0_REGNUM - + vreg_num, buf, V_REGISTER_SIZE); + + vreg_num, {buf, V_REGISTER_SIZE}); } return; } diff --git a/gdb/trad-frame.c b/gdb/trad-frame.c index 3284c452317..53bd097a2b3 100644 --- a/gdb/trad-frame.c +++ b/gdb/trad-frame.c @@ -229,12 +229,12 @@ trad_frame_set_unknown (trad_frame_saved_reg this_saved_regs[], void trad_frame_set_value_bytes (trad_frame_saved_reg this_saved_regs[], - int regnum, const gdb_byte *bytes, - size_t size) + int regnum, + gdb::array_view bytes) { /* Allocate the space and copy the data bytes. */ - gdb_byte *data = FRAME_OBSTACK_CALLOC (size, gdb_byte); - memcpy (data, bytes, size); + gdb_byte *data = FRAME_OBSTACK_CALLOC (bytes.size (), gdb_byte); + memcpy (data, bytes.data (), bytes.size ()); this_saved_regs[regnum].set_value_bytes (data); } @@ -242,13 +242,12 @@ trad_frame_set_value_bytes (trad_frame_saved_reg this_saved_regs[], void trad_frame_set_reg_value_bytes (struct trad_frame_cache *this_trad_cache, - int regnum, const gdb_byte *bytes, - size_t size) + int regnum, + gdb::array_view bytes) { /* External interface for users of trad_frame_cache (who cannot access the prev_regs object directly). */ - trad_frame_set_value_bytes (this_trad_cache->prev_regs, regnum, bytes, - size); + trad_frame_set_value_bytes (this_trad_cache->prev_regs, regnum, bytes); } diff --git a/gdb/trad-frame.h b/gdb/trad-frame.h index cdc937cfa29..dc29bab9797 100644 --- a/gdb/trad-frame.h +++ b/gdb/trad-frame.h @@ -55,8 +55,8 @@ void trad_frame_set_reg_value (struct trad_frame_cache *this_cache, /* Given the cache in THIS_TRAD_CACHE, set the value of REGNUM to the bytes contained in BYTES with size SIZE. */ void trad_frame_set_reg_value_bytes (struct trad_frame_cache *this_trad_cache, - int regnum, const gdb_byte *bytes, - size_t size); + int regnum, + gdb::array_view bytes); struct value *trad_frame_get_register (struct trad_frame_cache *this_trad_cache, struct frame_info *this_frame, @@ -204,8 +204,8 @@ void trad_frame_set_unknown (trad_frame_saved_reg this_saved_regs[], /* Encode REGNUM value in the trad-frame as a sequence of bytes. This is useful when the value is larger than what primitive types can hold. */ void trad_frame_set_value_bytes (trad_frame_saved_reg this_saved_regs[], - int regnum, const gdb_byte *bytes, - size_t size); + int regnum, + gdb::array_view bytes); /* Convenience functions, return non-zero if the register has been encoded as specified. */ -- 2.30.2