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

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


if [get_compiler_info $binfile] {
  return -1
}

verbose "compiling source file now....."
if { [ltrace_compile $srcdir/$subdir/$srcfile $objdir/$subdir/$binfile executable debug ] != ""} {
  send_user "Testcase compile failed, so all tests in this file will automatically fail.\n"
}

# set options for ltrace.
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
}

# Verify the output by checking numbers of print in main-vfork.ltrace.
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace "_exit" 2
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace "vfork resumed" 2
