diff --git a/_constraints b/_constraints new file mode 100644 index 0000000..03d38d4 --- /dev/null +++ b/_constraints @@ -0,0 +1,14 @@ + + + + + glibc-testsuite + + + + 1500 + + + xen + + diff --git a/aarch64-setcontext.patch b/aarch64-setcontext.patch new file mode 100644 index 0000000..9997ff5 --- /dev/null +++ b/aarch64-setcontext.patch @@ -0,0 +1,225 @@ +From 4dc40de1ed58a1de5d960e59f20a04191f6820c9 Mon Sep 17 00:00:00 2001 +From: Will Newton +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 + + [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) diff --git a/check-pf-alloca.patch b/check-pf-alloca.patch index 8e4e82b..83709a6 100644 --- a/check-pf-alloca.patch +++ b/check-pf-alloca.patch @@ -9,95 +9,155 @@ Index: glibc-2.19/sysdeps/unix/sysv/linux/check_pf.c =================================================================== --- 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) - #endif - bool use_malloc = false; - char *buf; -+ size_t alloca_used = 0; - - 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) +@@ -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 in6addrinfo info; - struct in6ailist *next; -+ bool use_malloc; - } *in6ailist = NULL; - size_t in6ailistlen = 0; + 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; + char *buf; + +- if (__libc_use_alloca (buf_size)) +- buf = alloca (buf_size); +- else +- { +- buf = malloc (buf_size); +- if (buf != NULL) +- use_malloc = true; +- else +- goto out_fail; +- } ++ buf = alloca (buf_size); + + struct iovec iov = { buf, buf_size }; + +@@ -159,12 +154,7 @@ make_request (int fd, pid_t pid) + goto out_fail; + + bool done = false; +- struct in6ailist +- { +- struct in6addrinfo info; +- struct in6ailist *next; +- } *in6ailist = NULL; +- size_t in6ailistlen = 0; ++ bool seen_ipv4 = false; -@@ -180,10 +182,10 @@ make_request (int fd, pid_t pid) + bool seen_ipv6 = false; - ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0)); - if (read_len < 0) -- goto out_fail; -+ goto out_fail2; - - if (msg.msg_flags & MSG_TRUNC) -- goto out_fail; -+ goto out_fail2; - - struct nlmsghdr *nlmh; - for (nlmh = (struct nlmsghdr *) buf; -@@ -239,7 +241,19 @@ make_request (int fd, pid_t pid) +@@ -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->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 = alloca_account (sizeof (*newp), alloca_used); -+ newp->use_malloc = false; ++ result_cap = 2 * result_cap; ++ result = realloc (result, sizeof (*result) ++ + result_cap * sizeof (struct in6addrinfo)); + } -+ else -+ { -+ newp = malloc (sizeof (*newp)); -+ if (newp == NULL) -+ goto out_fail2; -+ newp->use_malloc = true; -+ } - 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; + } + 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 8fa09da..a98fc17 100644 --- a/glibc-testsuite.changes +++ b/glibc-testsuite.changes @@ -1,3 +1,53 @@ +------------------------------------------------------------------- +Mon Apr 7 09:06:32 UTC 2014 - schwab@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 - schwab@suse.de + +- nextafterl-ibm-ldouble.patch: Correct IBM long double nextafterl + (bnc#871637, BZ #16739) + +------------------------------------------------------------------- +Tue Apr 1 13:33:24 UTC 2014 - schwab@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 - schwab@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 - schwab@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 - 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 + +- check-pf-alloca.patch: remove use of alloca while collecting interface + addresses + ------------------------------------------------------------------- Tue Mar 25 09:26:44 UTC 2014 - schwab@suse.de diff --git a/glibc-testsuite.spec b/glibc-testsuite.spec index b2ffa52..c99df16 100644 --- a/glibc-testsuite.spec +++ b/glibc-testsuite.spec @@ -244,6 +244,10 @@ Patch1004: powerpc-opt-power8.patch 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 @@ Patch2001: resolv-dont-ignore-second-answer.patch 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 @@ rm nscd/s-stamp %patch1004 -p1 %patch1005 -p1 %patch1006 -p1 +%patch1007 -p1 +%patch1008 -p1 %patch2000 -p1 %patch2001 -p1 %patch2002 -p1 %patch2003 -p1 +%patch2004 -p1 +%patch2005 -p1 %patch3000 diff --git a/glibc-utils.changes b/glibc-utils.changes index 8fa09da..a98fc17 100644 --- a/glibc-utils.changes +++ b/glibc-utils.changes @@ -1,3 +1,53 @@ +------------------------------------------------------------------- +Mon Apr 7 09:06:32 UTC 2014 - schwab@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 - schwab@suse.de + +- nextafterl-ibm-ldouble.patch: Correct IBM long double nextafterl + (bnc#871637, BZ #16739) + +------------------------------------------------------------------- +Tue Apr 1 13:33:24 UTC 2014 - schwab@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 - schwab@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 - schwab@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 - 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 + +- check-pf-alloca.patch: remove use of alloca while collecting interface + addresses + ------------------------------------------------------------------- Tue Mar 25 09:26:44 UTC 2014 - schwab@suse.de diff --git a/glibc-utils.spec b/glibc-utils.spec index 9b364d1..2c981c9 100644 --- a/glibc-utils.spec +++ b/glibc-utils.spec @@ -243,6 +243,10 @@ Patch1004: powerpc-opt-power8.patch 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 @@ -255,6 +259,10 @@ Patch2001: resolv-dont-ignore-second-answer.patch 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 @@ rm nscd/s-stamp %patch1004 -p1 %patch1005 -p1 %patch1006 -p1 +%patch1007 -p1 +%patch1008 -p1 %patch2000 -p1 %patch2001 -p1 %patch2002 -p1 %patch2003 -p1 +%patch2004 -p1 +%patch2005 -p1 %patch3000 diff --git a/glibc.changes b/glibc.changes index 8fa09da..a98fc17 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,53 @@ +------------------------------------------------------------------- +Mon Apr 7 09:06:32 UTC 2014 - schwab@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 - schwab@suse.de + +- nextafterl-ibm-ldouble.patch: Correct IBM long double nextafterl + (bnc#871637, BZ #16739) + +------------------------------------------------------------------- +Tue Apr 1 13:33:24 UTC 2014 - schwab@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 - schwab@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 - schwab@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 - 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 + +- check-pf-alloca.patch: remove use of alloca while collecting interface + addresses + ------------------------------------------------------------------- Tue Mar 25 09:26:44 UTC 2014 - schwab@suse.de diff --git a/glibc.spec b/glibc.spec index ae76ee6..3ea5f0c 100644 --- a/glibc.spec +++ b/glibc.spec @@ -244,6 +244,10 @@ Patch1004: powerpc-opt-power8.patch 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 @@ Patch2001: resolv-dont-ignore-second-answer.patch 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 @@ rm nscd/s-stamp %patch1004 -p1 %patch1005 -p1 %patch1006 -p1 +%patch1007 -p1 +%patch1008 -p1 %patch2000 -p1 %patch2001 -p1 %patch2002 -p1 %patch2003 -p1 +%patch2004 -p1 +%patch2005 -p1 %patch3000 diff --git a/nextafterl-ibm-ldouble.patch b/nextafterl-ibm-ldouble.patch new file mode 100644 index 0000000..c5d107f --- /dev/null +++ b/nextafterl-ibm-ldouble.patch @@ -0,0 +1,116 @@ +2014-04-02 Alan Modra + + [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; diff --git a/nscd.service b/nscd.service index bacc6e3..2170cbc 100644 --- a/nscd.service +++ b/nscd.service @@ -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 diff --git a/powerpc-opt-power8.patch b/powerpc-opt-power8.patch index 24aa7f5..e429a18 100644 --- a/powerpc-opt-power8.patch +++ b/powerpc-opt-power8.patch @@ -1,3 +1,16 @@ +2014-03-31 Adhemerval Zanella + + * 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 Vidya Ranganathan @@ -31,6 +44,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 +270,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 @@ -714,6 +782,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 +1397,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" @@ -2262,7 +2368,7 @@ 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 @@ +@@ -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 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S + . */ + +#include ++#include +#include + ++#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 @@ 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 @@ +@@ -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 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S + . */ + +#include ++#include +#include + ++#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 @@ 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 @@ +@@ -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 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S + . */ + +#include ++#include +#include + ++#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 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S =================================================================== --- /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 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S + . */ + +#include ++#include +#include + ++#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 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S =================================================================== --- /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 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S + . */ + +#include ++#include +#include + ++#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]) */ + diff --git a/ppc64-copysign.patch b/ppc64-copysign.patch new file mode 100644 index 0000000..5cdcb94 --- /dev/null +++ b/ppc64-copysign.patch @@ -0,0 +1,23 @@ +2014-04-01 Alan Modra + + [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 diff --git a/pthread-mutex-trylock-elision.patch b/pthread-mutex-trylock-elision.patch new file mode 100644 index 0000000..6886125 --- /dev/null +++ b/pthread-mutex-trylock-elision.patch @@ -0,0 +1,53 @@ +[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 + . */ + +-/* 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 \