[testsuite] Fix tiemout fail in gdb.fortran/vla-value.exp
[deliverable/binutils-gdb.git] / gdb / inline-frame.c
index 9027617cf0fd7ab493e0d391a05240cfbd621950..f8ba249eb407cae9c2ad1ebd485ddd7b4750fcf2 100644 (file)
@@ -1,6 +1,6 @@
 /* Inline frame unwinder for GDB.
 
-   Copyright (C) 2008-2014 Free Software Foundation, Inc.
+   Copyright (C) 2008-2016 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -28,8 +28,6 @@
 #include "vec.h"
 #include "frame.h"
 
-#include "gdb_assert.h"
-
 /* We need to save a few variables for every thread stopped at the
    virtual call site of an inlined function.  If there was always a
    "struct thread_info", we could hang it off that; in the mean time,
@@ -227,6 +225,8 @@ inline_frame_sniffer (const struct frame_unwind *self,
     {
       if (block_inlined_p (cur_block))
        depth++;
+      else if (BLOCK_FUNCTION (cur_block) != NULL)
+       break;
 
       cur_block = BLOCK_SUPERBLOCK (cur_block);
     }
@@ -276,14 +276,14 @@ const struct frame_unwind inline_frame_unwind = {
 static int
 block_starting_point_at (CORE_ADDR pc, const struct block *block)
 {
-  struct blockvector *bv;
+  const struct blockvector *bv;
   struct block *new_block;
 
   bv = blockvector_for_pc (pc, NULL);
   if (BLOCKVECTOR_MAP (bv) == NULL)
     return 0;
 
-  new_block = addrmap_find (BLOCKVECTOR_MAP (bv), pc - 1);
+  new_block = (struct block *) addrmap_find (BLOCKVECTOR_MAP (bv), pc - 1);
   if (new_block == NULL)
     return 1;
 
@@ -333,6 +333,9 @@ skip_inline_frames (ptid_t ptid)
              else
                break;
            }
+         else if (BLOCK_FUNCTION (cur_block) != NULL)
+           break;
+
          cur_block = BLOCK_SUPERBLOCK (cur_block);
        }
     }
This page took 0.029083 seconds and 4 git commands to generate.