]>
Commit | Line | Data |
---|---|---|
3666a048 | 1 | # Copyright 2017-2021 Free Software Foundation, Inc. |
286acbb5 JB |
2 | # |
3 | # This program is free software; you can redistribute it and/or modify | |
4 | # it under the terms of the GNU General Public License as published by | |
5 | # the Free Software Foundation; either version 3 of the License, or | |
6 | # (at your option) any later version. | |
7 | # | |
8 | # This program is distributed in the hope that it will be useful, | |
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | # GNU General Public License for more details. | |
12 | # | |
13 | # You should have received a copy of the GNU General Public License | |
14 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
15 | ||
16 | load_lib "ada.exp" | |
17 | ||
18 | if { [skip_ada_tests] } { return -1 } | |
19 | ||
20 | standard_ada_testfile foo_p708_025 | |
21 | ||
22 | if {[gdb_compile_ada "${srcfile}" "${binfile}" executable {debug}] != ""} { | |
23 | return -1 | |
24 | } | |
25 | ||
26 | clean_restart ${testfile} | |
27 | ||
28 | set bp_location [gdb_get_line_number "START" ${testdir}/pck.adb] | |
29 | runto "pck.adb:$bp_location" | |
30 | ||
31 | # Insert a watchpoint on local variable "result" | |
32 | ||
33 | gdb_test "watch result" \ | |
34 | ".*atchpoint \[0-9\]+: result" | |
35 | ||
36 | # Insert a breakpoint we'll reach after returning from the current | |
37 | # function. | |
38 | ||
39 | set bp_location [gdb_get_line_number "Do_Nothing" ${testdir}/foo_p708_025.adb] | |
40 | gdb_test "break foo_p708_025.adb:$bp_location" \ | |
41 | "Breakpoint \[0-9\]+ at.*: file .*foo_p708_025.adb, line \[0-9\]+." | |
42 | ||
43 | # This breakpoint will be there to stop us after we test what happens | |
44 | # during a continue (see below...) | |
45 | ||
46 | gdb_test "break pck.increment" \ | |
47 | "Breakpoint \[0-9\]+ at.*: file .*pck.adb, line \[0-9\]+." | |
48 | ||
49 | # Continue until we reach our watchpoint. It isn't strictly necessary | |
50 | # for our purpose that the watchpoint actually triggers, but this shows | |
51 | # that the watchpoint exists and is active. | |
52 | gdb_test "cont" \ | |
53 | ".*atchpoint \[0-9\]+: result.*Old value = 8.*New value = 64.*" \ | |
54 | "continuing to watchpoint hit" | |
55 | ||
56 | # Continue again. We should be stopped at the (internal) breakpoint | |
57 | # that we setup to delete the watchpoint as soon as the program leaves | |
58 | # the current scope. | |
59 | ||
60 | gdb_test \ | |
61 | "cont" \ | |
62 | ".*atchpoint \[0-9\]+ deleted because the program has left the block.*" \ | |
63 | "continuing until watchpoint automatic deletion" | |
64 | ||
65 | # Continue one more time. We should be reaching one of the breakpoints | |
66 | # (on the call to Do_Nothing) we set earlier. | |
67 | ||
68 | gdb_test "cont" \ | |
69 | "Breakpoint \[0-9\]+.*Do_Nothing.*" \ | |
70 | "continuing to breakpoint on call to Do_Nothing" | |
71 | ||
72 | # Do a next, to verify that it works... | |
73 | ||
74 | gdb_test "next" \ | |
75 | ".* Call_Me;" \ | |
76 | "next to call to Call_Me" | |
77 | ||
78 | # And finally, one more continue. | |
79 | ||
80 | ||
81 | gdb_test "cont" \ | |
82 | "Breakpoint \[0-9\]+.*pck\\.increment.*" \ | |
83 | "continuing to breakpoint in pck.increment" |