Dmitry V. Levin | 318b0dd | 2013-05-02 00:44:57 +0000 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | # Check how ftruncate, lseek and stat family syscalls are traced. |
| 4 | |
| 5 | . "${srcdir=.}/init.sh" |
| 6 | |
Dmitry V. Levin | 318b0dd | 2013-05-02 00:44:57 +0000 | [diff] [blame] | 7 | check_prog dd |
| 8 | check_prog find |
Dmitry V. Levin | 318b0dd | 2013-05-02 00:44:57 +0000 | [diff] [blame] | 9 | |
Dmitry V. Levin | 8f54664 | 2015-03-17 17:07:57 +0000 | [diff] [blame] | 10 | EXPECTED="$LOG.expected" |
Dmitry V. Levin | 655633e | 2015-01-08 00:32:35 +0000 | [diff] [blame] | 11 | size=46118400000 |
| 12 | sample=stat_sample |
| 13 | |
| 14 | rm -f $sample |
Dmitry V. Levin | 318b0dd | 2013-05-02 00:44:57 +0000 | [diff] [blame] | 15 | umask 022 |
Dmitry V. Levin | 318b0dd | 2013-05-02 00:44:57 +0000 | [diff] [blame] | 16 | |
Dmitry V. Levin | 8f54664 | 2015-03-17 17:07:57 +0000 | [diff] [blame] | 17 | run_prog_skip_if_failed \ |
| 18 | dd seek=$size bs=1 count=0 if=/dev/null of=$sample |
| 19 | run_strace -edesc $args |
Dmitry V. Levin | 655633e | 2015-01-08 00:32:35 +0000 | [diff] [blame] | 20 | |
| 21 | r_ftruncate="ftruncate(64)?\\(1, $size\\) += 0" |
Dmitry V. Levin | 655633e | 2015-01-08 00:32:35 +0000 | [diff] [blame] | 22 | r_lseek="lseek\\(1, $size, SEEK_CUR\\) += $size" |
| 23 | r_llseek="_llseek\\(1, $size, \\[$size\\], SEEK_CUR\\) += 0" |
Dmitry V. Levin | 655633e | 2015-01-08 00:32:35 +0000 | [diff] [blame] | 24 | |
Dmitry V. Levin | 8f54664 | 2015-03-17 17:07:57 +0000 | [diff] [blame] | 25 | cat > "$EXPECTED" << __EOF__ |
| 26 | $r_ftruncate |
| 27 | $r_lseek|$r_llseek |
| 28 | __EOF__ |
| 29 | |
| 30 | match_grep "$LOG" "$EXPECTED" |
| 31 | |
| 32 | run_prog_skip_if_failed \ |
| 33 | find -L $sample -quit |
| 34 | run_strace -efile $args |
Dmitry V. Levin | 655633e | 2015-01-08 00:32:35 +0000 | [diff] [blame] | 35 | |
| 36 | stat="\\{st_mode=S_IFREG\\|0644, st_size=$size, \\.\\.\\.\\}" |
| 37 | r_stat="stat(64)?\\(\"$sample\", $stat\\) += 0" |
| 38 | r_fstatat="(new)?fstatat(64)?\\(AT_FDCWD, \"$sample\", $stat, 0\\) += 0" |
Dmitry V. Levin | 655633e | 2015-01-08 00:32:35 +0000 | [diff] [blame] | 39 | |
Dmitry V. Levin | 8f54664 | 2015-03-17 17:07:57 +0000 | [diff] [blame] | 40 | cat > "$EXPECTED" << __EOF__ |
| 41 | $r_stat|$r_fstatat |
| 42 | __EOF__ |
| 43 | |
| 44 | match_grep "$LOG" "$EXPECTED" |
| 45 | |
| 46 | run_prog_skip_if_failed \ |
| 47 | find $sample -quit |
| 48 | run_strace -efile $args |
Dmitry V. Levin | 655633e | 2015-01-08 00:32:35 +0000 | [diff] [blame] | 49 | |
| 50 | r_lstat="lstat(64)?\\(\"$sample\", $stat\\) += 0" |
| 51 | r_lfstatat="(new)?fstatat(64)?\\(AT_FDCWD, \"$sample\", $stat, AT_SYMLINK_NOFOLLOW\\) += 0" |
Dmitry V. Levin | 655633e | 2015-01-08 00:32:35 +0000 | [diff] [blame] | 52 | |
Dmitry V. Levin | 8f54664 | 2015-03-17 17:07:57 +0000 | [diff] [blame] | 53 | cat > "$EXPECTED" << __EOF__ |
| 54 | $r_lstat|$r_lfstatat |
| 55 | __EOF__ |
| 56 | |
| 57 | match_grep "$LOG" "$EXPECTED" |
| 58 | |
| 59 | rm -f "$EXPECTED" $sample |
Mike Frysinger | 1970da0 | 2013-05-02 15:35:40 -0400 | [diff] [blame] | 60 | |
Dmitry V. Levin | 318b0dd | 2013-05-02 00:44:57 +0000 | [diff] [blame] | 61 | exit 0 |