* dwarf2expr.c (execute_stack_op): Support DW_OP_GNU_parameter_ref.
	* dwarf2loc.c (call_site_parameter_matches): Support
	CALL_SITE_PARAMETER_PARAM_OFFSET.
	(needs_dwarf_reg_entry_value): Push stub value.
	* dwarf2read.c (read_call_site_scope): New variable origin.  Support
	CALL_SITE_PARAMETER_PARAM_OFFSET and its DW_AT_abstract_origin.
	* gdbtypes.h (enum call_site_parameter_kind): New item
	CALL_SITE_PARAMETER_PARAM_OFFSET.
	(struct call_site.parameter.u): New field param_offset.

gdb/testsuite/
	* gdb.arch/amd64-entry-value-param.S: New file.
	* gdb.arch/amd64-entry-value-param.c: New file.
	* gdb.arch/amd64-entry-value-param.exp: New file.
This commit is contained in:
Jan Kratochvil
2012-06-17 19:53:52 +00:00
parent 24c5c679cb
commit 1788b2d3be
9 changed files with 764 additions and 5 deletions

View File

@@ -1392,6 +1392,20 @@ execute_stack_op (struct dwarf_expr_context *ctx,
"or for DW_OP_breg*(0)+DW_OP_deref*"));
}
case DW_OP_GNU_parameter_ref:
{
union call_site_parameter_u kind_u;
kind_u.param_offset.cu_off = extract_unsigned_integer (op_ptr, 4,
byte_order);
op_ptr += 4;
ctx->funcs->push_dwarf_reg_entry_value (ctx,
CALL_SITE_PARAMETER_PARAM_OFFSET,
kind_u,
-1 /* deref_size */);
}
goto no_push;
case DW_OP_GNU_const_type:
{
cu_offset type_die;