Message ID | 1466485631-3532-21-git-send-email-ynorov@caviumnetworks.com |
---|---|
State | New |
Headers | show |
Yury Norov <ynorov@caviumnetworks.com> writes: > diff --git a/sysdeps/unix/sysv/linux/sysdep-vdso.h b/sysdeps/unix/sysv/linux/sysdep-vdso.h > index e8c4a7b..351d6bb 100644 > --- a/sysdeps/unix/sysv/linux/sysdep-vdso.h > +++ b/sysdeps/unix/sysv/linux/sysdep-vdso.h > @@ -37,7 +37,7 @@ > __label__ out; \ > __label__ iserr; \ > INTERNAL_SYSCALL_DECL (sc_err); \ > - long int sc_ret; \ > + __syscall_slong_t sc_ret; \ > \ > __typeof (__vdso_##name) vdsop = __vdso_##name; \ > PTR_DEMANGLE (vdsop); \ > @@ -64,7 +64,7 @@ > # define INTERNAL_VSYSCALL(name, err, nr, args...) \ > ({ \ > __label__ out; \ > - long v_ret; \ > + __syscall_slong_t v_ret; \ > \ > __typeof (__vdso_##name) vdsop = __vdso_##name; \ > PTR_DEMANGLE (vdsop); \ That part should have no effect now that __SYSCALL_SLONG_TYPE remains to be long. Andreas.
Hi, On 2016/6/21 15:58, Andreas Schwab wrote: > Yury Norov <ynorov@caviumnetworks.com> writes: > >> diff --git a/sysdeps/unix/sysv/linux/sysdep-vdso.h b/sysdeps/unix/sysv/linux/sysdep-vdso.h >> index e8c4a7b..351d6bb 100644 >> --- a/sysdeps/unix/sysv/linux/sysdep-vdso.h >> +++ b/sysdeps/unix/sysv/linux/sysdep-vdso.h >> @@ -37,7 +37,7 @@ >> __label__ out; \ >> __label__ iserr; \ >> INTERNAL_SYSCALL_DECL (sc_err); \ >> - long int sc_ret; \ >> + __syscall_slong_t sc_ret; \ >> \ >> __typeof (__vdso_##name) vdsop = __vdso_##name; \ >> PTR_DEMANGLE (vdsop); \ >> @@ -64,7 +64,7 @@ >> # define INTERNAL_VSYSCALL(name, err, nr, args...) \ >> ({ \ >> __label__ out; \ >> - long v_ret; \ >> + __syscall_slong_t v_ret; \ >> \ >> __typeof (__vdso_##name) vdsop = __vdso_##name; \ >> PTR_DEMANGLE (vdsop); \ > > That part should have no effect now that __SYSCALL_SLONG_TYPE remains to > be long. Agree. According to the discussion in "[PATCH 11/27] [AARCH64] Syscalls for ILP32 are passed always via 64bit values.". We should update this to long long too. Regard Bamvor > > Andreas. >
On Tue, Jun 21, 2016 at 07:59:27PM +0800, Zhangjian (Bamvor) wrote: > Hi, > > On 2016/6/21 15:58, Andreas Schwab wrote: > >Yury Norov <ynorov@caviumnetworks.com> writes: > > > >>diff --git a/sysdeps/unix/sysv/linux/sysdep-vdso.h b/sysdeps/unix/sysv/linux/sysdep-vdso.h > >>index e8c4a7b..351d6bb 100644 > >>--- a/sysdeps/unix/sysv/linux/sysdep-vdso.h > >>+++ b/sysdeps/unix/sysv/linux/sysdep-vdso.h > >>@@ -37,7 +37,7 @@ > >> __label__ out; \ > >> __label__ iserr; \ > >> INTERNAL_SYSCALL_DECL (sc_err); \ > >>- long int sc_ret; \ > >>+ __syscall_slong_t sc_ret; \ > >> \ > >> __typeof (__vdso_##name) vdsop = __vdso_##name; \ > >> PTR_DEMANGLE (vdsop); \ > >>@@ -64,7 +64,7 @@ > >> # define INTERNAL_VSYSCALL(name, err, nr, args...) \ > >> ({ \ > >> __label__ out; \ > >>- long v_ret; \ > >>+ __syscall_slong_t v_ret; \ > >> \ > >> __typeof (__vdso_##name) vdsop = __vdso_##name; \ > >> PTR_DEMANGLE (vdsop); \ > > > >That part should have no effect now that __SYSCALL_SLONG_TYPE remains to > >be long. > Agree. According to the discussion in "[PATCH 11/27] [AARCH64] Syscalls for ILP32 are passed > always via 64bit values.". We should update this to long long too. > I think comment to patch 11 is outdated. Andreas right, this chunk is useless. I'll remove it in next submission.
diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h b/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h new file mode 100644 index 0000000..844da49 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h @@ -0,0 +1,79 @@ +/* bits/typesizes.h -- underlying types for *_t. Linux/AARCh64 version. + Copyright (C) 2011-2015 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 + <http://www.gnu.org/licenses/>. */ + +#ifndef _BITS_TYPES_H +# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead." +#endif + +#ifndef _BITS_TYPESIZES_H +#define _BITS_TYPESIZES_H 1 + +/* See <bits/types.h> for the meaning of these macros. This file exists so + that <bits/types.h> need not vary across different GNU platforms. */ + +#define __DEV_T_TYPE __UQUAD_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __ULONGWORD_TYPE +#define __INO64_T_TYPE __UQUAD_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __U32_TYPE +#define __OFF_T_TYPE __SQUAD_TYPE +#define __OFF64_T_TYPE __SQUAD_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __ULONGWORD_TYPE +#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __BLKCNT_T_TYPE __SLONGWORD_TYPE +#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSWORD_T_TYPE __SWORD_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SLONGWORD_TYPE +#define __TIME_T_TYPE __SLONGWORD_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE void * +#define __BLKSIZE_T_TYPE __S32_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +/* ssize_t is always singed long in both ABIs. */ +#define __SSIZE_T_TYPE __SLONGWORD_TYPE +#define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE +#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#define __CPU_MASK_TYPE __ULONGWORD_TYPE + +#ifdef __LP64__ +/* Tell the libc code that off_t and off64_t are actually the same type + for all ABI purposes, even if possibly expressed as different base types + for C type-checking purposes. */ +# define __OFF_T_MATCHES_OFF64_T 1 + +/* Same for ino_t and ino64_t. */ +# define __INO_T_MATCHES_INO64_T 1 +#endif + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + + +#endif /* bits/typesizes.h */ diff --git a/sysdeps/unix/sysv/linux/sysdep-vdso.h b/sysdeps/unix/sysv/linux/sysdep-vdso.h index e8c4a7b..351d6bb 100644 --- a/sysdeps/unix/sysv/linux/sysdep-vdso.h +++ b/sysdeps/unix/sysv/linux/sysdep-vdso.h @@ -37,7 +37,7 @@ __label__ out; \ __label__ iserr; \ INTERNAL_SYSCALL_DECL (sc_err); \ - long int sc_ret; \ + __syscall_slong_t sc_ret; \ \ __typeof (__vdso_##name) vdsop = __vdso_##name; \ PTR_DEMANGLE (vdsop); \ @@ -64,7 +64,7 @@ # define INTERNAL_VSYSCALL(name, err, nr, args...) \ ({ \ __label__ out; \ - long v_ret; \ + __syscall_slong_t v_ret; \ \ __typeof (__vdso_##name) vdsop = __vdso_##name; \ PTR_DEMANGLE (vdsop); \