!866 [sync] PR-859: sync from glibc upstream 2.38 branch.
From: @openeuler-sync-bot Reviewed-by: @liqingqing_1229 Signed-off-by: @liqingqing_1229
This commit is contained in:
commit
b42bf2368f
58
0001-s390x-Fix-segfault-in-wcsncmp-BZ-31934.patch
Normal file
58
0001-s390x-Fix-segfault-in-wcsncmp-BZ-31934.patch
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
From 712453634c8efd71a9b3ff0122145a9e90e9955c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefan Liebler <stli@linux.ibm.com>
|
||||||
|
Date: Thu, 11 Jul 2024 11:28:53 +0200
|
||||||
|
Subject: [PATCH 01/12] s390x: Fix segfault in wcsncmp [BZ #31934]
|
||||||
|
|
||||||
|
The z13/vector-optimized wcsncmp implementation segfaults if n=1
|
||||||
|
and there is only one character (equal on both strings) before
|
||||||
|
the page end. Then it loads and compares one character and misses
|
||||||
|
to check n again. The following load fails.
|
||||||
|
|
||||||
|
This patch removes the extra load and compare of the first character
|
||||||
|
and just start with the loop which uses vector-load-to-block-boundary.
|
||||||
|
This code-path also checks n.
|
||||||
|
|
||||||
|
With this patch both tests are passing:
|
||||||
|
- the simplified one mentioned in the bugzilla 31934
|
||||||
|
- the full one in Florian Weimer's patch:
|
||||||
|
"manual: Document a GNU extension for strncmp/wcsncmp"
|
||||||
|
(https://patchwork.sourceware.org/project/glibc/patch/874j9eml6y.fsf@oldenburg.str.redhat.com/):
|
||||||
|
On s390x-linux-gnu (z16), the new wcsncmp test fails due to bug 31934.
|
||||||
|
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
||||||
|
|
||||||
|
(cherry picked from commit 9b7651410375ec8848a1944992d663d514db4ba7)
|
||||||
|
---
|
||||||
|
sysdeps/s390/wcsncmp-vx.S | 10 +---------
|
||||||
|
1 file changed, 1 insertion(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sysdeps/s390/wcsncmp-vx.S b/sysdeps/s390/wcsncmp-vx.S
|
||||||
|
index 1bf769b870..4028d1e624 100644
|
||||||
|
--- a/sysdeps/s390/wcsncmp-vx.S
|
||||||
|
+++ b/sysdeps/s390/wcsncmp-vx.S
|
||||||
|
@@ -59,14 +59,7 @@ ENTRY(WCSNCMP_Z13)
|
||||||
|
sllg %r4,%r4,2 /* Convert character-count to byte-count. */
|
||||||
|
locgrne %r4,%r1 /* Use max byte-count, if bit 0/1 was one. */
|
||||||
|
|
||||||
|
- /* Check first character without vector load. */
|
||||||
|
- lghi %r5,4 /* current_len = 4 bytes. */
|
||||||
|
- /* Check s1/2[0]. */
|
||||||
|
- lt %r0,0(%r2)
|
||||||
|
- l %r1,0(%r3)
|
||||||
|
- je .Lend_cmp_one_char
|
||||||
|
- crjne %r0,%r1,.Lend_cmp_one_char
|
||||||
|
-
|
||||||
|
+ lghi %r5,0 /* current_len = 0 bytes. */
|
||||||
|
.Lloop:
|
||||||
|
vlbb %v17,0(%r5,%r3),6 /* Load s2 to block boundary. */
|
||||||
|
vlbb %v16,0(%r5,%r2),6 /* Load s1 to block boundary. */
|
||||||
|
@@ -167,7 +160,6 @@ ENTRY(WCSNCMP_Z13)
|
||||||
|
srl %r4,2 /* And convert it to character-index. */
|
||||||
|
vlgvf %r0,%v16,0(%r4) /* Load character-values. */
|
||||||
|
vlgvf %r1,%v17,0(%r4)
|
||||||
|
-.Lend_cmp_one_char:
|
||||||
|
cr %r0,%r1
|
||||||
|
je .Lend_equal
|
||||||
|
lghi %r2,1
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
161
0002-nptl-fix-potential-merge-of-__rseq_-relro-symbols.patch
Normal file
161
0002-nptl-fix-potential-merge-of-__rseq_-relro-symbols.patch
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
From 7bfc35959dae3287e9097a960ebfddb19441bb55 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Jeanson <mjeanson@efficios.com>
|
||||||
|
Date: Wed, 3 Jul 2024 12:35:34 -0400
|
||||||
|
Subject: [PATCH 02/12] nptl: fix potential merge of __rseq_* relro symbols
|
||||||
|
|
||||||
|
While working on a patch to add support for the extensible rseq ABI, we
|
||||||
|
came across an issue where a new 'const' variable would be merged with
|
||||||
|
the existing '__rseq_size' variable. We tracked this to the use of
|
||||||
|
'-fmerge-all-constants' which allows the compiler to merge identical
|
||||||
|
constant variables. This means that all 'const' variables in a compile
|
||||||
|
unit that are of the same size and are initialized to the same value can
|
||||||
|
be merged.
|
||||||
|
|
||||||
|
In this specific case, on 32 bit systems 'unsigned int' and 'ptrdiff_t'
|
||||||
|
are both 4 bytes and initialized to 0 which should trigger the merge.
|
||||||
|
However for reasons we haven't delved into when the attribute 'section
|
||||||
|
(".data.rel.ro")' is added to the mix, only variables of the same exact
|
||||||
|
types are merged. As far as we know this behavior is not specified
|
||||||
|
anywhere and could change with a new compiler version, hence this patch.
|
||||||
|
|
||||||
|
Move the definitions of these variables into an assembler file and add
|
||||||
|
hidden writable aliases for internal use. This has the added bonus of
|
||||||
|
removing the asm workaround to set the values on rseq registration.
|
||||||
|
|
||||||
|
Tested on Debian 12 with GCC 12.2.
|
||||||
|
|
||||||
|
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||||
|
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||||
|
Reviewed-by: Florian Weimer <fweimer@redhat.com>
|
||||||
|
(cherry picked from commit 2b92982e2369d292560793bee8e730f695f48ff3)
|
||||||
|
---
|
||||||
|
elf/Makefile | 1 +
|
||||||
|
elf/dl-rseq-symbols.S | 64 +++++++++++++++++++++++++++++++++++
|
||||||
|
sysdeps/nptl/dl-tls_init_tp.c | 14 ++++----
|
||||||
|
3 files changed, 71 insertions(+), 8 deletions(-)
|
||||||
|
create mode 100644 elf/dl-rseq-symbols.S
|
||||||
|
|
||||||
|
diff --git a/elf/Makefile b/elf/Makefile
|
||||||
|
index c2af11b92c..04e1d7ded5 100644
|
||||||
|
--- a/elf/Makefile
|
||||||
|
+++ b/elf/Makefile
|
||||||
|
@@ -74,6 +74,7 @@ dl-routines = \
|
||||||
|
dl-printf \
|
||||||
|
dl-profile \
|
||||||
|
dl-reloc \
|
||||||
|
+ dl-rseq-symbols \
|
||||||
|
dl-runtime \
|
||||||
|
dl-scope \
|
||||||
|
dl-setup_hash \
|
||||||
|
diff --git a/elf/dl-rseq-symbols.S b/elf/dl-rseq-symbols.S
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..b4bba06a99
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/elf/dl-rseq-symbols.S
|
||||||
|
@@ -0,0 +1,64 @@
|
||||||
|
+/* Define symbols used by rseq.
|
||||||
|
+ Copyright (C) 2024 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 <sysdep.h>
|
||||||
|
+
|
||||||
|
+#if __WORDSIZE == 64
|
||||||
|
+#define RSEQ_OFFSET_SIZE 8
|
||||||
|
+#else
|
||||||
|
+#define RSEQ_OFFSET_SIZE 4
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+/* Some targets define a macro to denote the zero register. */
|
||||||
|
+#undef zero
|
||||||
|
+
|
||||||
|
+/* Define 2 symbols: '__rseq_size' is public const and '_rseq_size' (an
|
||||||
|
+ alias of '__rseq_size') is hidden and writable for internal use by the
|
||||||
|
+ dynamic linker which will initialize the value both symbols point to
|
||||||
|
+ before copy relocations take place. */
|
||||||
|
+
|
||||||
|
+ .globl __rseq_size
|
||||||
|
+ .type __rseq_size, %object
|
||||||
|
+ .size __rseq_size, 4
|
||||||
|
+ .hidden _rseq_size
|
||||||
|
+ .globl _rseq_size
|
||||||
|
+ .type _rseq_size, %object
|
||||||
|
+ .size _rseq_size, 4
|
||||||
|
+ .section .data.rel.ro
|
||||||
|
+ .balign 4
|
||||||
|
+__rseq_size:
|
||||||
|
+_rseq_size:
|
||||||
|
+ .zero 4
|
||||||
|
+
|
||||||
|
+/* Define 2 symbols: '__rseq_offset' is public const and '_rseq_offset' (an
|
||||||
|
+ alias of '__rseq_offset') is hidden and writable for internal use by the
|
||||||
|
+ dynamic linker which will initialize the value both symbols point to
|
||||||
|
+ before copy relocations take place. */
|
||||||
|
+
|
||||||
|
+ .globl __rseq_offset
|
||||||
|
+ .type __rseq_offset, %object
|
||||||
|
+ .size __rseq_offset, RSEQ_OFFSET_SIZE
|
||||||
|
+ .hidden _rseq_offset
|
||||||
|
+ .globl _rseq_offset
|
||||||
|
+ .type _rseq_offset, %object
|
||||||
|
+ .size _rseq_offset, RSEQ_OFFSET_SIZE
|
||||||
|
+ .section .data.rel.ro
|
||||||
|
+ .balign RSEQ_OFFSET_SIZE
|
||||||
|
+__rseq_offset:
|
||||||
|
+_rseq_offset:
|
||||||
|
+ .zero RSEQ_OFFSET_SIZE
|
||||||
|
diff --git a/sysdeps/nptl/dl-tls_init_tp.c b/sysdeps/nptl/dl-tls_init_tp.c
|
||||||
|
index 2ed98c5a31..45ae260ceb 100644
|
||||||
|
--- a/sysdeps/nptl/dl-tls_init_tp.c
|
||||||
|
+++ b/sysdeps/nptl/dl-tls_init_tp.c
|
||||||
|
@@ -45,8 +45,10 @@ rtld_mutex_dummy (pthread_mutex_t *lock)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const unsigned int __rseq_flags;
|
||||||
|
-const unsigned int __rseq_size attribute_relro;
|
||||||
|
-const ptrdiff_t __rseq_offset attribute_relro;
|
||||||
|
+
|
||||||
|
+/* The variables are in .data.relro but are not yet write-protected. */
|
||||||
|
+extern unsigned int _rseq_size attribute_hidden;
|
||||||
|
+extern ptrdiff_t _rseq_offset attribute_hidden;
|
||||||
|
|
||||||
|
void
|
||||||
|
__tls_pre_init_tp (void)
|
||||||
|
@@ -105,10 +107,7 @@ __tls_init_tp (void)
|
||||||
|
do_rseq = TUNABLE_GET (rseq, int, NULL);
|
||||||
|
if (rseq_register_current_thread (pd, do_rseq))
|
||||||
|
{
|
||||||
|
- /* We need a writable view of the variables. They are in
|
||||||
|
- .data.relro and are not yet write-protected. */
|
||||||
|
- extern unsigned int size __asm__ ("__rseq_size");
|
||||||
|
- size = sizeof (pd->rseq_area);
|
||||||
|
+ _rseq_size = sizeof (pd->rseq_area);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef RSEQ_SIG
|
||||||
|
@@ -117,8 +116,7 @@ __tls_init_tp (void)
|
||||||
|
all targets support __thread_pointer, so set __rseq_offset only
|
||||||
|
if the rseq registration may have happened because RSEQ_SIG is
|
||||||
|
defined. */
|
||||||
|
- extern ptrdiff_t offset __asm__ ("__rseq_offset");
|
||||||
|
- offset = (char *) &pd->rseq_area - (char *) __thread_pointer ();
|
||||||
|
+ _rseq_offset = (char *) &pd->rseq_area - (char *) __thread_pointer ();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
51
0003-elf-Make-dl-rseq-symbols-Linux-only.patch
Normal file
51
0003-elf-Make-dl-rseq-symbols-Linux-only.patch
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
From d9d019d674f95509b5001f4d878ae09e32ea7a10 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||||
|
Date: Thu, 4 Jul 2024 10:09:07 -0300
|
||||||
|
Subject: [PATCH 03/12] elf: Make dl-rseq-symbols Linux only
|
||||||
|
|
||||||
|
And avoid a Hurd build failures.
|
||||||
|
|
||||||
|
Checked on x86_64-linux-gnu.
|
||||||
|
|
||||||
|
(cherry picked from commit 9fc639f654dc004736836613be703e6bed0c36a8)
|
||||||
|
---
|
||||||
|
elf/Makefile | 1 -
|
||||||
|
sysdeps/unix/sysv/linux/Makefile | 4 ++++
|
||||||
|
{elf => sysdeps/unix/sysv/linux}/dl-rseq-symbols.S | 0
|
||||||
|
3 files changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
rename {elf => sysdeps/unix/sysv/linux}/dl-rseq-symbols.S (100%)
|
||||||
|
|
||||||
|
diff --git a/elf/Makefile b/elf/Makefile
|
||||||
|
index 04e1d7ded5..c2af11b92c 100644
|
||||||
|
--- a/elf/Makefile
|
||||||
|
+++ b/elf/Makefile
|
||||||
|
@@ -74,7 +74,6 @@ dl-routines = \
|
||||||
|
dl-printf \
|
||||||
|
dl-profile \
|
||||||
|
dl-reloc \
|
||||||
|
- dl-rseq-symbols \
|
||||||
|
dl-runtime \
|
||||||
|
dl-scope \
|
||||||
|
dl-setup_hash \
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
|
||||||
|
index be801e3be4..623a7d4de0 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/Makefile
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/Makefile
|
||||||
|
@@ -587,6 +587,10 @@ tests += \
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(subdir),elf)
|
||||||
|
+dl-routines += \
|
||||||
|
+ dl-rseq-symbols \
|
||||||
|
+ # dl-routines
|
||||||
|
+
|
||||||
|
sysdep-rtld-routines += \
|
||||||
|
dl-brk \
|
||||||
|
dl-getcwd \
|
||||||
|
diff --git a/elf/dl-rseq-symbols.S b/sysdeps/unix/sysv/linux/dl-rseq-symbols.S
|
||||||
|
similarity index 100%
|
||||||
|
rename from elf/dl-rseq-symbols.S
|
||||||
|
rename to sysdeps/unix/sysv/linux/dl-rseq-symbols.S
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
171
0004-Linux-Make-__rseq_size-useful-for-feature-detection-.patch
Normal file
171
0004-Linux-Make-__rseq_size-useful-for-feature-detection-.patch
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
From bb30bd21622910715b7b3020b17e6e97a8b4ec80 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Florian Weimer <fweimer@redhat.com>
|
||||||
|
Date: Mon, 8 Jul 2024 21:14:00 +0200
|
||||||
|
Subject: [PATCH 04/12] Linux: Make __rseq_size useful for feature detection
|
||||||
|
(bug 31965)
|
||||||
|
|
||||||
|
The __rseq_size value is now the active area of struct rseq
|
||||||
|
(so 20 initially), not the full struct size including padding
|
||||||
|
at the end (32 initially).
|
||||||
|
|
||||||
|
Update misc/tst-rseq to print some additional diagnostics.
|
||||||
|
|
||||||
|
Reviewed-by: Michael Jeanson <mjeanson@efficios.com>
|
||||||
|
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||||
|
(cherry picked from commit 2e456ccf0c34a056e3ccafac4a0c7effef14d918)
|
||||||
|
---
|
||||||
|
NEWS | 6 ++++++
|
||||||
|
manual/threads.texi | 8 ++++++--
|
||||||
|
sysdeps/nptl/dl-tls_init_tp.c | 8 +-------
|
||||||
|
sysdeps/unix/sysv/linux/rseq-internal.h | 23 +++++++++++++++++++++--
|
||||||
|
sysdeps/unix/sysv/linux/tst-rseq.c | 10 +++++++++-
|
||||||
|
5 files changed, 43 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 6768c2da6f..f0a0834496 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -7,6 +7,11 @@ using `glibc' in the "product" field.
|
||||||
|
|
||||||
|
Version 2.38.1
|
||||||
|
|
||||||
|
+Deprecated and removed features, and other changes affecting compatibility:
|
||||||
|
+
|
||||||
|
+* __rseq_size now denotes the size of the active rseq area (20 bytes
|
||||||
|
+ initially), not the size of struct rseq (32 bytes initially).
|
||||||
|
+
|
||||||
|
Security related changes:
|
||||||
|
|
||||||
|
CVE-2023-4527: If the system is configured in no-aaaa mode via
|
||||||
|
@@ -46,6 +51,7 @@ The following bugs are resolved with this release:
|
||||||
|
[31183] Wide stream buffer size reduced MB_LEN_MAX bytes after bug 17522 fix
|
||||||
|
[31184] FAIL: elf/tst-tlsgap
|
||||||
|
[31185] Incorrect thread point access in _dl_tlsdesc_undefweak and _dl_tlsdesc_dynamic
|
||||||
|
+ [31965] rseq extension mechanism does not work as intended
|
||||||
|
|
||||||
|
|
||||||
|
Version 2.38
|
||||||
|
diff --git a/manual/threads.texi b/manual/threads.texi
|
||||||
|
index e5544ff3da..25e99c9606 100644
|
||||||
|
--- a/manual/threads.texi
|
||||||
|
+++ b/manual/threads.texi
|
||||||
|
@@ -1007,8 +1007,12 @@ This variable is either zero (if restartable sequence registration
|
||||||
|
failed or has been disabled) or the size of the restartable sequence
|
||||||
|
registration. This can be different from the size of @code{struct rseq}
|
||||||
|
if the kernel has extended the size of the registration. If
|
||||||
|
-registration is successful, @code{__rseq_size} is at least 32 (the
|
||||||
|
-initial size of @code{struct rseq}).
|
||||||
|
+registration is successful, @code{__rseq_size} is at least 20 (the
|
||||||
|
+initially active size of @code{struct rseq}).
|
||||||
|
+
|
||||||
|
+Previous versions of @theglibc{} set this to 32 even if the kernel only
|
||||||
|
+supported the initial area of 20 bytes because the value included unused
|
||||||
|
+padding at the end of the restartable sequence area.
|
||||||
|
@end deftypevar
|
||||||
|
|
||||||
|
@deftypevar {unsigned int} __rseq_flags
|
||||||
|
diff --git a/sysdeps/nptl/dl-tls_init_tp.c b/sysdeps/nptl/dl-tls_init_tp.c
|
||||||
|
index 45ae260ceb..8f731393c4 100644
|
||||||
|
--- a/sysdeps/nptl/dl-tls_init_tp.c
|
||||||
|
+++ b/sysdeps/nptl/dl-tls_init_tp.c
|
||||||
|
@@ -46,10 +46,6 @@ rtld_mutex_dummy (pthread_mutex_t *lock)
|
||||||
|
|
||||||
|
const unsigned int __rseq_flags;
|
||||||
|
|
||||||
|
-/* The variables are in .data.relro but are not yet write-protected. */
|
||||||
|
-extern unsigned int _rseq_size attribute_hidden;
|
||||||
|
-extern ptrdiff_t _rseq_offset attribute_hidden;
|
||||||
|
-
|
||||||
|
void
|
||||||
|
__tls_pre_init_tp (void)
|
||||||
|
{
|
||||||
|
@@ -106,9 +102,7 @@ __tls_init_tp (void)
|
||||||
|
bool do_rseq = true;
|
||||||
|
do_rseq = TUNABLE_GET (rseq, int, NULL);
|
||||||
|
if (rseq_register_current_thread (pd, do_rseq))
|
||||||
|
- {
|
||||||
|
- _rseq_size = sizeof (pd->rseq_area);
|
||||||
|
- }
|
||||||
|
+ _rseq_size = RSEQ_AREA_SIZE_INITIAL_USED;
|
||||||
|
|
||||||
|
#ifdef RSEQ_SIG
|
||||||
|
/* This should be a compile-time constant, but the current
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/rseq-internal.h b/sysdeps/unix/sysv/linux/rseq-internal.h
|
||||||
|
index 294880c04e..226ba59a24 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/rseq-internal.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/rseq-internal.h
|
||||||
|
@@ -25,15 +25,34 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/rseq.h>
|
||||||
|
|
||||||
|
+/* 32 is the initially required value for the area size. The
|
||||||
|
+ actually used rseq size may be less (20 bytes initially). */
|
||||||
|
+#define RSEQ_AREA_SIZE_INITIAL 32
|
||||||
|
+#define RSEQ_AREA_SIZE_INITIAL_USED 20
|
||||||
|
+
|
||||||
|
+/* The variables are in .data.relro but are not yet write-protected. */
|
||||||
|
+extern unsigned int _rseq_size attribute_hidden;
|
||||||
|
+extern ptrdiff_t _rseq_offset attribute_hidden;
|
||||||
|
+
|
||||||
|
#ifdef RSEQ_SIG
|
||||||
|
static inline bool
|
||||||
|
rseq_register_current_thread (struct pthread *self, bool do_rseq)
|
||||||
|
{
|
||||||
|
if (do_rseq)
|
||||||
|
{
|
||||||
|
+ unsigned int size;
|
||||||
|
+#if IS_IN (rtld)
|
||||||
|
+ /* Use the hidden symbol in ld.so. */
|
||||||
|
+ size = _rseq_size;
|
||||||
|
+#else
|
||||||
|
+ size = __rseq_size;
|
||||||
|
+#endif
|
||||||
|
+ if (size < RSEQ_AREA_SIZE_INITIAL)
|
||||||
|
+ /* The initial implementation used only 20 bytes out of 32,
|
||||||
|
+ but still expected size 32. */
|
||||||
|
+ size = RSEQ_AREA_SIZE_INITIAL;
|
||||||
|
int ret = INTERNAL_SYSCALL_CALL (rseq, &self->rseq_area,
|
||||||
|
- sizeof (self->rseq_area),
|
||||||
|
- 0, RSEQ_SIG);
|
||||||
|
+ size, 0, RSEQ_SIG);
|
||||||
|
if (!INTERNAL_SYSCALL_ERROR_P (ret))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/tst-rseq.c b/sysdeps/unix/sysv/linux/tst-rseq.c
|
||||||
|
index 16983503b1..9f9aa7eb21 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/tst-rseq.c
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/tst-rseq.c
|
||||||
|
@@ -29,6 +29,7 @@
|
||||||
|
# include <stdlib.h>
|
||||||
|
# include <string.h>
|
||||||
|
# include <syscall.h>
|
||||||
|
+# include <sys/auxv.h>
|
||||||
|
# include <thread_pointer.h>
|
||||||
|
# include <tls.h>
|
||||||
|
# include "tst-rseq.h"
|
||||||
|
@@ -42,7 +43,8 @@ do_rseq_main_test (void)
|
||||||
|
TEST_COMPARE (__rseq_flags, 0);
|
||||||
|
TEST_VERIFY ((char *) __thread_pointer () + __rseq_offset
|
||||||
|
== (char *) &pd->rseq_area);
|
||||||
|
- TEST_COMPARE (__rseq_size, sizeof (pd->rseq_area));
|
||||||
|
+ /* The current implementation only supports the initial size. */
|
||||||
|
+ TEST_COMPARE (__rseq_size, 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -52,6 +54,12 @@ do_rseq_test (void)
|
||||||
|
{
|
||||||
|
FAIL_UNSUPPORTED ("kernel does not support rseq, skipping test");
|
||||||
|
}
|
||||||
|
+ printf ("info: __rseq_size: %u\n", __rseq_size);
|
||||||
|
+ printf ("info: __rseq_offset: %td\n", __rseq_offset);
|
||||||
|
+ printf ("info: __rseq_flags: %u\n", __rseq_flags);
|
||||||
|
+ printf ("info: getauxval (AT_RSEQ_FEATURE_SIZE): %ld\n",
|
||||||
|
+ getauxval (AT_RSEQ_FEATURE_SIZE));
|
||||||
|
+ printf ("info: getauxval (AT_RSEQ_ALIGN): %ld\n", getauxval (AT_RSEQ_ALIGN));
|
||||||
|
do_rseq_main_test ();
|
||||||
|
}
|
||||||
|
#else /* RSEQ_SIG */
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
223
0005-resolv-Allow-short-error-responses-to-match-any-quer.patch
Normal file
223
0005-resolv-Allow-short-error-responses-to-match-any-quer.patch
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
From dc512364e8490facb30f8c23fcc496d21adfc4e4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Florian Weimer <fweimer@redhat.com>
|
||||||
|
Date: Wed, 24 Jul 2024 12:06:47 +0200
|
||||||
|
Subject: [PATCH 05/12] resolv: Allow short error responses to match any query
|
||||||
|
(bug 31890)
|
||||||
|
|
||||||
|
Reviewed-by: DJ Delorie <dj@redhat.com>
|
||||||
|
(cherry picked from commit 691a3b2e9bfaba842e46a5ccb7f5e6ea144c3ade)
|
||||||
|
---
|
||||||
|
NEWS | 1 +
|
||||||
|
resolv/Makefile | 3 +
|
||||||
|
resolv/res_send.c | 29 +++++---
|
||||||
|
resolv/tst-resolv-short-response.c | 112 +++++++++++++++++++++++++++++
|
||||||
|
4 files changed, 135 insertions(+), 10 deletions(-)
|
||||||
|
create mode 100644 resolv/tst-resolv-short-response.c
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index f0a0834496..c331604747 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -51,6 +51,7 @@ The following bugs are resolved with this release:
|
||||||
|
[31183] Wide stream buffer size reduced MB_LEN_MAX bytes after bug 17522 fix
|
||||||
|
[31184] FAIL: elf/tst-tlsgap
|
||||||
|
[31185] Incorrect thread point access in _dl_tlsdesc_undefweak and _dl_tlsdesc_dynamic
|
||||||
|
+ [31890] resolv: Allow short error responses to match any DNS query
|
||||||
|
[31965] rseq extension mechanism does not work as intended
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/resolv/Makefile b/resolv/Makefile
|
||||||
|
index 2f99eb3862..cca0748f9a 100644
|
||||||
|
--- a/resolv/Makefile
|
||||||
|
+++ b/resolv/Makefile
|
||||||
|
@@ -106,6 +106,7 @@ tests += \
|
||||||
|
tst-resolv-nondecimal \
|
||||||
|
tst-resolv-res_init-multi \
|
||||||
|
tst-resolv-search \
|
||||||
|
+ tst-resolv-short-response \
|
||||||
|
tst-resolv-trailing \
|
||||||
|
|
||||||
|
# This test calls __res_context_send directly, which is not exported
|
||||||
|
@@ -299,6 +300,8 @@ $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library)
|
||||||
|
$(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library)
|
||||||
|
$(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library)
|
||||||
|
$(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library)
|
||||||
|
+$(objpfx)tst-resolv-short-response: $(objpfx)libresolv.so \
|
||||||
|
+ $(shared-thread-library)
|
||||||
|
$(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library)
|
||||||
|
$(objpfx)tst-resolv-threads: $(objpfx)libresolv.so $(shared-thread-library)
|
||||||
|
$(objpfx)tst-resolv-txnid-collision: $(objpfx)libresolv.a \
|
||||||
|
diff --git a/resolv/res_send.c b/resolv/res_send.c
|
||||||
|
index d098eba470..bf4ce67b1d 100644
|
||||||
|
--- a/resolv/res_send.c
|
||||||
|
+++ b/resolv/res_send.c
|
||||||
|
@@ -1197,19 +1197,30 @@ send_dg(res_state statp,
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check for the correct header layout and a matching
|
||||||
|
- question. */
|
||||||
|
+ question. Some recursive resolvers send REFUSED
|
||||||
|
+ without copying back the question section
|
||||||
|
+ (producing a response that is only HFIXEDSZ bytes
|
||||||
|
+ long). Skip query matching in this case. */
|
||||||
|
+ bool thisansp_error = (anhp->rcode == SERVFAIL ||
|
||||||
|
+ anhp->rcode == NOTIMP ||
|
||||||
|
+ anhp->rcode == REFUSED);
|
||||||
|
+ bool skip_query_match = (*thisresplenp == HFIXEDSZ
|
||||||
|
+ && ntohs (anhp->qdcount) == 0
|
||||||
|
+ && thisansp_error);
|
||||||
|
int matching_query = 0; /* Default to no matching query. */
|
||||||
|
if (!recvresp1
|
||||||
|
&& anhp->id == hp->id
|
||||||
|
- && __libc_res_queriesmatch (buf, buf + buflen,
|
||||||
|
- *thisansp,
|
||||||
|
- *thisansp + *thisanssizp))
|
||||||
|
+ && (skip_query_match
|
||||||
|
+ || __libc_res_queriesmatch (buf, buf + buflen,
|
||||||
|
+ *thisansp,
|
||||||
|
+ *thisansp + *thisanssizp)))
|
||||||
|
matching_query = 1;
|
||||||
|
if (!recvresp2
|
||||||
|
&& anhp->id == hp2->id
|
||||||
|
- && __libc_res_queriesmatch (buf2, buf2 + buflen2,
|
||||||
|
- *thisansp,
|
||||||
|
- *thisansp + *thisanssizp))
|
||||||
|
+ && (skip_query_match
|
||||||
|
+ || __libc_res_queriesmatch (buf2, buf2 + buflen2,
|
||||||
|
+ *thisansp,
|
||||||
|
+ *thisansp + *thisanssizp)))
|
||||||
|
matching_query = 2;
|
||||||
|
if (matching_query == 0)
|
||||||
|
/* Spurious UDP packet. Drop it and continue
|
||||||
|
@@ -1219,9 +1230,7 @@ send_dg(res_state statp,
|
||||||
|
goto wait;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (anhp->rcode == SERVFAIL ||
|
||||||
|
- anhp->rcode == NOTIMP ||
|
||||||
|
- anhp->rcode == REFUSED) {
|
||||||
|
+ if (thisansp_error) {
|
||||||
|
next_ns:
|
||||||
|
if (recvresp1 || (buf2 != NULL && recvresp2)) {
|
||||||
|
*resplen2 = 0;
|
||||||
|
diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..cf1e39876f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/resolv/tst-resolv-short-response.c
|
||||||
|
@@ -0,0 +1,112 @@
|
||||||
|
+/* Test for spurious timeouts with short 12-byte responses (bug 31890).
|
||||||
|
+ Copyright (C) 2024 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 <resolv.h>
|
||||||
|
+#include <support/check.h>
|
||||||
|
+#include <support/resolv_test.h>
|
||||||
|
+#include <support/check_nss.h>
|
||||||
|
+
|
||||||
|
+/* The rcode in the initial response. */
|
||||||
|
+static volatile int rcode;
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+response (const struct resolv_response_context *ctx,
|
||||||
|
+ struct resolv_response_builder *b,
|
||||||
|
+ const char *qname, uint16_t qclass, uint16_t qtype)
|
||||||
|
+{
|
||||||
|
+ switch (ctx->server_index)
|
||||||
|
+ {
|
||||||
|
+ case 0:
|
||||||
|
+ /* First server times out. */
|
||||||
|
+ struct resolv_response_flags flags = {.rcode = rcode};
|
||||||
|
+ resolv_response_init (b, flags);
|
||||||
|
+ break;
|
||||||
|
+ case 1:
|
||||||
|
+ /* Second server sends reply. */
|
||||||
|
+ resolv_response_init (b, (struct resolv_response_flags) {});
|
||||||
|
+ resolv_response_add_question (b, qname, qclass, qtype);
|
||||||
|
+ resolv_response_section (b, ns_s_an);
|
||||||
|
+ resolv_response_open_record (b, qname, qclass, qtype, 0);
|
||||||
|
+ switch (qtype)
|
||||||
|
+ {
|
||||||
|
+ case T_A:
|
||||||
|
+ {
|
||||||
|
+ char ipv4[4] = {192, 0, 2, 17};
|
||||||
|
+ resolv_response_add_data (b, &ipv4, sizeof (ipv4));
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ case T_AAAA:
|
||||||
|
+ {
|
||||||
|
+ char ipv6[16]
|
||||||
|
+ = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
|
||||||
|
+ resolv_response_add_data (b, &ipv6, sizeof (ipv6));
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ FAIL_EXIT1 ("unexpected TYPE%d query", qtype);
|
||||||
|
+ }
|
||||||
|
+ resolv_response_close_record (b);
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ FAIL_EXIT1 ("unexpected query to server %d", ctx->server_index);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+check_one (void)
|
||||||
|
+{
|
||||||
|
+
|
||||||
|
+ /* The buggy 1-second query timeout results in 30 seconds of delay,
|
||||||
|
+ which triggers a test timeout failure. */
|
||||||
|
+ for (int i = 0; i < 10; ++i)
|
||||||
|
+ {
|
||||||
|
+ check_hostent ("www.example", gethostbyname ("www.example"),
|
||||||
|
+ "name: www.example\n"
|
||||||
|
+ "address: 192.0.2.17\n");
|
||||||
|
+ check_hostent ("www.example", gethostbyname2 ("www.example", AF_INET6),
|
||||||
|
+ "name: www.example\n"
|
||||||
|
+ "address: 2001:db8::1\n");
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+do_test (void)
|
||||||
|
+{
|
||||||
|
+ struct resolv_test *aux = resolv_test_start
|
||||||
|
+ ((struct resolv_redirect_config)
|
||||||
|
+ {
|
||||||
|
+ .response_callback = response,
|
||||||
|
+ });
|
||||||
|
+
|
||||||
|
+ _res.options |= RES_SNGLKUP;
|
||||||
|
+
|
||||||
|
+ rcode = 2; /* SERVFAIL. */
|
||||||
|
+ check_one ();
|
||||||
|
+
|
||||||
|
+ rcode = 4; /* NOTIMP. */
|
||||||
|
+ check_one ();
|
||||||
|
+
|
||||||
|
+ rcode = 5; /* REFUSED. */
|
||||||
|
+ check_one ();
|
||||||
|
+
|
||||||
|
+ resolv_test_end (aux);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#include <support/test-driver.c>
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
232
0006-resolv-Do-not-wait-for-non-existing-second-DNS-respo.patch
Normal file
232
0006-resolv-Do-not-wait-for-non-existing-second-DNS-respo.patch
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
From 6cad0f543ccac5abd35a3a617fab72a9c8c64155 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Florian Weimer <fweimer@redhat.com>
|
||||||
|
Date: Wed, 24 Jul 2024 12:06:47 +0200
|
||||||
|
Subject: [PATCH 06/12] resolv: Do not wait for non-existing second DNS
|
||||||
|
response after error (bug 30081)
|
||||||
|
|
||||||
|
In single-request mode, there is no second response after an error
|
||||||
|
because the second query has not been sent yet. Waiting for it
|
||||||
|
introduces an unnecessary timeout.
|
||||||
|
|
||||||
|
Reviewed-by: DJ Delorie <dj@redhat.com>
|
||||||
|
(cherry picked from commit af625987d619388a100b153520d3ee308bda9889)
|
||||||
|
---
|
||||||
|
NEWS | 1 +
|
||||||
|
resolv/Makefile | 3 +
|
||||||
|
resolv/res_send.c | 2 +-
|
||||||
|
resolv/tst-resolv-semi-failure.c | 133 +++++++++++++++++++++++++++++
|
||||||
|
resolv/tst-resolv-short-response.c | 12 +++
|
||||||
|
5 files changed, 150 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 resolv/tst-resolv-semi-failure.c
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index c331604747..4156a017ac 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -37,6 +37,7 @@ Security related changes:
|
||||||
|
The following bugs are resolved with this release:
|
||||||
|
|
||||||
|
[29039] Corrupt DTV after reuse of a TLS module ID following dlclose with unused TLS
|
||||||
|
+ [30081] resolv: Do not wait for non-existing second DNS response after error
|
||||||
|
[30694] The iconv program no longer tells the user which given encoding name was wrong
|
||||||
|
[30709] nscd fails to build with cleanup handler if built with -fexceptions
|
||||||
|
[30721] x86_64: Fix build with --disable-multiarch
|
||||||
|
diff --git a/resolv/Makefile b/resolv/Makefile
|
||||||
|
index cca0748f9a..b53a5fcfdb 100644
|
||||||
|
--- a/resolv/Makefile
|
||||||
|
+++ b/resolv/Makefile
|
||||||
|
@@ -106,6 +106,7 @@ tests += \
|
||||||
|
tst-resolv-nondecimal \
|
||||||
|
tst-resolv-res_init-multi \
|
||||||
|
tst-resolv-search \
|
||||||
|
+ tst-resolv-semi-failure \
|
||||||
|
tst-resolv-short-response \
|
||||||
|
tst-resolv-trailing \
|
||||||
|
|
||||||
|
@@ -300,6 +301,8 @@ $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library)
|
||||||
|
$(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library)
|
||||||
|
$(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library)
|
||||||
|
$(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library)
|
||||||
|
+$(objpfx)tst-resolv-semi-failure: $(objpfx)libresolv.so \
|
||||||
|
+ $(shared-thread-library)
|
||||||
|
$(objpfx)tst-resolv-short-response: $(objpfx)libresolv.so \
|
||||||
|
$(shared-thread-library)
|
||||||
|
$(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library)
|
||||||
|
diff --git a/resolv/res_send.c b/resolv/res_send.c
|
||||||
|
index bf4ce67b1d..b741b42cae 100644
|
||||||
|
--- a/resolv/res_send.c
|
||||||
|
+++ b/resolv/res_send.c
|
||||||
|
@@ -1236,7 +1236,7 @@ send_dg(res_state statp,
|
||||||
|
*resplen2 = 0;
|
||||||
|
return resplen;
|
||||||
|
}
|
||||||
|
- if (buf2 != NULL)
|
||||||
|
+ if (buf2 != NULL && !single_request)
|
||||||
|
{
|
||||||
|
/* No data from the first reply. */
|
||||||
|
resplen = 0;
|
||||||
|
diff --git a/resolv/tst-resolv-semi-failure.c b/resolv/tst-resolv-semi-failure.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..aa9798b5a7
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/resolv/tst-resolv-semi-failure.c
|
||||||
|
@@ -0,0 +1,133 @@
|
||||||
|
+/* Test parallel failure/success responses (bug 30081).
|
||||||
|
+ Copyright (C) 2024 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 <resolv.h>
|
||||||
|
+#include <support/check.h>
|
||||||
|
+#include <support/resolv_test.h>
|
||||||
|
+#include <support/check_nss.h>
|
||||||
|
+
|
||||||
|
+/* The rcode in the initial response. */
|
||||||
|
+static volatile int rcode;
|
||||||
|
+
|
||||||
|
+/* Whether to fail the initial A query (!fail_aaaa) or the initial
|
||||||
|
+ AAAA query (fail_aaaa). */
|
||||||
|
+static volatile bool fail_aaaa;
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+response (const struct resolv_response_context *ctx,
|
||||||
|
+ struct resolv_response_builder *b,
|
||||||
|
+ const char *qname, uint16_t qclass, uint16_t qtype)
|
||||||
|
+{
|
||||||
|
+ /* Handle the failing query. */
|
||||||
|
+ if ((fail_aaaa && qtype == T_AAAA) && ctx->server_index == 0)
|
||||||
|
+ {
|
||||||
|
+ struct resolv_response_flags flags = {.rcode = rcode};
|
||||||
|
+ resolv_response_init (b, flags);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* Otherwise produce a response. */
|
||||||
|
+ resolv_response_init (b, (struct resolv_response_flags) {});
|
||||||
|
+ resolv_response_add_question (b, qname, qclass, qtype);
|
||||||
|
+ resolv_response_section (b, ns_s_an);
|
||||||
|
+ resolv_response_open_record (b, qname, qclass, qtype, 0);
|
||||||
|
+ switch (qtype)
|
||||||
|
+ {
|
||||||
|
+ case T_A:
|
||||||
|
+ {
|
||||||
|
+ char ipv4[4] = {192, 0, 2, 17};
|
||||||
|
+ resolv_response_add_data (b, &ipv4, sizeof (ipv4));
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ case T_AAAA:
|
||||||
|
+ {
|
||||||
|
+ char ipv6[16]
|
||||||
|
+ = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
|
||||||
|
+ resolv_response_add_data (b, &ipv6, sizeof (ipv6));
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ FAIL_EXIT1 ("unexpected TYPE%d query", qtype);
|
||||||
|
+ }
|
||||||
|
+ resolv_response_close_record (b);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+check_one (void)
|
||||||
|
+{
|
||||||
|
+
|
||||||
|
+ /* The buggy 1-second query timeout results in 30 seconds of delay,
|
||||||
|
+ which triggers are test timeout failure. */
|
||||||
|
+ for (int i = 0; i < 30; ++i)
|
||||||
|
+ {
|
||||||
|
+ static const struct addrinfo hints =
|
||||||
|
+ {
|
||||||
|
+ .ai_family = AF_UNSPEC,
|
||||||
|
+ .ai_socktype = SOCK_STREAM,
|
||||||
|
+ };
|
||||||
|
+ struct addrinfo *ai;
|
||||||
|
+ int ret = getaddrinfo ("www.example", "80", &hints, &ai);
|
||||||
|
+ const char *expected;
|
||||||
|
+ if (ret == 0 && ai->ai_next != NULL)
|
||||||
|
+ expected = ("address: STREAM/TCP 192.0.2.17 80\n"
|
||||||
|
+ "address: STREAM/TCP 2001:db8::1 80\n");
|
||||||
|
+ else
|
||||||
|
+ /* Only one response because the AAAA lookup failure is
|
||||||
|
+ treated as an ignoreable error. */
|
||||||
|
+ expected = "address: STREAM/TCP 192.0.2.17 80\n";
|
||||||
|
+ check_addrinfo ("www.example", ai, ret, expected);
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ freeaddrinfo (ai);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+do_test (void)
|
||||||
|
+{
|
||||||
|
+ for (int do_single_lookup = 0; do_single_lookup < 2; ++do_single_lookup)
|
||||||
|
+ {
|
||||||
|
+ struct resolv_test *aux = resolv_test_start
|
||||||
|
+ ((struct resolv_redirect_config)
|
||||||
|
+ {
|
||||||
|
+ .response_callback = response,
|
||||||
|
+ });
|
||||||
|
+
|
||||||
|
+ if (do_single_lookup)
|
||||||
|
+ _res.options |= RES_SNGLKUP;
|
||||||
|
+
|
||||||
|
+ for (int do_fail_aaaa = 0; do_fail_aaaa < 2; ++do_fail_aaaa)
|
||||||
|
+ {
|
||||||
|
+ fail_aaaa = do_fail_aaaa;
|
||||||
|
+
|
||||||
|
+ rcode = 2; /* SERVFAIL. */
|
||||||
|
+ check_one ();
|
||||||
|
+
|
||||||
|
+ rcode = 4; /* NOTIMP. */
|
||||||
|
+ check_one ();
|
||||||
|
+
|
||||||
|
+ rcode = 5; /* REFUSED. */
|
||||||
|
+ check_one ();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ resolv_test_end (aux);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#include <support/test-driver.c>
|
||||||
|
diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c
|
||||||
|
index cf1e39876f..be354ae1c7 100644
|
||||||
|
--- a/resolv/tst-resolv-short-response.c
|
||||||
|
+++ b/resolv/tst-resolv-short-response.c
|
||||||
|
@@ -81,6 +81,18 @@ check_one (void)
|
||||||
|
check_hostent ("www.example", gethostbyname2 ("www.example", AF_INET6),
|
||||||
|
"name: www.example\n"
|
||||||
|
"address: 2001:db8::1\n");
|
||||||
|
+ static const struct addrinfo hints =
|
||||||
|
+ {
|
||||||
|
+ .ai_family = AF_UNSPEC,
|
||||||
|
+ .ai_socktype = SOCK_STREAM,
|
||||||
|
+ };
|
||||||
|
+ struct addrinfo *ai;
|
||||||
|
+ int ret = getaddrinfo ("www.example", "80", &hints, &ai);
|
||||||
|
+ check_addrinfo ("www.example", ai, ret,
|
||||||
|
+ "address: STREAM/TCP 192.0.2.17 80\n"
|
||||||
|
+ "address: STREAM/TCP 2001:db8::1 80\n");
|
||||||
|
+ if (ret == 0)
|
||||||
|
+ freeaddrinfo (ai);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
@ -0,0 +1,81 @@
|
|||||||
|
From 1bed6acf50f6fdedf5a501cbd6a8225e5c13b886 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Florian Weimer <fweimer@redhat.com>
|
||||||
|
Date: Thu, 13 Jun 2024 18:56:30 +0200
|
||||||
|
Subject: [PATCH 07/12] resolv: Track single-request fallback via _res._flags
|
||||||
|
(bug 31476)
|
||||||
|
|
||||||
|
This avoids changing _res.options, which inteferes with change
|
||||||
|
detection as part of automatic reloading of /etc/resolv.conf.
|
||||||
|
|
||||||
|
Reviewed-by: DJ Delorie <dj@redhat.com>
|
||||||
|
(cherry picked from commit 868ab8923a2ec977faafec97ecafac0c3159c1b2)
|
||||||
|
---
|
||||||
|
NEWS | 1 +
|
||||||
|
resolv/res_send.c | 12 +++++++-----
|
||||||
|
resolv/resolv-internal.h | 2 ++
|
||||||
|
3 files changed, 10 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 4156a017ac..3b252c96b4 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -52,6 +52,7 @@ The following bugs are resolved with this release:
|
||||||
|
[31183] Wide stream buffer size reduced MB_LEN_MAX bytes after bug 17522 fix
|
||||||
|
[31184] FAIL: elf/tst-tlsgap
|
||||||
|
[31185] Incorrect thread point access in _dl_tlsdesc_undefweak and _dl_tlsdesc_dynamic
|
||||||
|
+ [31476] resolv: Track single-request fallback via _res._flags
|
||||||
|
[31890] resolv: Allow short error responses to match any DNS query
|
||||||
|
[31965] rseq extension mechanism does not work as intended
|
||||||
|
|
||||||
|
diff --git a/resolv/res_send.c b/resolv/res_send.c
|
||||||
|
index b741b42cae..1b130b4df4 100644
|
||||||
|
--- a/resolv/res_send.c
|
||||||
|
+++ b/resolv/res_send.c
|
||||||
|
@@ -947,9 +947,11 @@ send_dg(res_state statp,
|
||||||
|
seconds /= statp->nscount;
|
||||||
|
if (seconds <= 0)
|
||||||
|
seconds = 1;
|
||||||
|
- bool single_request_reopen = (statp->options & RES_SNGLKUPREOP) != 0;
|
||||||
|
- bool single_request = (((statp->options & RES_SNGLKUP) != 0)
|
||||||
|
- | single_request_reopen);
|
||||||
|
+ bool single_request_reopen = ((statp->options & RES_SNGLKUPREOP)
|
||||||
|
+ || (statp->_flags & RES_F_SNGLKUPREOP));
|
||||||
|
+ bool single_request = ((statp->options & RES_SNGLKUP)
|
||||||
|
+ || (statp->_flags & RES_F_SNGLKUP)
|
||||||
|
+ || single_request_reopen);
|
||||||
|
int save_gotsomewhere = *gotsomewhere;
|
||||||
|
|
||||||
|
int retval;
|
||||||
|
@@ -1006,14 +1008,14 @@ send_dg(res_state statp,
|
||||||
|
have received the first answer. */
|
||||||
|
if (!single_request)
|
||||||
|
{
|
||||||
|
- statp->options |= RES_SNGLKUP;
|
||||||
|
+ statp->_flags |= RES_F_SNGLKUP;
|
||||||
|
single_request = true;
|
||||||
|
*gotsomewhere = save_gotsomewhere;
|
||||||
|
goto retry;
|
||||||
|
}
|
||||||
|
else if (!single_request_reopen)
|
||||||
|
{
|
||||||
|
- statp->options |= RES_SNGLKUPREOP;
|
||||||
|
+ statp->_flags |= RES_F_SNGLKUPREOP;
|
||||||
|
single_request_reopen = true;
|
||||||
|
*gotsomewhere = save_gotsomewhere;
|
||||||
|
__res_iclose (statp, false);
|
||||||
|
diff --git a/resolv/resolv-internal.h b/resolv/resolv-internal.h
|
||||||
|
index 2b98ac4920..3fa81d784f 100644
|
||||||
|
--- a/resolv/resolv-internal.h
|
||||||
|
+++ b/resolv/resolv-internal.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
#define RES_F_VC 0x00000001 /* Socket is TCP. */
|
||||||
|
#define RES_F_CONN 0x00000002 /* Socket is connected. */
|
||||||
|
#define RES_F_EDNS0ERR 0x00000004 /* EDNS0 caused errors. */
|
||||||
|
+#define RES_F_SNGLKUP 0x00200000 /* Private version of RES_SNGLKUP. */
|
||||||
|
+#define RES_F_SNGLKUPREOP 0x00400000 /* Private version of RES_SNGLKUPREOP. */
|
||||||
|
|
||||||
|
/* The structure HEADER is normally aligned on a word boundary. In
|
||||||
|
some code, we need to access this structure when it may be aligned
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
68
0008-linux-Update-the-mremap-C-implementation-BZ-31968.patch
Normal file
68
0008-linux-Update-the-mremap-C-implementation-BZ-31968.patch
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
From 0301637b9931766ee389aedf3899cde756b37283 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||||
|
Date: Wed, 24 Jul 2024 14:05:13 -0700
|
||||||
|
Subject: [PATCH 08/12] linux: Update the mremap C implementation [BZ #31968]
|
||||||
|
|
||||||
|
Update the mremap C implementation to support the optional argument for
|
||||||
|
MREMAP_DONTUNMAP added in Linux 5.7 since it may not always be correct
|
||||||
|
to implement a variadic function as a non-variadic function on all Linux
|
||||||
|
targets. Return MAP_FAILED and set errno to EINVAL for unknown flag bits.
|
||||||
|
This fixes BZ #31968.
|
||||||
|
|
||||||
|
Note: A test must be added when a new flag bit is introduced.
|
||||||
|
|
||||||
|
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
|
||||||
|
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||||
|
(cherry picked from commit 6c40cb0e9f893d49dc7caee580a055de53562206)
|
||||||
|
---
|
||||||
|
NEWS | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/mremap.c | 14 +++++++++++++-
|
||||||
|
2 files changed, 14 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 3b252c96b4..5172049eb2 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -55,6 +55,7 @@ The following bugs are resolved with this release:
|
||||||
|
[31476] resolv: Track single-request fallback via _res._flags
|
||||||
|
[31890] resolv: Allow short error responses to match any DNS query
|
||||||
|
[31965] rseq extension mechanism does not work as intended
|
||||||
|
+ [31968] mremap implementation in C does not handle arguments correctly
|
||||||
|
|
||||||
|
|
||||||
|
Version 2.38
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/mremap.c b/sysdeps/unix/sysv/linux/mremap.c
|
||||||
|
index 0ad5da86a2..05ed8febfa 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/mremap.c
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/mremap.c
|
||||||
|
@@ -20,6 +20,12 @@
|
||||||
|
#include <sysdep.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
+#include <errno.h>
|
||||||
|
+
|
||||||
|
+#define MREMAP_KNOWN_BITS \
|
||||||
|
+ (MREMAP_MAYMOVE \
|
||||||
|
+ | MREMAP_FIXED \
|
||||||
|
+ | MREMAP_DONTUNMAP)
|
||||||
|
|
||||||
|
void *
|
||||||
|
__mremap (void *addr, size_t old_len, size_t new_len, int flags, ...)
|
||||||
|
@@ -27,7 +33,13 @@ __mremap (void *addr, size_t old_len, size_t new_len, int flags, ...)
|
||||||
|
va_list va;
|
||||||
|
void *new_addr = NULL;
|
||||||
|
|
||||||
|
- if (flags & MREMAP_FIXED)
|
||||||
|
+ if (flags & ~(MREMAP_KNOWN_BITS))
|
||||||
|
+ {
|
||||||
|
+ __set_errno (EINVAL);
|
||||||
|
+ return MAP_FAILED;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (flags & (MREMAP_FIXED | MREMAP_DONTUNMAP))
|
||||||
|
{
|
||||||
|
va_start (va, flags);
|
||||||
|
new_addr = va_arg (va, void *);
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
88
0009-mremap-Update-manual-entry.patch
Normal file
88
0009-mremap-Update-manual-entry.patch
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
From f0e211453546a134ac27e1e54579332534acb349 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||||
|
Date: Wed, 24 Jul 2024 14:05:14 -0700
|
||||||
|
Subject: [PATCH 09/12] mremap: Update manual entry
|
||||||
|
|
||||||
|
Update mremap manual entry:
|
||||||
|
|
||||||
|
1. Change mremap to variadic.
|
||||||
|
2. Document MREMAP_FIXED and MREMAP_DONTUNMAP.
|
||||||
|
|
||||||
|
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
|
||||||
|
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||||
|
(cherry picked from commit cb2dee4eccf46642eef588bee64f9c875c408f1c)
|
||||||
|
---
|
||||||
|
manual/llio.texi | 42 +++++++++++++++++++++++++++++++++++-------
|
||||||
|
1 file changed, 35 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/manual/llio.texi b/manual/llio.texi
|
||||||
|
index fae49d1433..a65230d612 100644
|
||||||
|
--- a/manual/llio.texi
|
||||||
|
+++ b/manual/llio.texi
|
||||||
|
@@ -1781,7 +1781,7 @@ There is no existing mapping in at least part of the given region.
|
||||||
|
|
||||||
|
@end deftypefun
|
||||||
|
|
||||||
|
-@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag})
|
||||||
|
+@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag}, ... /* void *@var{new_address} */)
|
||||||
|
@standards{GNU, sys/mman.h}
|
||||||
|
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||||
|
|
||||||
|
@@ -1790,12 +1790,40 @@ area. @var{address} and @var{length} must cover a region entirely mapped
|
||||||
|
in the same @code{mmap} statement. A new mapping with the same
|
||||||
|
characteristics will be returned with the length @var{new_length}.
|
||||||
|
|
||||||
|
-One option is possible, @code{MREMAP_MAYMOVE}. If it is given in
|
||||||
|
-@var{flags}, the system may remove the existing mapping and create a new
|
||||||
|
-one of the desired length in another location.
|
||||||
|
+Possible flags are
|
||||||
|
|
||||||
|
-The address of the resulting mapping is returned, or @math{-1}. Possible
|
||||||
|
-error codes include:
|
||||||
|
+@table @code
|
||||||
|
+
|
||||||
|
+@item MREMAP_MAYMOVE
|
||||||
|
+If it is given in @var{flags}, the system may remove the existing mapping
|
||||||
|
+and create a new one of the desired length in another location.
|
||||||
|
+
|
||||||
|
+@item MREMAP_FIXED
|
||||||
|
+If it is given in @var{flags}, @code{mremap} accepts a fifth argument,
|
||||||
|
+@code{void *new_address}, which specifies a page-aligned address to
|
||||||
|
+which the mapping must be moved. Any previous mapping at the address
|
||||||
|
+range specified by @var{new_address} and @var{new_size} is unmapped.
|
||||||
|
+
|
||||||
|
+@code{MREMAP_FIXED} must be used together with @code{MREMAP_MAYMOVE}.
|
||||||
|
+
|
||||||
|
+@item MREMAP_DONTUNMAP
|
||||||
|
+If it is given in @var{flags}, @code{mremap} accepts a fifth argument,
|
||||||
|
+@code{void *new_address}, which specifies a page-aligned address. Any
|
||||||
|
+previous mapping at the address range specified by @var{new_address} and
|
||||||
|
+@var{new_size} is unmapped. If @var{new_address} is @code{NULL}, the
|
||||||
|
+kernel chooses the page-aligned address at which to create the mapping.
|
||||||
|
+Otherwise, the kernel takes it as a hint about where to place the mapping.
|
||||||
|
+The mapping at the address range specified by @var{old_address} and
|
||||||
|
+@var{old_size} isn't unmapped.
|
||||||
|
+
|
||||||
|
+@code{MREMAP_DONTUNMAP} must be used together with @code{MREMAP_MAYMOVE}.
|
||||||
|
+@var{old_size} must be the same as @var{new_size}. This flag bit is
|
||||||
|
+Linux-specific.
|
||||||
|
+
|
||||||
|
+@end table
|
||||||
|
+
|
||||||
|
+The address of the resulting mapping is returned, or @code{MAP_FAILED}.
|
||||||
|
+Possible error codes include:
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
|
||||||
|
@@ -1804,7 +1832,7 @@ There is no existing mapping in at least part of the original region, or
|
||||||
|
the region covers two or more distinct mappings.
|
||||||
|
|
||||||
|
@item EINVAL
|
||||||
|
-The address given is misaligned or inappropriate.
|
||||||
|
+Any arguments are inappropriate, including unknown @var{flags} values.
|
||||||
|
|
||||||
|
@item EAGAIN
|
||||||
|
The region has pages locked, and if extended it would exceed the
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
302
0010-Add-mremap-tests.patch
Normal file
302
0010-Add-mremap-tests.patch
Normal file
@ -0,0 +1,302 @@
|
|||||||
|
From 6bb75212e6198cd14ab9d1d538a61fa9cdec31d1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||||
|
Date: Wed, 24 Jul 2024 14:05:15 -0700
|
||||||
|
Subject: [PATCH 10/12] Add mremap tests
|
||||||
|
|
||||||
|
Add tests for MREMAP_MAYMOVE and MREMAP_FIXED. On Linux, also test
|
||||||
|
MREMAP_DONTUNMAP.
|
||||||
|
|
||||||
|
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
|
||||||
|
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||||
|
(cherry picked from commit ff0320bec2810192d453c579623482fab87bfa01)
|
||||||
|
---
|
||||||
|
misc/Makefile | 2 +
|
||||||
|
misc/tst-mremap1.c | 46 +++++++++++++++
|
||||||
|
misc/tst-mremap2.c | 54 ++++++++++++++++++
|
||||||
|
sysdeps/generic/mremap-failure.h | 25 ++++++++
|
||||||
|
sysdeps/unix/sysv/linux/Makefile | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/mremap-failure.h | 30 ++++++++++
|
||||||
|
sysdeps/unix/sysv/linux/tst-linux-mremap1.c | 63 +++++++++++++++++++++
|
||||||
|
7 files changed, 221 insertions(+)
|
||||||
|
create mode 100644 misc/tst-mremap1.c
|
||||||
|
create mode 100644 misc/tst-mremap2.c
|
||||||
|
create mode 100644 sysdeps/generic/mremap-failure.h
|
||||||
|
create mode 100644 sysdeps/unix/sysv/linux/mremap-failure.h
|
||||||
|
create mode 100644 sysdeps/unix/sysv/linux/tst-linux-mremap1.c
|
||||||
|
|
||||||
|
diff --git a/misc/Makefile b/misc/Makefile
|
||||||
|
index 90b31952c5..87778a538a 100644
|
||||||
|
--- a/misc/Makefile
|
||||||
|
+++ b/misc/Makefile
|
||||||
|
@@ -251,6 +251,8 @@ tests := \
|
||||||
|
tst-mntent-blank-passno \
|
||||||
|
tst-mntent-escape \
|
||||||
|
tst-mntent2 \
|
||||||
|
+ tst-mremap1 \
|
||||||
|
+ tst-mremap2 \
|
||||||
|
tst-preadvwritev \
|
||||||
|
tst-preadvwritev2 \
|
||||||
|
tst-preadvwritev64 \
|
||||||
|
diff --git a/misc/tst-mremap1.c b/misc/tst-mremap1.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..0469991a6c
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/misc/tst-mremap1.c
|
||||||
|
@@ -0,0 +1,46 @@
|
||||||
|
+/* Test mremap with MREMAP_MAYMOVE.
|
||||||
|
+ Copyright (C) 2024 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 <errno.h>
|
||||||
|
+#include <sys/mman.h>
|
||||||
|
+#include <support/xstdlib.h>
|
||||||
|
+#include <support/xunistd.h>
|
||||||
|
+#include <support/check.h>
|
||||||
|
+#include <support/test-driver.h>
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+do_test (void)
|
||||||
|
+{
|
||||||
|
+ size_t old_size = getpagesize ();
|
||||||
|
+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE,
|
||||||
|
+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
|
||||||
|
+ old_addr[0] = 1;
|
||||||
|
+ old_addr[old_size - 1] = 2;
|
||||||
|
+
|
||||||
|
+ /* Test MREMAP_MAYMOVE. */
|
||||||
|
+ size_t new_size = old_size + old_size;
|
||||||
|
+ char *new_addr = mremap (old_addr, old_size, new_size, MREMAP_MAYMOVE);
|
||||||
|
+ TEST_VERIFY_EXIT (new_addr != MAP_FAILED);
|
||||||
|
+ new_addr[0] = 1;
|
||||||
|
+ new_addr[new_size - 1] = 2;
|
||||||
|
+ xmunmap (new_addr, new_size);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#include <support/test-driver.c>
|
||||||
|
diff --git a/misc/tst-mremap2.c b/misc/tst-mremap2.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..45be7f0369
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/misc/tst-mremap2.c
|
||||||
|
@@ -0,0 +1,54 @@
|
||||||
|
+/* Test mremap with MREMAP_FIXED.
|
||||||
|
+ Copyright (C) 2024 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 <errno.h>
|
||||||
|
+#include <sys/mman.h>
|
||||||
|
+#include <support/xstdlib.h>
|
||||||
|
+#include <support/xunistd.h>
|
||||||
|
+#include <support/test-driver.h>
|
||||||
|
+#include <mremap-failure.h>
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+do_test (void)
|
||||||
|
+{
|
||||||
|
+ size_t old_size = getpagesize ();
|
||||||
|
+ size_t new_size = old_size + old_size;
|
||||||
|
+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE,
|
||||||
|
+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
|
||||||
|
+ old_addr[0] = 1;
|
||||||
|
+ old_addr[old_size - 1] = 2;
|
||||||
|
+
|
||||||
|
+ char *fixed_addr = xmmap (NULL, new_size, PROT_READ | PROT_WRITE,
|
||||||
|
+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
|
||||||
|
+ fixed_addr[0] = 1;
|
||||||
|
+ fixed_addr[new_size - 1] = 2;
|
||||||
|
+
|
||||||
|
+ /* Test MREMAP_FIXED. */
|
||||||
|
+ char *new_addr = mremap (old_addr, old_size, new_size,
|
||||||
|
+ MREMAP_FIXED | MREMAP_MAYMOVE,
|
||||||
|
+ fixed_addr);
|
||||||
|
+ if (new_addr == MAP_FAILED)
|
||||||
|
+ return mremap_failure_exit (errno);
|
||||||
|
+ new_addr[0] = 1;
|
||||||
|
+ new_addr[new_size - 1] = 2;
|
||||||
|
+ xmunmap (new_addr, new_size);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#include <support/test-driver.c>
|
||||||
|
diff --git a/sysdeps/generic/mremap-failure.h b/sysdeps/generic/mremap-failure.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..bc0d476368
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/sysdeps/generic/mremap-failure.h
|
||||||
|
@@ -0,0 +1,25 @@
|
||||||
|
+/* mremap failure handling. Generic version.
|
||||||
|
+ Copyright (C) 2024 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/>. */
|
||||||
|
+
|
||||||
|
+/* Return exit value on mremap failure with errno ERR. */
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+mremap_failure_exit (int err)
|
||||||
|
+{
|
||||||
|
+ return EXIT_FAILURE;
|
||||||
|
+}
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
|
||||||
|
index 623a7d4de0..9b503c8379 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/Makefile
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/Makefile
|
||||||
|
@@ -202,6 +202,7 @@ tests += \
|
||||||
|
tst-getauxval \
|
||||||
|
tst-gettid \
|
||||||
|
tst-gettid-kill \
|
||||||
|
+ tst-linux-mremap1 \
|
||||||
|
tst-memfd_create \
|
||||||
|
tst-misalign-clone \
|
||||||
|
tst-mlock2 \
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/mremap-failure.h b/sysdeps/unix/sysv/linux/mremap-failure.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..c99ab30ca9
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/mremap-failure.h
|
||||||
|
@@ -0,0 +1,30 @@
|
||||||
|
+/* mremap failure handling. Linux version.
|
||||||
|
+ Copyright (C) 2024 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>
|
||||||
|
+
|
||||||
|
+/* Return exit value on mremap failure with errno ERR. */
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+mremap_failure_exit (int err)
|
||||||
|
+{
|
||||||
|
+ if (err != EINVAL)
|
||||||
|
+ return EXIT_FAILURE;
|
||||||
|
+
|
||||||
|
+ return EXIT_UNSUPPORTED;
|
||||||
|
+}
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/tst-linux-mremap1.c b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..408e8af2ab
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c
|
||||||
|
@@ -0,0 +1,63 @@
|
||||||
|
+/* Test mremap with MREMAP_DONTUNMAP.
|
||||||
|
+ Copyright (C) 2024 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 <errno.h>
|
||||||
|
+#include <sys/mman.h>
|
||||||
|
+#include <support/xstdlib.h>
|
||||||
|
+#include <support/xunistd.h>
|
||||||
|
+#include <support/check.h>
|
||||||
|
+#include <support/test-driver.h>
|
||||||
|
+#include <mremap-failure.h>
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+do_test (void)
|
||||||
|
+{
|
||||||
|
+ size_t old_size = getpagesize ();
|
||||||
|
+ size_t new_size = old_size;
|
||||||
|
+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE,
|
||||||
|
+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
|
||||||
|
+ old_addr[0] = 1;
|
||||||
|
+ old_addr[old_size - 1] = 2;
|
||||||
|
+
|
||||||
|
+ /* Create an available 64-page mmap region. */
|
||||||
|
+ size_t fixed_size = old_size * 64;
|
||||||
|
+ char *fixed_addr = xmmap (NULL, fixed_size, PROT_READ | PROT_WRITE,
|
||||||
|
+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
|
||||||
|
+ xmunmap (fixed_addr, fixed_size);
|
||||||
|
+
|
||||||
|
+ /* Add 3 * pagesize. */
|
||||||
|
+ fixed_size += 3 * old_size;
|
||||||
|
+
|
||||||
|
+ /* Test MREMAP_DONTUNMAP. It should return FIXED_ADDR created above. */
|
||||||
|
+ char *new_addr = mremap (old_addr, old_size, new_size,
|
||||||
|
+ MREMAP_DONTUNMAP | MREMAP_MAYMOVE,
|
||||||
|
+ fixed_addr);
|
||||||
|
+ if (new_addr == MAP_FAILED)
|
||||||
|
+ return mremap_failure_exit (errno);
|
||||||
|
+ TEST_VERIFY_EXIT (fixed_addr == new_addr);
|
||||||
|
+ old_addr[0] = 3;
|
||||||
|
+ old_addr[old_size - 1] = 4;
|
||||||
|
+ new_addr[0] = 1;
|
||||||
|
+ new_addr[new_size - 1] = 2;
|
||||||
|
+ xmunmap (new_addr, new_size);
|
||||||
|
+ xmunmap (old_addr, old_size);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#include <support/test-driver.c>
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
394
0011-Update-syscall-lists-for-Linux-6.5.patch
Normal file
394
0011-Update-syscall-lists-for-Linux-6.5.patch
Normal file
@ -0,0 +1,394 @@
|
|||||||
|
From 3ac7ba61d2d4a914b64a1d793857b84f6a875fa0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Joseph Myers <joseph@codesourcery.com>
|
||||||
|
Date: Tue, 12 Sep 2023 14:08:53 +0000
|
||||||
|
Subject: [PATCH 11/12] Update syscall lists for Linux 6.5
|
||||||
|
|
||||||
|
Linux 6.5 has one new syscall, cachestat, and also enables the
|
||||||
|
cacheflush syscall for hppa. Update syscall-names.list and regenerate
|
||||||
|
the arch-syscall.h headers with build-many-glibcs.py update-syscalls.
|
||||||
|
|
||||||
|
Tested with build-many-glibcs.py.
|
||||||
|
|
||||||
|
(cherry picked from commit 72511f539cc34681ec61c6a0dc2fe6d684760ffe)
|
||||||
|
---
|
||||||
|
sysdeps/unix/sysv/linux/aarch64/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/alpha/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/arc/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/arm/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/csky/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/hppa/arch-syscall.h | 2 ++
|
||||||
|
sysdeps/unix/sysv/linux/i386/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/ia64/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/loongarch/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/m68k/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/microblaze/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/nios2/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/or1k/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/sh/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/syscall-names.list | 5 +++--
|
||||||
|
sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h | 1 +
|
||||||
|
sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h | 1 +
|
||||||
|
28 files changed, 31 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/aarch64/arch-syscall.h b/sysdeps/unix/sysv/linux/aarch64/arch-syscall.h
|
||||||
|
index 4fcb6da80a..8f21ee66a0 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/aarch64/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/aarch64/arch-syscall.h
|
||||||
|
@@ -7,6 +7,7 @@
|
||||||
|
#define __NR_bind 200
|
||||||
|
#define __NR_bpf 280
|
||||||
|
#define __NR_brk 214
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 90
|
||||||
|
#define __NR_capset 91
|
||||||
|
#define __NR_chdir 49
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/alpha/arch-syscall.h b/sysdeps/unix/sysv/linux/alpha/arch-syscall.h
|
||||||
|
index 0cf74c1a96..c5802a5fec 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/alpha/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/alpha/arch-syscall.h
|
||||||
|
@@ -11,6 +11,7 @@
|
||||||
|
#define __NR_bind 104
|
||||||
|
#define __NR_bpf 515
|
||||||
|
#define __NR_brk 17
|
||||||
|
+#define __NR_cachestat 561
|
||||||
|
#define __NR_capget 368
|
||||||
|
#define __NR_capset 369
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/arc/arch-syscall.h b/sysdeps/unix/sysv/linux/arc/arch-syscall.h
|
||||||
|
index c1207aaa12..f23f9e1154 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/arc/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/arc/arch-syscall.h
|
||||||
|
@@ -11,6 +11,7 @@
|
||||||
|
#define __NR_bpf 280
|
||||||
|
#define __NR_brk 214
|
||||||
|
#define __NR_cacheflush 244
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 90
|
||||||
|
#define __NR_capset 91
|
||||||
|
#define __NR_chdir 49
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/arm/arch-syscall.h b/sysdeps/unix/sysv/linux/arm/arch-syscall.h
|
||||||
|
index e7ba04c106..7edf574899 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/arm/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/arm/arch-syscall.h
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
#define __NR_bpf 386
|
||||||
|
#define __NR_brk 45
|
||||||
|
#define __NR_cacheflush 983042
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 184
|
||||||
|
#define __NR_capset 185
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/csky/arch-syscall.h b/sysdeps/unix/sysv/linux/csky/arch-syscall.h
|
||||||
|
index dc9383758e..d74a06e063 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/csky/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/csky/arch-syscall.h
|
||||||
|
@@ -8,6 +8,7 @@
|
||||||
|
#define __NR_bpf 280
|
||||||
|
#define __NR_brk 214
|
||||||
|
#define __NR_cacheflush 245
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 90
|
||||||
|
#define __NR_capset 91
|
||||||
|
#define __NR_chdir 49
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/hppa/arch-syscall.h b/sysdeps/unix/sysv/linux/hppa/arch-syscall.h
|
||||||
|
index 767f1287a3..5568b94cd3 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/hppa/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/hppa/arch-syscall.h
|
||||||
|
@@ -13,6 +13,8 @@
|
||||||
|
#define __NR_bind 22
|
||||||
|
#define __NR_bpf 341
|
||||||
|
#define __NR_brk 45
|
||||||
|
+#define __NR_cacheflush 356
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 106
|
||||||
|
#define __NR_capset 107
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/i386/arch-syscall.h b/sysdeps/unix/sysv/linux/i386/arch-syscall.h
|
||||||
|
index 1998f0d76a..3af21a15cb 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/i386/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/i386/arch-syscall.h
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
#define __NR_bpf 357
|
||||||
|
#define __NR_break 17
|
||||||
|
#define __NR_brk 45
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 184
|
||||||
|
#define __NR_capset 185
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/ia64/arch-syscall.h b/sysdeps/unix/sysv/linux/ia64/arch-syscall.h
|
||||||
|
index b2eab1b93d..39b270e642 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/ia64/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/ia64/arch-syscall.h
|
||||||
|
@@ -11,6 +11,7 @@
|
||||||
|
#define __NR_bind 1191
|
||||||
|
#define __NR_bpf 1341
|
||||||
|
#define __NR_brk 1060
|
||||||
|
+#define __NR_cachestat 1475
|
||||||
|
#define __NR_capget 1185
|
||||||
|
#define __NR_capset 1186
|
||||||
|
#define __NR_chdir 1034
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/loongarch/arch-syscall.h b/sysdeps/unix/sysv/linux/loongarch/arch-syscall.h
|
||||||
|
index 6bb3c8adbc..fdefe8bb6f 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/loongarch/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/loongarch/arch-syscall.h
|
||||||
|
@@ -7,6 +7,7 @@
|
||||||
|
#define __NR_bind 200
|
||||||
|
#define __NR_bpf 280
|
||||||
|
#define __NR_brk 214
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 90
|
||||||
|
#define __NR_capset 91
|
||||||
|
#define __NR_chdir 49
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/m68k/arch-syscall.h b/sysdeps/unix/sysv/linux/m68k/arch-syscall.h
|
||||||
|
index 5fc3723772..315e49cd33 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/m68k/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/m68k/arch-syscall.h
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
#define __NR_bpf 354
|
||||||
|
#define __NR_brk 45
|
||||||
|
#define __NR_cacheflush 123
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 184
|
||||||
|
#define __NR_capset 185
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h b/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h
|
||||||
|
index b6e9b007e4..54af12780c 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
#define __NR_bpf 387
|
||||||
|
#define __NR_break 17
|
||||||
|
#define __NR_brk 45
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 184
|
||||||
|
#define __NR_capset 185
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h b/sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h
|
||||||
|
index b3a3871f8a..a2aa1ffa1b 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h
|
||||||
|
@@ -17,6 +17,7 @@
|
||||||
|
#define __NR_brk 4045
|
||||||
|
#define __NR_cachectl 4148
|
||||||
|
#define __NR_cacheflush 4147
|
||||||
|
+#define __NR_cachestat 4451
|
||||||
|
#define __NR_capget 4204
|
||||||
|
#define __NR_capset 4205
|
||||||
|
#define __NR_chdir 4012
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h
|
||||||
|
index b462182723..5bec858040 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h
|
||||||
|
@@ -14,6 +14,7 @@
|
||||||
|
#define __NR_brk 6012
|
||||||
|
#define __NR_cachectl 6198
|
||||||
|
#define __NR_cacheflush 6197
|
||||||
|
+#define __NR_cachestat 6451
|
||||||
|
#define __NR_capget 6123
|
||||||
|
#define __NR_capset 6124
|
||||||
|
#define __NR_chdir 6078
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h b/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h
|
||||||
|
index a9d6b94572..0166371ee2 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h
|
||||||
|
@@ -14,6 +14,7 @@
|
||||||
|
#define __NR_brk 5012
|
||||||
|
#define __NR_cachectl 5198
|
||||||
|
#define __NR_cacheflush 5197
|
||||||
|
+#define __NR_cachestat 5451
|
||||||
|
#define __NR_capget 5123
|
||||||
|
#define __NR_capset 5124
|
||||||
|
#define __NR_chdir 5078
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/nios2/arch-syscall.h b/sysdeps/unix/sysv/linux/nios2/arch-syscall.h
|
||||||
|
index 809a219ef3..29a4cfa988 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/nios2/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/nios2/arch-syscall.h
|
||||||
|
@@ -8,6 +8,7 @@
|
||||||
|
#define __NR_bpf 280
|
||||||
|
#define __NR_brk 214
|
||||||
|
#define __NR_cacheflush 244
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 90
|
||||||
|
#define __NR_capset 91
|
||||||
|
#define __NR_chdir 49
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/or1k/arch-syscall.h b/sysdeps/unix/sysv/linux/or1k/arch-syscall.h
|
||||||
|
index 1364f4cbc0..f5a3729663 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/or1k/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/or1k/arch-syscall.h
|
||||||
|
@@ -7,6 +7,7 @@
|
||||||
|
#define __NR_bind 200
|
||||||
|
#define __NR_bpf 280
|
||||||
|
#define __NR_brk 214
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 90
|
||||||
|
#define __NR_capset 91
|
||||||
|
#define __NR_chdir 49
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h
|
||||||
|
index 627831ebae..3a212a0269 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
#define __NR_bpf 361
|
||||||
|
#define __NR_break 17
|
||||||
|
#define __NR_brk 45
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 183
|
||||||
|
#define __NR_capset 184
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h
|
||||||
|
index bae597199d..1038ead227 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
#define __NR_bpf 361
|
||||||
|
#define __NR_break 17
|
||||||
|
#define __NR_brk 45
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 183
|
||||||
|
#define __NR_capset 184
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h b/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h
|
||||||
|
index 2416e041c8..57b043ffb5 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h
|
||||||
|
@@ -6,6 +6,7 @@
|
||||||
|
#define __NR_bind 200
|
||||||
|
#define __NR_bpf 280
|
||||||
|
#define __NR_brk 214
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 90
|
||||||
|
#define __NR_capset 91
|
||||||
|
#define __NR_chdir 49
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h b/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h
|
||||||
|
index a32bc82f60..1041a0f8c9 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h
|
||||||
|
@@ -7,6 +7,7 @@
|
||||||
|
#define __NR_bind 200
|
||||||
|
#define __NR_bpf 280
|
||||||
|
#define __NR_brk 214
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 90
|
||||||
|
#define __NR_capset 91
|
||||||
|
#define __NR_chdir 49
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h b/sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h
|
||||||
|
index 2288f20e45..70d4c6782e 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h
|
||||||
|
@@ -13,6 +13,7 @@
|
||||||
|
#define __NR_bind 361
|
||||||
|
#define __NR_bpf 351
|
||||||
|
#define __NR_brk 45
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 184
|
||||||
|
#define __NR_capset 185
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h b/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h
|
||||||
|
index 05e6d8428e..65a8a9e316 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h
|
||||||
|
@@ -11,6 +11,7 @@
|
||||||
|
#define __NR_bind 361
|
||||||
|
#define __NR_bpf 351
|
||||||
|
#define __NR_brk 45
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 184
|
||||||
|
#define __NR_capset 185
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/sh/arch-syscall.h b/sysdeps/unix/sysv/linux/sh/arch-syscall.h
|
||||||
|
index d52b522d9c..94aad0f119 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/sh/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/sh/arch-syscall.h
|
||||||
|
@@ -14,6 +14,7 @@
|
||||||
|
#define __NR_bpf 375
|
||||||
|
#define __NR_brk 45
|
||||||
|
#define __NR_cacheflush 123
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 184
|
||||||
|
#define __NR_capset 185
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h b/sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h
|
||||||
|
index d3f4d8aa3e..d630306c75 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h
|
||||||
|
@@ -14,6 +14,7 @@
|
||||||
|
#define __NR_bind 353
|
||||||
|
#define __NR_bpf 349
|
||||||
|
#define __NR_brk 17
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 21
|
||||||
|
#define __NR_capset 22
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h b/sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h
|
||||||
|
index 2cc03d7a24..930f29b4d2 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h
|
||||||
|
@@ -14,6 +14,7 @@
|
||||||
|
#define __NR_bind 353
|
||||||
|
#define __NR_bpf 349
|
||||||
|
#define __NR_brk 17
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 21
|
||||||
|
#define __NR_capset 22
|
||||||
|
#define __NR_chdir 12
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/syscall-names.list b/sysdeps/unix/sysv/linux/syscall-names.list
|
||||||
|
index 5b69106434..cf6f70ecd9 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/syscall-names.list
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/syscall-names.list
|
||||||
|
@@ -21,8 +21,8 @@
|
||||||
|
# This file can list all potential system calls. The names are only
|
||||||
|
# used if the installed kernel headers also provide them.
|
||||||
|
|
||||||
|
-# The list of system calls is current as of Linux 6.4.
|
||||||
|
-kernel 6.4
|
||||||
|
+# The list of system calls is current as of Linux 6.5.
|
||||||
|
+kernel 6.5
|
||||||
|
|
||||||
|
FAST_atomic_update
|
||||||
|
FAST_cmpxchg
|
||||||
|
@@ -58,6 +58,7 @@ breakpoint
|
||||||
|
brk
|
||||||
|
cachectl
|
||||||
|
cacheflush
|
||||||
|
+cachestat
|
||||||
|
capget
|
||||||
|
capset
|
||||||
|
chdir
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h b/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h
|
||||||
|
index b4ab892ec1..58646cf0bd 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h
|
||||||
|
@@ -12,6 +12,7 @@
|
||||||
|
#define __NR_bind 49
|
||||||
|
#define __NR_bpf 321
|
||||||
|
#define __NR_brk 12
|
||||||
|
+#define __NR_cachestat 451
|
||||||
|
#define __NR_capget 125
|
||||||
|
#define __NR_capset 126
|
||||||
|
#define __NR_chdir 80
|
||||||
|
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h
|
||||||
|
index 772559c87b..604bcdfa5b 100644
|
||||||
|
--- a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h
|
||||||
|
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h
|
||||||
|
@@ -11,6 +11,7 @@
|
||||||
|
#define __NR_bind 1073741873
|
||||||
|
#define __NR_bpf 1073742145
|
||||||
|
#define __NR_brk 1073741836
|
||||||
|
+#define __NR_cachestat 1073742275
|
||||||
|
#define __NR_capget 1073741949
|
||||||
|
#define __NR_capset 1073741950
|
||||||
|
#define __NR_chdir 1073741904
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
From 9184c13681b5de1f9e078538f0e1ee9b8599e1c3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Florian Weimer <fweimer@redhat.com>
|
||||||
|
Date: Thu, 1 Aug 2024 10:46:10 +0200
|
||||||
|
Subject: [PATCH 12/12] resolv: Fix tst-resolv-short-response for older GCC
|
||||||
|
(bug 32042)
|
||||||
|
|
||||||
|
Previous GCC versions do not support the C23 change that
|
||||||
|
allows labels on declarations.
|
||||||
|
|
||||||
|
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||||
|
(cherry picked from commit ec119972cb2598c04ec7d4219e20506006836f64)
|
||||||
|
---
|
||||||
|
resolv/tst-resolv-short-response.c | 6 ++++--
|
||||||
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c
|
||||||
|
index be354ae1c7..9b06b0c176 100644
|
||||||
|
--- a/resolv/tst-resolv-short-response.c
|
||||||
|
+++ b/resolv/tst-resolv-short-response.c
|
||||||
|
@@ -33,8 +33,10 @@ response (const struct resolv_response_context *ctx,
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
/* First server times out. */
|
||||||
|
- struct resolv_response_flags flags = {.rcode = rcode};
|
||||||
|
- resolv_response_init (b, flags);
|
||||||
|
+ {
|
||||||
|
+ struct resolv_response_flags flags = {.rcode = rcode};
|
||||||
|
+ resolv_response_init (b, flags);
|
||||||
|
+ }
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
/* Second server sends reply. */
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
30
glibc.spec
30
glibc.spec
@ -67,7 +67,7 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
Name: glibc
|
Name: glibc
|
||||||
Version: 2.38
|
Version: 2.38
|
||||||
Release: 31
|
Release: 32
|
||||||
Summary: The GNU libc libraries
|
Summary: The GNU libc libraries
|
||||||
License: %{all_license}
|
License: %{all_license}
|
||||||
URL: http://www.gnu.org/software/glibc/
|
URL: http://www.gnu.org/software/glibc/
|
||||||
@ -200,6 +200,18 @@ Patch110: 0026-resolv-Fix-some-unaligned-accesses-in-resolver-BZ-30.patch
|
|||||||
Patch111: Force-DT_RPATH-for-enable-hardcoded-path-in-tests.patch
|
Patch111: Force-DT_RPATH-for-enable-hardcoded-path-in-tests.patch
|
||||||
Patch112: i386-Disable-Intel-Xeon-Phi-tests-for-GCC-15-and-abo.patch
|
Patch112: i386-Disable-Intel-Xeon-Phi-tests-for-GCC-15-and-abo.patch
|
||||||
Patch113: misc-Add-support-for-Linux-uio.h-RWF_NOAPPEND-flag.patch
|
Patch113: misc-Add-support-for-Linux-uio.h-RWF_NOAPPEND-flag.patch
|
||||||
|
Patch114: 0001-s390x-Fix-segfault-in-wcsncmp-BZ-31934.patch
|
||||||
|
Patch115: 0002-nptl-fix-potential-merge-of-__rseq_-relro-symbols.patch
|
||||||
|
Patch116: 0003-elf-Make-dl-rseq-symbols-Linux-only.patch
|
||||||
|
Patch117: 0004-Linux-Make-__rseq_size-useful-for-feature-detection-.patch
|
||||||
|
Patch118: 0005-resolv-Allow-short-error-responses-to-match-any-quer.patch
|
||||||
|
Patch119: 0006-resolv-Do-not-wait-for-non-existing-second-DNS-respo.patch
|
||||||
|
Patch120: 0007-resolv-Track-single-request-fallback-via-_res._flags.patch
|
||||||
|
Patch121: 0008-linux-Update-the-mremap-C-implementation-BZ-31968.patch
|
||||||
|
Patch122: 0009-mremap-Update-manual-entry.patch
|
||||||
|
Patch123: 0010-Add-mremap-tests.patch
|
||||||
|
Patch124: 0011-Update-syscall-lists-for-Linux-6.5.patch
|
||||||
|
Patch125: 0012-resolv-Fix-tst-resolv-short-response-for-older-GCC-b.patch
|
||||||
|
|
||||||
#openEuler patch list
|
#openEuler patch list
|
||||||
Patch9000: turn-default-value-of-x86_rep_stosb_threshold_form_2K_to_1M.patch
|
Patch9000: turn-default-value-of-x86_rep_stosb_threshold_form_2K_to_1M.patch
|
||||||
@ -1433,8 +1445,22 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Aug 2 2024 Qingqing Li <liqingqing3@huawei.com> - 2.38-32
|
||||||
|
- resolv: Fix tst-resolv-short-response for older GCC (bug 32042)
|
||||||
|
- Update syscall lists for Linux 6.5
|
||||||
|
- Add mremap tests
|
||||||
|
- mremap: Update manual entry
|
||||||
|
- linux: Update the mremap C implementation [BZ #31968]
|
||||||
|
- resolv: Track single-request fallback via _res._flags (bug 31476)
|
||||||
|
- resolv: Do not wait for non-existing second DNS response after error (bug 30081)
|
||||||
|
- resolv: Allow short error responses to match any query (bug 31890)
|
||||||
|
- Linux: Make __rseq_size useful for feature detection (bug 31965)
|
||||||
|
- elf: Make dl-rseq-symbols Linux only
|
||||||
|
- nptl: fix potential merge of __rseq_* relro symbols
|
||||||
|
- s390x: Fix segfault in wcsncmp [BZ #31934]
|
||||||
|
|
||||||
* Thu Jul 4 2024 lipengyu <lipengyu@kylinos.cn> - 2.38-31
|
* Thu Jul 4 2024 lipengyu <lipengyu@kylinos.cn> - 2.38-31
|
||||||
- fix bug “info command cannot index the glibc help documentation“
|
- fix bug "info command cannot index the glibc help documentation"
|
||||||
- add the install-info libc.info.gz step during the glibc-help installation process
|
- add the install-info libc.info.gz step during the glibc-help installation process
|
||||||
|
|
||||||
* Wed Jun 5 Qingqing Li <liqingqing3@huawei.com> - 2.38-30
|
* Wed Jun 5 Qingqing Li <liqingqing3@huawei.com> - 2.38-30
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user