198d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam# This file was written by Yao Qi <qiyao@cn.ibm.com>.
298d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam
398d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliamset testfile "trace-fork"
498d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliamset srcfile ${testfile}.c
598d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliamset binfile ${testfile}
698d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam
798d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam
898d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliamverbose "compiling source file now....."
998d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam# Build the shared libraries this test case needs.
104627fc493db8459e6ef0597a4155a06b7d120d20Zachary T Welchif  { [ ltrace_compile "${srcdir}/${subdir}/${testfile}.c" "${objdir}/${subdir}/${binfile}" executable {debug} ] != "" } {
1198d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam     send_user "Testcase compile failed, so all tests in this file will automatically fail.\n"
1298d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam}
1398d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam
1468621dbd097284a7a60318815399503c24518f12Zachary T Welchltrace_options "-f"
1568621dbd097284a7a60318815399503c24518f12Zachary T Welchset exec_output [ltrace_runtest $objdir/$subdir $objdir/$subdir/$binfile]
1698d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam
1798d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam#check the output of this program.
1898d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliamverbose "ltrace runtest output: $exec_output\n"
1998d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliamif [regexp {ELF from incompatible architecture} $exec_output] {
2098d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam	fail "32-bit ltrace can not perform on 64-bit PUTs and rebuild ltrace in 64 bit mode!"
2198d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam	return
2298d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam} elseif [ regexp {Couldn't get .hash data} $exec_output ] {
2398d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam	fail "Couldn't get .hash data!"
2498d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam	return
2598d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam}
2698d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam
27593ee323b97ed61f68c209205c2b365897696942Petr Machataif [ regexp {Cannot attach} $exec_output ] {
28593ee323b97ed61f68c209205c2b365897696942Petr Machata	fail "Couldn't attach to forked process!"
29593ee323b97ed61f68c209205c2b365897696942Petr Machata	return
30593ee323b97ed61f68c209205c2b365897696942Petr Machata}
31593ee323b97ed61f68c209205c2b365897696942Petr Machata
3268621dbd097284a7a60318815399503c24518f12Zachary T Welchset pattern {^[0-9]* fork}
334627fc493db8459e6ef0597a4155a06b7d120d20Zachary T Welchltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1
34593ee323b97ed61f68c209205c2b365897696942Petr Machata
3568621dbd097284a7a60318815399503c24518f12Zachary T Welchset pattern {^[0-9]* printf}
364627fc493db8459e6ef0597a4155a06b7d120d20Zachary T Welchltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1
3798d884bfd78ea7a37f46515c6e9e3635a95d8cbcPaul Gilliam
3868621dbd097284a7a60318815399503c24518f12Zachary T Welchset pattern {^[0-9]* puts}
394627fc493db8459e6ef0597a4155a06b7d120d20Zachary T Welchltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1
40593ee323b97ed61f68c209205c2b365897696942Petr Machata
4168621dbd097284a7a60318815399503c24518f12Zachary T Welchset pattern {^[0-9]* wait}
424627fc493db8459e6ef0597a4155a06b7d120d20Zachary T Welchltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1
43593ee323b97ed61f68c209205c2b365897696942Petr Machata
4468621dbd097284a7a60318815399503c24518f12Zachary T Welchset pattern {^[0-9]* sleep}
454627fc493db8459e6ef0597a4155a06b7d120d20Zachary T Welchltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1
46