* gdbarch.sh (DEPRECATED_REGISTER_CONVERTIBLE): Add predicate.
* gdbarch.h, gdbarch.c: Re-generate.
* arch-utils.c (deprecated_register_convertible_not): Delete.
* arch-utils.h (deprecated_register_convertible_not): Delete.
* mi/mi-main.c (get_register): Update. Update copyright.
* infcmd.c (default_print_registers_info): Update.
2004-02-14 Andrew Cagney <cagney@redhat.com>
+ * gdbarch.sh (DEPRECATED_REGISTER_CONVERTIBLE): Add predicate.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * arch-utils.c (deprecated_register_convertible_not): Delete.
+ * arch-utils.h (deprecated_register_convertible_not): Delete.
+ * mi/mi-main.c (get_register): Update. Update copyright.
+ * infcmd.c (default_print_registers_info): Update.
+
* gdbarch.sh (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED): Delete.
(DEPRECATED_CALL_DUMMY_STACK_ADJUST): Delete.
(DEPRECATED_CALL_DUMMY_ADDRESS): Delete.
/* Misc helper functions for targets. */
-int
-deprecated_register_convertible_not (int num)
-{
- return 0;
-}
-
-
CORE_ADDR
core_addr_identity (CORE_ADDR addr)
{
/* gdbarch trace variable */
extern int gdbarch_debug;
-/* Fallback for register convertible. */
-extern gdbarch_deprecated_register_convertible_ftype deprecated_register_convertible_not;
-
/* Implementation of extract return value that grubs around in the
register cache. */
extern gdbarch_extract_return_value_ftype legacy_extract_return_value;
current_gdbarch->cannot_fetch_register = cannot_register_not;
current_gdbarch->cannot_store_register = cannot_register_not;
current_gdbarch->deprecated_pc_in_call_dummy = generic_pc_in_call_dummy;
- current_gdbarch->deprecated_register_convertible = deprecated_register_convertible_not;
current_gdbarch->convert_register_p = legacy_convert_register_p;
current_gdbarch->register_to_value = legacy_register_to_value;
current_gdbarch->value_to_register = legacy_value_to_register;
/* Skip verify of deprecated_init_frame_pc_first, has predicate */
/* Skip verify of deprecated_init_frame_pc, has predicate */
/* Skip verify of deprecated_get_saved_register, has predicate */
- /* Skip verify of deprecated_register_convertible, invalid_p == 0 */
+ /* Skip verify of deprecated_register_convertible, has predicate */
/* Skip verify of deprecated_register_convert_to_virtual, invalid_p == 0 */
/* Skip verify of deprecated_register_convert_to_raw, invalid_p == 0 */
/* Skip verify of convert_register_p, invalid_p == 0 */
"gdbarch_dump: DEPRECATED_REGISTER_BYTES = %d\n",
DEPRECATED_REGISTER_BYTES);
#endif
+#ifdef DEPRECATED_REGISTER_CONVERTIBLE_P
+ fprintf_unfiltered (file,
+ "gdbarch_dump: %s # %s\n",
+ "DEPRECATED_REGISTER_CONVERTIBLE_P()",
+ XSTRING (DEPRECATED_REGISTER_CONVERTIBLE_P ()));
+ fprintf_unfiltered (file,
+ "gdbarch_dump: DEPRECATED_REGISTER_CONVERTIBLE_P() = %d\n",
+ DEPRECATED_REGISTER_CONVERTIBLE_P ());
+#endif
#ifdef DEPRECATED_REGISTER_CONVERTIBLE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
gdbarch->deprecated_get_saved_register = deprecated_get_saved_register;
}
+int
+gdbarch_deprecated_register_convertible_p (struct gdbarch *gdbarch)
+{
+ gdb_assert (gdbarch != NULL);
+ return gdbarch->deprecated_register_convertible != NULL;
+}
+
int
gdbarch_deprecated_register_convertible (struct gdbarch *gdbarch, int nr)
{
/* For register <-> value conversions, replaced by CONVERT_REGISTER_P et.al.
For raw <-> cooked register conversions, replaced by pseudo registers. */
+#if defined (DEPRECATED_REGISTER_CONVERTIBLE)
+/* Legacy for systems yet to multi-arch DEPRECATED_REGISTER_CONVERTIBLE */
+#if !defined (DEPRECATED_REGISTER_CONVERTIBLE_P)
+#define DEPRECATED_REGISTER_CONVERTIBLE_P() (1)
+#endif
+#endif
+
+extern int gdbarch_deprecated_register_convertible_p (struct gdbarch *gdbarch);
+#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_CONVERTIBLE_P)
+#error "Non multi-arch definition of DEPRECATED_REGISTER_CONVERTIBLE"
+#endif
+#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_REGISTER_CONVERTIBLE_P)
+#define DEPRECATED_REGISTER_CONVERTIBLE_P() (gdbarch_deprecated_register_convertible_p (current_gdbarch))
+#endif
+
typedef int (gdbarch_deprecated_register_convertible_ftype) (int nr);
extern int gdbarch_deprecated_register_convertible (struct gdbarch *gdbarch, int nr);
extern void set_gdbarch_deprecated_register_convertible (struct gdbarch *gdbarch, gdbarch_deprecated_register_convertible_ftype *deprecated_register_convertible);
#
# For register <-> value conversions, replaced by CONVERT_REGISTER_P et.al.
# For raw <-> cooked register conversions, replaced by pseudo registers.
-f:2:DEPRECATED_REGISTER_CONVERTIBLE:int:deprecated_register_convertible:int nr:nr:::deprecated_register_convertible_not::0
+F::DEPRECATED_REGISTER_CONVERTIBLE:int:deprecated_register_convertible:int nr:nr
# For register <-> value conversions, replaced by CONVERT_REGISTER_P et.al.
# For raw <-> cooked register conversions, replaced by pseudo registers.
f:2:DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL:void:deprecated_register_convert_to_virtual:int regnum, struct type *type, char *from, char *to:regnum, type, from, to:::0::0
The function frame_register_read() should have returned the
pre-cooked register so no conversion is necessary. */
/* Convert raw data to virtual format if necessary. */
- if (DEPRECATED_REGISTER_CONVERTIBLE (i))
+ if (DEPRECATED_REGISTER_CONVERTIBLE_P ()
+ && DEPRECATED_REGISTER_CONVERTIBLE (i))
{
DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL (i, register_type (current_gdbarch, i),
raw_buffer, virtual_buffer);
/* MI Command Set.
- Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+ Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation,
+ Inc.
+
Contributed by Cygnus Solutions (a Red Hat company).
This file is part of GDB.
/* Convert raw data to virtual format if necessary. */
- if (DEPRECATED_REGISTER_CONVERTIBLE (regnum))
+ if (DEPRECATED_REGISTER_CONVERTIBLE_P ()
+ && DEPRECATED_REGISTER_CONVERTIBLE (regnum))
{
DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL (regnum,
register_type (current_gdbarch, regnum),