old-cross-binutils/gdb/testsuite/gdb.trace/mi-traceframe-changed.exp
Yao Qi f2a8bc8a74 2012-12-15 Yao Qi <yao@codesourcery.com>
* breakpoint.c (print_one_breakpoint_location): Display the
	state of 'installed' of each non-pending location of a tracepoint
	in both CLI and MI.
	(download_tracepoint_locations): Notify 'breakpoint-modified'
	observer if any tracepoint location is downloaded.
	* tracepoint.c (start_tracing): Likewise.
	(merge_uploaded_tracepoints): Record all modified
	tracepoints and notify 'breakpoint-modified' observer for them.

	* NEWS: Mention the change for CLI and MI.

gdb/doc:
2012-12-15  Yao Qi  <yao@codesourcery.com>

	* gdb.texinfo (Listing Tracepoints): New item and example about
	'installed on target' output.
	Add more in the example about 'installed on target'.
	(GDB/MI Breakpoint Commands): Doc about 'installed field.

gdb/testsuite:
2012-12-15  Yao Qi  <yao@codesourcery.com>

	* gdb.trace/mi-tracepoint-changed.exp (test_pending_resolved): Check
	'installed' field in '=breakpoint-modified'.
	(test_reconnect): Check 'installed' field in
	'=breakpoint-modified' and '=breakpoint-created'.

	* gdb.trace/actions.exp: Update test for 'installed' field.
	* gdb.trace/change-loc.exp (tracepoint_change_loc_1):
	(tracepoint_change_loc_2): Likewise.
	Check 'info tracepoint' display nothing else.
	* gdb.trace/deltrace.exp: Likewise.
	* gdb.trace/infotrace.exp: Likewise.
	* gdb.trace/mi-traceframe-changed.exp (test_tfind_remote):
	Likewise.
	* gdb.trace/passcount.exp: Likewise.
	* gdb.trace/tracecmd.exp: Likewise.
	* gdb.trace/while-stepping.exp: Likewise.
2012-12-15 02:19:21 +00:00

137 lines
3.7 KiB
Text

# 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/>.
load_lib trace-support.exp
load_lib mi-support.exp
set MIFLAGS "-i=mi"
standard_testfile tfile.c
set executable $testfile
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
executable {debug nowarnings}] != "" } {
untested ${testfile}.exp
return -1
}
# Make sure we are starting fresh.
remote_file host delete basic.tf
remote_file target delete basic.tf
remote_exec target "$binfile"
# Copy tracefile from target to host.
remote_download host [remote_upload target basic.tf] basic.tf
proc test_tfind_tfile { } { with_test_prefix "tfile" {
global binfile
global decimal
if [mi_gdb_start] {
return
}
mi_gdb_load ${binfile}
mi_gdb_test "-target-select tfile basic.tf" \
".*=breakpoint-created,bkpt=\{number=\"${decimal}\",type=\"tracepoint\",disp=\"keep\",enabled=\"y\",.*,func=\"write_basic_trace_file\".*\\^connected" \
"select trace file"
mi_gdb_test "tfind 0" \
".*=traceframe-changed,num=\"0\",tracepoint=\"${decimal}\".*\\^done" \
"tfind 0"
# No MI notification is sent because traceframe is not changed.
mi_gdb_test "tfind 0" \
"\\&\"tfind 0\\\\n\"\r\n\~\"Found.*\\^done" \
"tfind 0 again"
mi_gdb_test "tfind end" \
".*=traceframe-changed,end.*\\^done" \
"tfind end"
# No MI notification is send because request is from MI command.
mi_gdb_test "-trace-find frame-number 0" \
"-trace-find frame-number 0\r\n\\^done,found=\"1\",tracepoint=\"${decimal}\",traceframe=\"0\",frame=\{.*" \
"-trace-find frame-number 0"
mi_gdb_exit
}}
test_tfind_tfile
# Change to a different test case in order to run it on target, and get
# several traceframes.
standard_testfile status-stop.c
set testfile ${testfile}-1
set binfile ${objdir}/${subdir}/${testfile}
set executable $testfile
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
executable {debug nowarnings}] != "" } {
untested ${testfile}.exp
return -1
}
# Test target supports tracepoints or not.
clean_restart $executable
if ![runto_main] {
fail "Can't run to main to check for trace support"
return -1
}
if ![gdb_target_supports_trace] {
unsupported "Current target does not support trace"
return -1;
}
gdb_exit
proc test_tfind_remote { } { with_test_prefix "remote" {
global decimal
if [mi_gdb_start] {
return
}
mi_run_to_main
mi_gdb_test "-break-insert end" "\\^done.*" "break end"
mi_gdb_test "-break-insert -a func2" "\\^done.*" "break func2"
mi_gdb_test "-trace-start" "=breakpoint-modified,bkpt={.*installed=\"y\".*}.*\\^done.*" \
"trace start"
mi_execute_to "exec-continue" "breakpoint-hit" end "" ".*" ".*" \
{ "" "disp=\"keep\"" } \
"continue to end"
mi_gdb_test "-trace-stop" "\\^done.*" "trace stop"
mi_gdb_test "tfind 0" \
".*=traceframe-changed,num=\"0\",tracepoint=\"${decimal}\".*\\^done" \
"tfind 0"
mi_gdb_test "tfind" \
".*=traceframe-changed,num=\"1\",tracepoint=\"${decimal}\".*\\^done" \
"tfind"
mi_gdb_test "tfind end" \
".*=traceframe-changed,end.*\\^done" \
"tfind end"
mi_gdb_exit
}}
test_tfind_remote
return 0