From 9898f801b47255d0f1dee8c7a2238369e34adcd1 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Wed, 17 Jun 2009 18:50:31 +0000 Subject: [PATCH] * gdbarch.sh (pointer_to_address): Change to type 'm'. (address_to_pointer): Likewise. * gdbarch.c, gdbarch.h: Regenerate. * inferior.h (unsigned_pointer_to_address): Add GDBARCH argument. (signed_pointer_to_address): Likewise. (unsigned_address_to_pointer, address_to_signed_pointer): Likewise. * findvar.c (unsigned_pointer_to_address): Likewise. (signed_pointer_to_address): Likewise. (unsigned_address_to_pointer, address_to_signed_pointer): Likewise. * avr-tdep.c (avr_address_to_pointer): Likewise. (avr_pointer_to_address): Likewise. * iq2000-tdep.c (iq2000_pointer_to_address): Likewise. (iq2000_address_to_pointer): Likewise. * m32c-tdep.c (m32c_m16c_address_to_pointer): Likewise. (m32c_m16c_pointer_to_address): Likewise. * spu-tdep.c (spu_pointer_to_address): Likewise. * xstormy16-tdep.c (xstormy16_pointer_to_address): Likewise. (xstormy16_address_to_pointer): Likewise. --- gdb/ChangeLog | 23 +++++++++++++++++++++++ gdb/avr-tdep.c | 6 ++++-- gdb/findvar.c | 13 ++++++++----- gdb/gdbarch.c | 8 ++++---- gdb/gdbarch.h | 4 ++-- gdb/gdbarch.sh | 4 ++-- gdb/inferior.h | 12 ++++++++---- gdb/iq2000-tdep.c | 6 ++++-- gdb/m32c-tdep.c | 6 ++++-- gdb/spu-tdep.c | 3 ++- gdb/xstormy16-tdep.c | 6 ++++-- 11 files changed, 65 insertions(+), 26 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 639f864..6755807 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,28 @@ 2009-06-17 Ulrich Weigand + * gdbarch.sh (pointer_to_address): Change to type 'm'. + (address_to_pointer): Likewise. + * gdbarch.c, gdbarch.h: Regenerate. + + * inferior.h (unsigned_pointer_to_address): Add GDBARCH argument. + (signed_pointer_to_address): Likewise. + (unsigned_address_to_pointer, address_to_signed_pointer): Likewise. + * findvar.c (unsigned_pointer_to_address): Likewise. + (signed_pointer_to_address): Likewise. + (unsigned_address_to_pointer, address_to_signed_pointer): Likewise. + + * avr-tdep.c (avr_address_to_pointer): Likewise. + (avr_pointer_to_address): Likewise. + * iq2000-tdep.c (iq2000_pointer_to_address): Likewise. + (iq2000_address_to_pointer): Likewise. + * m32c-tdep.c (m32c_m16c_address_to_pointer): Likewise. + (m32c_m16c_pointer_to_address): Likewise. + * spu-tdep.c (spu_pointer_to_address): Likewise. + * xstormy16-tdep.c (xstormy16_pointer_to_address): Likewise. + (xstormy16_address_to_pointer): Likewise. + +2009-06-17 Ulrich Weigand + * printcmd.c (print_scalar_formatted): Always truncate unsigned data types. diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c index c6073f7..16b27ad 100644 --- a/gdb/avr-tdep.c +++ b/gdb/avr-tdep.c @@ -279,7 +279,8 @@ avr_convert_saddr_to_raw (CORE_ADDR x) /* Convert from address to pointer and vice-versa. */ static void -avr_address_to_pointer (struct type *type, gdb_byte *buf, CORE_ADDR addr) +avr_address_to_pointer (struct gdbarch *gdbarch, + struct type *type, gdb_byte *buf, CORE_ADDR addr) { /* Is it a code address? */ if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC @@ -297,7 +298,8 @@ avr_address_to_pointer (struct type *type, gdb_byte *buf, CORE_ADDR addr) } static CORE_ADDR -avr_pointer_to_address (struct type *type, const gdb_byte *buf) +avr_pointer_to_address (struct gdbarch *gdbarch, + struct type *type, const gdb_byte *buf) { CORE_ADDR addr = extract_unsigned_integer (buf, TYPE_LENGTH (type)); diff --git a/gdb/findvar.c b/gdb/findvar.c index 99629ea..6de0927 100644 --- a/gdb/findvar.c +++ b/gdb/findvar.c @@ -309,13 +309,15 @@ value_of_register_lazy (struct frame_info *frame, int regnum) /* Given a pointer of type TYPE in target form in BUF, return the address it represents. */ CORE_ADDR -unsigned_pointer_to_address (struct type *type, const gdb_byte *buf) +unsigned_pointer_to_address (struct gdbarch *gdbarch, + struct type *type, const gdb_byte *buf) { return extract_unsigned_integer (buf, TYPE_LENGTH (type)); } CORE_ADDR -signed_pointer_to_address (struct type *type, const gdb_byte *buf) +signed_pointer_to_address (struct gdbarch *gdbarch, + struct type *type, const gdb_byte *buf) { return extract_signed_integer (buf, TYPE_LENGTH (type)); } @@ -323,14 +325,15 @@ signed_pointer_to_address (struct type *type, const gdb_byte *buf) /* Given an address, store it as a pointer of type TYPE in target format in BUF. */ void -unsigned_address_to_pointer (struct type *type, gdb_byte *buf, - CORE_ADDR addr) +unsigned_address_to_pointer (struct gdbarch *gdbarch, struct type *type, + gdb_byte *buf, CORE_ADDR addr) { store_unsigned_integer (buf, TYPE_LENGTH (type), addr); } void -address_to_signed_pointer (struct type *type, gdb_byte *buf, CORE_ADDR addr) +address_to_signed_pointer (struct gdbarch *gdbarch, struct type *type, + gdb_byte *buf, CORE_ADDR addr) { store_signed_integer (buf, TYPE_LENGTH (type), addr); } diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index 37b8677..c1975f8 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -317,8 +317,8 @@ struct gdbarch startup_gdbarch = 0, /* register_to_value */ 0, /* value_to_register */ 0, /* value_from_register */ - 0, /* pointer_to_address */ - 0, /* address_to_pointer */ + unsigned_pointer_to_address, /* pointer_to_address */ + unsigned_address_to_pointer, /* address_to_pointer */ 0, /* integer_to_address */ 0, /* return_value */ 0, /* skip_prologue */ @@ -2096,7 +2096,7 @@ gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, const gd gdb_assert (gdbarch->pointer_to_address != NULL); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_pointer_to_address called\n"); - return gdbarch->pointer_to_address (type, buf); + return gdbarch->pointer_to_address (gdbarch, type, buf); } void @@ -2113,7 +2113,7 @@ gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, gdb_byte gdb_assert (gdbarch->address_to_pointer != NULL); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_address_to_pointer called\n"); - gdbarch->address_to_pointer (type, buf, addr); + gdbarch->address_to_pointer (gdbarch, type, buf, addr); } void diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index fa3f82e..b3ba92f 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -359,11 +359,11 @@ typedef struct value * (gdbarch_value_from_register_ftype) (struct type *type, i extern struct value * gdbarch_value_from_register (struct gdbarch *gdbarch, struct type *type, int regnum, struct frame_info *frame); extern void set_gdbarch_value_from_register (struct gdbarch *gdbarch, gdbarch_value_from_register_ftype *value_from_register); -typedef CORE_ADDR (gdbarch_pointer_to_address_ftype) (struct type *type, const gdb_byte *buf); +typedef CORE_ADDR (gdbarch_pointer_to_address_ftype) (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf); extern CORE_ADDR gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, const gdb_byte *buf); extern void set_gdbarch_pointer_to_address (struct gdbarch *gdbarch, gdbarch_pointer_to_address_ftype *pointer_to_address); -typedef void (gdbarch_address_to_pointer_ftype) (struct type *type, gdb_byte *buf, CORE_ADDR addr); +typedef void (gdbarch_address_to_pointer_ftype) (struct gdbarch *gdbarch, struct type *type, gdb_byte *buf, CORE_ADDR addr); extern void gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, gdb_byte *buf, CORE_ADDR addr); extern void set_gdbarch_address_to_pointer (struct gdbarch *gdbarch, gdbarch_address_to_pointer_ftype *address_to_pointer); diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh index e787235..3a1188d 100755 --- a/gdb/gdbarch.sh +++ b/gdb/gdbarch.sh @@ -466,8 +466,8 @@ f:void:value_to_register:struct frame_info *frame, int regnum, struct type *type # (but not the value contents) filled in. f:struct value *:value_from_register:struct type *type, int regnum, struct frame_info *frame:type, regnum, frame::default_value_from_register::0 # -f:CORE_ADDR:pointer_to_address:struct type *type, const gdb_byte *buf:type, buf::unsigned_pointer_to_address::0 -f:void:address_to_pointer:struct type *type, gdb_byte *buf, CORE_ADDR addr:type, buf, addr::unsigned_address_to_pointer::0 +m:CORE_ADDR:pointer_to_address:struct type *type, const gdb_byte *buf:type, buf::unsigned_pointer_to_address::0 +m:void:address_to_pointer:struct type *type, gdb_byte *buf, CORE_ADDR addr:type, buf, addr::unsigned_address_to_pointer::0 M:CORE_ADDR:integer_to_address:struct type *type, const gdb_byte *buf:type, buf # Return the return-value convention that will be used by FUNCTYPE diff --git a/gdb/inferior.h b/gdb/inferior.h index 6c71ef6..c793936 100644 --- a/gdb/inferior.h +++ b/gdb/inferior.h @@ -155,13 +155,17 @@ extern void terminal_save_ours (void); extern void terminal_ours (void); -extern CORE_ADDR unsigned_pointer_to_address (struct type *type, +extern CORE_ADDR unsigned_pointer_to_address (struct gdbarch *gdbarch, + struct type *type, const gdb_byte *buf); -extern void unsigned_address_to_pointer (struct type *type, gdb_byte *buf, +extern void unsigned_address_to_pointer (struct gdbarch *gdbarch, + struct type *type, gdb_byte *buf, CORE_ADDR addr); -extern CORE_ADDR signed_pointer_to_address (struct type *type, +extern CORE_ADDR signed_pointer_to_address (struct gdbarch *gdbarch, + struct type *type, const gdb_byte *buf); -extern void address_to_signed_pointer (struct type *type, gdb_byte *buf, +extern void address_to_signed_pointer (struct gdbarch *gdbarch, + struct type *type, gdb_byte *buf, CORE_ADDR addr); extern void wait_for_inferior (int treat_exec_as_sigtrap); diff --git a/gdb/iq2000-tdep.c b/gdb/iq2000-tdep.c index 8dfe6b2..5c9329c 100644 --- a/gdb/iq2000-tdep.c +++ b/gdb/iq2000-tdep.c @@ -87,7 +87,8 @@ insn_addr_from_ptr (CORE_ADDR ptr) /* target_pointer to CORE_ADDR. */ Convert a target pointer to an address in host (CORE_ADDR) format. */ static CORE_ADDR -iq2000_pointer_to_address (struct type * type, const gdb_byte * buf) +iq2000_pointer_to_address (struct gdbarch *gdbarch, + struct type * type, const gdb_byte * buf) { enum type_code target = TYPE_CODE (TYPE_TARGET_TYPE (type)); CORE_ADDR addr = extract_unsigned_integer (buf, TYPE_LENGTH (type)); @@ -104,7 +105,8 @@ iq2000_pointer_to_address (struct type * type, const gdb_byte * buf) Convert a host-format address (CORE_ADDR) into a target pointer. */ static void -iq2000_address_to_pointer (struct type *type, gdb_byte *buf, CORE_ADDR addr) +iq2000_address_to_pointer (struct gdbarch *gdbarch, + struct type *type, gdb_byte *buf, CORE_ADDR addr) { enum type_code target = TYPE_CODE (TYPE_TARGET_TYPE (type)); diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c index a932d14..a833ef4 100644 --- a/gdb/m32c-tdep.c +++ b/gdb/m32c-tdep.c @@ -2401,7 +2401,8 @@ m32c_skip_trampoline_code (struct frame_info *frame, CORE_ADDR stop_pc) programmer! :) */ static void -m32c_m16c_address_to_pointer (struct type *type, gdb_byte *buf, CORE_ADDR addr) +m32c_m16c_address_to_pointer (struct gdbarch *gdbarch, + struct type *type, gdb_byte *buf, CORE_ADDR addr) { enum type_code target_code; gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR || @@ -2449,7 +2450,8 @@ m32c_m16c_address_to_pointer (struct type *type, gdb_byte *buf, CORE_ADDR addr) static CORE_ADDR -m32c_m16c_pointer_to_address (struct type *type, const gdb_byte *buf) +m32c_m16c_pointer_to_address (struct gdbarch *gdbarch, + struct type *type, const gdb_byte *buf) { CORE_ADDR ptr; enum type_code target_code; diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c index 7b35c0e..949b4fd 100644 --- a/gdb/spu-tdep.c +++ b/gdb/spu-tdep.c @@ -327,7 +327,8 @@ spu_register_reggroup_p (struct gdbarch *gdbarch, int regnum, /* Address conversion. */ static CORE_ADDR -spu_pointer_to_address (struct type *type, const gdb_byte *buf) +spu_pointer_to_address (struct gdbarch *gdbarch, + struct type *type, const gdb_byte *buf) { ULONGEST addr = extract_unsigned_integer (buf, TYPE_LENGTH (type)); ULONGEST lslr = SPU_LS_SIZE - 1; /* Hard-wired LS size. */ diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c index b35ff11..4445d3f 100644 --- a/gdb/xstormy16-tdep.c +++ b/gdb/xstormy16-tdep.c @@ -592,7 +592,8 @@ xstormy16_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc) and vice versa. */ static CORE_ADDR -xstormy16_pointer_to_address (struct type *type, const gdb_byte *buf) +xstormy16_pointer_to_address (struct gdbarch *gdbarch, + struct type *type, const gdb_byte *buf) { enum type_code target = TYPE_CODE (TYPE_TARGET_TYPE (type)); CORE_ADDR addr = extract_unsigned_integer (buf, TYPE_LENGTH (type)); @@ -608,7 +609,8 @@ xstormy16_pointer_to_address (struct type *type, const gdb_byte *buf) } static void -xstormy16_address_to_pointer (struct type *type, gdb_byte *buf, CORE_ADDR addr) +xstormy16_address_to_pointer (struct gdbarch *gdbarch, + struct type *type, gdb_byte *buf, CORE_ADDR addr) { enum type_code target = TYPE_CODE (TYPE_TARGET_TYPE (type)); -- 2.7.4