}
void
-frame_unwind_signed_register (struct frame_info *frame, int regnum,
- LONGEST *val)
+frame_unwind_register (struct frame_info *frame, int regnum, void *buf)
{
int optimized;
CORE_ADDR addr;
int realnum;
enum lval_type lval;
- void *buf = alloca (MAX_REGISTER_RAW_SIZE);
frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
&realnum, buf);
+}
+
+void
+frame_unwind_signed_register (struct frame_info *frame, int regnum,
+ LONGEST *val)
+{
+ void *buf = alloca (MAX_REGISTER_RAW_SIZE);
+ frame_unwind_register (frame, regnum, buf);
(*val) = extract_signed_integer (buf, REGISTER_VIRTUAL_SIZE (regnum));
}
frame_unwind_unsigned_register (struct frame_info *frame, int regnum,
ULONGEST *val)
{
- int optimized;
- CORE_ADDR addr;
- int realnum;
- enum lval_type lval;
void *buf = alloca (MAX_REGISTER_RAW_SIZE);
- frame_register_unwind (frame, regnum, &optimized, &lval, &addr,
- &realnum, buf);
+ frame_unwind_register (frame, regnum, buf);
(*val) = extract_unsigned_integer (buf, REGISTER_VIRTUAL_SIZE (regnum));
}
+void
+frame_read_register (struct frame_info *frame, int regnum, void *buf)
+{
+ gdb_assert (frame != NULL && frame->next != NULL);
+ frame_unwind_register (frame->next, regnum, buf);
+}
+
void
frame_read_unsigned_register (struct frame_info *frame, int regnum,
ULONGEST *val)
{
int i;
+ if (len < 0)
+ len = strlen (name);
+
/* Search register name space. */
for (i = 0; i < NUM_REGS + NUM_PSEUDO_REGS; i++)
if (REGISTER_NAME (i) && len == strlen (REGISTER_NAME (i))