From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 129377 invoked by alias); 23 Apr 2018 18:01:01 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 129360 invoked by uid 89); 23 Apr 2018 18:01:00 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.3 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=considering X-HELO: mail-qk0-f193.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:references:openpgp:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=VH/8iSo3orTqbknMsL6yI4SLnG3LXZXoj2K6/doGjIs=; b=VqurONzJ2C7XZhSJ/mYfKFOaxD7i88gv413Dydix54rrjo9Co5Aa7aERL7xXzROSjD DCWqSHvsR9URrq0kZF9jqa266zJ19cHyd/Y+MtCA2M0H4lSCVZukBZQ6BqOy79lY9D5z uvKCb37e99wryhCvIP1KaCw1WMBYuJ1elaOL6DayjCzyj2Db38o6k2Thriz4no+GYYtK JI70FLk7hxwtDMVNnWOqpJTWPtlyEd8suBlhVH5jM4CbgpMfEVZIGXni7T8BHj7xcbIp aTGB8k3NH4bWKGumQ9VNrljizgyYfMdTBo5smfbdTzZ9WqOKXEQ7Xl4njPITgau46Zss RJ0A== X-Gm-Message-State: ALQs6tDtVrDSV1UhYVGgKndY70rI93bfa1MXfDhRrvJQ6mWHIdQUWSv+ f38lzxBFQLhhErKBQWkZTRRy0ytDurM= X-Google-Smtp-Source: AIpwx48B0dCMn6vgj1u3HY0iEsKRqzy42cVc15to+8No/L7Mok7UrghN8cPV6QyiMrfnsGYmnuZqWw== X-Received: by 10.55.177.135 with SMTP id a129mr23473628qkf.65.1524506455762; Mon, 23 Apr 2018 11:00:55 -0700 (PDT) Subject: Re: [PATCH 6/7] Consolidate alphasort{64} and versionsort{64} implementation From: Adhemerval Zanella To: libc-alpha@sourceware.org References: <1520017165-15830-1-git-send-email-adhemerval.zanella@linaro.org> <1520017165-15830-6-git-send-email-adhemerval.zanella@linaro.org> Openpgp: preference=signencrypt Autocrypt: addr=adhemerval.zanella@linaro.org; prefer-encrypt=mutual; keydata= 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 Message-ID: Date: Mon, 23 Apr 2018 18:01:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <1520017165-15830-6-git-send-email-adhemerval.zanella@linaro.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-SW-Source: 2018-04/txt/msg00481.txt.bz2 I will commit this shortly if no one opposes it. On 02/03/2018 15:59, Adhemerval Zanella wrote: > This patch consolidates both alphasort{64} and versionsort{64} > implementation on just the default dirent/alphasort{64}c and > dirent/versionsort{64} respectively. It changes the logic > to follow the conventions used on other code consolidation: > > * the non-LFS variant is only built for _DIRENT_MATCHES_DIRENT64 being 0. > > * the LFS variant is always built and aliased to getdents for ABIs > that define _DIRENT_MATCHES_DIRENT64 to 1. > > Also on Linux the compat symbol for old non-LFS dirent64 definition > requires a platform-specific scandir64.c. For powerpc32 and sparcv9 > it requires to add specific arch-implementation to override the > generic Linux one because neither ABI exports an compat symbol for > non-LFS alphasort64 and versionsort64 variant. Considering both > architectures do export other compat symbols for other dirent.h > functions I think this is a bug (I need confirmation). > > Checked on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu, > sparcv9-linux-gnu, sparc64-linux-gnu, powerpc-linux-gnu, and > powerpc64le-linux-gnu. > > * dirent/alphasort.c (alphasort): Build iff _DIRENT_MATCHES_DIRENT64 is > defined. > * dirent/versionsort.c (versionsort): Likewise. > * dirent/alphasort64.c (alphasort64): Build regardless and alias to > alphasort if _DIRENT_MATCHES_DIRENT64 is defined. > * dirent/versionsort64.c (versionsort64): Likewise. > * sysdeps/unix/sysv/linux/i386/alphasort64.c: Remove file. > * sysdeps/unix/sysv/linux/arm/alphasort64.c: Likewise. > * sysdeps/unix/sysv/linux/arm/versionsort64.c: Likewise. > * sysdeps/unix/sysv/linux/m68k/alphasort64.c: Likewise. > * sysdeps/unix/sysv/linux/m68k/versionsort64.c: Likewise. > * sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c: Likewise. > * sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c: Likewise. > * sysdeps/unix/sysv/linux/i386/versionsort64.c: Likewise. > * sysdeps/unix/sysv/linux/alphasort64.c: New file. > * sysdeps/unix/sysv/linux/versionsort64.c: Likewise. > * sysdeps/unix/sysv/linux/powerpc/powerpc32/alphasort64.c: Likewise. > * sysdeps/unix/sysv/linux/powerpc/powerpc32/versionsort64.c: Likewise. > * sysdeps/unix/sysv/linux/sparc/sparc32/alphasort64.c: Likewise. > * sysdeps/unix/sysv/linux/sparc/sparc32/versionsort64.c: Likewise. > --- > ChangeLog | 21 +++++++++++++++++++++ > dirent/alphasort.c | 13 ++----------- > dirent/alphasort64.c | 7 ++++--- > dirent/versionsort.c | 12 ++---------- > dirent/versionsort64.c | 7 ++++--- > sysdeps/unix/sysv/linux/{i386 => }/alphasort64.c | 22 +++++++++++----------- > sysdeps/unix/sysv/linux/arm/alphasort64.c | 1 - > sysdeps/unix/sysv/linux/arm/versionsort64.c | 1 - > sysdeps/unix/sysv/linux/m68k/alphasort64.c | 1 - > sysdeps/unix/sysv/linux/m68k/versionsort64.c | 1 - > .../sysv/linux/powerpc/powerpc32/alphasort64.c | 3 +++ > .../sysv/linux/powerpc/powerpc32/versionsort64.c | 3 +++ > sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c | 1 - > .../unix/sysv/linux/s390/s390-32/versionsort64.c | 1 - > .../unix/sysv/linux/sparc/sparc32/alphasort64.c | 3 +++ > .../unix/sysv/linux/sparc/sparc32/versionsort64.c | 3 +++ > sysdeps/unix/sysv/linux/{i386 => }/versionsort64.c | 22 +++++++++++----------- > 17 files changed, 67 insertions(+), 55 deletions(-) > rename sysdeps/unix/sysv/linux/{i386 => }/alphasort64.c (77%) > delete mode 100644 sysdeps/unix/sysv/linux/arm/alphasort64.c > delete mode 100644 sysdeps/unix/sysv/linux/arm/versionsort64.c > delete mode 100644 sysdeps/unix/sysv/linux/m68k/alphasort64.c > delete mode 100644 sysdeps/unix/sysv/linux/m68k/versionsort64.c > create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/alphasort64.c > create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/versionsort64.c > delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c > delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c > create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/alphasort64.c > create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/versionsort64.c > rename sysdeps/unix/sysv/linux/{i386 => }/versionsort64.c (77%) > > diff --git a/dirent/alphasort.c b/dirent/alphasort.c > index a6cd151..6b2a707 100644 > --- a/dirent/alphasort.c > +++ b/dirent/alphasort.c > @@ -15,23 +15,14 @@ > License along with the GNU C Library; if not, see > . */ > > -/* We need to avoid the header declaration of alphasort64, because > - the types don't match alphasort and then the compiler will > - complain about the mismatch when we do the alias below. */ > -#define alphasort64 __renamed_alphasort64 > - > #include > > -#undef alphasort64 > - > -#include > +#if !_DIRENT_MATCHES_DIRENT64 > +# include > > int > alphasort (const struct dirent **a, const struct dirent **b) > { > return strcoll ((*a)->d_name, (*b)->d_name); > } > - > -#if _DIRENT_MATCHES_DIRENT64 > -weak_alias (alphasort, alphasort64) > #endif > diff --git a/dirent/alphasort64.c b/dirent/alphasort64.c > index 3a47a97..b822333 100644 > --- a/dirent/alphasort64.c > +++ b/dirent/alphasort64.c > @@ -15,16 +15,17 @@ > License along with the GNU C Library; if not, see > . */ > > +#define alphasort __no_alphasort_decl > #include > +#undef alphasort > #include > > -/* alphasort.c defines alphasort64 as an alias if _DIRENT_MATCHES_DIRENT64. */ > -#if !_DIRENT_MATCHES_DIRENT64 > - > int > alphasort64 (const struct dirent64 **a, const struct dirent64 **b) > { > return strcoll ((*a)->d_name, (*b)->d_name); > } > > +#if _DIRENT_MATCHES_DIRENT64 > +weak_alias (alphasort64, alphasort) > #endif > diff --git a/dirent/versionsort.c b/dirent/versionsort.c > index 5ec15e8..ca38c2d 100644 > --- a/dirent/versionsort.c > +++ b/dirent/versionsort.c > @@ -15,16 +15,10 @@ > License along with the GNU C Library; if not, see > . */ > > -/* We need to avoid the header declaration of versionsort64, because > - the types don't match versionsort and then the compiler will > - complain about the mismatch when we do the alias below. */ > -#define versionsort64 __renamed_versionsort64 > - > #include > > -#undef versionsort64 > - > -#include > +#if !_DIRENT_MATCHES_DIRENT64 > +# include > > int > versionsort (const struct dirent **a, const struct dirent **b) > @@ -32,6 +26,4 @@ versionsort (const struct dirent **a, const struct dirent **b) > return __strverscmp ((*a)->d_name, (*b)->d_name); > } > > -#if _DIRENT_MATCHES_DIRENT64 > -weak_alias (versionsort, versionsort64) > #endif > diff --git a/dirent/versionsort64.c b/dirent/versionsort64.c > index 7689c26..8f47e60 100644 > --- a/dirent/versionsort64.c > +++ b/dirent/versionsort64.c > @@ -15,16 +15,17 @@ > License along with the GNU C Library; if not, see > . */ > > +#define versionsort __no_versionsort_decl > #include > +#undef versionsort > #include > > -/* versionsort.c defines a versionsort64 alias if _DIRENT_MATCHES_DIRENT64. */ > -#if !_DIRENT_MATCHES_DIRENT64 > - > int > versionsort64 (const struct dirent64 **a, const struct dirent64 **b) > { > return __strverscmp ((*a)->d_name, (*b)->d_name); > } > > +#if !_DIRENT_MATCHES_DIRENT64 > +weak_alias (versionsort64, versionsort) > #endif > diff --git a/sysdeps/unix/sysv/linux/i386/alphasort64.c b/sysdeps/unix/sysv/linux/alphasort64.c > similarity index 77% > rename from sysdeps/unix/sysv/linux/i386/alphasort64.c > rename to sysdeps/unix/sysv/linux/alphasort64.c > index ee3b00b..7eee9d0 100644 > --- a/sysdeps/unix/sysv/linux/i386/alphasort64.c > +++ b/sysdeps/unix/sysv/linux/alphasort64.c > @@ -15,7 +15,9 @@ > License along with the GNU C Library; if not, see > . */ > > +#define alphasort __no_alphasort_decl > #include > +#undef alphasort > #include > > int > @@ -24,17 +26,14 @@ __alphasort64 (const struct dirent64 **a, const struct dirent64 **b) > return strcoll ((*a)->d_name, (*b)->d_name); > } > > -#include > - > +#ifdef _DIRENT_MATCHES_DIRENT64 > +weak_alias (__alphasort64, alphasort64) > +weak_alias (__alphasort64, alphasort) > +#else > +# include > versioned_symbol (libc, __alphasort64, alphasort64, GLIBC_2_2); > - > -#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) > - > -#include > - > -int > -__old_alphasort64 (const struct __old_dirent64 **a, > - const struct __old_dirent64 **b); > +# if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) > +# include > > int > attribute_compat_text_section > @@ -45,4 +44,5 @@ __old_alphasort64 (const struct __old_dirent64 **a, > } > > compat_symbol (libc, __old_alphasort64, alphasort64, GLIBC_2_1); > -#endif > +# endif /* SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) */ > +#endif /* _DIRENT_MATCHES_DIRENT64 */ > diff --git a/sysdeps/unix/sysv/linux/arm/alphasort64.c b/sysdeps/unix/sysv/linux/arm/alphasort64.c > deleted file mode 100644 > index 0b5ae47..0000000 > --- a/sysdeps/unix/sysv/linux/arm/alphasort64.c > +++ /dev/null > @@ -1 +0,0 @@ > -#include > diff --git a/sysdeps/unix/sysv/linux/arm/versionsort64.c b/sysdeps/unix/sysv/linux/arm/versionsort64.c > deleted file mode 100644 > index 144b691..0000000 > --- a/sysdeps/unix/sysv/linux/arm/versionsort64.c > +++ /dev/null > @@ -1 +0,0 @@ > -#include > diff --git a/sysdeps/unix/sysv/linux/m68k/alphasort64.c b/sysdeps/unix/sysv/linux/m68k/alphasort64.c > deleted file mode 100644 > index 0b5ae47..0000000 > --- a/sysdeps/unix/sysv/linux/m68k/alphasort64.c > +++ /dev/null > @@ -1 +0,0 @@ > -#include > diff --git a/sysdeps/unix/sysv/linux/m68k/versionsort64.c b/sysdeps/unix/sysv/linux/m68k/versionsort64.c > deleted file mode 100644 > index 144b691..0000000 > --- a/sysdeps/unix/sysv/linux/m68k/versionsort64.c > +++ /dev/null > @@ -1 +0,0 @@ > -#include > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/alphasort64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/alphasort64.c > new file mode 100644 > index 0000000..c7de3a7 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/alphasort64.c > @@ -0,0 +1,3 @@ > +/* Although powerpc32 define _DIRENT_MATCHES_DIRENT64=0 and have compat > + mode for 2.1, it does have a compat symbol for alphasort64. */ > +#include > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/versionsort64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/versionsort64.c > new file mode 100644 > index 0000000..ee0e866 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/versionsort64.c > @@ -0,0 +1,3 @@ > +/* Although powerpc32 define _DIRENT_MATCHES_DIRENT64=0 and have compat > + mode for 2.1, it does have a compat symbol for alphasort64. */ > +#include > diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c b/sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c > deleted file mode 100644 > index 0b5ae47..0000000 > --- a/sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c > +++ /dev/null > @@ -1 +0,0 @@ > -#include > diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c b/sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c > deleted file mode 100644 > index 144b691..0000000 > --- a/sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c > +++ /dev/null > @@ -1 +0,0 @@ > -#include > diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/alphasort64.c b/sysdeps/unix/sysv/linux/sparc/sparc32/alphasort64.c > new file mode 100644 > index 0000000..3970086 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/alphasort64.c > @@ -0,0 +1,3 @@ > +/* Although sparc32 define _DIRENT_MATCHES_DIRENT64=0 and have compat > + mode for 2.1, it does have a compat symbol for alphasort64. */ > +#include > diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/versionsort64.c b/sysdeps/unix/sysv/linux/sparc/sparc32/versionsort64.c > new file mode 100644 > index 0000000..b195442 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/versionsort64.c > @@ -0,0 +1,3 @@ > +/* Although sparc32 define _DIRENT_MATCHES_DIRENT64=0 and have compat > + mode for 2.1, it does have a compat symbol for alphasort64. */ > +#include > diff --git a/sysdeps/unix/sysv/linux/i386/versionsort64.c b/sysdeps/unix/sysv/linux/versionsort64.c > similarity index 77% > rename from sysdeps/unix/sysv/linux/i386/versionsort64.c > rename to sysdeps/unix/sysv/linux/versionsort64.c > index 1777eb2..a3a3a66 100644 > --- a/sysdeps/unix/sysv/linux/i386/versionsort64.c > +++ b/sysdeps/unix/sysv/linux/versionsort64.c > @@ -15,7 +15,9 @@ > License along with the GNU C Library; if not, see > . */ > > +#define versionsort __no_versionsort_decl > #include > +#undef versionsort > #include > > int > @@ -24,17 +26,14 @@ __versionsort64 (const struct dirent64 **a, const struct dirent64 **b) > return __strverscmp ((*a)->d_name, (*b)->d_name); > } > > -#include > - > +#if _DIRENT_MATCHES_DIRENT64 > +weak_alias (__versionsort64, versionsort64) > +weak_alias (__versionsort64, versionsort) > +#else > +# include > versioned_symbol (libc, __versionsort64, versionsort64, GLIBC_2_2); > - > -#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) > - > -#include > - > -int > -__old_versionsort64 (const struct __old_dirent64 **a, > - const struct __old_dirent64 **b); > +# if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) > +# include > > int > attribute_compat_text_section > @@ -45,4 +44,5 @@ __old_versionsort64 (const struct __old_dirent64 **a, > } > > compat_symbol (libc, __old_versionsort64, versionsort64, GLIBC_2_1); > -#endif > +# endif /* SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) */ > +#endif /* _DIRENT_MATCHES_DIRENT64 */ >