Hello community,

here is the log from the commit of package glibc for openSUSE:Factory checked 
in at 2014-04-08 17:05:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/glibc (Old)
 and      /work/SRC/openSUSE:Factory/.glibc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "glibc"

Changes:
--------
--- /work/SRC/openSUSE:Factory/glibc/glibc-testsuite.changes    2014-03-27 
09:28:40.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.glibc.new/glibc-testsuite.changes       
2014-04-08 17:05:53.000000000 +0200
@@ -1,0 +2,50 @@
+Mon Apr  7 09:06:32 UTC 2014 - sch...@suse.de
+
+- pthread-mutex-destroy.patch: Remove
+- pthread-mutex-trylock-elision.patch: Properly handle forced elision in
+  pthread_mutex_trylock (bnc#865968, BZ #16657)
+
+-------------------------------------------------------------------
+Thu Apr  3 07:32:24 UTC 2014 - sch...@suse.de
+
+- nextafterl-ibm-ldouble.patch: Correct IBM long double nextafterl
+  (bnc#871637, BZ #16739)
+
+-------------------------------------------------------------------
+Tue Apr  1 13:33:24 UTC 2014 - sch...@suse.de
+
+- Readd dependency on sysvinit.target to nscd.service (bnc#868422)
+- Make the nscd service part of the nss-lookup and nss-user-lookup targets
+  (bnc#871386)
+- Move _constraints back to main package and update it
+
+-------------------------------------------------------------------
+Tue Apr  1 07:55:19 UTC 2014 - sch...@suse.de
+
+- ppc64-copysign.patch: Fix ppc64le copysign overwriting parent stack
+  frame (BZ #16786)
+- aarch64-setcontext.patch: Fix aarch64 setcontext clobbering alternate
+  signal stack (BZ #16629)
+
+-------------------------------------------------------------------
+Mon Mar 31 13:22:56 UTC 2014 - sch...@suse.de
+
+- powerpc-opt-power8.patch: readd POWER8 implementation of isnan,
+  isinf, finite with fix for little endian (bnc#871353)
+- pthread-mutex-destroy.patch: Skip checks in pthread_mutex_destroy when
+  doing elision (bnc#865968)
+
+-------------------------------------------------------------------
+Sat Mar 29 16:41:25 UTC 2014 - sch...@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 - sch...@suse.de
+
+- check-pf-alloca.patch: remove use of alloca while collecting interface
+  addresses
+
+-------------------------------------------------------------------
glibc-utils.changes: same change
glibc.changes: same change

New:
----
  _constraints
  aarch64-setcontext.patch
  nextafterl-ibm-ldouble.patch
  ppc64-copysign.patch
  pthread-mutex-trylock-elision.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ glibc-testsuite.spec ++++++
--- /var/tmp/diff_new_pack.dVKdsZ/_old  2014-04-08 17:05:55.000000000 +0200
+++ /var/tmp/diff_new_pack.dVKdsZ/_new  2014-04-08 17:05:55.000000000 +0200
@@ -244,6 +244,10 @@
 Patch1005:      check-pf-alloca.patch
 # PATCH-FIX-UPSTREAM Fix use of half-initialized result in getaddrinfo when 
using nscd
 Patch1006:      getaddrinfo-uninit-result.patch
+# PATCH-FIX-UPSTREAM Fix ppc64le copysign overwriting parent stack frame (BZ 
#16786)
+Patch1007:      ppc64-copysign.patch
+# PATCH-FIX-UPSTREAM Correct IBM long double nextafterl (BZ #16739)
+Patch1008:      nextafterl-ibm-ldouble.patch
 
 ### 
 # Patches awaiting upstream approval
@@ -256,6 +260,10 @@
 Patch2002:      ldd-system-interp.patch
 # PATCH-FIX-UPSTREAM Don't close or flush stdio streams on abort (BZ #15436)
 Patch2003:      abort-no-flush.patch
+# PATCH-FIX-UPSTREAM Properly handle forced elision in pthread_mutex_trylock 
(BZ #16657)
+Patch2004:      pthread-mutex-trylock-elision.patch
+# PATCH-FIX-UPSTREAM Fix aarch64 setcontext clobbering alternate signal stack 
(BZ #16629)
+Patch2005:      aarch64-setcontext.patch
 
 # Non-glibc patches
 # PATCH-FIX-OPENSUSE Remove debianisms from manpages
@@ -463,11 +471,15 @@
 %patch1004 -p1
 %patch1005 -p1
 %patch1006 -p1
+%patch1007 -p1
+%patch1008 -p1
 
 %patch2000 -p1
 %patch2001 -p1
 %patch2002 -p1
 %patch2003 -p1
+%patch2004 -p1
+%patch2005 -p1
 
 %patch3000
 

glibc-utils.spec: same change
++++++ glibc.spec ++++++
--- /var/tmp/diff_new_pack.dVKdsZ/_old  2014-04-08 17:05:55.000000000 +0200
+++ /var/tmp/diff_new_pack.dVKdsZ/_new  2014-04-08 17:05:55.000000000 +0200
@@ -244,6 +244,10 @@
 Patch1005:      check-pf-alloca.patch
 # PATCH-FIX-UPSTREAM Fix use of half-initialized result in getaddrinfo when 
using nscd
 Patch1006:      getaddrinfo-uninit-result.patch
+# PATCH-FIX-UPSTREAM Fix ppc64le copysign overwriting parent stack frame (BZ 
#16786)
+Patch1007:      ppc64-copysign.patch
+# PATCH-FIX-UPSTREAM Correct IBM long double nextafterl (BZ #16739)
+Patch1008:      nextafterl-ibm-ldouble.patch
 
 ### 
 # Patches awaiting upstream approval
@@ -256,6 +260,10 @@
 Patch2002:      ldd-system-interp.patch
 # PATCH-FIX-UPSTREAM Don't close or flush stdio streams on abort (BZ #15436)
 Patch2003:      abort-no-flush.patch
+# PATCH-FIX-UPSTREAM Properly handle forced elision in pthread_mutex_trylock 
(BZ #16657)
+Patch2004:      pthread-mutex-trylock-elision.patch
+# PATCH-FIX-UPSTREAM Fix aarch64 setcontext clobbering alternate signal stack 
(BZ #16629)
+Patch2005:      aarch64-setcontext.patch
 
 # Non-glibc patches
 # PATCH-FIX-OPENSUSE Remove debianisms from manpages
@@ -463,11 +471,15 @@
 %patch1004 -p1
 %patch1005 -p1
 %patch1006 -p1
+%patch1007 -p1
+%patch1008 -p1
 
 %patch2000 -p1
 %patch2001 -p1
 %patch2002 -p1
 %patch2003 -p1
+%patch2004 -p1
+%patch2005 -p1
 
 %patch3000
 

++++++ aarch64-setcontext.patch ++++++
>From 4dc40de1ed58a1de5d960e59f20a04191f6820c9 Mon Sep 17 00:00:00 2001
From: Will Newton <will.new...@linaro.org>
Date: Wed, 12 Mar 2014 16:14:51 +0000
Subject: [PATCH 1/3] aarch64: Re-implement setcontext without rt_sigreturn
 syscall

The current implementation of setcontext uses rt_sigreturn to restore
the contents of registers. This contrasts with the way most other
architectures implement setcontext:

  powerpc64, mips, tile:

  Call rt_sigreturn if context was created by a call to a signal handler,
  otherwise restore in user code.

  powerpc32:

  Call swapcontext system call and don't call sigreturn or rt_sigreturn.

  x86_64, sparc, hppa, sh, ia64, m68k, s390, arm:

  Only support restoring "synchronous" contexts, that is contexts
  created by getcontext, and restoring in user code and don't call
  sigreturn or rt_sigreturn.

  alpha:

  Call sigreturn (but not rt_sigreturn) in all cases to do the restore.

The text of the setcontext manpage suggests that the requirement to be
able to restore a signal handler created context has been dropped from
SUSv2:

  If  the context was obtained by a call to a signal handler, then old
  standard text says that "program execution continues with the program
  instruction following the instruction interrupted by the signal".
  However, this sentence was removed in SUSv2, and the present verdict
  is "the result is unspecified".

Implementing setcontext by calling rt_sigreturn unconditionally causes
problems when used with sigaltstack as in BZ #16629. On this basis it
seems that aarch64 is broken and that new ports should only support
restoring contexts created with getcontext and do not need to call
rt_sigreturn at all.

This patch re-implements the aarch64 setcontext function to restore
the context in user code in a similar manner to x86_64 and other ports.

ChangeLog:

2014-03-13  Will Newton  <will.new...@linaro.org>

        [BZ #16629]
        * sysdeps/unix/sysv/linux/aarch64/setcontext.S (__setcontext):
        Re-implement to restore registers in user code and avoid
        rt_sigreturn system call.
---
 sysdeps/unix/sysv/linux/aarch64/setcontext.S | 147 +++++++++++++++++----------
 1 file changed, 92 insertions(+), 55 deletions(-)

Index: glibc-2.19/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S
===================================================================
--- glibc-2.19.orig/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S
+++ glibc-2.19/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S
@@ -22,68 +22,105 @@
 #include "ucontext_i.h"
 #include "ucontext-internal.h"
 
-/* int setcontext (const ucontext_t *ucp) */
+/*  int __setcontext (const ucontext_t *ucp)
 
-       .text
-
-ENTRY(__setcontext)
+  Restores the machine context in UCP and thereby resumes execution
+  in that context.
 
-       /* Create a signal frame on the stack:
+  This implementation is intended to be used for *synchronous* context
+  switches only.  Therefore, it does not have to restore anything
+  other than the PRESERVED state.  */
 
-               fp
-               lr
-               ...
-          sp-> rt_sigframe
-        */
-
-       stp     x29, x30, [sp, -16]!
-       cfi_adjust_cfa_offset (16)
-       cfi_rel_offset (x29, 0)
-       cfi_rel_offset (x30, 8)
-
-        mov     x29, sp
-       cfi_def_cfa_register (x29)
-
-       /* Allocate space for the sigcontext.  */
-       mov     w3, #((RT_SIGFRAME_SIZE + SP_ALIGN_SIZE) & SP_ALIGN_MASK)
-       sub     sp, sp, x3
-
-       /* Compute the base address of the ucontext structure.  */
-       add     x1, sp, #RT_SIGFRAME_UCONTEXT
-
-       /* Only ucontext is required in the frame, *copy* it in.  */
-
-#if UCONTEXT_SIZE % 16
-#error The implementation of setcontext.S assumes sizeof(ucontext_t) % 16 == 0
-#endif
-
-       mov     x2, #UCONTEXT_SIZE / 16
-0:
-       ldp     x3, x4, [x0], #16
-       stp     x3, x4, [x1], #16
-       sub     x2, x2, 1
-       cbnz    x2, 0b
+       .text
 
-       /* rt_sigreturn () -- no arguments, sp points to struct rt_sigframe.  */
-       mov     x8, SYS_ify (rt_sigreturn)
+ENTRY (__setcontext)
+       /* Save a copy of UCP.  */
+       mov     x9, x0
+
+       /* Set the signal mask with
+          rt_sigprocmask (SIG_SETMASK, mask, NULL, _NSIG/8).  */
+       mov     x0, #SIG_SETMASK
+       add     x1, x9, #UCONTEXT_SIGMASK
+       mov     x2, #0
+       mov     x3, #_NSIG8
+       mov     x8, SYS_ify (rt_sigprocmask)
        svc     0
-
-       /* Ooops we failed.  Recover the stack */
-
-       mov     sp, x29
-       cfi_def_cfa_register (sp)
-
-        ldp     x29, x30, [sp], 16
-       cfi_adjust_cfa_offset (16)
-       cfi_restore (x29)
-       cfi_restore (x30)
-       b       C_SYMBOL_NAME(__syscall_error)
-
+       cbz     x0, 1f
+       b       C_SYMBOL_NAME (__syscall_error)
+1:
+       /* Restore the general purpose registers.  */
+       mov     x0, x9
+       cfi_def_cfa (x0, 0)
+       cfi_offset (x18, oX0 + 18 * SZREG)
+       cfi_offset (x19, oX0 + 19 * SZREG)
+       cfi_offset (x20, oX0 + 20 * SZREG)
+       cfi_offset (x21, oX0 + 21 * SZREG)
+       cfi_offset (x22, oX0 + 22 * SZREG)
+       cfi_offset (x23, oX0 + 23 * SZREG)
+       cfi_offset (x24, oX0 + 24 * SZREG)
+       cfi_offset (x25, oX0 + 25 * SZREG)
+       cfi_offset (x26, oX0 + 26 * SZREG)
+       cfi_offset (x27, oX0 + 27 * SZREG)
+       cfi_offset (x28, oX0 + 28 * SZREG)
+       cfi_offset (x29, oX0 + 29 * SZREG)
+       cfi_offset (x30, oX0 + 30 * SZREG)
+
+       cfi_offset ( d8, oV0 + 8 * SZVREG)
+       cfi_offset ( d9, oV0 + 9 * SZVREG)
+       cfi_offset (d10, oV0 + 10 * SZVREG)
+       cfi_offset (d11, oV0 + 11 * SZVREG)
+       cfi_offset (d12, oV0 + 12 * SZVREG)
+       cfi_offset (d13, oV0 + 13 * SZVREG)
+       cfi_offset (d14, oV0 + 14 * SZVREG)
+       cfi_offset (d15, oV0 + 15 * SZVREG)
+       ldp     x18, x19, [x0, oX0 + 18 * SZREG]
+       ldp     x20, x21, [x0, oX0 + 20 * SZREG]
+       ldp     x22, x23, [x0, oX0 + 22 * SZREG]
+       ldp     x24, x25, [x0, oX0 + 24 * SZREG]
+       ldp     x26, x27, [x0, oX0 + 26 * SZREG]
+       ldp     x28, x29, [x0, oX0 + 28 * SZREG]
+       ldr     x30,      [x0, oX0 + 30 * SZREG]
+       ldr     x2, [x0, oSP]
+       mov     sp, x2
+
+       /* Check for FP SIMD context.  */
+       add     x2, x0, #oEXTENSION
+
+       mov     w3, #(FPSIMD_MAGIC & 0xffff)
+       movk    w3, #(FPSIMD_MAGIC >> 16), lsl #16
+       ldr     w1, [x2, #oHEAD + oMAGIC]
+       cmp     w1, w3
+       b.ne    2f
+
+       /* Restore the FP SIMD context.  */
+       add     x3, x2, #oV0 + 8 * SZVREG
+       ldp      d8,  d9, [x3], #2 * SZVREG
+       ldp     d10, d11, [x3], #2 * SZVREG
+       ldp     d12, d13, [x3], #2 * SZVREG
+       ldp     d14, d15, [x3], #2 * SZVREG
+
+       add     x3, x2, oFPSR
+
+       ldr     w4, [x3]
+       msr     fpsr, x4
+
+       ldr     w4, [x3, oFPCR - oFPSR]
+       msr     fpcr, x4
+
+2:
+       ldr     x16, [x0, oPC]
+       /* Restore arg registers.  */
+       ldp     x2, x3, [x0, oX0 + 2 * SZREG]
+       ldp     x4, x5, [x0, oX0 + 4 * SZREG]
+       ldp     x6, x7, [x0, oX0 + 6 * SZREG]
+       ldp     x0, x1, [x0, oX0 + 0 * SZREG]
+       /* Jump to the new pc value.  */
+       br      x16
 PSEUDO_END (__setcontext)
 weak_alias (__setcontext, setcontext)
 
-ENTRY(__startcontext)
+ENTRY (__startcontext)
        mov     x0, x19
        cbnz    x0, __setcontext
-1:     b       HIDDEN_JUMPTARGET(_exit)
-END(__startcontext)
+1:     b       HIDDEN_JUMPTARGET (_exit)
+END (__startcontext)
++++++ check-pf-alloca.patch ++++++
--- /var/tmp/diff_new_pack.dVKdsZ/_old  2014-04-08 17:05:55.000000000 +0200
+++ /var/tmp/diff_new_pack.dVKdsZ/_new  2014-04-08 17:05:55.000000000 +0200
@@ -9,95 +9,155 @@
 ===================================================================
 --- glibc-2.19.orig/sysdeps/unix/sysv/linux/check_pf.c
 +++ glibc-2.19/sysdeps/unix/sysv/linux/check_pf.c
-@@ -139,9 +139,10 @@ make_request (int fd, pid_t pid)
+@@ -106,6 +106,11 @@ cache_valid_p (void)
+ static struct cached_data *
+ make_request (int fd, pid_t pid)
+ {
++  struct cached_data *result = NULL;
++
++  size_t result_len = 0;
++  size_t result_cap = 32;
++
+   struct req
+   {
+     struct nlmsghdr nlh;
+@@ -137,19 +142,9 @@ make_request (int fd, pid_t pid)
+ #else
+   const size_t buf_size = __getpagesize ();
  #endif
-   bool use_malloc = false;
+-  bool use_malloc = false;
    char *buf;
-+  size_t alloca_used = 0;
  
-   if (__libc_use_alloca (buf_size))
+-  if (__libc_use_alloca (buf_size))
 -    buf = alloca (buf_size);
-+    buf = alloca_account (buf_size, alloca_used);
-   else
-     {
-       buf = malloc (buf_size);
-@@ -163,6 +164,7 @@ make_request (int fd, pid_t pid)
-   {
-     struct in6addrinfo info;
-     struct in6ailist *next;
-+    bool use_malloc;
-   } *in6ailist = NULL;
-   size_t in6ailistlen = 0;
-   bool seen_ipv4 = false;
-@@ -180,10 +182,10 @@ make_request (int fd, pid_t pid)
- 
-       ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0));
-       if (read_len < 0)
+-  else
+-    {
+-      buf = malloc (buf_size);
+-      if (buf != NULL)
+-      use_malloc = true;
+-      else
 -      goto out_fail;
-+      goto out_fail2;
+-    }
++  buf = alloca (buf_size);
  
-       if (msg.msg_flags & MSG_TRUNC)
--      goto out_fail;
-+      goto out_fail2;
+   struct iovec iov = { buf, buf_size };
+ 
+@@ -159,12 +154,7 @@ make_request (int fd, pid_t pid)
+     goto out_fail;
  
-       struct nlmsghdr *nlmh;
-       for (nlmh = (struct nlmsghdr *) buf;
-@@ -239,7 +241,19 @@ make_request (int fd, pid_t pid)
+   bool done = false;
+-  struct in6ailist
+-  {
+-    struct in6addrinfo info;
+-    struct in6ailist *next;
+-  } *in6ailist = NULL;
+-  size_t in6ailistlen = 0;
++
+   bool seen_ipv4 = false;
+   bool seen_ipv6 = false;
+ 
+@@ -239,28 +229,36 @@ make_request (int fd, pid_t pid)
                    }
                }
  
 -            struct in6ailist *newp = alloca (sizeof (*newp));
-+            struct in6ailist *newp;
-+            if (__libc_use_alloca (alloca_used + sizeof (*newp)))
-+              {
-+                newp = alloca_account (sizeof (*newp), alloca_used);
-+                newp->use_malloc = false;
-+              }
-+            else
+-            newp->info.flags = (((ifam->ifa_flags
+-                                  & (IFA_F_DEPRECATED
+-                                     | IFA_F_OPTIMISTIC))
+-                                 ? in6ai_deprecated : 0)
+-                                | ((ifam->ifa_flags
+-                                    & IFA_F_HOMEADDRESS)
+-                                   ? in6ai_homeaddress : 0));
+-            newp->info.prefixlen = ifam->ifa_prefixlen;
+-            newp->info.index = ifam->ifa_index;
++            if (result_len == 0 || result_len == result_cap)
 +              {
-+                newp = malloc (sizeof (*newp));
-+                if (newp == NULL)
-+                  goto out_fail2;
-+                newp->use_malloc = true;
++                result_cap = 2 * result_cap;
++                result = realloc (result, sizeof (*result)
++                                  + result_cap * sizeof (struct in6addrinfo));
 +              }
-             newp->info.flags = (((ifam->ifa_flags
-                                   & (IFA_F_DEPRECATED
-                                      | IFA_F_OPTIMISTIC))
-@@ -275,7 +289,7 @@ make_request (int fd, pid_t pid)
-       result = malloc (sizeof (*result)
-                      + in6ailistlen * sizeof (struct in6addrinfo));
-       if (result == NULL)
--      goto out_fail;
-+      goto out_fail2;
++
++            if (!result)
++              goto out_fail;
++
++            struct in6addrinfo *info = &result->in6ai[result_len++];
++
++            info->flags = (((ifam->ifa_flags
++                             & (IFA_F_DEPRECATED
++                                | IFA_F_OPTIMISTIC))
++                            ? in6ai_deprecated : 0)
++                           | ((ifam->ifa_flags
++                               & IFA_F_HOMEADDRESS)
++                              ? in6ai_homeaddress : 0));
++            info->prefixlen = ifam->ifa_prefixlen;
++            info->index = ifam->ifa_index;
+             if (ifam->ifa_family == AF_INET)
+               {
+-                newp->info.addr[0] = 0;
+-                newp->info.addr[1] = 0;
+-                newp->info.addr[2] = htonl (0xffff);
+-                newp->info.addr[3] = *(const in_addr_t *) address;
++                info->addr[0] = 0;
++                info->addr[1] = 0;
++                info->addr[2] = htonl (0xffff);
++                info->addr[3] = *(const in_addr_t *) address;
+               }
+             else
+-              memcpy (newp->info.addr, address, sizeof (newp->info.addr));
+-            newp->next = in6ailist;
+-            in6ailist = newp;
+-            ++in6ailistlen;
++              memcpy (info->addr, address, sizeof (info->addr));
+           }
+         else if (nlmh->nlmsg_type == NLMSG_DONE)
+           /* We found the end, leave the loop.  */
+@@ -269,42 +267,29 @@ make_request (int fd, pid_t pid)
+     }
+   while (! done);
  
+-  struct cached_data *result;
+-  if (seen_ipv6 && in6ailist != NULL)
++  if (seen_ipv6 && result != NULL)
+     {
+-      result = malloc (sizeof (*result)
+-                     + in6ailistlen * sizeof (struct in6addrinfo));
+-      if (result == NULL)
+-      goto out_fail;
+-
        result->timestamp = get_nl_timestamp ();
        result->usecnt = 2;
-@@ -286,7 +300,10 @@ make_request (int fd, pid_t pid)
-       do
-       {
-         result->in6ai[--in6ailistlen] = in6ailist->info;
+       result->seen_ipv4 = seen_ipv4;
+       result->seen_ipv6 = true;
+-      result->in6ailen = in6ailistlen;
+-
+-      do
+-      {
+-        result->in6ai[--in6ailistlen] = in6ailist->info;
 -        in6ailist = in6ailist->next;
-+        struct in6ailist *next = in6ailist->next;
-+        if (in6ailist->use_malloc)
-+          free (in6ailist);
-+        in6ailist = next;
-       }
-       while (in6ailist != NULL);
+-      }
+-      while (in6ailist != NULL);
++      result->in6ailen = result_len;
      }
-@@ -302,7 +319,15 @@ make_request (int fd, pid_t pid)
-     free (buf);
+   else
+     {
++      free (result);
++
+       atomic_add (&noai6ai_cached.usecnt, 2);
+       noai6ai_cached.seen_ipv4 = seen_ipv4;
+       noai6ai_cached.seen_ipv6 = seen_ipv6;
+       result = &noai6ai_cached;
+     }
+ 
+-  if (use_malloc)
+-    free (buf);
    return result;
  
 -out_fail:
-+ out_fail2:
-+  while (in6ailist != NULL)
-+    {
-+      struct in6ailist *next = in6ailist->next;
-+      if (in6ailist->use_malloc)
-+      free (in6ailist);
-+      in6ailist = next;
-+    }
+-  if (use_malloc)
+-    free (buf);
 + out_fail:
-   if (use_malloc)
-     free (buf);
++
++  free (result);
    return NULL;
+ }
+ 


++++++ glibc-2.14-crypt.diff ++++++
--- /var/tmp/diff_new_pack.dVKdsZ/_old  2014-04-08 17:05:55.000000000 +0200
+++ /var/tmp/diff_new_pack.dVKdsZ/_new  2014-04-08 17:05:55.000000000 +0200
@@ -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 @@
  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 @@
  
  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 @@
 +    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 @@
  }
  #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 @@
  
  # 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.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.19/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libowcrypt.abilist
 ===================================================================
 --- /dev/null
-+++ glibc-2.18.90/sysdeps/unix/sysv/linux/i386/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/powerpc32/fpu/nptl/libowcrypt.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/powerpc32/fpu/nptl/libowcrypt.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-le.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-le.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/powerpc/powerpc64/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/powerpc/powerpc64/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-32/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-32/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/s390/s390-64/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/s390/s390-64/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/sh/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/sh/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/sparc32/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/sparc32/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/sparc/sparc64/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/sparc/sparc64/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/64/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/64/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.18.90/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libowcrypt.abilist
+Index: glibc-2.19/sysdeps/unix/sysv/linux/x86_64/x32/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/x32/nptl/libowcrypt.abilist
 @@ -0,0 +1,5 @@
 +OW_CRYPT_1.0
 + OW_CRYPT_1.0 A

++++++ nextafterl-ibm-ldouble.patch ++++++
2014-04-02  Alan Modra  <amo...@gmail.com>

        [BZ #16739]
        * sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c (__nextafterl): Correct
        output when value is near a power of two.  Use int64_t for lx and
        remove casts.  Use decimal rather than hex exponent constants.
        Don't use long double multiplication when double will suffice.
        * math/libm-test.inc (nextafter_test_data): Add tests.

Index: glibc-2.19/math/libm-test.inc
===================================================================
--- glibc-2.19.orig/math/libm-test.inc
+++ glibc-2.19/math/libm-test.inc
@@ -10528,6 +10528,14 @@ static const struct test_ff_f_data nexta
     // XXX Enable once gcc is fixed.
     //TEST_ff_f (nextafter, 0x0.00000040000000000000p-16385L, -0.1L, 
0x0.0000003ffffffff00000p-16385L),
 #endif
+#if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
+    TEST_ff_f (nextafter, 1.0L, -10.0L, 1.0L-0x1p-106L, NO_EXCEPTION),
+    TEST_ff_f (nextafter, 1.0L, 10.0L, 1.0L+0x1p-105L, NO_EXCEPTION),
+    TEST_ff_f (nextafter, 1.0L-0x1p-106L, 10.0L, 1.0L, NO_EXCEPTION),
+    TEST_ff_f (nextafter, -1.0L, -10.0L, -1.0L-0x1p-105L, NO_EXCEPTION),
+    TEST_ff_f (nextafter, -1.0L, 10.0L, -1.0L+0x1p-106L, NO_EXCEPTION),
+    TEST_ff_f (nextafter, -1.0L+0x1p-106L, -10.0L, -1.0L, NO_EXCEPTION),
+#endif
 
     /* XXX We need the hexadecimal FP number representation here for further
        tests.  */
Index: glibc-2.19/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
===================================================================
--- glibc-2.19.orig/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
+++ glibc-2.19/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
@@ -30,8 +30,7 @@ static char rcsid[] = "$NetBSD: $";
 
 long double __nextafterl(long double x, long double y)
 {
-       int64_t hx,hy,ihx,ihy;
-       uint64_t lx;
+       int64_t hx, hy, ihx, ihy, lx;
        double xhi, xlo, yhi;
 
        ldbl_unpack (x, &xhi, &xlo);
@@ -76,19 +75,28 @@ long double __nextafterl(long double x,
              u = math_opt_barrier (x);
              x -= __LDBL_DENORM_MIN__;
              if (ihx < 0x0360000000000000LL
-                 || (hx > 0 && (int64_t) lx <= 0)
-                 || (hx < 0 && (int64_t) lx > 1)) {
+                 || (hx > 0 && lx <= 0)
+                 || (hx < 0 && lx > 1)) {
                u = u * u;
                math_force_eval (u);            /* raise underflow flag */
              }
              return x;
            }
-           if (ihx < 0x06a0000000000000LL) { /* ulp will denormal */
-             INSERT_WORDS64 (yhi, hx & (0x7ffLL<<52));
-             u = yhi;
-             u *= 0x1.0000000000000p-105L;
+           /* If the high double is an exact power of two and the low
+              double is the opposite sign, then 1ulp is one less than
+              what we might determine from the high double.  Similarly
+              if X is an exact power of two, and positive, because
+              making it a little smaller will result in the exponent
+              decreasing by one and normalisation of the mantissa.   */
+           if ((hx & 0x000fffffffffffffLL) == 0
+               && ((lx != 0 && (hx ^ lx) < 0)
+                   || (lx == 0 && hx >= 0)))
+             ihx -= 1LL << 52;
+           if (ihx < (106LL << 52)) { /* ulp will denormal */
+             INSERT_WORDS64 (yhi, ihx & (0x7ffLL<<52));
+             u = yhi * 0x1p-105;
            } else {
-             INSERT_WORDS64 (yhi, (hx & (0x7ffLL<<52))-(0x069LL<<52));
+             INSERT_WORDS64 (yhi, (ihx & (0x7ffLL<<52))-(105LL<<52));
              u = yhi;
            }
            return x - u;
@@ -103,8 +111,8 @@ long double __nextafterl(long double x,
              u = math_opt_barrier (x);
              x += __LDBL_DENORM_MIN__;
              if (ihx < 0x0360000000000000LL
-                 || (hx > 0 && (int64_t) lx < 0 && lx != 0x8000000000000001LL)
-                 || (hx < 0 && (int64_t) lx >= 0)) {
+                 || (hx > 0 && lx < 0 && lx != 0x8000000000000001LL)
+                 || (hx < 0 && lx >= 0)) {
                u = u * u;
                math_force_eval (u);            /* raise underflow flag */
              }
@@ -112,12 +120,21 @@ long double __nextafterl(long double x,
                x = -0.0L;
              return x;
            }
-           if (ihx < 0x06a0000000000000LL) { /* ulp will denormal */
-             INSERT_WORDS64 (yhi, hx & (0x7ffLL<<52));
-             u = yhi;
-             u *= 0x1.0000000000000p-105L;
+           /* If the high double is an exact power of two and the low
+              double is the opposite sign, then 1ulp is one less than
+              what we might determine from the high double.  Similarly
+              if X is an exact power of two, and negative, because
+              making it a little larger will result in the exponent
+              decreasing by one and normalisation of the mantissa.   */
+           if ((hx & 0x000fffffffffffffLL) == 0
+               && ((lx != 0 && (hx ^ lx) < 0)
+                   || (lx == 0 && hx < 0)))
+             ihx -= 1LL << 52;
+           if (ihx < (106LL << 52)) { /* ulp will denormal */
+             INSERT_WORDS64 (yhi, ihx & (0x7ffLL<<52));
+             u = yhi * 0x1p-105;
            } else {
-             INSERT_WORDS64 (yhi, (hx & (0x7ffLL<<52))-(0x069LL<<52));
+             INSERT_WORDS64 (yhi, (ihx & (0x7ffLL<<52))-(105LL<<52));
              u = yhi;
            }
            return x + u;
++++++ nscd.service ++++++
--- /var/tmp/diff_new_pack.dVKdsZ/_old  2014-04-08 17:05:55.000000000 +0200
+++ /var/tmp/diff_new_pack.dVKdsZ/_new  2014-04-08 17:05:55.000000000 +0200
@@ -1,5 +1,8 @@
 [Unit]
 Description=Name Service Cache Daemon
+After=sysinit.target
+Wants=nss-lookup.target nss-user-lookup.target
+Before=nss-lookup.target nss-user-lookup.target
 
 [Service]
 Type=forking

++++++ powerpc-opt-power8.patch ++++++
--- /var/tmp/diff_new_pack.dVKdsZ/_old  2014-04-08 17:05:55.000000000 +0200
+++ /var/tmp/diff_new_pack.dVKdsZ/_new  2014-04-08 17:05:55.000000000 +0200
@@ -1,3 +1,16 @@
+2014-03-31  Adhemerval Zanella  <azane...@linux.vnet.ibm.com>
+
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S (MFVSRD_R3_V1):
+       Encode instruction correctly in little endian.
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S (MFVSRD_R3_V1):
+       Likewise.
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S (MFVSRD_R3_V1):
+       Likewise.
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S (MFVSRD_R3_V1):
+       Likewise.
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S (MFVSRD_R3_V1):
+       Likewise.
+
 2014-03-20  Adhemerval Zanella  <azane...@linux.vnet.ibm.com>
            Vidya Ranganathan  <vi...@linux.vnet.ibm.com>
 
@@ -31,6 +44,25 @@
        * sysdeps/powerpc/powerpc64/power7/strcspn.S: New file: optimited
        strcspn for POWER7.
 
+2014-03-12  Adhemerval Zanella  <azane...@linux.vnet.ibm.com>
+
+       [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  <azane...@linux.vnet.ibm.com>
+
+       [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  <vi...@linux.vnet.ibm.com>
 
        * sysdeps/powerpc/powerpc64/power7/strspn.S: New file: Optimization.
@@ -238,6 +270,42 @@
  {
    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 <sysdep.h>
+ 
++/* 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 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* Define multiple versions only for definition in libc.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#ifndef NOT_IN_libc
+ # include <string.h>
+ # include <strings.h>
+ # 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
@@ -714,6 +782,44 @@
 +
    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 <sysdep.h>
+ 
+-#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 <sysdeps/powerpc/powerpc64/memset.S>
 Index: glibc-2.19/sysdeps/powerpc/powerpc64/multiarch/strcspn-power7.S
 ===================================================================
 --- /dev/null
@@ -1291,7 +1397,7 @@
 +   License along with the GNU C Library; if not, see
 +   <http://www.gnu.org/licenses/>.  */
 +
-+#if defined SHARED && !defined NOT_IN_libc
++#ifndef NOT_IN_libc
 +# include <string.h>
 +# include <shlib-compat.h>
 +# include "init-arch.h"
@@ -2262,7 +2368,7 @@
 ===================================================================
 --- /dev/null
 +++ glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S
-@@ -0,0 +1,56 @@
+@@ -0,0 +1,61 @@
 +/* isfinite().  PowerPC64/POWER8 version.
 +   Copyright (C) 2014 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -2282,9 +2388,14 @@
 +   <http://www.gnu.org/licenses/>.  */
 +
 +#include <sysdep.h>
++#include <endian.h>
 +#include <math_ldbl_opt.h>
 +
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++#define MFVSRD_R3_V1  .byte 0x66,0x00,0x23,0x7c     /* mfvsrd  r3,vs1  */
++#else
 +#define MFVSRD_R3_V1  .byte 0x7c,0x23,0x00,0x66     /* mfvsrd  r3,vs1  */
++#endif
 +
 +/* int [r3] __finite ([fp1] x)  */
 +
@@ -2329,7 +2440,7 @@
 ===================================================================
 --- /dev/null
 +++ glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S
-@@ -0,0 +1,61 @@
+@@ -0,0 +1,66 @@
 +/* isinf().  PowerPC64/POWER8 version.
 +   Copyright (C) 2014 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -2349,9 +2460,14 @@
 +   <http://www.gnu.org/licenses/>.  */
 +
 +#include <sysdep.h>
++#include <endian.h>
 +#include <math_ldbl_opt.h>
 +
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++#define MFVSRD_R3_V1  .byte 0x66,0x00,0x23,0x7c     /* mfvsrd  r3,vs1  */
++#else
 +#define MFVSRD_R3_V1  .byte 0x7c,0x23,0x00,0x66     /* mfvsrd  r3,vs1  */
++#endif
 +
 +/* int [r3] __isinf([fp1] x)  */
 +
@@ -2401,7 +2517,7 @@
 ===================================================================
 --- /dev/null
 +++ glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
-@@ -0,0 +1,53 @@
+@@ -0,0 +1,58 @@
 +/* isnan().  PowerPC64/POWER8 version.
 +   Copyright (C) 2014 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -2421,9 +2537,14 @@
 +   <http://www.gnu.org/licenses/>.  */
 +
 +#include <sysdep.h>
++#include <endian.h>
 +#include <math_ldbl_opt.h>
 +
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++#define MFVSRD_R3_V1  .byte 0x66,0x00,0x23,0x7c     /* mfvsrd  r3,vs1  */
++#else
 +#define MFVSRD_R3_V1  .byte 0x7c,0x23,0x00,0x66     /* mfvsrd  r3,vs1  */
++#endif
 +
 +/* int [r3] __isnan([f1] x)  */
 +
@@ -2465,7 +2586,7 @@
 ===================================================================
 --- /dev/null
 +++ glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S
-@@ -0,0 +1,45 @@
+@@ -0,0 +1,50 @@
 +/* Round double to long int.  POWER8 PowerPC64 version.
 +   Copyright (C) 2014 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -2485,9 +2606,14 @@
 +   <http://www.gnu.org/licenses/>.  */
 +
 +#include <sysdep.h>
++#include <endian.h>
 +#include <math_ldbl_opt.h>
 +
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++#define MFVSRD_R3_V1  .byte 0x66,0x00,0x23,0x7c     /* mfvsrd  r3,vs1  */
++#else
 +#define MFVSRD_R3_V1  .byte 0x7c,0x23,0x00,0x66     /* mfvsrd  r3,vs1  */
++#endif
 +
 +/* long long int[r3] __llrint (double x[fp1])  */
 +ENTRY (__llrint)
@@ -2515,7 +2641,7 @@
 ===================================================================
 --- /dev/null
 +++ glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
-@@ -0,0 +1,47 @@
+@@ -0,0 +1,52 @@
 +/* llround function.  POWER8 PowerPC64 version.
 +   Copyright (C) 2014 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -2535,9 +2661,14 @@
 +   <http://www.gnu.org/licenses/>.  */
 +
 +#include <sysdep.h>
++#include <endian.h>
 +#include <math_ldbl_opt.h>
 +
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++#define MFVSRD_R3_V1  .byte 0x66,0x00,0x23,0x7c     /* mfvsrd  r3,vs1  */
++#else
 +#define MFVSRD_R3_V1  .byte 0x7c,0x23,0x00,0x66     /* mfvsrd  r3,vs1  */
++#endif
 +
 +/* long long [r3] llround (float x [fp1])  */
 +

++++++ ppc64-copysign.patch ++++++
2014-04-01  Alan Modra  <amo...@gmail.com>

        [BZ #16786]
        * sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Don't trash stack.

Index: glibc-2.19/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
===================================================================
--- glibc-2.19.orig/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
+++ glibc-2.19/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
@@ -27,11 +27,11 @@ ENTRY(__copysign)
 /* double [f1] copysign (double [f1] x, double [f2] y);
    copysign(x,y) returns a value with the magnitude of x and
    with the sign bit of y.  */
-       stfd    fp2,56(r1)
+       stfd    fp2,-8(r1)
        nop
        nop
        nop
-       ld      r3,56(r1)
+       ld      r3,-8(r1)
        cmpdi   r3,0
        blt     L(0)
        fabs    fp1,fp1
++++++ pthread-mutex-trylock-elision.patch ++++++
[PATCH] Properly handle forced elision in pthread_mutex_trylock

        BZ #16657
        * pthread_mutex_trylock.c (__pthread_mutex_trylock): Use
        FORCE_ELISION instead of DO_ELISION.
        * sysdeps/unix/sysv/linux/x86/force-elision.h (DO_ELISION):
        Remove.
---
 nptl/pthread_mutex_trylock.c                     | 7 +++----
 nptl/sysdeps/unix/sysv/linux/x86/force-elision.h | 5 -----
 2 files changed, 3 insertions(+), 9 deletions(-)

Index: glibc-2.19/nptl/pthread_mutex_trylock.c
===================================================================
--- glibc-2.19.orig/nptl/pthread_mutex_trylock.c
+++ glibc-2.19/nptl/pthread_mutex_trylock.c
@@ -26,8 +26,8 @@
 #define lll_trylock_elision(a,t) lll_trylock(a)
 #endif
 
-#ifndef DO_ELISION
-#define DO_ELISION(m) 0
+#ifndef FORCE_ELISION
+#define FORCE_ELISION(m, s)
 #endif
 
 /* We don't force elision in trylock, because this can lead to inconsistent
@@ -77,8 +77,7 @@ __pthread_mutex_trylock (mutex)
       return 0;
 
     case PTHREAD_MUTEX_TIMED_NP:
-      if (DO_ELISION (mutex))
-       goto elision;
+      FORCE_ELISION (mutex, goto elision);
       /*FALL THROUGH*/
     case PTHREAD_MUTEX_ADAPTIVE_NP:
     case PTHREAD_MUTEX_ERRORCHECK_NP:
Index: glibc-2.19/nptl/sysdeps/unix/sysv/linux/x86/force-elision.h
===================================================================
--- glibc-2.19.orig/nptl/sysdeps/unix/sysv/linux/x86/force-elision.h
+++ glibc-2.19/nptl/sysdeps/unix/sysv/linux/x86/force-elision.h
@@ -16,11 +16,6 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-/* Check for elision on this lock without upgrading.  */
-#define DO_ELISION(m)                                                  \
-  (__pthread_force_elision                                             \
-   && (m->__data.__kind & PTHREAD_MUTEX_NO_ELISION_NP) == 0)           \
-
 /* Automatically enable elision for existing user lock kinds.  */
 #define FORCE_ELISION(m, s)                                            \
   if (__pthread_force_elision                                          \
-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to