From 84f7ce84474c1648ce96884f1c91ca7b97ca3fc2 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Tue, 2 Mar 2021 20:17:07 -0300 Subject: [PATCH] posix: Add glob64 with 64-bit time_t support The glob might pass a different stat struct for gl_stat and gl_lstat when GLOB_ALTDIRFUNC is used. This requires add a new 64-bit time version that also uses 64-bit time stat functions. Checked on i686-linux-gnu and x86_64-linux-gnu. Reviewed-by: Carlos O'Donell Tested-by: Carlos O'Donell --- include/glob.h | 28 +++++++++++ posix/Makefile | 4 +- posix/glob.c | 46 +++++++++-------- posix/glob.h | 22 +++++++++ posix/glob64-lstat-compat.c | 3 +- posix/glob64-time64.c | 49 +++++++++++++++++++ posix/globfree64-time64.c | 30 ++++++++++++ sysdeps/gnu/glob64-lstat-compat.c | 3 +- sysdeps/unix/sysv/linux/Versions | 2 + sysdeps/unix/sysv/linux/arm/be/libc.abilist | 2 + sysdeps/unix/sysv/linux/arm/le/libc.abilist | 2 + sysdeps/unix/sysv/linux/csky/libc.abilist | 2 + sysdeps/unix/sysv/linux/glob-lstat-compat.c | 6 ++- sysdeps/unix/sysv/linux/glob.c | 6 +++ sysdeps/unix/sysv/linux/glob64-lstat-compat.c | 12 ++--- sysdeps/unix/sysv/linux/glob64-time64.c | 44 +++++++++++++++++ sysdeps/unix/sysv/linux/glob64.c | 8 +-- sysdeps/unix/sysv/linux/globfree64-time64.c | 35 +++++++++++++ sysdeps/unix/sysv/linux/hppa/libc.abilist | 2 + sysdeps/unix/sysv/linux/i386/libc.abilist | 2 + .../sysv/linux/m68k/coldfire/libc.abilist | 2 + .../unix/sysv/linux/m68k/m680x0/libc.abilist | 2 + .../sysv/linux/microblaze/be/libc.abilist | 2 + .../sysv/linux/microblaze/le/libc.abilist | 2 + .../sysv/linux/mips/mips32/fpu/libc.abilist | 2 + .../sysv/linux/mips/mips32/nofpu/libc.abilist | 2 + .../sysv/linux/mips/mips64/n32/libc.abilist | 2 + sysdeps/unix/sysv/linux/nios2/libc.abilist | 2 + sysdeps/unix/sysv/linux/oldglob.c | 11 ++--- .../linux/powerpc/powerpc32/fpu/libc.abilist | 2 + .../powerpc/powerpc32/nofpu/libc.abilist | 2 + .../unix/sysv/linux/s390/s390-32/libc.abilist | 2 + sysdeps/unix/sysv/linux/sh/be/libc.abilist | 2 + sysdeps/unix/sysv/linux/sh/le/libc.abilist | 2 + .../sysv/linux/sparc/sparc32/libc.abilist | 2 + 35 files changed, 307 insertions(+), 40 deletions(-) create mode 100644 posix/glob64-time64.c create mode 100644 posix/globfree64-time64.c create mode 100644 sysdeps/unix/sysv/linux/glob64-time64.c create mode 100644 sysdeps/unix/sysv/linux/globfree64-time64.c diff --git a/include/glob.h b/include/glob.h index 1d2f78793e..f48c71960d 100644 --- a/include/glob.h +++ b/include/glob.h @@ -2,11 +2,39 @@ #include #ifndef _ISOMAC +# include + libc_hidden_proto (glob) libc_hidden_proto (glob64) libc_hidden_proto (globfree) libc_hidden_proto (globfree64) +# if __TIMESIZE == 64 +# define glob64_time64_t glob64_t +# else +# include + +typedef struct + { + size_t gl_pathc; + char **gl_pathv; + size_t gl_offs; + int gl_flags; + + void (*gl_closedir) (void *); + struct dirent64 *(*gl_readdir) (void *); + void *(*gl_opendir) (const char *); + int (*gl_lstat) (const char *__restrict, struct __stat64_t64 *__restrict); + int (*gl_stat) (const char *__restrict, struct __stat64_t64 *__restrict); + } glob64_time64_t; + +extern int __glob64_time64 (const char *pattern, int flags, + int (*errfunc) (const char *, int), + glob64_time64_t *pglob); +void __globfree64_time64 (glob64_time64_t *pglob); +libc_hidden_proto (__globfree64_time64) +# endif + /* Now define the internal interfaces. */ extern int __glob_pattern_p (const char *__pattern, int __quote); extern int __glob64 (const char *__pattern, int __flags, diff --git a/posix/Makefile b/posix/Makefile index fa0dc0ea20..c8c538fcee 100644 --- a/posix/Makefile +++ b/posix/Makefile @@ -67,7 +67,9 @@ routines := \ get_child_max sched_cpucount sched_cpualloc sched_cpufree \ streams-compat \ shm-directory \ - execveat + execveat \ + glob64-time64 \ + globfree64-time64 aux := init-posix environ tests := test-errno tstgetopt testfnm runtests runptests \ diff --git a/posix/glob.c b/posix/glob.c index 32c88e5d15..593a4c358f 100644 --- a/posix/glob.c +++ b/posix/glob.c @@ -59,25 +59,37 @@ # define readdir(str) __readdir64 (str) # define getpwnam_r(name, bufp, buf, len, res) \ __getpwnam_r (name, bufp, buf, len, res) -# define struct_stat64 struct stat64 # define FLEXIBLE_ARRAY_MEMBER +# ifndef struct_stat +# define struct_stat struct stat +# endif +# ifndef struct_stat64 +# define struct_stat64 struct stat64 +# endif +# ifndef GLOB_LSTAT +# define GLOB_LSTAT gl_lstat +# endif +# ifndef GLOB_STAT64 +# define GLOB_STAT64 __stat64 +# endif +# ifndef GLOB_LSTAT64 +# define GLOB_LSTAT64 __lstat64 +# endif # include #else /* !_LIBC */ # define __glob glob # define __getlogin_r(buf, len) getlogin_r (buf, len) -# define __lstat64(fname, buf) lstat (fname, buf) -# if defined _WIN32 && !defined __CYGWIN__ - /* Avoid GCC or clang warning. The original __stat64 macro is unused. */ -# undef __stat64 -# endif -# define __stat64(fname, buf) stat (fname, buf) # define __fxstatat64(_, d, f, st, flag) fstatat (d, f, st, flag) -# define struct_stat64 struct stat # ifndef __MVS__ # define __alloca alloca # endif # define __readdir readdir # define COMPILE_GLOB64 +# define struct_stat struct stat +# define struct_stat64 struct stat +# define GLOB_LSTAT gl_lstat +# define GLOB_STAT64 stat +# define GLOB_LSTAT64 lstat #endif /* _LIBC */ #include @@ -196,22 +208,14 @@ glob_lstat (glob_t *pglob, int flags, const char *fullname) { /* Use on glob-lstat-compat.c to provide a compat symbol which does not use lstat / gl_lstat. */ -#ifdef GLOB_NO_LSTAT -# define GL_LSTAT gl_stat -# define LSTAT64 __stat64 -#else -# define GL_LSTAT gl_lstat -# define LSTAT64 __lstat64 -#endif - union { - struct stat st; + struct_stat st; struct_stat64 st64; } ust; return (__glibc_unlikely (flags & GLOB_ALTDIRFUNC) - ? pglob->GL_LSTAT (fullname, &ust.st) - : LSTAT64 (fullname, &ust.st64)); + ? pglob->GLOB_LSTAT (fullname, &ust.st) + : GLOB_LSTAT64 (fullname, &ust.st64)); } /* Set *R = A + B. Return true if the answer is mathematically @@ -249,11 +253,11 @@ static int collated_compare (const void *, const void *) __THROWNL; static bool is_dir (char const *filename, int flags, glob_t const *pglob) { - struct stat st; + struct_stat st; struct_stat64 st64; return (__glibc_unlikely (flags & GLOB_ALTDIRFUNC) ? pglob->gl_stat (filename, &st) == 0 && S_ISDIR (st.st_mode) - : __stat64 (filename, &st64) == 0 && S_ISDIR (st64.st_mode)); + : GLOB_STAT64 (filename, &st64) == 0 && S_ISDIR (st64.st_mode)); } /* Find the end of the sub-pattern in a brace expression. */ diff --git a/posix/glob.h b/posix/glob.h index b5686600c7..700aeb2392 100644 --- a/posix/glob.h +++ b/posix/glob.h @@ -150,20 +150,42 @@ extern int glob (const char *__restrict __pattern, int __flags, /* Free storage allocated in PGLOB by a previous `glob' call. */ extern void globfree (glob_t *__pglob) __THROW; #else +# ifdef __USE_TIME_BITS64 +extern int __REDIRECT_NTHNL (glob, (const char *__restrict __pattern, + int __flags, + int (*__errfunc) (const char *, int), + glob_t *__restrict __pglob), + __glob64_time64); + +extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), + __globfree64_time64); +# else extern int __REDIRECT_NTHNL (glob, (const char *__restrict __pattern, int __flags, int (*__errfunc) (const char *, int), glob_t *__restrict __pglob), glob64); extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64); +# endif #endif #ifdef __USE_LARGEFILE64 +# ifdef __USE_TIME_BITS64 +extern int __REDIRECT_NTHNL (glob64, (const char *__restrict __pattern, + int __flags, + int (*__errfunc) (const char *, int), + glob64_t *__restrict __pglob), + __glob64_time64); + +extern void __REDIRECT_NTH (globfree64, (glob64_t *__pglob), + __globfree64_time64); +# else extern int glob64 (const char *__restrict __pattern, int __flags, int (*__errfunc) (const char *, int), glob64_t *__restrict __pglob) __THROWNL; extern void globfree64 (glob64_t *__pglob) __THROW; +# endif #endif diff --git a/posix/glob64-lstat-compat.c b/posix/glob64-lstat-compat.c index bd81a1e390..e90d4ae93e 100644 --- a/posix/glob64-lstat-compat.c +++ b/posix/glob64-lstat-compat.c @@ -28,7 +28,8 @@ # define GLOB_ATTRIBUTE attribute_compat_text_section /* Avoid calling gl_lstat with GLOB_ALTDIRFUNC. */ -# define GLOB_NO_LSTAT +# define GLOB_LSTAT gl_stat +# define GLOB_LSTAT64 __stat64 # include diff --git a/posix/glob64-time64.c b/posix/glob64-time64.c new file mode 100644 index 0000000000..b0f8facd84 --- /dev/null +++ b/posix/glob64-time64.c @@ -0,0 +1,49 @@ +/* Long File Support glob with 64-bit time support. + 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 + . */ + +#include +#include +#include + +#if __TIMESIZE != 64 + +/* Do glob searching for PATTERN, placing results in PGLOB. + The bits defined above may be set in FLAGS. + If a directory cannot be opened or read and ERRFUNC is not nil, + it is called with the pathname that caused the error, and the + `errno' value from the failing call; if it returns non-zero + `glob' returns GLOB_ABORTED; if it returns zero, the error is ignored. + If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. + Otherwise, `glob' returns zero. */ +int +__glob64_time64 (const char *pattern, int flags, + int (*errfunc) (const char *, int), glob64_time64_t *pglob) +{ + if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0) + { + __set_errno (EINVAL); + return -1; + } + + __set_errno (ENOSYS); + return GLOB_NOSYS; +} + +stub_warning (glob64) + +#endif diff --git a/posix/globfree64-time64.c b/posix/globfree64-time64.c new file mode 100644 index 0000000000..1fc2085f3f --- /dev/null +++ b/posix/globfree64-time64.c @@ -0,0 +1,30 @@ +/* Long File Support globfree with 64-bit time support. + 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 + . */ + +#include + +#if __TIMESIZE != 64 + +/* Free storage allocated in PGLOB by a previous `glob' call. */ +void +__globfree64_time64 (glob64_time64_t *pglob) +{ +} +libc_hidden_def (__globfree64_time64) + +#endif diff --git a/sysdeps/gnu/glob64-lstat-compat.c b/sysdeps/gnu/glob64-lstat-compat.c index 6764f1d062..ade4ccac8a 100644 --- a/sysdeps/gnu/glob64-lstat-compat.c +++ b/sysdeps/gnu/glob64-lstat-compat.c @@ -39,7 +39,8 @@ #define GLOB_ATTRIBUTE attribute_compat_text_section /* Avoid calling gl_lstat with GLOB_ALTDIRFUNC. */ -#define GLOB_NO_LSTAT +#define GLOB_LSTAT gl_stat +#define GLOB_LSTAT64 __stat64 #include diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index 8fb05da8eb..0070ffcdbd 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -209,6 +209,8 @@ libc { __getitimer64; __getrusage64; __gettimeofday64; + __glob64_time64; + __globfree64_time64; __gmtime64; __gmtime64_r; __localtime64; diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index 1d32514579..8e3101b1c2 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -209,6 +209,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index 05d0878232..b29a0e324e 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -206,6 +206,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index ac9f009f38..5f5427cb46 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2296,6 +2296,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/glob-lstat-compat.c b/sysdeps/unix/sysv/linux/glob-lstat-compat.c index 1f502e3299..7729e0dc12 100644 --- a/sysdeps/unix/sysv/linux/glob-lstat-compat.c +++ b/sysdeps/unix/sysv/linux/glob-lstat-compat.c @@ -30,7 +30,11 @@ #define GLOB_ATTRIBUTE attribute_compat_text_section /* Avoid calling gl_lstat with GLOB_ALTDIRFUNC. */ -#define GLOB_NO_LSTAT +#define struct_stat struct stat +#define struct_stat64 struct stat64 +#define GLOB_LSTAT gl_stat +#define GLOB_STAT64 __stat64 +#define GLOB_LSTAT64 __stat64 #include diff --git a/sysdeps/unix/sysv/linux/glob.c b/sysdeps/unix/sysv/linux/glob.c index 1be4885b96..89c287d01d 100644 --- a/sysdeps/unix/sysv/linux/glob.c +++ b/sysdeps/unix/sysv/linux/glob.c @@ -19,6 +19,12 @@ #include #include +#define struct_stat struct stat +#define struct_stat64 struct stat64 +#define GLOB_LSTAT gl_lstat +#define GLOB_STAT64 __stat64 +#define GLOB_LSTAT64 __lstat64 + #define glob64 __no_glob64_decl #define __glob64 __no___glob64_decl #include diff --git a/sysdeps/unix/sysv/linux/glob64-lstat-compat.c b/sysdeps/unix/sysv/linux/glob64-lstat-compat.c index 40ad625f58..302a44d3a4 100644 --- a/sysdeps/unix/sysv/linux/glob64-lstat-compat.c +++ b/sysdeps/unix/sysv/linux/glob64-lstat-compat.c @@ -33,15 +33,15 @@ # define __glob __glob64_lstat_compat # define globfree globfree64 -# undef stat -# define stat stat64 - -# define COMPILE_GLOB64 1 - # define GLOB_ATTRIBUTE attribute_compat_text_section /* Avoid calling gl_lstat with GLOB_ALTDIRFUNC. */ -# define GLOB_NO_LSTAT +# define COMPILE_GLOB64 1 +# define struct_stat struct stat64 +# define struct_stat64 struct stat64 +# define GLOB_LSTAT gl_stat +# define GLOB_STAT64 __stat64 +# define GLOB_LSTAT64 __stat64 # include diff --git a/sysdeps/unix/sysv/linux/glob64-time64.c b/sysdeps/unix/sysv/linux/glob64-time64.c new file mode 100644 index 0000000000..260f067fa4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/glob64-time64.c @@ -0,0 +1,44 @@ +/* Find pathnames matching a pattern. Linux version. + 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 + . */ + +#include + +#if __TIMESIZE != 64 +# include +# include +# include + +# define dirent dirent64 +# define __readdir(dirp) __readdir64 (dirp) + +# define glob_t glob64_time64_t +# define __glob __glob64_time64 + +# define globfree(pglob) __globfree64_time64 (pglob) + +# define COMPILE_GLOB64 1 +# define struct_stat struct __stat64_t64 +# define struct_stat64 struct __stat64_t64 +# define GLOB_LSTAT gl_lstat +# define GLOB_STAT64 __stat64_time64 +# define GLOB_LSTAT64 __lstat64_time64 + +# define COMPILE_GLOB64 1 + +# include +#endif diff --git a/sysdeps/unix/sysv/linux/glob64.c b/sysdeps/unix/sysv/linux/glob64.c index 3cbadf34fb..572ca215df 100644 --- a/sysdeps/unix/sysv/linux/glob64.c +++ b/sysdeps/unix/sysv/linux/glob64.c @@ -31,10 +31,12 @@ # define __glob __glob64 # define globfree(pglob) globfree64 (pglob) -# undef stat -# define stat stat64 - # define COMPILE_GLOB64 1 +# define struct_stat struct stat64 +# define struct_stat64 struct stat64 +# define GLOB_LSTAT gl_lstat +# define GLOB_STAT64 __stat64 +# define GLOB_LSTAT64 __lstat64 # include diff --git a/sysdeps/unix/sysv/linux/globfree64-time64.c b/sysdeps/unix/sysv/linux/globfree64-time64.c new file mode 100644 index 0000000000..d6b1e6ac49 --- /dev/null +++ b/sysdeps/unix/sysv/linux/globfree64-time64.c @@ -0,0 +1,35 @@ +/* Frees the dynamically allocated storage from an earlier call to glob. + Linux version. + 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 + . */ + +#include + +#if __TIMESIZE != 64 +# include +# include +# include + +# define glob_t glob64_time64_t +# define globfree(pglob) __globfree64_time64 (pglob) + +# undef stat +# define stat __stat64_t64 + +# include +libc_hidden_def (__globfree64_time64) +#endif diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index d2770a4874..ca8f7c3dbb 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2250,6 +2250,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index eb20d66c28..d2b7b4d4b6 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -2433,6 +2433,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __isnanf128 F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index 044cec51fc..515e383d50 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -210,6 +210,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index 3a6463a3ef..6915fa115f 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2377,6 +2377,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index 612d7f1c58..9293872f80 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2347,6 +2347,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist index 685cb974c3..cb671c56be 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2344,6 +2344,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index d17b5a02a5..f5effe36e1 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2342,6 +2342,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index aba6bd2e3c..2b66d26931 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2340,6 +2340,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index 88d8e2af38..bd76490d97 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2348,6 +2348,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist index 3b64e2cf51..e62a2a5729 100644 --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist @@ -2386,6 +2386,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/oldglob.c b/sysdeps/unix/sysv/linux/oldglob.c index 59bf89dc1d..a9a4439ddb 100644 --- a/sysdeps/unix/sysv/linux/oldglob.c +++ b/sysdeps/unix/sysv/linux/oldglob.c @@ -28,13 +28,12 @@ libc_hidden_proto (__old_glob64); #define convert_dirent __old_convert_dirent #define glob_in_dir __old_glob_in_dir -#undef stat -#define stat stat64 -#undef __stat -#define __stat(file, buf) __stat64 (file, buf) - /* Avoid calling gl_lstat with GLOB_ALTDIRFUNC. */ -#define GLOB_NO_LSTAT +#define struct_stat struct stat64 +#define struct_stat64 struct stat64 +#define GLOB_LSTAT gl_stat +#define GLOB_STAT64 __stat64 +#define GLOB_LSTAT64 __stat64 #define GLOB_ATTRIBUTE attribute_compat_text_section diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index 5404fdea4a..bc5b23c818 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -2404,6 +2404,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index 506fa3619f..f9421c7777 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -2437,6 +2437,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index 99b6d6d1ce..7581354bf4 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -2402,6 +2402,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index 68a631b161..0e45f7fb0a 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2257,6 +2257,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index 61a29e643a..ece6721841 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2254,6 +2254,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index fa3ae954c1..6073443a3d 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -2395,6 +2395,8 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F GLIBC_2.34 __gettimeofday64 F +GLIBC_2.34 __glob64_time64 F +GLIBC_2.34 __globfree64_time64 F GLIBC_2.34 __gmtime64 F GLIBC_2.34 __gmtime64_r F GLIBC_2.34 __libc_start_main F -- 2.43.5