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