gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Thu, 20 Oct 2011 23:57:23 +0000 (23:57 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Thu, 20 Oct 2011 23:57:23 +0000 (23:57 +0000)
* dwarf2-frame-tailcall.c: Include dwarf2-frame.h.
(dwarf2_tailcall_prev_register_first): Use dwarf2_frame_cfa.
(dwarf2_tailcall_sniffer_first): Remove variable pc_regnum.  Replace
gdbarch_pc_regnum and frame_unwind_register_unsigned by
gdbarch_unwind_pc.

gdb/ChangeLog
gdb/dwarf2-frame-tailcall.c

index 3170446db0992489fe7f1a0734c71df6999a451f..dcc28ec47e2ff0f6e56cdcf87036690836ee918f 100644 (file)
@@ -1,3 +1,12 @@
+2011-10-20  Jan Kratochvil  <jan.kratochvil@redhat.com>
+           Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * dwarf2-frame-tailcall.c: Include dwarf2-frame.h.
+       (dwarf2_tailcall_prev_register_first): Use dwarf2_frame_cfa.
+       (dwarf2_tailcall_sniffer_first): Remove variable pc_regnum.  Replace
+       gdbarch_pc_regnum and frame_unwind_register_unsigned by
+       gdbarch_unwind_pc.
+
 2011-10-20  Cary Coutant  <ccoutant@google.com>
 
        * dwarf2read.c (dw2_get_file_names): Move adjustment for type
index 38131151e61001f8393a9122825fb6b89dfe65d9..d2fd9c468077a24d3bbb7a9e27320cb2580af69c 100644 (file)
@@ -29,6 +29,7 @@
 #include "gdbtypes.h"
 #include "regcache.h"
 #include "value.h"
+#include "dwarf2-frame.h"
 
 /* Contains struct tailcall_cache indexed by next_bottom_frame.  */
 static htab_t cache_htab;
@@ -280,7 +281,7 @@ dwarf2_tailcall_prev_register_first (struct frame_info *this_frame,
       if (next_levels == cache->chain_levels - 1)
        addr = cache->prev_sp;
       else
-       addr = get_frame_base (this_frame) - cache->entry_cfa_sp_offset;
+       addr = dwarf2_frame_cfa (this_frame) - cache->entry_cfa_sp_offset;
     }
   else
     return NULL;
@@ -380,15 +381,12 @@ dwarf2_tailcall_sniffer_first (struct frame_info *this_frame,
   /* Catch any unwinding errors.  */
   TRY_CATCH (except, RETURN_MASK_ERROR)
     {
-      int pc_regnum, sp_regnum;
+      int sp_regnum;
 
       prev_gdbarch = frame_unwind_arch (this_frame);
-      pc_regnum = gdbarch_pc_regnum (prev_gdbarch);
-      if (pc_regnum == -1)
-       break;
 
       /* Simulate frame_unwind_pc without setting this_frame->prev_pc.p.  */
-      prev_pc = frame_unwind_register_unsigned (this_frame, pc_regnum);
+      prev_pc = gdbarch_unwind_pc (prev_gdbarch, this_frame);
 
       /* call_site_find_chain can throw an exception.  */
       chain = call_site_find_chain (prev_gdbarch, prev_pc, this_pc);