# This file was written by Yao Qi <qiyao@cn.ibm.com>.

set testfile "vfork-thread"
set srcfile ${testfile}.c
set binfile ${testfile}


verbose "compiling source file now....."
# Build the shared libraries this test case needs.
if  { [ ltrace_compile "${srcdir}/${subdir}/${testfile}.c" "${objdir}/${subdir}/${binfile}" executable [list debug ldflags=-pthread] ] != "" } {
     send_user "Testcase compile failed, so all tests in this file will automatically fail\n."
}

ltrace_options "-f"

# Run PUT for ltarce.
set exec_output [ltrace_runtest $objdir/$subdir $objdir/$subdir/$binfile]

# Check the output of this program.
verbose "ltrace runtest output: $exec_output\n"
if [regexp {ELF from incompatible architecture} $exec_output] {
	fail "32-bit ltrace can not perform on 64-bit PUTs and rebuild ltrace in 64 bit mode!"
	return
} elseif [ regexp {Couldn't get .hash data} $exec_output ] {
	fail "Couldn't get .hash data!"
	return
}

ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace "puts" 9
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace "sleep" 7
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace "vfork resumed" 2
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace "_exit" 1
