Allow DW_OP_GNU_uninit in dwarf_expr_require_composition
authorAndreas Arnez <arnez@linux.vnet.ibm.com>
Wed, 5 Oct 2016 10:36:29 +0000 (12:36 +0200)
committerAndreas Arnez <arnez@linux.vnet.ibm.com>
Wed, 5 Oct 2016 10:36:29 +0000 (12:36 +0200)
commitf206f69cb43e420f92a63464036b342386963261
tree4f7cf4be286e39dca00d95226b3aacfe35f42fc8
parented2f09e183df513e9616c53cdace32cf8b824b98
Allow DW_OP_GNU_uninit in dwarf_expr_require_composition

In DWARF expression handling, some operators are required to be either
at the end of an expression or followed by a composition operator.  So
far only the operators DW_OP_reg0-31 were allowed to be followed by
DW_OP_GNU_uninit instead, and particularly DW_OP_regx was not, which is
obviously inconsistent.

This patch allows DW_OP_GNU_uninit after all operators requiring a
composition, to simplify the code and make it more consistent.  This
policy may be more permissive than necessary, but in the worst case just
leads to a DWARF location description resulting in an uninitialized
value instead of an error message.

gdb/ChangeLog:

* dwarf2expr.c (dwarf_expr_require_composition): Allow
DW_OP_GNU_uninit.
(execute_stack_op): Use dwarf_expr_require_composition instead of
copying its logic.
gdb/ChangeLog
gdb/dwarf2expr.c