summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/powerpc')
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/Makefile6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/arch-fork.h1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/environments.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/ipc.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/mman.h4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/msq.h3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/ppc.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h236
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/sem.h3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/shm.h3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h34
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/stat.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/termios.h4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h14
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/dl-static.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/elision-conf.c77
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/elision-conf.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/elision-lock.c14
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/elision-timed.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/elision-trylock.c11
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/elision-unlock.c21
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/force-elision.h4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/get_timebase_freq.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/getdents64.c1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/getrlimit64.c1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/gettimeofday.c62
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/htm.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/init-first.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/ioctl.c9
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/ipc_priv.h23
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/kernel-features.h60
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/kernel_sigaction.h9
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/kernel_termios.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/ldconfig.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/ldsodefs.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/libc-start.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/libc-start.h (renamed from sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c)24
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/libc-vdso.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/lowlevellock.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/not-errno.h (renamed from sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c)30
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/oldgetrlimit64.c1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile13
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/alphasort64.c3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S21
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nofpu/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fcntl.c1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist80
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist409
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data11
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/glob64.c1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/jmp_buf-macros.h6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/ld.abilist7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/libBrokenLocale.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/libcrypt.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/libnsl.abilist3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist36
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/libresolv.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/libthread_db.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/context-e500.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist80
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist409
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data11
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c39
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c55
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c34
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c35
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c35
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c36
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/scandir64.c1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h118
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h20
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c34
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/versionsort64.c3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S28
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/970/Implies2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/a2/Implies2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/970/Implies2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/a2/Implies2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/cell/Implies2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/cell/fpu/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/Implies2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/fpu/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S25
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/configure28
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/dl-cache.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c65
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/jmp_buf-macros.h6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/ld-le.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/ld.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/fpu/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale-le.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl-le.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist61
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist66
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt-le.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl-le.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl.abilist3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist674
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist407
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl-le.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread-le.abilist23
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread.abilist30
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv-le.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv.abilist3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/librt-le.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/librt.abilist5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db-le.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil-le.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data11
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S28
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h147
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h29
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S25
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/pthread_mutex_cond_lock.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/pthread_mutex_lock.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/pthread_mutex_timedlock.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/pthread_mutex_trylock.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/readdir64.c1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/readdir64_r.c1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/readelflib.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sys/procfs.h4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h182
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h105
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sys/user.h3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/syscall.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/syscalls.list3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sysconf.c75
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sysdep.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/test-powerpc-linux-sysconf.c73
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/time.c69
180 files changed, 2926 insertions, 1626 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/Makefile b/sysdeps/unix/sysv/linux/powerpc/Makefile
index c89ed9ec7d..19ac59d862 100644
--- a/sysdeps/unix/sysv/linux/powerpc/Makefile
+++ b/sysdeps/unix/sysv/linux/powerpc/Makefile
@@ -1,13 +1,11 @@
abi-variants := 32 64-v1 64-v2
-abi-32-options := -U__powerpc64__
abi-32-condition := __WORDSIZE == 32
-abi-64-v1-options := -D__powerpc64__ -U_CALL_ELF -D_CALL_ELF=1
abi-64-v1-condition := __WORDSIZE == 64 && _CALL_ELF != 2
-abi-64-v2-options := -D__powerpc64__ -U_CALL_ELF -D_CALL_ELF=2
abi-64-v2-condition := __WORDSIZE == 64 && _CALL_ELF == 2
ifeq ($(subdir),rt)
librt-routines += rt-sysdep
+librt-shared-only-routines += rt-sysdep
endif
ifeq ($(subdir),stdlib)
@@ -28,10 +26,12 @@ ifeq ($(subdir),misc)
sysdep_headers += bits/ppc.h
sysdep_routines += get_timebase_freq
tests += test-gettimebasefreq
+tests += test-powerpc-linux-sysconf
endif
ifeq ($(subdir),nptl)
libpthread-routines += sysdep
libpthread-sysdep_routines += elision-lock elision-unlock elision-timed \
elision-trylock
+libpthread-shared-only-routines += sysdep
endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/arch-fork.h b/sysdeps/unix/sysv/linux/powerpc/arch-fork.h
deleted file mode 100644
index 5f945378ee..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/arch-fork.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/arch-fork.h>
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/environments.h b/sysdeps/unix/sysv/linux/powerpc/bits/environments.h
index edee623127..10542c95e1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/environments.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/environments.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h b/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
index e2f8bffa25..cd9ba6ed63 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
@@ -1,5 +1,5 @@
/* O_*, F_*, FD_* bit values for Linux/PowerPC.
- Copyright (C) 1995-2016 Free Software Foundation, Inc.
+ Copyright (C) 1995-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h
index 6ecac33a2a..1c75b2982c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h
@@ -1,5 +1,5 @@
/* Structure types for pre-termios terminal ioctls. Linux/powerpc version.
- Copyright (C) 2014-2016 Free Software Foundation, Inc.
+ Copyright (C) 2014-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h b/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h
index 5a87ac3d6f..50f2b6a7c9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h b/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h
index 7032107390..049094e467 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h
@@ -1,5 +1,5 @@
/* Minimum guaranteed maximum values for system limits. Linux/PPC version.
- Copyright (C) 1993-2016 Free Software Foundation, Inc.
+ Copyright (C) 1993-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
index 21c5fa9e71..e652467c8c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
@@ -1,5 +1,5 @@
/* Definitions for POSIX memory map interface. Linux/PowerPC version.
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2018 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
@@ -36,6 +36,8 @@
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
+# define MAP_FIXED_NOREPLACE 0x100000 /* MAP_FIXED but do not unmap
+ underlying mapping. */
#endif
/* Flags for `mlockall'. */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/msq.h b/sysdeps/unix/sysv/linux/powerpc/bits/msq.h
index 0efa627a17..b98d293d54 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/msq.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2018 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
@@ -66,6 +66,7 @@ struct msqid_ds
/* ipcs ctl commands */
# define MSG_STAT 11
# define MSG_INFO 12
+# define MSG_STAT_ANY 13
/* buffer for msgctl calls IPC_INFO, MSG_INFO */
struct msginfo
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/ppc.h b/sysdeps/unix/sysv/linux/powerpc/bits/ppc.h
index 66b1e00444..df7f7a69b6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/ppc.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/ppc.h
@@ -1,5 +1,5 @@
/* Facilities specific to the PowerPC architecture on Linux
- Copyright (C) 2012-2016 Free Software Foundation, Inc.
+ Copyright (C) 2012-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
deleted file mode 100644
index 345e79ae72..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
+++ /dev/null
@@ -1,236 +0,0 @@
-/* Machine-specific pthread type layouts. PowerPC version.
- Copyright (C) 2003-2016 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_PTHREADTYPES_H
-#define _BITS_PTHREADTYPES_H 1
-
-#include <bits/wordsize.h>
-
-#if __WORDSIZE == 64
-# define __SIZEOF_PTHREAD_ATTR_T 56
-# define __SIZEOF_PTHREAD_MUTEX_T 40
-# define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-# define __SIZEOF_PTHREAD_COND_T 48
-# define __SIZEOF_PTHREAD_CONDATTR_T 4
-# define __SIZEOF_PTHREAD_RWLOCK_T 56
-# define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-# define __SIZEOF_PTHREAD_BARRIER_T 32
-# define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-#else
-# define __SIZEOF_PTHREAD_ATTR_T 36
-# define __SIZEOF_PTHREAD_MUTEX_T 24
-# define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-# define __SIZEOF_PTHREAD_COND_T 48
-# define __SIZEOF_PTHREAD_CONDATTR_T 4
-# define __SIZEOF_PTHREAD_RWLOCK_T 32
-# define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-# define __SIZEOF_PTHREAD_BARRIER_T 20
-# define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-#endif
-
-
-/* Thread identifiers. The structure of the attribute type is
- deliberately not exposed. */
-typedef unsigned long int pthread_t;
-
-
-union pthread_attr_t
-{
- char __size[__SIZEOF_PTHREAD_ATTR_T];
- long int __align;
-};
-#ifndef __have_pthread_attr_t
-typedef union pthread_attr_t pthread_attr_t;
-# define __have_pthread_attr_t 1
-#endif
-
-
-#if __WORDSIZE == 64
-typedef struct __pthread_internal_list
-{
- struct __pthread_internal_list *__prev;
- struct __pthread_internal_list *__next;
-} __pthread_list_t;
-#else
-typedef struct __pthread_internal_slist
-{
- struct __pthread_internal_slist *__next;
-} __pthread_slist_t;
-#endif
-
-
-/* Data structures for mutex handling. The structure of the attribute
- type is deliberately not exposed. */
-typedef union
-{
- struct __pthread_mutex_s
- {
- int __lock;
- unsigned int __count;
- int __owner;
-#if __WORDSIZE == 64
- unsigned int __nusers;
-#endif
- /* KIND must stay at this position in the structure to maintain
- binary compatibility. */
- int __kind;
-#if __WORDSIZE == 64
- short __spins;
- short __elision;
- __pthread_list_t __list;
-# define __PTHREAD_MUTEX_HAVE_PREV 1
-# define __PTHREAD_SPINS 0, 0
-#else
- unsigned int __nusers;
- __extension__ union
- {
- struct
- {
- short __espins;
- short __elision;
-# define __spins __elision_data.__espins
-# define __elision __elision_data.__elision
-# define __PTHREAD_SPINS { 0, 0 }
- } __elision_data;
- __pthread_slist_t __list;
- };
-#endif
- } __data;
- char __size[__SIZEOF_PTHREAD_MUTEX_T];
- long int __align;
-} pthread_mutex_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
- int __align;
-} pthread_mutexattr_t;
-
-
-/* Data structure for conditional variable handling. The structure of
- the attribute type is deliberately not exposed. */
-typedef union
-{
- struct
- {
- int __lock;
- unsigned int __futex;
- __extension__ unsigned long long int __total_seq;
- __extension__ unsigned long long int __wakeup_seq;
- __extension__ unsigned long long int __woken_seq;
- void *__mutex;
- unsigned int __nwaiters;
- unsigned int __broadcast_seq;
- } __data;
- char __size[__SIZEOF_PTHREAD_COND_T];
- __extension__ long long int __align;
-} pthread_cond_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_CONDATTR_T];
- int __align;
-} pthread_condattr_t;
-
-
-/* Keys for thread-specific data */
-typedef unsigned int pthread_key_t;
-
-
-/* Once-only execution */
-typedef int pthread_once_t;
-
-
-#if defined __USE_UNIX98 || defined __USE_XOPEN2K
-/* Data structure for read-write lock variable handling. The
- structure of the attribute type is deliberately not exposed. */
-typedef union
-{
-# if __WORDSIZE == 64
- struct
- {
- int __lock;
- unsigned int __nr_readers;
- unsigned int __readers_wakeup;
- unsigned int __writer_wakeup;
- unsigned int __nr_readers_queued;
- unsigned int __nr_writers_queued;
- int __writer;
- int __shared;
- unsigned char __rwelision;
- unsigned char __pad1[7];
- unsigned long int __pad2;
- /* FLAGS must stay at this position in the structure to maintain
- binary compatibility. */
- unsigned int __flags;
-# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, {0, 0, 0, 0, 0, 0, 0 }
- } __data;
-# else
- struct
- {
- int __lock;
- unsigned int __nr_readers;
- unsigned int __readers_wakeup;
- unsigned int __writer_wakeup;
- unsigned int __nr_readers_queued;
- unsigned int __nr_writers_queued;
- unsigned char __rwelision;
- unsigned char __pad2;
- unsigned char __shared;
- /* FLAGS must stay at this position in the structure to maintain
- binary compatibility. */
- unsigned char __flags;
- int __writer;
-#define __PTHREAD_RWLOCK_ELISION_EXTRA 0
- } __data;
-# endif
- char __size[__SIZEOF_PTHREAD_RWLOCK_T];
- long int __align;
-} pthread_rwlock_t;
-
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T];
- long int __align;
-} pthread_rwlockattr_t;
-#endif
-
-
-#ifdef __USE_XOPEN2K
-/* POSIX spinlock data type. */
-typedef volatile int pthread_spinlock_t;
-
-
-/* POSIX barriers data type. The structure of the type is
- deliberately not exposed. */
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_BARRIER_T];
- long int __align;
-} pthread_barrier_t;
-
-typedef union
-{
- char __size[__SIZEOF_PTHREAD_BARRIERATTR_T];
- int __align;
-} pthread_barrierattr_t;
-#endif
-
-
-#endif /* bits/pthreadtypes.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/sem.h b/sysdeps/unix/sysv/linux/powerpc/bits/sem.h
index 0b0b191425..27b026cf61 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/sem.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/sem.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2018 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
@@ -72,6 +72,7 @@ struct semid_ds
/* ipcs ctl cmds */
# define SEM_STAT 18
# define SEM_INFO 19
+# define SEM_STAT_ANY 20
struct seminfo
{
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h b/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h
index 5f711b81c6..8d6040adaa 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h
@@ -1,5 +1,5 @@
/* Machine-specific POSIX semaphore type layouts. PowerPC version.
- Copyright (C) 2003-2016 Free Software Foundation, Inc.
+ Copyright (C) 2003-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/shm.h b/sysdeps/unix/sysv/linux/powerpc/bits/shm.h
index 6e66bf7662..879023fb9a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/shm.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2018 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
@@ -77,6 +77,7 @@ struct shmid_ds
/* ipcs ctl commands */
# define SHM_STAT 13
# define SHM_INFO 14
+# define SHM_STAT_ANY 15
/* shm_mode upper byte flags */
# define SHM_DEST 01000 /* segment will be destroyed on last detach */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h b/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h
index 5b9c0c1be9..cb01b0938d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h
@@ -1,5 +1,5 @@
/* sigstack, sigaltstack definitions.
- Copyright (C) 1998-2016 Free Software Foundation, Inc.
+ Copyright (C) 1998-2018 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
@@ -16,39 +16,17 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SIGNAL_H
+#ifndef _BITS_SIGSTACK_H
+#define _BITS_SIGSTACK_H 1
+
+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never include this file directly. Use <signal.h> instead"
#endif
-
-/* Structure describing a signal stack (obsolete). */
-struct sigstack
- {
- void *ss_sp; /* Signal stack pointer. */
- int ss_onstack; /* Nonzero if executing on this stack. */
- };
-
-
-/* Possible values for `ss_flags.'. */
-enum
-{
- SS_ONSTACK = 1,
-#define SS_ONSTACK SS_ONSTACK
- SS_DISABLE
-#define SS_DISABLE SS_DISABLE
-};
-
/* Minimum stack size for a signal handler. */
#define MINSIGSTKSZ 4096
/* System default stack size. */
#define SIGSTKSZ 16384
-
-/* Alternate, preferred interface. */
-typedef struct sigaltstack
- {
- void *ss_sp;
- int ss_flags;
- size_t ss_size;
- } stack_t;
+#endif /* bits/sigstack.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/stat.h b/sysdeps/unix/sysv/linux/powerpc/bits/stat.h
index f492825b7a..17654b5075 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h
index e13ea3f676..1362cce551 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/termios.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2018 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
@@ -187,7 +187,7 @@ struct termios {
/* c_lflag bits */
#define ISIG 0x00000080
#define ICANON 0x00000100
-#if defined __USE_MISC || defined __USE_XOPEN
+#if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
# define XCASE 0x00004000
#endif
#define ECHO 0x00000008
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h b/sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h
index 3e8a1e0a15..04ca9debf0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h
@@ -5,15 +5,7 @@
# define __WORDSIZE_TIME64_COMPAT32 1
#else
# define __WORDSIZE 32
-#endif
-
-#if !defined __NO_LONG_DOUBLE_MATH && !defined __LONG_DOUBLE_MATH_OPTIONAL
-
-/* Signal the glibc ABI didn't used to have a `long double'.
- The changes all the `long double' function variants to be redirects
- to the double functions. */
-# define __LONG_DOUBLE_MATH_OPTIONAL 1
-# ifndef __LONG_DOUBLE_128__
-# define __NO_LONG_DOUBLE_MATH 1
-# endif
+# define __WORDSIZE_TIME64_COMPAT32 0
+# define __WORDSIZE32_SIZE_ULONG 0
+# define __WORDSIZE32_PTRDIFF_LONG 0
#endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-static.c b/sysdeps/unix/sysv/linux/powerpc/dl-static.c
index 821221f51e..d3722e1ad4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/dl-static.c
+++ b/sysdeps/unix/sysv/linux/powerpc/dl-static.c
@@ -1,5 +1,5 @@
/* Variable initialization. PowerPC version.
- Copyright (C) 2013-2016 Free Software Foundation, Inc.
+ Copyright (C) 2013-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
index 98ec2b3ec2..78051bc7bc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
+++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
@@ -1,5 +1,5 @@
/* Operating system support for run-time dynamic linker. Linux/PPC version.
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-conf.c b/sysdeps/unix/sysv/linux/powerpc/elision-conf.c
index 21c3afdd86..906882a65e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/elision-conf.c
+++ b/sysdeps/unix/sysv/linux/powerpc/elision-conf.c
@@ -1,5 +1,5 @@
/* elision-conf.c: Lock elision tunable parameters.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
@@ -22,6 +22,11 @@
#include <unistd.h>
#include <dl-procinfo.h>
+#if HAVE_TUNABLES
+# define TUNABLE_NAMESPACE elision
+#endif
+#include <elf/dl-tunables.h>
+
/* Reasonable initial tuning values, may be revised in the future.
This is a conservative initial value. */
@@ -50,7 +55,52 @@ struct elision_config __elision_aconf =
DEFAULT locks should be automatically use elision in pthread_mutex_lock().
Disabled for suid programs. Only used when elision is available. */
-int __pthread_force_elision attribute_hidden;
+int __pthread_force_elision attribute_hidden = 0;
+
+#if HAVE_TUNABLES
+static inline void
+__always_inline
+do_set_elision_enable (int32_t elision_enable)
+{
+ /* Enable elision if it's avaliable in hardware. It's not necessary to check
+ if __libc_enable_secure isn't enabled since elision_enable will be set
+ according to the default, which is disabled. */
+ if (elision_enable == 1)
+ __pthread_force_elision = (GLRO (dl_hwcap2)
+ & PPC_FEATURE2_HAS_HTM) ? 1 : 0;
+}
+
+/* The pthread->elision_enable tunable is 0 or 1 indicating that elision
+ should be disabled or enabled respectively. The feature will only be used
+ if it's supported by the hardware. */
+
+void
+TUNABLE_CALLBACK (set_elision_enable) (tunable_val_t *valp)
+{
+ int32_t elision_enable = (int32_t) valp->numval;
+ do_set_elision_enable (elision_enable);
+}
+
+#define TUNABLE_CALLBACK_FNDECL(__name, __type) \
+static inline void \
+__always_inline \
+do_set_elision_ ## __name (__type value) \
+{ \
+ __elision_aconf.__name = value; \
+} \
+void \
+TUNABLE_CALLBACK (set_elision_ ## __name) (tunable_val_t *valp) \
+{ \
+ __type value = (__type) (valp)->numval; \
+ do_set_elision_ ## __name (value); \
+}
+
+TUNABLE_CALLBACK_FNDECL (skip_lock_busy, int32_t);
+TUNABLE_CALLBACK_FNDECL (skip_lock_internal_abort, int32_t);
+TUNABLE_CALLBACK_FNDECL (skip_lock_out_of_tbegin_retries, int32_t);
+TUNABLE_CALLBACK_FNDECL (try_tbegin, int32_t);
+TUNABLE_CALLBACK_FNDECL (skip_trylock_internal_abort, int32_t);
+#endif
/* Initialize elision. */
@@ -59,13 +109,26 @@ elision_init (int argc __attribute__ ((unused)),
char **argv __attribute__ ((unused)),
char **environ)
{
-#ifdef ENABLE_LOCK_ELISION
- int elision_available = (GLRO (dl_hwcap2) & PPC_FEATURE2_HAS_HTM) ? 1 : 0;
- __pthread_force_elision = __libc_enable_secure ? 0 : elision_available;
+#if HAVE_TUNABLES
+ /* Elision depends on tunables and must be explicitly turned on by setting
+ the appropriate tunable on a supported platform. */
+
+ TUNABLE_GET (enable, int32_t,
+ TUNABLE_CALLBACK (set_elision_enable));
+ TUNABLE_GET (skip_lock_busy, int32_t,
+ TUNABLE_CALLBACK (set_elision_skip_lock_busy));
+ TUNABLE_GET (skip_lock_internal_abort, int32_t,
+ TUNABLE_CALLBACK (set_elision_skip_lock_internal_abort));
+ TUNABLE_GET (skip_lock_after_retries, int32_t,
+ TUNABLE_CALLBACK (set_elision_skip_lock_out_of_tbegin_retries));
+ TUNABLE_GET (tries, int32_t,
+ TUNABLE_CALLBACK (set_elision_try_tbegin));
+ TUNABLE_GET (skip_trylock_internal_abort, int32_t,
+ TUNABLE_CALLBACK (set_elision_skip_trylock_internal_abort));
#endif
+
if (!__pthread_force_elision)
- /* Disable elision on rwlocks. */
- __elision_aconf.try_tbegin = 0;
+ __elision_aconf.try_tbegin = 0; /* Disable elision on rwlocks. */
}
#ifdef SHARED
diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-conf.h b/sysdeps/unix/sysv/linux/powerpc/elision-conf.h
index cf004b2299..85de593127 100644
--- a/sysdeps/unix/sysv/linux/powerpc/elision-conf.h
+++ b/sysdeps/unix/sysv/linux/powerpc/elision-conf.h
@@ -1,5 +1,5 @@
/* elision-conf.h: Lock elision tunable parameters.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-lock.c b/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
index dd1e4c3b17..98a23f0dd2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
+++ b/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
@@ -1,5 +1,5 @@
/* elision-lock.c: Elided pthread mutex lock.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
@@ -45,7 +45,10 @@
int
__lll_lock_elision (int *lock, short *adapt_count, EXTRAARG int pshared)
{
- if (*adapt_count > 0)
+#ifndef __SPE__
+ /* adapt_count is accessed concurrently but is just a hint. Thus,
+ use atomic accesses but relaxed MO is sufficient. */
+ if (atomic_load_relaxed (adapt_count) > 0)
{
goto use_lock;
}
@@ -67,7 +70,8 @@ __lll_lock_elision (int *lock, short *adapt_count, EXTRAARG int pshared)
if (_TEXASRU_FAILURE_PERSISTENT (__builtin_get_texasru ()))
{
if (aconf.skip_lock_internal_abort > 0)
- *adapt_count = aconf.skip_lock_internal_abort;
+ atomic_store_relaxed (adapt_count,
+ aconf.skip_lock_internal_abort);
goto use_lock;
}
}
@@ -75,8 +79,10 @@ __lll_lock_elision (int *lock, short *adapt_count, EXTRAARG int pshared)
/* Fall back to locks for a bit if retries have been exhausted */
if (aconf.try_tbegin > 0 && aconf.skip_lock_out_of_tbegin_retries > 0)
- *adapt_count = aconf.skip_lock_out_of_tbegin_retries;
+ atomic_store_relaxed (adapt_count,
+ aconf.skip_lock_out_of_tbegin_retries);
use_lock:
+#endif
return LLL_LOCK ((*lock), pshared);
}
diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-timed.c b/sysdeps/unix/sysv/linux/powerpc/elision-timed.c
index b3738e5e04..1082f566e4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/elision-timed.c
+++ b/sysdeps/unix/sysv/linux/powerpc/elision-timed.c
@@ -1,5 +1,5 @@
/* elision-timed.c: Lock elision timed lock.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c b/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
index 0807a6a432..fabb03b2c4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
+++ b/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
@@ -1,5 +1,5 @@
/* elision-trylock.c: Lock eliding trylock for pthreads.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
@@ -30,11 +30,12 @@
int
__lll_trylock_elision (int *futex, short *adapt_count)
{
+#ifndef __SPE__
/* Implement POSIX semantics by forbiding nesting elided trylocks. */
__libc_tabort (_ABORT_NESTED_TRYLOCK);
/* Only try a transaction if it's worth it. */
- if (*adapt_count > 0)
+ if (atomic_load_relaxed (adapt_count) > 0)
{
goto use_lock;
}
@@ -49,7 +50,7 @@ __lll_trylock_elision (int *futex, short *adapt_count)
__libc_tend (0);
if (aconf.skip_lock_busy > 0)
- *adapt_count = aconf.skip_lock_busy;
+ atomic_store_relaxed (adapt_count, aconf.skip_lock_busy);
}
else
{
@@ -59,10 +60,12 @@ __lll_trylock_elision (int *futex, short *adapt_count)
result in another failure. Use normal locking now and
for the next couple of calls. */
if (aconf.skip_trylock_internal_abort > 0)
- *adapt_count = aconf.skip_trylock_internal_abort;
+ atomic_store_relaxed (adapt_count,
+ aconf.skip_trylock_internal_abort);
}
}
use_lock:
+#endif
return lll_trylock (*futex);
}
diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c b/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
index 43c5a67df2..14e0680ee9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
+++ b/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
@@ -1,5 +1,5 @@
/* elision-unlock.c: Commit an elided pthread lock.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
@@ -23,18 +23,25 @@
int
__lll_unlock_elision (int *lock, short *adapt_count, int pshared)
{
+#ifndef __SPE__
/* When the lock was free we're in a transaction. */
if (*lock == 0)
__libc_tend (0);
else
{
- lll_unlock ((*lock), pshared);
+ /* Update adapt_count in the critical section to prevent a
+ write-after-destroy error as mentioned in BZ 20822. The
+ following update of adapt_count has to be contained within
+ the critical region of the fall-back lock in order to not violate
+ the mutex destruction requirements. */
+ short __tmp = atomic_load_relaxed (adapt_count);
+ if (__tmp > 0)
+ atomic_store_relaxed (adapt_count, __tmp - 1);
- /* Update the adapt count AFTER completing the critical section.
- Doing this here prevents unneeded stalling when entering
- a critical section. Saving about 8% runtime on P8. */
- if (*adapt_count > 0)
- (*adapt_count)--;
+ lll_unlock ((*lock), pshared);
}
+#else
+ lll_unlock ((*lock), pshared);
+#endif
return 0;
}
diff --git a/sysdeps/unix/sysv/linux/powerpc/force-elision.h b/sysdeps/unix/sysv/linux/powerpc/force-elision.h
index 99c2669442..fe5d6ceade 100644
--- a/sysdeps/unix/sysv/linux/powerpc/force-elision.h
+++ b/sysdeps/unix/sysv/linux/powerpc/force-elision.h
@@ -1,5 +1,5 @@
/* force-elision.h: Automatic enabling of elision for mutexes
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
@@ -16,7 +16,6 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifdef ENABLE_LOCK_ELISION
/* Automatically enable elision for existing user lock kinds. */
#define FORCE_ELISION(m, s) \
if (__pthread_force_elision \
@@ -25,4 +24,3 @@
mutex->__data.__kind |= PTHREAD_MUTEX_ELISION_NP; \
s; \
}
-#endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c b/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
index 12a39b6865..3a2216021b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
+++ b/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c
@@ -1,5 +1,5 @@
/* Get frequency of the system processor. powerpc/Linux version.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 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
@@ -21,7 +21,6 @@
#include <stdint.h>
#include <string.h>
#include <unistd.h>
-#include <libc-internal.h>
#include <sysdep.h>
#include <libc-vdso.h>
#include <not-cancel.h>
@@ -41,7 +40,7 @@ __get_clockfreq (void)
contains at least one line like:
timebase : 33333333
We search for this line and convert the number into an integer. */
- int fd = open_not_cancel_2 ("/proc/cpuinfo", O_RDONLY);
+ int fd = __open_nocancel ("/proc/cpuinfo", O_RDONLY);
if (__glibc_likely (fd != -1))
return result;
diff --git a/sysdeps/unix/sysv/linux/powerpc/get_timebase_freq.c b/sysdeps/unix/sysv/linux/powerpc/get_timebase_freq.c
index 68acdffbf3..6435e1f315 100644
--- a/sysdeps/unix/sysv/linux/powerpc/get_timebase_freq.c
+++ b/sysdeps/unix/sysv/linux/powerpc/get_timebase_freq.c
@@ -1,5 +1,5 @@
/* Get the frequency of the time base.
- Copyright (C) 2012-2016 Free Software Foundation, Inc.
+ Copyright (C) 2012-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/getdents64.c b/sysdeps/unix/sysv/linux/powerpc/getdents64.c
deleted file mode 100644
index 0c75fb5a06..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/getdents64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/getdents64.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/getrlimit64.c b/sysdeps/unix/sysv/linux/powerpc/getrlimit64.c
deleted file mode 100644
index fef018f471..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/getrlimit64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/getrlimit64.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
index 25a4e7caff..994a926a87 100644
--- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2018 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
@@ -15,6 +15,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#if defined SHARED && !defined __powerpc64__
+# define __gettimeofday __redirect___gettimeofday
+#else
+# define __redirect___gettimeofday __gettimeofday
+#endif
#include <sys/time.h>
@@ -24,30 +29,14 @@
# include <libc-vdso.h>
# include <dl-machine.h>
-void *gettimeofday_ifunc (void) __asm__ ("__gettimeofday");
-
-static int
-__gettimeofday_syscall (struct timeval *tv, struct timezone *tz)
-{
- return INLINE_SYSCALL (gettimeofday, 2, tv, tz);
-}
+# ifndef __powerpc64__
+# undef __gettimeofday
-void *
-gettimeofday_ifunc (void)
+int
+__gettimeofday_vsyscall (struct timeval *tv, struct timezone *tz)
{
- PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565);
-
- /* If the vDSO is not available we fall back syscall. */
- void *vdso_gettimeofday = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2615);
- return (vdso_gettimeofday ? VDSO_IFUNC_RET (vdso_gettimeofday)
- : (void*)__gettimeofday_syscall);
+ return INLINE_VSYSCALL (gettimeofday, 2, tv, tz);
}
-asm (".type __gettimeofday, %gnu_indirect_function");
-
-/* This is doing "libc_hidden_def (__gettimeofday)" but the compiler won't
- let us do it in C because it doesn't know we're defining __gettimeofday
- here in this file. */
-asm (".globl __GI___gettimeofday");
/* __GI___gettimeofday is defined as hidden and for ppc32 it enables the
compiler make a local call (symbol@local) for internal GLIBC usage. It
@@ -55,16 +44,29 @@ asm (".globl __GI___gettimeofday");
For ppc64 a call to a function in another translation unit might use a
different toc pointer thus disallowing direct branchess and making internal
ifuncs calls safe. */
-#ifdef __powerpc64__
-asm ("__GI___gettimeofday = __gettimeofday");
-#else
-int
-__gettimeofday_vsyscall (struct timeval *tv, struct timezone *tz)
+# undef libc_hidden_def
+# define libc_hidden_def(name) \
+ __hidden_ver1 (__gettimeofday_vsyscall, __GI___gettimeofday, \
+ __gettimeofday_vsyscall);
+
+# endif /* !__powerpc64__ */
+
+static int
+__gettimeofday_syscall (struct timeval *tv, struct timezone *tz)
{
- return INLINE_VSYSCALL (gettimeofday, 2, tv, tz);
+ return INLINE_SYSCALL (gettimeofday, 2, tv, tz);
}
-asm ("__GI___gettimeofday = __gettimeofday_vsyscall");
-#endif
+
+# define INIT_ARCH() \
+ PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565); \
+ void *vdso_gettimeofday = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2615);
+
+/* If the vDSO is not available we fall back syscall. */
+libc_ifunc_hidden (__redirect___gettimeofday, __gettimeofday,
+ vdso_gettimeofday
+ ? VDSO_IFUNC_RET (vdso_gettimeofday)
+ : (void *) __gettimeofday_syscall);
+libc_hidden_def (__gettimeofday)
#else
diff --git a/sysdeps/unix/sysv/linux/powerpc/htm.h b/sysdeps/unix/sysv/linux/powerpc/htm.h
index 29cda8a741..6fbb1187c1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/htm.h
+++ b/sysdeps/unix/sysv/linux/powerpc/htm.h
@@ -2,7 +2,7 @@
compilers and assemblers that do not support the intrinsics and instructions
yet.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/init-first.c b/sysdeps/unix/sysv/linux/powerpc/init-first.c
index 0dff0b1ca4..0a4becbed6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/init-first.c
+++ b/sysdeps/unix/sysv/linux/powerpc/init-first.c
@@ -1,5 +1,5 @@
/* Initialization code run first thing by the ELF startup code. Linux/PowerPC.
- Copyright (C) 2007-2016 Free Software Foundation, Inc.
+ Copyright (C) 2007-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/ioctl.c b/sysdeps/unix/sysv/linux/powerpc/ioctl.c
index f43e95c368..60cba4666e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/ioctl.c
+++ b/sysdeps/unix/sysv/linux/powerpc/ioctl.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2018 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
@@ -41,15 +41,15 @@ __ioctl (int fd, unsigned long int request, ...)
break;
case TCSETS:
- result = tcsetattr (fd, TCSANOW, (struct termios *) arg);
+ result = __tcsetattr (fd, TCSANOW, (struct termios *) arg);
break;
case TCSETSW:
- result = tcsetattr (fd, TCSADRAIN, (struct termios *) arg);
+ result = __tcsetattr (fd, TCSADRAIN, (struct termios *) arg);
break;
case TCSETSF:
- result = tcsetattr (fd, TCSAFLUSH, (struct termios *) arg);
+ result = __tcsetattr (fd, TCSAFLUSH, (struct termios *) arg);
break;
default:
@@ -61,4 +61,5 @@ __ioctl (int fd, unsigned long int request, ...)
return result;
}
+libc_hidden_def (__ioctl)
weak_alias (__ioctl, ioctl)
diff --git a/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h b/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h
index baae7ab882..6231e46721 100644
--- a/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h
+++ b/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1995-2016 Free Software Foundation, Inc.
+/* Old SysV permission definition for Linux. PowerPC version.
+ Copyright (C) 1995-2018 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
@@ -15,7 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#include <sys/ipc.h>
+#include <sys/ipc.h> /* For __key_t */
#define __IPC_64 0x100
@@ -30,17 +31,9 @@ struct __old_ipc_perm
unsigned short int __seq; /* Sequence number. */
};
+#define SEMCTL_ARG_ADDRESS(__arg) &__arg.array
-/* The codes for the functions to use the ipc syscall multiplexer. */
-#define IPCOP_semop 1
-#define IPCOP_semget 2
-#define IPCOP_semctl 3
-#define IPCOP_semtimedop 4
-#define IPCOP_msgsnd 11
-#define IPCOP_msgrcv 12
-#define IPCOP_msgget 13
-#define IPCOP_msgctl 14
-#define IPCOP_shmat 21
-#define IPCOP_shmdt 22
-#define IPCOP_shmget 23
-#define IPCOP_shmctl 24
+#define MSGRCV_ARGS(__msgp, __msgtyp) \
+ ((long int []){ (long int) __msgp, __msgtyp })
+
+#include <ipc_ops.h>
diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel-features.h b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h
index 14807adb27..503f562d76 100644
--- a/sysdeps/unix/sysv/linux/powerpc/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h
@@ -1,6 +1,6 @@
/* Set flags signalling availability of kernel features based on given
kernel version number. PowerPC version.
- Copyright (C) 1999-2016 Free Software Foundation, Inc.
+ Copyright (C) 1999-2018 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
@@ -20,41 +20,35 @@
/* PowerPC uses socketcall. */
#define __ASSUME_SOCKETCALL 1
-/* The accept4 syscall was added for PowerPC in 2.6.37. */
-#if __LINUX_KERNEL_VERSION >= 0x020625
-# define __ASSUME_ACCEPT4_SYSCALL 1
-#endif
-
-/* The recvmmsg syscall was added for PowerPC in 2.6.37. */
-#if __LINUX_KERNEL_VERSION >= 0x020625
-# define __ASSUME_RECVMMSG_SYSCALL 1
-#endif
-
/* New syscalls added for PowerPC in 2.6.37. */
-#if __LINUX_KERNEL_VERSION >= 0x020625
-# define __ASSUME_SOCKET_SYSCALL 1
-# define __ASSUME_BIND_SYSCALL 1
-# define __ASSUME_CONNECT_SYSCALL 1
-# define __ASSUME_LISTEN_SYSCALL 1
-# define __ASSUME_ACCEPT_SYSCALL 1
-# define __ASSUME_GETSOCKNAME_SYSCALL 1
-# define __ASSUME_GETPEERNAME_SYSCALL 1
-# define __ASSUME_SOCKETPAIR_SYSCALL 1
-# define __ASSUME_SEND_SYSCALL 1
-# define __ASSUME_SENDTO_SYSCALL 1
-# define __ASSUME_RECV_SYSCALL 1
-# define __ASSUME_RECVFROM_SYSCALL 1
-# define __ASSUME_SHUTDOWN_SYSCALL 1
-# define __ASSUME_GETSOCKOPT_SYSCALL 1
-# define __ASSUME_SETSOCKOPT_SYSCALL 1
-# define __ASSUME_SENDMSG_SYSCALL 1
-# define __ASSUME_RECVMSG_SYSCALL 1
+#define __ASSUME_SOCKET_SYSCALL 1
+#define __ASSUME_BIND_SYSCALL 1
+#define __ASSUME_CONNECT_SYSCALL 1
+#define __ASSUME_LISTEN_SYSCALL 1
+#define __ASSUME_GETSOCKNAME_SYSCALL 1
+#define __ASSUME_GETPEERNAME_SYSCALL 1
+#define __ASSUME_SOCKETPAIR_SYSCALL 1
+#define __ASSUME_SEND_SYSCALL 1
+#define __ASSUME_RECV_SYSCALL 1
+#define __ASSUME_SHUTDOWN_SYSCALL 1
+#define __ASSUME_GETSOCKOPT_SYSCALL 1
+#define __ASSUME_SETSOCKOPT_SYSCALL 1
+
+/* Define this if your 32-bit syscall API requires 64-bit register
+ pairs to start with an even-number register. */
+#ifndef __powerpc64__
+# define __ASSUME_ALIGNED_REGISTER_PAIRS 1
#endif
-/* The sendmmsg syscall was added for PowerPC in 3.0. */
-#if __LINUX_KERNEL_VERSION >= 0x030000
-# define __ASSUME_SENDMMSG_SYSCALL 1
+/* powerpc compat fadvise64_64 reorganize the syscall argument. */
+#ifndef __powerpc64__
+# define __ASSUME_FADVISE64_64_6ARG 1
#endif
-#define __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL 1
#include_next <kernel-features.h>
+
+/* powerpc only supports ipc syscall. */
+#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
+
+#undef __ASSUME_CLONE_DEFAULT
+#define __ASSUME_CLONE_BACKWARDS 1
diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel_sigaction.h b/sysdeps/unix/sysv/linux/powerpc/kernel_sigaction.h
new file mode 100644
index 0000000000..aef3d5a3b3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/kernel_sigaction.h
@@ -0,0 +1,9 @@
+/* powerpc kernel sigaction is similar to generic Linux UAPI one,
+ but the architecture also defines SA_RESTORER. */
+#define SA_RESTORER 0x04000000
+#include <sysdeps/unix/sysv/linux/kernel_sigaction.h>
+
+#define SET_SA_RESTORER(kact, act) \
+ (kact)->sa_restorer = (act)->sa_restorer
+#define RESET_SA_RESTORER(act, kact) \
+ (act)->sa_restorer = (kact)->sa_restorer
diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h b/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
index 2b0074e657..8d76e0ae80 100644
--- a/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
+++ b/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
index 38959b4a3f..beca87e9f2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
+++ b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
@@ -1,5 +1,5 @@
/* ldconfig default paths and libraries. Linux/PowerPC version.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/ldsodefs.h b/sysdeps/unix/sysv/linux/powerpc/ldsodefs.h
index cd21c04ce6..118398bc10 100644
--- a/sysdeps/unix/sysv/linux/powerpc/ldsodefs.h
+++ b/sysdeps/unix/sysv/linux/powerpc/ldsodefs.h
@@ -1,6 +1,6 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
PowerPC version.
- Copyright (C) 2013-2016 Free Software Foundation, Inc.
+ Copyright (C) 2013-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/libc-start.c b/sysdeps/unix/sysv/linux/powerpc/libc-start.c
index 0efd297409..f2ad0c355d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/libc-start.c
+++ b/sysdeps/unix/sysv/linux/powerpc/libc-start.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c b/sysdeps/unix/sysv/linux/powerpc/libc-start.h
index d76a2ffdff..689abb01a1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c
+++ b/sysdeps/unix/sysv/linux/powerpc/libc-start.h
@@ -1,5 +1,5 @@
-/* Selective file content synch'ing.
- Copyright (C) 2006-2016 Free Software Foundation, Inc.
+/* PowerPC definitions for libc main startup.
+ Copyright (C) 2017-2018 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
@@ -16,15 +16,15 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/types.h>
+#ifndef _LIBC_START_H
+#define _LIBC_START_H
-#include <sysdep-cancel.h>
-#include <sys/syscall.h>
+#ifndef SHARED
+/* IREL{,A} must happen after TCB initialization in order to allow IFUNC
+ resolvers to read TCB fields, e.g. hwcap and at_platform. */
+#define ARCH_SETUP_IREL()
+#define ARCH_SETUP_TLS() __libc_setup_tls ()
+#define ARCH_APPLY_IREL() apply_irel ()
+#endif /* ! SHARED */
-int
-sync_file_range (int fd, __off64_t from, __off64_t to, unsigned int flags)
-{
- return SYSCALL_CANCEL (sync_file_range2, fd, flags, from, to);
-}
+#endif /* _LIBC_START_H */
diff --git a/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h b/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h
index af0081bbcc..5fe817d6cb 100644
--- a/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h
+++ b/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h
@@ -1,5 +1,5 @@
/* Resolve function pointers to VDSO functions.
- Copyright (C) 2005-2016 Free Software Foundation, Inc.
+ Copyright (C) 2005-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h b/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
index 9d63baa66d..8dea247cf9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
+++ b/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
@@ -1,5 +1,5 @@
/* PowerPC specific lock definitions.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c b/sysdeps/unix/sysv/linux/powerpc/not-errno.h
index 9eee1d78fe..27da21bdf1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c
+++ b/sysdeps/unix/sysv/linux/powerpc/not-errno.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
+/* Syscall wrapper that do not set errno. Linux powerpc version.
+ Copyright (C) 2018 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
@@ -15,22 +16,15 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#include <sys/types.h>
-#include <errno.h>
-#include <unistd.h>
+/* __access_noerrno is used during process initialization in elf/dl-tunables.c
+ before the TCB is initialized, prohibiting the usage of
+ ABORT_TRANSACTION. */
+#undef ABORT_TRANSACTION
+#define ABORT_TRANSACTION
-#include <sysdep.h>
-#include <sys/syscall.h>
+#include "sysdeps/unix/sysv/linux/not-errno.h"
-/* Truncate the file referenced by FD to LENGTH bytes. */
-int
-__ftruncate64 (int fd, off64_t length)
-{
- /* On PPC32 64bit values are aligned in odd/even register pairs. */
- int result = INLINE_SYSCALL (ftruncate64, 4, fd, 0,
- (long) (length >> 32),
- (long) length);
-
- return result;
-}
-weak_alias (__ftruncate64, ftruncate64)
+/* Recover ABORT_TRANSACTION's previous value, in order to not affect
+ other syscalls. */
+#undef ABORT_TRANSACTION
+#define ABORT_TRANSACTION ABORT_TRANSACTION_IMPL
diff --git a/sysdeps/unix/sysv/linux/powerpc/oldgetrlimit64.c b/sysdeps/unix/sysv/linux/powerpc/oldgetrlimit64.c
deleted file mode 100644
index 4c27e957bf..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/oldgetrlimit64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile b/sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile
index 84324aa7e1..b2d7c8f6cc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile
@@ -1,6 +1,15 @@
# See Makeconfig regarding the use of default-abi.
default-abi := 32
-ifeq ($(subdir),resource)
-sysdep_routines += oldgetrlimit64
+ifeq ($(subdir),csu)
+ifeq (yes,$(build-shared))
+sysdep_routines += divdi3
+shared-only-routines += divdi3
+CPPFLAGS-divdi3.c = -Din_divdi3_c
+endif
+endif
+
+ifeq ($(subdir),conform)
+# For bug 21635.
+conformtest-xfail-conds += powerpc32-linux
endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S
index 9b591feac7..011bf0f1a7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2018 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
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 0000000000..c7de3a7547
--- /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 <dirent/alphasort64.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S
index b4f8b2f9ef..2dc11845cb 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S
@@ -1,5 +1,5 @@
/* brk system call for Linux/ppc.
- Copyright (C) 1995-2016 Free Software Foundation, Inc.
+ Copyright (C) 1995-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S
index 28948eae84..7a05c280f2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S
@@ -1,5 +1,5 @@
/* Wrapper around clone system call.
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2018 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
@@ -20,10 +20,6 @@
#define _ERRNO_H 1
#include <bits/errno.h>
-#define CLONE_VM 0x00000100
-#define CLONE_THREAD 0x00010000
-
-
/* This is the only really unusual system call in PPC linux, but not
because of any weirdness in the system call itself; because of
all the freaky stuff we have to do to make the call useful. */
@@ -76,23 +72,11 @@ ENTRY (__clone)
crandc cr1*4+eq,cr1*4+eq,cr0*4+so
bne- cr1,L(parent) /* The '-' is to minimise the race. */
- andis. r0,r28,CLONE_THREAD>>16
- bne+ r0,L(oldpid)
- andi. r0,r28,CLONE_VM
- li r3,-1
- bne- r0,L(nomoregetpid)
- DO_CALL(SYS_ify(getpid))
-L(nomoregetpid):
- stw r3,TID(r2)
- stw r3,PID(r2)
-L(oldpid):
-
/* Call procedure. */
mtctr r30
mr r3,r31
bctrl
- /* Call _exit with result from procedure. */
- b HIDDEN_JUMPTARGET(_exit)
+ DO_CALL(SYS_ify(exit))
L(parent):
/* Parent. Restore registers & return. */
@@ -108,4 +92,5 @@ L(badargs):
cfi_startproc
END (__clone)
+libc_hidden_def (__clone)
weak_alias (__clone, clone)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nofpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nofpu/Implies
index 00365c1cfd..aab22f212c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nofpu/Implies
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nofpu/Implies
@@ -1,3 +1,2 @@
powerpc/powerpc32/e500/nofpu
powerpc/nofpu
-powerpc/soft-fp
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fcntl.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fcntl.c
deleted file mode 100644
index ea951bc4f9..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fcntl.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/fcntl.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c
index 716f06e4dc..bc1180b8cc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c
@@ -1,5 +1,5 @@
/* Procedure definition for FE_MASK_ENV for Linux/ppc.
- Copyright (C) 2007-2016 Free Software Foundation, Inc.
+ Copyright (C) 2007-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
index b662653e35..010b87236b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
@@ -1,5 +1,5 @@
/* Procedure definition for FE_NOMASK_ENV for Linux/ppc.
- Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ Copyright (C) 2000-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 6861846109..45839ed25b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1,9 +1,7 @@
-GCC_3.0 GCC_3.0 A
GCC_3.0 _Unwind_Find_FDE F
GCC_3.0 __deregister_frame_info_bases F
GCC_3.0 __register_frame_info_bases F
GCC_3.0 __register_frame_info_table_bases F
-GLIBC_2.0 GLIBC_2.0 A
GLIBC_2.0 _IO_adjust_column F
GLIBC_2.0 _IO_default_doallocate F
GLIBC_2.0 _IO_default_finish F
@@ -1322,7 +1320,6 @@ GLIBC_2.0 xdrstdio_create F
GLIBC_2.0 xencrypt F
GLIBC_2.0 xprt_register F
GLIBC_2.0 xprt_unregister F
-GLIBC_2.1 GLIBC_2.1 A
GLIBC_2.1 _IO_2_1_stderr_ D 0xa0
GLIBC_2.1 _IO_2_1_stdin_ D 0xa0
GLIBC_2.1 _IO_2_1_stdout_ D 0xa0
@@ -1623,7 +1620,6 @@ GLIBC_2.1 xdr_uint16_t F
GLIBC_2.1 xdr_uint32_t F
GLIBC_2.1 xdr_uint8_t F
GLIBC_2.1 xdr_unixcred F
-GLIBC_2.1.1 GLIBC_2.1.1 A
GLIBC_2.1.1 _Exit F
GLIBC_2.1.1 __mempcpy_small F
GLIBC_2.1.1 __stpcpy_small F
@@ -1653,7 +1649,6 @@ GLIBC_2.1.1 xdr_longlong_t F
GLIBC_2.1.1 xdr_u_hyper F
GLIBC_2.1.1 xdr_u_longlong_t F
GLIBC_2.1.1 xdr_uint64_t F
-GLIBC_2.1.2 GLIBC_2.1.2 A
GLIBC_2.1.2 __vfork F
GLIBC_2.1.2 getaliasbyname_r F
GLIBC_2.1.2 getaliasent_r F
@@ -1681,11 +1676,9 @@ GLIBC_2.1.2 getservbyport_r F
GLIBC_2.1.2 getservent_r F
GLIBC_2.1.2 getspent_r F
GLIBC_2.1.2 getspnam_r F
-GLIBC_2.1.3 GLIBC_2.1.3 A
GLIBC_2.1.3 __cxa_atexit F
GLIBC_2.1.3 __cxa_finalize F
GLIBC_2.1.3 __sigsuspend F
-GLIBC_2.10 GLIBC_2.10 A
GLIBC_2.10 __cxa_at_quick_exit F
GLIBC_2.10 __posix_getopt F
GLIBC_2.10 accept4 F
@@ -1711,7 +1704,6 @@ GLIBC_2.10 register_printf_type F
GLIBC_2.10 setsgent F
GLIBC_2.10 sgetsgent F
GLIBC_2.10 sgetsgent_r F
-GLIBC_2.11 GLIBC_2.11 A
GLIBC_2.11 __longjmp_chk F
GLIBC_2.11 execvpe F
GLIBC_2.11 fallocate64 F
@@ -1719,26 +1711,22 @@ GLIBC_2.11 mkostemps F
GLIBC_2.11 mkostemps64 F
GLIBC_2.11 mkstemps F
GLIBC_2.11 mkstemps64 F
-GLIBC_2.12 GLIBC_2.12 A
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
-GLIBC_2.13 GLIBC_2.13 A
GLIBC_2.13 fanotify_init F
GLIBC_2.13 fanotify_mark F
GLIBC_2.13 prlimit F
GLIBC_2.13 prlimit64 F
-GLIBC_2.14 GLIBC_2.14 A
GLIBC_2.14 clock_adjtime F
GLIBC_2.14 name_to_handle_at F
GLIBC_2.14 open_by_handle_at F
GLIBC_2.14 sendmmsg F
GLIBC_2.14 setns F
GLIBC_2.14 syncfs F
-GLIBC_2.15 GLIBC_2.15 A
GLIBC_2.15 __fdelt_chk F
GLIBC_2.15 __fdelt_warn F
GLIBC_2.15 posix_spawn F
@@ -1747,7 +1735,6 @@ GLIBC_2.15 process_vm_readv F
GLIBC_2.15 process_vm_writev F
GLIBC_2.15 scandirat F
GLIBC_2.15 scandirat64 F
-GLIBC_2.16 GLIBC_2.16 A
GLIBC_2.16 __getauxval F
GLIBC_2.16 __mcount_internal F
GLIBC_2.16 __poll_chk F
@@ -1759,7 +1746,6 @@ GLIBC_2.16 getauxval F
GLIBC_2.16 mbrtoc16 F
GLIBC_2.16 mbrtoc32 F
GLIBC_2.16 timespec_get F
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 __ppc_get_timebase_freq F
GLIBC_2.17 clock_getcpuclockid F
GLIBC_2.17 clock_getres F
@@ -1767,9 +1753,7 @@ GLIBC_2.17 clock_gettime F
GLIBC_2.17 clock_nanosleep F
GLIBC_2.17 clock_settime F
GLIBC_2.17 secure_getenv F
-GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 __cxa_thread_atexit_impl F
-GLIBC_2.2 GLIBC_2.2 A
GLIBC_2.2 _IO_adjust_wcolumn F
GLIBC_2.2 _IO_fgetpos F
GLIBC_2.2 _IO_fgetpos64 F
@@ -1944,33 +1928,71 @@ GLIBC_2.2 wcsftime F
GLIBC_2.2 wmempcpy F
GLIBC_2.2 wprintf F
GLIBC_2.2 wscanf F
-GLIBC_2.2.1 GLIBC_2.2.1 A
GLIBC_2.2.1 pivot_root F
GLIBC_2.2.1 posix_openpt F
-GLIBC_2.2.2 GLIBC_2.2.2 A
GLIBC_2.2.2 __nss_hostname_digits_dots F
-GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 __rpc_thread_createerr F
GLIBC_2.2.3 __rpc_thread_svc_fdset F
GLIBC_2.2.3 __rpc_thread_svc_max_pollfd F
GLIBC_2.2.3 __rpc_thread_svc_pollfd F
GLIBC_2.2.3 fnmatch F
GLIBC_2.2.3 sprofil F
-GLIBC_2.2.4 GLIBC_2.2.4 A
GLIBC_2.2.4 dl_iterate_phdr F
GLIBC_2.2.4 getgrouplist F
GLIBC_2.2.4 sockatmark F
-GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
-GLIBC_2.22 GLIBC_2.22 A
GLIBC_2.22 fmemopen F
-GLIBC_2.23 GLIBC_2.23 A
GLIBC_2.23 fts64_children F
GLIBC_2.23 fts64_close F
GLIBC_2.23 fts64_open F
GLIBC_2.23 fts64_read F
GLIBC_2.23 fts64_set F
-GLIBC_2.3 GLIBC_2.3 A
+GLIBC_2.24 quick_exit F
+GLIBC_2.25 __explicit_bzero_chk F
+GLIBC_2.25 explicit_bzero F
+GLIBC_2.25 getentropy F
+GLIBC_2.25 getrandom F
+GLIBC_2.25 strfromd F
+GLIBC_2.25 strfromf F
+GLIBC_2.25 strfroml F
+GLIBC_2.26 preadv2 F
+GLIBC_2.26 preadv64v2 F
+GLIBC_2.26 pwritev2 F
+GLIBC_2.26 pwritev64v2 F
+GLIBC_2.26 reallocarray F
+GLIBC_2.27 copy_file_range F
+GLIBC_2.27 glob F
+GLIBC_2.27 glob64 F
+GLIBC_2.27 memfd_create F
+GLIBC_2.27 mlock2 F
+GLIBC_2.27 pkey_alloc F
+GLIBC_2.27 pkey_free F
+GLIBC_2.27 pkey_get F
+GLIBC_2.27 pkey_mprotect F
+GLIBC_2.27 pkey_set F
+GLIBC_2.27 strfromf32 F
+GLIBC_2.27 strfromf32x F
+GLIBC_2.27 strfromf64 F
+GLIBC_2.27 strtof32 F
+GLIBC_2.27 strtof32_l F
+GLIBC_2.27 strtof32x F
+GLIBC_2.27 strtof32x_l F
+GLIBC_2.27 strtof64 F
+GLIBC_2.27 strtof64_l F
+GLIBC_2.27 wcstof32 F
+GLIBC_2.27 wcstof32_l F
+GLIBC_2.27 wcstof32x F
+GLIBC_2.27 wcstof32x_l F
+GLIBC_2.27 wcstof64 F
+GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 fcntl F
+GLIBC_2.28 fcntl64 F
+GLIBC_2.28 renameat2 F
+GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
GLIBC_2.3 __ctype_b_loc F
GLIBC_2.3 __ctype_tolower_loc F
GLIBC_2.3 __ctype_toupper_loc F
@@ -2064,7 +2086,6 @@ GLIBC_2.3 wcstoull_l F
GLIBC_2.3 wcsxfrm_l F
GLIBC_2.3 wctrans_l F
GLIBC_2.3 wctype_l F
-GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 __register_atfork F
GLIBC_2.3.2 epoll_create F
GLIBC_2.3.2 epoll_ctl F
@@ -2077,7 +2098,6 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
-GLIBC_2.3.3 GLIBC_2.3.3 A
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 getcontext F
GLIBC_2.3.3 gnu_dev_major F
@@ -2102,11 +2122,9 @@ GLIBC_2.3.3 setcontext F
GLIBC_2.3.3 swapcontext F
GLIBC_2.3.3 sys_sigabbrev D 0x104
GLIBC_2.3.3 sys_siglist D 0x104
-GLIBC_2.3.4 GLIBC_2.3.4 A
GLIBC_2.3.4 __chk_fail F
GLIBC_2.3.4 __fprintf_chk F
GLIBC_2.3.4 __gets_chk F
-GLIBC_2.3.4 __longjmp F
GLIBC_2.3.4 __memcpy_chk F
GLIBC_2.3.4 __memmove_chk F
GLIBC_2.3.4 __mempcpy_chk F
@@ -2143,7 +2161,6 @@ GLIBC_2.3.4 siglongjmp F
GLIBC_2.3.4 swapcontext F
GLIBC_2.3.4 xdr_quad_t F
GLIBC_2.3.4 xdr_u_quad_t F
-GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2371,7 +2388,6 @@ GLIBC_2.4 wcstold F
GLIBC_2.4 wcstold_l F
GLIBC_2.4 wprintf F
GLIBC_2.4 wscanf F
-GLIBC_2.5 GLIBC_2.5 A
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
@@ -2389,7 +2405,6 @@ GLIBC_2.5 inet6_rth_space F
GLIBC_2.5 splice F
GLIBC_2.5 tee F
GLIBC_2.5 vmsplice F
-GLIBC_2.6 GLIBC_2.6 A
GLIBC_2.6 __sched_cpucount F
GLIBC_2.6 epoll_pwait F
GLIBC_2.6 futimens F
@@ -2397,7 +2412,6 @@ GLIBC_2.6 sched_getcpu F
GLIBC_2.6 strerror_l F
GLIBC_2.6 sync_file_range F
GLIBC_2.6 utimensat F
-GLIBC_2.7 GLIBC_2.7 A
GLIBC_2.7 __fread_chk F
GLIBC_2.7 __fread_unlocked_chk F
GLIBC_2.7 __isoc99_fscanf F
@@ -2436,7 +2450,6 @@ GLIBC_2.7 eventfd_write F
GLIBC_2.7 mkostemp F
GLIBC_2.7 mkostemp64 F
GLIBC_2.7 signalfd F
-GLIBC_2.8 GLIBC_2.8 A
GLIBC_2.8 __asprintf_chk F
GLIBC_2.8 __dprintf_chk F
GLIBC_2.8 __nldbl___asprintf_chk F
@@ -2453,7 +2466,6 @@ GLIBC_2.8 qsort_r F
GLIBC_2.8 timerfd_create F
GLIBC_2.8 timerfd_gettime F
GLIBC_2.8 timerfd_settime F
-GLIBC_2.9 GLIBC_2.9 A
GLIBC_2.9 dup3 F
GLIBC_2.9 epoll_create1 F
GLIBC_2.9 inotify_init1 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index 5d2f263645..511b24b764 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 GLIBC_2.0 A
GLIBC_2.0 _LIB_VERSION D 0x4
GLIBC_2.0 acos F
GLIBC_2.0 acosf F
@@ -155,7 +154,6 @@ GLIBC_2.0 y1l F
GLIBC_2.0 yn F
GLIBC_2.0 ynf F
GLIBC_2.0 ynl F
-GLIBC_2.1 GLIBC_2.1 A
GLIBC_2.1 __clog10 F
GLIBC_2.1 __clog10f F
GLIBC_2.1 __clog10l F
@@ -312,7 +310,6 @@ GLIBC_2.1 tgammal F
GLIBC_2.1 trunc F
GLIBC_2.1 truncf F
GLIBC_2.1 truncl F
-GLIBC_2.15 GLIBC_2.15 A
GLIBC_2.15 __acos_finite F
GLIBC_2.15 __acosf_finite F
GLIBC_2.15 __acosh_finite F
@@ -394,11 +391,9 @@ GLIBC_2.15 __y1l_finite F
GLIBC_2.15 __yn_finite F
GLIBC_2.15 __ynf_finite F
GLIBC_2.15 __ynl_finite F
-GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 __issignaling F
GLIBC_2.18 __issignalingf F
GLIBC_2.18 __issignalingl F
-GLIBC_2.2 GLIBC_2.2 A
GLIBC_2.2 feclearexcept F
GLIBC_2.2 fedisableexcept F
GLIBC_2.2 feenableexcept F
@@ -409,12 +404,412 @@ GLIBC_2.2 feraiseexcept F
GLIBC_2.2 fesetenv F
GLIBC_2.2 fesetexceptflag F
GLIBC_2.2 feupdateenv F
-GLIBC_2.23 GLIBC_2.23 A
GLIBC_2.23 __signgam D 0x4
GLIBC_2.23 lgamma F
GLIBC_2.23 lgammaf F
GLIBC_2.23 lgammal F
-GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.24 nextdown F
+GLIBC_2.24 nextdownf F
+GLIBC_2.24 nextdownl F
+GLIBC_2.24 nextup F
+GLIBC_2.24 nextupf F
+GLIBC_2.24 nextupl F
+GLIBC_2.25 __fe_dfl_mode D 0x8
+GLIBC_2.25 __iscanonicall F
+GLIBC_2.25 __iseqsig F
+GLIBC_2.25 __iseqsigf F
+GLIBC_2.25 __iseqsigl F
+GLIBC_2.25 canonicalize F
+GLIBC_2.25 canonicalizef F
+GLIBC_2.25 canonicalizel F
+GLIBC_2.25 fegetmode F
+GLIBC_2.25 fesetexcept F
+GLIBC_2.25 fesetmode F
+GLIBC_2.25 fetestexceptflag F
+GLIBC_2.25 fmaxmag F
+GLIBC_2.25 fmaxmagf F
+GLIBC_2.25 fmaxmagl F
+GLIBC_2.25 fminmag F
+GLIBC_2.25 fminmagf F
+GLIBC_2.25 fminmagl F
+GLIBC_2.25 fromfp F
+GLIBC_2.25 fromfpf F
+GLIBC_2.25 fromfpl F
+GLIBC_2.25 fromfpx F
+GLIBC_2.25 fromfpxf F
+GLIBC_2.25 fromfpxl F
+GLIBC_2.25 getpayload F
+GLIBC_2.25 getpayloadf F
+GLIBC_2.25 getpayloadl F
+GLIBC_2.25 llogb F
+GLIBC_2.25 llogbf F
+GLIBC_2.25 llogbl F
+GLIBC_2.25 roundeven F
+GLIBC_2.25 roundevenf F
+GLIBC_2.25 roundevenl F
+GLIBC_2.25 setpayload F
+GLIBC_2.25 setpayloadf F
+GLIBC_2.25 setpayloadl F
+GLIBC_2.25 setpayloadsig F
+GLIBC_2.25 setpayloadsigf F
+GLIBC_2.25 setpayloadsigl F
+GLIBC_2.25 totalorder F
+GLIBC_2.25 totalorderf F
+GLIBC_2.25 totalorderl F
+GLIBC_2.25 totalordermag F
+GLIBC_2.25 totalordermagf F
+GLIBC_2.25 totalordermagl F
+GLIBC_2.25 ufromfp F
+GLIBC_2.25 ufromfpf F
+GLIBC_2.25 ufromfpl F
+GLIBC_2.25 ufromfpx F
+GLIBC_2.25 ufromfpxf F
+GLIBC_2.25 ufromfpxl F
+GLIBC_2.27 acosf32 F
+GLIBC_2.27 acosf32x F
+GLIBC_2.27 acosf64 F
+GLIBC_2.27 acoshf32 F
+GLIBC_2.27 acoshf32x F
+GLIBC_2.27 acoshf64 F
+GLIBC_2.27 asinf32 F
+GLIBC_2.27 asinf32x F
+GLIBC_2.27 asinf64 F
+GLIBC_2.27 asinhf32 F
+GLIBC_2.27 asinhf32x F
+GLIBC_2.27 asinhf64 F
+GLIBC_2.27 atan2f32 F
+GLIBC_2.27 atan2f32x F
+GLIBC_2.27 atan2f64 F
+GLIBC_2.27 atanf32 F
+GLIBC_2.27 atanf32x F
+GLIBC_2.27 atanf64 F
+GLIBC_2.27 atanhf32 F
+GLIBC_2.27 atanhf32x F
+GLIBC_2.27 atanhf64 F
+GLIBC_2.27 cabsf32 F
+GLIBC_2.27 cabsf32x F
+GLIBC_2.27 cabsf64 F
+GLIBC_2.27 cacosf32 F
+GLIBC_2.27 cacosf32x F
+GLIBC_2.27 cacosf64 F
+GLIBC_2.27 cacoshf32 F
+GLIBC_2.27 cacoshf32x F
+GLIBC_2.27 cacoshf64 F
+GLIBC_2.27 canonicalizef32 F
+GLIBC_2.27 canonicalizef32x F
+GLIBC_2.27 canonicalizef64 F
+GLIBC_2.27 cargf32 F
+GLIBC_2.27 cargf32x F
+GLIBC_2.27 cargf64 F
+GLIBC_2.27 casinf32 F
+GLIBC_2.27 casinf32x F
+GLIBC_2.27 casinf64 F
+GLIBC_2.27 casinhf32 F
+GLIBC_2.27 casinhf32x F
+GLIBC_2.27 casinhf64 F
+GLIBC_2.27 catanf32 F
+GLIBC_2.27 catanf32x F
+GLIBC_2.27 catanf64 F
+GLIBC_2.27 catanhf32 F
+GLIBC_2.27 catanhf32x F
+GLIBC_2.27 catanhf64 F
+GLIBC_2.27 cbrtf32 F
+GLIBC_2.27 cbrtf32x F
+GLIBC_2.27 cbrtf64 F
+GLIBC_2.27 ccosf32 F
+GLIBC_2.27 ccosf32x F
+GLIBC_2.27 ccosf64 F
+GLIBC_2.27 ccoshf32 F
+GLIBC_2.27 ccoshf32x F
+GLIBC_2.27 ccoshf64 F
+GLIBC_2.27 ceilf32 F
+GLIBC_2.27 ceilf32x F
+GLIBC_2.27 ceilf64 F
+GLIBC_2.27 cexpf32 F
+GLIBC_2.27 cexpf32x F
+GLIBC_2.27 cexpf64 F
+GLIBC_2.27 cimagf32 F
+GLIBC_2.27 cimagf32x F
+GLIBC_2.27 cimagf64 F
+GLIBC_2.27 clog10f32 F
+GLIBC_2.27 clog10f32x F
+GLIBC_2.27 clog10f64 F
+GLIBC_2.27 clogf32 F
+GLIBC_2.27 clogf32x F
+GLIBC_2.27 clogf64 F
+GLIBC_2.27 conjf32 F
+GLIBC_2.27 conjf32x F
+GLIBC_2.27 conjf64 F
+GLIBC_2.27 copysignf32 F
+GLIBC_2.27 copysignf32x F
+GLIBC_2.27 copysignf64 F
+GLIBC_2.27 cosf32 F
+GLIBC_2.27 cosf32x F
+GLIBC_2.27 cosf64 F
+GLIBC_2.27 coshf32 F
+GLIBC_2.27 coshf32x F
+GLIBC_2.27 coshf64 F
+GLIBC_2.27 cpowf32 F
+GLIBC_2.27 cpowf32x F
+GLIBC_2.27 cpowf64 F
+GLIBC_2.27 cprojf32 F
+GLIBC_2.27 cprojf32x F
+GLIBC_2.27 cprojf64 F
+GLIBC_2.27 crealf32 F
+GLIBC_2.27 crealf32x F
+GLIBC_2.27 crealf64 F
+GLIBC_2.27 csinf32 F
+GLIBC_2.27 csinf32x F
+GLIBC_2.27 csinf64 F
+GLIBC_2.27 csinhf32 F
+GLIBC_2.27 csinhf32x F
+GLIBC_2.27 csinhf64 F
+GLIBC_2.27 csqrtf32 F
+GLIBC_2.27 csqrtf32x F
+GLIBC_2.27 csqrtf64 F
+GLIBC_2.27 ctanf32 F
+GLIBC_2.27 ctanf32x F
+GLIBC_2.27 ctanf64 F
+GLIBC_2.27 ctanhf32 F
+GLIBC_2.27 ctanhf32x F
+GLIBC_2.27 ctanhf64 F
+GLIBC_2.27 erfcf32 F
+GLIBC_2.27 erfcf32x F
+GLIBC_2.27 erfcf64 F
+GLIBC_2.27 erff32 F
+GLIBC_2.27 erff32x F
+GLIBC_2.27 erff64 F
+GLIBC_2.27 exp10f32 F
+GLIBC_2.27 exp10f32x F
+GLIBC_2.27 exp10f64 F
+GLIBC_2.27 exp2f F
+GLIBC_2.27 exp2f32 F
+GLIBC_2.27 exp2f32x F
+GLIBC_2.27 exp2f64 F
+GLIBC_2.27 expf F
+GLIBC_2.27 expf32 F
+GLIBC_2.27 expf32x F
+GLIBC_2.27 expf64 F
+GLIBC_2.27 expm1f32 F
+GLIBC_2.27 expm1f32x F
+GLIBC_2.27 expm1f64 F
+GLIBC_2.27 fabsf32 F
+GLIBC_2.27 fabsf32x F
+GLIBC_2.27 fabsf64 F
+GLIBC_2.27 fdimf32 F
+GLIBC_2.27 fdimf32x F
+GLIBC_2.27 fdimf64 F
+GLIBC_2.27 floorf32 F
+GLIBC_2.27 floorf32x F
+GLIBC_2.27 floorf64 F
+GLIBC_2.27 fmaf32 F
+GLIBC_2.27 fmaf32x F
+GLIBC_2.27 fmaf64 F
+GLIBC_2.27 fmaxf32 F
+GLIBC_2.27 fmaxf32x F
+GLIBC_2.27 fmaxf64 F
+GLIBC_2.27 fmaxmagf32 F
+GLIBC_2.27 fmaxmagf32x F
+GLIBC_2.27 fmaxmagf64 F
+GLIBC_2.27 fminf32 F
+GLIBC_2.27 fminf32x F
+GLIBC_2.27 fminf64 F
+GLIBC_2.27 fminmagf32 F
+GLIBC_2.27 fminmagf32x F
+GLIBC_2.27 fminmagf64 F
+GLIBC_2.27 fmodf32 F
+GLIBC_2.27 fmodf32x F
+GLIBC_2.27 fmodf64 F
+GLIBC_2.27 frexpf32 F
+GLIBC_2.27 frexpf32x F
+GLIBC_2.27 frexpf64 F
+GLIBC_2.27 fromfpf32 F
+GLIBC_2.27 fromfpf32x F
+GLIBC_2.27 fromfpf64 F
+GLIBC_2.27 fromfpxf32 F
+GLIBC_2.27 fromfpxf32x F
+GLIBC_2.27 fromfpxf64 F
+GLIBC_2.27 getpayloadf32 F
+GLIBC_2.27 getpayloadf32x F
+GLIBC_2.27 getpayloadf64 F
+GLIBC_2.27 hypotf32 F
+GLIBC_2.27 hypotf32x F
+GLIBC_2.27 hypotf64 F
+GLIBC_2.27 ilogbf32 F
+GLIBC_2.27 ilogbf32x F
+GLIBC_2.27 ilogbf64 F
+GLIBC_2.27 j0f32 F
+GLIBC_2.27 j0f32x F
+GLIBC_2.27 j0f64 F
+GLIBC_2.27 j1f32 F
+GLIBC_2.27 j1f32x F
+GLIBC_2.27 j1f64 F
+GLIBC_2.27 jnf32 F
+GLIBC_2.27 jnf32x F
+GLIBC_2.27 jnf64 F
+GLIBC_2.27 ldexpf32 F
+GLIBC_2.27 ldexpf32x F
+GLIBC_2.27 ldexpf64 F
+GLIBC_2.27 lgammaf32 F
+GLIBC_2.27 lgammaf32_r F
+GLIBC_2.27 lgammaf32x F
+GLIBC_2.27 lgammaf32x_r F
+GLIBC_2.27 lgammaf64 F
+GLIBC_2.27 lgammaf64_r F
+GLIBC_2.27 llogbf32 F
+GLIBC_2.27 llogbf32x F
+GLIBC_2.27 llogbf64 F
+GLIBC_2.27 llrintf32 F
+GLIBC_2.27 llrintf32x F
+GLIBC_2.27 llrintf64 F
+GLIBC_2.27 llroundf32 F
+GLIBC_2.27 llroundf32x F
+GLIBC_2.27 llroundf64 F
+GLIBC_2.27 log10f32 F
+GLIBC_2.27 log10f32x F
+GLIBC_2.27 log10f64 F
+GLIBC_2.27 log1pf32 F
+GLIBC_2.27 log1pf32x F
+GLIBC_2.27 log1pf64 F
+GLIBC_2.27 log2f F
+GLIBC_2.27 log2f32 F
+GLIBC_2.27 log2f32x F
+GLIBC_2.27 log2f64 F
+GLIBC_2.27 logbf32 F
+GLIBC_2.27 logbf32x F
+GLIBC_2.27 logbf64 F
+GLIBC_2.27 logf F
+GLIBC_2.27 logf32 F
+GLIBC_2.27 logf32x F
+GLIBC_2.27 logf64 F
+GLIBC_2.27 lrintf32 F
+GLIBC_2.27 lrintf32x F
+GLIBC_2.27 lrintf64 F
+GLIBC_2.27 lroundf32 F
+GLIBC_2.27 lroundf32x F
+GLIBC_2.27 lroundf64 F
+GLIBC_2.27 modff32 F
+GLIBC_2.27 modff32x F
+GLIBC_2.27 modff64 F
+GLIBC_2.27 nanf32 F
+GLIBC_2.27 nanf32x F
+GLIBC_2.27 nanf64 F
+GLIBC_2.27 nearbyintf32 F
+GLIBC_2.27 nearbyintf32x F
+GLIBC_2.27 nearbyintf64 F
+GLIBC_2.27 nextafterf32 F
+GLIBC_2.27 nextafterf32x F
+GLIBC_2.27 nextafterf64 F
+GLIBC_2.27 nextdownf32 F
+GLIBC_2.27 nextdownf32x F
+GLIBC_2.27 nextdownf64 F
+GLIBC_2.27 nextupf32 F
+GLIBC_2.27 nextupf32x F
+GLIBC_2.27 nextupf64 F
+GLIBC_2.27 powf F
+GLIBC_2.27 powf32 F
+GLIBC_2.27 powf32x F
+GLIBC_2.27 powf64 F
+GLIBC_2.27 remainderf32 F
+GLIBC_2.27 remainderf32x F
+GLIBC_2.27 remainderf64 F
+GLIBC_2.27 remquof32 F
+GLIBC_2.27 remquof32x F
+GLIBC_2.27 remquof64 F
+GLIBC_2.27 rintf32 F
+GLIBC_2.27 rintf32x F
+GLIBC_2.27 rintf64 F
+GLIBC_2.27 roundevenf32 F
+GLIBC_2.27 roundevenf32x F
+GLIBC_2.27 roundevenf64 F
+GLIBC_2.27 roundf32 F
+GLIBC_2.27 roundf32x F
+GLIBC_2.27 roundf64 F
+GLIBC_2.27 scalblnf32 F
+GLIBC_2.27 scalblnf32x F
+GLIBC_2.27 scalblnf64 F
+GLIBC_2.27 scalbnf32 F
+GLIBC_2.27 scalbnf32x F
+GLIBC_2.27 scalbnf64 F
+GLIBC_2.27 setpayloadf32 F
+GLIBC_2.27 setpayloadf32x F
+GLIBC_2.27 setpayloadf64 F
+GLIBC_2.27 setpayloadsigf32 F
+GLIBC_2.27 setpayloadsigf32x F
+GLIBC_2.27 setpayloadsigf64 F
+GLIBC_2.27 sincosf32 F
+GLIBC_2.27 sincosf32x F
+GLIBC_2.27 sincosf64 F
+GLIBC_2.27 sinf32 F
+GLIBC_2.27 sinf32x F
+GLIBC_2.27 sinf64 F
+GLIBC_2.27 sinhf32 F
+GLIBC_2.27 sinhf32x F
+GLIBC_2.27 sinhf64 F
+GLIBC_2.27 sqrtf32 F
+GLIBC_2.27 sqrtf32x F
+GLIBC_2.27 sqrtf64 F
+GLIBC_2.27 tanf32 F
+GLIBC_2.27 tanf32x F
+GLIBC_2.27 tanf64 F
+GLIBC_2.27 tanhf32 F
+GLIBC_2.27 tanhf32x F
+GLIBC_2.27 tanhf64 F
+GLIBC_2.27 tgammaf32 F
+GLIBC_2.27 tgammaf32x F
+GLIBC_2.27 tgammaf64 F
+GLIBC_2.27 totalorderf32 F
+GLIBC_2.27 totalorderf32x F
+GLIBC_2.27 totalorderf64 F
+GLIBC_2.27 totalordermagf32 F
+GLIBC_2.27 totalordermagf32x F
+GLIBC_2.27 totalordermagf64 F
+GLIBC_2.27 truncf32 F
+GLIBC_2.27 truncf32x F
+GLIBC_2.27 truncf64 F
+GLIBC_2.27 ufromfpf32 F
+GLIBC_2.27 ufromfpf32x F
+GLIBC_2.27 ufromfpf64 F
+GLIBC_2.27 ufromfpxf32 F
+GLIBC_2.27 ufromfpxf32x F
+GLIBC_2.27 ufromfpxf64 F
+GLIBC_2.27 y0f32 F
+GLIBC_2.27 y0f32x F
+GLIBC_2.27 y0f64 F
+GLIBC_2.27 y1f32 F
+GLIBC_2.27 y1f32x F
+GLIBC_2.27 y1f64 F
+GLIBC_2.27 ynf32 F
+GLIBC_2.27 ynf32x F
+GLIBC_2.27 ynf64 F
+GLIBC_2.28 __nldbl_daddl F
+GLIBC_2.28 __nldbl_ddivl F
+GLIBC_2.28 __nldbl_dmull F
+GLIBC_2.28 __nldbl_dsubl F
+GLIBC_2.28 daddl F
+GLIBC_2.28 ddivl F
+GLIBC_2.28 dmull F
+GLIBC_2.28 dsubl F
+GLIBC_2.28 f32addf32x F
+GLIBC_2.28 f32addf64 F
+GLIBC_2.28 f32divf32x F
+GLIBC_2.28 f32divf64 F
+GLIBC_2.28 f32mulf32x F
+GLIBC_2.28 f32mulf64 F
+GLIBC_2.28 f32subf32x F
+GLIBC_2.28 f32subf64 F
+GLIBC_2.28 f32xaddf64 F
+GLIBC_2.28 f32xdivf64 F
+GLIBC_2.28 f32xmulf64 F
+GLIBC_2.28 f32xsubf64 F
+GLIBC_2.28 fadd F
+GLIBC_2.28 faddl F
+GLIBC_2.28 fdiv F
+GLIBC_2.28 fdivl F
+GLIBC_2.28 fmul F
+GLIBC_2.28 fmull F
+GLIBC_2.28 fsub F
+GLIBC_2.28 fsubl F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data
index b25abf8006..e822e0a480 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data
@@ -5,11 +5,14 @@ libc.so: malloc
libc.so: memalign
libc.so: realloc
libm.so: matherr
-# The dynamic loader uses __libc_memalign internally to allocate aligned
-# TLS storage. The other malloc family of functions are expected to allow
-# user symbol interposition.
-ld.so: __libc_memalign
+# The main malloc is interposed into the dynamic linker, for
+# allocations after the initial link (when dlopen is used).
ld.so: malloc
ld.so: calloc
ld.so: realloc
ld.so: free
+# The TLS-enabled version of these functions is interposed from libc.so.
+ld.so: _dl_signal_error
+ld.so: _dl_catch_error
+ld.so: _dl_signal_exception
+ld.so: _dl_catch_exception
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
index d7f2766076..207dc90db0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
@@ -1,5 +1,5 @@
/* Save current context, powerpc32 common.
- Copyright (C) 2005-2016 Free Software Foundation, Inc.
+ Copyright (C) 2005-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S
index bb5b2fad73..adb3ec464e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S
@@ -1,5 +1,5 @@
/* Save current context.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/glob64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/glob64.c
deleted file mode 100644
index 82a9a296a7..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/glob64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/glob64.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/jmp_buf-macros.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/jmp_buf-macros.h
new file mode 100644
index 0000000000..11b0a8bb00
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/jmp_buf-macros.h
@@ -0,0 +1,6 @@
+#define JMP_BUF_SIZE 592
+#define SIGJMP_BUF_SIZE 592
+#define JMP_BUF_ALIGN 16
+#define SIGJMP_BUF_ALIGN 16
+#define MASK_WAS_SAVED_OFFSET 448
+#define SAVED_MASK_OFFSET 452
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h
index 75f7bcddd9..5829f9a610 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h
@@ -1,5 +1,5 @@
/* Definition of `struct stat' used in the kernel.
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2018 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
@@ -46,3 +46,6 @@ struct kernel_stat
#define _HAVE_STAT64___UNUSED5
#define _HAVE_STAT64___PAD2
#define _HAVE_STAT64_NSEC
+
+#define XSTAT_IS_XSTAT64 0
+#define STATFS_IS_STATFS64 0
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ld.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/ld.abilist
index 2eb4d5fef1..e8b0ea3a9b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ld.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/ld.abilist
@@ -1,17 +1,10 @@
-GLIBC_2.0 GLIBC_2.0 A
-GLIBC_2.0 __libc_memalign F
GLIBC_2.0 _r_debug D 0x14
GLIBC_2.0 calloc F
GLIBC_2.0 free F
GLIBC_2.0 malloc F
GLIBC_2.0 realloc F
-GLIBC_2.1 GLIBC_2.1 A
GLIBC_2.1 __libc_stack_end D 0x4
GLIBC_2.1 _dl_mcount F
-GLIBC_2.22 GLIBC_2.22 A
GLIBC_2.22 __tls_get_addr_opt F
-GLIBC_2.23 GLIBC_2.23 A
GLIBC_2.23 __parse_hwcap_and_convert_at_platform F
-GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 __tls_get_addr F
-GLIBC_2.4 GLIBC_2.4 A
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libBrokenLocale.abilist
index 4a56bb68a3..54395f3c8d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libBrokenLocale.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libBrokenLocale.abilist
@@ -1,2 +1 @@
-GLIBC_2.0 GLIBC_2.0 A
GLIBC_2.0 __ctype_get_mb_cur_max F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
index edabfb436e..d9a5ed015d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 gai_cancel F
GLIBC_2.2.3 gai_error F
GLIBC_2.2.3 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libcrypt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libcrypt.abilist
index 4db2639336..cd6ba95280 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libcrypt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libcrypt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 GLIBC_2.0 A
GLIBC_2.0 crypt F
GLIBC_2.0 crypt_r F
GLIBC_2.0 encrypt F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
index 5536f6e0a9..7826fde951 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist
@@ -1,14 +1,10 @@
-GLIBC_2.0 GLIBC_2.0 A
GLIBC_2.0 dladdr F
GLIBC_2.0 dlclose F
GLIBC_2.0 dlerror F
GLIBC_2.0 dlopen F
GLIBC_2.0 dlsym F
-GLIBC_2.1 GLIBC_2.1 A
GLIBC_2.1 dlopen F
GLIBC_2.1 dlvsym F
-GLIBC_2.3.3 GLIBC_2.3.3 A
GLIBC_2.3.3 dladdr1 F
GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 GLIBC_2.3.4 A
GLIBC_2.3.4 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libnsl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libnsl.abilist
index a23db2aeaf..add3d66a7a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libnsl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libnsl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 GLIBC_2.0 A
GLIBC_2.0 __yp_check F
GLIBC_2.0 xdr_domainname F
GLIBC_2.0 xdr_keydat F
@@ -42,7 +41,6 @@ GLIBC_2.0 yp_update F
GLIBC_2.0 ypbinderr_string F
GLIBC_2.0 yperr_string F
GLIBC_2.0 ypprot_err F
-GLIBC_2.1 GLIBC_2.1 A
GLIBC_2.1 __free_fdresult F
GLIBC_2.1 __nis_default_access F
GLIBC_2.1 __nis_default_group F
@@ -120,5 +118,4 @@ GLIBC_2.1 readColdStartFile F
GLIBC_2.1 writeColdStartFile F
GLIBC_2.1 xdr_cback_data F
GLIBC_2.1 xdr_obj_p F
-GLIBC_2.2 GLIBC_2.2 A
GLIBC_2.2 xdr_ypall F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 14c3a86b75..09e8447b06 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 GLIBC_2.0 A
GLIBC_2.0 _IO_flockfile F
GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
@@ -119,7 +118,6 @@ GLIBC_2.0 vfork F
GLIBC_2.0 wait F
GLIBC_2.0 waitpid F
GLIBC_2.0 write F
-GLIBC_2.1 GLIBC_2.1 A
GLIBC_2.1 __libc_allocate_rtsig F
GLIBC_2.1 __libc_current_sigrtmax F
GLIBC_2.1 __libc_current_sigrtmin F
@@ -154,24 +152,18 @@ GLIBC_2.1 sem_init F
GLIBC_2.1 sem_post F
GLIBC_2.1 sem_trywait F
GLIBC_2.1 sem_wait F
-GLIBC_2.1.1 GLIBC_2.1.1 A
GLIBC_2.1.1 sem_close F
GLIBC_2.1.1 sem_open F
GLIBC_2.1.1 sem_unlink F
-GLIBC_2.1.2 GLIBC_2.1.2 A
GLIBC_2.1.2 __vfork F
-GLIBC_2.11 GLIBC_2.11 A
GLIBC_2.11 pthread_sigqueue F
-GLIBC_2.12 GLIBC_2.12 A
GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
-GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 GLIBC_2.2 A
GLIBC_2.2 __open64 F
GLIBC_2.2 __pread64 F
GLIBC_2.2 __pthread_rwlock_destroy F
@@ -212,18 +204,35 @@ GLIBC_2.2 pthread_yield F
GLIBC_2.2 pwrite F
GLIBC_2.2 pwrite64 F
GLIBC_2.2 sem_timedwait F
-GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
-GLIBC_2.3.2 GLIBC_2.3.2 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
GLIBC_2.3.2 pthread_cond_init F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 GLIBC_2.3.3 A
GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -239,7 +248,6 @@ GLIBC_2.3.3 pthread_getaffinity_np F
GLIBC_2.3.3 pthread_setaffinity_np F
GLIBC_2.3.3 pthread_timedjoin_np F
GLIBC_2.3.3 pthread_tryjoin_np F
-GLIBC_2.3.4 GLIBC_2.3.4 A
GLIBC_2.3.4 longjmp F
GLIBC_2.3.4 pthread_attr_getaffinity_np F
GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -247,7 +255,6 @@ GLIBC_2.3.4 pthread_getaffinity_np F
GLIBC_2.3.4 pthread_setaffinity_np F
GLIBC_2.3.4 pthread_setschedprio F
GLIBC_2.3.4 siglongjmp F
-GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
@@ -257,6 +264,5 @@ GLIBC_2.4 pthread_mutexattr_getrobust_np F
GLIBC_2.4 pthread_mutexattr_setprioceiling F
GLIBC_2.4 pthread_mutexattr_setprotocol F
GLIBC_2.4 pthread_mutexattr_setrobust_np F
-GLIBC_2.6 GLIBC_2.6 A
GLIBC_2.6 pthread_attr_setstack F
GLIBC_2.6 pthread_attr_setstacksize F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libresolv.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libresolv.abilist
index 4d50e7c8c6..157a33ce35 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libresolv.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libresolv.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 GLIBC_2.0 A
GLIBC_2.0 __b64_ntop F
GLIBC_2.0 __b64_pton F
GLIBC_2.0 __dn_comp F
@@ -57,7 +56,6 @@ GLIBC_2.0 res_querydomain F
GLIBC_2.0 res_search F
GLIBC_2.0 res_send_setqhook F
GLIBC_2.0 res_send_setrhook F
-GLIBC_2.2 GLIBC_2.2 A
GLIBC_2.2 __dn_expand F
GLIBC_2.2 __res_hostalias F
GLIBC_2.2 __res_mkquery F
@@ -69,9 +67,7 @@ GLIBC_2.2 __res_nsend F
GLIBC_2.2 __res_query F
GLIBC_2.2 __res_querydomain F
GLIBC_2.2 __res_search F
-GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 __p_rcode F
-GLIBC_2.9 GLIBC_2.9 A
GLIBC_2.9 ns_datetosecs F
GLIBC_2.9 ns_format_ttl F
GLIBC_2.9 ns_get16 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index 15e4418863..595f1b712a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.1 GLIBC_2.1 A
GLIBC_2.1 aio_cancel F
GLIBC_2.1 aio_cancel64 F
GLIBC_2.1 aio_error F
@@ -16,7 +15,6 @@ GLIBC_2.1 aio_write F
GLIBC_2.1 aio_write64 F
GLIBC_2.1 lio_listio F
GLIBC_2.1 lio_listio64 F
-GLIBC_2.2 GLIBC_2.2 A
GLIBC_2.2 clock_getcpuclockid F
GLIBC_2.2 clock_getres F
GLIBC_2.2 clock_gettime F
@@ -29,7 +27,6 @@ GLIBC_2.2 timer_delete F
GLIBC_2.2 timer_getoverrun F
GLIBC_2.2 timer_gettime F
GLIBC_2.2 timer_settime F
-GLIBC_2.3.4 GLIBC_2.3.4 A
GLIBC_2.3.4 mq_close F
GLIBC_2.3.4 mq_getattr F
GLIBC_2.3.4 mq_notify F
@@ -40,8 +37,6 @@ GLIBC_2.3.4 mq_setattr F
GLIBC_2.3.4 mq_timedreceive F
GLIBC_2.3.4 mq_timedsend F
GLIBC_2.3.4 mq_unlink F
-GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 lio_listio F
GLIBC_2.4 lio_listio64 F
-GLIBC_2.7 GLIBC_2.7 A
GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libthread_db.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libthread_db.abilist
index a8a8c2c68d..2db0992737 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libthread_db.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libthread_db.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.1.3 GLIBC_2.1.3 A
GLIBC_2.1.3 td_init F
GLIBC_2.1.3 td_log F
GLIBC_2.1.3 td_ta_clear_event F
@@ -36,9 +35,6 @@ GLIBC_2.1.3 td_thr_setxregs F
GLIBC_2.1.3 td_thr_sigsetmask F
GLIBC_2.1.3 td_thr_tsd F
GLIBC_2.1.3 td_thr_validate F
-GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 td_symbol_list F
-GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 td_thr_tls_get_addr F
-GLIBC_2.3.3 GLIBC_2.3.3 A
GLIBC_2.3.3 td_thr_tlsbase F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist
index 89c67755c4..aa2d35b323 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 GLIBC_2.0 A
GLIBC_2.0 forkpty F
GLIBC_2.0 login F
GLIBC_2.0 login_tty F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
index 7411f2801c..f958616d73 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
@@ -1,5 +1,5 @@
/* Set up a context to call a function.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies
index 40836b6fb4..d0e048e87c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies
@@ -1,2 +1 @@
powerpc/nofpu
-powerpc/soft-fp
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/context-e500.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/context-e500.h
index 4cfcb187c6..f1357fa011 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/context-e500.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/context-e500.h
@@ -1,5 +1,5 @@
/* getcontext/setcontext/makecontext support for e500 high parts of registers.
- Copyright (C) 2006-2016 Free Software Foundation, Inc.
+ Copyright (C) 2006-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S
index eced409967..ca90ae15e0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S
@@ -1,5 +1,5 @@
/* Save current context.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index fd611aa9b4..344e5ae87c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1,9 +1,7 @@
-GCC_3.0 GCC_3.0 A
GCC_3.0 _Unwind_Find_FDE F
GCC_3.0 __deregister_frame_info_bases F
GCC_3.0 __register_frame_info_bases F
GCC_3.0 __register_frame_info_table_bases F
-GLIBC_2.0 GLIBC_2.0 A
GLIBC_2.0 _IO_adjust_column F
GLIBC_2.0 _IO_default_doallocate F
GLIBC_2.0 _IO_default_finish F
@@ -1322,7 +1320,6 @@ GLIBC_2.0 xdrstdio_create F
GLIBC_2.0 xencrypt F
GLIBC_2.0 xprt_register F
GLIBC_2.0 xprt_unregister F
-GLIBC_2.1 GLIBC_2.1 A
GLIBC_2.1 _IO_2_1_stderr_ D 0xa0
GLIBC_2.1 _IO_2_1_stdin_ D 0xa0
GLIBC_2.1 _IO_2_1_stdout_ D 0xa0
@@ -1623,7 +1620,6 @@ GLIBC_2.1 xdr_uint16_t F
GLIBC_2.1 xdr_uint32_t F
GLIBC_2.1 xdr_uint8_t F
GLIBC_2.1 xdr_unixcred F
-GLIBC_2.1.1 GLIBC_2.1.1 A
GLIBC_2.1.1 _Exit F
GLIBC_2.1.1 __mempcpy_small F
GLIBC_2.1.1 __stpcpy_small F
@@ -1653,7 +1649,6 @@ GLIBC_2.1.1 xdr_longlong_t F
GLIBC_2.1.1 xdr_u_hyper F
GLIBC_2.1.1 xdr_u_longlong_t F
GLIBC_2.1.1 xdr_uint64_t F
-GLIBC_2.1.2 GLIBC_2.1.2 A
GLIBC_2.1.2 __vfork F
GLIBC_2.1.2 getaliasbyname_r F
GLIBC_2.1.2 getaliasent_r F
@@ -1681,11 +1676,9 @@ GLIBC_2.1.2 getservbyport_r F
GLIBC_2.1.2 getservent_r F
GLIBC_2.1.2 getspent_r F
GLIBC_2.1.2 getspnam_r F
-GLIBC_2.1.3 GLIBC_2.1.3 A
GLIBC_2.1.3 __cxa_atexit F
GLIBC_2.1.3 __cxa_finalize F
GLIBC_2.1.3 __sigsuspend F
-GLIBC_2.10 GLIBC_2.10 A
GLIBC_2.10 __cxa_at_quick_exit F
GLIBC_2.10 __posix_getopt F
GLIBC_2.10 accept4 F
@@ -1711,7 +1704,6 @@ GLIBC_2.10 register_printf_type F
GLIBC_2.10 setsgent F
GLIBC_2.10 sgetsgent F
GLIBC_2.10 sgetsgent_r F
-GLIBC_2.11 GLIBC_2.11 A
GLIBC_2.11 __longjmp_chk F
GLIBC_2.11 execvpe F
GLIBC_2.11 fallocate64 F
@@ -1719,26 +1711,22 @@ GLIBC_2.11 mkostemps F
GLIBC_2.11 mkostemps64 F
GLIBC_2.11 mkstemps F
GLIBC_2.11 mkstemps64 F
-GLIBC_2.12 GLIBC_2.12 A
GLIBC_2.12 _sys_errlist D 0x21c
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x21c
GLIBC_2.12 sys_nerr D 0x4
-GLIBC_2.13 GLIBC_2.13 A
GLIBC_2.13 fanotify_init F
GLIBC_2.13 fanotify_mark F
GLIBC_2.13 prlimit F
GLIBC_2.13 prlimit64 F
-GLIBC_2.14 GLIBC_2.14 A
GLIBC_2.14 clock_adjtime F
GLIBC_2.14 name_to_handle_at F
GLIBC_2.14 open_by_handle_at F
GLIBC_2.14 sendmmsg F
GLIBC_2.14 setns F
GLIBC_2.14 syncfs F
-GLIBC_2.15 GLIBC_2.15 A
GLIBC_2.15 __fdelt_chk F
GLIBC_2.15 __fdelt_warn F
GLIBC_2.15 posix_spawn F
@@ -1747,7 +1735,6 @@ GLIBC_2.15 process_vm_readv F
GLIBC_2.15 process_vm_writev F
GLIBC_2.15 scandirat F
GLIBC_2.15 scandirat64 F
-GLIBC_2.16 GLIBC_2.16 A
GLIBC_2.16 __getauxval F
GLIBC_2.16 __mcount_internal F
GLIBC_2.16 __poll_chk F
@@ -1759,7 +1746,6 @@ GLIBC_2.16 getauxval F
GLIBC_2.16 mbrtoc16 F
GLIBC_2.16 mbrtoc32 F
GLIBC_2.16 timespec_get F
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 __ppc_get_timebase_freq F
GLIBC_2.17 clock_getcpuclockid F
GLIBC_2.17 clock_getres F
@@ -1767,14 +1753,11 @@ GLIBC_2.17 clock_gettime F
GLIBC_2.17 clock_nanosleep F
GLIBC_2.17 clock_settime F
GLIBC_2.17 secure_getenv F
-GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 __cxa_thread_atexit_impl F
-GLIBC_2.19 GLIBC_2.19 A
GLIBC_2.19 __atomic_feclearexcept F
GLIBC_2.19 __atomic_feholdexcept F
GLIBC_2.19 __atomic_feupdateenv F
GLIBC_2.19 __flt_rounds F
-GLIBC_2.2 GLIBC_2.2 A
GLIBC_2.2 _IO_adjust_wcolumn F
GLIBC_2.2 _IO_fgetpos F
GLIBC_2.2 _IO_fgetpos64 F
@@ -1949,33 +1932,71 @@ GLIBC_2.2 wcsftime F
GLIBC_2.2 wmempcpy F
GLIBC_2.2 wprintf F
GLIBC_2.2 wscanf F
-GLIBC_2.2.1 GLIBC_2.2.1 A
GLIBC_2.2.1 pivot_root F
GLIBC_2.2.1 posix_openpt F
-GLIBC_2.2.2 GLIBC_2.2.2 A
GLIBC_2.2.2 __nss_hostname_digits_dots F
-GLIBC_2.2.3 GLIBC_2.2.3 A
GLIBC_2.2.3 __rpc_thread_createerr F
GLIBC_2.2.3 __rpc_thread_svc_fdset F
GLIBC_2.2.3 __rpc_thread_svc_max_pollfd F
GLIBC_2.2.3 __rpc_thread_svc_pollfd F
GLIBC_2.2.3 fnmatch F
GLIBC_2.2.3 sprofil F
-GLIBC_2.2.4 GLIBC_2.2.4 A
GLIBC_2.2.4 dl_iterate_phdr F
GLIBC_2.2.4 getgrouplist F
GLIBC_2.2.4 sockatmark F
-GLIBC_2.2.6 GLIBC_2.2.6 A
GLIBC_2.2.6 __nanosleep F
-GLIBC_2.22 GLIBC_2.22 A
GLIBC_2.22 fmemopen F
-GLIBC_2.23 GLIBC_2.23 A
GLIBC_2.23 fts64_children F
GLIBC_2.23 fts64_close F
GLIBC_2.23 fts64_open F
GLIBC_2.23 fts64_read F
GLIBC_2.23 fts64_set F
-GLIBC_2.3 GLIBC_2.3 A
+GLIBC_2.24 quick_exit F
+GLIBC_2.25 __explicit_bzero_chk F
+GLIBC_2.25 explicit_bzero F
+GLIBC_2.25 getentropy F
+GLIBC_2.25 getrandom F
+GLIBC_2.25 strfromd F
+GLIBC_2.25 strfromf F
+GLIBC_2.25 strfroml F
+GLIBC_2.26 preadv2 F
+GLIBC_2.26 preadv64v2 F
+GLIBC_2.26 pwritev2 F
+GLIBC_2.26 pwritev64v2 F
+GLIBC_2.26 reallocarray F
+GLIBC_2.27 copy_file_range F
+GLIBC_2.27 glob F
+GLIBC_2.27 glob64 F
+GLIBC_2.27 memfd_create F
+GLIBC_2.27 mlock2 F
+GLIBC_2.27 pkey_alloc F
+GLIBC_2.27 pkey_free F
+GLIBC_2.27 pkey_get F
+GLIBC_2.27 pkey_mprotect F
+GLIBC_2.27 pkey_set F
+GLIBC_2.27 strfromf32 F
+GLIBC_2.27 strfromf32x F
+GLIBC_2.27 strfromf64 F
+GLIBC_2.27 strtof32 F
+GLIBC_2.27 strtof32_l F
+GLIBC_2.27 strtof32x F
+GLIBC_2.27 strtof32x_l F
+GLIBC_2.27 strtof64 F
+GLIBC_2.27 strtof64_l F
+GLIBC_2.27 wcstof32 F
+GLIBC_2.27 wcstof32_l F
+GLIBC_2.27 wcstof32x F
+GLIBC_2.27 wcstof32x_l F
+GLIBC_2.27 wcstof64 F
+GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 fcntl F
+GLIBC_2.28 fcntl64 F
+GLIBC_2.28 renameat2 F
+GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
GLIBC_2.3 __ctype_b_loc F
GLIBC_2.3 __ctype_tolower_loc F
GLIBC_2.3 __ctype_toupper_loc F
@@ -2069,7 +2090,6 @@ GLIBC_2.3 wcstoull_l F
GLIBC_2.3 wcsxfrm_l F
GLIBC_2.3 wctrans_l F
GLIBC_2.3 wctype_l F
-GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 __adddf3 F
GLIBC_2.3.2 __addsf3 F
GLIBC_2.3.2 __divdf3 F
@@ -2111,7 +2131,6 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
-GLIBC_2.3.3 GLIBC_2.3.3 A
GLIBC_2.3.3 _sys_siglist D 0x104
GLIBC_2.3.3 getcontext F
GLIBC_2.3.3 gnu_dev_major F
@@ -2136,7 +2155,6 @@ GLIBC_2.3.3 setcontext F
GLIBC_2.3.3 swapcontext F
GLIBC_2.3.3 sys_sigabbrev D 0x104
GLIBC_2.3.3 sys_siglist D 0x104
-GLIBC_2.3.4 GLIBC_2.3.4 A
GLIBC_2.3.4 __chk_fail F
GLIBC_2.3.4 __fprintf_chk F
GLIBC_2.3.4 __gets_chk F
@@ -2176,7 +2194,6 @@ GLIBC_2.3.4 siglongjmp F
GLIBC_2.3.4 swapcontext F
GLIBC_2.3.4 xdr_quad_t F
GLIBC_2.3.4 xdr_u_quad_t F
-GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2416,7 +2433,6 @@ GLIBC_2.4 wcstold F
GLIBC_2.4 wcstold_l F
GLIBC_2.4 wprintf F
GLIBC_2.4 wscanf F
-GLIBC_2.5 GLIBC_2.5 A
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
@@ -2434,7 +2450,6 @@ GLIBC_2.5 inet6_rth_space F
GLIBC_2.5 splice F
GLIBC_2.5 tee F
GLIBC_2.5 vmsplice F
-GLIBC_2.6 GLIBC_2.6 A
GLIBC_2.6 __sched_cpucount F
GLIBC_2.6 epoll_pwait F
GLIBC_2.6 futimens F
@@ -2442,7 +2457,6 @@ GLIBC_2.6 sched_getcpu F
GLIBC_2.6 strerror_l F
GLIBC_2.6 sync_file_range F
GLIBC_2.6 utimensat F
-GLIBC_2.7 GLIBC_2.7 A
GLIBC_2.7 __fread_chk F
GLIBC_2.7 __fread_unlocked_chk F
GLIBC_2.7 __isoc99_fscanf F
@@ -2481,7 +2495,6 @@ GLIBC_2.7 eventfd_write F
GLIBC_2.7 mkostemp F
GLIBC_2.7 mkostemp64 F
GLIBC_2.7 signalfd F
-GLIBC_2.8 GLIBC_2.8 A
GLIBC_2.8 __asprintf_chk F
GLIBC_2.8 __dprintf_chk F
GLIBC_2.8 __nldbl___asprintf_chk F
@@ -2498,7 +2511,6 @@ GLIBC_2.8 qsort_r F
GLIBC_2.8 timerfd_create F
GLIBC_2.8 timerfd_gettime F
GLIBC_2.8 timerfd_settime F
-GLIBC_2.9 GLIBC_2.9 A
GLIBC_2.9 dup3 F
GLIBC_2.9 epoll_create1 F
GLIBC_2.9 inotify_init1 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index 8b5edb52a0..a6e4e4edaa 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.0 GLIBC_2.0 A
GLIBC_2.0 _LIB_VERSION D 0x4
GLIBC_2.0 acos F
GLIBC_2.0 acosf F
@@ -155,7 +154,6 @@ GLIBC_2.0 y1l F
GLIBC_2.0 yn F
GLIBC_2.0 ynf F
GLIBC_2.0 ynl F
-GLIBC_2.1 GLIBC_2.1 A
GLIBC_2.1 __clog10 F
GLIBC_2.1 __clog10f F
GLIBC_2.1 __clog10l F
@@ -311,7 +309,6 @@ GLIBC_2.1 tgammal F
GLIBC_2.1 trunc F
GLIBC_2.1 truncf F
GLIBC_2.1 truncl F
-GLIBC_2.15 GLIBC_2.15 A
GLIBC_2.15 __acos_finite F
GLIBC_2.15 __acosf_finite F
GLIBC_2.15 __acosh_finite F
@@ -393,11 +390,9 @@ GLIBC_2.15 __y1l_finite F
GLIBC_2.15 __yn_finite F
GLIBC_2.15 __ynf_finite F
GLIBC_2.15 __ynl_finite F
-GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 __issignaling F
GLIBC_2.18 __issignalingf F
GLIBC_2.18 __issignalingl F
-GLIBC_2.2 GLIBC_2.2 A
GLIBC_2.2 feclearexcept F
GLIBC_2.2 fedisableexcept F
GLIBC_2.2 feenableexcept F
@@ -408,12 +403,412 @@ GLIBC_2.2 feraiseexcept F
GLIBC_2.2 fesetenv F
GLIBC_2.2 fesetexceptflag F
GLIBC_2.2 feupdateenv F
-GLIBC_2.23 GLIBC_2.23 A
GLIBC_2.23 __signgam D 0x4
GLIBC_2.23 lgamma F
GLIBC_2.23 lgammaf F
GLIBC_2.23 lgammal F
-GLIBC_2.4 GLIBC_2.4 A
+GLIBC_2.24 nextdown F
+GLIBC_2.24 nextdownf F
+GLIBC_2.24 nextdownl F
+GLIBC_2.24 nextup F
+GLIBC_2.24 nextupf F
+GLIBC_2.24 nextupl F
+GLIBC_2.25 __fe_dfl_mode D 0x8
+GLIBC_2.25 __iscanonicall F
+GLIBC_2.25 __iseqsig F
+GLIBC_2.25 __iseqsigf F
+GLIBC_2.25 __iseqsigl F
+GLIBC_2.25 canonicalize F
+GLIBC_2.25 canonicalizef F
+GLIBC_2.25 canonicalizel F
+GLIBC_2.25 fegetmode F
+GLIBC_2.25 fesetexcept F
+GLIBC_2.25 fesetmode F
+GLIBC_2.25 fetestexceptflag F
+GLIBC_2.25 fmaxmag F
+GLIBC_2.25 fmaxmagf F
+GLIBC_2.25 fmaxmagl F
+GLIBC_2.25 fminmag F
+GLIBC_2.25 fminmagf F
+GLIBC_2.25 fminmagl F
+GLIBC_2.25 fromfp F
+GLIBC_2.25 fromfpf F
+GLIBC_2.25 fromfpl F
+GLIBC_2.25 fromfpx F
+GLIBC_2.25 fromfpxf F
+GLIBC_2.25 fromfpxl F
+GLIBC_2.25 getpayload F
+GLIBC_2.25 getpayloadf F
+GLIBC_2.25 getpayloadl F
+GLIBC_2.25 llogb F
+GLIBC_2.25 llogbf F
+GLIBC_2.25 llogbl F
+GLIBC_2.25 roundeven F
+GLIBC_2.25 roundevenf F
+GLIBC_2.25 roundevenl F
+GLIBC_2.25 setpayload F
+GLIBC_2.25 setpayloadf F
+GLIBC_2.25 setpayloadl F
+GLIBC_2.25 setpayloadsig F
+GLIBC_2.25 setpayloadsigf F
+GLIBC_2.25 setpayloadsigl F
+GLIBC_2.25 totalorder F
+GLIBC_2.25 totalorderf F
+GLIBC_2.25 totalorderl F
+GLIBC_2.25 totalordermag F
+GLIBC_2.25 totalordermagf F
+GLIBC_2.25 totalordermagl F
+GLIBC_2.25 ufromfp F
+GLIBC_2.25 ufromfpf F
+GLIBC_2.25 ufromfpl F
+GLIBC_2.25 ufromfpx F
+GLIBC_2.25 ufromfpxf F
+GLIBC_2.25 ufromfpxl F
+GLIBC_2.27 acosf32 F
+GLIBC_2.27 acosf32x F
+GLIBC_2.27 acosf64 F
+GLIBC_2.27 acoshf32 F
+GLIBC_2.27 acoshf32x F
+GLIBC_2.27 acoshf64 F
+GLIBC_2.27 asinf32 F
+GLIBC_2.27 asinf32x F
+GLIBC_2.27 asinf64 F
+GLIBC_2.27 asinhf32 F
+GLIBC_2.27 asinhf32x F
+GLIBC_2.27 asinhf64 F
+GLIBC_2.27 atan2f32 F
+GLIBC_2.27 atan2f32x F
+GLIBC_2.27 atan2f64 F
+GLIBC_2.27 atanf32 F
+GLIBC_2.27 atanf32x F
+GLIBC_2.27 atanf64 F
+GLIBC_2.27 atanhf32 F
+GLIBC_2.27 atanhf32x F
+GLIBC_2.27 atanhf64 F
+GLIBC_2.27 cabsf32 F
+GLIBC_2.27 cabsf32x F
+GLIBC_2.27 cabsf64 F
+GLIBC_2.27 cacosf32 F
+GLIBC_2.27 cacosf32x F
+GLIBC_2.27 cacosf64 F
+GLIBC_2.27 cacoshf32 F
+GLIBC_2.27 cacoshf32x F
+GLIBC_2.27 cacoshf64 F
+GLIBC_2.27 canonicalizef32 F
+GLIBC_2.27 canonicalizef32x F
+GLIBC_2.27 canonicalizef64 F
+GLIBC_2.27 cargf32 F
+GLIBC_2.27 cargf32x F
+GLIBC_2.27 cargf64 F
+GLIBC_2.27 casinf32 F
+GLIBC_2.27 casinf32x F
+GLIBC_2.27 casinf64 F
+GLIBC_2.27 casinhf32 F
+GLIBC_2.27 casinhf32x F
+GLIBC_2.27 casinhf64 F
+GLIBC_2.27 catanf32 F
+GLIBC_2.27 catanf32x F
+GLIBC_2.27 catanf64 F
+GLIBC_2.27 catanhf32 F
+GLIBC_2.27 catanhf32x F
+GLIBC_2.27 catanhf64 F
+GLIBC_2.27 cbrtf32 F
+GLIBC_2.27 cbrtf32x F
+GLIBC_2.27 cbrtf64 F
+GLIBC_2.27 ccosf32 F
+GLIBC_2.27 ccosf32x F
+GLIBC_2.27 ccosf64 F
+GLIBC_2.27 ccoshf32 F
+GLIBC_2.27 ccoshf32x F
+GLIBC_2.27 ccoshf64 F
+GLIBC_2.27 ceilf32 F
+GLIBC_2.27 ceilf32x F
+GLIBC_2.27 ceilf64 F
+GLIBC_2.27 cexpf32 F
+GLIBC_2.27 cexpf32x F
+GLIBC_2.27 cexpf64 F
+GLIBC_2.27 cimagf32 F
+GLIBC_2.27 cimagf32x F
+GLIBC_2.27 cimagf64 F
+GLIBC_2.27 clog10f32 F
+GLIBC_2.27 clog10f32x F
+GLIBC_2.27 clog10f64 F
+GLIBC_2.27 clogf32 F
+GLIBC_2.27 clogf32x F
+GLIBC_2.27 clogf64 F
+GLIBC_2.27 conjf32 F
+GLIBC_2.27 conjf32x F
+GLIBC_2.27 conjf64 F
+GLIBC_2.27 copysignf32 F
+GLIBC_2.27 copysignf32x F
+GLIBC_2.27 copysignf64 F
+GLIBC_2.27 cosf32 F
+GLIBC_2.27 cosf32x F
+GLIBC_2.27 cosf64 F
+GLIBC_2.27 coshf32 F
+GLIBC_2.27 coshf32x F
+GLIBC_2.27 coshf64 F
+GLIBC_2.27 cpowf32 F
+GLIBC_2.27 cpowf32x F
+GLIBC_2.27 cpowf64 F
+GLIBC_2.27 cprojf32 F
+GLIBC_2.27 cprojf32x F
+GLIBC_2.27 cprojf64 F
+GLIBC_2.27 crealf32 F
+GLIBC_2.27 crealf32x F
+GLIBC_2.27 crealf64 F
+GLIBC_2.27 csinf32 F
+GLIBC_2.27 csinf32x F
+GLIBC_2.27 csinf64 F
+GLIBC_2.27 csinhf32 F
+GLIBC_2.27 csinhf32x F
+GLIBC_2.27 csinhf64 F
+GLIBC_2.27 csqrtf32 F
+GLIBC_2.27 csqrtf32x F
+GLIBC_2.27 csqrtf64 F
+GLIBC_2.27 ctanf32 F
+GLIBC_2.27 ctanf32x F
+GLIBC_2.27 ctanf64 F
+GLIBC_2.27 ctanhf32 F
+GLIBC_2.27 ctanhf32x F
+GLIBC_2.27 ctanhf64 F
+GLIBC_2.27 erfcf32 F
+GLIBC_2.27 erfcf32x F
+GLIBC_2.27 erfcf64 F
+GLIBC_2.27 erff32 F
+GLIBC_2.27 erff32x F
+GLIBC_2.27 erff64 F
+GLIBC_2.27 exp10f32 F
+GLIBC_2.27 exp10f32x F
+GLIBC_2.27 exp10f64 F
+GLIBC_2.27 exp2f F
+GLIBC_2.27 exp2f32 F
+GLIBC_2.27 exp2f32x F
+GLIBC_2.27 exp2f64 F
+GLIBC_2.27 expf F
+GLIBC_2.27 expf32 F
+GLIBC_2.27 expf32x F
+GLIBC_2.27 expf64 F
+GLIBC_2.27 expm1f32 F
+GLIBC_2.27 expm1f32x F
+GLIBC_2.27 expm1f64 F
+GLIBC_2.27 fabsf32 F
+GLIBC_2.27 fabsf32x F
+GLIBC_2.27 fabsf64 F
+GLIBC_2.27 fdimf32 F
+GLIBC_2.27 fdimf32x F
+GLIBC_2.27 fdimf64 F
+GLIBC_2.27 floorf32 F
+GLIBC_2.27 floorf32x F
+GLIBC_2.27 floorf64 F
+GLIBC_2.27 fmaf32 F
+GLIBC_2.27 fmaf32x F
+GLIBC_2.27 fmaf64 F
+GLIBC_2.27 fmaxf32 F
+GLIBC_2.27 fmaxf32x F
+GLIBC_2.27 fmaxf64 F
+GLIBC_2.27 fmaxmagf32 F
+GLIBC_2.27 fmaxmagf32x F
+GLIBC_2.27 fmaxmagf64 F
+GLIBC_2.27 fminf32 F
+GLIBC_2.27 fminf32x F
+GLIBC_2.27 fminf64 F
+GLIBC_2.27 fminmagf32 F
+GLIBC_2.27 fminmagf32x F
+GLIBC_2.27 fminmagf64 F
+GLIBC_2.27 fmodf32 F
+GLIBC_2.27 fmodf32x F
+GLIBC_2.27 fmodf64 F
+GLIBC_2.27 frexpf32 F
+GLIBC_2.27 frexpf32x F
+GLIBC_2.27 frexpf64 F
+GLIBC_2.27 fromfpf32 F
+GLIBC_2.27 fromfpf32x F
+GLIBC_2.27 fromfpf64 F
+GLIBC_2.27 fromfpxf32 F
+GLIBC_2.27 fromfpxf32x F
+GLIBC_2.27 fromfpxf64 F
+GLIBC_2.27 getpayloadf32 F
+GLIBC_2.27 getpayloadf32x F
+GLIBC_2.27 getpayloadf64 F
+GLIBC_2.27 hypotf32 F
+GLIBC_2.27 hypotf32x F
+GLIBC_2.27 hypotf64 F
+GLIBC_2.27 ilogbf32 F
+GLIBC_2.27 ilogbf32x F
+GLIBC_2.27 ilogbf64 F
+GLIBC_2.27 j0f32 F
+GLIBC_2.27 j0f32x F
+GLIBC_2.27 j0f64 F
+GLIBC_2.27 j1f32 F
+GLIBC_2.27 j1f32x F
+GLIBC_2.27 j1f64 F
+GLIBC_2.27 jnf32 F
+GLIBC_2.27 jnf32x F
+GLIBC_2.27 jnf64 F
+GLIBC_2.27 ldexpf32 F
+GLIBC_2.27 ldexpf32x F
+GLIBC_2.27 ldexpf64 F
+GLIBC_2.27 lgammaf32 F
+GLIBC_2.27 lgammaf32_r F
+GLIBC_2.27 lgammaf32x F
+GLIBC_2.27 lgammaf32x_r F
+GLIBC_2.27 lgammaf64 F
+GLIBC_2.27 lgammaf64_r F
+GLIBC_2.27 llogbf32 F
+GLIBC_2.27 llogbf32x F
+GLIBC_2.27 llogbf64 F
+GLIBC_2.27 llrintf32 F
+GLIBC_2.27 llrintf32x F
+GLIBC_2.27 llrintf64 F
+GLIBC_2.27 llroundf32 F
+GLIBC_2.27 llroundf32x F
+GLIBC_2.27 llroundf64 F
+GLIBC_2.27 log10f32 F
+GLIBC_2.27 log10f32x F
+GLIBC_2.27 log10f64 F
+GLIBC_2.27 log1pf32 F
+GLIBC_2.27 log1pf32x F
+GLIBC_2.27 log1pf64 F
+GLIBC_2.27 log2f F
+GLIBC_2.27 log2f32 F
+GLIBC_2.27 log2f32x F
+GLIBC_2.27 log2f64 F
+GLIBC_2.27 logbf32 F
+GLIBC_2.27 logbf32x F
+GLIBC_2.27 logbf64 F
+GLIBC_2.27 logf F
+GLIBC_2.27 logf32 F
+GLIBC_2.27 logf32x F
+GLIBC_2.27 logf64 F
+GLIBC_2.27 lrintf32 F
+GLIBC_2.27 lrintf32x F
+GLIBC_2.27 lrintf64 F
+GLIBC_2.27 lroundf32 F
+GLIBC_2.27 lroundf32x F
+GLIBC_2.27 lroundf64 F
+GLIBC_2.27 modff32 F
+GLIBC_2.27 modff32x F
+GLIBC_2.27 modff64 F
+GLIBC_2.27 nanf32 F
+GLIBC_2.27 nanf32x F
+GLIBC_2.27 nanf64 F
+GLIBC_2.27 nearbyintf32 F
+GLIBC_2.27 nearbyintf32x F
+GLIBC_2.27 nearbyintf64 F
+GLIBC_2.27 nextafterf32 F
+GLIBC_2.27 nextafterf32x F
+GLIBC_2.27 nextafterf64 F
+GLIBC_2.27 nextdownf32 F
+GLIBC_2.27 nextdownf32x F
+GLIBC_2.27 nextdownf64 F
+GLIBC_2.27 nextupf32 F
+GLIBC_2.27 nextupf32x F
+GLIBC_2.27 nextupf64 F
+GLIBC_2.27 powf F
+GLIBC_2.27 powf32 F
+GLIBC_2.27 powf32x F
+GLIBC_2.27 powf64 F
+GLIBC_2.27 remainderf32 F
+GLIBC_2.27 remainderf32x F
+GLIBC_2.27 remainderf64 F
+GLIBC_2.27 remquof32 F
+GLIBC_2.27 remquof32x F
+GLIBC_2.27 remquof64 F
+GLIBC_2.27 rintf32 F
+GLIBC_2.27 rintf32x F
+GLIBC_2.27 rintf64 F
+GLIBC_2.27 roundevenf32 F
+GLIBC_2.27 roundevenf32x F
+GLIBC_2.27 roundevenf64 F
+GLIBC_2.27 roundf32 F
+GLIBC_2.27 roundf32x F
+GLIBC_2.27 roundf64 F
+GLIBC_2.27 scalblnf32 F
+GLIBC_2.27 scalblnf32x F
+GLIBC_2.27 scalblnf64 F
+GLIBC_2.27 scalbnf32 F
+GLIBC_2.27 scalbnf32x F
+GLIBC_2.27 scalbnf64 F
+GLIBC_2.27 setpayloadf32 F
+GLIBC_2.27 setpayloadf32x F
+GLIBC_2.27 setpayloadf64 F
+GLIBC_2.27 setpayloadsigf32 F
+GLIBC_2.27 setpayloadsigf32x F
+GLIBC_2.27 setpayloadsigf64 F
+GLIBC_2.27 sincosf32 F
+GLIBC_2.27 sincosf32x F
+GLIBC_2.27 sincosf64 F
+GLIBC_2.27 sinf32 F
+GLIBC_2.27 sinf32x F
+GLIBC_2.27 sinf64 F
+GLIBC_2.27 sinhf32 F
+GLIBC_2.27 sinhf32x F
+GLIBC_2.27 sinhf64 F
+GLIBC_2.27 sqrtf32 F
+GLIBC_2.27 sqrtf32x F
+GLIBC_2.27 sqrtf64 F
+GLIBC_2.27 tanf32 F
+GLIBC_2.27 tanf32x F
+GLIBC_2.27 tanf64 F
+GLIBC_2.27 tanhf32 F
+GLIBC_2.27 tanhf32x F
+GLIBC_2.27 tanhf64 F
+GLIBC_2.27 tgammaf32 F
+GLIBC_2.27 tgammaf32x F
+GLIBC_2.27 tgammaf64 F
+GLIBC_2.27 totalorderf32 F
+GLIBC_2.27 totalorderf32x F
+GLIBC_2.27 totalorderf64 F
+GLIBC_2.27 totalordermagf32 F
+GLIBC_2.27 totalordermagf32x F
+GLIBC_2.27 totalordermagf64 F
+GLIBC_2.27 truncf32 F
+GLIBC_2.27 truncf32x F
+GLIBC_2.27 truncf64 F
+GLIBC_2.27 ufromfpf32 F
+GLIBC_2.27 ufromfpf32x F
+GLIBC_2.27 ufromfpf64 F
+GLIBC_2.27 ufromfpxf32 F
+GLIBC_2.27 ufromfpxf32x F
+GLIBC_2.27 ufromfpxf64 F
+GLIBC_2.27 y0f32 F
+GLIBC_2.27 y0f32x F
+GLIBC_2.27 y0f64 F
+GLIBC_2.27 y1f32 F
+GLIBC_2.27 y1f32x F
+GLIBC_2.27 y1f64 F
+GLIBC_2.27 ynf32 F
+GLIBC_2.27 ynf32x F
+GLIBC_2.27 ynf64 F
+GLIBC_2.28 __nldbl_daddl F
+GLIBC_2.28 __nldbl_ddivl F
+GLIBC_2.28 __nldbl_dmull F
+GLIBC_2.28 __nldbl_dsubl F
+GLIBC_2.28 daddl F
+GLIBC_2.28 ddivl F
+GLIBC_2.28 dmull F
+GLIBC_2.28 dsubl F
+GLIBC_2.28 f32addf32x F
+GLIBC_2.28 f32addf64 F
+GLIBC_2.28 f32divf32x F
+GLIBC_2.28 f32divf64 F
+GLIBC_2.28 f32mulf32x F
+GLIBC_2.28 f32mulf64 F
+GLIBC_2.28 f32subf32x F
+GLIBC_2.28 f32subf64 F
+GLIBC_2.28 f32xaddf64 F
+GLIBC_2.28 f32xdivf64 F
+GLIBC_2.28 f32xmulf64 F
+GLIBC_2.28 f32xsubf64 F
+GLIBC_2.28 fadd F
+GLIBC_2.28 faddl F
+GLIBC_2.28 fdiv F
+GLIBC_2.28 fdivl F
+GLIBC_2.28 fmul F
+GLIBC_2.28 fmull F
+GLIBC_2.28 fsub F
+GLIBC_2.28 fsubl F
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data
index 8c4e65d123..fead931d4e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data
@@ -35,11 +35,14 @@ libc.so: realloc
libm.so: copysignl ?
libm.so: fabsl
libm.so: matherr
-# The dynamic loader uses __libc_memalign internally to allocate aligned
-# TLS storage. The other malloc family of functions are expected to allow
-# user symbol interposition.
-ld.so: __libc_memalign
+# The main malloc is interposed into the dynamic linker, for
+# allocations after the initial link (when dlopen is used).
ld.so: malloc
ld.so: calloc
ld.so: realloc
ld.so: free
+# The TLS-enabled version of these functions is interposed from libc.so.
+ld.so: _dl_signal_error
+ld.so: _dl_catch_error
+ld.so: _dl_signal_exception
+ld.so: _dl_catch_exception
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S
index 4abc5fc9a6..0fbb7a814e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S
@@ -1,5 +1,5 @@
/* Jump to a new context.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S
index 08cb796e9c..c2302c8f58 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S
@@ -1,5 +1,5 @@
/* Save current context and jump to a new context.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c
deleted file mode 100644
index e846bf58c5..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 2003-2016 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/>. */
-
-#include <errno.h>
-#include <fcntl.h>
-#include <sysdep.h>
-
-/* Advice the system about the expected behaviour of the application with
- respect to the file associated with FD. */
-
-int
-posix_fadvise (int fd, off_t offset, off_t len, int advise)
-{
-#ifdef __NR_fadvise64
- INTERNAL_SYSCALL_DECL (err);
- int ret = INTERNAL_SYSCALL (fadvise64, err, 6, fd, 0,
- __LONG_LONG_PAIR (offset >> 31, offset), len,
- advise);
- if (INTERNAL_SYSCALL_ERROR_P (ret, err))
- return INTERNAL_SYSCALL_ERRNO (ret, err);
- return 0;
-#else
- return ENOSYS;
-#endif
-}
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c
deleted file mode 100644
index c26206f80a..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (C) 2003-2016 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/>. */
-
-#include <errno.h>
-#include <fcntl.h>
-#include <sysdep.h>
-
-int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
-int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
-
-/* Advice the system about the expected behaviour of the application with
- respect to the file associated with FD. */
-
-int
-__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
-{
- INTERNAL_SYSCALL_DECL (err);
- int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advise,
- __LONG_LONG_PAIR ((long)(offset >> 32), (long)offset),
- __LONG_LONG_PAIR ((long)(len >> 32), (long)len));
- if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
- return 0;
- return INTERNAL_SYSCALL_ERRNO (ret, err);
-}
-
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
-
-int
-attribute_compat_text_section
-__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
-{
- return __posix_fadvise64_l64 (fd, offset, len, advise);
-}
-
-versioned_symbol (libc, __posix_fadvise64_l64, posix_fadvise64, GLIBC_2_3_3);
-compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2);
-#else
-strong_alias (__posix_fadvise64_l64, posix_fadvise64);
-#endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c
deleted file mode 100644
index 2d67013ab3..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- 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/>. */
-
-#include <assert.h>
-#include <errno.h>
-#include <unistd.h>
-
-#include <sysdep-cancel.h>
-#include <sys/syscall.h>
-
-ssize_t
-__libc_pread (int fd, void *buf, size_t count, off_t offset)
-{
- /* On PPC32 64bit values are aligned in odd/even register pairs. */
- return SYSCALL_CANCEL (pread, fd, buf, count, 0, offset >> 31, offset);
-}
-
-strong_alias (__libc_pread, __pread)
-weak_alias (__libc_pread, pread)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c
deleted file mode 100644
index 712ab72934..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- 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/>. */
-
-#include <errno.h>
-#include <unistd.h>
-
-#include <sysdep-cancel.h>
-#include <sys/syscall.h>
-
-
-ssize_t
-__libc_pread64 (int fd, void *buf, size_t count, off64_t offset)
-{
- /* On PPC32 64bit values are aligned in odd/even register pairs. */
- return SYSCALL_CANCEL (pread, fd, buf, count, 0, (long) (offset >> 32),
- (long) offset);
-}
-
-weak_alias (__libc_pread64, __pread64)
-weak_alias (__libc_pread64, pread64)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c
deleted file mode 100644
index 4001b47f46..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- 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/>. */
-
-#include <assert.h>
-#include <errno.h>
-#include <unistd.h>
-
-#include <sysdep-cancel.h>
-#include <sys/syscall.h>
-
-
-ssize_t
-__libc_pwrite (int fd, const void *buf, size_t count, off_t offset)
-{
- /* On PPC32 64bit values are aligned in odd/even register pairs. */
- return SYSCALL_CANCEL (pwrite, fd, buf, count, 0, offset >> 31, offset);
-}
-
-strong_alias (__libc_pwrite, __pwrite)
-weak_alias (__libc_pwrite, pwrite)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c
deleted file mode 100644
index 8a513fa2f9..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- 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/>. */
-
-#include <errno.h>
-#include <unistd.h>
-
-#include <sysdep-cancel.h>
-#include <sys/syscall.h>
-
-
-ssize_t
-__libc_pwrite64 (int fd, const void *buf, size_t count, off64_t offset)
-{
- /* On PPC32 64bit values are aligned in odd/even register pairs. */
- return SYSCALL_CANCEL (pwrite, fd, buf, count, 0, (long) (offset >> 32),
- (long) offset);
-}
-
-weak_alias (__libc_pwrite64, __pwrite64)
-libc_hidden_weak (__pwrite64)
-weak_alias (__libc_pwrite64, pwrite64)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/scandir64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/scandir64.c
deleted file mode 100644
index 506fd8877c..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/scandir64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/scandir64.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
index f4ed9a9bbf..cc84e0bc45 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
@@ -1,5 +1,5 @@
/* Jump to a new context powerpc32 common.
- Copyright (C) 2005-2016 Free Software Foundation, Inc.
+ Copyright (C) 2005-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S
index 8b7d74b415..700289b273 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S
@@ -1,5 +1,5 @@
/* Jump to a new context.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
index 1aaa656ab4..7584acef08 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
@@ -1,5 +1,5 @@
/* Save current context and jump to a new context.
- Copyright (C) 2005-2016 Free Software Foundation, Inc.
+ Copyright (C) 2005-2018 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
@@ -271,7 +271,8 @@ ENTRY(__CONTEXT_FUNC_NAME)
/* Restore ucontext (parm1) from stack. */
lwz r12,_FRAME_PARM_SAVE1(r1)
- li r4,0
+ lwz r4,_FRAME_PARM_SAVE2(r1)
+ addi r4,r4,_UC_SIGMASK
stw r3,_UC_REGS_PTR(r12)
addi r5,r12,_UC_SIGMASK
li r3,SIG_SETMASK
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S
index d97fe34c13..ec089f4c03 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S
@@ -1,5 +1,5 @@
/* Save current context and jump to a new context.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list b/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list
index 451d50884b..966856e64a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list
@@ -3,12 +3,5 @@
chown - chown i:sii __chown chown@@GLIBC_2.1
lchown - lchown i:sii __lchown lchown@@GLIBC_2.0 chown@GLIBC_2.0
-# System calls with wrappers.
-oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
-setrlimit - setrlimit i:ip __setrlimit setrlimit@GLIBC_2.0 setrlimit@@GLIBC_2.2
-
-# Due to 64bit alignment there is a dummy second parameter
-readahead - readahead i:iiiii __readahead readahead
-
prlimit64 EXTRA prlimit64 i:iipp prlimit64
fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
deleted file mode 100644
index f29f0188fc..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Cancellable system call stubs. Linux/PowerPC version.
- Copyright (C) 2003-2016 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>, 2003.
-
- 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/>. */
-
-#include <sysdep.h>
-#include <tls.h>
-#ifndef __ASSEMBLER__
-# include <nptl/pthreadP.h>
-#endif
-
-#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
-
-# undef PSEUDO
-# define PSEUDO(name, syscall_name, args) \
- .section ".text"; \
- ENTRY (name) \
- SINGLE_THREAD_P; \
- bne- .Lpseudo_cancel; \
- .type __##syscall_name##_nocancel,@function; \
- .globl __##syscall_name##_nocancel; \
- __##syscall_name##_nocancel: \
- DO_CALL (SYS_ify (syscall_name)); \
- PSEUDO_RET; \
- .size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \
- .Lpseudo_cancel: \
- stwu 1,-48(1); \
- cfi_adjust_cfa_offset (48); \
- mflr 9; \
- stw 9,52(1); \
- cfi_offset (lr, 4); \
- DOCARGS_##args; /* save syscall args around CENABLE. */ \
- CENABLE; \
- stw 3,16(1); /* store CENABLE return value (MASK). */ \
- UNDOCARGS_##args; /* restore syscall args. */ \
- DO_CALL (SYS_ify (syscall_name)); \
- mfcr 0; /* save CR/R3 around CDISABLE. */ \
- stw 3,8(1); \
- stw 0,12(1); \
- lwz 3,16(1); /* pass MASK to CDISABLE. */ \
- CDISABLE; \
- lwz 4,52(1); \
- lwz 0,12(1); /* restore CR/R3. */ \
- lwz 3,8(1); \
- mtlr 4; \
- mtcr 0; \
- addi 1,1,48;
-
-# define DOCARGS_0
-# define UNDOCARGS_0
-
-# define DOCARGS_1 stw 3,20(1); DOCARGS_0
-# define UNDOCARGS_1 lwz 3,20(1); UNDOCARGS_0
-
-# define DOCARGS_2 stw 4,24(1); DOCARGS_1
-# define UNDOCARGS_2 lwz 4,24(1); UNDOCARGS_1
-
-# define DOCARGS_3 stw 5,28(1); DOCARGS_2
-# define UNDOCARGS_3 lwz 5,28(1); UNDOCARGS_2
-
-# define DOCARGS_4 stw 6,32(1); DOCARGS_3
-# define UNDOCARGS_4 lwz 6,32(1); UNDOCARGS_3
-
-# define DOCARGS_5 stw 7,36(1); DOCARGS_4
-# define UNDOCARGS_5 lwz 7,36(1); UNDOCARGS_4
-
-# define DOCARGS_6 stw 8,40(1); DOCARGS_5
-# define UNDOCARGS_6 lwz 8,40(1); UNDOCARGS_5
-
-# if IS_IN (libpthread)
-# define CENABLE bl __pthread_enable_asynccancel@local
-# define CDISABLE bl __pthread_disable_asynccancel@local
-# elif IS_IN (libc)
-# define CENABLE bl __libc_enable_asynccancel@local
-# define CDISABLE bl __libc_disable_asynccancel@local
-# elif IS_IN (librt)
-# define CENABLE bl __librt_enable_asynccancel@local
-# define CDISABLE bl __librt_disable_asynccancel@local
-# else
-# error Unsupported library
-# endif
-
-# ifndef __ASSEMBLER__
-# define SINGLE_THREAD_P \
- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
- header.multiple_threads) == 0, 1)
-# else
-# define SINGLE_THREAD_P \
- lwz 10,MULTIPLE_THREADS_OFFSET(2); \
- cmpwi 10,0
-# endif
-
-#elif !defined __ASSEMBLER__
-
-# define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
-
-#endif
-
-#ifndef __ASSEMBLER__
-# define RTLD_SINGLE_THREAD_P \
- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
- header.multiple_threads) == 0, 1)
-#endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
index 6d8990c5de..f7277d59e1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2018 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
@@ -22,24 +22,6 @@
#include <sysdeps/unix/powerpc/sysdep.h>
#include <tls.h>
-/* Some systen calls got renamed over time, but retained the same semantics.
- Handle them here so they can be catched by both C and assembler stubs in
- glibc. */
-
-#ifdef __NR_pread64
-# ifdef __NR_pread
-# error "__NR_pread and __NR_pread64 both defined???"
-# endif
-# define __NR_pread __NR_pread64
-#endif
-
-#ifdef __NR_pwrite64
-# ifdef __NR_pwrite
-# error "__NR_pwrite and __NR_pwrite64 both defined???"
-# endif
-# define __NR_pwrite __NR_pwrite64
-#endif
-
/* For Linux we can use the system call table in the header file
/usr/include/asm/unistd.h
of the kernel. But these symbols do not follow the SYS_* syntax
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c
deleted file mode 100644
index ccfdafa74b..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (C) 1997-2016 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/>. */
-
-#include <sys/types.h>
-#include <errno.h>
-#include <unistd.h>
-
-#include <sysdep.h>
-#include <sys/syscall.h>
-
-/* Truncate the file referenced by FD to LENGTH bytes. */
-int
-truncate64 (const char *path, off64_t length)
-{
- /* On PPC32 64bit values are aligned in odd/even register pairs. */
- int result = INLINE_SYSCALL (truncate64, 4, path, 0,
- (long) (length >> 32),
- (long) length);
- return result;
-}
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 0000000000..ee0e86672d
--- /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 <dirent/versionsort64.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
index edbc7de1e6..2d096629bf 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2018 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
@@ -27,34 +27,8 @@
ENTRY (__vfork)
- /* Load the TCB-cached PID value and negates it. If It it is zero
- sets it to 0x800000. And then sets its value again on TCB field.
- See raise.c for the logic that relies on this value. */
-
- lwz r0,PID(r2)
- cmpwi cr0,r0,0
- neg r0,r0
- bne- cr0,1f
- lis r0,0x8000
-1: stw r0,PID(r2)
-
DO_CALL (SYS_ify (vfork))
- cmpwi cr1,r3,0
- beqlr- 1
-
- /* Restore the original value of the TCB cache of the PID, if we're
- the parent. But in the child (syscall return value equals zero),
- leave things as they are. */
- lwz r0,PID(r2)
- /* Cannot use clrlwi. here, because cr0 needs to be preserved
- until PSEUDO_RET. */
- clrlwi r4,r0,1
- cmpwi cr1,r4,0
- beq- cr1,1f
- neg r4,r0
-1: stw r4,PID(r2)
-
PSEUDO_RET
PSEUDO_END (__vfork)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/970/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/970/Implies
deleted file mode 100644
index 76a32ce7b5..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/970/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc64/970/fpu
-powerpc/powerpc64/970
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S
index bf84e7c46c..d4d7eb411c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/a2/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/a2/Implies
deleted file mode 100644
index 39b19e9c1f..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/a2/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc64/a2/fpu
-powerpc/powerpc64/a2
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/970/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/970/Implies
new file mode 100644
index 0000000000..1ef894bfe0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/970/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/be/970/fpu
+powerpc/powerpc64/be/970
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/a2/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/a2/Implies
new file mode 100644
index 0000000000..c8774754fc
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/a2/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/be/a2/fpu
+powerpc/powerpc64/be/a2
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/cell/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/cell/Implies
new file mode 100644
index 0000000000..0da65967a2
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/cell/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/be/cell/fpu
+powerpc/powerpc64/be/cell
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/cell/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/cell/fpu/Implies
new file mode 100644
index 0000000000..6c526bba1c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/cell/fpu/Implies
@@ -0,0 +1 @@
+powerpc/powerpc64/be/cell/fpu
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S
index 5919b88fc7..c8cb7edf77 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S
@@ -1,5 +1,5 @@
/* brk system call for Linux. PowerPC64 version.
- Copyright (C) 1995-2016 Free Software Foundation, Inc.
+ Copyright (C) 1995-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/Implies
deleted file mode 100644
index 583d4084a4..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc64/cell/fpu
-powerpc/powerpc64/cell
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/fpu/Implies
deleted file mode 100644
index b6720ecda5..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/cell/fpu
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S
index c8c6de8229..a4c8bbeac0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S
@@ -1,5 +1,5 @@
/* Wrapper around clone system call. PowerPC64 version.
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2018 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
@@ -20,9 +20,6 @@
#define _ERRNO_H 1
#include <bits/errno.h>
-#define CLONE_VM 0x00000100
-#define CLONE_THREAD 0x00010000
-
/* This is the only really unusual system call in PPC linux, but not
because of any weirdness in the system call itself; because of
all the freaky stuff we have to do to make the call useful. */
@@ -78,32 +75,17 @@ ENTRY (__clone)
crandc cr1*4+eq,cr1*4+eq,cr0*4+so
bne- cr1,L(parent) /* The '-' is to minimise the race. */
- andis. r0,r29,CLONE_THREAD>>16
- bne+ cr0,L(oldpid)
- andi. r0,r29,CLONE_VM
- li r3,-1
- bne- cr0,L(nomoregetpid)
- DO_CALL(SYS_ify(getpid))
-L(nomoregetpid):
- stw r3,TID(r13)
- stw r3,PID(r13)
-L(oldpid):
-
std r2,FRAME_TOC_SAVE(r1)
/* Call procedure. */
PPC64_LOAD_FUNCPTR r30
mr r3,r31
bctrl
ld r2,FRAME_TOC_SAVE(r1)
- /* Call _exit with result from procedure. */
-#ifdef SHARED
- b JUMPTARGET(__GI__exit)
-#else
- b JUMPTARGET(_exit)
+
+ DO_CALL(SYS_ify(exit))
/* We won't ever get here but provide a nop so that the linker
will insert a toc adjusting stub if necessary. */
nop
-#endif
L(badargs):
cfi_startproc
@@ -126,4 +108,5 @@ L(parent):
END (__clone)
+libc_hidden_def (__clone)
weak_alias (__clone, clone)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
index af069700e9..ae7f254da4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
@@ -4,8 +4,8 @@
test -n "$libc_cv_slibdir" ||
case "$prefix" in
/usr | /usr/)
- libc_cv_slibdir=/lib64
- libc_cv_rtlddir=/lib64
+ libc_cv_slibdir='/lib64'
+ libc_cv_rtlddir='/lib64'
if test "$libdir" = '${exec_prefix}/lib'; then
libdir='${exec_prefix}/lib64';
# Locale data can be shared between 32-bit and 64-bit libraries.
@@ -207,3 +207,27 @@ $as_echo "$libc_cv_ppc64_def_call_elf" >&6; }
libc_extra_cppflags="$libc_extra_cppflags -D_CALL_ELF=1"
fi
fi
+# Set minimum kernel version for ppc64le.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the machine type to set minimum kernel version" >&5
+$as_echo_n "checking the machine type to set minimum kernel version... " >&6; }
+if ${libc_cv_ppc64_le+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+ yes
+ #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then :
+ arch_minimum_kernel=3.10.0
+else
+ libc_cv_ppc64_le=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc64_le" >&5
+$as_echo "$libc_cv_ppc64_le" >&6; }
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
index 0822915c43..f9cba6e15d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
@@ -27,3 +27,10 @@ else
libc_extra_cppflags="$libc_extra_cppflags -D_CALL_ELF=1"
fi
fi
+# Set minimum kernel version for ppc64le.
+AC_CACHE_CHECK([the machine type to set minimum kernel version],
+ [libc_cv_ppc64_le],
+ [AC_EGREP_CPP(yes,[#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+ yes
+ #endif
+ ], arch_minimum_kernel=3.10.0, libc_cv_ppc64_le=no)])
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/dl-cache.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/dl-cache.h
index ec69399bab..78dac07783 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/dl-cache.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/dl-cache.h
@@ -1,5 +1,5 @@
/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c
deleted file mode 100644
index 0167c8fbd2..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Copyright (C) 2000-2016 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/>. */
-
-#include <assert.h>
-#include <errno.h>
-#include <sysdep-cancel.h> /* Must come before <fcntl.h>. */
-#include <fcntl.h>
-#include <stdarg.h>
-
-#include <sys/syscall.h>
-
-
-#ifndef NO_CANCELLATION
-int
-__fcntl_nocancel (int fd, int cmd, ...)
-{
- va_list ap;
- void *arg;
-
- va_start (ap, cmd);
- arg = va_arg (ap, void *);
- va_end (ap);
-
- return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
-}
-#endif
-
-
-int
-__libc_fcntl (int fd, int cmd, ...)
-{
- va_list ap;
- void *arg;
-
- va_start (ap, cmd);
- arg = va_arg (ap, void *);
- va_end (ap);
-
- if (cmd >= F_GETLK64 && cmd <= F_SETLKW64)
- cmd -= F_GETLK64 - F_GETLK;
-
- if (cmd != F_SETLKW)
- return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
-
- return SYSCALL_CANCEL (fcntl, fd, cmd, arg);
-}
-libc_hidden_def (__libc_fcntl)
-
-weak_alias (__libc_fcntl, __fcntl)
-libc_hidden_weak (__fcntl)
-weak_alias (__libc_fcntl, fcntl)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c
index 8e20cd55d0..31564bee6c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c
@@ -1,5 +1,5 @@
/* Procedure definition for FE_MASK_ENV for Linux/ppc64.
- Copyright (C) 2007-2016 Free Software Foundation, Inc.
+ Copyright (C) 2007-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c
index 14ace1b2b8..486ef84386 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c
@@ -1,5 +1,5 @@
/* Procedure definition for FE_NOMASK_ENV for Linux/ppc64.
- Copyright (C) 2003-2016 Free Software Foundation, Inc.
+ Copyright (C) 2003-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
index 7fb2b1608b..3378e629be 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
@@ -1,5 +1,5 @@
/* Save current context.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/jmp_buf-macros.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/jmp_buf-macros.h
new file mode 100644
index 0000000000..d3e0d4e146
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/jmp_buf-macros.h
@@ -0,0 +1,6 @@
+#define JMP_BUF_SIZE 656
+#define SIGJMP_BUF_SIZE 656
+#define JMP_BUF_ALIGN 16
+#define SIGJMP_BUF_ALIGN 16
+#define MASK_WAS_SAVED_OFFSET 512
+#define SAVED_MASK_OFFSET 520
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h
index fce8fbab91..2f7f7e8a8a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h
@@ -1,5 +1,5 @@
/* Definition of `struct stat' used in the kernel.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
@@ -18,3 +18,4 @@
#define STAT_IS_KERNEL_STAT 1
#define XSTAT_IS_XSTAT64 1
+#define STATFS_IS_STATFS64 0
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ld-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ld-le.abilist
index 27d451b46b..37c8f6684b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ld-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ld-le.abilist
@@ -1,5 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
-GLIBC_2.17 __libc_memalign F
GLIBC_2.17 __libc_stack_end D 0x8
GLIBC_2.17 __tls_get_addr F
GLIBC_2.17 _dl_mcount F
@@ -8,7 +6,5 @@ GLIBC_2.17 calloc F
GLIBC_2.17 free F
GLIBC_2.17 malloc F
GLIBC_2.17 realloc F
-GLIBC_2.22 GLIBC_2.22 A
GLIBC_2.22 __tls_get_addr_opt F
-GLIBC_2.23 GLIBC_2.23 A
GLIBC_2.23 __parse_hwcap_and_convert_at_platform F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ld.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ld.abilist
index 8914eb06b4..edfc9ca56f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ld.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ld.abilist
@@ -1,9 +1,5 @@
-GLIBC_2.22 GLIBC_2.22 A
GLIBC_2.22 __tls_get_addr_opt F
-GLIBC_2.23 GLIBC_2.23 A
GLIBC_2.23 __parse_hwcap_and_convert_at_platform F
-GLIBC_2.3 GLIBC_2.3 A
-GLIBC_2.3 __libc_memalign F
GLIBC_2.3 __libc_stack_end D 0x8
GLIBC_2.3 __tls_get_addr F
GLIBC_2.3 _dl_mcount F
@@ -12,4 +8,3 @@ GLIBC_2.3 calloc F
GLIBC_2.3 free F
GLIBC_2.3 malloc F
GLIBC_2.3 realloc F
-GLIBC_2.4 GLIBC_2.4 A
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h
index 7c079e2cd8..65c594cc29 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h
@@ -1,5 +1,5 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 2005-2016 Free Software Foundation, Inc.
+ Copyright (C) 2005-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/Implies
new file mode 100644
index 0000000000..4eacd3ae86
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/Implies
@@ -0,0 +1 @@
+unix/sysv/linux/powerpc/powerpc64
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h
new file mode 100644
index 0000000000..6b954cc673
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/float128-abi.h
@@ -0,0 +1,2 @@
+/* ABI version for _Float128 ABI introduction. */
+#define FLOAT128_VERSION GLIBC_2.26
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/fpu/Implies
new file mode 100644
index 0000000000..5da96db05b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/fpu/Implies
@@ -0,0 +1 @@
+unix/sysv/linux/powerpc/powerpc64/fpu
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale-le.abilist
index 5e54974368..0829ddef6d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale-le.abilist
@@ -1,2 +1 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 __ctype_get_mb_cur_max F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale.abilist
index 40f6e08b75..fb7dfa4c1d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale.abilist
@@ -1,2 +1 @@
-GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 __ctype_get_mb_cur_max F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl-le.abilist
index 21330fc8d5..9492cd5290 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl-le.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 gai_cancel F
GLIBC_2.17 gai_error F
GLIBC_2.17 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl.abilist
index 9036592d30..975593b41f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 gai_cancel F
GLIBC_2.3 gai_error F
GLIBC_2.3 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
index a97bd43b8f..e26930e728 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 _Exit F
GLIBC_2.17 _IO_2_1_stderr_ D 0xe0
GLIBC_2.17 _IO_2_1_stdin_ D 0xe0
@@ -2165,13 +2164,67 @@ GLIBC_2.17 xdrstdio_create F
GLIBC_2.17 xencrypt F
GLIBC_2.17 xprt_register F
GLIBC_2.17 xprt_unregister F
-GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 __cxa_thread_atexit_impl F
-GLIBC_2.22 GLIBC_2.22 A
GLIBC_2.22 fmemopen F
-GLIBC_2.23 GLIBC_2.23 A
GLIBC_2.23 fts64_children F
GLIBC_2.23 fts64_close F
GLIBC_2.23 fts64_open F
GLIBC_2.23 fts64_read F
GLIBC_2.23 fts64_set F
+GLIBC_2.24 quick_exit F
+GLIBC_2.25 __explicit_bzero_chk F
+GLIBC_2.25 explicit_bzero F
+GLIBC_2.25 getentropy F
+GLIBC_2.25 getrandom F
+GLIBC_2.25 strfromd F
+GLIBC_2.25 strfromf F
+GLIBC_2.25 strfroml F
+GLIBC_2.26 __strtof128_internal F
+GLIBC_2.26 __wcstof128_internal F
+GLIBC_2.26 preadv2 F
+GLIBC_2.26 preadv64v2 F
+GLIBC_2.26 pwritev2 F
+GLIBC_2.26 pwritev64v2 F
+GLIBC_2.26 reallocarray F
+GLIBC_2.26 strfromf128 F
+GLIBC_2.26 strtof128 F
+GLIBC_2.26 strtof128_l F
+GLIBC_2.26 wcstof128 F
+GLIBC_2.26 wcstof128_l F
+GLIBC_2.27 copy_file_range F
+GLIBC_2.27 glob F
+GLIBC_2.27 glob64 F
+GLIBC_2.27 memfd_create F
+GLIBC_2.27 mlock2 F
+GLIBC_2.27 pkey_alloc F
+GLIBC_2.27 pkey_free F
+GLIBC_2.27 pkey_get F
+GLIBC_2.27 pkey_mprotect F
+GLIBC_2.27 pkey_set F
+GLIBC_2.27 strfromf32 F
+GLIBC_2.27 strfromf32x F
+GLIBC_2.27 strfromf64 F
+GLIBC_2.27 strfromf64x F
+GLIBC_2.27 strtof32 F
+GLIBC_2.27 strtof32_l F
+GLIBC_2.27 strtof32x F
+GLIBC_2.27 strtof32x_l F
+GLIBC_2.27 strtof64 F
+GLIBC_2.27 strtof64_l F
+GLIBC_2.27 strtof64x F
+GLIBC_2.27 strtof64x_l F
+GLIBC_2.27 wcstof32 F
+GLIBC_2.27 wcstof32_l F
+GLIBC_2.27 wcstof32x F
+GLIBC_2.27 wcstof32x_l F
+GLIBC_2.27 wcstof64 F
+GLIBC_2.27 wcstof64_l F
+GLIBC_2.27 wcstof64x F
+GLIBC_2.27 wcstof64x_l F
+GLIBC_2.28 fcntl64 F
+GLIBC_2.28 renameat2 F
+GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
index 00772cb630..8c1781adf4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.10 GLIBC_2.10 A
GLIBC_2.10 __cxa_at_quick_exit F
GLIBC_2.10 __posix_getopt F
GLIBC_2.10 accept4 F
@@ -25,33 +24,28 @@ GLIBC_2.10 register_printf_type F
GLIBC_2.10 setsgent F
GLIBC_2.10 sgetsgent F
GLIBC_2.10 sgetsgent_r F
-GLIBC_2.11 GLIBC_2.11 A
GLIBC_2.11 __longjmp_chk F
GLIBC_2.11 execvpe F
GLIBC_2.11 mkostemps F
GLIBC_2.11 mkostemps64 F
GLIBC_2.11 mkstemps F
GLIBC_2.11 mkstemps64 F
-GLIBC_2.12 GLIBC_2.12 A
GLIBC_2.12 _sys_errlist D 0x438
GLIBC_2.12 _sys_nerr D 0x4
GLIBC_2.12 ntp_gettimex F
GLIBC_2.12 recvmmsg F
GLIBC_2.12 sys_errlist D 0x438
GLIBC_2.12 sys_nerr D 0x4
-GLIBC_2.13 GLIBC_2.13 A
GLIBC_2.13 fanotify_init F
GLIBC_2.13 fanotify_mark F
GLIBC_2.13 prlimit F
GLIBC_2.13 prlimit64 F
-GLIBC_2.14 GLIBC_2.14 A
GLIBC_2.14 clock_adjtime F
GLIBC_2.14 name_to_handle_at F
GLIBC_2.14 open_by_handle_at F
GLIBC_2.14 sendmmsg F
GLIBC_2.14 setns F
GLIBC_2.14 syncfs F
-GLIBC_2.15 GLIBC_2.15 A
GLIBC_2.15 __fdelt_chk F
GLIBC_2.15 __fdelt_warn F
GLIBC_2.15 posix_spawn F
@@ -60,7 +54,6 @@ GLIBC_2.15 process_vm_readv F
GLIBC_2.15 process_vm_writev F
GLIBC_2.15 scandirat F
GLIBC_2.15 scandirat64 F
-GLIBC_2.16 GLIBC_2.16 A
GLIBC_2.16 __getauxval F
GLIBC_2.16 __poll_chk F
GLIBC_2.16 __ppoll_chk F
@@ -71,7 +64,6 @@ GLIBC_2.16 getauxval F
GLIBC_2.16 mbrtoc16 F
GLIBC_2.16 mbrtoc32 F
GLIBC_2.16 timespec_get F
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 __ppc_get_timebase_freq F
GLIBC_2.17 clock_getcpuclockid F
GLIBC_2.17 clock_getres F
@@ -79,17 +71,58 @@ GLIBC_2.17 clock_gettime F
GLIBC_2.17 clock_nanosleep F
GLIBC_2.17 clock_settime F
GLIBC_2.17 secure_getenv F
-GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 __cxa_thread_atexit_impl F
-GLIBC_2.22 GLIBC_2.22 A
GLIBC_2.22 fmemopen F
-GLIBC_2.23 GLIBC_2.23 A
GLIBC_2.23 fts64_children F
GLIBC_2.23 fts64_close F
GLIBC_2.23 fts64_open F
GLIBC_2.23 fts64_read F
GLIBC_2.23 fts64_set F
-GLIBC_2.3 GLIBC_2.3 A
+GLIBC_2.24 quick_exit F
+GLIBC_2.25 __explicit_bzero_chk F
+GLIBC_2.25 explicit_bzero F
+GLIBC_2.25 getentropy F
+GLIBC_2.25 getrandom F
+GLIBC_2.25 strfromd F
+GLIBC_2.25 strfromf F
+GLIBC_2.25 strfroml F
+GLIBC_2.26 preadv2 F
+GLIBC_2.26 preadv64v2 F
+GLIBC_2.26 pwritev2 F
+GLIBC_2.26 pwritev64v2 F
+GLIBC_2.26 reallocarray F
+GLIBC_2.27 copy_file_range F
+GLIBC_2.27 glob F
+GLIBC_2.27 glob64 F
+GLIBC_2.27 memfd_create F
+GLIBC_2.27 mlock2 F
+GLIBC_2.27 pkey_alloc F
+GLIBC_2.27 pkey_free F
+GLIBC_2.27 pkey_get F
+GLIBC_2.27 pkey_mprotect F
+GLIBC_2.27 pkey_set F
+GLIBC_2.27 strfromf32 F
+GLIBC_2.27 strfromf32x F
+GLIBC_2.27 strfromf64 F
+GLIBC_2.27 strtof32 F
+GLIBC_2.27 strtof32_l F
+GLIBC_2.27 strtof32x F
+GLIBC_2.27 strtof32x_l F
+GLIBC_2.27 strtof64 F
+GLIBC_2.27 strtof64_l F
+GLIBC_2.27 wcstof32 F
+GLIBC_2.27 wcstof32_l F
+GLIBC_2.27 wcstof32x F
+GLIBC_2.27 wcstof32x_l F
+GLIBC_2.27 wcstof64 F
+GLIBC_2.27 wcstof64_l F
+GLIBC_2.28 fcntl64 F
+GLIBC_2.28 renameat2 F
+GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F
GLIBC_2.3 _Exit F
GLIBC_2.3 _IO_2_1_stderr_ D 0xe0
GLIBC_2.3 _IO_2_1_stdin_ D 0xe0
@@ -1921,7 +1954,6 @@ GLIBC_2.3 xdrstdio_create F
GLIBC_2.3 xencrypt F
GLIBC_2.3 xprt_register F
GLIBC_2.3 xprt_unregister F
-GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 __register_atfork F
GLIBC_2.3.2 epoll_create F
GLIBC_2.3.2 epoll_ctl F
@@ -1934,7 +1966,6 @@ GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
GLIBC_2.3.2 strptime_l F
-GLIBC_2.3.3 GLIBC_2.3.3 A
GLIBC_2.3.3 _sys_siglist D 0x208
GLIBC_2.3.3 gnu_dev_major F
GLIBC_2.3.3 gnu_dev_makedev F
@@ -1955,7 +1986,6 @@ GLIBC_2.3.3 strtoll_l F
GLIBC_2.3.3 strtoull_l F
GLIBC_2.3.3 sys_sigabbrev D 0x208
GLIBC_2.3.3 sys_siglist D 0x208
-GLIBC_2.3.4 GLIBC_2.3.4 A
GLIBC_2.3.4 __chk_fail F
GLIBC_2.3.4 __fprintf_chk F
GLIBC_2.3.4 __gets_chk F
@@ -1994,7 +2024,6 @@ GLIBC_2.3.4 siglongjmp F
GLIBC_2.3.4 swapcontext F
GLIBC_2.3.4 xdr_quad_t F
GLIBC_2.3.4 xdr_u_quad_t F
-GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2222,7 +2251,6 @@ GLIBC_2.4 wcstold F
GLIBC_2.4 wcstold_l F
GLIBC_2.4 wprintf F
GLIBC_2.4 wscanf F
-GLIBC_2.5 GLIBC_2.5 A
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
@@ -2240,7 +2268,6 @@ GLIBC_2.5 inet6_rth_space F
GLIBC_2.5 splice F
GLIBC_2.5 tee F
GLIBC_2.5 vmsplice F
-GLIBC_2.6 GLIBC_2.6 A
GLIBC_2.6 __sched_cpucount F
GLIBC_2.6 epoll_pwait F
GLIBC_2.6 futimens F
@@ -2248,7 +2275,6 @@ GLIBC_2.6 sched_getcpu F
GLIBC_2.6 strerror_l F
GLIBC_2.6 sync_file_range F
GLIBC_2.6 utimensat F
-GLIBC_2.7 GLIBC_2.7 A
GLIBC_2.7 __fread_chk F
GLIBC_2.7 __fread_unlocked_chk F
GLIBC_2.7 __isoc99_fscanf F
@@ -2287,7 +2313,6 @@ GLIBC_2.7 eventfd_write F
GLIBC_2.7 mkostemp F
GLIBC_2.7 mkostemp64 F
GLIBC_2.7 signalfd F
-GLIBC_2.8 GLIBC_2.8 A
GLIBC_2.8 __asprintf_chk F
GLIBC_2.8 __dprintf_chk F
GLIBC_2.8 __nldbl___asprintf_chk F
@@ -2304,7 +2329,6 @@ GLIBC_2.8 qsort_r F
GLIBC_2.8 timerfd_create F
GLIBC_2.8 timerfd_gettime F
GLIBC_2.8 timerfd_settime F
-GLIBC_2.9 GLIBC_2.9 A
GLIBC_2.9 dup3 F
GLIBC_2.9 epoll_create1 F
GLIBC_2.9 inotify_init1 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt-le.abilist
index 58944b3d83..4082747aa3 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt-le.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 crypt F
GLIBC_2.17 crypt_r F
GLIBC_2.17 encrypt F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt.abilist
index 52cf1ac766..069212877a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 crypt F
GLIBC_2.3 crypt_r F
GLIBC_2.3 encrypt F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl-le.abilist
index 1b4b1f77ed..36340d5dd8 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl-le.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 dladdr F
GLIBC_2.17 dladdr1 F
GLIBC_2.17 dlclose F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl.abilist
index 764ddc1c19..5b472f45aa 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl.abilist
@@ -1,12 +1,9 @@
-GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 dladdr F
GLIBC_2.3 dlclose F
GLIBC_2.3 dlerror F
GLIBC_2.3 dlopen F
GLIBC_2.3 dlsym F
GLIBC_2.3 dlvsym F
-GLIBC_2.3.3 GLIBC_2.3.3 A
GLIBC_2.3.3 dladdr1 F
GLIBC_2.3.3 dlinfo F
-GLIBC_2.3.4 GLIBC_2.3.4 A
GLIBC_2.3.4 dlmopen F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist
index ee066837af..1e1f2b8d6e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 _LIB_VERSION D 0x4
GLIBC_2.17 __acos_finite F
GLIBC_2.17 __acosf_finite F
@@ -399,12 +398,681 @@ GLIBC_2.17 y1l F
GLIBC_2.17 yn F
GLIBC_2.17 ynf F
GLIBC_2.17 ynl F
-GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 __issignaling F
GLIBC_2.18 __issignalingf F
GLIBC_2.18 __issignalingl F
-GLIBC_2.23 GLIBC_2.23 A
GLIBC_2.23 __signgam D 0x4
GLIBC_2.23 lgamma F
GLIBC_2.23 lgammaf F
GLIBC_2.23 lgammal F
+GLIBC_2.24 nextdown F
+GLIBC_2.24 nextdownf F
+GLIBC_2.24 nextdownl F
+GLIBC_2.24 nextup F
+GLIBC_2.24 nextupf F
+GLIBC_2.24 nextupl F
+GLIBC_2.25 __fe_dfl_mode D 0x8
+GLIBC_2.25 __iscanonicall F
+GLIBC_2.25 __iseqsig F
+GLIBC_2.25 __iseqsigf F
+GLIBC_2.25 __iseqsigl F
+GLIBC_2.25 canonicalize F
+GLIBC_2.25 canonicalizef F
+GLIBC_2.25 canonicalizel F
+GLIBC_2.25 fegetmode F
+GLIBC_2.25 fesetexcept F
+GLIBC_2.25 fesetmode F
+GLIBC_2.25 fetestexceptflag F
+GLIBC_2.25 fmaxmag F
+GLIBC_2.25 fmaxmagf F
+GLIBC_2.25 fmaxmagl F
+GLIBC_2.25 fminmag F
+GLIBC_2.25 fminmagf F
+GLIBC_2.25 fminmagl F
+GLIBC_2.25 fromfp F
+GLIBC_2.25 fromfpf F
+GLIBC_2.25 fromfpl F
+GLIBC_2.25 fromfpx F
+GLIBC_2.25 fromfpxf F
+GLIBC_2.25 fromfpxl F
+GLIBC_2.25 getpayload F
+GLIBC_2.25 getpayloadf F
+GLIBC_2.25 getpayloadl F
+GLIBC_2.25 llogb F
+GLIBC_2.25 llogbf F
+GLIBC_2.25 llogbl F
+GLIBC_2.25 roundeven F
+GLIBC_2.25 roundevenf F
+GLIBC_2.25 roundevenl F
+GLIBC_2.25 setpayload F
+GLIBC_2.25 setpayloadf F
+GLIBC_2.25 setpayloadl F
+GLIBC_2.25 setpayloadsig F
+GLIBC_2.25 setpayloadsigf F
+GLIBC_2.25 setpayloadsigl F
+GLIBC_2.25 totalorder F
+GLIBC_2.25 totalorderf F
+GLIBC_2.25 totalorderl F
+GLIBC_2.25 totalordermag F
+GLIBC_2.25 totalordermagf F
+GLIBC_2.25 totalordermagl F
+GLIBC_2.25 ufromfp F
+GLIBC_2.25 ufromfpf F
+GLIBC_2.25 ufromfpl F
+GLIBC_2.25 ufromfpx F
+GLIBC_2.25 ufromfpxf F
+GLIBC_2.25 ufromfpxl F
+GLIBC_2.26 __acosf128_finite F
+GLIBC_2.26 __acoshf128_finite F
+GLIBC_2.26 __asinf128_finite F
+GLIBC_2.26 __atan2f128_finite F
+GLIBC_2.26 __atanhf128_finite F
+GLIBC_2.26 __coshf128_finite F
+GLIBC_2.26 __exp10f128_finite F
+GLIBC_2.26 __exp2f128_finite F
+GLIBC_2.26 __expf128_finite F
+GLIBC_2.26 __finitef128 F
+GLIBC_2.26 __fmodf128_finite F
+GLIBC_2.26 __fpclassifyf128 F
+GLIBC_2.26 __gammaf128_r_finite F
+GLIBC_2.26 __hypotf128_finite F
+GLIBC_2.26 __iseqsigf128 F
+GLIBC_2.26 __isinff128 F
+GLIBC_2.26 __isnanf128 F
+GLIBC_2.26 __issignalingf128 F
+GLIBC_2.26 __j0f128_finite F
+GLIBC_2.26 __j1f128_finite F
+GLIBC_2.26 __jnf128_finite F
+GLIBC_2.26 __lgammaf128_r_finite F
+GLIBC_2.26 __log10f128_finite F
+GLIBC_2.26 __log2f128_finite F
+GLIBC_2.26 __logf128_finite F
+GLIBC_2.26 __powf128_finite F
+GLIBC_2.26 __remainderf128_finite F
+GLIBC_2.26 __signbitf128 F
+GLIBC_2.26 __sinhf128_finite F
+GLIBC_2.26 __sqrtf128_finite F
+GLIBC_2.26 __y0f128_finite F
+GLIBC_2.26 __y1f128_finite F
+GLIBC_2.26 __ynf128_finite F
+GLIBC_2.26 acosf128 F
+GLIBC_2.26 acoshf128 F
+GLIBC_2.26 asinf128 F
+GLIBC_2.26 asinhf128 F
+GLIBC_2.26 atan2f128 F
+GLIBC_2.26 atanf128 F
+GLIBC_2.26 atanhf128 F
+GLIBC_2.26 cabsf128 F
+GLIBC_2.26 cacosf128 F
+GLIBC_2.26 cacoshf128 F
+GLIBC_2.26 canonicalizef128 F
+GLIBC_2.26 cargf128 F
+GLIBC_2.26 casinf128 F
+GLIBC_2.26 casinhf128 F
+GLIBC_2.26 catanf128 F
+GLIBC_2.26 catanhf128 F
+GLIBC_2.26 cbrtf128 F
+GLIBC_2.26 ccosf128 F
+GLIBC_2.26 ccoshf128 F
+GLIBC_2.26 ceilf128 F
+GLIBC_2.26 cexpf128 F
+GLIBC_2.26 cimagf128 F
+GLIBC_2.26 clog10f128 F
+GLIBC_2.26 clogf128 F
+GLIBC_2.26 conjf128 F
+GLIBC_2.26 copysignf128 F
+GLIBC_2.26 cosf128 F
+GLIBC_2.26 coshf128 F
+GLIBC_2.26 cpowf128 F
+GLIBC_2.26 cprojf128 F
+GLIBC_2.26 crealf128 F
+GLIBC_2.26 csinf128 F
+GLIBC_2.26 csinhf128 F
+GLIBC_2.26 csqrtf128 F
+GLIBC_2.26 ctanf128 F
+GLIBC_2.26 ctanhf128 F
+GLIBC_2.26 erfcf128 F
+GLIBC_2.26 erff128 F
+GLIBC_2.26 exp10f128 F
+GLIBC_2.26 exp2f128 F
+GLIBC_2.26 expf128 F
+GLIBC_2.26 expm1f128 F
+GLIBC_2.26 fabsf128 F
+GLIBC_2.26 fdimf128 F
+GLIBC_2.26 floorf128 F
+GLIBC_2.26 fmaf128 F
+GLIBC_2.26 fmaxf128 F
+GLIBC_2.26 fmaxmagf128 F
+GLIBC_2.26 fminf128 F
+GLIBC_2.26 fminmagf128 F
+GLIBC_2.26 fmodf128 F
+GLIBC_2.26 frexpf128 F
+GLIBC_2.26 fromfpf128 F
+GLIBC_2.26 fromfpxf128 F
+GLIBC_2.26 getpayloadf128 F
+GLIBC_2.26 hypotf128 F
+GLIBC_2.26 ilogbf128 F
+GLIBC_2.26 j0f128 F
+GLIBC_2.26 j1f128 F
+GLIBC_2.26 jnf128 F
+GLIBC_2.26 ldexpf128 F
+GLIBC_2.26 lgammaf128 F
+GLIBC_2.26 lgammaf128_r F
+GLIBC_2.26 llogbf128 F
+GLIBC_2.26 llrintf128 F
+GLIBC_2.26 llroundf128 F
+GLIBC_2.26 log10f128 F
+GLIBC_2.26 log1pf128 F
+GLIBC_2.26 log2f128 F
+GLIBC_2.26 logbf128 F
+GLIBC_2.26 logf128 F
+GLIBC_2.26 lrintf128 F
+GLIBC_2.26 lroundf128 F
+GLIBC_2.26 modff128 F
+GLIBC_2.26 nanf128 F
+GLIBC_2.26 nearbyintf128 F
+GLIBC_2.26 nextafterf128 F
+GLIBC_2.26 nextdownf128 F
+GLIBC_2.26 nextupf128 F
+GLIBC_2.26 powf128 F
+GLIBC_2.26 remainderf128 F
+GLIBC_2.26 remquof128 F
+GLIBC_2.26 rintf128 F
+GLIBC_2.26 roundevenf128 F
+GLIBC_2.26 roundf128 F
+GLIBC_2.26 scalblnf128 F
+GLIBC_2.26 scalbnf128 F
+GLIBC_2.26 setpayloadf128 F
+GLIBC_2.26 setpayloadsigf128 F
+GLIBC_2.26 sincosf128 F
+GLIBC_2.26 sinf128 F
+GLIBC_2.26 sinhf128 F
+GLIBC_2.26 sqrtf128 F
+GLIBC_2.26 tanf128 F
+GLIBC_2.26 tanhf128 F
+GLIBC_2.26 tgammaf128 F
+GLIBC_2.26 totalorderf128 F
+GLIBC_2.26 totalordermagf128 F
+GLIBC_2.26 truncf128 F
+GLIBC_2.26 ufromfpf128 F
+GLIBC_2.26 ufromfpxf128 F
+GLIBC_2.26 y0f128 F
+GLIBC_2.26 y1f128 F
+GLIBC_2.26 ynf128 F
+GLIBC_2.27 acosf32 F
+GLIBC_2.27 acosf32x F
+GLIBC_2.27 acosf64 F
+GLIBC_2.27 acosf64x F
+GLIBC_2.27 acoshf32 F
+GLIBC_2.27 acoshf32x F
+GLIBC_2.27 acoshf64 F
+GLIBC_2.27 acoshf64x F
+GLIBC_2.27 asinf32 F
+GLIBC_2.27 asinf32x F
+GLIBC_2.27 asinf64 F
+GLIBC_2.27 asinf64x F
+GLIBC_2.27 asinhf32 F
+GLIBC_2.27 asinhf32x F
+GLIBC_2.27 asinhf64 F
+GLIBC_2.27 asinhf64x F
+GLIBC_2.27 atan2f32 F
+GLIBC_2.27 atan2f32x F
+GLIBC_2.27 atan2f64 F
+GLIBC_2.27 atan2f64x F
+GLIBC_2.27 atanf32 F
+GLIBC_2.27 atanf32x F
+GLIBC_2.27 atanf64 F
+GLIBC_2.27 atanf64x F
+GLIBC_2.27 atanhf32 F
+GLIBC_2.27 atanhf32x F
+GLIBC_2.27 atanhf64 F
+GLIBC_2.27 atanhf64x F
+GLIBC_2.27 cabsf32 F
+GLIBC_2.27 cabsf32x F
+GLIBC_2.27 cabsf64 F
+GLIBC_2.27 cabsf64x F
+GLIBC_2.27 cacosf32 F
+GLIBC_2.27 cacosf32x F
+GLIBC_2.27 cacosf64 F
+GLIBC_2.27 cacosf64x F
+GLIBC_2.27 cacoshf32 F
+GLIBC_2.27 cacoshf32x F
+GLIBC_2.27 cacoshf64 F
+GLIBC_2.27 cacoshf64x F
+GLIBC_2.27 canonicalizef32 F
+GLIBC_2.27 canonicalizef32x F
+GLIBC_2.27 canonicalizef64 F
+GLIBC_2.27 canonicalizef64x F
+GLIBC_2.27 cargf32 F
+GLIBC_2.27 cargf32x F
+GLIBC_2.27 cargf64 F
+GLIBC_2.27 cargf64x F
+GLIBC_2.27 casinf32 F
+GLIBC_2.27 casinf32x F
+GLIBC_2.27 casinf64 F
+GLIBC_2.27 casinf64x F
+GLIBC_2.27 casinhf32 F
+GLIBC_2.27 casinhf32x F
+GLIBC_2.27 casinhf64 F
+GLIBC_2.27 casinhf64x F
+GLIBC_2.27 catanf32 F
+GLIBC_2.27 catanf32x F
+GLIBC_2.27 catanf64 F
+GLIBC_2.27 catanf64x F
+GLIBC_2.27 catanhf32 F
+GLIBC_2.27 catanhf32x F
+GLIBC_2.27 catanhf64 F
+GLIBC_2.27 catanhf64x F
+GLIBC_2.27 cbrtf32 F
+GLIBC_2.27 cbrtf32x F
+GLIBC_2.27 cbrtf64 F
+GLIBC_2.27 cbrtf64x F
+GLIBC_2.27 ccosf32 F
+GLIBC_2.27 ccosf32x F
+GLIBC_2.27 ccosf64 F
+GLIBC_2.27 ccosf64x F
+GLIBC_2.27 ccoshf32 F
+GLIBC_2.27 ccoshf32x F
+GLIBC_2.27 ccoshf64 F
+GLIBC_2.27 ccoshf64x F
+GLIBC_2.27 ceilf32 F
+GLIBC_2.27 ceilf32x F
+GLIBC_2.27 ceilf64 F
+GLIBC_2.27 ceilf64x F
+GLIBC_2.27 cexpf32 F
+GLIBC_2.27 cexpf32x F
+GLIBC_2.27 cexpf64 F
+GLIBC_2.27 cexpf64x F
+GLIBC_2.27 cimagf32 F
+GLIBC_2.27 cimagf32x F
+GLIBC_2.27 cimagf64 F
+GLIBC_2.27 cimagf64x F
+GLIBC_2.27 clog10f32 F
+GLIBC_2.27 clog10f32x F
+GLIBC_2.27 clog10f64 F
+GLIBC_2.27 clog10f64x F
+GLIBC_2.27 clogf32 F
+GLIBC_2.27 clogf32x F
+GLIBC_2.27 clogf64 F
+GLIBC_2.27 clogf64x F
+GLIBC_2.27 conjf32 F
+GLIBC_2.27 conjf32x F
+GLIBC_2.27 conjf64 F
+GLIBC_2.27 conjf64x F
+GLIBC_2.27 copysignf32 F
+GLIBC_2.27 copysignf32x F
+GLIBC_2.27 copysignf64 F
+GLIBC_2.27 copysignf64x F
+GLIBC_2.27 cosf32 F
+GLIBC_2.27 cosf32x F
+GLIBC_2.27 cosf64 F
+GLIBC_2.27 cosf64x F
+GLIBC_2.27 coshf32 F
+GLIBC_2.27 coshf32x F
+GLIBC_2.27 coshf64 F
+GLIBC_2.27 coshf64x F
+GLIBC_2.27 cpowf32 F
+GLIBC_2.27 cpowf32x F
+GLIBC_2.27 cpowf64 F
+GLIBC_2.27 cpowf64x F
+GLIBC_2.27 cprojf32 F
+GLIBC_2.27 cprojf32x F
+GLIBC_2.27 cprojf64 F
+GLIBC_2.27 cprojf64x F
+GLIBC_2.27 crealf32 F
+GLIBC_2.27 crealf32x F
+GLIBC_2.27 crealf64 F
+GLIBC_2.27 crealf64x F
+GLIBC_2.27 csinf32 F
+GLIBC_2.27 csinf32x F
+GLIBC_2.27 csinf64 F
+GLIBC_2.27 csinf64x F
+GLIBC_2.27 csinhf32 F
+GLIBC_2.27 csinhf32x F
+GLIBC_2.27 csinhf64 F
+GLIBC_2.27 csinhf64x F
+GLIBC_2.27 csqrtf32 F
+GLIBC_2.27 csqrtf32x F
+GLIBC_2.27 csqrtf64 F
+GLIBC_2.27 csqrtf64x F
+GLIBC_2.27 ctanf32 F
+GLIBC_2.27 ctanf32x F
+GLIBC_2.27 ctanf64 F
+GLIBC_2.27 ctanf64x F
+GLIBC_2.27 ctanhf32 F
+GLIBC_2.27 ctanhf32x F
+GLIBC_2.27 ctanhf64 F
+GLIBC_2.27 ctanhf64x F
+GLIBC_2.27 erfcf32 F
+GLIBC_2.27 erfcf32x F
+GLIBC_2.27 erfcf64 F
+GLIBC_2.27 erfcf64x F
+GLIBC_2.27 erff32 F
+GLIBC_2.27 erff32x F
+GLIBC_2.27 erff64 F
+GLIBC_2.27 erff64x F
+GLIBC_2.27 exp10f32 F
+GLIBC_2.27 exp10f32x F
+GLIBC_2.27 exp10f64 F
+GLIBC_2.27 exp10f64x F
+GLIBC_2.27 exp2f F
+GLIBC_2.27 exp2f32 F
+GLIBC_2.27 exp2f32x F
+GLIBC_2.27 exp2f64 F
+GLIBC_2.27 exp2f64x F
+GLIBC_2.27 expf F
+GLIBC_2.27 expf32 F
+GLIBC_2.27 expf32x F
+GLIBC_2.27 expf64 F
+GLIBC_2.27 expf64x F
+GLIBC_2.27 expm1f32 F
+GLIBC_2.27 expm1f32x F
+GLIBC_2.27 expm1f64 F
+GLIBC_2.27 expm1f64x F
+GLIBC_2.27 fabsf32 F
+GLIBC_2.27 fabsf32x F
+GLIBC_2.27 fabsf64 F
+GLIBC_2.27 fabsf64x F
+GLIBC_2.27 fdimf32 F
+GLIBC_2.27 fdimf32x F
+GLIBC_2.27 fdimf64 F
+GLIBC_2.27 fdimf64x F
+GLIBC_2.27 floorf32 F
+GLIBC_2.27 floorf32x F
+GLIBC_2.27 floorf64 F
+GLIBC_2.27 floorf64x F
+GLIBC_2.27 fmaf32 F
+GLIBC_2.27 fmaf32x F
+GLIBC_2.27 fmaf64 F
+GLIBC_2.27 fmaf64x F
+GLIBC_2.27 fmaxf32 F
+GLIBC_2.27 fmaxf32x F
+GLIBC_2.27 fmaxf64 F
+GLIBC_2.27 fmaxf64x F
+GLIBC_2.27 fmaxmagf32 F
+GLIBC_2.27 fmaxmagf32x F
+GLIBC_2.27 fmaxmagf64 F
+GLIBC_2.27 fmaxmagf64x F
+GLIBC_2.27 fminf32 F
+GLIBC_2.27 fminf32x F
+GLIBC_2.27 fminf64 F
+GLIBC_2.27 fminf64x F
+GLIBC_2.27 fminmagf32 F
+GLIBC_2.27 fminmagf32x F
+GLIBC_2.27 fminmagf64 F
+GLIBC_2.27 fminmagf64x F
+GLIBC_2.27 fmodf32 F
+GLIBC_2.27 fmodf32x F
+GLIBC_2.27 fmodf64 F
+GLIBC_2.27 fmodf64x F
+GLIBC_2.27 frexpf32 F
+GLIBC_2.27 frexpf32x F
+GLIBC_2.27 frexpf64 F
+GLIBC_2.27 frexpf64x F
+GLIBC_2.27 fromfpf32 F
+GLIBC_2.27 fromfpf32x F
+GLIBC_2.27 fromfpf64 F
+GLIBC_2.27 fromfpf64x F
+GLIBC_2.27 fromfpxf32 F
+GLIBC_2.27 fromfpxf32x F
+GLIBC_2.27 fromfpxf64 F
+GLIBC_2.27 fromfpxf64x F
+GLIBC_2.27 getpayloadf32 F
+GLIBC_2.27 getpayloadf32x F
+GLIBC_2.27 getpayloadf64 F
+GLIBC_2.27 getpayloadf64x F
+GLIBC_2.27 hypotf32 F
+GLIBC_2.27 hypotf32x F
+GLIBC_2.27 hypotf64 F
+GLIBC_2.27 hypotf64x F
+GLIBC_2.27 ilogbf32 F
+GLIBC_2.27 ilogbf32x F
+GLIBC_2.27 ilogbf64 F
+GLIBC_2.27 ilogbf64x F
+GLIBC_2.27 j0f32 F
+GLIBC_2.27 j0f32x F
+GLIBC_2.27 j0f64 F
+GLIBC_2.27 j0f64x F
+GLIBC_2.27 j1f32 F
+GLIBC_2.27 j1f32x F
+GLIBC_2.27 j1f64 F
+GLIBC_2.27 j1f64x F
+GLIBC_2.27 jnf32 F
+GLIBC_2.27 jnf32x F
+GLIBC_2.27 jnf64 F
+GLIBC_2.27 jnf64x F
+GLIBC_2.27 ldexpf32 F
+GLIBC_2.27 ldexpf32x F
+GLIBC_2.27 ldexpf64 F
+GLIBC_2.27 ldexpf64x F
+GLIBC_2.27 lgammaf32 F
+GLIBC_2.27 lgammaf32_r F
+GLIBC_2.27 lgammaf32x F
+GLIBC_2.27 lgammaf32x_r F
+GLIBC_2.27 lgammaf64 F
+GLIBC_2.27 lgammaf64_r F
+GLIBC_2.27 lgammaf64x F
+GLIBC_2.27 lgammaf64x_r F
+GLIBC_2.27 llogbf32 F
+GLIBC_2.27 llogbf32x F
+GLIBC_2.27 llogbf64 F
+GLIBC_2.27 llogbf64x F
+GLIBC_2.27 llrintf32 F
+GLIBC_2.27 llrintf32x F
+GLIBC_2.27 llrintf64 F
+GLIBC_2.27 llrintf64x F
+GLIBC_2.27 llroundf32 F
+GLIBC_2.27 llroundf32x F
+GLIBC_2.27 llroundf64 F
+GLIBC_2.27 llroundf64x F
+GLIBC_2.27 log10f32 F
+GLIBC_2.27 log10f32x F
+GLIBC_2.27 log10f64 F
+GLIBC_2.27 log10f64x F
+GLIBC_2.27 log1pf32 F
+GLIBC_2.27 log1pf32x F
+GLIBC_2.27 log1pf64 F
+GLIBC_2.27 log1pf64x F
+GLIBC_2.27 log2f F
+GLIBC_2.27 log2f32 F
+GLIBC_2.27 log2f32x F
+GLIBC_2.27 log2f64 F
+GLIBC_2.27 log2f64x F
+GLIBC_2.27 logbf32 F
+GLIBC_2.27 logbf32x F
+GLIBC_2.27 logbf64 F
+GLIBC_2.27 logbf64x F
+GLIBC_2.27 logf F
+GLIBC_2.27 logf32 F
+GLIBC_2.27 logf32x F
+GLIBC_2.27 logf64 F
+GLIBC_2.27 logf64x F
+GLIBC_2.27 lrintf32 F
+GLIBC_2.27 lrintf32x F
+GLIBC_2.27 lrintf64 F
+GLIBC_2.27 lrintf64x F
+GLIBC_2.27 lroundf32 F
+GLIBC_2.27 lroundf32x F
+GLIBC_2.27 lroundf64 F
+GLIBC_2.27 lroundf64x F
+GLIBC_2.27 modff32 F
+GLIBC_2.27 modff32x F
+GLIBC_2.27 modff64 F
+GLIBC_2.27 modff64x F
+GLIBC_2.27 nanf32 F
+GLIBC_2.27 nanf32x F
+GLIBC_2.27 nanf64 F
+GLIBC_2.27 nanf64x F
+GLIBC_2.27 nearbyintf32 F
+GLIBC_2.27 nearbyintf32x F
+GLIBC_2.27 nearbyintf64 F
+GLIBC_2.27 nearbyintf64x F
+GLIBC_2.27 nextafterf32 F
+GLIBC_2.27 nextafterf32x F
+GLIBC_2.27 nextafterf64 F
+GLIBC_2.27 nextafterf64x F
+GLIBC_2.27 nextdownf32 F
+GLIBC_2.27 nextdownf32x F
+GLIBC_2.27 nextdownf64 F
+GLIBC_2.27 nextdownf64x F
+GLIBC_2.27 nextupf32 F
+GLIBC_2.27 nextupf32x F
+GLIBC_2.27 nextupf64 F
+GLIBC_2.27 nextupf64x F
+GLIBC_2.27 powf F
+GLIBC_2.27 powf32 F
+GLIBC_2.27 powf32x F
+GLIBC_2.27 powf64 F
+GLIBC_2.27 powf64x F
+GLIBC_2.27 remainderf32 F
+GLIBC_2.27 remainderf32x F
+GLIBC_2.27 remainderf64 F
+GLIBC_2.27 remainderf64x F
+GLIBC_2.27 remquof32 F
+GLIBC_2.27 remquof32x F
+GLIBC_2.27 remquof64 F
+GLIBC_2.27 remquof64x F
+GLIBC_2.27 rintf32 F
+GLIBC_2.27 rintf32x F
+GLIBC_2.27 rintf64 F
+GLIBC_2.27 rintf64x F
+GLIBC_2.27 roundevenf32 F
+GLIBC_2.27 roundevenf32x F
+GLIBC_2.27 roundevenf64 F
+GLIBC_2.27 roundevenf64x F
+GLIBC_2.27 roundf32 F
+GLIBC_2.27 roundf32x F
+GLIBC_2.27 roundf64 F
+GLIBC_2.27 roundf64x F
+GLIBC_2.27 scalblnf32 F
+GLIBC_2.27 scalblnf32x F
+GLIBC_2.27 scalblnf64 F
+GLIBC_2.27 scalblnf64x F
+GLIBC_2.27 scalbnf32 F
+GLIBC_2.27 scalbnf32x F
+GLIBC_2.27 scalbnf64 F
+GLIBC_2.27 scalbnf64x F
+GLIBC_2.27 setpayloadf32 F
+GLIBC_2.27 setpayloadf32x F
+GLIBC_2.27 setpayloadf64 F
+GLIBC_2.27 setpayloadf64x F
+GLIBC_2.27 setpayloadsigf32 F
+GLIBC_2.27 setpayloadsigf32x F
+GLIBC_2.27 setpayloadsigf64 F
+GLIBC_2.27 setpayloadsigf64x F
+GLIBC_2.27 sincosf32 F
+GLIBC_2.27 sincosf32x F
+GLIBC_2.27 sincosf64 F
+GLIBC_2.27 sincosf64x F
+GLIBC_2.27 sinf32 F
+GLIBC_2.27 sinf32x F
+GLIBC_2.27 sinf64 F
+GLIBC_2.27 sinf64x F
+GLIBC_2.27 sinhf32 F
+GLIBC_2.27 sinhf32x F
+GLIBC_2.27 sinhf64 F
+GLIBC_2.27 sinhf64x F
+GLIBC_2.27 sqrtf32 F
+GLIBC_2.27 sqrtf32x F
+GLIBC_2.27 sqrtf64 F
+GLIBC_2.27 sqrtf64x F
+GLIBC_2.27 tanf32 F
+GLIBC_2.27 tanf32x F
+GLIBC_2.27 tanf64 F
+GLIBC_2.27 tanf64x F
+GLIBC_2.27 tanhf32 F
+GLIBC_2.27 tanhf32x F
+GLIBC_2.27 tanhf64 F
+GLIBC_2.27 tanhf64x F
+GLIBC_2.27 tgammaf32 F
+GLIBC_2.27 tgammaf32x F
+GLIBC_2.27 tgammaf64 F
+GLIBC_2.27 tgammaf64x F
+GLIBC_2.27 totalorderf32 F
+GLIBC_2.27 totalorderf32x F
+GLIBC_2.27 totalorderf64 F
+GLIBC_2.27 totalorderf64x F
+GLIBC_2.27 totalordermagf32 F
+GLIBC_2.27 totalordermagf32x F
+GLIBC_2.27 totalordermagf64 F
+GLIBC_2.27 totalordermagf64x F
+GLIBC_2.27 truncf32 F
+GLIBC_2.27 truncf32x F
+GLIBC_2.27 truncf64 F
+GLIBC_2.27 truncf64x F
+GLIBC_2.27 ufromfpf32 F
+GLIBC_2.27 ufromfpf32x F
+GLIBC_2.27 ufromfpf64 F
+GLIBC_2.27 ufromfpf64x F
+GLIBC_2.27 ufromfpxf32 F
+GLIBC_2.27 ufromfpxf32x F
+GLIBC_2.27 ufromfpxf64 F
+GLIBC_2.27 ufromfpxf64x F
+GLIBC_2.27 y0f32 F
+GLIBC_2.27 y0f32x F
+GLIBC_2.27 y0f64 F
+GLIBC_2.27 y0f64x F
+GLIBC_2.27 y1f32 F
+GLIBC_2.27 y1f32x F
+GLIBC_2.27 y1f64 F
+GLIBC_2.27 y1f64x F
+GLIBC_2.27 ynf32 F
+GLIBC_2.27 ynf32x F
+GLIBC_2.27 ynf64 F
+GLIBC_2.27 ynf64x F
+GLIBC_2.28 __nldbl_daddl F
+GLIBC_2.28 __nldbl_ddivl F
+GLIBC_2.28 __nldbl_dmull F
+GLIBC_2.28 __nldbl_dsubl F
+GLIBC_2.28 daddl F
+GLIBC_2.28 ddivl F
+GLIBC_2.28 dmull F
+GLIBC_2.28 dsubl F
+GLIBC_2.28 f32addf128 F
+GLIBC_2.28 f32addf32x F
+GLIBC_2.28 f32addf64 F
+GLIBC_2.28 f32addf64x F
+GLIBC_2.28 f32divf128 F
+GLIBC_2.28 f32divf32x F
+GLIBC_2.28 f32divf64 F
+GLIBC_2.28 f32divf64x F
+GLIBC_2.28 f32mulf128 F
+GLIBC_2.28 f32mulf32x F
+GLIBC_2.28 f32mulf64 F
+GLIBC_2.28 f32mulf64x F
+GLIBC_2.28 f32subf128 F
+GLIBC_2.28 f32subf32x F
+GLIBC_2.28 f32subf64 F
+GLIBC_2.28 f32subf64x F
+GLIBC_2.28 f32xaddf128 F
+GLIBC_2.28 f32xaddf64 F
+GLIBC_2.28 f32xaddf64x F
+GLIBC_2.28 f32xdivf128 F
+GLIBC_2.28 f32xdivf64 F
+GLIBC_2.28 f32xdivf64x F
+GLIBC_2.28 f32xmulf128 F
+GLIBC_2.28 f32xmulf64 F
+GLIBC_2.28 f32xmulf64x F
+GLIBC_2.28 f32xsubf128 F
+GLIBC_2.28 f32xsubf64 F
+GLIBC_2.28 f32xsubf64x F
+GLIBC_2.28 f64addf128 F
+GLIBC_2.28 f64addf64x F
+GLIBC_2.28 f64divf128 F
+GLIBC_2.28 f64divf64x F
+GLIBC_2.28 f64mulf128 F
+GLIBC_2.28 f64mulf64x F
+GLIBC_2.28 f64subf128 F
+GLIBC_2.28 f64subf64x F
+GLIBC_2.28 f64xaddf128 F
+GLIBC_2.28 f64xdivf128 F
+GLIBC_2.28 f64xmulf128 F
+GLIBC_2.28 f64xsubf128 F
+GLIBC_2.28 fadd F
+GLIBC_2.28 faddl F
+GLIBC_2.28 fdiv F
+GLIBC_2.28 fdivl F
+GLIBC_2.28 fmul F
+GLIBC_2.28 fmull F
+GLIBC_2.28 fsub F
+GLIBC_2.28 fsubl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist
index 6c7fc9b4fc..331449dfcb 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.15 GLIBC_2.15 A
GLIBC_2.15 __acos_finite F
GLIBC_2.15 __acosf_finite F
GLIBC_2.15 __acosh_finite F
@@ -80,16 +79,415 @@ GLIBC_2.15 __y1l_finite F
GLIBC_2.15 __yn_finite F
GLIBC_2.15 __ynf_finite F
GLIBC_2.15 __ynl_finite F
-GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 __issignaling F
GLIBC_2.18 __issignalingf F
GLIBC_2.18 __issignalingl F
-GLIBC_2.23 GLIBC_2.23 A
GLIBC_2.23 __signgam D 0x4
GLIBC_2.23 lgamma F
GLIBC_2.23 lgammaf F
GLIBC_2.23 lgammal F
-GLIBC_2.3 GLIBC_2.3 A
+GLIBC_2.24 nextdown F
+GLIBC_2.24 nextdownf F
+GLIBC_2.24 nextdownl F
+GLIBC_2.24 nextup F
+GLIBC_2.24 nextupf F
+GLIBC_2.24 nextupl F
+GLIBC_2.25 __fe_dfl_mode D 0x8
+GLIBC_2.25 __iscanonicall F
+GLIBC_2.25 __iseqsig F
+GLIBC_2.25 __iseqsigf F
+GLIBC_2.25 __iseqsigl F
+GLIBC_2.25 canonicalize F
+GLIBC_2.25 canonicalizef F
+GLIBC_2.25 canonicalizel F
+GLIBC_2.25 fegetmode F
+GLIBC_2.25 fesetexcept F
+GLIBC_2.25 fesetmode F
+GLIBC_2.25 fetestexceptflag F
+GLIBC_2.25 fmaxmag F
+GLIBC_2.25 fmaxmagf F
+GLIBC_2.25 fmaxmagl F
+GLIBC_2.25 fminmag F
+GLIBC_2.25 fminmagf F
+GLIBC_2.25 fminmagl F
+GLIBC_2.25 fromfp F
+GLIBC_2.25 fromfpf F
+GLIBC_2.25 fromfpl F
+GLIBC_2.25 fromfpx F
+GLIBC_2.25 fromfpxf F
+GLIBC_2.25 fromfpxl F
+GLIBC_2.25 getpayload F
+GLIBC_2.25 getpayloadf F
+GLIBC_2.25 getpayloadl F
+GLIBC_2.25 llogb F
+GLIBC_2.25 llogbf F
+GLIBC_2.25 llogbl F
+GLIBC_2.25 roundeven F
+GLIBC_2.25 roundevenf F
+GLIBC_2.25 roundevenl F
+GLIBC_2.25 setpayload F
+GLIBC_2.25 setpayloadf F
+GLIBC_2.25 setpayloadl F
+GLIBC_2.25 setpayloadsig F
+GLIBC_2.25 setpayloadsigf F
+GLIBC_2.25 setpayloadsigl F
+GLIBC_2.25 totalorder F
+GLIBC_2.25 totalorderf F
+GLIBC_2.25 totalorderl F
+GLIBC_2.25 totalordermag F
+GLIBC_2.25 totalordermagf F
+GLIBC_2.25 totalordermagl F
+GLIBC_2.25 ufromfp F
+GLIBC_2.25 ufromfpf F
+GLIBC_2.25 ufromfpl F
+GLIBC_2.25 ufromfpx F
+GLIBC_2.25 ufromfpxf F
+GLIBC_2.25 ufromfpxl F
+GLIBC_2.27 acosf32 F
+GLIBC_2.27 acosf32x F
+GLIBC_2.27 acosf64 F
+GLIBC_2.27 acoshf32 F
+GLIBC_2.27 acoshf32x F
+GLIBC_2.27 acoshf64 F
+GLIBC_2.27 asinf32 F
+GLIBC_2.27 asinf32x F
+GLIBC_2.27 asinf64 F
+GLIBC_2.27 asinhf32 F
+GLIBC_2.27 asinhf32x F
+GLIBC_2.27 asinhf64 F
+GLIBC_2.27 atan2f32 F
+GLIBC_2.27 atan2f32x F
+GLIBC_2.27 atan2f64 F
+GLIBC_2.27 atanf32 F
+GLIBC_2.27 atanf32x F
+GLIBC_2.27 atanf64 F
+GLIBC_2.27 atanhf32 F
+GLIBC_2.27 atanhf32x F
+GLIBC_2.27 atanhf64 F
+GLIBC_2.27 cabsf32 F
+GLIBC_2.27 cabsf32x F
+GLIBC_2.27 cabsf64 F
+GLIBC_2.27 cacosf32 F
+GLIBC_2.27 cacosf32x F
+GLIBC_2.27 cacosf64 F
+GLIBC_2.27 cacoshf32 F
+GLIBC_2.27 cacoshf32x F
+GLIBC_2.27 cacoshf64 F
+GLIBC_2.27 canonicalizef32 F
+GLIBC_2.27 canonicalizef32x F
+GLIBC_2.27 canonicalizef64 F
+GLIBC_2.27 cargf32 F
+GLIBC_2.27 cargf32x F
+GLIBC_2.27 cargf64 F
+GLIBC_2.27 casinf32 F
+GLIBC_2.27 casinf32x F
+GLIBC_2.27 casinf64 F
+GLIBC_2.27 casinhf32 F
+GLIBC_2.27 casinhf32x F
+GLIBC_2.27 casinhf64 F
+GLIBC_2.27 catanf32 F
+GLIBC_2.27 catanf32x F
+GLIBC_2.27 catanf64 F
+GLIBC_2.27 catanhf32 F
+GLIBC_2.27 catanhf32x F
+GLIBC_2.27 catanhf64 F
+GLIBC_2.27 cbrtf32 F
+GLIBC_2.27 cbrtf32x F
+GLIBC_2.27 cbrtf64 F
+GLIBC_2.27 ccosf32 F
+GLIBC_2.27 ccosf32x F
+GLIBC_2.27 ccosf64 F
+GLIBC_2.27 ccoshf32 F
+GLIBC_2.27 ccoshf32x F
+GLIBC_2.27 ccoshf64 F
+GLIBC_2.27 ceilf32 F
+GLIBC_2.27 ceilf32x F
+GLIBC_2.27 ceilf64 F
+GLIBC_2.27 cexpf32 F
+GLIBC_2.27 cexpf32x F
+GLIBC_2.27 cexpf64 F
+GLIBC_2.27 cimagf32 F
+GLIBC_2.27 cimagf32x F
+GLIBC_2.27 cimagf64 F
+GLIBC_2.27 clog10f32 F
+GLIBC_2.27 clog10f32x F
+GLIBC_2.27 clog10f64 F
+GLIBC_2.27 clogf32 F
+GLIBC_2.27 clogf32x F
+GLIBC_2.27 clogf64 F
+GLIBC_2.27 conjf32 F
+GLIBC_2.27 conjf32x F
+GLIBC_2.27 conjf64 F
+GLIBC_2.27 copysignf32 F
+GLIBC_2.27 copysignf32x F
+GLIBC_2.27 copysignf64 F
+GLIBC_2.27 cosf32 F
+GLIBC_2.27 cosf32x F
+GLIBC_2.27 cosf64 F
+GLIBC_2.27 coshf32 F
+GLIBC_2.27 coshf32x F
+GLIBC_2.27 coshf64 F
+GLIBC_2.27 cpowf32 F
+GLIBC_2.27 cpowf32x F
+GLIBC_2.27 cpowf64 F
+GLIBC_2.27 cprojf32 F
+GLIBC_2.27 cprojf32x F
+GLIBC_2.27 cprojf64 F
+GLIBC_2.27 crealf32 F
+GLIBC_2.27 crealf32x F
+GLIBC_2.27 crealf64 F
+GLIBC_2.27 csinf32 F
+GLIBC_2.27 csinf32x F
+GLIBC_2.27 csinf64 F
+GLIBC_2.27 csinhf32 F
+GLIBC_2.27 csinhf32x F
+GLIBC_2.27 csinhf64 F
+GLIBC_2.27 csqrtf32 F
+GLIBC_2.27 csqrtf32x F
+GLIBC_2.27 csqrtf64 F
+GLIBC_2.27 ctanf32 F
+GLIBC_2.27 ctanf32x F
+GLIBC_2.27 ctanf64 F
+GLIBC_2.27 ctanhf32 F
+GLIBC_2.27 ctanhf32x F
+GLIBC_2.27 ctanhf64 F
+GLIBC_2.27 erfcf32 F
+GLIBC_2.27 erfcf32x F
+GLIBC_2.27 erfcf64 F
+GLIBC_2.27 erff32 F
+GLIBC_2.27 erff32x F
+GLIBC_2.27 erff64 F
+GLIBC_2.27 exp10f32 F
+GLIBC_2.27 exp10f32x F
+GLIBC_2.27 exp10f64 F
+GLIBC_2.27 exp2f F
+GLIBC_2.27 exp2f32 F
+GLIBC_2.27 exp2f32x F
+GLIBC_2.27 exp2f64 F
+GLIBC_2.27 expf F
+GLIBC_2.27 expf32 F
+GLIBC_2.27 expf32x F
+GLIBC_2.27 expf64 F
+GLIBC_2.27 expm1f32 F
+GLIBC_2.27 expm1f32x F
+GLIBC_2.27 expm1f64 F
+GLIBC_2.27 fabsf32 F
+GLIBC_2.27 fabsf32x F
+GLIBC_2.27 fabsf64 F
+GLIBC_2.27 fdimf32 F
+GLIBC_2.27 fdimf32x F
+GLIBC_2.27 fdimf64 F
+GLIBC_2.27 floorf32 F
+GLIBC_2.27 floorf32x F
+GLIBC_2.27 floorf64 F
+GLIBC_2.27 fmaf32 F
+GLIBC_2.27 fmaf32x F
+GLIBC_2.27 fmaf64 F
+GLIBC_2.27 fmaxf32 F
+GLIBC_2.27 fmaxf32x F
+GLIBC_2.27 fmaxf64 F
+GLIBC_2.27 fmaxmagf32 F
+GLIBC_2.27 fmaxmagf32x F
+GLIBC_2.27 fmaxmagf64 F
+GLIBC_2.27 fminf32 F
+GLIBC_2.27 fminf32x F
+GLIBC_2.27 fminf64 F
+GLIBC_2.27 fminmagf32 F
+GLIBC_2.27 fminmagf32x F
+GLIBC_2.27 fminmagf64 F
+GLIBC_2.27 fmodf32 F
+GLIBC_2.27 fmodf32x F
+GLIBC_2.27 fmodf64 F
+GLIBC_2.27 frexpf32 F
+GLIBC_2.27 frexpf32x F
+GLIBC_2.27 frexpf64 F
+GLIBC_2.27 fromfpf32 F
+GLIBC_2.27 fromfpf32x F
+GLIBC_2.27 fromfpf64 F
+GLIBC_2.27 fromfpxf32 F
+GLIBC_2.27 fromfpxf32x F
+GLIBC_2.27 fromfpxf64 F
+GLIBC_2.27 getpayloadf32 F
+GLIBC_2.27 getpayloadf32x F
+GLIBC_2.27 getpayloadf64 F
+GLIBC_2.27 hypotf32 F
+GLIBC_2.27 hypotf32x F
+GLIBC_2.27 hypotf64 F
+GLIBC_2.27 ilogbf32 F
+GLIBC_2.27 ilogbf32x F
+GLIBC_2.27 ilogbf64 F
+GLIBC_2.27 j0f32 F
+GLIBC_2.27 j0f32x F
+GLIBC_2.27 j0f64 F
+GLIBC_2.27 j1f32 F
+GLIBC_2.27 j1f32x F
+GLIBC_2.27 j1f64 F
+GLIBC_2.27 jnf32 F
+GLIBC_2.27 jnf32x F
+GLIBC_2.27 jnf64 F
+GLIBC_2.27 ldexpf32 F
+GLIBC_2.27 ldexpf32x F
+GLIBC_2.27 ldexpf64 F
+GLIBC_2.27 lgammaf32 F
+GLIBC_2.27 lgammaf32_r F
+GLIBC_2.27 lgammaf32x F
+GLIBC_2.27 lgammaf32x_r F
+GLIBC_2.27 lgammaf64 F
+GLIBC_2.27 lgammaf64_r F
+GLIBC_2.27 llogbf32 F
+GLIBC_2.27 llogbf32x F
+GLIBC_2.27 llogbf64 F
+GLIBC_2.27 llrintf32 F
+GLIBC_2.27 llrintf32x F
+GLIBC_2.27 llrintf64 F
+GLIBC_2.27 llroundf32 F
+GLIBC_2.27 llroundf32x F
+GLIBC_2.27 llroundf64 F
+GLIBC_2.27 log10f32 F
+GLIBC_2.27 log10f32x F
+GLIBC_2.27 log10f64 F
+GLIBC_2.27 log1pf32 F
+GLIBC_2.27 log1pf32x F
+GLIBC_2.27 log1pf64 F
+GLIBC_2.27 log2f F
+GLIBC_2.27 log2f32 F
+GLIBC_2.27 log2f32x F
+GLIBC_2.27 log2f64 F
+GLIBC_2.27 logbf32 F
+GLIBC_2.27 logbf32x F
+GLIBC_2.27 logbf64 F
+GLIBC_2.27 logf F
+GLIBC_2.27 logf32 F
+GLIBC_2.27 logf32x F
+GLIBC_2.27 logf64 F
+GLIBC_2.27 lrintf32 F
+GLIBC_2.27 lrintf32x F
+GLIBC_2.27 lrintf64 F
+GLIBC_2.27 lroundf32 F
+GLIBC_2.27 lroundf32x F
+GLIBC_2.27 lroundf64 F
+GLIBC_2.27 modff32 F
+GLIBC_2.27 modff32x F
+GLIBC_2.27 modff64 F
+GLIBC_2.27 nanf32 F
+GLIBC_2.27 nanf32x F
+GLIBC_2.27 nanf64 F
+GLIBC_2.27 nearbyintf32 F
+GLIBC_2.27 nearbyintf32x F
+GLIBC_2.27 nearbyintf64 F
+GLIBC_2.27 nextafterf32 F
+GLIBC_2.27 nextafterf32x F
+GLIBC_2.27 nextafterf64 F
+GLIBC_2.27 nextdownf32 F
+GLIBC_2.27 nextdownf32x F
+GLIBC_2.27 nextdownf64 F
+GLIBC_2.27 nextupf32 F
+GLIBC_2.27 nextupf32x F
+GLIBC_2.27 nextupf64 F
+GLIBC_2.27 powf F
+GLIBC_2.27 powf32 F
+GLIBC_2.27 powf32x F
+GLIBC_2.27 powf64 F
+GLIBC_2.27 remainderf32 F
+GLIBC_2.27 remainderf32x F
+GLIBC_2.27 remainderf64 F
+GLIBC_2.27 remquof32 F
+GLIBC_2.27 remquof32x F
+GLIBC_2.27 remquof64 F
+GLIBC_2.27 rintf32 F
+GLIBC_2.27 rintf32x F
+GLIBC_2.27 rintf64 F
+GLIBC_2.27 roundevenf32 F
+GLIBC_2.27 roundevenf32x F
+GLIBC_2.27 roundevenf64 F
+GLIBC_2.27 roundf32 F
+GLIBC_2.27 roundf32x F
+GLIBC_2.27 roundf64 F
+GLIBC_2.27 scalblnf32 F
+GLIBC_2.27 scalblnf32x F
+GLIBC_2.27 scalblnf64 F
+GLIBC_2.27 scalbnf32 F
+GLIBC_2.27 scalbnf32x F
+GLIBC_2.27 scalbnf64 F
+GLIBC_2.27 setpayloadf32 F
+GLIBC_2.27 setpayloadf32x F
+GLIBC_2.27 setpayloadf64 F
+GLIBC_2.27 setpayloadsigf32 F
+GLIBC_2.27 setpayloadsigf32x F
+GLIBC_2.27 setpayloadsigf64 F
+GLIBC_2.27 sincosf32 F
+GLIBC_2.27 sincosf32x F
+GLIBC_2.27 sincosf64 F
+GLIBC_2.27 sinf32 F
+GLIBC_2.27 sinf32x F
+GLIBC_2.27 sinf64 F
+GLIBC_2.27 sinhf32 F
+GLIBC_2.27 sinhf32x F
+GLIBC_2.27 sinhf64 F
+GLIBC_2.27 sqrtf32 F
+GLIBC_2.27 sqrtf32x F
+GLIBC_2.27 sqrtf64 F
+GLIBC_2.27 tanf32 F
+GLIBC_2.27 tanf32x F
+GLIBC_2.27 tanf64 F
+GLIBC_2.27 tanhf32 F
+GLIBC_2.27 tanhf32x F
+GLIBC_2.27 tanhf64 F
+GLIBC_2.27 tgammaf32 F
+GLIBC_2.27 tgammaf32x F
+GLIBC_2.27 tgammaf64 F
+GLIBC_2.27 totalorderf32 F
+GLIBC_2.27 totalorderf32x F
+GLIBC_2.27 totalorderf64 F
+GLIBC_2.27 totalordermagf32 F
+GLIBC_2.27 totalordermagf32x F
+GLIBC_2.27 totalordermagf64 F
+GLIBC_2.27 truncf32 F
+GLIBC_2.27 truncf32x F
+GLIBC_2.27 truncf64 F
+GLIBC_2.27 ufromfpf32 F
+GLIBC_2.27 ufromfpf32x F
+GLIBC_2.27 ufromfpf64 F
+GLIBC_2.27 ufromfpxf32 F
+GLIBC_2.27 ufromfpxf32x F
+GLIBC_2.27 ufromfpxf64 F
+GLIBC_2.27 y0f32 F
+GLIBC_2.27 y0f32x F
+GLIBC_2.27 y0f64 F
+GLIBC_2.27 y1f32 F
+GLIBC_2.27 y1f32x F
+GLIBC_2.27 y1f64 F
+GLIBC_2.27 ynf32 F
+GLIBC_2.27 ynf32x F
+GLIBC_2.27 ynf64 F
+GLIBC_2.28 __nldbl_daddl F
+GLIBC_2.28 __nldbl_ddivl F
+GLIBC_2.28 __nldbl_dmull F
+GLIBC_2.28 __nldbl_dsubl F
+GLIBC_2.28 daddl F
+GLIBC_2.28 ddivl F
+GLIBC_2.28 dmull F
+GLIBC_2.28 dsubl F
+GLIBC_2.28 f32addf32x F
+GLIBC_2.28 f32addf64 F
+GLIBC_2.28 f32divf32x F
+GLIBC_2.28 f32divf64 F
+GLIBC_2.28 f32mulf32x F
+GLIBC_2.28 f32mulf64 F
+GLIBC_2.28 f32subf32x F
+GLIBC_2.28 f32subf64 F
+GLIBC_2.28 f32xaddf64 F
+GLIBC_2.28 f32xdivf64 F
+GLIBC_2.28 f32xmulf64 F
+GLIBC_2.28 f32xsubf64 F
+GLIBC_2.28 fadd F
+GLIBC_2.28 faddl F
+GLIBC_2.28 fdiv F
+GLIBC_2.28 fdivl F
+GLIBC_2.28 fmul F
+GLIBC_2.28 fmull F
+GLIBC_2.28 fsub F
+GLIBC_2.28 fsubl F
GLIBC_2.3 _LIB_VERSION D 0x4
GLIBC_2.3 __clog10 F
GLIBC_2.3 __clog10f F
@@ -405,7 +803,6 @@ GLIBC_2.3 y1l F
GLIBC_2.3 yn F
GLIBC_2.3 ynf F
GLIBC_2.3 ynl F
-GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 __clog10l F
GLIBC_2.4 __finitel F
GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl-le.abilist
index 63d47aef79..eae8dbe341 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl-le.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 __free_fdresult F
GLIBC_2.17 __nis_default_access F
GLIBC_2.17 __nis_default_group F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl.abilist
index 23ef56053e..4318dc30ce 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 __free_fdresult F
GLIBC_2.3 __nis_default_access F
GLIBC_2.3 __nis_default_group F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread-le.abilist
index 0cf30ee02f..9a9e4cee85 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread-le.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 _IO_flockfile F
GLIBC_2.17 _IO_ftrylockfile F
GLIBC_2.17 _IO_funlockfile F
@@ -221,6 +220,26 @@ GLIBC_2.17 vfork F
GLIBC_2.17 wait F
GLIBC_2.17 waitpid F
GLIBC_2.17 write F
-GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread.abilist
index 464b91a61d..8300958d47 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread.abilist
@@ -1,15 +1,32 @@
-GLIBC_2.11 GLIBC_2.11 A
GLIBC_2.11 pthread_sigqueue F
-GLIBC_2.12 GLIBC_2.12 A
GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_mutex_consistent F
GLIBC_2.12 pthread_mutexattr_getrobust F
GLIBC_2.12 pthread_mutexattr_setrobust F
GLIBC_2.12 pthread_setname_np F
-GLIBC_2.18 GLIBC_2.18 A
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.3 GLIBC_2.3 A
+GLIBC_2.28 call_once F
+GLIBC_2.28 cnd_broadcast F
+GLIBC_2.28 cnd_destroy F
+GLIBC_2.28 cnd_init F
+GLIBC_2.28 cnd_signal F
+GLIBC_2.28 cnd_timedwait F
+GLIBC_2.28 cnd_wait F
+GLIBC_2.28 mtx_destroy F
+GLIBC_2.28 mtx_init F
+GLIBC_2.28 mtx_lock F
+GLIBC_2.28 mtx_timedlock F
+GLIBC_2.28 mtx_trylock F
+GLIBC_2.28 mtx_unlock F
+GLIBC_2.28 thrd_create F
+GLIBC_2.28 thrd_detach F
+GLIBC_2.28 thrd_exit F
+GLIBC_2.28 thrd_join F
+GLIBC_2.28 tss_create F
+GLIBC_2.28 tss_delete F
+GLIBC_2.28 tss_get F
+GLIBC_2.28 tss_set F
GLIBC_2.3 _IO_flockfile F
GLIBC_2.3 _IO_ftrylockfile F
GLIBC_2.3 _IO_funlockfile F
@@ -201,14 +218,12 @@ GLIBC_2.3 vfork F
GLIBC_2.3 wait F
GLIBC_2.3 waitpid F
GLIBC_2.3 write F
-GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 pthread_cond_broadcast F
GLIBC_2.3.2 pthread_cond_destroy F
GLIBC_2.3.2 pthread_cond_init F
GLIBC_2.3.2 pthread_cond_signal F
GLIBC_2.3.2 pthread_cond_timedwait F
GLIBC_2.3.2 pthread_cond_wait F
-GLIBC_2.3.3 GLIBC_2.3.3 A
GLIBC_2.3.3 __pthread_cleanup_routine F
GLIBC_2.3.3 __pthread_register_cancel F
GLIBC_2.3.3 __pthread_register_cancel_defer F
@@ -224,7 +239,6 @@ GLIBC_2.3.3 pthread_getaffinity_np F
GLIBC_2.3.3 pthread_setaffinity_np F
GLIBC_2.3.3 pthread_timedjoin_np F
GLIBC_2.3.3 pthread_tryjoin_np F
-GLIBC_2.3.4 GLIBC_2.3.4 A
GLIBC_2.3.4 longjmp F
GLIBC_2.3.4 pthread_attr_getaffinity_np F
GLIBC_2.3.4 pthread_attr_setaffinity_np F
@@ -232,7 +246,6 @@ GLIBC_2.3.4 pthread_getaffinity_np F
GLIBC_2.3.4 pthread_setaffinity_np F
GLIBC_2.3.4 pthread_setschedprio F
GLIBC_2.3.4 siglongjmp F
-GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 pthread_mutex_consistent_np F
GLIBC_2.4 pthread_mutex_getprioceiling F
GLIBC_2.4 pthread_mutex_setprioceiling F
@@ -242,6 +255,5 @@ GLIBC_2.4 pthread_mutexattr_getrobust_np F
GLIBC_2.4 pthread_mutexattr_setprioceiling F
GLIBC_2.4 pthread_mutexattr_setprotocol F
GLIBC_2.4 pthread_mutexattr_setrobust_np F
-GLIBC_2.6 GLIBC_2.6 A
GLIBC_2.6 pthread_attr_setstack F
GLIBC_2.6 pthread_attr_setstacksize F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv-le.abilist
index cf278eedb3..f7fdd26bd1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv-le.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 __b64_ntop F
GLIBC_2.17 __b64_pton F
GLIBC_2.17 __dn_comp F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv.abilist
index 95def8eb0f..15f30deb34 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 __b64_ntop F
GLIBC_2.3 __b64_pton F
GLIBC_2.3 __dn_comp F
@@ -63,9 +62,7 @@ GLIBC_2.3 res_gethostbyname F
GLIBC_2.3 res_gethostbyname2 F
GLIBC_2.3 res_send_setqhook F
GLIBC_2.3 res_send_setrhook F
-GLIBC_2.3.2 GLIBC_2.3.2 A
GLIBC_2.3.2 __p_rcode F
-GLIBC_2.9 GLIBC_2.9 A
GLIBC_2.9 ns_datetosecs F
GLIBC_2.9 ns_format_ttl F
GLIBC_2.9 ns_get16 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/librt-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/librt-le.abilist
index 523d22249a..5e81c82a25 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/librt-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/librt-le.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 __mq_open_2 F
GLIBC_2.17 aio_cancel F
GLIBC_2.17 aio_cancel64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/librt.abilist
index e5b41488a2..e76b7eb495 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/librt.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 aio_cancel F
GLIBC_2.3 aio_cancel64 F
GLIBC_2.3 aio_error F
@@ -28,13 +27,11 @@ GLIBC_2.3 timer_delete F
GLIBC_2.3 timer_getoverrun F
GLIBC_2.3 timer_gettime F
GLIBC_2.3 timer_settime F
-GLIBC_2.3.3 GLIBC_2.3.3 A
GLIBC_2.3.3 timer_create F
GLIBC_2.3.3 timer_delete F
GLIBC_2.3.3 timer_getoverrun F
GLIBC_2.3.3 timer_gettime F
GLIBC_2.3.3 timer_settime F
-GLIBC_2.3.4 GLIBC_2.3.4 A
GLIBC_2.3.4 mq_close F
GLIBC_2.3.4 mq_getattr F
GLIBC_2.3.4 mq_notify F
@@ -45,8 +42,6 @@ GLIBC_2.3.4 mq_setattr F
GLIBC_2.3.4 mq_timedreceive F
GLIBC_2.3.4 mq_timedsend F
GLIBC_2.3.4 mq_unlink F
-GLIBC_2.4 GLIBC_2.4 A
GLIBC_2.4 lio_listio F
GLIBC_2.4 lio_listio64 F
-GLIBC_2.7 GLIBC_2.7 A
GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db-le.abilist
index 3e382bf79d..3b84229ebc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db-le.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 td_init F
GLIBC_2.17 td_log F
GLIBC_2.17 td_symbol_list F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db.abilist
index cd466b942b..cffc70d2fa 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 td_init F
GLIBC_2.3 td_log F
GLIBC_2.3 td_symbol_list F
@@ -38,5 +37,4 @@ GLIBC_2.3 td_thr_sigsetmask F
GLIBC_2.3 td_thr_tls_get_addr F
GLIBC_2.3 td_thr_tsd F
GLIBC_2.3 td_thr_validate F
-GLIBC_2.3.3 GLIBC_2.3.3 A
GLIBC_2.3.3 td_thr_tlsbase F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil-le.abilist
index 9c075bc0bd..99889de22e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil-le.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 GLIBC_2.17 A
GLIBC_2.17 forkpty F
GLIBC_2.17 login F
GLIBC_2.17 login_tty F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil.abilist
index 812701762c..9cf1da7aa4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.3 GLIBC_2.3 A
GLIBC_2.3 forkpty F
GLIBC_2.3 login F
GLIBC_2.3 login_tty F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data b/sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data
index 49d5de6019..c1209336d2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data
@@ -4,11 +4,14 @@ libc.so: malloc
libc.so: memalign
libc.so: realloc
libm.so: matherr
-# The dynamic loader uses __libc_memalign internally to allocate aligned
-# TLS storage. The other malloc family of functions are expected to
-# allow user symbol interposition.
-ld.so: __libc_memalign
+# The main malloc is interposed into the dynamic linker, for
+# allocations after the initial link (when dlopen is used).
ld.so: malloc
ld.so: calloc
ld.so: realloc
ld.so: free
+# The TLS-enabled version of these functions is interposed from libc.so.
+ld.so: _dl_signal_error
+ld.so: _dl_catch_error
+ld.so: _dl_signal_exception
+ld.so: _dl_catch_exception
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S
index 9bd0b0032c..4febd49646 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S
@@ -1,5 +1,5 @@
/* Create new context.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
@@ -23,20 +23,20 @@
#include "ucontext_i.h"
#include <asm/errno.h>
-ENTRY(__makecontext)
+ENTRY (__makecontext)
CALL_MCOUNT 3
/* Save parameters into the parameter save area of callers frame. */
- std r3,FRAME_PARM1_SAVE(r1) /* ucontext_t *ucp */
- std r4,FRAME_PARM2_SAVE(r1) /* void (*func)(void) */
- std r5,FRAME_PARM3_SAVE(r1) /* int argc */
- std r6,FRAME_PARM4_SAVE(r1) /* ... */
- std r7,FRAME_PARM5_SAVE(r1)
- std r8,FRAME_PARM6_SAVE(r1)
- std r9,FRAME_PARM7_SAVE(r1)
- std r10,FRAME_PARM8_SAVE(r1)
+ std r3,FRAME_PARM_SAVE+0(r1) /* ucontext_t *ucp */
+ std r4,FRAME_PARM_SAVE+8(r1) /* void (*func)(void) */
+ std r5,FRAME_PARM_SAVE+16(r1) /* int argc */
+ std r6,FRAME_PARM_SAVE+24(r1) /* ... */
+ std r7,FRAME_PARM_SAVE+32(r1)
+ std r8,FRAME_PARM_SAVE+40(r1)
+ std r9,FRAME_PARM_SAVE+48(r1)
+ std r10,FRAME_PARM_SAVE+56(r1)
mflr r0
/* Get the address of the target functions first parameter. */
- addi r6,r1,FRAME_PARM4_SAVE
+ addi r6,r1,FRAME_PARM_SAVE+24
std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
stdu r1,-128(r1)
@@ -55,7 +55,7 @@ ENTRY(__makecontext)
clrrdi r7,r7,4
li r0,0
stdu r0,-64(r7)
- std r3,FRAME_PARM1_SAVE(r7) /* Store context in dummy parm1. */
+ std r3,FRAME_PARM_SAVE(r7) /* Store context in dummy parm1. */
mflr r0
std r2,FRAME_TOC_SAVE(r7) /* Store the TOC pointer for later. */
std r0,FRAME_LR_SAVE(r7)
@@ -102,7 +102,7 @@ L(parmloop2):
addi r0,r5,-8
ble cr1,L(noparms)
mtctr r0
- addi r9,r8,FRAME_PARM9_SAVE-8
+ addi r9,r8,FRAME_PARM_SAVE+64-8
L(parmloop):
ldu r0,8(r7)
stdu r0,8(r9)
@@ -148,7 +148,7 @@ L(noparms):
L(exitcode):
/* Recover the ucontext and TOC from the dummy frame. */
ld r1,FRAME_BACKCHAIN(r1) /* Unstack the parameter save area frame. */
- ld r3,FRAME_PARM1_SAVE(r1)
+ ld r3,FRAME_PARM_SAVE(r1)
ld r2,FRAME_TOC_SAVE(r1)
ld r3,UCONTEXT_LINK(r3) /* Load the resume context. */
cmpdi r3,0
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
index 688a79b5b9..c95e3a14db 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
@@ -1,5 +1,5 @@
/* Switch to context.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
index a166dcc53f..50f7233080 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
@@ -1,5 +1,5 @@
/* Save current context and install the given one.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
@@ -163,6 +163,7 @@ ENTRY(__novec_swapcontext)
cmpdi r0,0
bne L(nv_do_sigret)
+ ld r8,.LC__dl_hwcap@toc(r2)
# ifdef SHARED
/* Load _rtld-global._dl_hwcap. */
ld r8,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r8)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list b/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list
deleted file mode 100644
index 6ba6f9b1e9..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list
+++ /dev/null
@@ -1,3 +0,0 @@
-# File name Caller Syscall name # args Strong name Weak names
-
-getrlimit - ugetrlimit i:ip __getrlimit getrlimit getrlimit64 __getrlimit64
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
deleted file mode 100644
index 59d7d9ed6c..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Cancellable system call stubs. Linux/PowerPC64 version.
- Copyright (C) 2003-2016 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>, 2003.
-
- 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/>. */
-
-#include <sysdep.h>
-#include <tls.h>
-#ifndef __ASSEMBLER__
-# include <nptl/pthreadP.h>
-#endif
-
-#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
-
-# define DASHDASHPFX(str) __##str
-
-#if _CALL_ELF == 2
-#define CANCEL_FRAMESIZE (FRAME_MIN_SIZE+16+48)
-#define CANCEL_PARM_SAVE (FRAME_MIN_SIZE+16)
-#else
-#define CANCEL_FRAMESIZE (FRAME_MIN_SIZE+16)
-#define CANCEL_PARM_SAVE (CANCEL_FRAMESIZE+FRAME_PARM_SAVE)
-#endif
-
-# undef PSEUDO
-# define PSEUDO(name, syscall_name, args) \
- .section ".text"; \
- ENTRY (name) \
- SINGLE_THREAD_P; \
- bne- .Lpseudo_cancel; \
- .type DASHDASHPFX(syscall_name##_nocancel),@function; \
- .globl DASHDASHPFX(syscall_name##_nocancel); \
- DASHDASHPFX(syscall_name##_nocancel): \
- DO_CALL (SYS_ify (syscall_name)); \
- PSEUDO_RET; \
- .size DASHDASHPFX(syscall_name##_nocancel),.-DASHDASHPFX(syscall_name##_nocancel); \
- .Lpseudo_cancel: \
- stdu 1,-CANCEL_FRAMESIZE(1); \
- cfi_adjust_cfa_offset (CANCEL_FRAMESIZE); \
- mflr 9; \
- std 9,CANCEL_FRAMESIZE+FRAME_LR_SAVE(1); \
- cfi_offset (lr, FRAME_LR_SAVE); \
- DOCARGS_##args; /* save syscall args around CENABLE. */ \
- CENABLE; \
- std 3,FRAME_MIN_SIZE(1); /* store CENABLE return value (MASK). */ \
- UNDOCARGS_##args; /* restore syscall args. */ \
- DO_CALL (SYS_ify (syscall_name)); \
- mfcr 0; /* save CR/R3 around CDISABLE. */ \
- std 3,FRAME_MIN_SIZE+8(1); \
- std 0,CANCEL_FRAMESIZE+FRAME_CR_SAVE(1); \
- cfi_offset (cr, FRAME_CR_SAVE); \
- ld 3,FRAME_MIN_SIZE(1); /* pass MASK to CDISABLE. */ \
- CDISABLE; \
- ld 9,CANCEL_FRAMESIZE+FRAME_LR_SAVE(1); \
- ld 0,CANCEL_FRAMESIZE+FRAME_CR_SAVE(1); /* restore CR/R3. */ \
- ld 3,FRAME_MIN_SIZE+8(1); \
- mtlr 9; \
- mtcr 0; \
- addi 1,1,CANCEL_FRAMESIZE; \
- cfi_adjust_cfa_offset (-CANCEL_FRAMESIZE); \
- cfi_restore (lr); \
- cfi_restore (cr)
-
-# define DOCARGS_0
-# define UNDOCARGS_0
-
-# define DOCARGS_1 std 3,CANCEL_PARM_SAVE(1); DOCARGS_0
-# define UNDOCARGS_1 ld 3,CANCEL_PARM_SAVE(1); UNDOCARGS_0
-
-# define DOCARGS_2 std 4,CANCEL_PARM_SAVE+8(1); DOCARGS_1
-# define UNDOCARGS_2 ld 4,CANCEL_PARM_SAVE+8(1); UNDOCARGS_1
-
-# define DOCARGS_3 std 5,CANCEL_PARM_SAVE+16(1); DOCARGS_2
-# define UNDOCARGS_3 ld 5,CANCEL_PARM_SAVE+16(1); UNDOCARGS_2
-
-# define DOCARGS_4 std 6,CANCEL_PARM_SAVE+24(1); DOCARGS_3
-# define UNDOCARGS_4 ld 6,CANCEL_PARM_SAVE+24(1); UNDOCARGS_3
-
-# define DOCARGS_5 std 7,CANCEL_PARM_SAVE+32(1); DOCARGS_4
-# define UNDOCARGS_5 ld 7,CANCEL_PARM_SAVE+32(1); UNDOCARGS_4
-
-# define DOCARGS_6 std 8,CANCEL_PARM_SAVE+40(1); DOCARGS_5
-# define UNDOCARGS_6 ld 8,CANCEL_PARM_SAVE+40(1); UNDOCARGS_5
-
-# if IS_IN (libpthread)
-# ifdef SHARED
-# define CENABLE bl JUMPTARGET(__pthread_enable_asynccancel)
-# define CDISABLE bl JUMPTARGET(__pthread_disable_asynccancel)
-# else
-# define CENABLE bl JUMPTARGET(__pthread_enable_asynccancel); nop
-# define CDISABLE bl JUMPTARGET(__pthread_disable_asynccancel); nop
-# endif
-# elif IS_IN (libc)
-# ifdef SHARED
-# define CENABLE bl JUMPTARGET(__libc_enable_asynccancel)
-# define CDISABLE bl JUMPTARGET(__libc_disable_asynccancel)
-# else
-# define CENABLE bl JUMPTARGET(__libc_enable_asynccancel); nop
-# define CDISABLE bl JUMPTARGET(__libc_disable_asynccancel); nop
-# endif
-# elif IS_IN (librt)
-# ifdef SHARED
-# define CENABLE bl JUMPTARGET(__librt_enable_asynccancel)
-# define CDISABLE bl JUMPTARGET(__librt_disable_asynccancel)
-# else
-# define CENABLE bl JUMPTARGET(__librt_enable_asynccancel); nop
-# define CDISABLE bl JUMPTARGET(__librt_disable_asynccancel); nop
-# endif
-# else
-# error Unsupported library
-# endif
-
-# ifndef __ASSEMBLER__
-# define SINGLE_THREAD_P \
- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
- header.multiple_threads) == 0, 1)
-# else
-# define SINGLE_THREAD_P \
- lwz 10,MULTIPLE_THREADS_OFFSET(13); \
- cmpwi 10,0
-# endif
-
-#elif !defined __ASSEMBLER__
-
-# define SINGLE_THREAD_P (1)
-# define NO_CANCELLATION 1
-
-#endif
-
-#ifndef __ASSEMBLER__
-# define RTLD_SINGLE_THREAD_P \
- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
- header.multiple_threads) == 0, 1)
-#endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
index 91fd096ad0..0956cf04a7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2018 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
@@ -29,24 +29,6 @@
#include <errno.h>
#endif
-/* Some systen calls got renamed over time, but retained the same semantics.
- Handle them here so they can be catched by both C and assembler stubs in
- glibc. */
-
-#ifdef __NR_pread64
-# ifdef __NR_pread
-# error "__NR_pread and __NR_pread64 both defined???"
-# endif
-# define __NR_pread __NR_pread64
-#endif
-
-#ifdef __NR_pwrite64
-# ifdef __NR_pwrite
-# error "__NR_pwrite and __NR_pwrite64 both defined???"
-# endif
-# define __NR_pwrite __NR_pwrite64
-#endif
-
/* For Linux we can use the system call table in the header file
/usr/include/asm/unistd.h
of the kernel. But these symbols do not follow the SYS_* syntax
@@ -254,4 +236,13 @@
# endif
#endif
+/* In the PowerPC64 ABI, the unadorned F_GETLK* opcodes should be used
+ even by largefile64 code. */
+#define FCNTL_ADJUST_CMD(__cmd) \
+ ({ int cmd_ = (__cmd); \
+ if (cmd_ >= F_GETLK64 && cmd_ <= F_SETLKW64) \
+ cmd_ -= F_GETLK64 - F_GETLK; \
+ cmd_; })
+
+
#endif /* linux/powerpc/powerpc64/sysdep.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c
deleted file mode 100644
index e10b40f96c..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/x86_64/umount.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S
index 3083ab7b3c..5b8ace464e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2018 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
@@ -28,31 +28,8 @@
ENTRY (__vfork)
CALL_MCOUNT 0
- /* Load the TCB-cached PID value and negates it. If It it is zero
- sets it to 0x800000. And then sets its value again on TCB field.
- See raise.c for the logic that relies on this value. */
- lwz r0,PID(r13)
- cmpwi cr0,r0,0
- neg r0,r0
- bne- cr0,1f
- lis r0,0x8000
-1: stw r0,PID(r13)
-
DO_CALL (SYS_ify (vfork))
- cmpwi cr1,r3,0
- beqlr- 1
-
- /* Restore the original value of the TCB cache of the PID, if we're
- the parent. But in the child (syscall return value equals zero),
- leave things as they are. */
- lwz r0,PID(r13)
- clrlwi r4,r0,1
- cmpwi cr1,r4,0
- beq- cr1,1f
- neg r4,r0
-1: stw r4,PID(r13)
-
PSEUDO_RET
PSEUDO_END (__vfork)
diff --git a/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c b/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
index 3e9a5c84d7..5b3546143b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
+++ b/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
diff --git a/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_cond_lock.c b/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_cond_lock.c
index 249a0aadc4..fef27a0a07 100644
--- a/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_cond_lock.c
+++ b/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_cond_lock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_lock.c b/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_lock.c
index 54807d605c..d2a6c58d47 100644
--- a/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_lock.c
+++ b/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_lock.c
@@ -1,5 +1,5 @@
/* Elided version of pthread_mutex_lock.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_timedlock.c b/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_timedlock.c
index aa605e3de8..8cca3a27fa 100644
--- a/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_timedlock.c
+++ b/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_timedlock.c
@@ -1,5 +1,5 @@
/* Elided version of pthread_mutex_timedlock.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_trylock.c b/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_trylock.c
index 3854786a07..14520927a6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_trylock.c
+++ b/sysdeps/unix/sysv/linux/powerpc/pthread_mutex_trylock.c
@@ -1,5 +1,5 @@
/* Elided version of pthread_mutex_trylock.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/readdir64.c b/sysdeps/unix/sysv/linux/powerpc/readdir64.c
deleted file mode 100644
index 2ea26dd409..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/readdir64.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/readdir64.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/readdir64_r.c b/sysdeps/unix/sysv/linux/powerpc/readdir64_r.c
deleted file mode 100644
index 9f54f897e3..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/readdir64_r.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/sysv/linux/i386/readdir64_r.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/readelflib.c b/sysdeps/unix/sysv/linux/powerpc/readelflib.c
index 0d1d1ddff0..1463bfc81b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/readelflib.c
+++ b/sysdeps/unix/sysv/linux/powerpc/readelflib.c
@@ -1,5 +1,5 @@
/* Special checks on libraries for ldconfig. Linux/PowerPC version.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h b/sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h
index 26df3b3539..0b682c75ef 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2018 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
@@ -18,9 +18,4 @@
#include <signal.h>
#define SIGCONTEXT struct sigcontext *
-#define SIGCONTEXT_EXTRA_ARGS
#define GET_PC(ctx) ((void *)((ctx)->regs->nip))
-#define GET_FRAME(ctx) (*(void **)((ctx)->regs->gpr[1]))
-#define GET_STACK(ctx) ((void *)((ctx)->regs->gpr[1]))
-#define CALL_SIGHANDLER(handler, signo, ctx) \
- (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h b/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h
index aadeb9a296..d268c66ba3 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2018 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
@@ -83,7 +83,7 @@ struct elf_prstatus
unsigned long int pr_sigpend; /* Set of pending signals. */
unsigned long int pr_sighold; /* Set of held signals. */
#if 0
- struct sigaltstack pr_altstack; /* Alternate stack info. */
+ stack_t pr_altstack; /* Alternate stack info. */
struct sigaction pr_action; /* Signal action for current sig. */
#endif
__pid_t pr_pid;
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
index b9ddee076d..9fde99c748 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
@@ -1,5 +1,5 @@
-/* `ptrace' debugger support interface. Linux version.
- Copyright (C) 2001-2016 Free Software Foundation, Inc.
+/* `ptrace' debugger support interface. Linux/PowerPC version.
+ Copyright (C) 2001-2018 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
@@ -24,6 +24,50 @@
__BEGIN_DECLS
+#if defined _LINUX_PTRACE_H || defined _ASM_POWERPC_PTRACE_H
+/* Do not let Linux headers macros interfere with enum __ptrace_request. */
+# undef PTRACE_ATTACH
+# undef PTRACE_CONT
+# undef PTRACE_DETACH
+# undef PTRACE_GET_DEBUGREG
+# undef PTRACE_GETEVENTMSG
+# undef PTRACE_GETEVRREGS
+# undef PTRACE_GETFPREGS
+# undef PTRACE_GETREGS
+# undef PTRACE_GETREGS64
+# undef PTRACE_GETREGSET
+# undef PTRACE_GETSIGINFO
+# undef PTRACE_GETSIGMASK
+# undef PTRACE_GETVRREGS
+# undef PTRACE_GETVSRREGS
+# undef PTRACE_INTERRUPT
+# undef PTRACE_KILL
+# undef PTRACE_LISTEN
+# undef PTRACE_PEEKDATA
+# undef PTRACE_PEEKSIGINFO
+# undef PTRACE_PEEKTEXT
+# undef PTRACE_POKEDATA
+# undef PTRACE_POKETEXT
+# undef PTRACE_SECCOMP_GET_FILTER
+# undef PTRACE_SECCOMP_GET_METADATA
+# undef PTRACE_SEIZE
+# undef PTRACE_SET_DEBUGREG
+# undef PTRACE_SETEVRREGS
+# undef PTRACE_SETFPREGS
+# undef PTRACE_SETOPTIONS
+# undef PTRACE_SETREGS
+# undef PTRACE_SETREGS64
+# undef PTRACE_SETREGSET
+# undef PTRACE_SETSIGINFO
+# undef PTRACE_SETSIGMASK
+# undef PTRACE_SETVRREGS
+# undef PTRACE_SETVSRREGS
+# undef PTRACE_SINGLEBLOCK
+# undef PTRACE_SINGLESTEP
+# undef PTRACE_SYSCALL
+# undef PTRACE_TRACEME
+#endif
+
/* Type of the REQUEST argument to `ptrace.' */
enum __ptrace_request
{
@@ -65,11 +109,26 @@ enum __ptrace_request
PTRACE_KILL = 8,
#define PT_KILL PTRACE_KILL
- /* Single step the process.
- This is not supported on all machines. */
+ /* Single step the process. */
PTRACE_SINGLESTEP = 9,
#define PT_STEP PTRACE_SINGLESTEP
+ /* Get all general purpose registers used by a process. */
+ PTRACE_GETREGS = 12,
+#define PT_GETREGS PTRACE_GETREGS
+
+ /* Set all general purpose registers used by a process. */
+ PTRACE_SETREGS = 13,
+#define PT_SETREGS PTRACE_SETREGS
+
+ /* Get all floating point registers used by a process. */
+ PTRACE_GETFPREGS = 14,
+#define PT_GETFPREGS PTRACE_GETFPREGS
+
+ /* Set all floating point registers used by a process. */
+ PTRACE_SETFPREGS = 15,
+#define PT_SETFPREGS PTRACE_SETFPREGS
+
/* Attach to a process that is already running. */
PTRACE_ATTACH = 16,
#define PT_ATTACH PTRACE_ATTACH
@@ -78,10 +137,56 @@ enum __ptrace_request
PTRACE_DETACH = 17,
#define PT_DETACH PTRACE_DETACH
- /* Continue and stop at the next (return from) syscall. */
+ /* Get all altivec registers used by a process. */
+ PTRACE_GETVRREGS = 18,
+#define PT_GETVRREGS PTRACE_GETVRREGS
+
+ /* Set all altivec registers used by a process. */
+ PTRACE_SETVRREGS = 19,
+#define PT_SETVRREGS PTRACE_SETVRREGS
+
+ /* Get all SPE registers used by a process. */
+ PTRACE_GETEVRREGS = 20,
+#define PT_GETEVRREGS PTRACE_GETEVRREGS
+
+ /* Set all SPE registers used by a process. */
+ PTRACE_SETEVRREGS = 21,
+#define PT_SETEVRREGS PTRACE_SETEVRREGS
+
+ /* Same as PTRACE_GETREGS except a 32-bit process will obtain
+ the full 64-bit registers. Implemented by 64-bit kernels only. */
+ PTRACE_GETREGS64 = 22,
+#define PT_GETREGS64 PTRACE_GETREGS64
+
+ /* Same as PTRACE_SETREGS except a 32-bit process will set
+ the full 64-bit registers. Implemented by 64-bit kernels only. */
+ PTRACE_SETREGS64 = 23,
+#define PT_SETREGS64 PTRACE_SETREGS64
+
+ /* Continue and stop at the next entry to or return from syscall. */
PTRACE_SYSCALL = 24,
#define PT_SYSCALL PTRACE_SYSCALL
+ /* Get a debug register of a process. */
+ PTRACE_GET_DEBUGREG = 25,
+#define PT_GET_DEBUGREG PTRACE_GET_DEBUGREG
+
+ /* Set a debug register of a process. */
+ PTRACE_SET_DEBUGREG = 26,
+#define PT_SET_DEBUGREG PTRACE_SET_DEBUGREG
+
+ /* Get the first 32 VSX registers of a process. */
+ PTRACE_GETVSRREGS = 27,
+#define PT_GETVSRREGS PTRACE_GETVSRREGS
+
+ /* Set the first 32 VSX registers of a process. */
+ PTRACE_SETVSRREGS = 28,
+#define PT_SETVSRREGS PTRACE_SETVSRREGS
+
+ /* Execute process until next taken branch. */
+ PTRACE_SINGLEBLOCK = 256,
+#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
+
/* Set ptrace filter options. */
PTRACE_SETOPTIONS = 0x4200,
#define PT_SETOPTIONS PTRACE_SETOPTIONS
@@ -119,78 +224,29 @@ enum __ptrace_request
PTRACE_LISTEN = 0x4208,
#define PTRACE_LISTEN PTRACE_LISTEN
+ /* Retrieve siginfo_t structures without removing signals from a queue. */
PTRACE_PEEKSIGINFO = 0x4209,
#define PTRACE_PEEKSIGINFO PTRACE_PEEKSIGINFO
+ /* Get the mask of blocked signals. */
PTRACE_GETSIGMASK = 0x420a,
#define PTRACE_GETSIGMASK PTRACE_GETSIGMASK
+ /* Change the mask of blocked signals. */
PTRACE_SETSIGMASK = 0x420b,
#define PTRACE_SETSIGMASK PTRACE_SETSIGMASK
- PTRACE_SECCOMP_GET_FILTER = 0x420c
+ /* Get seccomp BPF filters. */
+ PTRACE_SECCOMP_GET_FILTER = 0x420c,
#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER
-};
-
-
-/* Flag for PTRACE_LISTEN. */
-enum __ptrace_flags
-{
- PTRACE_SEIZE_DEVEL = 0x80000000
-};
-
-/* Options set using PTRACE_SETOPTIONS. */
-enum __ptrace_setoptions
-{
- PTRACE_O_TRACESYSGOOD = 0x00000001,
- PTRACE_O_TRACEFORK = 0x00000002,
- PTRACE_O_TRACEVFORK = 0x00000004,
- PTRACE_O_TRACECLONE = 0x00000008,
- PTRACE_O_TRACEEXEC = 0x00000010,
- PTRACE_O_TRACEVFORKDONE = 0x00000020,
- PTRACE_O_TRACEEXIT = 0x00000040,
- PTRACE_O_TRACESECCOMP = 0x00000080,
- PTRACE_O_EXITKILL = 0x00100000,
- PTRACE_O_SUSPEND_SECCOMP = 0x00200000,
- PTRACE_O_MASK = 0x003000ff
-};
-/* Wait extended result codes for the above trace options. */
-enum __ptrace_eventcodes
-{
- PTRACE_EVENT_FORK = 1,
- PTRACE_EVENT_VFORK = 2,
- PTRACE_EVENT_CLONE = 3,
- PTRACE_EVENT_EXEC = 4,
- PTRACE_EVENT_VFORK_DONE = 5,
- PTRACE_EVENT_EXIT = 6,
- PTRACE_EVENT_SECCOMP = 7
-};
-
-/* Arguments for PTRACE_PEEKSIGINFO. */
-struct __ptrace_peeksiginfo_args
-{
- __uint64_t off; /* From which siginfo to start. */
- __uint32_t flags; /* Flags for peeksiginfo. */
- __int32_t nr; /* How many siginfos to take. */
-};
-
-enum __ptrace_peeksiginfo_flags
-{
- /* Read signals from a shared (process wide) queue. */
- PTRACE_PEEKSIGINFO_SHARED = (1 << 0)
+ /* Get seccomp BPF filter metadata. */
+ PTRACE_SECCOMP_GET_METADATA = 0x420d
+#define PTRACE_SECCOMP_GET_METADATA PTRACE_SECCOMP_GET_METADATA
};
-/* Perform process tracing functions. REQUEST is one of the values
- above, and determines the action to be taken.
- For all requests except PTRACE_TRACEME, PID specifies the process to be
- traced.
- PID and the other arguments described above for the various requests should
- appear (those that are used for the particular request) as:
- pid_t PID, void *ADDR, int DATA, void *ADDR2
- after REQUEST. */
-extern long int ptrace (enum __ptrace_request __request, ...) __THROW;
+#include <bits/ptrace-shared.h>
__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
index 04100a2023..1bb6e4c8a6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2018 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
@@ -19,25 +19,35 @@
#define _SYS_UCONTEXT_H 1
#include <features.h>
-#include <signal.h>
-/* We need the signal context definitions even if they are not used
- included in <signal.h>. */
-#include <bits/sigcontext.h>
+#include <bits/types/sigset_t.h>
+#include <bits/types/stack_t.h>
+
+
+#ifdef __USE_MISC
+# define __ctx(fld) fld
+#else
+# define __ctx(fld) __ ## fld
+#endif
+
+struct __ctx(pt_regs);
#if __WORDSIZE == 32
/* Number of general registers. */
-# define NGREG 48
+# define __NGREG 48
+# ifdef __USE_MISC
+# define NGREG __NGREG
+# endif
/* Container for all general registers. */
-typedef unsigned long gregset_t[NGREG];
+typedef unsigned long gregset_t[__NGREG];
/* Container for floating-point registers and status */
typedef struct _libc_fpstate
{
- double fpregs[32];
- double fpscr;
+ double __ctx(fpregs)[32];
+ double __ctx(fpscr);
unsigned int _pad[2];
} fpregset_t;
@@ -45,18 +55,18 @@ typedef struct _libc_fpstate
Needs to be aligned on a 16-byte boundary. */
typedef struct _libc_vrstate
{
- unsigned int vrregs[32][4];
- unsigned int vrsave;
+ unsigned int __ctx(vrregs)[32][4];
+ unsigned int __ctx(vrsave);
unsigned int _pad[2];
- unsigned int vscr;
+ unsigned int __ctx(vscr);
} vrregset_t;
/* Context to describe whole processor state. */
typedef struct
{
- gregset_t gregs;
- fpregset_t fpregs;
- vrregset_t vrregs __attribute__((__aligned__(16)));
+ gregset_t __ctx(gregs);
+ fpregset_t __ctx(fpregs);
+ vrregset_t __ctx(vrregs) __attribute__((__aligned__(16)));
} mcontext_t;
#else
@@ -64,18 +74,24 @@ typedef struct
/* For 64-bit kernels with Altivec support, a machine context is exactly
* a sigcontext. For older kernel (without Altivec) the sigcontext matches
* the mcontext upto but not including the v_regs field. For kernels that
- * don't AT_HWCAP or return AT_HWCAP without PPC_FEATURE_HAS_ALTIVEC the
- * v_regs field may not exit and should not be referenced. The v_regd field
+ * don't set AT_HWCAP or return AT_HWCAP without PPC_FEATURE_HAS_ALTIVEC the
+ * v_regs field may not exist and should not be referenced. The v_regd field
* can be refernced safely only after verifying that PPC_FEATURE_HAS_ALTIVEC
* is set in AT_HWCAP. */
/* Number of general registers. */
-# define NGREG 48 /* includes r0-r31, nip, msr, lr, etc. */
-# define NFPREG 33 /* includes fp0-fp31 &fpscr. */
-# define NVRREG 34 /* includes v0-v31, vscr, & vrsave in split vectors */
-
-typedef unsigned long gregset_t[NGREG];
-typedef double fpregset_t[NFPREG];
+# define __NGREG 48 /* includes r0-r31, nip, msr, lr, etc. */
+# define __NFPREG 33 /* includes fp0-fp31 &fpscr. */
+# define __NVRREG 34 /* includes v0-v31, vscr, & vrsave in
+ split vectors */
+# ifdef __USE_MISC
+# define NGREG __NGREG
+# define NFPREG __NFPREG
+# define NVRREG __NVRREG
+# endif
+
+typedef unsigned long gregset_t[__NGREG];
+typedef double fpregset_t[__NFPREG];
/* Container for Altivec/VMX Vector Status and Control Register. Only 32-bits
but can only be copied to/from a 128-bit vector register. So we allocated
@@ -83,28 +99,28 @@ typedef double fpregset_t[NFPREG];
typedef struct _libc_vscr
{
unsigned int __pad[3];
- unsigned int vscr_word;
+ unsigned int __ctx(vscr_word);
} vscr_t;
/* Container for Altivec/VMX registers and status.
Must to be aligned on a 16-byte boundary. */
typedef struct _libc_vrstate
{
- unsigned int vrregs[32][4];
- vscr_t vscr;
- unsigned int vrsave;
+ unsigned int __ctx(vrregs)[32][4];
+ vscr_t __ctx(vscr);
+ unsigned int __ctx(vrsave);
unsigned int __pad[3];
} vrregset_t __attribute__((__aligned__(16)));
typedef struct {
unsigned long __glibc_reserved[4];
- int signal;
+ int __ctx(signal);
int __pad0;
- unsigned long handler;
- unsigned long oldmask;
- struct pt_regs *regs;
- gregset_t gp_regs;
- fpregset_t fp_regs;
+ unsigned long __ctx(handler);
+ unsigned long __ctx(oldmask);
+ struct __ctx(pt_regs) *__ctx(regs);
+ gregset_t __ctx(gp_regs);
+ fpregset_t __ctx(fp_regs);
/*
* To maintain compatibility with current implementations the sigcontext is
* extended by appending a pointer (v_regs) to a quadword type (elf_vrreg_t)
@@ -124,17 +140,17 @@ typedef struct {
* The entry with index 33 contains the vrsave as the first word (offset 0)
* within the quadword.
*/
- vrregset_t *v_regs;
- long vmx_reserve[NVRREG+NVRREG+1];
+ vrregset_t *__ctx(v_regs);
+ long __ctx(vmx_reserve)[__NVRREG+__NVRREG+1];
} mcontext_t;
#endif
/* Userlevel context. */
-typedef struct ucontext
+typedef struct ucontext_t
{
- unsigned long int uc_flags;
- struct ucontext *uc_link;
+ unsigned long int __ctx(uc_flags);
+ struct ucontext_t *uc_link;
stack_t uc_stack;
#if __WORDSIZE == 32
/*
@@ -160,17 +176,20 @@ typedef struct ucontext
* old ucontext_t; it ensures that uc_mcontext.regs and uc_sigmask
* are at the same offset as previously.
*/
- int uc_pad[7];
- union uc_regs_ptr {
- struct pt_regs *regs;
- mcontext_t *uc_regs;
+ int __glibc_reserved1[7];
+ union __ctx(uc_regs_ptr) {
+ struct __ctx(pt_regs) *__ctx(regs);
+ mcontext_t *__ctx(uc_regs);
} uc_mcontext;
sigset_t uc_sigmask;
- char uc_reg_space[sizeof(mcontext_t) + 12]; /* last for extensibility */
+ /* last for extensibility */
+ char __ctx(uc_reg_space)[sizeof(mcontext_t) + 12];
#else /* 64-bit */
sigset_t uc_sigmask;
mcontext_t uc_mcontext; /* last for extensibility */
#endif
} ucontext_t;
+#undef __ctx
+
#endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/user.h b/sysdeps/unix/sysv/linux/powerpc/sys/user.h
index 97459fba80..a7bb39b9e5 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/user.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/user.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2018 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
@@ -18,6 +18,7 @@
#ifndef _SYS_USER_H
#define _SYS_USER_H 1
+#include <stddef.h>
#include <features.h>
#include <asm/ptrace.h>
diff --git a/sysdeps/unix/sysv/linux/powerpc/syscall.S b/sysdeps/unix/sysv/linux/powerpc/syscall.S
index 17bc21543b..2da91721be 100644
--- a/sysdeps/unix/sysv/linux/powerpc/syscall.S
+++ b/sysdeps/unix/sysv/linux/powerpc/syscall.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/syscalls.list b/sysdeps/unix/sysv/linux/powerpc/syscalls.list
deleted file mode 100644
index 4f821e9b01..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/syscalls.list
+++ /dev/null
@@ -1,3 +0,0 @@
-# File name Caller Syscall name # args Strong name Weak names
-
-waitpid - waitpid Ci:ipi __waitpid waitpid
diff --git a/sysdeps/unix/sysv/linux/powerpc/sysconf.c b/sysdeps/unix/sysv/linux/powerpc/sysconf.c
new file mode 100644
index 0000000000..43f308be0e
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/sysconf.c
@@ -0,0 +1,75 @@
+/* Get system-specific information at run-time. Linux/powerpc version.
+ Copyright (C) 2017-2018 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/>. */
+
+#include <errno.h>
+#include <unistd.h>
+#include <sys/auxv.h>
+
+static long linux_sysconf (int name);
+
+static inline long
+auxv2sysconf_cache_associativity (unsigned long type)
+{
+ return (__getauxval (type) & 0xffff0000) >> 16;
+}
+
+static inline long
+auxv2sysconf_cache_linesize (unsigned long type)
+{
+ return __getauxval (type) & 0xffff;
+}
+
+/* Get the value of the system variable NAME. */
+long int
+__sysconf (int name)
+{
+ switch (name)
+ {
+ case _SC_LEVEL1_ICACHE_SIZE:
+ return __getauxval (AT_L1I_CACHESIZE);
+ case _SC_LEVEL1_ICACHE_ASSOC:
+ return auxv2sysconf_cache_associativity (AT_L1I_CACHEGEOMETRY);
+ case _SC_LEVEL1_ICACHE_LINESIZE:
+ return auxv2sysconf_cache_linesize (AT_L1I_CACHEGEOMETRY);
+ case _SC_LEVEL1_DCACHE_SIZE:
+ return __getauxval (AT_L1D_CACHESIZE);
+ case _SC_LEVEL1_DCACHE_ASSOC:
+ return auxv2sysconf_cache_associativity (AT_L1D_CACHEGEOMETRY);
+ case _SC_LEVEL1_DCACHE_LINESIZE:
+ return auxv2sysconf_cache_linesize (AT_L1D_CACHEGEOMETRY);
+ case _SC_LEVEL2_CACHE_SIZE:
+ return __getauxval (AT_L2_CACHESIZE);
+ case _SC_LEVEL2_CACHE_ASSOC:
+ return auxv2sysconf_cache_associativity (AT_L2_CACHEGEOMETRY);
+ case _SC_LEVEL2_CACHE_LINESIZE:
+ return auxv2sysconf_cache_linesize (AT_L2_CACHEGEOMETRY);
+ case _SC_LEVEL3_CACHE_SIZE:
+ return __getauxval (AT_L3_CACHESIZE);
+ case _SC_LEVEL3_CACHE_ASSOC:
+ return auxv2sysconf_cache_associativity (AT_L3_CACHEGEOMETRY);
+ case _SC_LEVEL3_CACHE_LINESIZE:
+ return auxv2sysconf_cache_linesize (AT_L3_CACHEGEOMETRY);
+ default:
+ return linux_sysconf (name);
+ }
+}
+
+/* Now the generic Linux version. */
+#undef __sysconf
+#define __sysconf static linux_sysconf
+#include "../sysconf.c"
diff --git a/sysdeps/unix/sysv/linux/powerpc/sysdep.c b/sysdeps/unix/sysv/linux/powerpc/sysdep.c
index 9744138f73..1eacc13185 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sysdep.c
+++ b/sysdeps/unix/sysv/linux/powerpc/sysdep.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c b/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c
index cb3d1fef0a..b17b4c00e5 100644
--- a/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c
+++ b/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c
@@ -1,5 +1,5 @@
/* Check __ppc_get_timebase_freq() for architecture changes
- Copyright (C) 2012-2016 Free Software Foundation, Inc.
+ Copyright (C) 2012-2018 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
diff --git a/sysdeps/unix/sysv/linux/powerpc/test-powerpc-linux-sysconf.c b/sysdeps/unix/sysv/linux/powerpc/test-powerpc-linux-sysconf.c
new file mode 100644
index 0000000000..6fa77037d2
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/test-powerpc-linux-sysconf.c
@@ -0,0 +1,73 @@
+/* Check use of sysconf() for cache geometries.
+ Copyright (C) 2017-2018 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/>. */
+
+/* Test use of sysconf() to get cache sizes, cache set associativity
+ and cache line sizes. */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <support/test-driver.h>
+
+#define call_str(f, name) f(name, #name)
+
+long
+do_sysconf (int name, const char * str)
+{
+ int rc = 0;
+ long val;
+ errno = 0;
+ val = sysconf (name);
+ if (val == -1) {
+ if (errno != EINVAL) {
+ printf("error: sysconf(%s): unexpected errno(%d)\n", str, errno);
+ exit (1);
+ }
+ printf ("info: sysconf(%s): unsupported\n", str);
+ rc = 1;
+ } else
+ printf ("sysconf(%s) = 0x%lx (%ld)\n", str, val, val);
+ return rc;
+}
+
+static int
+do_test (void)
+{
+ int rc = 0;
+
+ rc += call_str (do_sysconf, _SC_LEVEL1_ICACHE_SIZE);
+ rc += call_str (do_sysconf, _SC_LEVEL1_ICACHE_ASSOC);
+ rc += call_str (do_sysconf, _SC_LEVEL1_ICACHE_LINESIZE);
+ rc += call_str (do_sysconf, _SC_LEVEL1_DCACHE_SIZE);
+ rc += call_str (do_sysconf, _SC_LEVEL1_DCACHE_ASSOC);
+ rc += call_str (do_sysconf, _SC_LEVEL1_DCACHE_LINESIZE);
+ rc += call_str (do_sysconf, _SC_LEVEL2_CACHE_SIZE);
+ rc += call_str (do_sysconf, _SC_LEVEL2_CACHE_ASSOC);
+ rc += call_str (do_sysconf, _SC_LEVEL2_CACHE_LINESIZE);
+ rc += call_str (do_sysconf, _SC_LEVEL3_CACHE_SIZE);
+ rc += call_str (do_sysconf, _SC_LEVEL3_CACHE_ASSOC);
+ rc += call_str (do_sysconf, _SC_LEVEL3_CACHE_LINESIZE);
+
+ if (rc)
+ return EXIT_UNSUPPORTED;
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/time.c b/sysdeps/unix/sysv/linux/powerpc/time.c
index 797341944c..8814bcc14f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/time.c
+++ b/sysdeps/unix/sysv/linux/powerpc/time.c
@@ -1,5 +1,5 @@
/* time system call for Linux/PowerPC.
- Copyright (C) 2013-2016 Free Software Foundation, Inc.
+ Copyright (C) 2013-2018 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
@@ -17,6 +17,11 @@
<http://www.gnu.org/licenses/>. */
#ifdef SHARED
+# ifndef __powerpc64__
+# define time __redirect_time
+# else
+# define __redirect_time time
+# endif
# include <time.h>
# include <sysdep.h>
@@ -24,7 +29,26 @@
# include <libc-vdso.h>
# include <dl-machine.h>
-void *time_ifunc (void) asm ("time");
+# ifndef __powerpc64__
+# undef time
+
+time_t
+__time_vsyscall (time_t *t)
+{
+ return INLINE_VSYSCALL (time, 1, t);
+}
+
+/* __GI_time is defined as hidden and for ppc32 it enables the
+ compiler make a local call (symbol@local) for internal GLIBC usage. It
+ means the PLT won't be used and the ifunc resolver will be called directly.
+ For ppc64 a call to a function in another translation unit might use a
+ different toc pointer thus disallowing direct branchess and making internal
+ ifuncs calls safe. */
+# undef libc_hidden_def
+# define libc_hidden_def(name) \
+ __hidden_ver1 (__time_vsyscall, __GI_time, __time_vsyscall);
+
+# endif /* !__powerpc64__ */
static time_t
time_syscall (time_t *t)
@@ -42,42 +66,19 @@ time_syscall (time_t *t)
return result;
}
-void *
-time_ifunc (void)
-{
- PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565);
-
- /* If the vDSO is not available we fall back to the syscall. */
+# define INIT_ARCH() \
+ PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565); \
void *vdso_time = _dl_vdso_vsym ("__kernel_time", &linux2615);
- return (vdso_time ? VDSO_IFUNC_RET (vdso_time)
- : (void*)time_syscall);
-}
-asm (".type time, %gnu_indirect_function");
-/* This is doing "libc_hidden_def (time)" but the compiler won't
- * let us do it in C because it doesn't know we're defining time
- * here in this file. */
-asm (".globl __GI_time");
-
-/* __GI_time is defined as hidden and for ppc32 it enables the
- compiler make a local call (symbol@local) for internal GLIBC usage. It
- means the PLT won't be used and the ifunc resolver will be called directly.
- For ppc64 a call to a function in another translation unit might use a
- different toc pointer thus disallowing direct branchess and making internal
- ifuncs calls safe. */
-#ifdef __powerpc64__
-asm ("__GI_time = time");
-#else
-time_t
-__time_vsyscall (time_t *t)
-{
- return INLINE_VSYSCALL (time, 1, t);
-}
-asm ("__GI_time = __time_vsyscall");
-#endif
+/* If the vDSO is not available we fall back to the syscall. */
+libc_ifunc_hidden (__redirect_time, time,
+ vdso_time
+ ? VDSO_IFUNC_RET (vdso_time)
+ : (void *) time_syscall);
+libc_hidden_def (time)
#else
#include <sysdeps/posix/time.c>
-#endif
+#endif /* !SHARED */