#   Copyright 1998-2013 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 tfind.exp
    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_test "break end" ".*" ""
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"
