Tom Tromey pointed out that the test and call to error() for the
DW_OP_GNU_uninit case in dwarf_expr_context::execute_stack_op (in
gdb/dwarf2/expr.c)...
if (op_ptr != op_end && *op_ptr != DW_OP_piece
&& *op_ptr != DW_OP_bit_piece)
error (_("DWARF-2 expression error: DW_OP_GNU_uninit must always "
"be the very last op in a DWARF expression or "
"DW_OP_piece/DW_OP_bit_piece piece."));
...could be replaced by a call to dwarf_expr_require_composition which
performs a similar check and outputs a suitable error message.
goto no_push;
case DW_OP_GNU_uninit:
- if (op_ptr != op_end && *op_ptr != DW_OP_piece
- && *op_ptr != DW_OP_bit_piece)
- error (_("DWARF-2 expression error: DW_OP_GNU_uninit must always "
- "be the very last op in a DWARF expression or "
- "DW_OP_piece/DW_OP_bit_piece piece."));
-
+ dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_GNU_uninit");
this->m_initialized = false;
goto no_push;