mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-25 08:47:28 +00:00
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 bye8b24d9(Remove parameter valaddr from la_val_print). Commite8b24d9removes 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.
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
2017-02-28 Peter Bergner <bergner@vnet.ibm.com>
|
2017-02-28 Peter Bergner <bergner@vnet.ibm.com>
|
||||||
|
|
||||||
* NEWS: Mention new set/show disassembler-options commands.
|
* NEWS: Mention new set/show disassembler-options commands.
|
||||||
|
|||||||
@@ -1058,6 +1058,9 @@ ada_val_print_ref (struct type *type, const gdb_byte *valaddr,
|
|||||||
(Eg: an array whose bounds are not set yet). */
|
(Eg: an array whose bounds are not set yet). */
|
||||||
ada_ensure_varsize_limit (value_type (deref_val));
|
ada_ensure_varsize_limit (value_type (deref_val));
|
||||||
|
|
||||||
|
if (value_lazy (deref_val))
|
||||||
|
value_fetch_lazy (deref_val);
|
||||||
|
|
||||||
val_print (value_type (deref_val),
|
val_print (value_type (deref_val),
|
||||||
value_embedded_offset (deref_val),
|
value_embedded_offset (deref_val),
|
||||||
value_address (deref_val), stream, recurse + 1,
|
value_address (deref_val), stream, recurse + 1,
|
||||||
|
|||||||
@@ -1201,6 +1201,9 @@ common_val_print (struct value *val, struct ui_file *stream, int recurse,
|
|||||||
get a fixed representation of our value. */
|
get a fixed representation of our value. */
|
||||||
val = ada_to_fixed_value (val);
|
val = ada_to_fixed_value (val);
|
||||||
|
|
||||||
|
if (value_lazy (val))
|
||||||
|
value_fetch_lazy (val);
|
||||||
|
|
||||||
val_print (value_type (val),
|
val_print (value_type (val),
|
||||||
value_embedded_offset (val), value_address (val),
|
value_embedded_offset (val), value_address (val),
|
||||||
stream, recurse,
|
stream, recurse,
|
||||||
|
|||||||
Reference in New Issue
Block a user