commit f79252f072a193bdff435afeaa6b6cd6d5c79947 Author: Dmitry V. Levin Date: Mon Mar 16 17:18:40 2015 +0000 stat64-v.test: add newfstatat syscall support Newer architectures have no stat syscall, so stat() is implemented there using newfstatat syscall. * tests/stat.c (STAT_FNAME): Rename to STAT_PREFIX. Update callers. [_FILE_OFFSET_BITS == 64] (STAT_PREFIX): Add newfstatat support. (main) [!NR_stat]: Add newfstatat support. Reported-by: Andreas Schwab diff --git a/tests/stat.c b/tests/stat.c index 21e37fb..2b04010 100644 --- a/tests/stat.c +++ b/tests/stat.c @@ -14,22 +14,22 @@ # include #endif -#undef STAT_FNAME +#undef STAT_PREFIX #undef NR_stat #if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64 # include -# define STAT_FNAME "stat(64)?" +# define STAT_PREFIX "(stat(64)?\\(|newfstatat\\(AT_FDCWD, )" #else # include # if defined __NR_stat # define NR_stat __NR_stat -# define STAT_FNAME "stat" +# define STAT_PREFIX "stat\\(" # elif defined __NR_newstat # define NR_stat __NR_newstat -# define STAT_FNAME "newstat" +# define STAT_PREFIX "newstat\\(" # endif -# ifdef STAT_FNAME +# ifdef STAT_PREFIX /* for S_IFMT */ # define stat libc_stat # define stat64 libc_stat64 @@ -57,10 +57,10 @@ # define off_t __kernel_off_t # define loff_t __kernel_loff_t # include -# endif /* STAT_FNAME */ +# endif /* STAT_PREFIX */ #endif /* _FILE_OFFSET_BITS */ -#ifdef STAT_FNAME +#ifdef STAT_PREFIX static void print_ftype(unsigned int mode) @@ -115,7 +115,7 @@ main(int ac, const char **av) assert(stat(av[1], &stb) == 0); #endif - printf(STAT_FNAME "\\(\"%s\", \\{", av[1]); + printf(STAT_PREFIX "\"%s\", \\{", av[1]); printf("st_dev=makedev\\(%u, %u\\)", (unsigned int) major(stb.st_dev), (unsigned int) minor(stb.st_dev)); @@ -159,11 +159,15 @@ main(int ac, const char **av) printf("(, st_flags=[0-9]+)?"); printf("(, st_fstype=[^,]*)?"); printf("(, st_gen=[0-9]+)?"); - printf("\\}\\) += 0\n"); + printf("\\}"); +#ifndef NR_stat + printf("(, 0)?"); +#endif + printf("\\) += 0\n"); return 0; } -#else /* !STAT_FNAME */ +#else /* !STAT_PREFIX */ int main(void) { return 77;