Accepting request 981453 from home:Andreas_Schwab:Factory
- strncpy-power9-vsx.patch: powerpc: Fix VSX register number on __strncpy_power9 (BZ #29197) - nptl-cleanup-async-restore.patch: nptl: Fix __libc_cleanup_pop_restore asynchronous restore (bsc#1200093, BZ #29214) OBS-URL: https://build.opensuse.org/request/show/981453 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=616
This commit is contained in:
parent
da57f2c50a
commit
81fec1e654
@ -1,3 +1,11 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jun 8 13:32:57 UTC 2022 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
|
- strncpy-power9-vsx.patch: powerpc: Fix VSX register number on
|
||||||
|
__strncpy_power9 (BZ #29197)
|
||||||
|
- nptl-cleanup-async-restore.patch: nptl: Fix __libc_cleanup_pop_restore
|
||||||
|
asynchronous restore (bsc#1200093, BZ #29214)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue May 17 14:07:46 UTC 2022 - Andreas Schwab <schwab@suse.de>
|
Tue May 17 14:07:46 UTC 2022 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
|
@ -295,6 +295,10 @@ Patch1003: pt-load-invalid-hole.patch
|
|||||||
Patch1004: localedef-ld-monetary.patch
|
Patch1004: localedef-ld-monetary.patch
|
||||||
# PATCH-FIX-UPSTREAM nptl: Handle spurious EINTR when thread cancellation is disabled (BZ #29029)
|
# PATCH-FIX-UPSTREAM nptl: Handle spurious EINTR when thread cancellation is disabled (BZ #29029)
|
||||||
Patch1005: nptl-spurious-eintr.patch
|
Patch1005: nptl-spurious-eintr.patch
|
||||||
|
# PATCH-FIX-UPSTREAM powerpc: Fix VSX register number on __strncpy_power9 (BZ #29197)
|
||||||
|
Patch1006: strncpy-power9-vsx.patch
|
||||||
|
# PATCH-FIX-UPSTREAM nptl: Fix __libc_cleanup_pop_restore asynchronous restore (BZ #29214)
|
||||||
|
Patch1007: nptl-cleanup-async-restore.patch
|
||||||
|
|
||||||
###
|
###
|
||||||
# Patches awaiting upstream approval
|
# Patches awaiting upstream approval
|
||||||
@ -520,6 +524,8 @@ library in a cross compilation setting.
|
|||||||
%patch1003 -p1
|
%patch1003 -p1
|
||||||
%patch1004 -p1
|
%patch1004 -p1
|
||||||
%patch1005 -p1
|
%patch1005 -p1
|
||||||
|
%patch1006 -p1
|
||||||
|
%patch1007 -p1
|
||||||
|
|
||||||
%patch2000 -p1
|
%patch2000 -p1
|
||||||
%patch2001 -p1
|
%patch2001 -p1
|
||||||
|
136
nptl-cleanup-async-restore.patch
Normal file
136
nptl-cleanup-async-restore.patch
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
From 97dd8b3f705b23de1f84713082b631189084a33b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||||
|
Date: Tue, 31 May 2022 17:13:35 -0300
|
||||||
|
Subject: [PATCH] nptl: Fix __libc_cleanup_pop_restore asynchronous restore
|
||||||
|
(BZ#29214)
|
||||||
|
|
||||||
|
This was due a wrong revert done on 404656009b459658.
|
||||||
|
|
||||||
|
Checked on x86_64-linux-gnu.
|
||||||
|
|
||||||
|
(cherry picked from commit c7d36dcecc08a29825175f65c4ee873ff3177a23)
|
||||||
|
---
|
||||||
|
NEWS | 1 +
|
||||||
|
nptl/libc-cleanup.c | 3 +-
|
||||||
|
sysdeps/pthread/Makefile | 1 +
|
||||||
|
sysdeps/pthread/tst-cancel30.c | 82 ++++++++++++++++++++++++++++++++++
|
||||||
|
4 files changed, 86 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 sysdeps/pthread/tst-cancel30.c
|
||||||
|
|
||||||
|
diff --git a/nptl/libc-cleanup.c b/nptl/libc-cleanup.c
|
||||||
|
index c4a83591bf..2ce59388d4 100644
|
||||||
|
--- a/nptl/libc-cleanup.c
|
||||||
|
+++ b/nptl/libc-cleanup.c
|
||||||
|
@@ -57,7 +57,8 @@ __libc_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer)
|
||||||
|
THREAD_SETMEM (self, cleanup, buffer->__prev);
|
||||||
|
|
||||||
|
int cancelhandling = atomic_load_relaxed (&self->cancelhandling);
|
||||||
|
- if (cancelhandling & CANCELTYPE_BITMASK)
|
||||||
|
+ if (buffer->__canceltype != PTHREAD_CANCEL_DEFERRED
|
||||||
|
+ && (cancelhandling & CANCELTYPE_BITMASK) == 0)
|
||||||
|
{
|
||||||
|
int newval;
|
||||||
|
do
|
||||||
|
diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
|
||||||
|
index c725586308..3a505c5f99 100644
|
||||||
|
--- a/sysdeps/pthread/Makefile
|
||||||
|
+++ b/sysdeps/pthread/Makefile
|
||||||
|
@@ -126,6 +126,7 @@ tests += tst-cnd-basic tst-mtx-trylock tst-cnd-broadcast \
|
||||||
|
tst-pthread-raise-blocked-self \
|
||||||
|
tst-pthread_kill-exited \
|
||||||
|
tst-pthread_kill-exiting \
|
||||||
|
+ tst-cancel30 \
|
||||||
|
# tests
|
||||||
|
|
||||||
|
tests-time64 := \
|
||||||
|
diff --git a/sysdeps/pthread/tst-cancel30.c b/sysdeps/pthread/tst-cancel30.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..e08392f968
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/sysdeps/pthread/tst-cancel30.c
|
||||||
|
@@ -0,0 +1,82 @@
|
||||||
|
+/* Check if printf like functions does not disable asynchronous cancellation
|
||||||
|
+ mode (BZ#29214).
|
||||||
|
+
|
||||||
|
+ Copyright (C) 2022 Free Software Foundation, Inc.
|
||||||
|
+ This file is part of the GNU C Library.
|
||||||
|
+
|
||||||
|
+ The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
+ modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ License as published by the Free Software Foundation; either
|
||||||
|
+ version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+
|
||||||
|
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ Lesser General Public License for more details.
|
||||||
|
+
|
||||||
|
+ You should have received a copy of the GNU Lesser General Public
|
||||||
|
+ License along with the GNU C Library; if not, see
|
||||||
|
+ <https://www.gnu.org/licenses/>. */
|
||||||
|
+
|
||||||
|
+#include <support/check.h>
|
||||||
|
+#include <support/xstdio.h>
|
||||||
|
+#include <support/xthread.h>
|
||||||
|
+#include <sys/syscall.h>
|
||||||
|
+#include <unistd.h>
|
||||||
|
+
|
||||||
|
+static pthread_barrier_t b;
|
||||||
|
+
|
||||||
|
+static void *
|
||||||
|
+tf (void *arg)
|
||||||
|
+{
|
||||||
|
+ int old;
|
||||||
|
+
|
||||||
|
+ TEST_COMPARE (pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL), 0);
|
||||||
|
+
|
||||||
|
+ TEST_COMPARE (pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, &old), 0);
|
||||||
|
+ TEST_COMPARE (old, PTHREAD_CANCEL_ASYNCHRONOUS);
|
||||||
|
+
|
||||||
|
+ /* Check if internal lock cleanup routines restore the cancellation type
|
||||||
|
+ correctly. */
|
||||||
|
+ printf ("...\n");
|
||||||
|
+ TEST_COMPARE (pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, &old), 0);
|
||||||
|
+ TEST_COMPARE (old, PTHREAD_CANCEL_ASYNCHRONOUS);
|
||||||
|
+
|
||||||
|
+ xpthread_barrier_wait (&b);
|
||||||
|
+
|
||||||
|
+ /* Wait indefinitely for cancellation, which only works if asynchronous
|
||||||
|
+ cancellation is enabled. */
|
||||||
|
+#ifdef SYS_pause
|
||||||
|
+ syscall (SYS_pause);
|
||||||
|
+#elif defined SYS_ppoll || defined SYS_ppoll_time64
|
||||||
|
+# ifndef SYS_ppoll_time64
|
||||||
|
+# define SYS_ppoll_time64 SYS_ppoll
|
||||||
|
+# endif
|
||||||
|
+ syscall (SYS_ppoll_time64, NULL, 0, NULL, NULL);
|
||||||
|
+#else
|
||||||
|
+ for (;;);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+do_test (void)
|
||||||
|
+{
|
||||||
|
+ xpthread_barrier_init (&b, NULL, 2);
|
||||||
|
+
|
||||||
|
+ pthread_t th = xpthread_create (NULL, tf, NULL);
|
||||||
|
+
|
||||||
|
+ xpthread_barrier_wait (&b);
|
||||||
|
+
|
||||||
|
+ xpthread_cancel (th);
|
||||||
|
+
|
||||||
|
+ void *status = xpthread_join (th);
|
||||||
|
+ TEST_VERIFY (status == PTHREAD_CANCELED);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* There is no need to wait full TIMEOUT if asynchronous is not working. */
|
||||||
|
+#define TIMEOUT 3
|
||||||
|
+#include <support/test-driver.c>
|
||||||
|
--
|
||||||
|
2.35.3
|
||||||
|
|
48
strncpy-power9-vsx.patch
Normal file
48
strncpy-power9-vsx.patch
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
From 0a1572b8bb880a63d50a63b2afe4bb67704ac23e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Matheus Castanho <msc@linux.ibm.com>
|
||||||
|
Date: Tue, 7 Jun 2022 10:27:26 -0300
|
||||||
|
Subject: [PATCH] powerpc: Fix VSX register number on __strncpy_power9 [BZ
|
||||||
|
#29197]
|
||||||
|
|
||||||
|
__strncpy_power9 initializes VR 18 with zeroes to be used throughout the
|
||||||
|
code, including when zero-padding the destination string. However, the
|
||||||
|
v18 reference was mistakenly being used for stxv and stxvl, which take a
|
||||||
|
VSX vector as operand. The code ended up using the uninitialized VSR 18
|
||||||
|
register by mistake.
|
||||||
|
|
||||||
|
Both occurrences have been changed to use the proper VSX number for VR 18
|
||||||
|
(i.e. VSR 50).
|
||||||
|
|
||||||
|
Tested on powerpc, powerpc64 and powerpc64le.
|
||||||
|
|
||||||
|
Signed-off-by: Kewen Lin <linkw@gcc.gnu.org>
|
||||||
|
(cherry picked from commit 0218463dd8265ed937622f88ac68c7d984fe0cfc)
|
||||||
|
---
|
||||||
|
sysdeps/powerpc/powerpc64/le/power9/strncpy.S | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sysdeps/powerpc/powerpc64/le/power9/strncpy.S b/sysdeps/powerpc/powerpc64/le/power9/strncpy.S
|
||||||
|
index ae23161316..deb94671cc 100644
|
||||||
|
--- a/sysdeps/powerpc/powerpc64/le/power9/strncpy.S
|
||||||
|
+++ b/sysdeps/powerpc/powerpc64/le/power9/strncpy.S
|
||||||
|
@@ -352,7 +352,7 @@ L(zero_padding_loop):
|
||||||
|
cmpldi cr6,r5,16 /* Check if length was reached. */
|
||||||
|
ble cr6,L(zero_padding_end)
|
||||||
|
|
||||||
|
- stxv v18,0(r11)
|
||||||
|
+ stxv 32+v18,0(r11)
|
||||||
|
addi r11,r11,16
|
||||||
|
addi r5,r5,-16
|
||||||
|
|
||||||
|
@@ -360,7 +360,7 @@ L(zero_padding_loop):
|
||||||
|
|
||||||
|
L(zero_padding_end):
|
||||||
|
sldi r10,r5,56 /* stxvl wants size in top 8 bits */
|
||||||
|
- stxvl v18,r11,r10 /* Partial store */
|
||||||
|
+ stxvl 32+v18,r11,r10 /* Partial store */
|
||||||
|
blr
|
||||||
|
|
||||||
|
.align 4
|
||||||
|
--
|
||||||
|
2.35.3
|
||||||
|
|
Loading…
Reference in New Issue
Block a user