This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[rfc] [01/15] Add gdbarch to register_name callback (prep)
- From: Markus Deuling <deuling at de dot ibm dot com>
- To: GDB Patches <gdb-patches at sourceware dot org>
- Cc: Ulrich Weigand <uweigand at de dot ibm dot com>
- Date: Wed, 31 Oct 2007 11:45:28 +0100
- Subject: [rfc] [01/15] Add gdbarch to register_name callback (prep)
Hi,
this patch adds gdbarch parameter for register_name call in gdbarch.{sh,c,h}
Is this ok to commit?
ChangeLog:
* gdbarch.sh (register_name): Add gdbarch parameter.
* gdbarch.{c,h}: Regenerate
--
Markus Deuling
GNU Toolchain for Linux on Cell BE
deuling@de.ibm.com
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