mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 09:14:14 +08:00
Convert some frame functions to use gdb::array_view.
This patch converts the most obvious functions from gdb/frame.h to use the gdb::array_view abstraction. I've converted the ones that used buffer + length. There are others using only the buffer, with an implicit size. I did not touch those for now. But it would be nice to pass the size for safety. Tested with --enable-targets=all on Ubuntu 18.04/20.04 aarch64-linux. gdb/ChangeLog 2021-01-19 Luis Machado <luis.machado@linaro.org> * frame.h (get_frame_register_bytes): Pass a gdb::array_view instead of buffer + length. (put_frame_register_bytes): Likewise. Adjust documentation. (get_frame_memory): Pass a gdb::array_view instead of buffer + length. (safe_frame_unwind_memory): Likewise. * frame.c (get_frame_register_bytes, put_frame_register_bytes) (get_frame_memory, safe_frame_unwind_memory): Adjust to use gdb::array_view. * amd64-fbsd-tdep.c (amd64fbsd_sigtramp_p): Likewise. * amd64-linux-tdep.c (amd64_linux_sigtramp_start): Likewise. * amd64-obsd-tdep.c (amd64obsd_sigtramp_p): Likewise. * arc-linux-tdep.c (arc_linux_is_sigtramp): Likewise. * cris-tdep.c (cris_sigtramp_start, cris_rt_sigtramp_start): Likewise. * dwarf2/loc.c (rw_pieced_value): Likewise. * hppa-tdep.c (hppa_frame_cache): Likewise. * i386-fbsd-tdep.c (i386fbsd_sigtramp_p): Likewise. * i386-gnu-tdep.c (i386_gnu_sigtramp_start): Likewise. * i386-linux-tdep.c (i386_linux_sigtramp_start) (i386_linux_rt_sigtramp_start): Likewise. * i386-obsd-tdep.c (i386obsd_sigtramp_p): Likewise. * i386-tdep.c (i386_register_to_value): Likewise. * i387-tdep.c (i387_register_to_value): Likewise. * ia64-tdep.c (ia64_register_to_value): Likewise. * m32r-linux-tdep.c (m32r_linux_sigtramp_start) (m32r_linux_rt_sigtramp_start): Likewise. * m68k-linux-tdep.c (m68k_linux_pc_in_sigtramp): Likewise. * m68k-tdep.c (m68k_register_to_value): Likewise. * mips-tdep.c (mips_register_to_value) (mips_value_to_register): Likewise. * ppc-fbsd-tdep.c (ppcfbsd_sigtramp_frame_sniffer) (ppcfbsd_sigtramp_frame_cache): Likewise. * ppc-obsd-tdep.c (ppcobsd_sigtramp_frame_sniffer) (ppcobsd_sigtramp_frame_cache): Likewise. * rs6000-tdep.c (rs6000_in_function_epilogue_frame_p) (rs6000_register_to_value): Likewise. * tilegx-tdep.c (tilegx_analyze_prologue): Likewise. * tramp-frame.c (tramp_frame_start): Likewise. * valops.c (value_assign): Likewise.
This commit is contained in:
20
gdb/frame.c
20
gdb/frame.c
@ -1469,7 +1469,8 @@ deprecated_frame_register_read (frame_info *frame, int regnum,
|
||||
|
||||
bool
|
||||
get_frame_register_bytes (frame_info *frame, int regnum,
|
||||
CORE_ADDR offset, int len, gdb_byte *myaddr,
|
||||
CORE_ADDR offset,
|
||||
gdb::array_view<gdb_byte> buffer,
|
||||
int *optimizedp, int *unavailablep)
|
||||
{
|
||||
struct gdbarch *gdbarch = get_frame_arch (frame);
|
||||
@ -1496,6 +1497,8 @@ get_frame_register_bytes (frame_info *frame, int regnum,
|
||||
break; /* This register is not available on this architecture. */
|
||||
maxsize += thissize;
|
||||
}
|
||||
|
||||
int len = buffer.size ();
|
||||
if (len > maxsize)
|
||||
error (_("Bad debug information detected: "
|
||||
"Attempt to read %d bytes from registers."), len);
|
||||
@ -1508,6 +1511,8 @@ get_frame_register_bytes (frame_info *frame, int regnum,
|
||||
if (curr_len > len)
|
||||
curr_len = len;
|
||||
|
||||
gdb_byte *myaddr = buffer.data ();
|
||||
|
||||
if (curr_len == register_size (gdbarch, regnum))
|
||||
{
|
||||
enum lval_type lval;
|
||||
@ -1551,7 +1556,8 @@ get_frame_register_bytes (frame_info *frame, int regnum,
|
||||
|
||||
void
|
||||
put_frame_register_bytes (struct frame_info *frame, int regnum,
|
||||
CORE_ADDR offset, int len, const gdb_byte *myaddr)
|
||||
CORE_ADDR offset,
|
||||
gdb::array_view<const gdb_byte> buffer)
|
||||
{
|
||||
struct gdbarch *gdbarch = get_frame_arch (frame);
|
||||
|
||||
@ -1562,6 +1568,7 @@ put_frame_register_bytes (struct frame_info *frame, int regnum,
|
||||
regnum++;
|
||||
}
|
||||
|
||||
int len = buffer.size ();
|
||||
/* Copy the data. */
|
||||
while (len > 0)
|
||||
{
|
||||
@ -1570,6 +1577,7 @@ put_frame_register_bytes (struct frame_info *frame, int regnum,
|
||||
if (curr_len > len)
|
||||
curr_len = len;
|
||||
|
||||
const gdb_byte *myaddr = buffer.data ();
|
||||
if (curr_len == register_size (gdbarch, regnum))
|
||||
{
|
||||
put_frame_register (frame, regnum, myaddr);
|
||||
@ -2891,9 +2899,9 @@ get_frame_address_space (struct frame_info *frame)
|
||||
|
||||
void
|
||||
get_frame_memory (struct frame_info *this_frame, CORE_ADDR addr,
|
||||
gdb_byte *buf, int len)
|
||||
gdb::array_view<gdb_byte> buffer)
|
||||
{
|
||||
read_memory (addr, buf, len);
|
||||
read_memory (addr, buffer.data (), buffer.size ());
|
||||
}
|
||||
|
||||
LONGEST
|
||||
@ -2918,10 +2926,10 @@ get_frame_memory_unsigned (struct frame_info *this_frame, CORE_ADDR addr,
|
||||
|
||||
bool
|
||||
safe_frame_unwind_memory (struct frame_info *this_frame,
|
||||
CORE_ADDR addr, gdb_byte *buf, int len)
|
||||
CORE_ADDR addr, gdb::array_view<gdb_byte> buffer)
|
||||
{
|
||||
/* NOTE: target_read_memory returns zero on success! */
|
||||
return target_read_memory (addr, buf, len) == 0;
|
||||
return target_read_memory (addr, buffer.data (), buffer.size ()) == 0;
|
||||
}
|
||||
|
||||
/* Architecture methods. */
|
||||
|
Reference in New Issue
Block a user