From af1342ab7f8f2b535114eca37fb5d0adc6ced661 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Thu, 22 May 2003 18:37:05 +0000 Subject: [PATCH] 2003-05-22 Andrew Cagney * 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. --- gdb/ChangeLog | 10 ++++++++++ gdb/dummy-frame.c | 2 +- gdb/dwarf2expr.c | 4 +++- gdb/dwarf2loc.c | 4 +++- gdb/findvar.c | 2 +- gdb/frame.c | 2 +- gdb/stack.c | 5 ++++- 7 files changed, 23 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 14911d01928..90d2cab8cdb 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2003-05-22 Andrew Cagney + + * 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 * infptrace.c (detach): Call print_sys_errmsg rather than diff --git a/gdb/dummy-frame.c b/gdb/dummy-frame.c index ca11bd675f0..94413f4baef 100644 --- a/gdb/dummy-frame.c +++ b/gdb/dummy-frame.c @@ -183,7 +183,7 @@ deprecated_read_register_dummy (CORE_ADDR pc, CORE_ADDR fp, int regno) /* 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 diff --git a/gdb/dwarf2expr.c b/gdb/dwarf2expr.c index 410cd54c622..aa391ebd6a5 100644 --- a/gdb/dwarf2expr.c +++ b/gdb/dwarf2expr.c @@ -178,7 +178,9 @@ dwarf2_read_address (unsigned char *buf, unsigned char *buf_end, int *bytes_read 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; } diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 2bb4f268a0b..9ed6b7e9665 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -124,7 +124,9 @@ dwarf_expr_read_reg (void *baton, int dwarf_regnum) 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; } diff --git a/gdb/findvar.c b/gdb/findvar.c index c9623bf2c4d..5d975e43c85 100644 --- a/gdb/findvar.c +++ b/gdb/findvar.c @@ -333,7 +333,7 @@ value_of_register (int regnum, struct frame_info *frame) 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 diff --git a/gdb/frame.c b/gdb/frame.c index fe863d69d33..07e0e5b15b6 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -376,7 +376,7 @@ frame_pc_unwind (struct frame_info *this_frame) 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 diff --git a/gdb/stack.c b/gdb/stack.c index e865270a812..a0bd7a4ae68 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -818,7 +818,10 @@ frame_info (char *addr_exp, int from_tty) 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"); -- 2.30.2