Dmitry V. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | # Check that getdents/getdents64 syscalls are traced properly. |
| 4 | |
| 5 | . "${srcdir=.}/init.sh" |
| 6 | |
Dmitry V. Levin | 3ec5c04 | 2014-09-23 01:51:05 +0000 | [diff] [blame] | 7 | check_prog awk |
Dmitry V. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 8 | check_prog ls |
| 9 | check_prog mkdir |
Dmitry V. Levin | c929771 | 2015-01-25 00:04:20 +0000 | [diff] [blame] | 10 | check_prog rm |
| 11 | check_prog seq |
| 12 | check_prog touch |
Dmitry V. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 13 | |
Dmitry V. Levin | c929771 | 2015-01-25 00:04:20 +0000 | [diff] [blame] | 14 | dir="$LOG.dir" |
| 15 | mkdir -- "$dir" || |
| 16 | framework_skip_ 'failed to create a directory' |
Dmitry V. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 17 | |
Dmitry V. Levin | c929771 | 2015-01-25 00:04:20 +0000 | [diff] [blame] | 18 | touch -- "$dir/$(for i in $(seq 1 127); do echo A; done; echo Z)" || |
| 19 | framework_skip_ 'failed to create a file' |
| 20 | |
| 21 | ls -- "$dir" > /dev/null || { |
| 22 | rm -rf -- "$dir" |
| 23 | framework_skip_ 'failed to list a directory' |
| 24 | } |
Dmitry V. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 25 | |
| 26 | args='-vegetdents,getdents64' |
Dmitry V. Levin | c929771 | 2015-01-25 00:04:20 +0000 | [diff] [blame] | 27 | $STRACE -o "$LOG" $args ls -- "$dir" > /dev/null |
Dmitry V. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 28 | rc=$? |
Dmitry V. Levin | c929771 | 2015-01-25 00:04:20 +0000 | [diff] [blame] | 29 | rm -rf -- "$dir" |
| 30 | [ $rc -eq 0 ] || { |
| 31 | cat "$LOG" |
| 32 | fail_ "strace $args failed" |
| 33 | } |
Dmitry V. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 34 | |
Dmitry V. Levin | c929771 | 2015-01-25 00:04:20 +0000 | [diff] [blame] | 35 | awk -f "$srcdir"/getdents.awk "$LOG" || { |
| 36 | cat "$LOG" |
| 37 | fail_ "strace $args failed to trace getdents/getdents64 properly" |
| 38 | } |
Dmitry V. Levin | 68d6424 | 2014-09-10 00:07:32 +0000 | [diff] [blame] | 39 | |
| 40 | exit 0 |