diff options
-rw-r--r-- | gdb/features/rs6000/powerpc-604.c | 13 | ||||
-rw-r--r-- | gdb/features/rs6000/powerpc-604.xml | 1 | ||||
-rw-r--r-- | gdb/features/rs6000/powerpc-750.c | 1 | ||||
-rw-r--r-- | gdb/features/rs6000/powerpc-750.xml | 1 | ||||
-rw-r--r-- | gdb/gdbarch-selftests.c | 21 |
5 files changed, 26 insertions, 11 deletions
diff --git a/gdb/features/rs6000/powerpc-604.c b/gdb/features/rs6000/powerpc-604.c index 09cbb50..16e6c12 100644 --- a/gdb/features/rs6000/powerpc-604.c +++ b/gdb/features/rs6000/powerpc-604.c @@ -141,13 +141,12 @@ initialize_tdesc_powerpc_604 (void) tdesc_create_reg (feature, "hid0", 119, 1, NULL, 32, "int"); tdesc_create_reg (feature, "hid1", 120, 1, NULL, 32, "int"); tdesc_create_reg (feature, "iabr", 121, 1, NULL, 32, "int"); - tdesc_create_reg (feature, "dabr", 122, 1, NULL, 32, "int"); - tdesc_create_reg (feature, "pir", 123, 1, NULL, 32, "int"); - tdesc_create_reg (feature, "mmcr0", 124, 1, NULL, 32, "int"); - tdesc_create_reg (feature, "pmc1", 125, 1, NULL, 32, "int"); - tdesc_create_reg (feature, "pmc2", 126, 1, NULL, 32, "int"); - tdesc_create_reg (feature, "sia", 127, 1, NULL, 32, "int"); - tdesc_create_reg (feature, "sda", 128, 1, NULL, 32, "int"); + tdesc_create_reg (feature, "pir", 122, 1, NULL, 32, "int"); + tdesc_create_reg (feature, "mmcr0", 123, 1, NULL, 32, "int"); + tdesc_create_reg (feature, "pmc1", 124, 1, NULL, 32, "int"); + tdesc_create_reg (feature, "pmc2", 125, 1, NULL, 32, "int"); + tdesc_create_reg (feature, "sia", 126, 1, NULL, 32, "int"); + tdesc_create_reg (feature, "sda", 127, 1, NULL, 32, "int"); tdesc_powerpc_604 = result.release (); } diff --git a/gdb/features/rs6000/powerpc-604.xml b/gdb/features/rs6000/powerpc-604.xml index fbc9e94..052cfbb 100644 --- a/gdb/features/rs6000/powerpc-604.xml +++ b/gdb/features/rs6000/powerpc-604.xml @@ -17,7 +17,6 @@ <reg name="hid0" bitsize="32"/> <reg name="hid1" bitsize="32"/> <reg name="iabr" bitsize="32"/> - <reg name="dabr" bitsize="32"/> <reg name="pir" bitsize="32"/> <reg name="mmcr0" bitsize="32"/> <reg name="pmc1" bitsize="32"/> diff --git a/gdb/features/rs6000/powerpc-750.c b/gdb/features/rs6000/powerpc-750.c index 60a7b41..3c9e7e1 100644 --- a/gdb/features/rs6000/powerpc-750.c +++ b/gdb/features/rs6000/powerpc-750.c @@ -141,7 +141,6 @@ initialize_tdesc_powerpc_750 (void) tdesc_create_reg (feature, "hid0", 119, 1, NULL, 32, "int"); tdesc_create_reg (feature, "hid1", 120, 1, NULL, 32, "int"); tdesc_create_reg (feature, "iabr", 121, 1, NULL, 32, "int"); - tdesc_create_reg (feature, "dabr", 122, 1, NULL, 32, "int"); tdesc_create_reg (feature, "ummcr0", 124, 1, NULL, 32, "int"); tdesc_create_reg (feature, "upmc1", 125, 1, NULL, 32, "int"); tdesc_create_reg (feature, "upmc2", 126, 1, NULL, 32, "int"); diff --git a/gdb/features/rs6000/powerpc-750.xml b/gdb/features/rs6000/powerpc-750.xml index 908ecbd..dfc5a87 100644 --- a/gdb/features/rs6000/powerpc-750.xml +++ b/gdb/features/rs6000/powerpc-750.xml @@ -17,7 +17,6 @@ <reg name="hid0" bitsize="32"/> <reg name="hid1" bitsize="32"/> <reg name="iabr" bitsize="32"/> - <reg name="dabr" bitsize="32"/> <reg name="ummcr0" bitsize="32" regnum="124"/> <reg name="upmc1" bitsize="32"/> <reg name="upmc2" bitsize="32"/> diff --git a/gdb/gdbarch-selftests.c b/gdb/gdbarch-selftests.c index 6825441..fa3f4d1 100644 --- a/gdb/gdbarch-selftests.c +++ b/gdb/gdbarch-selftests.c @@ -27,6 +27,8 @@ #include "gdbarch.h" #include "scoped-mock-context.h" +#include <map> + namespace selftests { /* Test gdbarch methods register_to_value and value_to_register. */ @@ -129,6 +131,9 @@ register_name_test (struct gdbarch *gdbarch) { scoped_mock_context<test_target_ops> mockctx (gdbarch); + /* Track the number of times each register name appears. */ + std::map<const std::string, int> name_counts; + const int num_regs = gdbarch_num_cooked_regs (gdbarch); for (auto regnum = 0; regnum < num_regs; regnum++) { @@ -141,8 +146,22 @@ register_name_test (struct gdbarch *gdbarch) debug_printf ("arch: %s, register: %d returned nullptr\n", gdbarch_bfd_arch_info (gdbarch)->printable_name, regnum); - SELF_CHECK (name != nullptr); + + /* Every register name, that is not the empty string, should be + unique. If this is not the case then the user will see duplicate + copies of the register in e.g. 'info registers' output, but will + only be able to interact with one of the copies. */ + if (*name != '\0') + { + std::string s (name); + name_counts[s]++; + if (run_verbose() && name_counts[s] > 1) + debug_printf ("arch: %s, register: %d (%s) is a duplicate\n", + gdbarch_bfd_arch_info (gdbarch)->printable_name, + regnum, name); + SELF_CHECK (name_counts[s] == 1); + } } } |