| #!/bin/sh |
| |
| # Ensure that strace -k works. |
| |
| . "${srcdir=.}/init.sh" |
| |
| # strace -k is implemented using /proc/$pid/maps |
| [ -f /proc/self/maps ] || |
| framework_skip_ '/proc/self/maps is not available' |
| |
| check_prog sed |
| check_prog tr |
| |
| ./stack-fcall || |
| fail_ 'stack-fcall failed' |
| |
| $STRACE -h | grep '^-k' > /dev/null || |
| skip_ 'strace -k is not available' |
| |
| args="-e getpid -k ./stack-fcall" |
| $STRACE $args > $LOG 2>&1 || { |
| cat $LOG |
| fail_ "$STRACE $args failed" |
| } |
| |
| expected='getpid f3 f2 f1 f0 main ' |
| result=$(sed -n '1,/(main+0x[a-f0-9]\+) .*/ s/^.*(\([^+]\+\)+0x[a-f0-9]\+) .*/\1/p' $LOG | |
| tr '\n' ' ') |
| |
| test "$result" = "$expected" || { |
| cat $LOG |
| echo "expected: \"$expected\"" |
| echo "result: \"$result\"" |
| fail_ "unexpected output from $STRACE $args" |
| } |
| |
| exit 0 |