#   Copyright 1998, 2002, 2005, 2007, 2008, 2009, 2010
#   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";

if $tracelevel then {
    strace $tracelevel
}


gdb_exit
gdb_start

set testfile "actions"
set srcfile ${testfile}.c
set binfile $objdir/$subdir/tfind

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"  ".*" ""
runto_main
gdb_reinitialize_dir $srcdir/$subdir

# We generously give ourselves one "pass" if we successfully 
# detect that this test cannot be run on this target!
if { ![gdb_target_supports_trace] } then {
    pass "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"

# 6.2 test help tstart
gdb_test "help tstart" "Start trace data collection." "6.2: help tstart"

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;
}

# 7.2 test help tstop
gdb_test "help tstop" "Stop trace data collection." "7.2: help tstop"

# 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.*" \
	"8.18: tfind line 0";
gdb_test "tfind line 32767" \
	"out of range.*|failed to find.*" \
	"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"

# 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"   "Synonym for 'none'.*"        \
	"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"

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