This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [RFC PATCH 2/3] ARM64: ILP32: use __fsword_t in generic/bits/statfs.h
- From: Bamvor Jian Zhang <bamvor dot zhangjian at huawei dot com>
- To: Chris Metcalf <cmetcalf at ezchip dot com>
- Cc: "Pinski, Andrew" <Andrew dot Pinski at caviumnetworks dot com>, "libc-alpha at sourceware dot org" <libc-alpha at sourceware dot org>, "apinski at cavium dot com" <apinski at cavium dot com>, "yangyingliang at huawei dot com" <yangyingliang at huawei dot com>, "bintian dot wang at huawei dot com" <bintian dot wang at huawei dot com>, "dingtianhong at huawei dot com" <dingtianhong at huawei dot com>, <hjl dot tools at gmail dot com>
- Date: Fri, 20 Mar 2015 11:36:52 +0800
- Subject: Re: [RFC PATCH 2/3] ARM64: ILP32: use __fsword_t in generic/bits/statfs.h
- Authentication-results: sourceware.org; auth=none
- References: <1426674611-26427-1-git-send-email-bamvor dot zhangjian at huawei dot com> <1426674611-26427-3-git-send-email-bamvor dot zhangjian at huawei dot com>,<550AFBE6 dot 1000402 at ezchip dot com> <405BEB99-764E-474B-A3E0-7225FDE6596C at caviumnetworks dot com> <550B007A dot 9090407 at ezchip dot com>
On 2015/3/20 0:59, Chris Metcalf wrote:
> On 03/19/2015 12:49 PM, Pinski, Andrew wrote:
>>> On Mar 19, 2015, at 9:40 AM, Chris Metcalf<cmetcalf@ezchip.com> wrote:
>>> >
>>>> >>On 03/18/2015 06:30 AM, Zhang Jian(Bamvor) wrote:
>>>> >>From: Yang Yingliang<yangyingliang@huawei.com>
>>>> >>
>>>> >>Use __fsword_t to make size of struct statfs equal in userspace and kernel.
>>>> >>
>>>> >>Signed-off-by: Yang Yingliang<yangyingliang@huawei.com>
>>>> >>---
>>>> >> sysdeps/unix/sysv/linux/generic/bits/statfs.h | 24 ++++++++++++------------
>>>> >> 1 file changed, 12 insertions(+), 12 deletions(-)
>>> >
>>> >I don't object to this patch as a cleanup (to match the types used in the base Linux statfs.h), but can you tell me why this makes a difference to you? On what asm-generic platform does __SWORD_TYPE != __fsword_t ? My earlier analysis a few minutes ago suggested that was true only for alpha and x32, neither of which use the linux/generic code in glibc.
>> Aarch64:ILP32 will use linux/generic and will have SWORD_TYPE != __fsword_t just like x32. Basically this patch set goes on top of my already submitted patch set.
>
> OK, thanks. But presumably this won't work right, because if you don't
> set __USE_FILE_OFFSET64, and __WORDSIZE == 32, you'll end up injecting
> padding fields that don't belong, via the __field64 macro?
In current patch from Andrew, ilp32 share the same type with lp64 for
off_t, ino_t, blkcnt_t. And it share the same "#elif" with "__WORDSIZE == 64":
--- a/sysdeps/unix/sysv/linux/generic/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/generic/bits/stat.h
@@ -42,7 +42,10 @@
#if defined __USE_FILE_OFFSET64
# define __field64(type, type64, name) type64 name
-#elif __WORDSIZE == 64
+#elif __WORDSIZE == 64 \
+ || (defined(__OFF_T_MATCHES_OFF64_T) \
+ && defined(__INO_T_MATCHES_INO64_T) \
+ && defined (__BLKCNT_T_TYPE_MATCHES_BLKCNT64_T_TYPE))
# define __field64(type, type64, name) type name
#elif __BYTE_ORDER == __LITTLE_ENDIAN
# define __field64(type, type64, name) \
> This is basically the issue I just raised in the parallel thread with HJ.
It seems that aarch64:ilp32 is different from x32 at this point. In that
thread H.J. Lu said that "Since x32 uses a combination of x86-64 and ia32
syscall interfaces, x32 can't use linux/generic.". Whereas aarch64:ilp32
include "unix/sysv/linux/generic" in its Imples.
regards
bamvor