Fetch lazy value before calling val_print
authorYao Qi <yao.qi@linaro.org>
Fri, 3 Mar 2017 17:16:19 +0000 (17:16 +0000)
committerYao Qi <yao.qi@linaro.org>
Fri, 3 Mar 2017 17:16:19 +0000 (17:16 +0000)
commit7d45f3df96ca108f6d7d0c5e4279e22b820145fa
tree392d5cee7de9d4562d1f7ebbbf09e664b36820ab
parent611a3ca929d6529f4e7576b0e2ffb588839c1b21
Fetch lazy value before calling val_print

As reported in PR 21165,

(gdb) info locals^M
gv = /home/yao/SourceCode/gnu/gdb/git/gdb/value.c:372: internal-error: int value_bits_any_optimized_out(const value*, int, int): Assertion `!value->lazy' failed.^M
A problem internal to GDB has been detected,^M
further debugging may prove unreliable.^M
Quit this debugging session? (y or n) FAIL: gdb.ada/info_locals_renaming.exp: info locals (GDB internal error)
Resyncing due to internal error.

This internal error is caused by e8b24d9 (Remove parameter valaddr from
la_val_print).  Commit e8b24d9 removes some calls to
value_contents_for_printing, but value_fetch_lazy is not called, so the
internal error above is triggered.  This patch adds value_fetch_lazy
call before val_print.

gdb:

2017-03-03  Yao Qi  <yao.qi@linaro.org>

PR gdb/21165
* ada-valprint.c (ada_val_print_ref): Call value_fetch_lazy if
value is lazy.
* valprint.c (common_val_print): Likewise.
gdb/ChangeLog
gdb/ada-valprint.c
gdb/valprint.c