Accepting request 229287 from Base:System
- pthread-mutex-destroy.patch: Remove - pthread-mutex-trylock-elision.patch: Properly handle forced elision in pthread_mutex_trylock (bnc#865968, BZ #16657) (forwarded request 229286 from Andreas_Schwab) OBS-URL: https://build.opensuse.org/request/show/229287 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/glibc?expand=0&rev=171
This commit is contained in:
commit
f0f6198302
14
_constraints
Normal file
14
_constraints
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0"?>
|
||||
<constraints>
|
||||
<overwrite>
|
||||
<conditions>
|
||||
<package>glibc-testsuite</package>
|
||||
</conditions>
|
||||
<hardware>
|
||||
<memory>
|
||||
<size unit="M">1500</size>
|
||||
</memory>
|
||||
</hardware>
|
||||
<sandbox exclude="true">xen</sandbox>
|
||||
</overwrite>
|
||||
</constraints>
|
225
aarch64-setcontext.patch
Normal file
225
aarch64-setcontext.patch
Normal file
@ -0,0 +1,225 @@
|
||||
From 4dc40de1ed58a1de5d960e59f20a04191f6820c9 Mon Sep 17 00:00:00 2001
|
||||
From: Will Newton <will.newton@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.newton@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)
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
12
glibc.spec
12
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
|
||||
|
||||
|
116
nextafterl-ibm-ldouble.patch
Normal file
116
nextafterl-ibm-ldouble.patch
Normal file
@ -0,0 +1,116 @@
|
||||
2014-04-02 Alan Modra <amodra@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;
|
@ -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
|
||||
|
@ -1,3 +1,16 @@
|
||||
2014-03-31 Adhemerval Zanella <azanella@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 <azanella@linux.vnet.ibm.com>
|
||||
Vidya Ranganathan <vidya@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 <azanella@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 <azanella@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 <vidya@linux.vnet.ibm.com>
|
||||
|
||||
* 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 <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 @@ 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 <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 @@ Index: glibc-2.19/sysdeps/powerpc/powerpc64/multiarch/strspn.c
|
||||
+ 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 @@ 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
|
||||
+ <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 @@ 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
|
||||
+ <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 @@ 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
|
||||
+ <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 @@ 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
|
||||
+ <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 @@ 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
|
||||
+ <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]) */
|
||||
+
|
||||
|
23
ppc64-copysign.patch
Normal file
23
ppc64-copysign.patch
Normal file
@ -0,0 +1,23 @@
|
||||
2014-04-01 Alan Modra <amodra@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
|
53
pthread-mutex-trylock-elision.patch
Normal file
53
pthread-mutex-trylock-elision.patch
Normal file
@ -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
|
||||
<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 \
|
Loading…
Reference in New Issue
Block a user