]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Add frame info check to DW_OP_reg operations
authorZoran Zaric <Zoran.Zaric@amd.com>
Mon, 7 Dec 2020 19:00:26 +0000 (19:00 +0000)
committerSimon Marchi <simon.marchi@polymtl.ca>
Tue, 8 Dec 2020 16:16:21 +0000 (11:16 -0500)
After enabling location description to be on a DWARF stack, it is now
needed to check the frame context information validity when creating a
register location description.

gdb/ChangeLog:

* dwarf2/expr.c (dwarf_expr_context::execute_stack_op): Add
check_frame_info call for DW_OP_reg operations.

Change-Id: I3e4a4d1eaba10b3b34be3c3bdbd1010a46ba4cd0

gdb/dwarf2/expr.c

index 9f2c77197a60e28e50bbb5a7ee979772f1bd59af..ee3732a6d97798cbc1d21796117d7d38357b985b 100644 (file)
@@ -2972,6 +2972,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr,
        case DW_OP_reg30:
        case DW_OP_reg31:
          dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_reg");
+         ensure_have_frame (this->frame, "DW_OP_reg");
 
          result = op - DW_OP_reg0;
          result_entry = entry_factory->create_register (result);
@@ -2980,6 +2981,7 @@ dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr,
        case DW_OP_regx:
          op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
          dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
+         ensure_have_frame (this->frame, "DW_OP_regx");
 
          result = reg;
          result_entry = entry_factory->create_register (reg);