S390: Don't test nanoseconds in io/tst-stat.c
Both new tests io/tst-stat and io/tst-stat-lfs (_FILE_OFFSET_BITS=64) are comparing the nanosecond fields with the statx result. Unfortunately on s390(31bit) those fields are always zero if old KABI with non-LFS support is used. With _FILE_OFFSET_BITS=64 stat is using statx internally. As suggested by Adhemerval this patch disables the nanosecond check for s390(31bit). Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
parent
0923f74ada
commit
1966f47a1e
|
@ -91,9 +91,12 @@ do_test (void)
|
|||
TEST_COMPARE (stx.stx_blocks, st.st_blocks);
|
||||
|
||||
TEST_COMPARE (stx.stx_ctime.tv_sec, st.st_ctim.tv_sec);
|
||||
TEST_COMPARE (stx.stx_ctime.tv_nsec, st.st_ctim.tv_nsec);
|
||||
TEST_COMPARE (stx.stx_mtime.tv_sec, st.st_mtim.tv_sec);
|
||||
TEST_COMPARE (stx.stx_mtime.tv_nsec, st.st_mtim.tv_nsec);
|
||||
if (support_stat_nanoseconds ())
|
||||
{
|
||||
TEST_COMPARE (stx.stx_ctime.tv_nsec, st.st_ctim.tv_nsec);
|
||||
TEST_COMPARE (stx.stx_mtime.tv_nsec, st.st_mtim.tv_nsec);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -71,6 +71,7 @@ libsupport-routines = \
|
|||
support_set_small_thread_stack_size \
|
||||
support_shared_allocate \
|
||||
support_small_stack_thread_attribute \
|
||||
support_stat_nanoseconds \
|
||||
support_subprocess \
|
||||
support_test_compare_blob \
|
||||
support_test_compare_failure \
|
||||
|
|
|
@ -134,6 +134,9 @@ extern ssize_t support_copy_file_range (int, off64_t *, int, off64_t *,
|
|||
operations (such as fstatat or utimensat). */
|
||||
extern bool support_path_support_time64 (const char *path);
|
||||
|
||||
/* Return true if stat supports nanoseconds resolution. */
|
||||
extern bool support_stat_nanoseconds (void);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* SUPPORT_H */
|
||||
|
|
31
support/support_stat_nanoseconds.c
Normal file
31
support/support_stat_nanoseconds.c
Normal file
|
@ -0,0 +1,31 @@
|
|||
/* Check if stat supports nanosecond resolution.
|
||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
bool
|
||||
support_stat_nanoseconds (void)
|
||||
{
|
||||
/* s390 stat64 compat symbol does not support nanoseconds resolution
|
||||
and it used on non-LFS [f,l]stat[at] implementations. */
|
||||
#if defined __linux__ && !defined __s390x__ && defined __s390__
|
||||
return false;
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
}
|
Loading…
Reference in a new issue