+2003-05-22 Andrew Cagney <cagney@redhat.com>
+
+ * stack.c (frame_info): Inline extract_address, replacing it with
+ extract_unsigned_integer.
+ * findvar.c (unsigned_pointer_to_address): Ditto.
+ * dwarf2loc.c (dwarf_expr_read_reg): Ditto.
+ * dwarf2expr.c (dwarf2_read_address): Ditto.
+ * frame.c (frame_pc_unwind): Update comment.
+ * dummy-frame.c (deprecated_read_register_dummy): Update comment.
+
2003-05-22 Jeff Johnston <jjohnstn@redhat.com>
* infptrace.c (detach): Call print_sys_errmsg rather than
/* NOTE: cagney/2002-08-12: Replaced a call to
regcache_raw_read_as_address() with a call to
regcache_cooked_read_unsigned(). The old, ...as_address
- function was eventually calling extract_unsigned_integer (via
+ function was eventually calling extract_unsigned_integer (nee
extract_address) to unpack the registers value. The below is
doing an unsigned extract so that it is functionally
equivalent. The read needs to be cooked as, otherwise, it
error ("dwarf2_read_address: Corrupted DWARF expression.");
*bytes_read = TARGET_ADDR_BIT / TARGET_CHAR_BIT;
- result = extract_address (buf, TARGET_ADDR_BIT / TARGET_CHAR_BIT);
+ /* NOTE: cagney/2003-05-22: This extract is assuming that a DWARF 2
+ address is always unsigned. That may or may not be true. */
+ result = extract_unsigned_integer (buf, TARGET_ADDR_BIT / TARGET_CHAR_BIT);
return result;
}
frame_register (debaton->frame, regnum, &optimized, &lval_type, &save_addr,
&realnum, buf);
- result = extract_address (buf, regsize);
+ /* NOTE: cagney/2003-05-22: This extract is assuming that a DWARF 2
+ address is always unsigned. That may or may not be true. */
+ result = extract_unsigned_integer (buf, regsize);
return result;
}
CORE_ADDR
unsigned_pointer_to_address (struct type *type, const void *buf)
{
- return extract_address (buf, TYPE_LENGTH (type));
+ return extract_unsigned_integer (buf, TYPE_LENGTH (type));
}
CORE_ADDR
implementation is no more than:
frame_unwind_register (this_frame, ISA_PC_REGNUM, buf);
- return extract_address (buf, size of ISA_PC_REGNUM);
+ return extract_unsigned_integer (buf, size of ISA_PC_REGNUM);
Note: this method is very heavily dependent on a correct
register-unwind implementation, it pays to fix that
CORE_ADDR sp;
frame_register_unwind (fi, SP_REGNUM, &optimized, &lval, &addr,
&realnum, value);
- sp = extract_address (value, REGISTER_RAW_SIZE (SP_REGNUM));
+ /* NOTE: cagney/2003-05-22: This is assuming that the
+ stack pointer was packed as an unsigned integer. That
+ may or may not be valid. */
+ sp = extract_unsigned_integer (value, REGISTER_RAW_SIZE (SP_REGNUM));
printf_filtered (" Previous frame's sp is ");
print_address_numeric (sp, 1, gdb_stdout);
printf_filtered ("\n");