diff -urpN src/gdb/gdbarch.c dev/gdb/gdbarch.c --- src/gdb/gdbarch.c 2007-10-19 14:26:33.000000000 +0200 +++ dev/gdb/gdbarch.c 2007-10-30 11:05:56.000000000 +0100 @@ -527,6 +527,7 @@ verify_gdbarch (struct gdbarch *current_ /* Skip verify of dwarf_reg_to_regnum, invalid_p == 0 */ /* Skip verify of sdb_reg_to_regnum, invalid_p == 0 */ /* Skip verify of dwarf2_reg_to_regnum, invalid_p == 0 */ + /* Skip verify of register_name, has predicate */ /* Skip verify of register_type, has predicate */ /* Skip verify of unwind_dummy_id, has predicate */ /* Skip verify of deprecated_fp_regnum, invalid_p == 0 */ @@ -912,6 +913,9 @@ gdbarch_dump (struct gdbarch *current_gd "gdbarch_dump: read_pc = <0x%lx>\n", (long) current_gdbarch->read_pc); fprintf_unfiltered (file, + "gdbarch_dump: gdbarch_register_name_p() = %d\n", + gdbarch_register_name_p (current_gdbarch)); + fprintf_unfiltered (file, "gdbarch_dump: register_name = <0x%lx>\n", (long) current_gdbarch->register_name); fprintf_unfiltered (file, @@ -1610,6 +1614,13 @@ set_gdbarch_dwarf2_reg_to_regnum (struct gdbarch->dwarf2_reg_to_regnum = dwarf2_reg_to_regnum; } +int +gdbarch_register_name_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->register_name != NULL; +} + const char * gdbarch_register_name (struct gdbarch *gdbarch, int regnr) { @@ -1617,7 +1628,7 @@ gdbarch_register_name (struct gdbarch *g gdb_assert (gdbarch->register_name != NULL); if (gdbarch_debug >= 2) fprintf_unfiltered (gdb_stdlog, "gdbarch_register_name called\n"); - return gdbarch->register_name (regnr); + return gdbarch->register_name (gdbarch, regnr); } void diff -urpN src/gdb/gdbarch.h dev/gdb/gdbarch.h --- src/gdb/gdbarch.h 2007-10-19 14:26:33.000000000 +0200 +++ dev/gdb/gdbarch.h 2007-10-30 11:05:47.000000000 +0100 @@ -232,7 +232,9 @@ typedef int (gdbarch_dwarf2_reg_to_regnu extern int gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int dwarf2_regnr); extern void set_gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_dwarf2_reg_to_regnum_ftype *dwarf2_reg_to_regnum); -typedef const char * (gdbarch_register_name_ftype) (int regnr); +extern int gdbarch_register_name_p (struct gdbarch *gdbarch); + +typedef const char * (gdbarch_register_name_ftype) (struct gdbarch *gdbarch, int regnr); extern const char * gdbarch_register_name (struct gdbarch *gdbarch, int regnr); extern void set_gdbarch_register_name (struct gdbarch *gdbarch, gdbarch_register_name_ftype *register_name); diff -urpN src/gdb/gdbarch.sh dev/gdb/gdbarch.sh --- src/gdb/gdbarch.sh 2007-10-19 14:34:38.000000000 +0200 +++ dev/gdb/gdbarch.sh 2007-10-30 11:05:09.000000000 +0100 @@ -421,7 +421,7 @@ f:int:dwarf_reg_to_regnum:int dwarf_regn # Convert from an sdb register number to an internal gdb register number. f:int:sdb_reg_to_regnum:int sdb_regnr:sdb_regnr::no_op_reg_to_regnum::0 f:int:dwarf2_reg_to_regnum:int dwarf2_regnr:dwarf2_regnr::no_op_reg_to_regnum::0 -f:const char *:register_name:int regnr:regnr +M:const char *:register_name:int regnr:regnr # Return the type of a register specified by the architecture. Only # the register cache should call this function directly; others should