* dwarf2read.c (dwarf2_fetch_die_loc_sect_off): New function.

(dwarf2_fetch_die_loc_cu_off): Rename from
	dwarf2_fetch_die_location_block.  Rewrite to use
	dwarf2_fetch_die_loc_sect_off.
	* dwarf2loc.h (dwarf2_fetch_die_loc_sect_off): Declare.
	(dwarf2_fetch_die_loc_cu_off): Rename.
	* dwarf2loc.c (indirect_pieced_value): Use
	dwarf2_fetch_die_loc_sect_off.
	* dwarf2expr.h (struct dwarf_expr_context) <len, data>: Update
	comment.
	(struct dwarf_expr_piece) <v.ptr.die>: Now a sect_offset.
	* dwarf2expr.c (add_piece): Update.
	(execute_stack_op) <DW_OP_GNU_implicit_pointer>: Update comment.
testsuite
	* gdb.dwarf2/implptr-64bit.exp: Run tests with two CUs as well.
	(test): Add "two_cu" argument.
	* gdb.dwarf2/implptr-64bit.S: Move subprogram later; use ref_addr
	for types; allow two CUs.
This commit is contained in:
Tom Tromey
2012-12-10 17:17:29 +00:00
parent 93eed41f8e
commit 8b9737bf8c
9 changed files with 113 additions and 39 deletions

View File

@@ -165,7 +165,7 @@ struct dwarf_expr_context
/* For DWARF_VALUE_LITERAL, the current literal value's length and
data. For DWARF_VALUE_IMPLICIT_POINTER, LEN is the offset of the
target DIE of cu_offset kind. */
target DIE of sect_offset kind. */
ULONGEST len;
const gdb_byte *data;
@@ -236,7 +236,7 @@ struct dwarf_expr_piece
struct
{
/* The referent DIE from DW_OP_GNU_implicit_pointer. */
cu_offset die;
sect_offset die;
/* The byte offset into the resulting data. */
LONGEST offset;
} ptr;