From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id E8132384843F for ; Mon, 14 Jun 2021 14:52:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E8132384843F Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-554-xIfQgEQwNcmeG2nvoQEhkw-1; Mon, 14 Jun 2021 10:52:12 -0400 X-MC-Unique: xIfQgEQwNcmeG2nvoQEhkw-1 Received: by mail-qt1-f197.google.com with SMTP id z4-20020ac87f840000b02902488809b6d6so7579860qtj.9 for ; Mon, 14 Jun 2021 07:52:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=ID2m5TmIIA5oRRCv9CEZ/G7uo7wbnbdCvvEqkzlWy6U=; b=RjfH835VioZgzDMrnvTg4V4QcLKuIpd66287JCBMdydVqfxSpLcAuBJxk6HSbMriuu FU1jmKjg/L/INLHI5zQq+ue0F/gEQv3XM4NKJo1EptseAmUAE9kkvo9c1eQRIqAyKDOw v294a9/LaNwCjQxk8f1ZszF62f1FTEevVjEzwP96b/gYzKY1zMYWJi4P3NvxPD1LIEkr c09zlcdIbpPYMITSFkNaJilAK93JgRpje/Lw/Sae+av50vZqWe51YxqC/3wyK0sCGqfV 0iChlH+XacHLiswsEJfia9lbxG7VmKOTU3oOyGELulcyUpGAbHVmIO8IZ3ii2/ENqSrl p5uQ== X-Gm-Message-State: AOAM532ZbfvJ6n7RdRZsKbk0YHwakLZkupKi+7a/WrrfT78ksTtzzqMY IMBnY3nSmeHBkArBWbeauhf1bJoUEM1RTK83eVg/cYTt2nCdbNm3hA0qFCj8gnDBp83mP4wLSk0 0RymqJDhJ5YjW2+ZIguua X-Received: by 2002:ac8:68d:: with SMTP id f13mr16943651qth.300.1623682331681; Mon, 14 Jun 2021 07:52:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwtUJYU3Jms4ufT9EvAaZSa4pjBiboPdbPPnoBMVdYXgyYBIFcCcoC40Mxr9z9AxsnuN6oxDQ== X-Received: by 2002:ac8:68d:: with SMTP id f13mr16943618qth.300.1623682331302; Mon, 14 Jun 2021 07:52:11 -0700 (PDT) Received: from [192.168.1.16] (198-84-214-74.cpe.teksavvy.com. [198.84.214.74]) by smtp.gmail.com with ESMTPSA id 7sm10087957qtx.33.2021.06.14.07.52.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 14 Jun 2021 07:52:10 -0700 (PDT) Subject: Re: [PATCH v3 19/24] posix: Add glob64 with 64-bit time_t support To: Adhemerval Zanella , libc-alpha@sourceware.org References: <20210607203613.282543-1-adhemerval.zanella@linaro.org> <20210607203613.282543-20-adhemerval.zanella@linaro.org> From: Carlos O'Donell Organization: Red Hat Message-ID: <0c4875bd-5653-1312-54d7-42a050487053@redhat.com> Date: Mon, 14 Jun 2021 10:52:09 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <20210607203613.282543-20-adhemerval.zanella@linaro.org> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 14:52:19 -0000 On 6/7/21 4:36 PM, Adhemerval Zanella wrote: > 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. No regressions on x86_64 and i686 and reviewed resulting ABI for correctness. 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 OK. Fixed from v2. > > 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 0aa2ef8559..f045604ad6 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 > -- Cheers, Carlos.