aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.cp/m-static.exp2
-rw-r--r--gdb/value.c8
4 files changed, 15 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2297568..00ed7e7 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2018-02-07 Simon Marchi <simon.marchi@ericsson.com>
+
+ * value.c (value_static_field): Assign field type instead of
+ containing type when returning an optimized out value.
+
2018-02-06 Yao Qi <yao.qi@linaro.org>
* ft32-tdep.c (ft32_read_pc): Remove.
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 0af50b0..18512b9 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-02-07 Simon Marchi <simon.marchi@ericsson.com>
+
+ * gdb.cp/m-static.exp: Check type of optimized out static
+ member.
+
2018-02-03 Andrew Burgess <andrew.burgess@embecosm.com>
* config/sid.exp (gdb_target_sid): Remove use of cleanup.
diff --git a/gdb/testsuite/gdb.cp/m-static.exp b/gdb/testsuite/gdb.cp/m-static.exp
index 6566171..ffcbf53 100644
--- a/gdb/testsuite/gdb.cp/m-static.exp
+++ b/gdb/testsuite/gdb.cp/m-static.exp
@@ -165,6 +165,8 @@ if {[test_compiler_info {gcc-[0-3]-*}]
setup_xfail *-*-*
}
gdb_test "print test4.nowhere" "<optimized out>" "static const int initialized nowhere (print field)"
+gdb_test "ptype test4.nowhere" "type = const int"
+gdb_test "print test4.nowhere.nowhere" "Attempt to extract a component of a value that is not a structure."
# Same, but print the whole struct.
gdb_test "print test4" "static nowhere = <optimized out>.*" "static const int initialized nowhere (whole struct)"
diff --git a/gdb/value.c b/gdb/value.c
index 9a144fb..9cd9a2f 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -2976,14 +2976,12 @@ value_static_field (struct type *type, int fieldno)
reported as non-debuggable symbols. */
struct bound_minimal_symbol msym
= lookup_minimal_symbol (phys_name, NULL, NULL);
+ struct type *field_type = TYPE_FIELD_TYPE (type, fieldno);
if (!msym.minsym)
- return allocate_optimized_out_value (type);
+ retval = allocate_optimized_out_value (field_type);
else
- {
- retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno),
- BMSYMBOL_VALUE_ADDRESS (msym));
- }
+ retval = value_at_lazy (field_type, BMSYMBOL_VALUE_ADDRESS (msym));
}
else
retval = value_of_variable (sym.symbol, sym.block);