| Index: gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp
|
| diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4839d90430cd5e7e833732c9f42d48f0329d27ad
|
| --- /dev/null
|
| +++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp
|
| @@ -0,0 +1,125 @@
|
| +# 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.opt/inline-break.exp largely mirrors
|
| +# this testcase, and should be updated if this testcase is changed.
|
| +
|
| +load_lib dwarf.exp
|
| +
|
| +# This test can only be run on targets which support DWARF-2 and use gas.
|
| +if ![dwarf2_support] {
|
| + return 0
|
| +}
|
| +
|
| +# This test can only be run on x86_64 targets.
|
| +if {![istarget "x86_64-*-*"] || ![is_lp64_target]} {
|
| + return 0
|
| +}
|
| +
|
| +set basename "inline-break"
|
| +
|
| +standard_testfile .S
|
| +
|
| +if { [prepare_for_testing $testfile.exp $testfile $srcfile {nodebug}] } {
|
| + 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 .*$basename\\.c, 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 .*$basename\\.c, 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>"
|
|
|