binutils-gdb/gdb/testsuite/gdb.trace/while-stepping.exp
Joel Brobecker 61baf725ec update copyright year range in GDB files
This applies the second part of GDB's End of Year Procedure, which
updates the copyright year range in all of GDB's files.

gdb/ChangeLog:

        Update copyright year range in all GDB files.
2017-01-01 10:52:34 +04:00

182 lines
4.9 KiB
Plaintext

# Copyright 1998-2017 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/>.
# This file was written by Michael Snyder (msnyder@cygnus.com)
load_lib "trace-support.exp"
gdb_exit
gdb_start
standard_testfile actions.c
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" $binfile \
executable {debug nowarnings}] != "" } {
untested "failed to compile"
return -1
}
gdb_reinitialize_dir $srcdir/$subdir
# If testing on a remote host, download the source file.
# remote_download host $srcdir/$subdir/$srcfile
gdb_file_cmd $binfile
#
# test while-stepping command
#
gdb_delete_tracepoints
set trcpt1 [gdb_gettpnum gdb_c_test]
if { $trcpt1 <= 0 } then {
fail "could not find gdb_c_test function"
return
}
# 5.12 basic while-stepping command (collect regs)
gdb_test "info tracepoints" \
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+.
\[\t \]+not installed on target." \
"5.12: set a tracepoint, stepcount is zero"
set stepcount 12
gdb_trace_setactions "5.12: set stepcount to $stepcount" \
"" \
"while-stepping $stepcount" "" \
"collect \$regs" "^$" \
"end" ""
gdb_test "info tracepoints" \
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+.
\[\t \]+while-stepping 12.*" \
"5.12: info trace shows \"while-stepping\""
# 5.13 step out of context while collecting local variable
# [deferred to dynamic test section]
proc while_stepping_bogus_arg { bogus msgstring } {
global gdb_prompt
gdb_trace_setactions "$msgstring" \
"" \
"while-stepping $bogus" ".*while-stepping step count"
}
# 5.14 while-stepping (no argument)
while_stepping_bogus_arg "" "5.14: while-stepping null stepcount"
# 5.15 while-stepping (zero stepcount)
while_stepping_bogus_arg "0" "5.15: while-stepping rejects zero stepcount"
# 5.16 while-stepping without collecting anything
gdb_trace_setactions "5.16: step without collecting anything" \
"" \
"while-stepping $stepcount" "^$" \
"end" ""
gdb_test "info tracepoints" \
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+.
.*while-stepping $stepcount.*
.*end.*" \
"5.16: confirm actions, step without collecting anything"
# Can't use runto_main here, because that would delete the tracepoints
# created above.
# Load the binary to the target too.
gdb_load $binfile
gdb_breakpoint "main"
gdb_run_cmd
if {[gdb_test "" "Breakpoint .*"] != 0} {
fail "can't run to main"
return -1
}
if ![gdb_target_supports_trace] {
unsupported "target does not support trace"
return -1
}
gdb_trace_setactions "set stepcount to $stepcount" \
"" \
"while-stepping $stepcount" "" \
"collect \$regs " "^$" \
"collect \$locals " "^$" \
"end" ""
proc check_tracepoint { data_source } {
with_test_prefix "$data_source" {
global srcfile
global stepcount
gdb_test "info tracepoints" \
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+.
\[\t \]+while-stepping $stepcount.*
\[\t \]+collect \\\$regs.*
\[\t \]+collect \\\$locals.*
\[\t \]+end.*"
}
}
gdb_test_no_output "tstart"
check_tracepoint "live"
gdb_test_no_output "tstop"
set tracefile [standard_output_file ${testfile}]
gdb_test "tsave ${tracefile}.tf" \
"Trace data saved to file '${tracefile}.tf'\.\\r" \
"save tfile trace file"
gdb_test "tsave -ctf ${tracefile}.ctf" \
"Trace data saved to directory '${tracefile}.ctf'\.\\r" \
"save ctf trace file"
# Restart GDB and read the trace data in tfile target.
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_file_cmd $binfile
gdb_test "target tfile ${tracefile}.tf" ".*" \
"change to tfile target"
check_tracepoint "tfile"
# Try to read ctf data if GDB supports.
set gdb_can_read_ctf_data 0
gdb_test_multiple "target ctf" "" {
-re "Undefined target command: \"ctf\"\. Try \"help target\"\.\r\n$gdb_prompt $" {
set gdb_can_read_ctf_data 0
}
-re "No CTF directory specified.*\r\n$gdb_prompt $" {
set gdb_can_read_ctf_data 1
}
}
if { $gdb_can_read_ctf_data } {
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_file_cmd $binfile
gdb_test "target ctf ${tracefile}.ctf" ".*" \
"change to ctf target"
check_tracepoint "ctf"
}