1# Copyright 2001, 2003, 2007, 2008, 2009, 2010, 2011
2# Free Software Foundation, Inc.
3
4# This program is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
6# the Free Software Foundation; either version 3 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17# use this to debug:
18#
19#log_user 1
20
21# step-line.exp -- Expect script to test stepping in files with
22# #line directives.
23
24if $tracelevel then {
25    strace $tracelevel
26}
27
28set testfile step-line
29set srcfile ${testfile}.c
30set linefile ${testfile}.inp
31set binfile ${objdir}/${subdir}/${testfile}
32
33remote_exec build "rm -f ${binfile}"
34if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
35     untested step-line.exp
36     return -1
37}
38
39gdb_exit
40gdb_start
41gdb_reinitialize_dir $srcdir/$subdir
42gdb_load ${binfile}
43
44if ![runto_main] then {
45   fail "Can't run to main"
46   return 0
47}
48
49set remote_linefile [remote_download host ${srcdir}/${subdir}/${linefile}]
50
51gdb_test "break f1" ".*Breakpoint 2 at .* file .*step-line.c.*" "break f1"
52gdb_test "continue" \
53         "Continuing.*Breakpoint 2, f1 \\(i=4\\).*dummy \\(1, i\\);" \
54	 "continue to f1"
55gdb_test "next" \
56         ".*i = f2 \\(i\\);.*" \
57	 "next over dummy 1"
58gdb_test "next" \
59         ".*dummy \\(2, i\\);.*" \
60	 "next to dummy 2"
61gdb_test "next" \
62         ".*i = f2 \\(i\\);.*" \
63	 "next over dummy 2"
64gdb_test "step" \
65         ".*f2 \\(i=4\\).*dummy \\(4, i\\);.*" \
66	 "step into f2"
67gdb_test "next" \
68         ".*j = i;.*" \
69	 "next over dummy 4"
70gdb_test "next" \
71         ".*dummy \\(5, i\\);.*" \
72	 "next to dummy 5"
73gdb_test "next" \
74         ".*dummy \\(6, j\\);.*" \
75	 "next to dummy 6"
76gdb_test "next" \
77         ".*j = SUCC \\(j\\);.*" \
78	 "next over dummy 6"
79gdb_test "next" \
80         ".*dummy \\(7, i\\);.*" \
81	 "next to dummy 7"
82gdb_test "next" \
83         ".*dummy \\(8, j\\);.*" \
84	 "next to dummy 8"
85gdb_test "next" \
86         ".*j = j - i;.*" \
87	 "next over dummy 8"
88gdb_test "next" \
89         ".*dummy \\(9, i\\);.*" \
90	 "next to dummy 9"
91gdb_test "next" \
92         ".*dummy \\(10, j\\);.*" \
93	 "next to dummy 10"
94gdb_test "next" \
95         ".*RETURN \\(j\\);.*" \
96	 "next over dummy 10"
97
98remote_file host delete ${remote_linefile}
99
100return 0
101