From f69d9aef9b66d371f2abab8ef2178043362bf350 Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Tue, 29 Oct 2013 13:24:11 +0000 Subject: [PATCH] Print for unavailable registers in info register output. https://sourceware.org/ml/gdb-patches/2013-08/msg00171.html gdb/ChangeLog * infcmd.c (default_print_one_register_info): Use val_print to print all values even optimized out or unavailable ones. Don't try to print a raw form of optimized out or unavailable values. gdb/testsuite/ChangeLog * gdb.trace/unavailable.exp (gdb_unavailable_registers_test): Expect pattern. --- gdb/ChangeLog | 6 ++++++ gdb/infcmd.c | 25 ++++++++++--------------- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.trace/unavailable.exp | 4 ++-- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d050c23bc3..7089f6642c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2013-10-29 Andrew Burgess + + * infcmd.c (default_print_one_register_info): Use val_print to + print all values even optimized out or unavailable ones. Don't + try to print a raw form of optimized out or unavailable values. + 2013-10-29 Yao Qi * auto-load.c (auto_load_pspace_data_cleanup): Get data from diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 4ad8ad3073..d678e9f080 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -2028,21 +2028,13 @@ default_print_one_register_info (struct ui_file *file, struct value *val) { struct type *regtype = value_type (val); + int print_raw_format; fputs_filtered (name, file); print_spaces_filtered (15 - strlen (name), file); - if (!value_entirely_available (val)) - { - fprintf_filtered (file, "*value not available*\n"); - return; - } - else if (value_optimized_out (val)) - { - val_print_optimized_out (val, file); - fprintf_filtered (file, "\n"); - return; - } + print_raw_format = (value_entirely_available (val) + && !value_optimized_out (val)); /* If virtual format is floating, print it that way, and in raw hex. */ @@ -2062,9 +2054,12 @@ default_print_one_register_info (struct ui_file *file, value_embedded_offset (val), 0, file, 0, val, &opts, current_language); - fprintf_filtered (file, "\t(raw "); - print_hex_chars (file, valaddr, TYPE_LENGTH (regtype), byte_order); - fprintf_filtered (file, ")"); + if (print_raw_format) + { + fprintf_filtered (file, "\t(raw "); + print_hex_chars (file, valaddr, TYPE_LENGTH (regtype), byte_order); + fprintf_filtered (file, ")"); + } } else { @@ -2079,7 +2074,7 @@ default_print_one_register_info (struct ui_file *file, file, 0, val, &opts, current_language); /* If not a vector register, print it also according to its natural format. */ - if (TYPE_VECTOR (regtype) == 0) + if (print_raw_format && TYPE_VECTOR (regtype) == 0) { get_user_print_options (&opts); opts.deref_ref = 1; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index e8f4a0842f..4ff52cb932 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-10-29 Andrew Burgess + + * gdb.trace/unavailable.exp (gdb_unavailable_registers_test): + Expect pattern. + 2013-10-28 Tom de Vries * gdb.arch/thumb2-it.S (it_8): Fix typo. diff --git a/gdb/testsuite/gdb.trace/unavailable.exp b/gdb/testsuite/gdb.trace/unavailable.exp index 8e2e105803..ed14798ba7 100644 --- a/gdb/testsuite/gdb.trace/unavailable.exp +++ b/gdb/testsuite/gdb.trace/unavailable.exp @@ -297,11 +297,11 @@ proc gdb_unavailable_registers_test { } { test_register "\$pc" gdb_test "info registers" \ - "\\*value not available\\*.*\\*value not available\\*" \ + ".*" \ "info registers, multiple registers not available" gdb_test "info registers \$$spreg" \ - "\\*value not available\\*" \ + "" \ "info registers \$$spreg reports not available" gdb_test "tfind none" "#0 end .*" "cease trace debugging" -- 2.34.1