From 08412b0722301c4ffbd9fd51d4056bc436b69658 Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Mon, 11 Aug 2014 16:36:04 -0700 Subject: Add support for DW_OP_push_object_address. gdb/ChangeLog: * dwarf2expr.h (struct dwarf_expr_context_funcs): Uncomment field "get_object_address". * dwarf2expr.c (execute_stack_op): Add handling for DW_OP_push_object_address. * dwarf2loc.h (dwarf2_evaluate_property): Add "address" field. * dwarf2loc.c (struct dwarf_expr_baton): Add field "obj_address". (dwarf_expr_push_dwarf_reg_entry_value): Set baton_local.obj_address. (dwarf_expr_get_obj_addr): New function. (dwarf_expr_ctx_funcs): Add get_object_address field. (dwarf2_evaluate_loc_desc_full): Set baton.obj_address. (dwarf2_locexpr_baton_eval): Add parameter "addr". Use it. (dwarf2_evaluate_property): Add parameter "address". Use it. (needs_get_obj_addr): New function. (needs_frame_ctx_funcs): Add get_object_address field. (dwarf2_compile_expr_to_ax): Add DW_OP_push_object_address handling. * gdbtypes.c (resolve_dynamic_range): Add "addr" field. Use it. (resolve_dynamic_array): Likewise. --- gdb/dwarf2expr.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gdb/dwarf2expr.c') diff --git a/gdb/dwarf2expr.c b/gdb/dwarf2expr.c index 1d39923..b774a4e 100644 --- a/gdb/dwarf2expr.c +++ b/gdb/dwarf2expr.c @@ -1477,6 +1477,12 @@ execute_stack_op (struct dwarf_expr_context *ctx, } break; + case DW_OP_push_object_address: + /* Return the address of the object we are currently observing. */ + result = (ctx->funcs->get_object_address) (ctx->baton); + result_val = value_from_ulongest (address_type, result); + break; + default: error (_("Unhandled dwarf expression opcode 0x%x"), op); } -- cgit v1.1