[PATCH] Use syscall instead of the glibc wrapper to call fstatat

Dmitry V. Levin ldv at altlinux.org
Fri Jan 13 02:33:07 UTC 2017


On Wed, Jan 11, 2017 at 02:25:56PM +0000, James Cowgill wrote:
> The newfstatat testcase on mips64 currently fails because:
> - The BOGUS_STRUCT_STAT test segfaults inside glibc.
> - The result of the fstatat call gives incorrect dates because the
>   kernel struct stat uses unsigned int timestamps.
> 
> Fix by using avoiding the glibc wrapper and using the relevant syscall
> directly. This obviously avoids the first problem, and avoids the second
> problem because print_stat always sign extends dates (unlike glibc which
> will zero extend them).

Unfortunately, this makes fstatat64.test fail on x86
because of struct stat mismatch.

If tests/fstatat.c is changed to define USE_ASM_STAT, then
tests/fstatat64.c would need more stat64 related definitions
(like in tests/fstat64.c), and I cannot tell off-hand whether
fstatat64 takes struct stat64 on all platforms like it's declared
in kernel's include/linux/syscalls.h file.

btw, tests/fstatat.c is the last user of tests/xstatx.c that
does not define USE_ASM_STAT yet.

> ---
>  tests/fstatat.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/fstatat.c b/tests/fstatat.c
> index ec55ca04..3981b4ec 100644
> --- a/tests/fstatat.c
> +++ b/tests/fstatat.c
> @@ -28,7 +28,7 @@
>  #ifdef HAVE_FSTATAT
>  
>  # define TEST_SYSCALL_INVOKE(sample, pst) \
> -	fstatat(AT_FDCWD, sample, pst, AT_SYMLINK_NOFOLLOW)
> +	syscall(TEST_SYSCALL_NR, AT_FDCWD, sample, pst, AT_SYMLINK_NOFOLLOW)
>  # define PRINT_SYSCALL_HEADER(sample) \
>  	do { \
>  		int saved_errno = errno; \
> @@ -38,6 +38,8 @@
>  		printf(", AT_SYMLINK_NOFOLLOW) = %s\n", sprintrc(rc)); \
>  	} while (0)
>  
> +# define USE_ASM_STAT
> +
>  # include "xstatx.c"
>  
>  #else


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20170113/8eeb384e/attachment.bin>


More information about the Strace-devel mailing list