From 8f0c4de31f46af5fde222379cd6e375a4821356a5de5f41ee60ed8f74802e8b4 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sat, 29 Mar 2014 22:02:34 +0000 Subject: [PATCH] Accepting request 228198 from home:Andreas_Schwab:Factory - powerpc-opt-power8.patch: remove broken POWER8 implementation of isnan, isinf, finite; fix missing static symbols - glibc-2.14-crypt.diff: update for file renaming OBS-URL: https://build.opensuse.org/request/show/228198 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=346 --- glibc-2.14-crypt.diff | 142 ++++++------ glibc-testsuite.changes | 7 + glibc-utils.changes | 7 + glibc.changes | 7 + powerpc-opt-power8.patch | 467 +++++++++------------------------------ 5 files changed, 193 insertions(+), 437 deletions(-) diff --git a/glibc-2.14-crypt.diff b/glibc-2.14-crypt.diff index 64cb5a3..ee1d657 100644 --- a/glibc-2.14-crypt.diff +++ b/glibc-2.14-crypt.diff @@ -1,7 +1,7 @@ -Index: glibc-2.18.90/Versions.def +Index: glibc-2.19/Versions.def =================================================================== ---- glibc-2.18.90.orig/Versions.def -+++ glibc-2.18.90/Versions.def +--- glibc-2.19.orig/Versions.def ++++ glibc-2.19/Versions.def @@ -45,6 +45,9 @@ libc { libcrypt { GLIBC_2.0 @@ -12,10 +12,10 @@ Index: glibc-2.18.90/Versions.def libdl { GLIBC_2.0 GLIBC_2.1 -Index: glibc-2.18.90/crypt/Makefile +Index: glibc-2.19/crypt/Makefile =================================================================== ---- glibc-2.18.90.orig/crypt/Makefile -+++ glibc-2.18.90/crypt/Makefile +--- glibc-2.19.orig/crypt/Makefile ++++ glibc-2.19/crypt/Makefile @@ -21,14 +21,18 @@ subdir := crypt @@ -37,10 +37,10 @@ Index: glibc-2.18.90/crypt/Makefile include ../Makeconfig -Index: glibc-2.18.90/crypt/Versions +Index: glibc-2.19/crypt/Versions =================================================================== ---- glibc-2.18.90.orig/crypt/Versions -+++ glibc-2.18.90/crypt/Versions +--- glibc-2.19.orig/crypt/Versions ++++ glibc-2.19/crypt/Versions @@ -3,3 +3,8 @@ libcrypt { crypt; crypt_r; encrypt; encrypt_r; fcrypt; setkey; setkey_r; } @@ -50,10 +50,10 @@ Index: glibc-2.18.90/crypt/Versions + crypt_gensalt; crypt_gensalt_rn; crypt_gensalt_ra; + } +} -Index: glibc-2.18.90/crypt/crypt-entry.c +Index: glibc-2.19/crypt/crypt-entry.c =================================================================== ---- glibc-2.18.90.orig/crypt/crypt-entry.c -+++ glibc-2.18.90/crypt/crypt-entry.c +--- glibc-2.19.orig/crypt/crypt-entry.c ++++ glibc-2.19/crypt/crypt-entry.c @@ -81,7 +81,7 @@ extern struct crypt_data _ufc_foobar; */ @@ -76,140 +76,130 @@ Index: glibc-2.18.90/crypt/crypt-entry.c } #endif +#endif -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/alpha/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/alpha/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/alpha/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/alpha/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/arm/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/arm/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/arm/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/arm/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/ia64/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/ia64/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/ia64/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/ia64/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libowcrypt.abilist +Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libowcrypt.abilist ++++ glibc-2.19/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libowcrypt.abilist +Index: glibc-2.19/shlib-versions =================================================================== ---- /dev/null -+++ glibc-2.18.90/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libowcrypt.abilist -@@ -0,0 +1,5 @@ -+OW_CRYPT_1.0 -+ OW_CRYPT_1.0 A -+ crypt_gensalt F -+ crypt_gensalt_ra F -+ crypt_gensalt_rn F -Index: glibc-2.18.90/shlib-versions -=================================================================== ---- glibc-2.18.90.orig/shlib-versions -+++ glibc-2.18.90/shlib-versions +--- glibc-2.19.orig/shlib-versions ++++ glibc-2.19/shlib-versions @@ -93,6 +93,7 @@ sh.*-.*-linux.* ld=ld-linux.so.2 GLIBC_ # This defines the shared library version numbers we will install. @@ -218,110 +208,120 @@ Index: glibc-2.18.90/shlib-versions # The gross patch for programs assuming broken locale implementations. sh.*-.*-.* libBrokenLocale=1 GLIBC_2.2 -Index: glibc-2.18.90/sysdeps/unix/sysv/linux/i386/nptl/libowcrypt.abilist +Index: glibc-2.19/sysdeps/unix/sysv/linux/i386/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/sysdeps/unix/sysv/linux/i386/nptl/libowcrypt.abilist ++++ glibc-2.19/sysdeps/unix/sysv/linux/i386/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libowcrypt.abilist +Index: glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libowcrypt.abilist ++++ glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt-le.abilist +Index: glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt-le.abilist ++++ glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt.abilist +Index: glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt-le.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt.abilist ++++ glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt-le.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libowcrypt.abilist +Index: glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libowcrypt.abilist ++++ glibc-2.19/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libowcrypt.abilist +Index: glibc-2.19/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libowcrypt.abilist ++++ glibc-2.19/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/sysdeps/unix/sysv/linux/sh/nptl/libowcrypt.abilist +Index: glibc-2.19/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/sysdeps/unix/sysv/linux/sh/nptl/libowcrypt.abilist ++++ glibc-2.19/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libowcrypt.abilist +Index: glibc-2.19/sysdeps/unix/sysv/linux/sh/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libowcrypt.abilist ++++ glibc-2.19/sysdeps/unix/sysv/linux/sh/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libowcrypt.abilist +Index: glibc-2.19/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libowcrypt.abilist ++++ glibc-2.19/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/sysdeps/unix/sysv/linux/x86_64/64/nptl/libowcrypt.abilist +Index: glibc-2.19/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/sysdeps/unix/sysv/linux/x86_64/64/nptl/libowcrypt.abilist ++++ glibc-2.19/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A + crypt_gensalt F + crypt_gensalt_ra F + crypt_gensalt_rn F -Index: glibc-2.18.90/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libowcrypt.abilist +Index: glibc-2.19/sysdeps/unix/sysv/linux/x86_64/64/nptl/libowcrypt.abilist =================================================================== --- /dev/null -+++ glibc-2.18.90/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libowcrypt.abilist ++++ glibc-2.19/sysdeps/unix/sysv/linux/x86_64/64/nptl/libowcrypt.abilist +@@ -0,0 +1,5 @@ ++OW_CRYPT_1.0 ++ OW_CRYPT_1.0 A ++ crypt_gensalt F ++ crypt_gensalt_ra F ++ crypt_gensalt_rn F +Index: glibc-2.19/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libowcrypt.abilist +=================================================================== +--- /dev/null ++++ glibc-2.19/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libowcrypt.abilist @@ -0,0 +1,5 @@ +OW_CRYPT_1.0 + OW_CRYPT_1.0 A diff --git a/glibc-testsuite.changes b/glibc-testsuite.changes index a395a37..c2059fe 100644 --- a/glibc-testsuite.changes +++ b/glibc-testsuite.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Sat Mar 29 16:41:25 UTC 2014 - schwab@suse.de + +- powerpc-opt-power8.patch: remove broken POWER8 implementation of isnan, + isinf, finite; fix missing static symbols +- glibc-2.14-crypt.diff: update for file renaming + ------------------------------------------------------------------- Thu Mar 27 08:40:20 UTC 2014 - schwab@suse.de diff --git a/glibc-utils.changes b/glibc-utils.changes index a395a37..c2059fe 100644 --- a/glibc-utils.changes +++ b/glibc-utils.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Sat Mar 29 16:41:25 UTC 2014 - schwab@suse.de + +- powerpc-opt-power8.patch: remove broken POWER8 implementation of isnan, + isinf, finite; fix missing static symbols +- glibc-2.14-crypt.diff: update for file renaming + ------------------------------------------------------------------- Thu Mar 27 08:40:20 UTC 2014 - schwab@suse.de diff --git a/glibc.changes b/glibc.changes index a395a37..c2059fe 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Sat Mar 29 16:41:25 UTC 2014 - schwab@suse.de + +- powerpc-opt-power8.patch: remove broken POWER8 implementation of isnan, + isinf, finite; fix missing static symbols +- glibc-2.14-crypt.diff: update for file renaming + ------------------------------------------------------------------- Thu Mar 27 08:40:20 UTC 2014 - schwab@suse.de diff --git a/powerpc-opt-power8.patch b/powerpc-opt-power8.patch index 24aa7f5..449f72f 100644 --- a/powerpc-opt-power8.patch +++ b/powerpc-opt-power8.patch @@ -31,6 +31,25 @@ * sysdeps/powerpc/powerpc64/power7/strcspn.S: New file: optimited strcspn for POWER7. +2014-03-12 Adhemerval Zanella + + [BZ #16689] + * sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S + (__bzero_ppc): Call memset@local instead of __memset_ppc@local for + static build. + * sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c: Build IFUNC + selector for static builds. + + * sysdeps/powerpc/powerpc64/multiarch/strspn.c (strspn): Build IFUNC + selector for static builds. + +2014-03-11 Adhemerval Zanella + + [BZ #16683] + * sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S (__bzero_ppc): + Define it for static builds as well. + (NO_BZERO_IMPL): Likewise. + 2014-03-11 Vidya Ranganathan * sysdeps/powerpc/powerpc64/power7/strspn.S: New file: Optimization. @@ -238,6 +257,42 @@ Index: glibc-2.19/string/strspn.c { const char *p; const char *a; +Index: glibc-2.19/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S +=================================================================== +--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S ++++ glibc-2.19/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S +@@ -19,8 +19,17 @@ + + #include + ++/* memset ifunc selector is not built for static and memset@local ++ for shared builds makes the linker point the call to the ifunc ++ selector. */ ++#ifdef SHARED ++# define MEMSET __memset_ppc ++#else ++# define MEMSET memset ++#endif ++ + ENTRY (__bzero_ppc) + mr r5,r4 + li r4,0 +- b __memset_ppc@local ++ b MEMSET@local + END (__bzero_ppc) +Index: glibc-2.19/sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c +=================================================================== +--- glibc-2.19.orig/sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c ++++ glibc-2.19/sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c +@@ -17,7 +17,7 @@ + . */ + + /* Define multiple versions only for definition in libc. */ +-#if defined SHARED && !defined NOT_IN_libc ++#ifndef NOT_IN_libc + # include + # include + # include "init-arch.h" Index: glibc-2.19/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h =================================================================== --- glibc-2.19.orig/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h @@ -254,80 +309,26 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile =================================================================== --- glibc-2.19.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +++ glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -@@ -4,7 +4,8 @@ sysdep_routines += s_isnan-power7 s_isna - s_copysign-ppc64 s_finite-power7 s_finite-ppc64 \ - s_finitef-ppc64 s_isinff-ppc64 s_isinf-power7 \ - s_isinf-ppc64 s_modf-power5+ s_modf-ppc64 \ -- s_modff-power5+ s_modff-ppc64 -+ s_modff-power5+ s_modff-ppc64 s_isnan-power8 \ -+ s_isinf-power8 s_finite-power8 - - libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ - s_isnan-power5 s_isnan-ppc64 s_llround-power6x \ -@@ -21,7 +22,9 @@ libm-sysdep_routines += s_isnan-power7 s +@@ -21,7 +21,8 @@ libm-sysdep_routines += s_isnan-power7 s s_logbl-power7 s_logb-ppc64 s_logbf-ppc64 \ s_logbl-ppc64 s_modf-power5+ s_modf-ppc64 \ s_modff-power5+ s_modff-ppc64 e_hypot-ppc64 \ - e_hypot-power7 e_hypotf-ppc64 e_hypotf-power7 + e_hypot-power7 e_hypotf-ppc64 e_hypotf-power7 \ -+ s_isnan-power8 s_isinf-power8 s_finite-power8 \ + s_llrint-power8 s_llround-power8 CFLAGS-s_logbf-power7.c = -mcpu=power7 CFLAGS-s_logbl-power7.c = -mcpu=power7 -Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S -=================================================================== ---- /dev/null -+++ glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S -@@ -0,0 +1,33 @@ -+/* isnan(). PowerPC64/POWER7 version. -+ Copyright (C) 2014 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 -+ . */ -+ -+#include -+#include -+ -+#undef hidden_def -+#define hidden_def(name) -+#undef weak_alias -+#define weak_alias(name, alias) -+#undef strong_alias -+#define strong_alias(name, alias) -+#undef compat_symbol -+#define compat_symbol(lib, name, symbol, ver) -+ -+#define __finite __finite_power8 -+ -+#include Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c =================================================================== --- glibc-2.19.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c +++ glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c -@@ -23,10 +23,13 @@ - - extern __typeof (__finite) __finite_ppc64 attribute_hidden; +@@ -25,8 +25,8 @@ extern __typeof (__finite) __finite_ppc6 extern __typeof (__finite) __finite_power7 attribute_hidden; -+extern __typeof (__finite) __finite_power8 attribute_hidden; libc_ifunc (__finite, - (hwcap & PPC_FEATURE_ARCH_2_06) - ? __finite_power7 -+ (hwcap2 & PPC_FEATURE2_ARCH_2_07) -+ ? __finite_power8 : + (hwcap & PPC_FEATURE_ARCH_2_06) + ? __finite_power7 : __finite_ppc64); @@ -337,75 +338,27 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c =================================================================== --- glibc-2.19.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c +++ glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c -@@ -23,10 +23,13 @@ - extern __typeof (__finitef) __finitef_ppc64 attribute_hidden; - /* The double-precision version also works for single-precision. */ +@@ -25,8 +25,8 @@ extern __typeof (__finitef) __finitef_pp extern __typeof (__finitef) __finite_power7 attribute_hidden; -+extern __typeof (__finitef) __finite_power8 attribute_hidden; libc_ifunc (__finitef, - (hwcap & PPC_FEATURE_ARCH_2_06) - ? __finite_power7 -+ (hwcap2 & PPC_FEATURE2_ARCH_2_07) -+ ? __finite_power8 : + (hwcap & PPC_FEATURE_ARCH_2_06) + ? __finite_power7 : __finitef_ppc64); weak_alias (__finitef, finitef) -Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S -=================================================================== ---- /dev/null -+++ glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S -@@ -0,0 +1,33 @@ -+/* isinf(). PowerPC64/POWER8 version. -+ Copyright (C) 2014 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 -+ . */ -+ -+#include -+#include -+ -+#undef hidden_def -+#define hidden_def(name) -+#undef weak_alias -+#define weak_alias(name, alias) -+#undef strong_alias -+#define strong_alias(name, alias) -+#undef compat_symbol -+#define compat_symbol(lib, name, alias, ver) -+ -+#define __isinf __isinf_power8 -+ -+#include Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c =================================================================== --- glibc-2.19.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c +++ glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c -@@ -23,10 +23,13 @@ - - extern __typeof (__isinf) __isinf_ppc64 attribute_hidden; +@@ -25,8 +25,8 @@ extern __typeof (__isinf) __isinf_ppc64 extern __typeof (__isinf) __isinf_power7 attribute_hidden; -+extern __typeof (__isinf) __isinf_power8 attribute_hidden; libc_ifunc (__isinf, - (hwcap & PPC_FEATURE_ARCH_2_06) - ? __isinf_power7 -+ (hwcap2 & PPC_FEATURE2_ARCH_2_07) -+ ? __isinf_power8 : + (hwcap & PPC_FEATURE_ARCH_2_06) + ? __isinf_power7 : __isinf_ppc64); @@ -415,76 +368,28 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c =================================================================== --- glibc-2.19.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c +++ glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c -@@ -24,10 +24,13 @@ - extern __typeof (__isinff) __isinff_ppc64 attribute_hidden; - /* The double-precision version also works for single-precision. */ +@@ -26,8 +26,8 @@ extern __typeof (__isinff) __isinff_ppc6 extern __typeof (__isinff) __isinf_power7 attribute_hidden; -+extern __typeof (__isinff) __isinf_power8 attribute_hidden; libc_ifunc (__isinff, - (hwcap & PPC_FEATURE_ARCH_2_06) - ? __isinf_power7 -+ (hwcap2 & PPC_FEATURE2_ARCH_2_07) -+ ? __isinf_power8 : + (hwcap & PPC_FEATURE_ARCH_2_06) + ? __isinf_power7 : __isinff_ppc64); weak_alias (__isinff, isinff) -Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S -=================================================================== ---- /dev/null -+++ glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S -@@ -0,0 +1,33 @@ -+/* isnan(). PowerPC64/POWER7 version. -+ Copyright (C) 2014 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 -+ . */ -+ -+#include -+#include -+ -+#undef hidden_def -+#define hidden_def(name) -+#undef weak_alias -+#define weak_alias(name, alias) -+#undef strong_alias -+#define strong_alias(name, alias) -+#undef compat_symbol -+#define compat_symbol(lib, name, symbol, ver) -+ -+#define __isnan __isnan_power8 -+ -+#include Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c =================================================================== --- glibc-2.19.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c +++ glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c -@@ -26,16 +26,19 @@ extern __typeof (__isnan) __isnan_power5 - extern __typeof (__isnan) __isnan_power6 attribute_hidden; - extern __typeof (__isnan) __isnan_power6x attribute_hidden; +@@ -28,14 +28,14 @@ extern __typeof (__isnan) __isnan_power6 extern __typeof (__isnan) __isnan_power7 attribute_hidden; -+extern __typeof (__isnan) __isnan_power8 attribute_hidden; libc_ifunc (__isnan, - (hwcap & PPC_FEATURE_ARCH_2_06) - ? __isnan_power7 : - (hwcap & PPC_FEATURE_POWER6_EXT) -+ (hwcap2 & PPC_FEATURE2_ARCH_2_07) -+ ? __isnan_power8 : + (hwcap & PPC_FEATURE_ARCH_2_06) + ? __isnan_power7 : + (hwcap & PPC_FEATURE_POWER6_EXT) @@ -504,11 +409,8 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c =================================================================== --- glibc-2.19.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c +++ glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c -@@ -25,16 +25,19 @@ extern __typeof (__isnanf) __isnan_power - extern __typeof (__isnanf) __isnan_power6 attribute_hidden; - extern __typeof (__isnanf) __isnan_power6x attribute_hidden; +@@ -27,14 +27,14 @@ extern __typeof (__isnanf) __isnan_power extern __typeof (__isnanf) __isnan_power7 attribute_hidden; -+extern __typeof (__isnanf) __isnan_power8 attribute_hidden; libc_ifunc (__isnanf, - (hwcap & PPC_FEATURE_ARCH_2_06) @@ -519,8 +421,6 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c - ? __isnan_power6 : - (hwcap & PPC_FEATURE_POWER5) - ? __isnan_power5 -+ (hwcap2 & PPC_FEATURE2_ARCH_2_07) -+ ? __isnan_power8 : + (hwcap & PPC_FEATURE_ARCH_2_06) + ? __isnan_power7 : + (hwcap & PPC_FEATURE_POWER6_EXT) @@ -714,6 +614,44 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c + return i; } +Index: glibc-2.19/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S +=================================================================== +--- glibc-2.19.orig/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S ++++ glibc-2.19/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S +@@ -18,10 +18,9 @@ + + #include + +-#if defined SHARED && !defined NOT_IN_libc +- + /* Copied from bzero.S to prevent the linker from inserting a stub +- between bzero and memset. */ ++ between bzero and memset. NOTE: this code should be positioned ++ before ENTRY/END_GEN_TB redefinition. */ + ENTRY (__bzero_ppc) + CALL_MCOUNT 3 + mr r5,r4 +@@ -29,6 +28,8 @@ ENTRY (__bzero_ppc) + b L(_memset) + END_GEN_TB (__bzero_ppc,TB_TOCLESS) + ++ ++#if defined SHARED && !defined NOT_IN_libc + # undef EALIGN + # define EALIGN(name, alignt, words) \ + .section ".text"; \ +@@ -48,9 +49,9 @@ END_GEN_TB (__bzero_ppc,TB_TOCLESS) + # undef libc_hidden_builtin_def + # define libc_hidden_builtin_def(name) \ + .globl __GI_memset; __GI_memset = __memset_ppc ++#endif + + /* Do not implement __bzero at powerpc64/memset.S. */ +-# define NO_BZERO_IMPL +-#endif ++#define NO_BZERO_IMPL + + #include Index: glibc-2.19/sysdeps/powerpc/powerpc64/multiarch/strcspn-power7.S =================================================================== --- /dev/null @@ -1291,7 +1229,7 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/multiarch/strspn.c + License along with the GNU C Library; if not, see + . */ + -+#if defined SHARED && !defined NOT_IN_libc ++#ifndef NOT_IN_libc +# include +# include +# include "init-arch.h" @@ -2258,209 +2196,6 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/power7/strspn.S + blr /* done */ +END(strspn) +libc_hidden_builtin_def (strspn) -Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S -=================================================================== ---- /dev/null -+++ glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S -@@ -0,0 +1,56 @@ -+/* isfinite(). PowerPC64/POWER8 version. -+ Copyright (C) 2014 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 -+ . */ -+ -+#include -+#include -+ -+#define MFVSRD_R3_V1 .byte 0x7c,0x23,0x00,0x66 /* mfvsrd r3,vs1 */ -+ -+/* int [r3] __finite ([fp1] x) */ -+ -+EALIGN (__finite, 4, 0) -+ CALL_MCOUNT 0 -+ MFVSRD_R3_V1 -+ lis r9,0x8010 -+ clrldi r3,r3,1 /* r3 = r3 & 0x8000000000000000 */ -+ rldicr r9,r9,32,31 /* r9 = (r9 << 32) & 0xffffffff */ -+ add r3,r3,r9 -+ rldicl r3,r3,1,63 -+ blr -+END (__finite) -+ -+hidden_def (__finite) -+weak_alias (__finite, finite) -+ -+/* It turns out that the 'double' version will also always work for -+ single-precision. */ -+strong_alias (__finite, __finitef) -+hidden_def (__finitef) -+weak_alias (__finitef, finitef) -+ -+#ifdef IS_IN_libm -+# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0) -+compat_symbol (libm, __finite, __finitel, GLIBC_2_0) -+compat_symbol (libm, finite, finitel, GLIBC_2_0) -+# endif -+#else -+# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0) -+compat_symbol (libc, __finite, __finitel, GLIBC_2_0); -+compat_symbol (libc, finite, finitel, GLIBC_2_0); -+# endif -+#endif -Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S -=================================================================== ---- /dev/null -+++ glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S -@@ -0,0 +1 @@ -+/* This function uses the same code as s_finite.S. */ -Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S -=================================================================== ---- /dev/null -+++ glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S -@@ -0,0 +1,61 @@ -+/* isinf(). PowerPC64/POWER8 version. -+ Copyright (C) 2014 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 -+ . */ -+ -+#include -+#include -+ -+#define MFVSRD_R3_V1 .byte 0x7c,0x23,0x00,0x66 /* mfvsrd r3,vs1 */ -+ -+/* int [r3] __isinf([fp1] x) */ -+ -+EALIGN (__isinf, 4, 0) -+ CALL_MCOUNT 0 -+ MFVSRD_R3_V1 -+ lis r9,0x7ff0 /* r9 = 0x7ff0 */ -+ rldicl r10,r3,0,1 /* r10 = r3 & (0x8000000000000000) */ -+ sldi r9,r9,32 /* r9 = r9 << 52 */ -+ cmpd cr7,r10,r9 /* fp1 & 0x7ff0000000000000 ? */ -+ beq cr7,L(inf) -+ li r3,0 /* Not inf */ -+ blr -+L(inf): -+ sradi r3,r3,63 /* r3 = r3 >> 63 */ -+ ori r3,r3,1 /* r3 = r3 | 0x1 */ -+ blr -+END (__isinf) -+ -+hidden_def (__isinf) -+weak_alias (__isinf, isinf) -+ -+/* It turns out that the 'double' version will also always work for -+ single-precision. */ -+strong_alias (__isinf, __isinff) -+hidden_def (__isinff) -+weak_alias (__isinff, isinff) -+ -+#ifdef NO_LONG_DOUBLE -+strong_alias (__isinf, __isinfl) -+weak_alias (__isinf, isinfl) -+#endif -+ -+#ifndef IS_IN_libm -+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) -+compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0); -+compat_symbol (libc, isinf, isinfl, GLIBC_2_0); -+# endif -+#endif -Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S -=================================================================== ---- /dev/null -+++ glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S -@@ -0,0 +1 @@ -+/* This function uses the same code as s_isinf.S. */ -Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S -=================================================================== ---- /dev/null -+++ glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S -@@ -0,0 +1,53 @@ -+/* isnan(). PowerPC64/POWER8 version. -+ Copyright (C) 2014 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 -+ . */ -+ -+#include -+#include -+ -+#define MFVSRD_R3_V1 .byte 0x7c,0x23,0x00,0x66 /* mfvsrd r3,vs1 */ -+ -+/* int [r3] __isnan([f1] x) */ -+ -+EALIGN (__isnan, 4, 0) -+ CALL_MCOUNT 0 -+ MFVSRD_R3_V1 -+ lis r9,0x7ff0 -+ clrldi r3,r3,1 /* r3 = r3 & 0x8000000000000000 */ -+ rldicr r9,r9,32,31 /* r9 = (r9 << 32) & 0xffffffff */ -+ subf r3,r3,r9 -+ rldicl r3,r3,1,63 -+ blr -+END (__isnan) -+ -+/* It turns out that the 'double' version will also always work for -+ single-precision. */ -+strong_alias (__isnan, __isnanf) -+hidden_def (__isnanf) -+weak_alias (__isnanf, isnanf) -+ -+#ifdef NO_LONG_DOUBLE -+strong_alias (__isnan, __isnanl) -+weak_alias (__isnan, isnanl) -+#endif -+ -+#ifndef IS_IN_libm -+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) -+compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0); -+compat_symbol (libc, isnan, isnanl, GLIBC_2_0); -+# endif -+#endif -Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isnanf.S -=================================================================== ---- /dev/null -+++ glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isnanf.S -@@ -0,0 +1 @@ -+/* This function uses the same code as s_isnan.S. */ Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S =================================================================== --- /dev/null