aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/gdbarch.c18
-rw-r--r--gdb/gdbarch.h25
-rwxr-xr-xgdb/gdbarch.sh9
-rw-r--r--gdb/mips-tdep.c5
-rw-r--r--gdb/value.c7
6 files changed, 23 insertions, 47 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 668c2ad..4c430f6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2005-01-27 Andrew Cagney <cagney@gnu.org>
+ * gdbarch.sh (integer_to_address): Change buf parameter to a const
+ bfd_byte, make pure-multi-arch.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * mips-tdep.c (mips_integer_to_address): Update.
+ * value.c (value_as_address): Update.
+
* cli/cli-dump.h (fopen_with_cleanup): Make "filename" const.
* cli/cli-dump.c (dump_binary_file, dump_bfd_file): Make string
parameters const, change buf to a const bfd_byte.
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
index c277e91..1db69c2 100644
--- a/gdb/gdbarch.c
+++ b/gdb/gdbarch.c
@@ -2,7 +2,7 @@
/* Dynamic architecture support for GDB, the GNU debugger.
- Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
Software Foundation, Inc.
This file is part of GDB.
@@ -1203,21 +1203,9 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
fprintf_unfiltered (file,
"gdbarch_dump: int_bit = %s\n",
paddr_d (current_gdbarch->int_bit));
-#ifdef INTEGER_TO_ADDRESS_P
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "INTEGER_TO_ADDRESS_P()",
- XSTRING (INTEGER_TO_ADDRESS_P ()));
-#endif
fprintf_unfiltered (file,
"gdbarch_dump: gdbarch_integer_to_address_p() = %d\n",
gdbarch_integer_to_address_p (current_gdbarch));
-#ifdef INTEGER_TO_ADDRESS
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "INTEGER_TO_ADDRESS(type, buf)",
- XSTRING (INTEGER_TO_ADDRESS (type, buf)));
-#endif
fprintf_unfiltered (file,
"gdbarch_dump: integer_to_address = <0x%lx>\n",
(long) current_gdbarch->integer_to_address);
@@ -2714,13 +2702,13 @@ gdbarch_integer_to_address_p (struct gdbarch *gdbarch)
}
CORE_ADDR
-gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf)
+gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, const bfd_byte *buf)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->integer_to_address != NULL);
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_integer_to_address called\n");
- return gdbarch->integer_to_address (type, buf);
+ return gdbarch->integer_to_address (gdbarch, type, buf);
}
void
diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h
index 4ab8ea5..5952ef1 100644
--- a/gdb/gdbarch.h
+++ b/gdb/gdbarch.h
@@ -2,7 +2,7 @@
/* Dynamic architecture support for GDB, the GNU debugger.
- Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
Software Foundation, Inc.
This file is part of GDB.
@@ -747,30 +747,11 @@ extern void set_gdbarch_address_to_pointer (struct gdbarch *gdbarch, gdbarch_add
#define ADDRESS_TO_POINTER(type, buf, addr) (gdbarch_address_to_pointer (current_gdbarch, type, buf, addr))
#endif
-#if defined (INTEGER_TO_ADDRESS)
-/* Legacy for systems yet to multi-arch INTEGER_TO_ADDRESS */
-#if !defined (INTEGER_TO_ADDRESS_P)
-#define INTEGER_TO_ADDRESS_P() (1)
-#endif
-#endif
-
extern int gdbarch_integer_to_address_p (struct gdbarch *gdbarch);
-#if !defined (GDB_TM_FILE) && defined (INTEGER_TO_ADDRESS_P)
-#error "Non multi-arch definition of INTEGER_TO_ADDRESS"
-#endif
-#if !defined (INTEGER_TO_ADDRESS_P)
-#define INTEGER_TO_ADDRESS_P() (gdbarch_integer_to_address_p (current_gdbarch))
-#endif
-typedef CORE_ADDR (gdbarch_integer_to_address_ftype) (struct type *type, void *buf);
-extern CORE_ADDR gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf);
+typedef CORE_ADDR (gdbarch_integer_to_address_ftype) (struct gdbarch *gdbarch, struct type *type, const bfd_byte *buf);
+extern CORE_ADDR gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, const bfd_byte *buf);
extern void set_gdbarch_integer_to_address (struct gdbarch *gdbarch, gdbarch_integer_to_address_ftype *integer_to_address);
-#if !defined (GDB_TM_FILE) && defined (INTEGER_TO_ADDRESS)
-#error "Non multi-arch definition of INTEGER_TO_ADDRESS"
-#endif
-#if !defined (INTEGER_TO_ADDRESS)
-#define INTEGER_TO_ADDRESS(type, buf) (gdbarch_integer_to_address (current_gdbarch, type, buf))
-#endif
/* NOTE: cagney/2003-03-24: Replaced by PUSH_ARGUMENTS. */
diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh
index aa0cd62..1713def 100755
--- a/gdb/gdbarch.sh
+++ b/gdb/gdbarch.sh
@@ -2,9 +2,8 @@
# Architecture commands for GDB, the GNU debugger.
#
-# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
-# Foundation, Inc.
-#
+# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
+# Software Foundation, Inc.
#
# This file is part of GDB.
#
@@ -500,7 +499,7 @@ f:=:void:value_to_register:struct frame_info *frame, int regnum, struct type *ty
#
f:=:CORE_ADDR:pointer_to_address:struct type *type, const void *buf:type, buf::unsigned_pointer_to_address::0
f:=:void:address_to_pointer:struct type *type, void *buf, CORE_ADDR addr:type, buf, addr::unsigned_address_to_pointer::0
-F:=:CORE_ADDR:integer_to_address:struct type *type, void *buf:type, buf
+M::CORE_ADDR:integer_to_address:struct type *type, const bfd_byte *buf:type, buf
#
# NOTE: cagney/2003-03-24: Replaced by PUSH_ARGUMENTS.
F:=:void:deprecated_store_struct_return:CORE_ADDR addr, CORE_ADDR sp:addr, sp
@@ -714,7 +713,7 @@ cat <<EOF
/* Dynamic architecture support for GDB, the GNU debugger.
- Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
Software Foundation, Inc.
This file is part of GDB.
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 8d9d855..33ad1e9 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -1,7 +1,7 @@
/* Target-dependent code for the MIPS architecture, for GDB, the GNU Debugger.
Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
Foundation, Inc.
Contributed by Alessandro Forin(af@cs.cmu.edu) at CMU
@@ -4596,7 +4596,8 @@ mips_register_sim_regno (int regnum)
guarenteed to be correctly sign extended. */
static CORE_ADDR
-mips_integer_to_address (struct type *type, void *buf)
+mips_integer_to_address (struct gdbarch *gdbarch,
+ struct type *type, const bfd_byte *buf)
{
char *tmp = alloca (TYPE_LENGTH (builtin_type_void_data_ptr));
LONGEST val = unpack_long (type, buf);
diff --git a/gdb/value.c b/gdb/value.c
index 5afc5b4..3835a8a 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -654,7 +654,7 @@ value_as_address (struct value *val)
take an address from a disassembly listing and give it to `x/i'.
This is certainly important.
- Adding an architecture method like INTEGER_TO_ADDRESS certainly
+ Adding an architecture method like integer_to_address() certainly
makes it possible for GDB to "get it right" in all circumstances
--- the target has complete control over how things get done, so
people can Do The Right Thing for their target without breaking
@@ -664,8 +664,9 @@ value_as_address (struct value *val)
if (TYPE_CODE (value_type (val)) != TYPE_CODE_PTR
&& TYPE_CODE (value_type (val)) != TYPE_CODE_REF
- && INTEGER_TO_ADDRESS_P ())
- return INTEGER_TO_ADDRESS (value_type (val), VALUE_CONTENTS (val));
+ && gdbarch_integer_to_address_p (current_gdbarch))
+ return gdbarch_integer_to_address (current_gdbarch, value_type (val),
+ VALUE_CONTENTS (val));
return unpack_long (value_type (val), VALUE_CONTENTS (val));
#endif