# Copyright (C) 1996-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 Fred Fish. (fnf@cygnus.com)


standard_testfile

# regexp for "horizontal" text (i.e. doesn't include newline or
# carriage return)
set horiz "\[^\n\r\]*"

if [istarget "*-*-linux"] then {
    set target_cflags "-D_MIT_POSIX_THREADS"
} else {
    set target_cflags ""
}

if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable debug] != "" } {
    return -1
}

clean_restart ${binfile}

gdb_test_no_output "set print sevenbit-strings"
#gdb_test_no_output "set print address off"
gdb_test_no_output "set width 0"

# We'll need this when we send_gdb a ^C to GDB.  Need to do it before we
# run the program and gdb starts saving and restoring tty states.
# On Ultrix, we don't need it and it is really slow (because shell_escape
# doesn't use vfork).
if ![istarget "*-*-ultrix*"] then {
    gdb_test "shell stty intr '^C'" ".*"
}

proc all_threads_running {} {
    global gdb_prompt
    global srcfile

    # Reset all the counters to zero.
    gdb_test_no_output "set var common_routine::hits=0"
    gdb_test_no_output "set var common_routine::from_thread1=0"
    gdb_test_no_output "set var common_routine::from_thread2=0"
    gdb_test_no_output "set var common_routine::from_main=0"
    gdb_test_no_output "set var common_routine::full_coverage=0"

    # Disable all breakpoints.
    gdb_test_no_output "disable"

    # Set up a breakpoint that will cause us to stop when we have
    # been called 15 times.  This should be plenty of time to allow
    # every thread to run at least once, since each thread sleeps for
    # one second between calls to common_routine.
    gdb_test "tbreak common_routine if hits >= 15" ".*"

    # Start all the threads running again and wait for the inferior
    # to stop.  Since no other breakpoints are set at this time
    # we should stop only when we have been previously called 15 times.

    set return_me 1

    gdb_test_multiple "continue" "continue until common routine run 15 times" {
	-re "Continuing.*common_routine.*at.*$srcfile.*$gdb_prompt $" {
	    set return_me 0
	}
    }

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

    # Check that we stopped when we actually expected to stop, by
    # verifying that there have been 15 previous hits.

    # NOTE: Because of synchronization behavior, it is possible for
    # more than one thread to increment "hits" between one breakpoint
    # trap and the next.  So stopping after 16 or 17 hits should be
    # considered acceptable.

    gdb_test_multiple "p common_routine::hits" \
	"stopped before calling common_routine 15 times" {
	    -re ".*= 15\r\n$gdb_prompt $" {
		pass "stopped before calling common_routine 15 times"
	    }
	    -re ".*= 16\r\n$gdb_prompt $" {
		pass "stopped before calling common_routine 15 times (16 times)"
	    }
	    -re ".*= 17\r\n$gdb_prompt $" {
		pass "stopped before calling common_routine 15 times (17 times)"
	    }
	}

    # Also check that all of the threads have run, which will only be true
    # if the full_coverage variable is set.

    set return_me 1
    gdb_test_multiple "p common_routine::full_coverage" \
	"some threads didn't run" {
	    -re ".* = 1.*$gdb_prompt $" {
	    }
	    -re ".* = 0.*$gdb_prompt $" {
		fail "some threads didn't run"
		set return_me 0
	    }
	}

    # Looks fine, return success.
    return $return_me
}

proc test_startup {} {
    global srcdir srcfile gdb_prompt expect_out
    global horiz
    global main_id thread1_id thread2_id

    # We should be able to do an info threads before starting any others.
    set return_me 1
    gdb_test_multiple "info threads" "info threads" {
	-re ".*Thread.*main.*$gdb_prompt $" {
	    pass "info threads"
	    set return_me 0
	}
	-re "\r\n$gdb_prompt $" {
	    unsupported "gdb does not support pthreads for this machine"
	}
    }

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

    # Extract the thread id number of main thread from "info threads" output.
    gdb_test_multiple "info threads" "get main thread id" {
	-re "(\[0-9\]+)(${horiz}Thread${horiz}main.*)($gdb_prompt $)" {
	}
    }

    set main_id $expect_out(1,string)

    # Check that we can continue and create the first thread.
    gdb_test "break thread1" "Breakpoint .* file .*$srcfile.*"
    gdb_test "continue" \
	    "Continuing.*Breakpoint .*, thread1 \\(arg=0xfeedface\\).*at.*$srcfile.*" \
	    "Continue to creation of first thread"
    gdb_test_no_output "disable"

    # Extract the thread id number of thread 1 from "info threads" output.
    gdb_test_multiple "info threads" "get thread 1 id" {
	-re "(\[0-9\]+)(${horiz}Thread${horiz}thread1.*)($gdb_prompt $)" {
	}
    }

    set thread1_id $expect_out(1,string)

    # Check that we can continue and create the second thread,
    # ignoring the first thread for the moment.
    gdb_test "break thread2" "Breakpoint .* file .*$srcfile.*"
    gdb_test "continue" \
	    "Continuing.*Breakpoint .*, thread2 \\(arg=0xdeadbeef\\).*at.*$srcfile.*" \
	    "Continue to creation of second thread"

    # Extract the thread id number of thread 2 from "info threads" output.
    gdb_test_multiple "info threads" "get thread 2 id" {
	-re "(\[0-9\]+)(${horiz}Thread${horiz}thread2.*)($gdb_prompt $)" {
	}
    }

    set thread2_id $expect_out(1,string)

    return 1
}

proc check_control_c {} {
    global gdb_prompt

    # Verify that all threads are running.
    if [all_threads_running] then {
	pass "All threads running after startup"
    }

    # Send a continue followed by ^C to the process to stop it.
    gdb_test_multiple "continue" "continue with all threads running" {
	-re "Continuing." {
	    pass "Continue with all threads running"
	}
    }
    after 2000
    send_gdb "\003"
    set description "Stopped with a ^C"
    gdb_expect {
	-re "Program received signal SIGINT.*$gdb_prompt $" {
	    pass $description
	}
	-re "Quit.*$gdb_prompt $" {
	    pass $description
	}
	timeout {
	    fail "$description (timeout)"
	    return 1
	}
    }
    gdb_test "bt" ".*"

    # Verify that all threads can be run again after a ^C stop.
    if [all_threads_running] then {
	pass "All threads running after continuing from ^C stop"
    }
    return 0
}

proc check_backtraces {} {
    global gdb_prompt main_id thread1_id thread2_id

    # Check that the "thread apply N backtrace" command works

    gdb_test "thread apply $main_id backtrace" \
	    ".* in main \\(argc=.*, argv=.*\\).*" \
	    "check backtrace from main thread"
    gdb_test "thread apply $thread1_id backtrace" \
	    ".* in thread1 \\(arg=0xfeedface\\).*" \
	    "check backtrace from thread 1"
    gdb_test "thread apply $thread2_id backtrace" \
	    ".* in thread2 \\(arg=0xdeadbeef\\).*" \
	    "check backtrace from thread 2"

    # Check that we can apply the backtrace command to all
    # three threads with a single gdb command

    gdb_test "thread apply $main_id $thread1_id $thread2_id bt" \
	    ".* in main .* in thread1 .* in thread2.*" \
	    "apply backtrace command to all three threads"

    # Check that we can do thread specific backtraces
    # This also tests that we can do thread specific breakpoints.

    gdb_test "break common_routine thread $thread2_id" \
	    "Breakpoint .* at 0x.* file .* line .*" \
	    "set break at common_routine in thread 2"

    gdb_test_multiple "continue" "continue to bkpt at common_routine in thread 2" {
	-re "Breakpoint .* common_routine \\(arg=2\\).*$gdb_prompt $" {
	    pass "continue to bkpt at common_routine in thread 2"
	    gdb_test "backtrace" \
		"#0.*common_routine \\(arg=2\\).*#1.*thread2.*" \
		"backtrace from thread 2 bkpt in common_routine"
	}
	-re "Breakpoint .* common_routine \\(arg=0\\).*$gdb_prompt $" {
	    fail "continue to bkpt at common_routine in thread 2 (arg=0)"
	}
	-re "Breakpoint .* common_routine \\(arg=1\\).*$gdb_prompt $" {
	    fail "continue to bkpt at common_routine in thread 2 (arg=1)"
	}
    }
}

setup_xfail "alpha-*-osf*"
if [runto_main] then {
    clear_xfail "alpha-*-osf*"
    if [test_startup] then {
	if [check_control_c] then {
	    warning "Could not stop child with ^C; skipping rest of tests.\n"
	    return;
	}
	check_backtraces
    }
}
clear_xfail "alpha-*-osf*"
