Automatic date update in version.in
[external/binutils.git] / gdb / dwarf2-frame-tailcall.c
index 952bc14..4cf7f5f 100644 (file)
@@ -1,6 +1,6 @@
 /* Virtual tail call frames unwinder for GDB.
 
-   Copyright (C) 2010-2015 Free Software Foundation, Inc.
+   Copyright (C) 2010-2019 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -318,6 +318,9 @@ tailcall_frame_sniffer (const struct frame_unwind *self,
   int next_levels;
   struct tailcall_cache *cache;
 
+  if (!dwarf2_frame_unwinders_enabled_p)
+    return 0;
+
   /* Inner tail call element does not make sense for a sentinel frame.  */
   next_frame = get_next_frame (this_frame);
   if (next_frame == NULL)
@@ -386,13 +389,15 @@ dwarf2_tailcall_sniffer_first (struct frame_info *this_frame,
       /* call_site_find_chain can throw an exception.  */
       chain = call_site_find_chain (prev_gdbarch, prev_pc, this_pc);
 
-      if (entry_cfa_sp_offsetp == NULL)
-       break;
-      sp_regnum = gdbarch_sp_regnum (prev_gdbarch);
-      if (sp_regnum == -1)
-       break;
-      prev_sp = frame_unwind_register_unsigned (this_frame, sp_regnum);
-      prev_sp_p = 1;
+      if (entry_cfa_sp_offsetp != NULL)
+       {
+         sp_regnum = gdbarch_sp_regnum (prev_gdbarch);
+         if (sp_regnum != -1)
+           {
+             prev_sp = frame_unwind_register_unsigned (this_frame, sp_regnum);
+             prev_sp_p = 1;
+           }
+       }
     }
   CATCH (except, RETURN_MASK_ERROR)
     {
@@ -462,9 +467,6 @@ const struct frame_unwind dwarf2_tailcall_frame_unwind =
   tailcall_frame_prev_arch
 };
 
-/* Provide a prototype to silence -Wmissing-prototypes.  */
-extern initialize_file_ftype _initialize_tailcall_frame;
-
 void
 _initialize_tailcall_frame (void)
 {