+## WITH_STRACE(tag, cmd)
+##
+## There's an awful hack here. If a process running under strace exits with
+## a signal, then strace will kill itself with the same signal -- and
+## therefore clobber the original process's core file. So we arrange to run
+## strace in one directory and have the child process run in another.
+m4_define([WITH_STRACE],
+[case "${TRIPE_TEST_STRACE-nil}" in
+ nil)
+ $2
+ ;;
+ *)
+ mkdir -p strace-hack.$1/
+ (ulimit -c hard >/dev/null 2>&1
+ sh -c 'cd strace-hack.$1; exec "$[]@"' - \
+ strace -ff -tt -v -s1024 -o../$1.trace \
+ sh -c 'cd ..; exec "$[]@"' - \
+ $2)
+ ;;
+ esac])
+