mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-01 01:45:51 +08:00
export dwarf2_reg_to_regnum_or_error
This exports a utility function, dwarf2_reg_to_regnum_or_error, that was previously private to dwarf2loc.c. gdb/ChangeLog 2014-12-12 Jan Kratochvil <jan.kratochvil@redhat.com> * dwarf2loc.h (dwarf2_reg_to_regnum_or_error): Declare. * dwarf2loc.c (dwarf2_reg_to_regnum_or_error): Rename from translate_register. Now public. (dwarf2_compile_expr_to_ax): Update.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2014-12-12 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* dwarf2loc.h (dwarf2_reg_to_regnum_or_error): Declare.
|
||||||
|
* dwarf2loc.c (dwarf2_reg_to_regnum_or_error): Rename from
|
||||||
|
translate_register. Now public.
|
||||||
|
(dwarf2_compile_expr_to_ax): Update.
|
||||||
|
|
||||||
2014-12-12 Tom Tromey <tromey@redhat.com>
|
2014-12-12 Tom Tromey <tromey@redhat.com>
|
||||||
Jan Kratochvil <jan.kratochvil@redhat.com>
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
@ -2707,14 +2707,10 @@ unimplemented (unsigned int op)
|
|||||||
op);
|
op);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* A helper function to convert a DWARF register to an arch register.
|
/* See dwarf2loc.h. */
|
||||||
ARCH is the architecture.
|
|
||||||
DWARF_REG is the register.
|
|
||||||
This will throw an exception if the DWARF register cannot be
|
|
||||||
translated to an architecture register. */
|
|
||||||
|
|
||||||
static int
|
int
|
||||||
translate_register (struct gdbarch *arch, int dwarf_reg)
|
dwarf2_reg_to_regnum_or_error (struct gdbarch *arch, int dwarf_reg)
|
||||||
{
|
{
|
||||||
int reg = gdbarch_dwarf2_reg_to_regnum (arch, dwarf_reg);
|
int reg = gdbarch_dwarf2_reg_to_regnum (arch, dwarf_reg);
|
||||||
if (reg == -1)
|
if (reg == -1)
|
||||||
@ -2965,14 +2961,14 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
|
|||||||
case DW_OP_reg30:
|
case DW_OP_reg30:
|
||||||
case DW_OP_reg31:
|
case DW_OP_reg31:
|
||||||
dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
|
dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
|
||||||
loc->u.reg = translate_register (arch, op - DW_OP_reg0);
|
loc->u.reg = dwarf2_reg_to_regnum_or_error (arch, op - DW_OP_reg0);
|
||||||
loc->kind = axs_lvalue_register;
|
loc->kind = axs_lvalue_register;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DW_OP_regx:
|
case DW_OP_regx:
|
||||||
op_ptr = safe_read_uleb128 (op_ptr, op_end, ®);
|
op_ptr = safe_read_uleb128 (op_ptr, op_end, ®);
|
||||||
dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
|
dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
|
||||||
loc->u.reg = translate_register (arch, reg);
|
loc->u.reg = dwarf2_reg_to_regnum_or_error (arch, reg);
|
||||||
loc->kind = axs_lvalue_register;
|
loc->kind = axs_lvalue_register;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -3035,7 +3031,7 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
|
|||||||
case DW_OP_breg30:
|
case DW_OP_breg30:
|
||||||
case DW_OP_breg31:
|
case DW_OP_breg31:
|
||||||
op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
|
op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
|
||||||
i = translate_register (arch, op - DW_OP_breg0);
|
i = dwarf2_reg_to_regnum_or_error (arch, op - DW_OP_breg0);
|
||||||
ax_reg (expr, i);
|
ax_reg (expr, i);
|
||||||
if (offset != 0)
|
if (offset != 0)
|
||||||
{
|
{
|
||||||
@ -3047,7 +3043,7 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
|
|||||||
{
|
{
|
||||||
op_ptr = safe_read_uleb128 (op_ptr, op_end, ®);
|
op_ptr = safe_read_uleb128 (op_ptr, op_end, ®);
|
||||||
op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
|
op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
|
||||||
i = translate_register (arch, reg);
|
i = dwarf2_reg_to_regnum_or_error (arch, reg);
|
||||||
ax_reg (expr, i);
|
ax_reg (expr, i);
|
||||||
if (offset != 0)
|
if (offset != 0)
|
||||||
{
|
{
|
||||||
|
@ -222,4 +222,12 @@ extern struct call_site_chain *call_site_find_chain (struct gdbarch *gdbarch,
|
|||||||
CORE_ADDR caller_pc,
|
CORE_ADDR caller_pc,
|
||||||
CORE_ADDR callee_pc);
|
CORE_ADDR callee_pc);
|
||||||
|
|
||||||
|
/* A helper function to convert a DWARF register to an arch register.
|
||||||
|
ARCH is the architecture.
|
||||||
|
DWARF_REG is the register.
|
||||||
|
This will throw an exception if the DWARF register cannot be
|
||||||
|
translated to an architecture register. */
|
||||||
|
|
||||||
|
extern int dwarf2_reg_to_regnum_or_error (struct gdbarch *arch, int dwarf_reg);
|
||||||
|
|
||||||
#endif /* dwarf2loc.h */
|
#endif /* dwarf2loc.h */
|
||||||
|
Reference in New Issue
Block a user