2005-11-19 Randolph Chung <tausq@debian.org>

* dwarf2loc.c (dwarf2_tracepoint_var_ref): Remove extra add for
	DW_OP_fbreg.  Handle DW_OP_breg0 through DW_OP_breg31.  Print
	DWARF opcode for unsupported case.
This commit is contained in:
Randolph Chung 2005-11-19 13:43:35 +00:00
parent 27b08a0cb4
commit 9c23835799
2 changed files with 26 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2005-11-19 Randolph Chung <tausq@debian.org>
* dwarf2loc.c (dwarf2_tracepoint_var_ref): Remove extra add for
DW_OP_fbreg. Handle DW_OP_breg0 through DW_OP_breg31. Print
DWARF opcode for unsupported case.
2005-11-19 Randolph Chung <tausq@debian.org>
* hppa-hpux-tdep.c (hppa_hpux_sigtramp_frame_unwind_cache): Use

View File

@ -477,13 +477,30 @@ dwarf2_tracepoint_var_ref (struct symbol *symbol, struct agent_expr *ax,
ax_const_l (ax, frame_offset);
ax_simple (ax, aop_add);
ax_const_l (ax, frame_offset);
value->kind = axs_lvalue_memory;
}
else if (data[0] >= DW_OP_breg0
&& data[0] <= DW_OP_breg31)
{
unsigned int reg;
LONGEST offset;
gdb_byte *buf_end;
reg = data[0] - DW_OP_breg0;
buf_end = read_sleb128 (data + 1, data + size, &offset);
if (buf_end != data + size)
error (_("Unexpected opcode after DW_OP_breg%u for symbol \"%s\"."),
reg, SYMBOL_PRINT_NAME (symbol));
ax_reg (ax, reg);
ax_const_l (ax, offset);
ax_simple (ax, aop_add);
value->kind = axs_lvalue_memory;
}
else
error (_("Unsupported DWARF opcode in the location of \"%s\"."),
SYMBOL_PRINT_NAME (symbol));
error (_("Unsupported DWARF opcode 0x%x in the location of \"%s\"."),
data[0], SYMBOL_PRINT_NAME (symbol));
}
/* Return the value of SYMBOL in FRAME using the DWARF-2 expression