+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.
+
2021-01-19 Luis Machado <luis.machado@linaro.org>
* aarch64-linux-tdep.c (aarch64_linux_restore_vreg): Pass in an
CORE_ADDR pc = get_frame_pc (this_frame);
gdb_byte buf[sizeof amd64fbsd_sigtramp_code];
- if (!safe_frame_unwind_memory (this_frame, pc, buf, sizeof buf))
+ if (!safe_frame_unwind_memory (this_frame, pc, buf))
return 0;
if (memcmp (buf, amd64fbsd_sigtramp_code, sizeof amd64fbsd_sigtramp_code)
!= 0)
PC is not at the start of the instruction sequence, there will be
a few trailing readable bytes on the stack. */
- if (!safe_frame_unwind_memory (this_frame, pc, buf, sizeof buf))
+ if (!safe_frame_unwind_memory (this_frame, pc, buf))
return 0;
if (buf[0] != LINUX_SIGTRAMP_INSN0)
return 0;
pc -= LINUX_SIGTRAMP_OFFSET1;
- if (!safe_frame_unwind_memory (this_frame, pc, buf, sizeof buf))
+ if (!safe_frame_unwind_memory (this_frame, pc, buf))
return 0;
}
/* If we can't read the instructions at START_PC, return zero. */
buf = (gdb_byte *) alloca ((sizeof sigreturn) + 1);
- if (!safe_frame_unwind_memory (this_frame, start_pc + 6, buf, buflen))
+ if (!safe_frame_unwind_memory (this_frame, start_pc + 6, {buf, buflen}))
return 0;
/* Check for sigreturn(2). Depending on how the assembler encoded
/* Read the memory at the PC. Since we are stopped, any breakpoint must
have been removed. */
- if (!safe_frame_unwind_memory (this_frame, pc, buf, insns_sz))
+ if (!safe_frame_unwind_memory (this_frame, pc, {buf, insns_sz}))
{
/* Failed to unwind frame. */
return FALSE;
return TRUE;
/* No - look one instruction earlier in the code... */
- if (!safe_frame_unwind_memory (this_frame, pc - 4, buf, insns_sz))
+ if (!safe_frame_unwind_memory (this_frame, pc - 4, {buf, insns_sz}))
{
/* Failed to unwind frame. */
return FALSE;
CORE_ADDR pc = get_frame_pc (this_frame);
gdb_byte buf[SIGTRAMP_LEN];
- if (!safe_frame_unwind_memory (this_frame, pc, buf, SIGTRAMP_LEN))
+ if (!safe_frame_unwind_memory (this_frame, pc, buf))
return 0;
if (((buf[1] << 8) + buf[0]) != SIGTRAMP_INSN0)
return 0;
pc -= SIGTRAMP_OFFSET1;
- if (!safe_frame_unwind_memory (this_frame, pc, buf, SIGTRAMP_LEN))
+ if (!safe_frame_unwind_memory (this_frame, pc, buf))
return 0;
}
CORE_ADDR pc = get_frame_pc (this_frame);
gdb_byte buf[SIGTRAMP_LEN];
- if (!safe_frame_unwind_memory (this_frame, pc, buf, SIGTRAMP_LEN))
+ if (!safe_frame_unwind_memory (this_frame, pc, buf))
return 0;
if (((buf[1] << 8) + buf[0]) != SIGTRAMP_INSN0)
return 0;
pc -= SIGTRAMP_OFFSET1;
- if (!safe_frame_unwind_memory (this_frame, pc, buf, SIGTRAMP_LEN))
+ if (!safe_frame_unwind_memory (this_frame, pc, buf))
return 0;
}
/* Read mode. */
if (!get_frame_register_bytes (frame, gdb_regnum,
bits_to_skip / 8,
- this_size, buffer.data (),
+ buffer,
&optim, &unavail))
{
if (optim)
Need some bits from original register value. */
get_frame_register_bytes (frame, gdb_regnum,
bits_to_skip / 8,
- this_size, buffer.data (),
+ buffer,
&optim, &unavail);
if (optim)
throw_error (OPTIMIZED_OUT_ERROR,
this_size_bits, bits_big_endian);
put_frame_register_bytes (frame, gdb_regnum,
bits_to_skip / 8,
- this_size, buffer.data ());
+ buffer);
}
}
break;
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);
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);
if (curr_len > len)
curr_len = len;
+ gdb_byte *myaddr = buffer.data ();
+
if (curr_len == register_size (gdbarch, regnum))
{
enum lval_type lval;
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);
regnum++;
}
+ int len = buffer.size ();
/* Copy the data. */
while (len > 0)
{
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);
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
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. */
contents are optimized out or unavailable, set *OPTIMIZEDP,
*UNAVAILABLEP accordingly. */
extern 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);
-/* Write LEN bytes to one or multiple registers starting with REGNUM
- in frame FRAME, starting at OFFSET, into BUF. */
+/* Write bytes from BUFFER to one or multiple registers starting with REGNUM
+ in frame FRAME, starting at OFFSET. */
extern 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);
/* Unwind the PC. Strictly speaking return the resume address of the
calling frame. For GDB, `pc' is the resume address and not a
adaptor frames this should be ok. */
extern void get_frame_memory (struct frame_info *this_frame, CORE_ADDR addr,
- gdb_byte *buf, int len);
+ gdb::array_view<gdb_byte> buffer);
extern LONGEST get_frame_memory_signed (struct frame_info *this_frame,
CORE_ADDR memaddr, int len);
extern ULONGEST get_frame_memory_unsigned (struct frame_info *this_frame,
/* Same as above, but return true zero when the entire memory read
succeeds, false otherwise. */
extern bool safe_frame_unwind_memory (frame_info *this_frame, CORE_ADDR addr,
- gdb_byte *buf, int len);
+ gdb::array_view<gdb_byte> buffer);
/* Return this frame's architecture. */
extern struct gdbarch *get_frame_arch (struct frame_info *this_frame);
gdb_byte buf4[4];
long inst;
- if (!safe_frame_unwind_memory (this_frame, pc, buf4, sizeof buf4))
+ if (!safe_frame_unwind_memory (this_frame, pc, buf4))
{
error (_("Cannot read instruction at %s."),
paddress (gdbarch, pc));
const gdb_byte *middle, *end;
/* Look for a matching start. */
- if (!safe_frame_unwind_memory (this_frame, pc, buf,
- sizeof i386fbsd_sigtramp_start))
+ if (!safe_frame_unwind_memory (this_frame, pc,
+ {buf, sizeof i386fbsd_sigtramp_start}))
return 0;
if (memcmp (buf, i386fbsd_sigtramp_start, sizeof i386fbsd_sigtramp_start)
== 0)
/* Since the end is shorter than the middle, check for a matching end
next. */
pc += sizeof i386fbsd_sigtramp_start;
- if (!safe_frame_unwind_memory (this_frame, pc, buf,
- sizeof i386fbsd_sigtramp_end))
+ if (!safe_frame_unwind_memory (this_frame, pc,
+ {buf, sizeof i386fbsd_sigtramp_end}))
return 0;
if (memcmp (buf, end, sizeof i386fbsd_sigtramp_end) == 0)
return 1;
/* If the end didn't match, check for a matching middle. */
- if (!safe_frame_unwind_memory (this_frame, pc, buf,
- sizeof i386fbsd_sigtramp_middle))
+ if (!safe_frame_unwind_memory (this_frame, pc,
+ {buf, sizeof i386fbsd_sigtramp_middle}))
return 0;
if (memcmp (buf, middle, sizeof i386fbsd_sigtramp_middle) != 0)
return 0;
/* The middle matched, check for a matching end. */
pc += sizeof i386fbsd_sigtramp_middle;
- if (!safe_frame_unwind_memory (this_frame, pc, buf,
- sizeof i386fbsd_sigtramp_end))
+ if (!safe_frame_unwind_memory (this_frame, pc,
+ {buf, sizeof i386fbsd_sigtramp_end}))
return 0;
if (memcmp (buf, end, sizeof i386fbsd_sigtramp_end) != 0)
return 0;
if (!safe_frame_unwind_memory (this_frame,
pc + GNU_SIGTRAMP_TAIL - GNU_SIGTRAMP_LEN,
- buf, GNU_SIGTRAMP_LEN))
+ buf))
return 0;
if (memcmp (buf, gnu_sigtramp_code, GNU_SIGTRAMP_LEN) != 0)
PC is not at the start of the instruction sequence, there will be
a few trailing readable bytes on the stack. */
- if (!safe_frame_unwind_memory (this_frame, pc, buf, LINUX_SIGTRAMP_LEN))
+ if (!safe_frame_unwind_memory (this_frame, pc, buf))
return 0;
if (buf[0] != LINUX_SIGTRAMP_INSN0)
pc -= adjust;
- if (!safe_frame_unwind_memory (this_frame, pc, buf, LINUX_SIGTRAMP_LEN))
+ if (!safe_frame_unwind_memory (this_frame, pc, buf))
return 0;
}
PC is not at the start of the instruction sequence, there will be
a few trailing readable bytes on the stack. */
- if (!safe_frame_unwind_memory (this_frame, pc, buf, LINUX_RT_SIGTRAMP_LEN))
+ if (!safe_frame_unwind_memory (this_frame, pc, buf))
return 0;
if (buf[0] != LINUX_RT_SIGTRAMP_INSN0)
pc -= LINUX_RT_SIGTRAMP_OFFSET1;
- if (!safe_frame_unwind_memory (this_frame, pc, buf,
- LINUX_RT_SIGTRAMP_LEN))
+ if (!safe_frame_unwind_memory (this_frame, pc,
+ buf))
return 0;
}
{
/* If we can't read the instructions, return zero. */
if (!safe_frame_unwind_memory (this_frame, start_pc + *offset,
- buf, buflen))
+ {buf, buflen}))
return 0;
/* Check for sigreturn(2). */
gdb_assert (register_size (gdbarch, regnum) == 4);
if (!get_frame_register_bytes (frame, regnum, 0,
- register_size (gdbarch, regnum),
- to, optimizedp, unavailablep))
+ gdb::make_array_view (to,
+ register_size (gdbarch,
+ regnum)),
+ optimizedp, unavailablep))
return 0;
regnum = i386_next_regnum (regnum);
/* Convert to TYPE. */
if (!get_frame_register_bytes (frame, regnum, 0,
- register_size (gdbarch, regnum),
- from, optimizedp, unavailablep))
+ gdb::make_array_view (from,
+ register_size (gdbarch,
+ regnum)),
+ optimizedp, unavailablep))
return 0;
target_float_convert (from, i387_ext_type (gdbarch), to, type);
/* Convert to TYPE. */
if (!get_frame_register_bytes (frame, regnum, 0,
- register_size (gdbarch, regnum),
- in, optimizedp, unavailablep))
+ gdb::make_array_view (in,
+ register_size (gdbarch,
+ regnum)),
+ optimizedp, unavailablep))
return 0;
target_float_convert (in, ia64_ext_type (gdbarch), out, valtype);
if (pc % 2 != 0)
{
- if (!safe_frame_unwind_memory (this_frame, pc, buf, 2))
+ if (!safe_frame_unwind_memory (this_frame, pc, {buf, 2}))
return 0;
if (memcmp (buf, linux_sigtramp_code, 2) == 0)
return 0;
}
- if (!safe_frame_unwind_memory (this_frame, pc, buf, 4))
+ if (!safe_frame_unwind_memory (this_frame, pc, {buf, 4}))
return 0;
if (memcmp (buf, linux_sigtramp_code, 4) != 0)
if (pc % 2 != 0)
return 0;
- if (!safe_frame_unwind_memory (this_frame, pc, buf, 4))
+ if (!safe_frame_unwind_memory (this_frame, pc, {buf, 4}))
return 0;
if (memcmp (buf, linux_rt_sigtramp_code, 4) == 0)
{
- if (!safe_frame_unwind_memory (this_frame, pc + 4, buf, 4))
+ if (!safe_frame_unwind_memory (this_frame, pc + 4, {buf, 4}))
return 0;
if (memcmp (buf, linux_rt_sigtramp_code + 4, 4) == 0)
}
else if (memcmp (buf, linux_rt_sigtramp_code + 4, 4) == 0)
{
- if (!safe_frame_unwind_memory (this_frame, pc - 4, buf, 4))
+ if (!safe_frame_unwind_memory (this_frame, pc - 4, {buf, 4}))
return 0;
if (memcmp (buf, linux_rt_sigtramp_code, 4) == 0)
unsigned long insn0, insn1, insn2;
CORE_ADDR pc = get_frame_pc (this_frame);
- if (!safe_frame_unwind_memory (this_frame, pc - 4, buf, sizeof (buf)))
+ if (!safe_frame_unwind_memory (this_frame, pc - 4, {buf, sizeof (buf)}))
return 0;
insn1 = extract_unsigned_integer (buf + 4, 4, byte_order);
insn2 = extract_unsigned_integer (buf + 8, 4, byte_order);
/* Convert to TYPE. */
if (!get_frame_register_bytes (frame, regnum, 0,
- register_size (gdbarch, regnum),
- from, optimizedp, unavailablep))
+ gdb::make_array_view (from,
+ register_size (gdbarch,
+ regnum)),
+ optimizedp, unavailablep))
return 0;
target_float_convert (from, fpreg_type, to, type);
get_frame_register (frame, regnum + 0, to + 4);
get_frame_register (frame, regnum + 1, to + 0);
- if (!get_frame_register_bytes (frame, regnum + 0, 0, 4, to + 4,
+ if (!get_frame_register_bytes (frame, regnum + 0, 0, {to + 4, 4},
optimizedp, unavailablep))
return 0;
- if (!get_frame_register_bytes (frame, regnum + 1, 0, 4, to + 0,
+ if (!get_frame_register_bytes (frame, regnum + 1, 0, {to + 0, 4},
optimizedp, unavailablep))
return 0;
*optimizedp = *unavailablep = 0;
}
else if (mips_convert_register_gpreg_case_p (gdbarch, regnum, type))
{
- int len = TYPE_LENGTH (type);
+ size_t len = TYPE_LENGTH (type);
CORE_ADDR offset;
offset = gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG ? 8 - len : 0;
- if (!get_frame_register_bytes (frame, regnum, offset, len, to,
+ if (!get_frame_register_bytes (frame, regnum, offset, {to, len},
optimizedp, unavailablep))
return 0;
else if (mips_convert_register_gpreg_case_p (gdbarch, regnum, type))
{
gdb_byte fill[8];
- int len = TYPE_LENGTH (type);
+ size_t len = TYPE_LENGTH (type);
/* Sign extend values, irrespective of type, that are stored to
a 64-bit general purpose register. (32-bit unsigned values
store_signed_integer (fill, 8, BFD_ENDIAN_BIG, -1);
else
store_signed_integer (fill, 8, BFD_ENDIAN_BIG, 0);
- put_frame_register_bytes (frame, regnum, 0, 8 - len, fill);
- put_frame_register_bytes (frame, regnum, 8 - len, len, from);
+ put_frame_register_bytes (frame, regnum, 0, {fill, 8 - len});
+ put_frame_register_bytes (frame, regnum, 8 - len, {from, len});
}
else
{
store_signed_integer (fill, 8, BFD_ENDIAN_LITTLE, -1);
else
store_signed_integer (fill, 8, BFD_ENDIAN_LITTLE, 0);
- put_frame_register_bytes (frame, regnum, 0, len, from);
- put_frame_register_bytes (frame, regnum, len, 8 - len, fill);
+ put_frame_register_bytes (frame, regnum, 0, {from, len});
+ put_frame_register_bytes (frame, regnum, len, {fill, 8 - len});
}
}
else
unsigned long insn;
if (!safe_frame_unwind_memory (this_frame, start_pc + *offset,
- buf, sizeof buf))
+ {buf, sizeof buf}))
continue;
/* Check for "li r0,SYS_sigreturn". */
func = get_frame_pc (this_frame);
func &= ~(ppcfbsd_page_size - 1);
- if (!safe_frame_unwind_memory (this_frame, func, buf, sizeof buf))
+ if (!safe_frame_unwind_memory (this_frame, func, {buf, sizeof buf}))
return cache;
base = get_frame_register_unsigned (this_frame, gdbarch_sp_regnum (gdbarch));
unsigned long insn;
if (!safe_frame_unwind_memory (this_frame, start_pc + *offset,
- buf, sizeof buf))
+ {buf, sizeof buf}))
continue;
/* Check for "li r0,SYS_sigreturn". */
func = get_frame_pc (this_frame);
func &= ~(ppcobsd_page_size - 1);
- if (!safe_frame_unwind_memory (this_frame, func, buf, sizeof buf))
+ if (!safe_frame_unwind_memory (this_frame, func, {buf, sizeof buf}))
return cache;
/* Calculate the offset where we can find `struct sigcontext'. We
for (scan_pc = pc; scan_pc < epilogue_end; scan_pc += PPC_INSN_SIZE)
{
- if (!safe_frame_unwind_memory (curfrm, scan_pc, insn_buf, PPC_INSN_SIZE))
+ if (!safe_frame_unwind_memory (curfrm, scan_pc,
+ {insn_buf, PPC_INSN_SIZE}))
return 0;
insn = extract_unsigned_integer (insn_buf, PPC_INSN_SIZE, byte_order);
if (insn == 0x4e800020)
scan_pc >= epilogue_start;
scan_pc -= PPC_INSN_SIZE)
{
- if (!safe_frame_unwind_memory (curfrm, scan_pc, insn_buf, PPC_INSN_SIZE))
+ if (!safe_frame_unwind_memory (curfrm, scan_pc,
+ {insn_buf, PPC_INSN_SIZE}))
return 0;
insn = extract_unsigned_integer (insn_buf, PPC_INSN_SIZE, byte_order);
if (insn_changes_sp_or_jumps (insn))
gdb_assert (type->code () == TYPE_CODE_FLT);
if (!get_frame_register_bytes (frame, regnum, 0,
- register_size (gdbarch, regnum),
- from, optimizedp, unavailablep))
+ gdb::make_array_view (from,
+ register_size (gdbarch,
+ regnum)),
+ optimizedp, unavailablep))
return 0;
target_float_convert (from, builtin_type (gdbarch)->builtin_double,
instbuf_start = next_addr;
status = safe_frame_unwind_memory (next_frame, instbuf_start,
- instbuf, instbuf_size);
+ {instbuf, instbuf_size});
if (status == 0)
memory_error (TARGET_XFER_E_IO, next_addr);
}
{
gdb_byte buf[sizeof (tramp->insn[0])];
ULONGEST insn;
+ size_t insn_size = tramp->insn_size;
if (tramp->insn[i].bytes == TRAMP_SENTINEL_INSN)
return func;
if (!safe_frame_unwind_memory (this_frame,
- func + i * tramp->insn_size,
- buf, tramp->insn_size))
+ func + i * insn_size,
+ {buf, insn_size}))
break;
- insn = extract_unsigned_integer (buf, tramp->insn_size, byte_order);
+ insn = extract_unsigned_integer (buf, insn_size, byte_order);
if (tramp->insn[i].bytes != (insn & tramp->insn[i].mask))
break;
}
{
struct value *parent = value_parent (toval);
LONGEST offset = value_offset (parent) + value_offset (toval);
- int changed_len;
+ size_t changed_len;
gdb_byte buffer[sizeof (LONGEST)];
int optim, unavail;
+ HOST_CHAR_BIT - 1)
/ HOST_CHAR_BIT;
- if (changed_len > (int) sizeof (LONGEST))
+ if (changed_len > sizeof (LONGEST))
error (_("Can't handle bitfields which "
"don't fit in a %d bit word."),
(int) sizeof (LONGEST) * HOST_CHAR_BIT);
if (!get_frame_register_bytes (frame, value_reg, offset,
- changed_len, buffer,
+ {buffer, changed_len},
&optim, &unavail))
{
if (optim)
value_bitpos (toval), value_bitsize (toval));
put_frame_register_bytes (frame, value_reg, offset,
- changed_len, buffer);
+ {buffer, changed_len});
}
else
{
{
put_frame_register_bytes (frame, value_reg,
value_offset (toval),
- TYPE_LENGTH (type),
- value_contents (fromval));
+ {value_contents (fromval),
+ TYPE_LENGTH (type)});
}
}