forked from Imagelibrary/binutils-gdb
Use ui-out table in "maint print reggroups"
This changes the "maint print reggroups" command to use a ui-out table rather than printf. It also fixes a typo I noticed in a related test case name; and lets us finally remove the leading \s from the regexp in completion.exp. Reviewed-by: Christina Schimpe <christina.schimpe@intel.com> Approved-By: Andrew Burgess <aburgess@redhat.com>
This commit is contained in:
@@ -186,16 +186,19 @@ reggroup_find (struct gdbarch *gdbarch, const char *name)
|
|||||||
/* Dump out a table of register groups for the current architecture. */
|
/* Dump out a table of register groups for the current architecture. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
reggroups_dump (struct gdbarch *gdbarch, struct ui_file *file)
|
reggroups_dump (gdbarch *gdbarch, ui_out *out)
|
||||||
{
|
{
|
||||||
static constexpr const char *fmt = " %-10s %-10s\n";
|
ui_out_emit_table table (out, 2, -1, "RegGroups");
|
||||||
|
out->table_header (10, ui_left, "group", "Group");
|
||||||
gdb_printf (file, fmt, "Group", "Type");
|
out->table_header (10, ui_left, "type", "Type");
|
||||||
|
out->table_body ();
|
||||||
|
|
||||||
for (const struct reggroup *group : gdbarch_reggroups (gdbarch))
|
for (const struct reggroup *group : gdbarch_reggroups (gdbarch))
|
||||||
{
|
{
|
||||||
|
ui_out_emit_tuple tuple_emitter (out, nullptr);
|
||||||
|
|
||||||
/* Group name. */
|
/* Group name. */
|
||||||
const char *name = group->name ();
|
out->field_string ("group", group->name ());
|
||||||
|
|
||||||
/* Group type. */
|
/* Group type. */
|
||||||
const char *type;
|
const char *type;
|
||||||
@@ -214,8 +217,8 @@ reggroups_dump (struct gdbarch *gdbarch, struct ui_file *file)
|
|||||||
|
|
||||||
/* Note: If you change this, be sure to also update the
|
/* Note: If you change this, be sure to also update the
|
||||||
documentation. */
|
documentation. */
|
||||||
|
out->field_string ("type", type);
|
||||||
gdb_printf (file, fmt, name, type);
|
out->text ("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,14 +230,15 @@ maintenance_print_reggroups (const char *args, int from_tty)
|
|||||||
struct gdbarch *gdbarch = get_current_arch ();
|
struct gdbarch *gdbarch = get_current_arch ();
|
||||||
|
|
||||||
if (args == NULL)
|
if (args == NULL)
|
||||||
reggroups_dump (gdbarch, gdb_stdout);
|
reggroups_dump (gdbarch, current_uiout);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stdio_file file;
|
stdio_file file;
|
||||||
|
|
||||||
if (!file.open (args, "w"))
|
if (!file.open (args, "w"))
|
||||||
perror_with_name (_("maintenance print reggroups"));
|
perror_with_name (_("maintenance print reggroups"));
|
||||||
reggroups_dump (gdbarch, &file);
|
ui_out_redirect_pop redirect (current_uiout, &file);
|
||||||
|
reggroups_dump (gdbarch, current_uiout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ append regs_output "\n"
|
|||||||
append regs_output [capture_command_output "mt print user-registers" \
|
append regs_output [capture_command_output "mt print user-registers" \
|
||||||
".*Name.*Nr\[^\n]*\n"]
|
".*Name.*Nr\[^\n]*\n"]
|
||||||
set all_regs {}
|
set all_regs {}
|
||||||
foreach {- reg} [regexp -all -inline -line {^\s*(\w+)} $regs_output] {
|
foreach {- reg} [regexp -all -inline -line {^(\w+)} $regs_output] {
|
||||||
lappend all_regs $reg
|
lappend all_regs $reg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,10 +39,10 @@ proc fetch_reggroups {test} {
|
|||||||
-re "maint print reggroups\r\n" {
|
-re "maint print reggroups\r\n" {
|
||||||
exp_continue
|
exp_continue
|
||||||
}
|
}
|
||||||
-re "^ Group\[ \t\]+Type\[ \t\]+\r\n" {
|
-re "^Group\[ \t\]+Type\[ \t\]+\r\n" {
|
||||||
exp_continue
|
exp_continue
|
||||||
}
|
}
|
||||||
-re "^ (\[_0-9a-zA-Z-\]+)\[ \t\]+(user|internal)\[ \t\]+\r\n" {
|
-re "^(\[_0-9a-zA-Z-\]+)\[ \t\]+(user|internal)\[ \t\]+\r\n" {
|
||||||
lappend reggroups $expect_out(1,string)
|
lappend reggroups $expect_out(1,string)
|
||||||
exp_continue
|
exp_continue
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,10 +32,10 @@ if ![runto_main] {
|
|||||||
set groups {}
|
set groups {}
|
||||||
set test "maint print reggroups"
|
set test "maint print reggroups"
|
||||||
gdb_test_multiple $test $test {
|
gdb_test_multiple $test $test {
|
||||||
-re ".*Group\[ \t\]+Type\[ \t\]+\r\n" {
|
-re "Group\[ \t\]+Type\[ \t\]+\r\n" {
|
||||||
exp_continue
|
exp_continue
|
||||||
}
|
}
|
||||||
-re "^ (\[^ \t\]+)\[ \t\]+\[^\r\n\]+\r\n" {
|
-re "^(\[^ \t\]+)\[ \t\]+\[^\r\n\]+\r\n" {
|
||||||
lappend groups $expect_out(1,string)
|
lappend groups $expect_out(1,string)
|
||||||
exp_continue
|
exp_continue
|
||||||
}
|
}
|
||||||
@@ -74,7 +74,7 @@ gdb_test_multiple "python print (\"\\n\".join (groups))" \
|
|||||||
gdb_assert {[llength $py_groups] > 0} \
|
gdb_assert {[llength $py_groups] > 0} \
|
||||||
"Found at least one register group from python"
|
"Found at least one register group from python"
|
||||||
gdb_assert {[llength $py_groups] == [llength $groups]} \
|
gdb_assert {[llength $py_groups] == [llength $groups]} \
|
||||||
"Same numnber of registers groups found"
|
"Same number of registers groups found"
|
||||||
|
|
||||||
set found_non_match 0
|
set found_non_match 0
|
||||||
for { set i 0 } { $i < [llength $groups] } { incr i } {
|
for { set i 0 } { $i < [llength $groups] } { incr i } {
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ gdb_test "ptype \$mixed_flags" \
|
|||||||
"type = flag mixed_flags {\r\n *bool A @0;\r\n *uint32_t B @1-3;\r\n *bool C @4;\r\n *uint32_t D @5;\r\n *uint32_t @6-7;\r\n *enum Z_values {yes = 1, no = 0, maybe = 2, so} Z @8-9;\r\n}"
|
"type = flag mixed_flags {\r\n *bool A @0;\r\n *uint32_t B @1-3;\r\n *bool C @4;\r\n *uint32_t D @5;\r\n *uint32_t @6-7;\r\n *enum Z_values {yes = 1, no = 0, maybe = 2, so} Z @8-9;\r\n}"
|
||||||
# Reggroups should have at least general and the extra foo group
|
# Reggroups should have at least general and the extra foo group
|
||||||
gdb_test "maintenance print reggroups" \
|
gdb_test "maintenance print reggroups" \
|
||||||
" Group\[ \t\]+Type\[ \t\]+\r\n.* general\[ \t\]+user\[ \t\]+\r\n.* foo\[ \t\]+user\[ \t\]+"
|
"Group\[ \t\]+Type\[ \t\]+\r\n.*general\[ \t\]+user\[ \t\]+\r\n.*foo\[ \t\]+user\[ \t\]+"
|
||||||
|
|
||||||
with_test_prefix "core-only.xml" {
|
with_test_prefix "core-only.xml" {
|
||||||
load_description "core-only.xml" "" "test-regs.xml"
|
load_description "core-only.xml" "" "test-regs.xml"
|
||||||
|
|||||||
Reference in New Issue
Block a user