blob: e6f8fee1fffe301cfbfd80cd3e1eb5bc2e4654f2 [file] [log] [blame]
Dmitry V. Levin68d64242014-09-10 00:07:32 +00001#!/bin/sh
2
3# Check that getdents/getdents64 syscalls are traced properly.
4
5. "${srcdir=.}/init.sh"
6
Dmitry V. Levin3ec5c042014-09-23 01:51:05 +00007check_prog awk
Dmitry V. Levin68d64242014-09-10 00:07:32 +00008check_prog ls
9check_prog mkdir
Dmitry V. Levinc9297712015-01-25 00:04:20 +000010check_prog rm
11check_prog seq
12check_prog touch
Dmitry V. Levin68d64242014-09-10 00:07:32 +000013
Dmitry V. Levinc9297712015-01-25 00:04:20 +000014dir="$LOG.dir"
15mkdir -- "$dir" ||
16 framework_skip_ 'failed to create a directory'
Dmitry V. Levin68d64242014-09-10 00:07:32 +000017
Dmitry V. Levinc9297712015-01-25 00:04:20 +000018touch -- "$dir/$(for i in $(seq 1 127); do echo A; done; echo Z)" ||
19 framework_skip_ 'failed to create a file'
20
21ls -- "$dir" > /dev/null || {
22 rm -rf -- "$dir"
23 framework_skip_ 'failed to list a directory'
24}
Dmitry V. Levin68d64242014-09-10 00:07:32 +000025
26args='-vegetdents,getdents64'
Dmitry V. Levinc9297712015-01-25 00:04:20 +000027$STRACE -o "$LOG" $args ls -- "$dir" > /dev/null
Dmitry V. Levin68d64242014-09-10 00:07:32 +000028rc=$?
Dmitry V. Levinc9297712015-01-25 00:04:20 +000029rm -rf -- "$dir"
30[ $rc -eq 0 ] || {
31 cat "$LOG"
32 fail_ "strace $args failed"
33}
Dmitry V. Levin68d64242014-09-10 00:07:32 +000034
Dmitry V. Levinc9297712015-01-25 00:04:20 +000035awk -f "$srcdir"/getdents.awk "$LOG" || {
36 cat "$LOG"
37 fail_ "strace $args failed to trace getdents/getdents64 properly"
38}
Dmitry V. Levin68d64242014-09-10 00:07:32 +000039
40exit 0