diff mbox

[RFC2,00/23] ARM64: support ILP32

Message ID e3144b93-ccbf-4110-90e1-24ea4840589e@huawei.com
State New
Headers show

Commit Message

Zhang Jian(Bamvor) Sept. 8, 2016, 4:25 a.m. UTC
Hi, Guys

There was a discussion about bump vdso version of kernel. We need
update the vdso version in glibc correspondingly otherwise the
application could not make use of the vdso.

Is it make sense to you?

Regards

Bamvor

commit 3ffc1d798fc25ccb02e7cc325fe5fb3890c085e3
Author: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>
Date:   Thu Sep 8 12:21:16 2016 +0800

     [AARCH64] ILP32: bump vdso version consistent with kernel

     Signed-off-by: Jun Ji <jijun2@huawei.com>
     Signed-off-by: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>



On 2016/6/29 0:39, Yury Norov wrote:
> This series enables aarch64 port with ilp32 mode.
>
> ABI details:
>  - types are taken from AARCH32, next types turned to 64-bit,
>    as modern requirement for new APIs tells:
> 	ino_t      is  u64 type
> 	off_t      is  s64 type
> 	blkcnt_t   is  s64 type
> 	fsblkcnt_t is  u64 type
> 	fsfilcnt_t is  u64 type
>  - 64-bit arguments are passed in syscall as register pair,
>    as kernel internally clears top halves for all input regs;
>  - standard syscall table is used;
>  - 32-bit time_t is used. AARCH64/ILP32 is waiting for general
>    fix of Y2038 problem just like other 32-bit arches;
>  - stat{64}, statfs{64} structures are of the identical layout
>    with LP64. Corresponding syscalls are taken from 64-bit code
>  - struct utmp, utmpx layouts are the same.
>
> v1: https://sourceware.org/ml/libc-alpha/2016-06/msg00730.html
> v2:
>  - rebased on master;
>  - dropped unneeded/unrelated patches;
>  - pread family platform implementation removed;
>  - addressed v1 comments (I'm really sorry if I missed something,
>    there are a lot of them, and I am really thankfull for detailed review);
>
> Tested with LTP. Regressions are like this:
> abort01                        FAIL       2
> kill11                         FAIL       2
> mmap16                         FAIL       6
> open12                         FAIL       2
> rename11                       FAIL       2
> rmdir02                        FAIL       2
> umount2_01                     FAIL       2
> umount2_02                     FAIL       2
> umount2_03                     FAIL       2
> utime06                        FAIL       2
>
> It's better than v1, and there are ~5 additional regressions comparing to
> aarch64, all are related to filesystem.
>
> Andrew Pinski (17):
>   [AARCH64] define word size for lp64 and ilp32
>   [AARCH64] Add header guards to sysdep.h headers.
>   Add dynamic ILP32 AARCH64 relocations to elf.h
>   [AARCH64] Add PTR_REG, PTR_LOG_SIZE, and PTR_SIZE.  Use it in
>     LDST_PCREL and LDST_GLOBAL.
>   [AARCH64] Use PTR_REG in crti.S.
>   [AARCH64] Use PTR_REG/PTR_SIZE/PTR_SIZE_LOG in dl-tlsesc.S
>   [AARCH64] Use PTR_* macros in dl-trampoline.S
>   [AARCH64] Use PTR_* in start.S
>   [AARCH64] Use PTR_REG in getcontext.S.
>   [AARCH64] Detect ILP32 in configure scripts.
>   [AARCH64] Add ILP32 support to elf_machine_load_address.
>   [AARCH64] Add ILP32 to makefiles
>   [AARCH64] Add support to ldconfig for ILP32 and libilp32
>   [AARCH64] Add ILP32 ld.so to the known interpreter names.
>   [AARCH64] Add ldd-rewrite.sed so that ilp32 ld.so can be found
>   [AARCH64] Make lp64 and ilp32 directories.
>   [AARCH64] Fix ILP32 warning
>
> Yury Norov (6):
>   [AARCH64] ILP32: introduce syscalls that pass off_t
>   [AARCH64] ILP32: support stat syscall family
>   [AARCH64] delouse input arguments in system functions
>   [AARCH64] Make __SIZEOF_SEM_T 16 for ILP32
>   off_t: fix register pair calculation for 64-bit case
>   [AARCH64] Take utmp{,x}.h from s390 port
>
>  elf/cache.c                                        |   3 +
>  sysdeps/aarch64/Implies                            |   6 -
>  sysdeps/aarch64/__longjmp.S                        |   6 +-
>  sysdeps/aarch64/bits/wordsize.h                    |  25 +++
>  sysdeps/aarch64/configure                          |  15 +-
>  sysdeps/aarch64/configure.ac                       |  11 +-
>  sysdeps/aarch64/crti.S                             |   3 +-
>  sysdeps/aarch64/dl-irel.h                          |   3 +-
>  sysdeps/aarch64/dl-machine.h                       | 199 ++++++++++++---------
>  sysdeps/aarch64/dl-tlsdesc.S                       |  56 +++---
>  sysdeps/aarch64/dl-trampoline.S                    |  18 +-
>  sysdeps/aarch64/ilp32/Implies                      |   6 +
>  sysdeps/aarch64/jmpbuf-unwind.h                    |   2 +-
>  sysdeps/aarch64/lp64/Implies                       |   7 +
>  sysdeps/aarch64/memcmp.S                           |   3 +
>  sysdeps/aarch64/memcpy.S                           |   8 +
>  sysdeps/aarch64/memset.S                           |   3 +
>  sysdeps/aarch64/nptl/bits/semaphore.h              |   4 +
>  sysdeps/aarch64/preconfigure                       |  11 +-
>  sysdeps/aarch64/setjmp.S                           |   5 +-
>  sysdeps/aarch64/start.S                            |  20 ++-
>  sysdeps/aarch64/strchr.S                           |   1 +
>  sysdeps/aarch64/strchrnul.S                        |   1 +
>  sysdeps/aarch64/strcmp.S                           |   2 +
>  sysdeps/aarch64/strcpy.S                           |   2 +
>  sysdeps/aarch64/strlen.S                           |   2 +
>  sysdeps/aarch64/strncmp.S                          |   3 +
>  sysdeps/aarch64/strnlen.S                          |   3 +
>  sysdeps/aarch64/strrchr.S                          |   1 +
>  sysdeps/aarch64/sysdep.h                           |  39 +++-
>  sysdeps/generic/ldconfig.h                         |   1 +
>  sysdeps/generic/stdint.h                           |   9 +-
>  sysdeps/unix/sysv/linux/aarch64/Implies            |   2 -
>  sysdeps/unix/sysv/linux/aarch64/Makefile           |  16 +-
>  sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h       |   6 +-
>  sysdeps/unix/sysv/linux/aarch64/bits/stat.h        | 195 ++++++++++++++++++++
>  sysdeps/unix/sysv/linux/aarch64/bits/statfs.h      |  64 +++++++
>  sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h   |  86 +++++++++
>  sysdeps/unix/sysv/linux/aarch64/bits/utmp.h        |   1 +
>  sysdeps/unix/sysv/linux/aarch64/bits/utmpx.h       |   1 +
>  sysdeps/unix/sysv/linux/aarch64/clone.S            |   7 +
>  sysdeps/unix/sysv/linux/aarch64/configure          |  24 ++-
>  sysdeps/unix/sysv/linux/aarch64/configure.ac       |  11 +-
>  sysdeps/unix/sysv/linux/aarch64/dl-cache.h         |  13 +-
>  sysdeps/unix/sysv/linux/aarch64/getcontext.S       |   3 +-
>  sysdeps/unix/sysv/linux/aarch64/ilp32/Implies      |   4 +
>  .../unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c  |   7 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c |   6 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c    |  29 +++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c  |  29 +++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/ftruncate.c  |   1 +
>  .../unix/sysv/linux/aarch64/ilp32/ftruncate64.c    |   4 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c     |  51 ++++++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c   |  44 +++++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c   |  48 +++++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c |  52 ++++++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c   |  77 ++++++++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/getdents64.c |   1 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/lseek.c      |  36 ++++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat.c     |  47 +++++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat64.c   |  47 +++++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/mmap.c       |   1 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/mmap64.c     |   1 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c     |  32 ++++
>  .../unix/sysv/linux/aarch64/ilp32/posix_fadvise.c  |   1 +
>  .../sysv/linux/aarch64/ilp32/posix_fadvise64.c     |   2 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/readahead.c  |   1 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/readdir64.c  |   1 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c     |  53 ++++++
>  .../unix/sysv/linux/aarch64/ilp32/shlib-versions   |   7 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c     |  32 ++++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c     |  30 ++++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c   |  29 +++
>  .../unix/sysv/linux/aarch64/ilp32/syscalls.list    |   0
>  sysdeps/unix/sysv/linux/aarch64/ilp32/truncate.c   |   1 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/truncate64.c |   4 +
>  sysdeps/unix/sysv/linux/aarch64/ilp32/xstat.c      |  47 +++++
>  sysdeps/unix/sysv/linux/aarch64/ilp32/xstat64.c    |  47 +++++
>  sysdeps/unix/sysv/linux/aarch64/ioctl.S            |  31 ----
>  sysdeps/unix/sysv/linux/aarch64/kernel-features.h  |  27 +++
>  sysdeps/unix/sysv/linux/aarch64/ldconfig.h         |   2 +
>  sysdeps/unix/sysv/linux/aarch64/ldd-rewrite.sed    |   1 +
>  sysdeps/unix/sysv/linux/aarch64/lp64/Implies       |   4 +
>  sysdeps/unix/sysv/linux/aarch64/lp64/ioctl.S       |  31 ++++
>  sysdeps/unix/sysv/linux/aarch64/lp64/mmap.c        |  34 ++++
>  .../unix/sysv/linux/aarch64/lp64/shlib-versions    |   7 +
>  sysdeps/unix/sysv/linux/aarch64/mmap.c             |  34 ----
>  sysdeps/unix/sysv/linux/aarch64/setcontext.S       |   1 +
>  sysdeps/unix/sysv/linux/aarch64/shlib-versions     |   7 -
>  sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h   |   2 +-
>  sysdeps/unix/sysv/linux/aarch64/swapcontext.S      |   1 +
>  sysdeps/unix/sysv/linux/aarch64/sysdep.h           |   8 +-
>  sysdeps/unix/sysv/linux/arm/readelflib.c           |   4 +-
>  sysdeps/unix/sysv/linux/fallocate.c                |   4 +
>  sysdeps/unix/sysv/linux/fallocate64.c              |   4 +
>  sysdeps/unix/sysv/linux/generic/brk.c              |   2 +-
>  sysdeps/unix/sysv/linux/posix_fadvise.c            |   4 +
>  sysdeps/unix/sysv/linux/posix_fadvise64.c          |   4 +
>  sysdeps/unix/sysv/linux/posix_fallocate.c          |   4 +
>  sysdeps/unix/sysv/linux/posix_fallocate64.c        |   4 +
>  100 files changed, 1649 insertions(+), 250 deletions(-)
>  delete mode 100644 sysdeps/aarch64/Implies
>  create mode 100644 sysdeps/aarch64/bits/wordsize.h
>  mode change 100644 => 100755 sysdeps/aarch64/configure
>  create mode 100644 sysdeps/aarch64/ilp32/Implies
>  create mode 100644 sysdeps/aarch64/lp64/Implies
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/stat.h
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/statfs.h
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/utmp.h
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/utmpx.h
>  mode change 100644 => 100755 sysdeps/unix/sysv/linux/aarch64/configure
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/Implies
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/ftruncate.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/ftruncate64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/getdents64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/lseek.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/mmap.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/mmap64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/posix_fadvise.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/posix_fadvise64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/readahead.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/readdir64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/shlib-versions
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/syscalls.list
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/truncate.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/truncate64.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/xstat.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/xstat64.c
>  delete mode 100644 sysdeps/unix/sysv/linux/aarch64/ioctl.S
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/kernel-features.h
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/ldd-rewrite.sed
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/Implies
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/ioctl.S
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/mmap.c
>  create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/shlib-versions
>  delete mode 100644 sysdeps/unix/sysv/linux/aarch64/mmap.c
>  delete mode 100644 sysdeps/unix/sysv/linux/aarch64/shlib-versions
>

Comments

Yury Norov Sept. 8, 2016, 11:37 a.m. UTC | #1
On Thu, Sep 08, 2016 at 12:25:27PM +0800, Zhangjian (Bamvor) wrote:
> Hi, Guys
> 
> There was a discussion about bump vdso version of kernel. We need
> update the vdso version in glibc correspondingly otherwise the
> application could not make use of the vdso.
> 
> Is it make sense to you?
> 
> Regards
> 
> Bamvor

Hi Bamvor,

Is this the source of performance loss you've discovered?

> 
> commit 3ffc1d798fc25ccb02e7cc325fe5fb3890c085e3
> Author: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>
> Date:   Thu Sep 8 12:21:16 2016 +0800
> 
>     [AARCH64] ILP32: bump vdso version consistent with kernel
> 
>     Signed-off-by: Jun Ji <jijun2@huawei.com>
>     Signed-off-by: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>
> 
> diff --git a/sysdeps/unix/sysv/linux/aarch64/init-first.c b/sysdeps/unix/sysv/linux/aarch64/init-first.c
> index f7224a2..3e4eaad 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/init-first.c
> +++ b/sysdeps/unix/sysv/linux/aarch64/init-first.c
> @@ -27,17 +27,21 @@ int (*VDSO_SYMBOL(clock_getres)) (clockid_t, struct timespec *);
>  static inline void
>  _libc_vdso_platform_setup (void)
>  {
> -  PREPARE_VERSION (linux2639, "LINUX_2.6.39", 123718537);
> +#ifndef __ILP32__
> +  PREPARE_VERSION (linux, "LINUX_2.6.39", 123718537);
> +#else
> +  PREPARE_VERSION (linux, "LINUX_4.8", 61765624);
> +#endif /* #ifndef __ILP32__ */
> 
> -  void *p = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2639);
> +  void *p = _dl_vdso_vsym ("__kernel_gettimeofday", &linux);
>    PTR_MANGLE (p);
>    VDSO_SYMBOL(gettimeofday) = p;
> 
> -  p = _dl_vdso_vsym ("__kernel_clock_gettime", &linux2639);
> +  p = _dl_vdso_vsym ("__kernel_clock_gettime", &linux);
>    PTR_MANGLE (p);
>    VDSO_SYMBOL(clock_gettime) = p;
> 
> -  p = _dl_vdso_vsym ("__kernel_clock_getres", &linux2639);
> +  p = _dl_vdso_vsym ("__kernel_clock_getres", &linux);
>    PTR_MANGLE (p);
>    VDSO_SYMBOL(clock_getres) = p;
>  }
> 
> 
> On 2016/6/29 0:39, Yury Norov wrote:
> >This series enables aarch64 port with ilp32 mode.
> >
> >ABI details:
> > - types are taken from AARCH32, next types turned to 64-bit,
> >   as modern requirement for new APIs tells:
> >	ino_t      is  u64 type
> >	off_t      is  s64 type
> >	blkcnt_t   is  s64 type
> >	fsblkcnt_t is  u64 type
> >	fsfilcnt_t is  u64 type
> > - 64-bit arguments are passed in syscall as register pair,
> >   as kernel internally clears top halves for all input regs;
> > - standard syscall table is used;
> > - 32-bit time_t is used. AARCH64/ILP32 is waiting for general
> >   fix of Y2038 problem just like other 32-bit arches;
> > - stat{64}, statfs{64} structures are of the identical layout
> >   with LP64. Corresponding syscalls are taken from 64-bit code
> > - struct utmp, utmpx layouts are the same.
> >
> >v1: https://sourceware.org/ml/libc-alpha/2016-06/msg00730.html
> >v2:
> > - rebased on master;
> > - dropped unneeded/unrelated patches;
> > - pread family platform implementation removed;
> > - addressed v1 comments (I'm really sorry if I missed something,
> >   there are a lot of them, and I am really thankfull for detailed review);
> >
> >Tested with LTP. Regressions are like this:
> >abort01                        FAIL       2
> >kill11                         FAIL       2
> >mmap16                         FAIL       6
> >open12                         FAIL       2
> >rename11                       FAIL       2
> >rmdir02                        FAIL       2
> >umount2_01                     FAIL       2
> >umount2_02                     FAIL       2
> >umount2_03                     FAIL       2
> >utime06                        FAIL       2
> >
> >It's better than v1, and there are ~5 additional regressions comparing to
> >aarch64, all are related to filesystem.
> >
> >Andrew Pinski (17):
> >  [AARCH64] define word size for lp64 and ilp32
> >  [AARCH64] Add header guards to sysdep.h headers.
> >  Add dynamic ILP32 AARCH64 relocations to elf.h
> >  [AARCH64] Add PTR_REG, PTR_LOG_SIZE, and PTR_SIZE.  Use it in
> >    LDST_PCREL and LDST_GLOBAL.
> >  [AARCH64] Use PTR_REG in crti.S.
> >  [AARCH64] Use PTR_REG/PTR_SIZE/PTR_SIZE_LOG in dl-tlsesc.S
> >  [AARCH64] Use PTR_* macros in dl-trampoline.S
> >  [AARCH64] Use PTR_* in start.S
> >  [AARCH64] Use PTR_REG in getcontext.S.
> >  [AARCH64] Detect ILP32 in configure scripts.
> >  [AARCH64] Add ILP32 support to elf_machine_load_address.
> >  [AARCH64] Add ILP32 to makefiles
> >  [AARCH64] Add support to ldconfig for ILP32 and libilp32
> >  [AARCH64] Add ILP32 ld.so to the known interpreter names.
> >  [AARCH64] Add ldd-rewrite.sed so that ilp32 ld.so can be found
> >  [AARCH64] Make lp64 and ilp32 directories.
> >  [AARCH64] Fix ILP32 warning
> >
> >Yury Norov (6):
> >  [AARCH64] ILP32: introduce syscalls that pass off_t
> >  [AARCH64] ILP32: support stat syscall family
> >  [AARCH64] delouse input arguments in system functions
> >  [AARCH64] Make __SIZEOF_SEM_T 16 for ILP32
> >  off_t: fix register pair calculation for 64-bit case
> >  [AARCH64] Take utmp{,x}.h from s390 port
> >
> > elf/cache.c                                        |   3 +
> > sysdeps/aarch64/Implies                            |   6 -
> > sysdeps/aarch64/__longjmp.S                        |   6 +-
> > sysdeps/aarch64/bits/wordsize.h                    |  25 +++
> > sysdeps/aarch64/configure                          |  15 +-
> > sysdeps/aarch64/configure.ac                       |  11 +-
> > sysdeps/aarch64/crti.S                             |   3 +-
> > sysdeps/aarch64/dl-irel.h                          |   3 +-
> > sysdeps/aarch64/dl-machine.h                       | 199 ++++++++++++---------
> > sysdeps/aarch64/dl-tlsdesc.S                       |  56 +++---
> > sysdeps/aarch64/dl-trampoline.S                    |  18 +-
> > sysdeps/aarch64/ilp32/Implies                      |   6 +
> > sysdeps/aarch64/jmpbuf-unwind.h                    |   2 +-
> > sysdeps/aarch64/lp64/Implies                       |   7 +
> > sysdeps/aarch64/memcmp.S                           |   3 +
> > sysdeps/aarch64/memcpy.S                           |   8 +
> > sysdeps/aarch64/memset.S                           |   3 +
> > sysdeps/aarch64/nptl/bits/semaphore.h              |   4 +
> > sysdeps/aarch64/preconfigure                       |  11 +-
> > sysdeps/aarch64/setjmp.S                           |   5 +-
> > sysdeps/aarch64/start.S                            |  20 ++-
> > sysdeps/aarch64/strchr.S                           |   1 +
> > sysdeps/aarch64/strchrnul.S                        |   1 +
> > sysdeps/aarch64/strcmp.S                           |   2 +
> > sysdeps/aarch64/strcpy.S                           |   2 +
> > sysdeps/aarch64/strlen.S                           |   2 +
> > sysdeps/aarch64/strncmp.S                          |   3 +
> > sysdeps/aarch64/strnlen.S                          |   3 +
> > sysdeps/aarch64/strrchr.S                          |   1 +
> > sysdeps/aarch64/sysdep.h                           |  39 +++-
> > sysdeps/generic/ldconfig.h                         |   1 +
> > sysdeps/generic/stdint.h                           |   9 +-
> > sysdeps/unix/sysv/linux/aarch64/Implies            |   2 -
> > sysdeps/unix/sysv/linux/aarch64/Makefile           |  16 +-
> > sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h       |   6 +-
> > sysdeps/unix/sysv/linux/aarch64/bits/stat.h        | 195 ++++++++++++++++++++
> > sysdeps/unix/sysv/linux/aarch64/bits/statfs.h      |  64 +++++++
> > sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h   |  86 +++++++++
> > sysdeps/unix/sysv/linux/aarch64/bits/utmp.h        |   1 +
> > sysdeps/unix/sysv/linux/aarch64/bits/utmpx.h       |   1 +
> > sysdeps/unix/sysv/linux/aarch64/clone.S            |   7 +
> > sysdeps/unix/sysv/linux/aarch64/configure          |  24 ++-
> > sysdeps/unix/sysv/linux/aarch64/configure.ac       |  11 +-
> > sysdeps/unix/sysv/linux/aarch64/dl-cache.h         |  13 +-
> > sysdeps/unix/sysv/linux/aarch64/getcontext.S       |   3 +-
> > sysdeps/unix/sysv/linux/aarch64/ilp32/Implies      |   4 +
> > .../unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c  |   7 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c |   6 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c    |  29 +++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c  |  29 +++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/ftruncate.c  |   1 +
> > .../unix/sysv/linux/aarch64/ilp32/ftruncate64.c    |   4 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c     |  51 ++++++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c   |  44 +++++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c   |  48 +++++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c |  52 ++++++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c   |  77 ++++++++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/getdents64.c |   1 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/lseek.c      |  36 ++++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat.c     |  47 +++++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat64.c   |  47 +++++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/mmap.c       |   1 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/mmap64.c     |   1 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c     |  32 ++++
> > .../unix/sysv/linux/aarch64/ilp32/posix_fadvise.c  |   1 +
> > .../sysv/linux/aarch64/ilp32/posix_fadvise64.c     |   2 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/readahead.c  |   1 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/readdir64.c  |   1 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c     |  53 ++++++
> > .../unix/sysv/linux/aarch64/ilp32/shlib-versions   |   7 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c     |  32 ++++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c     |  30 ++++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c   |  29 +++
> > .../unix/sysv/linux/aarch64/ilp32/syscalls.list    |   0
> > sysdeps/unix/sysv/linux/aarch64/ilp32/truncate.c   |   1 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/truncate64.c |   4 +
> > sysdeps/unix/sysv/linux/aarch64/ilp32/xstat.c      |  47 +++++
> > sysdeps/unix/sysv/linux/aarch64/ilp32/xstat64.c    |  47 +++++
> > sysdeps/unix/sysv/linux/aarch64/ioctl.S            |  31 ----
> > sysdeps/unix/sysv/linux/aarch64/kernel-features.h  |  27 +++
> > sysdeps/unix/sysv/linux/aarch64/ldconfig.h         |   2 +
> > sysdeps/unix/sysv/linux/aarch64/ldd-rewrite.sed    |   1 +
> > sysdeps/unix/sysv/linux/aarch64/lp64/Implies       |   4 +
> > sysdeps/unix/sysv/linux/aarch64/lp64/ioctl.S       |  31 ++++
> > sysdeps/unix/sysv/linux/aarch64/lp64/mmap.c        |  34 ++++
> > .../unix/sysv/linux/aarch64/lp64/shlib-versions    |   7 +
> > sysdeps/unix/sysv/linux/aarch64/mmap.c             |  34 ----
> > sysdeps/unix/sysv/linux/aarch64/setcontext.S       |   1 +
> > sysdeps/unix/sysv/linux/aarch64/shlib-versions     |   7 -
> > sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h   |   2 +-
> > sysdeps/unix/sysv/linux/aarch64/swapcontext.S      |   1 +
> > sysdeps/unix/sysv/linux/aarch64/sysdep.h           |   8 +-
> > sysdeps/unix/sysv/linux/arm/readelflib.c           |   4 +-
> > sysdeps/unix/sysv/linux/fallocate.c                |   4 +
> > sysdeps/unix/sysv/linux/fallocate64.c              |   4 +
> > sysdeps/unix/sysv/linux/generic/brk.c              |   2 +-
> > sysdeps/unix/sysv/linux/posix_fadvise.c            |   4 +
> > sysdeps/unix/sysv/linux/posix_fadvise64.c          |   4 +
> > sysdeps/unix/sysv/linux/posix_fallocate.c          |   4 +
> > sysdeps/unix/sysv/linux/posix_fallocate64.c        |   4 +
> > 100 files changed, 1649 insertions(+), 250 deletions(-)
> > delete mode 100644 sysdeps/aarch64/Implies
> > create mode 100644 sysdeps/aarch64/bits/wordsize.h
> > mode change 100644 => 100755 sysdeps/aarch64/configure
> > create mode 100644 sysdeps/aarch64/ilp32/Implies
> > create mode 100644 sysdeps/aarch64/lp64/Implies
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/stat.h
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/statfs.h
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/utmp.h
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/utmpx.h
> > mode change 100644 => 100755 sysdeps/unix/sysv/linux/aarch64/configure
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/Implies
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/ftruncate.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/ftruncate64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/getdents64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/lseek.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/mmap.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/mmap64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/posix_fadvise.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/posix_fadvise64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/readahead.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/readdir64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/shlib-versions
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/syscalls.list
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/truncate.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/truncate64.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/xstat.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/xstat64.c
> > delete mode 100644 sysdeps/unix/sysv/linux/aarch64/ioctl.S
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/kernel-features.h
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/ldd-rewrite.sed
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/Implies
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/ioctl.S
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/mmap.c
> > create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/shlib-versions
> > delete mode 100644 sysdeps/unix/sysv/linux/aarch64/mmap.c
> > delete mode 100644 sysdeps/unix/sysv/linux/aarch64/shlib-versions
> >
Zhang Jian(Bamvor) Sept. 8, 2016, 11:51 a.m. UTC | #2
Hi, Yury

On 2016/9/8 19:37, Yury Norov wrote:
> On Thu, Sep 08, 2016 at 12:25:27PM +0800, Zhangjian (Bamvor) wrote:
>> Hi, Guys
>>
>> There was a discussion about bump vdso version of kernel. We need
>> update the vdso version in glibc correspondingly otherwise the
>> application could not make use of the vdso.
>>
>> Is it make sense to you?
>>
>> Regards
>>
>> Bamvor
>
> Hi Bamvor,
>
> Is this the source of performance loss you've discovered?
Not yet.
There are mmmapstress03和vma03 failed in our kernel. I plan to
investigatet those bugs firstly. Do you encounter those failures?

Regards

Bamvor
>
>>
>> commit 3ffc1d798fc25ccb02e7cc325fe5fb3890c085e3
>> Author: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>
>> Date:   Thu Sep 8 12:21:16 2016 +0800
>>
>>     [AARCH64] ILP32: bump vdso version consistent with kernel
>>
>>     Signed-off-by: Jun Ji <jijun2@huawei.com>
>>     Signed-off-by: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>
>>
>> diff --git a/sysdeps/unix/sysv/linux/aarch64/init-first.c b/sysdeps/unix/sysv/linux/aarch64/init-first.c
>> index f7224a2..3e4eaad 100644
>> --- a/sysdeps/unix/sysv/linux/aarch64/init-first.c
>> +++ b/sysdeps/unix/sysv/linux/aarch64/init-first.c
>> @@ -27,17 +27,21 @@ int (*VDSO_SYMBOL(clock_getres)) (clockid_t, struct timespec *);
>>  static inline void
>>  _libc_vdso_platform_setup (void)
>>  {
>> -  PREPARE_VERSION (linux2639, "LINUX_2.6.39", 123718537);
>> +#ifndef __ILP32__
>> +  PREPARE_VERSION (linux, "LINUX_2.6.39", 123718537);
>> +#else
>> +  PREPARE_VERSION (linux, "LINUX_4.8", 61765624);
>> +#endif /* #ifndef __ILP32__ */
>>
>> -  void *p = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2639);
>> +  void *p = _dl_vdso_vsym ("__kernel_gettimeofday", &linux);
>>    PTR_MANGLE (p);
>>    VDSO_SYMBOL(gettimeofday) = p;
>>
>> -  p = _dl_vdso_vsym ("__kernel_clock_gettime", &linux2639);
>> +  p = _dl_vdso_vsym ("__kernel_clock_gettime", &linux);
>>    PTR_MANGLE (p);
>>    VDSO_SYMBOL(clock_gettime) = p;
>>
>> -  p = _dl_vdso_vsym ("__kernel_clock_getres", &linux2639);
>> +  p = _dl_vdso_vsym ("__kernel_clock_getres", &linux);
>>    PTR_MANGLE (p);
>>    VDSO_SYMBOL(clock_getres) = p;
>>  }
>>
>>
>> On 2016/6/29 0:39, Yury Norov wrote:
>>> This series enables aarch64 port with ilp32 mode.
>>>
>>> ABI details:
>>> - types are taken from AARCH32, next types turned to 64-bit,
>>>   as modern requirement for new APIs tells:
>>> 	ino_t      is  u64 type
>>> 	off_t      is  s64 type
>>> 	blkcnt_t   is  s64 type
>>> 	fsblkcnt_t is  u64 type
>>> 	fsfilcnt_t is  u64 type
>>> - 64-bit arguments are passed in syscall as register pair,
>>>   as kernel internally clears top halves for all input regs;
>>> - standard syscall table is used;
>>> - 32-bit time_t is used. AARCH64/ILP32 is waiting for general
>>>   fix of Y2038 problem just like other 32-bit arches;
>>> - stat{64}, statfs{64} structures are of the identical layout
>>>   with LP64. Corresponding syscalls are taken from 64-bit code
>>> - struct utmp, utmpx layouts are the same.
>>>
>>> v1: https://sourceware.org/ml/libc-alpha/2016-06/msg00730.html
>>> v2:
>>> - rebased on master;
>>> - dropped unneeded/unrelated patches;
>>> - pread family platform implementation removed;
>>> - addressed v1 comments (I'm really sorry if I missed something,
>>>   there are a lot of them, and I am really thankfull for detailed review);
>>>
>>> Tested with LTP. Regressions are like this:
>>> abort01                        FAIL       2
>>> kill11                         FAIL       2
>>> mmap16                         FAIL       6
>>> open12                         FAIL       2
>>> rename11                       FAIL       2
>>> rmdir02                        FAIL       2
>>> umount2_01                     FAIL       2
>>> umount2_02                     FAIL       2
>>> umount2_03                     FAIL       2
>>> utime06                        FAIL       2
>>>
>>> It's better than v1, and there are ~5 additional regressions comparing to
>>> aarch64, all are related to filesystem.
>>>
>>> Andrew Pinski (17):
>>>  [AARCH64] define word size for lp64 and ilp32
>>>  [AARCH64] Add header guards to sysdep.h headers.
>>>  Add dynamic ILP32 AARCH64 relocations to elf.h
>>>  [AARCH64] Add PTR_REG, PTR_LOG_SIZE, and PTR_SIZE.  Use it in
>>>    LDST_PCREL and LDST_GLOBAL.
>>>  [AARCH64] Use PTR_REG in crti.S.
>>>  [AARCH64] Use PTR_REG/PTR_SIZE/PTR_SIZE_LOG in dl-tlsesc.S
>>>  [AARCH64] Use PTR_* macros in dl-trampoline.S
>>>  [AARCH64] Use PTR_* in start.S
>>>  [AARCH64] Use PTR_REG in getcontext.S.
>>>  [AARCH64] Detect ILP32 in configure scripts.
>>>  [AARCH64] Add ILP32 support to elf_machine_load_address.
>>>  [AARCH64] Add ILP32 to makefiles
>>>  [AARCH64] Add support to ldconfig for ILP32 and libilp32
>>>  [AARCH64] Add ILP32 ld.so to the known interpreter names.
>>>  [AARCH64] Add ldd-rewrite.sed so that ilp32 ld.so can be found
>>>  [AARCH64] Make lp64 and ilp32 directories.
>>>  [AARCH64] Fix ILP32 warning
>>>
>>> Yury Norov (6):
>>>  [AARCH64] ILP32: introduce syscalls that pass off_t
>>>  [AARCH64] ILP32: support stat syscall family
>>>  [AARCH64] delouse input arguments in system functions
>>>  [AARCH64] Make __SIZEOF_SEM_T 16 for ILP32
>>>  off_t: fix register pair calculation for 64-bit case
>>>  [AARCH64] Take utmp{,x}.h from s390 port
>>>
>>> elf/cache.c                                        |   3 +
>>> sysdeps/aarch64/Implies                            |   6 -
>>> sysdeps/aarch64/__longjmp.S                        |   6 +-
>>> sysdeps/aarch64/bits/wordsize.h                    |  25 +++
>>> sysdeps/aarch64/configure                          |  15 +-
>>> sysdeps/aarch64/configure.ac                       |  11 +-
>>> sysdeps/aarch64/crti.S                             |   3 +-
>>> sysdeps/aarch64/dl-irel.h                          |   3 +-
>>> sysdeps/aarch64/dl-machine.h                       | 199 ++++++++++++---------
>>> sysdeps/aarch64/dl-tlsdesc.S                       |  56 +++---
>>> sysdeps/aarch64/dl-trampoline.S                    |  18 +-
>>> sysdeps/aarch64/ilp32/Implies                      |   6 +
>>> sysdeps/aarch64/jmpbuf-unwind.h                    |   2 +-
>>> sysdeps/aarch64/lp64/Implies                       |   7 +
>>> sysdeps/aarch64/memcmp.S                           |   3 +
>>> sysdeps/aarch64/memcpy.S                           |   8 +
>>> sysdeps/aarch64/memset.S                           |   3 +
>>> sysdeps/aarch64/nptl/bits/semaphore.h              |   4 +
>>> sysdeps/aarch64/preconfigure                       |  11 +-
>>> sysdeps/aarch64/setjmp.S                           |   5 +-
>>> sysdeps/aarch64/start.S                            |  20 ++-
>>> sysdeps/aarch64/strchr.S                           |   1 +
>>> sysdeps/aarch64/strchrnul.S                        |   1 +
>>> sysdeps/aarch64/strcmp.S                           |   2 +
>>> sysdeps/aarch64/strcpy.S                           |   2 +
>>> sysdeps/aarch64/strlen.S                           |   2 +
>>> sysdeps/aarch64/strncmp.S                          |   3 +
>>> sysdeps/aarch64/strnlen.S                          |   3 +
>>> sysdeps/aarch64/strrchr.S                          |   1 +
>>> sysdeps/aarch64/sysdep.h                           |  39 +++-
>>> sysdeps/generic/ldconfig.h                         |   1 +
>>> sysdeps/generic/stdint.h                           |   9 +-
>>> sysdeps/unix/sysv/linux/aarch64/Implies            |   2 -
>>> sysdeps/unix/sysv/linux/aarch64/Makefile           |  16 +-
>>> sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h       |   6 +-
>>> sysdeps/unix/sysv/linux/aarch64/bits/stat.h        | 195 ++++++++++++++++++++
>>> sysdeps/unix/sysv/linux/aarch64/bits/statfs.h      |  64 +++++++
>>> sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h   |  86 +++++++++
>>> sysdeps/unix/sysv/linux/aarch64/bits/utmp.h        |   1 +
>>> sysdeps/unix/sysv/linux/aarch64/bits/utmpx.h       |   1 +
>>> sysdeps/unix/sysv/linux/aarch64/clone.S            |   7 +
>>> sysdeps/unix/sysv/linux/aarch64/configure          |  24 ++-
>>> sysdeps/unix/sysv/linux/aarch64/configure.ac       |  11 +-
>>> sysdeps/unix/sysv/linux/aarch64/dl-cache.h         |  13 +-
>>> sysdeps/unix/sysv/linux/aarch64/getcontext.S       |   3 +-
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/Implies      |   4 +
>>> .../unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c  |   7 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c |   6 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c    |  29 +++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c  |  29 +++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/ftruncate.c  |   1 +
>>> .../unix/sysv/linux/aarch64/ilp32/ftruncate64.c    |   4 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c     |  51 ++++++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c   |  44 +++++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c   |  48 +++++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c |  52 ++++++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c   |  77 ++++++++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/getdents64.c |   1 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/lseek.c      |  36 ++++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat.c     |  47 +++++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat64.c   |  47 +++++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/mmap.c       |   1 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/mmap64.c     |   1 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c     |  32 ++++
>>> .../unix/sysv/linux/aarch64/ilp32/posix_fadvise.c  |   1 +
>>> .../sysv/linux/aarch64/ilp32/posix_fadvise64.c     |   2 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/readahead.c  |   1 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/readdir64.c  |   1 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c     |  53 ++++++
>>> .../unix/sysv/linux/aarch64/ilp32/shlib-versions   |   7 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c     |  32 ++++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c     |  30 ++++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c   |  29 +++
>>> .../unix/sysv/linux/aarch64/ilp32/syscalls.list    |   0
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/truncate.c   |   1 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/truncate64.c |   4 +
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/xstat.c      |  47 +++++
>>> sysdeps/unix/sysv/linux/aarch64/ilp32/xstat64.c    |  47 +++++
>>> sysdeps/unix/sysv/linux/aarch64/ioctl.S            |  31 ----
>>> sysdeps/unix/sysv/linux/aarch64/kernel-features.h  |  27 +++
>>> sysdeps/unix/sysv/linux/aarch64/ldconfig.h         |   2 +
>>> sysdeps/unix/sysv/linux/aarch64/ldd-rewrite.sed    |   1 +
>>> sysdeps/unix/sysv/linux/aarch64/lp64/Implies       |   4 +
>>> sysdeps/unix/sysv/linux/aarch64/lp64/ioctl.S       |  31 ++++
>>> sysdeps/unix/sysv/linux/aarch64/lp64/mmap.c        |  34 ++++
>>> .../unix/sysv/linux/aarch64/lp64/shlib-versions    |   7 +
>>> sysdeps/unix/sysv/linux/aarch64/mmap.c             |  34 ----
>>> sysdeps/unix/sysv/linux/aarch64/setcontext.S       |   1 +
>>> sysdeps/unix/sysv/linux/aarch64/shlib-versions     |   7 -
>>> sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h   |   2 +-
>>> sysdeps/unix/sysv/linux/aarch64/swapcontext.S      |   1 +
>>> sysdeps/unix/sysv/linux/aarch64/sysdep.h           |   8 +-
>>> sysdeps/unix/sysv/linux/arm/readelflib.c           |   4 +-
>>> sysdeps/unix/sysv/linux/fallocate.c                |   4 +
>>> sysdeps/unix/sysv/linux/fallocate64.c              |   4 +
>>> sysdeps/unix/sysv/linux/generic/brk.c              |   2 +-
>>> sysdeps/unix/sysv/linux/posix_fadvise.c            |   4 +
>>> sysdeps/unix/sysv/linux/posix_fadvise64.c          |   4 +
>>> sysdeps/unix/sysv/linux/posix_fallocate.c          |   4 +
>>> sysdeps/unix/sysv/linux/posix_fallocate64.c        |   4 +
>>> 100 files changed, 1649 insertions(+), 250 deletions(-)
>>> delete mode 100644 sysdeps/aarch64/Implies
>>> create mode 100644 sysdeps/aarch64/bits/wordsize.h
>>> mode change 100644 => 100755 sysdeps/aarch64/configure
>>> create mode 100644 sysdeps/aarch64/ilp32/Implies
>>> create mode 100644 sysdeps/aarch64/lp64/Implies
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/stat.h
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/statfs.h
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/typesizes.h
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/utmp.h
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/bits/utmpx.h
>>> mode change 100644 => 100755 sysdeps/unix/sysv/linux/aarch64/configure
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/Implies
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/dl-fxstatat64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/dl-xstat64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fstatfs64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/ftruncate.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/ftruncate64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstat64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/fxstatat64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/getdents.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/getdents64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/lseek.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/lxstat64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/mmap.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/mmap64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/msgctl.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/posix_fadvise.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/posix_fadvise64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/readahead.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/readdir64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/semctl.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/shlib-versions
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/shmctl.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/statfs.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/statfs64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/syscalls.list
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/truncate.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/truncate64.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/xstat.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ilp32/xstat64.c
>>> delete mode 100644 sysdeps/unix/sysv/linux/aarch64/ioctl.S
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/kernel-features.h
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/ldd-rewrite.sed
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/Implies
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/ioctl.S
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/mmap.c
>>> create mode 100644 sysdeps/unix/sysv/linux/aarch64/lp64/shlib-versions
>>> delete mode 100644 sysdeps/unix/sysv/linux/aarch64/mmap.c
>>> delete mode 100644 sysdeps/unix/sysv/linux/aarch64/shlib-versions
>>>
diff mbox

Patch

diff --git a/sysdeps/unix/sysv/linux/aarch64/init-first.c b/sysdeps/unix/sysv/linux/aarch64/init-first.c
index f7224a2..3e4eaad 100644
--- a/sysdeps/unix/sysv/linux/aarch64/init-first.c
+++ b/sysdeps/unix/sysv/linux/aarch64/init-first.c
@@ -27,17 +27,21 @@  int (*VDSO_SYMBOL(clock_getres)) (clockid_t, struct timespec *);
  static inline void
  _libc_vdso_platform_setup (void)
  {
-  PREPARE_VERSION (linux2639, "LINUX_2.6.39", 123718537);
+#ifndef __ILP32__
+  PREPARE_VERSION (linux, "LINUX_2.6.39", 123718537);
+#else
+  PREPARE_VERSION (linux, "LINUX_4.8", 61765624);
+#endif /* #ifndef __ILP32__ */

-  void *p = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2639);
+  void *p = _dl_vdso_vsym ("__kernel_gettimeofday", &linux);
    PTR_MANGLE (p);
    VDSO_SYMBOL(gettimeofday) = p;

-  p = _dl_vdso_vsym ("__kernel_clock_gettime", &linux2639);
+  p = _dl_vdso_vsym ("__kernel_clock_gettime", &linux);
    PTR_MANGLE (p);
    VDSO_SYMBOL(clock_gettime) = p;

-  p = _dl_vdso_vsym ("__kernel_clock_getres", &linux2639);
+  p = _dl_vdso_vsym ("__kernel_clock_getres", &linux);
    PTR_MANGLE (p);
    VDSO_SYMBOL(clock_getres) = p;
  }