export dwarf2_reg_to_regnum_or_error
authorJan Kratochvil <jan.kratochvil@redhat.com>
Wed, 14 May 2014 20:30:37 +0000 (14:30 -0600)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Fri, 12 Dec 2014 21:27:31 +0000 (22:27 +0100)
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.

gdb/ChangeLog
gdb/dwarf2loc.c
gdb/dwarf2loc.h

index e48aeedd91054cb78939ddff7fb3715ad89c1d25..a475a3a102a991c5f673bd138d9d59380c73af92 100644 (file)
@@ -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>
            Jan Kratochvil  <jan.kratochvil@redhat.com>
 
index 3a62869ba30f06866b31efe6831b6ff101d6f8dd..8fdb4ca7b48732dc5555c2574bd4af82b6aeed03 100644 (file)
@@ -2707,14 +2707,10 @@ unimplemented (unsigned int op)
           op);
 }
 
-/* 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.  */
+/* See dwarf2loc.h.  */
 
-static int
-translate_register (struct gdbarch *arch, int dwarf_reg)
+int
+dwarf2_reg_to_regnum_or_error (struct gdbarch *arch, int dwarf_reg)
 {
   int reg = gdbarch_dwarf2_reg_to_regnum (arch, dwarf_reg);
   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_reg31:
          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;
          break;
 
        case DW_OP_regx:
          op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
          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;
          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_breg31:
          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);
          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, &reg);
            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);
            if (offset != 0)
              {
index 082ccfae535a7903070e8c74981b9cc8f4721a49..76fb45b4163643a409db420719a1ef2254a33992 100644 (file)
@@ -222,4 +222,12 @@ extern struct call_site_chain *call_site_find_chain (struct gdbarch *gdbarch,
                                                     CORE_ADDR caller_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 */