From patchwork Mon Nov 7 22:13:38 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Ellcey X-Patchwork-Id: 17272 Received: (qmail 114404 invoked by alias); 7 Nov 2016 22:13:51 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 114395 invoked by uid 89); 7 Nov 2016 22:13:51 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.7 required=5.0 tests=AWL, BAYES_00, KAM_LAZY_DOMAIN_SECURITY, RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=stddefh, stddef.h, UD:stddef.h, 72, 9 X-HELO: camailhost.cavium.com Date: Mon, 7 Nov 2016 14:13:38 -0800 From: Steve Ellcey Message-Id: <201611072213.uA7MDcpB020773@sellcey-lt.caveonetworks.com> To: libc-alpha@sourceware.org Subject: [PATCH] Allow [f]statfs64 to alias [f]statfs Reply-To: sellcey@cavium.com This is a preparatory patch for the ILP32 aarch64 patch. On that system statfs and fstatfs will match statfs64 and fstatfs64. So this patch follows what was already done for xstat and fxstat in making the 64 bit entry points aliases of the regular versions. Right now this will not affect any existing platform because none of them define STATFS_IS_STATFS64 but aarch64 will define this later. My main question is, is this an OK use of '#ifdef' or should the STATFS_IS_STATFS64 be defined on all platforms (presumably in kernel_stat.h) so that we can check the value instead of checking to see it is defined or not? I know that we want to move in that direction but I wasn't sure if I should include that change in this patch or not. I also wasn't sure if I should try to change how XSTAT_IS_XSTAT64 or STAT_IS_KERNEL_STAT are used. There are 13 kernel_stat.h files in the glibc source tree, in addition to a number of _HAVE_* macros, some of them define XSTAT_IS_XSTAT64 and some define STAT_IS_KERNEL_STAT. Those are the only defines in those files right now. So the magnitude of the change isn't too large if we do want to define those two macros everywhere. I tested this patch on x86 to make sure nothing broke and I tested with the full ILP32 aarch64 patch to make sure this part of the patch worked with the rest of the ILP32 changes. Is the patch OK like this or should it be redone? Steve Ellcey sellcey@caviumnetworks.com 2016-11-07 Steve Ellcey * sysdeps/unix/sysv/linux/fstatfs64.c: Make __fstatfs and fstatfs aliases of __fstatfs64 if __STATFS_IS_STATFS64 is set. * sysdeps/unix/sysv/linux/statfs64.c: Ditto for __statfs, statfs, and __statfs64. * sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c: Do not define __fstatfs and fstatfs if __STATFS_IS_STATFS64 is set. * sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c: Ditto for __statfs and statfs. diff --git a/sysdeps/unix/sysv/linux/fstatfs64.c b/sysdeps/unix/sysv/linux/fstatfs64.c index a624de6..ac11fff 100644 --- a/sysdeps/unix/sysv/linux/fstatfs64.c +++ b/sysdeps/unix/sysv/linux/fstatfs64.c @@ -70,3 +70,8 @@ __fstatfs64 (int fd, struct statfs64 *buf) #endif } weak_alias (__fstatfs64, fstatfs64) + +#ifdef STATFS_IS_STATFS64 +weak_alias (__fstatfs64, __fstatfs) +weak_alias (__fstatfs64, fstatfs) +#endif diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c index be9599a..e41afb9 100644 --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c @@ -20,6 +20,7 @@ #include #include +#ifndef STATFS_IS_STATFS64 #include "overflow.h" /* Return information about the filesystem on which FD resides. */ @@ -30,3 +31,4 @@ __fstatfs (int fd, struct statfs *buf) return rc ?: statfs_overflow (buf); } weak_alias (__fstatfs, fstatfs) +#endif diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c index 1937f05..a7f9187 100644 --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c @@ -20,6 +20,7 @@ #include #include +#ifndef STATFS_IS_STATFS64 #include "overflow.h" /* Return information about the filesystem on which FILE resides. */ @@ -31,3 +32,4 @@ __statfs (const char *file, struct statfs *buf) } libc_hidden_def (__statfs) weak_alias (__statfs, statfs) +#endif diff --git a/sysdeps/unix/sysv/linux/statfs64.c b/sysdeps/unix/sysv/linux/statfs64.c index de42261..c75d4cf 100644 --- a/sysdeps/unix/sysv/linux/statfs64.c +++ b/sysdeps/unix/sysv/linux/statfs64.c @@ -72,3 +72,9 @@ __statfs64 (const char *file, struct statfs64 *buf) #endif } weak_alias (__statfs64, statfs64) + +#ifdef STATFS_IS_STATFS64 +weak_alias (__statfs64, __statfs) +weak_alias (__statfs64, statfs) +libc_hidden_ver (__statfs64, __statfs) +#endif