diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cp/m-static.exp | 2 | ||||
-rw-r--r-- | gdb/value.c | 8 |
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); |