aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/infcmd.c25
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.trace/unavailable.exp4
4 files changed, 23 insertions, 17 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d050c23..7089f66 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2013-10-29 Andrew Burgess <aburgess@broadcom.com>
+
+ * 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 <yao@codesourcery.com>
* auto-load.c (auto_load_pspace_data_cleanup): Get data from
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index 4ad8ad3..d678e9f 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 e8f4a08..4ff52cb 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-10-29 Andrew Burgess <aburgess@broadcom.com>
+
+ * gdb.trace/unavailable.exp (gdb_unavailable_registers_test):
+ Expect <unavailable> pattern.
+
2013-10-28 Tom de Vries <tom@codesourcery.com>
* 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 8e2e105..ed14798 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\\*" \
+ "<unavailable>.*<unavailable>" \
"info registers, multiple registers not available"
gdb_test "info registers \$$spreg" \
- "\\*value not available\\*" \
+ "<unavailable>" \
"info registers \$$spreg reports not available"
gdb_test "tfind none" "#0 end .*" "cease trace debugging"