diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/inline-frame.c | 5 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp | 12 |
4 files changed, 27 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b4bcef1..f36a762 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2015-05-05 Joel Brobecker <brobecker@adacore.com> + + * inline-frame.c (inline_frame_sniffer, skip_inline_frames): + Stop counting inlined frames as soon as an out-of-line function + is found. + 2014-05-05 Pierre-Marie de Rodat <derodat@adacore.com> * dwarf2read.c (inherit_abstract_dies): Skip diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c index eec44d8..e5d7360 100644 --- a/gdb/inline-frame.c +++ b/gdb/inline-frame.c @@ -225,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); } @@ -331,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); } } diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 66a87c8..63c4bf3 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2015-05-05 Joel Brobecker <brobecker@adacore.com> + * gdb.ada/out_of_line_in_inlined.exp: Add run and "bt" tests. + +2015-05-05 Joel Brobecker <brobecker@adacore.com> + * gdb.ada/out_of_line_in_inlined: New testcase. 2015-05-05 Joel Brobecker <brobecker@adacore.com> diff --git a/gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp b/gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp index ebebb6c..5301b4f 100644 --- a/gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp +++ b/gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp @@ -29,3 +29,15 @@ clean_restart ${testfile} setup_xfail "*-*-*" gdb_test "break foo_o224_021.child1.child2" \ "Breakpoint \[0-9\]+ at.*: file .*foo_o224_021.adb, line \[0-9\]+." + +gdb_run_cmd +setup_xfail "*-*-*" +gdb_test "" \ + "Breakpoint $decimal, foo_o224_021\\.child1\\.child2 \\(s=\\.\\.\\.\\).*" + +set opt_addr_in "($hex in)?" +setup_xfail "*-*-*" +gdb_test "bt" \ + [multi_line "#0 +$opt_addr_in +foo_o224_021\\.child1\\.child2 \\(s=\\.\\.\\.\\).*" \ + "#1 +$opt_addr_in +foo_o224_021\\.child1 \\(\\).*" \ + "#2 +$opt_addr_in +foo_o224_021 \\(\\).*" ] |