aboutsummaryrefslogtreecommitdiff
path: root/gdb/frame.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/frame.c')
-rw-r--r--gdb/frame.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/gdb/frame.c b/gdb/frame.c
index fed5871..4578b1a 100644
--- a/gdb/frame.c
+++ b/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. */