| #!/bin/sh |
| |
| # Check that getdents/getdents64 syscalls are traced properly. |
| |
| . "${srcdir=.}/init.sh" |
| |
| check_prog awk |
| awk -f "$srcdir"/getdents.awk "$srcdir"/getdents.out || |
| framework_skip_ 'awk does not work properly' |
| |
| check_prog ls |
| check_prog mkdir |
| check_prog rm |
| check_prog seq |
| check_prog touch |
| |
| dir="$LOG.dir" |
| mkdir -- "$dir" || |
| framework_skip_ 'failed to create a directory' |
| |
| touch -- "$dir/$(for i in $(seq 1 127); do echo A; done; echo Z)" || |
| framework_skip_ 'failed to create a file' |
| |
| ls -- "$dir" > /dev/null || { |
| rm -rf -- "$dir" |
| framework_skip_ 'failed to list a directory' |
| } |
| |
| args='-vegetdents,getdents64' |
| $STRACE -o "$LOG" $args ls -- "$dir" > /dev/null |
| rc=$? |
| rm -rf -- "$dir" |
| [ $rc -eq 0 ] || { |
| cat "$LOG" |
| fail_ "strace $args failed" |
| } |
| |
| awk -f "$srcdir"/getdents.awk "$LOG" || { |
| cat "$LOG" |
| fail_ "strace $args failed to trace getdents/getdents64 properly" |
| } |
| |
| exit 0 |