1 # Copyright
(C
) 2010-2015 Free Software Foundation
, Inc.
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.
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.
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
/>.
16 if [target_info
exists use_gdb_stub
] {
20 load_lib gdb
-python.exp
22 set libfile
"py-events-shlib"
23 set libsrc $srcdir
/$subdir
/$libfile.c
24 set lib_sl
[standard_output_file $libfile.so
]
28 set exec_opts
[list debug shlib
=$lib_sl
]
29 set pyfile $
{srcdir
}/$
{subdir
}/$
{testfile
}.py
31 if [get_compiler_info
] {
35 if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts
] != ""
36 ||
[gdb_compile $srcdir
/$subdir
/$srcfile $binfile executable $exec_opts
] != ""} {
37 untested
"Could not compile either $libsrc or $srcdir/$subdir/$srcfile."
41 # Start with a fresh gdb.
42 clean_restart $
{testfile
}
44 if { [skip_python_tests
] } { continue }
46 gdb_test_no_output
"python exec (open ('${pyfile}').read ())" ""
48 gdb_test
"test-objfile-events" "Object file events registered."
50 gdb_breakpoint
"main" {temporary}
52 gdb_test
"run" ".*event type: new_objfile.*new objfile name.*" "New objfile notification"
54 gdb_test_no_output
"set detach-on-fork off" ""
56 gdb_test
"test-events" "Event testers registered."
58 gdb_breakpoint
"first"
59 gdb_breakpoint
"first"
61 # Test
continue event and breakpoint stop event
62 gdb_test
"continue" ".*event type: continue.*
64 .
*stop reason
: breakpoint.
*
65 .
*first breakpoint number
: 2.
*
66 .
*breakpoint number
: 2.
*
67 .
*breakpoint number
: 3.
*
68 all threads stopped.
*"
70 # Test that when
"step N" trips on a breakpoint, we get a stop event
71 # with breakpoint stop reason.
72 gdb_breakpoint
"do_nothing"
73 gdb_test
"step 3" ".*event type: continue.*
75 .
*stop reason
: breakpoint.
*
76 .
*first breakpoint number
: 4.
*
77 .
*breakpoint number
: 4.
*
78 all threads stopped.
*"
82 # Test inferior
call events
84 gdb_test_multiple
"info threads" "get current thread" {
85 -re
"\[^\n\r\]*process (\[0-9\]+)\[^\n\r\]*do_nothing.*$gdb_prompt $" {
86 set process_id $expect_out
(1,string
)
87 pass
"get current thread"
91 gdb_test_multiple
"print do_nothing" "get address of do_nothing" {
92 -re
"\[^\n\r\]*(0x\[0-9a-f\]+) \<do_nothing\>.*$gdb_prompt $" {
93 set addr $expect_out
(1,string
)
94 pass
"get address of do_nothing"
98 set expected
[list
"event type: pre-call"]
99 lappend expected
"ptid: \\($process_id, $process_id, 0\\)" "address: $addr"
100 lappend expected
"event type: post-call"
101 lappend expected
"ptid: \\($process_id, $process_id, 0\\)" "address: $addr"
102 gdb_test_sequence
"call do_nothing()" "" $expected
104 # Test register changed event
105 gdb_test_no_output
{set $old_sp
= $sp
}
106 gdb_test_sequence
{set $sp
= 0} "" {
107 "event type: register-changed"
111 gdb_test_sequence
{set $sp
= 1} "" {
112 "event type: register-changed"
116 gdb_test_sequence
{set $sp
= $old_sp
} "" {
117 "event type: register-changed"
122 # Test that no register_changed event is generated
on "non-user"
125 gdb_test_multiple
{up
} $test
{
126 -re
"event type: register-changed.*\r\n$gdb_prompt $" {
129 -re
"#1.*in first.*\r\n.*do_nothing.*\r\n$gdb_prompt $" {
135 gdb_test_multiple
{down
} $test
{
136 -re
"event type: register-changed.*\r\n$gdb_prompt $" {
139 -re
"#0.*do_nothing.* at .*\r\n.*void do_nothing.*\r\n$gdb_prompt $" {
145 # Note
: This will step the inferior out of do_nothing and
back into first.
146 gdb_test_multiple
{step
} $test
{
147 -re
"event type: register-changed.*\r\n$gdb_prompt $" {
150 -re
"first.* at .*\r\n$gdb_prompt $" {
155 # Test memory changed event
156 gdb_test_no_output
{set $saved
= *(int*) $sp
}
157 gdb_test_sequence
{set *(int*) $sp
= 0} "" {
158 "event type: memory-changed"
162 gdb_test_sequence
{set *(int*) $sp
= $saved
} "" {
163 "event type: memory-changed"
168 # Test that no memory_changed event is generated
on breakpoint
170 set test
"break second"
171 gdb_test_multiple
"break second" $test {
172 -re
"event type: memory-changed" {
175 -re
"Breakpoint (\[0-9\]+) at .*\r\n$gdb_prompt $" {
176 set second_breakpoint $expect_out
(1,string
)
182 set test
"continue to breakpoint $second_breakpoint"
183 set expected
".*event type: continue.*\r\n"
184 append expected
".*event type: stop.*\r\n"
185 append expected
".*stop reason: breakpoint.*\r\n"
186 append expected
".*all threads stopped.*\r\n$gdb_prompt $"
188 gdb_test_multiple
"continue" $test {
189 -re
"event type: memory-changed.*\r\n$gdb_prompt $" {
197 gdb_test_no_output
"delete $second_breakpoint"
200 gdb_test
"continue" ".*event type: continue.*
201 .
*clear_objfiles\
[\r\n\
]*progspace
: .
*py
-events.
*
205 dir ok
: True.
*" "Inferior 1 terminated."
207 gdb_test
"inferior 2" ".*Switching to inferior 2.*"
208 gdb_test
"continue" ".*event type: continue.*
212 dir ok
: True.
*" "Inferior 2 terminated."