Index: gdb/testsuite/gdb.opt/inline-break.exp |
diff --git a/gdb/testsuite/gdb.opt/inline-break.exp b/gdb/testsuite/gdb.opt/inline-break.exp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2a7ef39d67b27e1cea822c5cb68e3d6cdaed39f5 |
--- /dev/null |
+++ b/gdb/testsuite/gdb.opt/inline-break.exp |
@@ -0,0 +1,113 @@ |
+# Copyright 2012 Free Software Foundation, Inc. |
+ |
+# This program is free software; you can redistribute it and/or modify |
+# it under the terms of the GNU General Public License as published by |
+# the Free Software Foundation; either version 3 of the License, or |
+# (at your option) any later version. |
+# |
+# This program is distributed in the hope that it will be useful, |
+# but WITHOUT ANY WARRANTY; without even the implied warranty of |
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+# GNU General Public License for more details. |
+# |
+# You should have received a copy of the GNU General Public License |
+# along with this program. If not, see <http://www.gnu.org/licenses/>. |
+ |
+# Note that the testcase gdb.dwarf2/dw2-inline-break.exp largely |
+# mirrors this testcase, and should be updated if this testcase is |
+# changed. |
+ |
+standard_testfile |
+ |
+if { [prepare_for_testing $testfile.exp $testfile $srcfile \ |
+ {debug optimize=-O2 additional_flags=-Winline}] } { |
+ return -1 |
+} |
+ |
+# |
+# func1 is a static inlined function that is called once. |
+# The result should be a single-location breakpoint. |
+# |
+gdb_test "break func1" \ |
+ "Breakpoint.*at.* file .*$srcfile, line.*" |
+ |
+# |
+# func2 is a non-static inlined function that is called once. |
+# The result should be a breakpoint with two locations: the |
+# out-of-line function and the single inlined instance. |
+# |
+gdb_test "break func2" \ |
+ "Breakpoint.*at.*func2.*\\(2 locations\\)" |
+ |
+# |
+# func3b is a static inlined function that is called once from |
+# within another static inlined function. The result should be |
+# a single-location breakpoint. |
+# |
+gdb_test "break func3b" \ |
+ "Breakpoint.*at.* file .*$srcfile, line.*" |
+ |
+# |
+# func4b is a static inlined function that is called once from |
+# within a non-static inlined function. The result should be |
+# a breakpoint with two locations: the inlined instance within |
+# the inlined call to func4a in main, and the inlined instance |
+# within the out-of-line func4a. |
+# |
+gdb_test "break func4b" \ |
+ "Breakpoint.*at.*func4b.*\\(2 locations\\)" |
+ |
+# |
+# func5b is a non-static inlined function that is called once |
+# from within a static inlined function. The result should be a |
+# breakpoint with two locations: the out-of-line function and the |
+# inlined instance within the inlined call to func5a in main. |
+# |
+gdb_test "break func5b" \ |
+ "Breakpoint.*at.*func5b.*\\(2 locations\\)" |
+# |
+# func6b is a non-static inlined function that is called once from |
+# within another non-static inlined function. The result should be |
+# a breakpoint with three locations: the out-of-line function, the |
+# inlined instance within the out-of-line func6a, and the inlined |
+# instance within the inlined call to func6a in main, |
+# |
+gdb_test "break func6b" \ |
+ "Breakpoint.*at.*func6b.*\\(3 locations\\)" |
+ |
+# |
+# func7b is a static inlined function that is called twice: once from |
+# func7a, and once from main. The result should be a breakpoint with |
+# two locations: the inlined instance within the inlined instance of |
+# func7a, and the inlined instance within main. |
+# |
+gdb_test "break func7b" \ |
+ "Breakpoint.*at.*func7b.*\\(2 locations\\)" |
+ |
+# |
+# func8b is a non-static inlined function that is called twice: once |
+# func8a, and once from main. The result should be a breakpoint with |
+# three locations: the out-of-line function, the inlined instance |
+# within the inlined instance of func7a, and the inlined instance |
+# within main. |
+# |
+gdb_test "break func8b" \ |
+ "Breakpoint.*at.*func8b.*\\(3 locations\\)" |
+ |
+# |
+# func1 is a static inlined function. The result should be that no |
+# symbol is found to print. |
+# |
+gdb_test "print func1" \ |
+ "No symbol \"func1\" in current context." |
+ |
+# |
+# func2 is a non-static inlined function. The result should be that |
+# one symbol is found to print, and that the printed symbol is called |
+# "func2". Note that this does not cover the failure case that two |
+# symbols were found, but that gdb chose the out-of-line copy to |
+# print, but if this was failing the "print func1" test would likely |
+# fail instead. |
+# |
+gdb_test "print func2" \ |
+ "\\\$.* = {int \\(int\\)} .* <func2>" |