#   Copyright 1998-2020 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_trace_common_supports_arch] {
    unsupported "no trace-common.h support for arch"
    return -1
}

if { [gdb_compile "$srcdir/$subdir/$srcfile" "$binfile" \
	  executable {debug nowarnings nopie}] != "" } {
    untested "failed to compile"
    return -1
}
gdb_load $binfile
gdb_test "tstop"       ".*" ""
gdb_test "tfind none"  ".*" ""

# 6.2 test help tstart
gdb_test "help tstart" \
    "Start trace data collection\.\[\r\n\]+Usage: tstart \\\[NOTES\\\]\.\.\.\[\r\n\]+Any arguments supplied are recorded with the trace as a note and\[\r\n\]+reported by tstatus \\(if the target supports trace notes\\)\." \
    "6.2: help tstart"
# 7.2 test help tstop
gdb_test "help tstop" \
    "Stop trace data collection\.\[\r\n\]+Usage: tstop \\\[NOTES\\\]\.\.\.\[\r\n\]+Any arguments supplied are recorded with the trace as a stop reason and\[\r\n\]+reported by tstatus \\(if the target supports trace notes\\)\." \
    "7.2: help tstop"

# 8.38 test help tfind
gdb_test "help tfind"       "Select a trace frame.*"      \
	"8.38: help tfind"
gdb_test "help tfind pc"    "Select a trace frame by PC.*" \
	"8.38: help tfind PC"
gdb_test "help tfind end"   "De-select any trace frame.*" \
	"8.38: help tfind end"
gdb_test "help tfind none"  "De-select any trace frame.*" \
	"8.38: help tfind none"
gdb_test "help tfind line"  "Select a trace frame by source line.*" \
	"8.38: help tfind line"
gdb_test "help tfind start" "Select the first trace frame.*" \
	"8.38: help tfind start"
gdb_test "help tfind range" "Select a trace frame whose PC is in.*" \
	"8.38: help tfind range"
gdb_test "help tfind trace" "Select a trace frame by tracepoint number.*" \
	"8.38: help tfind tracepoint"

runto_main
gdb_reinitialize_dir $srcdir/$subdir

if { ![gdb_target_supports_trace] } then {
    unsupported "current target does not support trace"
    return 1

}

# If testing on a remote host, download the source file.
# remote_download host $srcdir/$subdir/$srcfile

# define relative source line numbers:
# all subsequent line numbers are relative to this first one (baseline)
set baseline  [gdb_find_recursion_test_baseline $srcfile]
if { $baseline == -1 } then {
    fail "could not find gdb_recursion_test function"
    return
}

set testline1 [expr $baseline + 1]
set testline2 [expr $baseline + 5]
set testline3 [expr $baseline + 6]
set testline4 [expr $baseline + 7]
set testline5 [expr $baseline + 8]

#
# test tfind command
#

gdb_delete_tracepoints
set tdp1 [gdb_gettpnum "\*gdb_recursion_test"]
set tdp2 [gdb_gettpnum $testline2]
set tdp3 [gdb_gettpnum $testline3]
set tdp4 [gdb_gettpnum $testline4]
set tdp5 [gdb_gettpnum $testline5]
if { $tdp1 <= 0 || $tdp2 <= 0 || $tdp3 <= 0 || \
     $tdp4 <= 0 || $tdp5 <= 0 } then {
    fail "setting tracepoints"
    return
}

# 6.1 test tstart command

set return_me 1
gdb_test_multiple "tstart" "6.1: tstart" {
    -re "Trace can only be run on remote targets.*$gdb_prompt $" {
	fail "6.1: tstart (not connected to remote?)"
    }
    -re "Target does not support this command.*$gdb_prompt $" {
	fail "6.1: tstart (connected to wrong target?)"
    }
    -re "Target returns error code.*$gdb_prompt $" {
	fail "6.1: tstart (connected to wrong target?)"
    }
    -re "$gdb_prompt $" {
	pass "6.1: tstart"
	set return_me 0
    }
}

if { $return_me == 1 } then {
    return -1
}

# test tstatus (when trace on)
gdb_test "tstatus" "\[Tt\]race is running.*" "test tstatus on"

gdb_breakpoint "end" qualified
gdb_test "continue" \
    "Continuing.*Breakpoint $decimal, end.*" \
    "run trace experiment"

# 7.1 test tstop command

set return_me 1
gdb_test_multiple "tstop" "7.1: tstop" {
    -re "Trace can only be run on remote targets.*$gdb_prompt $" {
	fail "7.1: tstop (not connected to remote?)"
    }
    -re "Target does not support this command.*$gdb_prompt $" {
	fail "7.1: tstop (connected to wrong target?)"
    }
    -re "Target returns error code.*$gdb_prompt $" {
	fail "7.1: tstop (connected to wrong target?)"
    }
    -re "$gdb_prompt $" {
	pass "7.1: tstop"
	set return_me 0
    }
}

if { $return_me == 1 } then {
    return -1
}

# test tstatus (when trace off)
gdb_test "tstatus" "Trace stopped by a tstop command.*" \
    "test tstatus off after tstop"

## record starting PC
set save_pc [gdb_readexpr "(unsigned long) \$pc"]
if { $save_pc == -1 } then {
    fail "could not read PC"
    return
}

# 8.7  tfind start
## check $trace_frame == 0
gdb_tfind_test "8.7: tfind start command" "start" "0"
## check $pc != startPC
gdb_test "printf \"x \%d x\\n\", \$pc != $save_pc" \
	"x 1 x" \
	"8.7b: tfind start"

# 8.8  tfind none
## check $trace_frame == -1
gdb_tfind_test "8.8: tfind none" "none" "-1"
## check $pc == startPC
gdb_test "printf \"x \%d x\\n\", \$pc == $save_pc" \
	"x 1 x" \
	"8.8b: tfind none (restores non-trace PC)"

# 8.9  tfind end
## check $trace_frame == -1
gdb_tfind_test "8.9: tfind end, selects no frame" "end" "-1"
## check $pc == startPC
gdb_test "printf \"x \%d x\\n\", \$pc == $save_pc" \
	"x 1 x" \
	"8.9b: tfind end (restores non-tracing PC)"

# 8.1  tfind n
## check $trace_frame == n
gdb_tfind_test "8.1: tfind 1" "1" "1"
## check $trace_line corresponds to tracepoint for frame n
gdb_test "print \$trace_line" "$testline2" "8.1b: tfind 1 (correct line)"

# 8.28 tfind invalid n (big number)
## check "not found" error
## check $trace_frame != n
gdb_test "tfind 32767" \
	"failed to find.*" \
	"8.28: tfind <n> command rejects invalid frame number"

gdb_test "printf \"x \%d x\\n\", \$trace_frame == 32767" \
	"x 0 x" \
	"8.28: tfind <n> rejected bad input (32767)"

# 8.31 tfind negative n
## check error
gdb_test "tfind -3" "invalid input.*" "8.31: tfind <n> rejects negative input"
## check $trace_frame != -n
gdb_test "printf \"x \%d x\\n\", \$trace_frame == -3" "x 0 x" \
	"8.31: tfind <n> rejected negative input (-3)"

# 8.10 tfind <no arg>
## check $trace_frame += 1

gdb_tfind_test "8.10: tfind start" "start" "0"
gdb_test "print \$trace_line" "$baseline"  \
	"8.10: tfind 0 (correct line $baseline)"
gdb_tfind_test "8.10: tfind noargument 1" "" "1"
gdb_test "print \$trace_line" "$testline2" \
	"8.10: tfind 1 (correct line $testline2)"
gdb_tfind_test "8.10: tfind noargument 2" "" "2"
gdb_test "print \$trace_line" "$testline3" \
	"8.10: tfind 2 (correct line $testline3)"
gdb_tfind_test "8.10: tfind noargument 3" "" "3"
gdb_test "print \$trace_line" "$testline4" \
	"8.10: tfind 3 (correct line $testline4)"

gdb_tfind_test "8.11: tfind 3" "3" "3"
gdb_test "print \$trace_line" "$testline4" \
	"8.11: tfind 3 (correct line $testline4)"
gdb_tfind_test "8.11: tfind backward 2" "-" "2"
gdb_test "print \$trace_line" "$testline3" \
	"8.11: tfind 2 (correct line $testline3)"
gdb_tfind_test "8.11: tfind backward 1" "-" "1"
gdb_test "print \$trace_line" "$testline2" \
	"8.11: tfind 1 (correct line $testline2)"
gdb_tfind_test "8.11: tfind backward 0" "-" "0"
gdb_test "print \$trace_line" "$baseline"  \
	"8.11: tfind 0 (correct line $baseline)"

gdb_tfind_test "8.12: tfind none" "none" "-1"
gdb_tfind_test "8.12: tfind tracepoint <n>" "tracepoint $tdp2" \
	"\$tracepoint" "$tdp2"
gdb_test "print \$trace_line" "$testline2" \
	"8.12: tfind tracepoint <n> (line $testline2)"

gdb_tfind_test "8.25: tfind none" "none" "-1"
gdb_test "tfind tracepoint 0" "failed to find.*" \
	"8.25: tfind tracepoint rejects zero"
gdb_test "tfind tracepoint 32767" "failed to find.*" \
	"8.25: tfind tracepoint rejects nonexistant tracepoint (32767)"
gdb_test "tfind tracepoint -1" "failed to find.*" \
	"8.25: tfind tracepoint rejects nonexistant tracepoint (-1)"

# 8.37 tfind tracepoint n where n no longer exists (but used to)
gdb_test_no_output "delete trace $tdp2" ""
gdb_tfind_test "8.37: tfind none" "none" "-1"
gdb_tfind_test "8.37: tfind deleted tracepoint" \
	"tracepoint $tdp2" \
	"\$tracepoint" "$tdp2"
gdb_test "print \$trace_line" "$testline2" \
	"8.37: tfind deleted tracepoint (line $testline2)"

# 8.13 tfind tracepoint <no arg>
## check $tracepoint same before and after, $trace_frame changed

gdb_tfind_test "8.13: tfind none" "none" "-1"
gdb_tfind_test "8.13: tracepoint $tdp1" "tracepoint $tdp1" \
	"\$tracepoint" "$tdp1"
gdb_test "print \$trace_line" "$baseline" \
	"8.13: tfind tracepoint $tdp1 (line $baseline)"
gdb_test_no_output "set \$save_frame = \$trace_frame" ""
gdb_tfind_test "8.13: tracepoint <no arg>" "tracepoint" \
	"\$tracepoint" "$tdp1"
gdb_test "printf \"x \%d x\\n\", \$trace_frame == \$save_frame" \
	"x 0 x" \
	"8.13: tracepoint <no arg>, tracepoint number unchanged"

# 1.12 set tracepoint in prologue
#
# tdp1 was set at *gdb_recursion_test (ie. the hard address of the
# function, before the prologue).  Test to see that it succeeded.
# Current pc should be equal to the address of the function.

gdb_test "printf \"x \%d x\\n\", \$pc == gdb_recursion_test" \
	"x 1 x" \
	"1.12: set tracepoint in prologue"

# 8.14 tfind pc x
## check pc == x, $trace_frame != -1
gdb_tfind_test "8.14: tfind 3" "3" "3"
gdb_test "print \$trace_line" "$testline4" \
	"8.14: tfind 3 (line $testline4)"

gdb_test_no_output "set \$test_pc = \$pc" ""
gdb_tfind_test "8.14: tfind none" "none" "-1"
gdb_tfind_test "8.14: tfind pc" "pc \$test_pc" "\$trace_frame != -1" "1"
gdb_test "print \$trace_line" "$testline4" \
	"8.14: tfind pc x (line $testline4)"
gdb_test "printf \"x \%d x\\n\", \$pc == \$test_pc" \
	"x 1 x" \
	"8.14: tfind pc x"

# 8.15 tfind pc <no arg>
## check pc same before and after, $trace_frame changed
gdb_tfind_test "8.15: tfind 3" "3" "3"
gdb_test "print \$trace_line" "$testline4" \
	"8.15: tfind 3 (line $testline4)"
gdb_test_no_output "set \$test_pc = \$pc" ""
gdb_tfind_test "8.15: tfind pc" "pc" "\$pc == \$test_pc" "1"
gdb_test "print \$trace_line" "$testline4" \
	"8.15: tfind pc (line $testline4)"
gdb_test "printf \"x \%d x\\n\", \$trace_frame != 3" "x 1 x" \
	"8.15: trace frame didn't change"

# 8.26 tfind pc invalid x
## check error, pc != x (trace_frame unchanged?)
gdb_tfind_test "8.26: tfind start" "start" "0"
gdb_test "tfind pc  0" "failed to find.*" "8.26: tfind pc zero"
gdb_test "tfind pc -1" "failed to find.*" "8.26: tfind pc -1"

# 8.16 tfind line n
## check #trace_frame != -1, $trace_line == n
gdb_tfind_test "8.16: tfind none" "none" "-1"
gdb_tfind_test "8.16: tfind line $testline3" \
	"line $testline3" \
	"\$trace_line == $testline3" "1"

# 8.17 tfind line <no arg> (# 8.19, 8.20)
## check $trace_line changed, no error, pc changed, frame changed, tdp changed
gdb_tfind_test "8.17: tfind none" "none" "-1"
gdb_tfind_test "8.17: tfind line $testline3" "line $testline3" "\$trace_line == $testline3" "1"
gdb_tfind_test "8.17: tfind line <no arg>" "line" "\$trace_line != $testline3" "1"

# 8.36 tfind and disassembly
gdb_tfind_test "8.36: tfind start" "start" "0"
set timeout 60
# look for disassembly of function label
gdb_test "disassemble gdb_c_test" \
    "<(\.\[0-9\]+|)>:.*End of assembler dump.*" \
    "8.36: trace disassembly"

gdb_test "tfind line 0" \
	"out of range.*|failed to find.*|No line 0 in .*" \
	"8.18: tfind line 0"
gdb_test "tfind line 32767" \
	"out of range.*|failed to find.*|No line 32767 in .*" \
	"8.27: tfind line 32767"
gdb_test "tfind line NoSuChFiLe.c:$baseline" \
	"No source file named.*" \
	"8.27: tfind line in bad source file"

# 8.32 tfind invalid subcommand (tfind foo) 
## check error
gdb_test "tfind NoSuChOpTiOn 21" \
	"No symbol.*|\[Ww\]arning.*|\[Ee\]rror.*" \
	"8.32: tfind with bad subcommand"

# Finished!
gdb_tfind_test "8.17: tfind none" "none" "-1"
