Sync with upstream branch release/2.39/master
Upstream commit: 97bb89668d7171164975f3dc895e38343a2f3a95 - Force DT_RPATH for --enable-hardcoded-path-in-tests - elf: Only process multiple tunable once (BZ 31686) - Add a test to check for duplicate definitions in the static library - i686: Fix multiple definitions of __memmove_chk and __memset_chk - i586: Fix multiple definitions of __memcpy_chk and __mempcpy_chk - time: Allow later version licensing. - nscd: Use time_t for return type of addgetnetgrentX - login: structs utmp, utmpx, lastlog _TIME_BITS independence (bug 30701) - login: Check default sizes of structs utmp, utmpx, lastlog
This commit is contained in:
parent
c6129da0b9
commit
b3097fa24a
209
glibc-upstream-2.39-40.patch
Normal file
209
glibc-upstream-2.39-40.patch
Normal file
@ -0,0 +1,209 @@
|
||||
commit 9831f98c266a8d56d1bf729b709c08e40375540c
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri Apr 19 14:38:17 2024 +0200
|
||||
|
||||
login: Check default sizes of structs utmp, utmpx, lastlog
|
||||
|
||||
The default <utmp-size.h> is for ports with a 64-bit time_t.
|
||||
Ports with a 32-bit time_t or with __WORDSIZE_TIME64_COMPAT32=1
|
||||
need to override it.
|
||||
|
||||
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
(cherry picked from commit 4d4da5aab936504b2d3eca3146e109630d9093c4)
|
||||
|
||||
diff --git a/login/Makefile b/login/Makefile
|
||||
index 1e22008a61e99083..b26ac42bfceadf89 100644
|
||||
--- a/login/Makefile
|
||||
+++ b/login/Makefile
|
||||
@@ -44,7 +44,7 @@ subdir-dirs = programs
|
||||
vpath %.c programs
|
||||
|
||||
tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \
|
||||
- tst-pututxline-lockfail tst-pututxline-cache
|
||||
+ tst-pututxline-lockfail tst-pututxline-cache tst-utmp-size
|
||||
|
||||
# Empty compatibility library for old binaries.
|
||||
extra-libs := libutil
|
||||
diff --git a/login/tst-utmp-size.c b/login/tst-utmp-size.c
|
||||
new file mode 100644
|
||||
index 0000000000000000..1b7f7ff04224efb5
|
||||
--- /dev/null
|
||||
+++ b/login/tst-utmp-size.c
|
||||
@@ -0,0 +1,33 @@
|
||||
+/* Check expected sizes of struct utmp, struct utmpx, struct lastlog.
|
||||
+ 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 <utmp.h>
|
||||
+#include <utmpx.h>
|
||||
+#include <utmp-size.h>
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ _Static_assert (sizeof (struct utmp) == UTMP_SIZE, "struct utmp size");
|
||||
+ _Static_assert (sizeof (struct utmpx) == UTMP_SIZE, "struct utmpx size");
|
||||
+ _Static_assert (sizeof (struct lastlog) == LASTLOG_SIZE,
|
||||
+ "struct lastlog size");
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#include <support/test-driver.c>
|
||||
diff --git a/sysdeps/arc/utmp-size.h b/sysdeps/arc/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..a247fcd3dab15f81
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/arc/utmp-size.h
|
||||
@@ -0,0 +1,3 @@
|
||||
+/* arc has less padding than other architectures with 64-bit time_t. */
|
||||
+#define UTMP_SIZE 392
|
||||
+#define LASTLOG_SIZE 296
|
||||
diff --git a/sysdeps/arm/utmp-size.h b/sysdeps/arm/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f21ebe1b6c26ea1
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/arm/utmp-size.h
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define UTMP_SIZE 384
|
||||
+#define LASTLOG_SIZE 292
|
||||
diff --git a/sysdeps/csky/utmp-size.h b/sysdeps/csky/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f21ebe1b6c26ea1
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/csky/utmp-size.h
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define UTMP_SIZE 384
|
||||
+#define LASTLOG_SIZE 292
|
||||
diff --git a/sysdeps/generic/utmp-size.h b/sysdeps/generic/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..89dbe878b02301e9
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/generic/utmp-size.h
|
||||
@@ -0,0 +1,23 @@
|
||||
+/* Expected sizes of utmp-related structures stored in files. 64-bit 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/>. */
|
||||
+
|
||||
+/* Expected size, in bytes, of struct utmp and struct utmpx. */
|
||||
+#define UTMP_SIZE 400
|
||||
+
|
||||
+/* Expected size, in bytes, of struct lastlog. */
|
||||
+#define LASTLOG_SIZE 296
|
||||
diff --git a/sysdeps/hppa/utmp-size.h b/sysdeps/hppa/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f21ebe1b6c26ea1
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/hppa/utmp-size.h
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define UTMP_SIZE 384
|
||||
+#define LASTLOG_SIZE 292
|
||||
diff --git a/sysdeps/m68k/utmp-size.h b/sysdeps/m68k/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..5946685819d60289
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/m68k/utmp-size.h
|
||||
@@ -0,0 +1,3 @@
|
||||
+/* m68k has 2-byte alignment. */
|
||||
+#define UTMP_SIZE 382
|
||||
+#define LASTLOG_SIZE 292
|
||||
diff --git a/sysdeps/microblaze/utmp-size.h b/sysdeps/microblaze/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f21ebe1b6c26ea1
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/microblaze/utmp-size.h
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define UTMP_SIZE 384
|
||||
+#define LASTLOG_SIZE 292
|
||||
diff --git a/sysdeps/mips/utmp-size.h b/sysdeps/mips/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f21ebe1b6c26ea1
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/mips/utmp-size.h
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define UTMP_SIZE 384
|
||||
+#define LASTLOG_SIZE 292
|
||||
diff --git a/sysdeps/nios2/utmp-size.h b/sysdeps/nios2/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f21ebe1b6c26ea1
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/nios2/utmp-size.h
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define UTMP_SIZE 384
|
||||
+#define LASTLOG_SIZE 292
|
||||
diff --git a/sysdeps/or1k/utmp-size.h b/sysdeps/or1k/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..6b3653aa4dccd59d
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/or1k/utmp-size.h
|
||||
@@ -0,0 +1,3 @@
|
||||
+/* or1k has less padding than other architectures with 64-bit time_t. */
|
||||
+#define UTMP_SIZE 392
|
||||
+#define LASTLOG_SIZE 296
|
||||
diff --git a/sysdeps/powerpc/utmp-size.h b/sysdeps/powerpc/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f21ebe1b6c26ea1
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/powerpc/utmp-size.h
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define UTMP_SIZE 384
|
||||
+#define LASTLOG_SIZE 292
|
||||
diff --git a/sysdeps/riscv/utmp-size.h b/sysdeps/riscv/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f21ebe1b6c26ea1
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/riscv/utmp-size.h
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define UTMP_SIZE 384
|
||||
+#define LASTLOG_SIZE 292
|
||||
diff --git a/sysdeps/sh/utmp-size.h b/sysdeps/sh/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f21ebe1b6c26ea1
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/sh/utmp-size.h
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define UTMP_SIZE 384
|
||||
+#define LASTLOG_SIZE 292
|
||||
diff --git a/sysdeps/sparc/utmp-size.h b/sysdeps/sparc/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f21ebe1b6c26ea1
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/sparc/utmp-size.h
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define UTMP_SIZE 384
|
||||
+#define LASTLOG_SIZE 292
|
||||
diff --git a/sysdeps/x86/utmp-size.h b/sysdeps/x86/utmp-size.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f21ebe1b6c26ea1
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/x86/utmp-size.h
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define UTMP_SIZE 384
|
||||
+#define LASTLOG_SIZE 292
|
368
glibc-upstream-2.39-41.patch
Normal file
368
glibc-upstream-2.39-41.patch
Normal file
@ -0,0 +1,368 @@
|
||||
commit 836d43b98973e0845b739ff5d3aad3af09dc7d0f
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri Apr 19 14:38:17 2024 +0200
|
||||
|
||||
login: structs utmp, utmpx, lastlog _TIME_BITS independence (bug 30701)
|
||||
|
||||
These structs describe file formats under /var/log, and should not
|
||||
depend on the definition of _TIME_BITS. This is achieved by
|
||||
defining __WORDSIZE_TIME64_COMPAT32 to 1 on 32-bit ports that
|
||||
support 32-bit time_t values (where __time_t is 32 bits).
|
||||
|
||||
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
(cherry picked from commit 9abdae94c7454c45e02e97e4ed1eb1b1915d13d8)
|
||||
|
||||
diff --git a/bits/wordsize.h b/bits/wordsize.h
|
||||
index 14edae3a11d01c97..53013a9275c7c81e 100644
|
||||
--- a/bits/wordsize.h
|
||||
+++ b/bits/wordsize.h
|
||||
@@ -21,7 +21,9 @@
|
||||
#define __WORDSIZE32_PTRDIFF_LONG
|
||||
|
||||
/* Set to 1 in order to force time types to be 32 bits instead of 64 bits in
|
||||
- struct lastlog and struct utmp{,x} on 64-bit ports. This may be done in
|
||||
+ struct lastlog and struct utmp{,x}. This may be done in
|
||||
order to make 64-bit ports compatible with 32-bit ports. Set to 0 for
|
||||
- 64-bit ports where the time types are 64-bits or for any 32-bit ports. */
|
||||
+ 64-bit ports where the time types are 64-bits and new 32-bit ports
|
||||
+ where time_t is 64 bits, and there is no companion architecture with
|
||||
+ 32-bit time_t. */
|
||||
#define __WORDSIZE_TIME64_COMPAT32
|
||||
diff --git a/login/Makefile b/login/Makefile
|
||||
index b26ac42bfceadf89..f91190e3dcd1e6c6 100644
|
||||
--- a/login/Makefile
|
||||
+++ b/login/Makefile
|
||||
@@ -44,7 +44,9 @@ subdir-dirs = programs
|
||||
vpath %.c programs
|
||||
|
||||
tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \
|
||||
- tst-pututxline-lockfail tst-pututxline-cache tst-utmp-size
|
||||
+ tst-pututxline-lockfail tst-pututxline-cache tst-utmp-size tst-utmp-size-64
|
||||
+
|
||||
+CFLAGS-tst-utmp-size-64.c += -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64
|
||||
|
||||
# Empty compatibility library for old binaries.
|
||||
extra-libs := libutil
|
||||
diff --git a/login/tst-utmp-size-64.c b/login/tst-utmp-size-64.c
|
||||
new file mode 100644
|
||||
index 0000000000000000..7a581a4c1254644a
|
||||
--- /dev/null
|
||||
+++ b/login/tst-utmp-size-64.c
|
||||
@@ -0,0 +1,2 @@
|
||||
+/* The on-disk layout must not change in time64 mode. */
|
||||
+#include "tst-utmp-size.c"
|
||||
diff --git a/sysdeps/arm/bits/wordsize.h b/sysdeps/arm/bits/wordsize.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..6ecbfe7c863f3a17
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/arm/bits/wordsize.h
|
||||
@@ -0,0 +1,21 @@
|
||||
+/* Copyright (C) 1999-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/>. */
|
||||
+
|
||||
+#define __WORDSIZE 32
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
+#define __WORDSIZE32_SIZE_ULONG 0
|
||||
+#define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
diff --git a/sysdeps/csky/bits/wordsize.h b/sysdeps/csky/bits/wordsize.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..6ecbfe7c863f3a17
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/csky/bits/wordsize.h
|
||||
@@ -0,0 +1,21 @@
|
||||
+/* Copyright (C) 1999-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/>. */
|
||||
+
|
||||
+#define __WORDSIZE 32
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
+#define __WORDSIZE32_SIZE_ULONG 0
|
||||
+#define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
diff --git a/sysdeps/m68k/bits/wordsize.h b/sysdeps/m68k/bits/wordsize.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..6ecbfe7c863f3a17
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/m68k/bits/wordsize.h
|
||||
@@ -0,0 +1,21 @@
|
||||
+/* Copyright (C) 1999-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/>. */
|
||||
+
|
||||
+#define __WORDSIZE 32
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
+#define __WORDSIZE32_SIZE_ULONG 0
|
||||
+#define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
diff --git a/sysdeps/microblaze/bits/wordsize.h b/sysdeps/microblaze/bits/wordsize.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..6ecbfe7c863f3a17
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/microblaze/bits/wordsize.h
|
||||
@@ -0,0 +1,21 @@
|
||||
+/* Copyright (C) 1999-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/>. */
|
||||
+
|
||||
+#define __WORDSIZE 32
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
+#define __WORDSIZE32_SIZE_ULONG 0
|
||||
+#define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
diff --git a/sysdeps/mips/bits/wordsize.h b/sysdeps/mips/bits/wordsize.h
|
||||
index 57f0f2a22f81745c..30dd3fd85db1f966 100644
|
||||
--- a/sysdeps/mips/bits/wordsize.h
|
||||
+++ b/sysdeps/mips/bits/wordsize.h
|
||||
@@ -19,11 +19,7 @@
|
||||
|
||||
#define __WORDSIZE _MIPS_SZPTR
|
||||
|
||||
-#if _MIPS_SIM == _ABI64
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 1
|
||||
-#else
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 0
|
||||
-#endif
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
|
||||
#if __WORDSIZE == 32
|
||||
#define __WORDSIZE32_SIZE_ULONG 0
|
||||
diff --git a/sysdeps/nios2/bits/wordsize.h b/sysdeps/nios2/bits/wordsize.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..6ecbfe7c863f3a17
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/nios2/bits/wordsize.h
|
||||
@@ -0,0 +1,21 @@
|
||||
+/* Copyright (C) 1999-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/>. */
|
||||
+
|
||||
+#define __WORDSIZE 32
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
+#define __WORDSIZE32_SIZE_ULONG 0
|
||||
+#define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
diff --git a/sysdeps/powerpc/powerpc32/bits/wordsize.h b/sysdeps/powerpc/powerpc32/bits/wordsize.h
|
||||
index 04ca9debf00d7ee9..6993fb6b29ea3f74 100644
|
||||
--- a/sysdeps/powerpc/powerpc32/bits/wordsize.h
|
||||
+++ b/sysdeps/powerpc/powerpc32/bits/wordsize.h
|
||||
@@ -2,10 +2,9 @@
|
||||
|
||||
#if defined __powerpc64__
|
||||
# define __WORDSIZE 64
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 1
|
||||
#else
|
||||
# define __WORDSIZE 32
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 0
|
||||
# define __WORDSIZE32_SIZE_ULONG 0
|
||||
# define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
#endif
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
diff --git a/sysdeps/powerpc/powerpc64/bits/wordsize.h b/sysdeps/powerpc/powerpc64/bits/wordsize.h
|
||||
index 04ca9debf00d7ee9..6993fb6b29ea3f74 100644
|
||||
--- a/sysdeps/powerpc/powerpc64/bits/wordsize.h
|
||||
+++ b/sysdeps/powerpc/powerpc64/bits/wordsize.h
|
||||
@@ -2,10 +2,9 @@
|
||||
|
||||
#if defined __powerpc64__
|
||||
# define __WORDSIZE 64
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 1
|
||||
#else
|
||||
# define __WORDSIZE 32
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 0
|
||||
# define __WORDSIZE32_SIZE_ULONG 0
|
||||
# define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
#endif
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
diff --git a/sysdeps/sh/bits/wordsize.h b/sysdeps/sh/bits/wordsize.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..6ecbfe7c863f3a17
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/sh/bits/wordsize.h
|
||||
@@ -0,0 +1,21 @@
|
||||
+/* Copyright (C) 1999-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/>. */
|
||||
+
|
||||
+#define __WORDSIZE 32
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
+#define __WORDSIZE32_SIZE_ULONG 0
|
||||
+#define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
diff --git a/sysdeps/sparc/sparc32/bits/wordsize.h b/sysdeps/sparc/sparc32/bits/wordsize.h
|
||||
index 4bbd2e63b49bb2e2..a2e79e0fa9dc41d9 100644
|
||||
--- a/sysdeps/sparc/sparc32/bits/wordsize.h
|
||||
+++ b/sysdeps/sparc/sparc32/bits/wordsize.h
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Determine the wordsize from the preprocessor defines. */
|
||||
|
||||
#define __WORDSIZE 32
|
||||
-#define __WORDSIZE_TIME64_COMPAT32 0
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
#define __WORDSIZE32_SIZE_ULONG 0
|
||||
#define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
diff --git a/sysdeps/sparc/sparc64/bits/wordsize.h b/sysdeps/sparc/sparc64/bits/wordsize.h
|
||||
index 2f66f10d7206731a..ea103e5970829abc 100644
|
||||
--- a/sysdeps/sparc/sparc64/bits/wordsize.h
|
||||
+++ b/sysdeps/sparc/sparc64/bits/wordsize.h
|
||||
@@ -2,10 +2,9 @@
|
||||
|
||||
#if defined __arch64__ || defined __sparcv9
|
||||
# define __WORDSIZE 64
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 1
|
||||
#else
|
||||
# define __WORDSIZE 32
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 0
|
||||
# define __WORDSIZE32_SIZE_ULONG 0
|
||||
# define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
#endif
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/wordsize.h b/sysdeps/unix/sysv/linux/hppa/bits/wordsize.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..6ecbfe7c863f3a17
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/unix/sysv/linux/hppa/bits/wordsize.h
|
||||
@@ -0,0 +1,21 @@
|
||||
+/* Copyright (C) 1999-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/>. */
|
||||
+
|
||||
+#define __WORDSIZE 32
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
+#define __WORDSIZE32_SIZE_ULONG 0
|
||||
+#define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h b/sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h
|
||||
index 04ca9debf00d7ee9..6993fb6b29ea3f74 100644
|
||||
--- a/sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h
|
||||
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h
|
||||
@@ -2,10 +2,9 @@
|
||||
|
||||
#if defined __powerpc64__
|
||||
# define __WORDSIZE 64
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 1
|
||||
#else
|
||||
# define __WORDSIZE 32
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 0
|
||||
# define __WORDSIZE32_SIZE_ULONG 0
|
||||
# define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
#endif
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/wordsize.h b/sysdeps/unix/sysv/linux/sparc/bits/wordsize.h
|
||||
index 7562875ee23ba8c5..ea103e5970829abc 100644
|
||||
--- a/sysdeps/unix/sysv/linux/sparc/bits/wordsize.h
|
||||
+++ b/sysdeps/unix/sysv/linux/sparc/bits/wordsize.h
|
||||
@@ -2,10 +2,9 @@
|
||||
|
||||
#if defined __arch64__ || defined __sparcv9
|
||||
# define __WORDSIZE 64
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 1
|
||||
#else
|
||||
# define __WORDSIZE 32
|
||||
# define __WORDSIZE32_SIZE_ULONG 0
|
||||
# define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 0
|
||||
#endif
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
diff --git a/sysdeps/x86/bits/wordsize.h b/sysdeps/x86/bits/wordsize.h
|
||||
index 70f652bca14d65c1..3f40aa76f99c75e5 100644
|
||||
--- a/sysdeps/x86/bits/wordsize.h
|
||||
+++ b/sysdeps/x86/bits/wordsize.h
|
||||
@@ -8,10 +8,9 @@
|
||||
#define __WORDSIZE32_PTRDIFF_LONG 0
|
||||
#endif
|
||||
|
||||
+#define __WORDSIZE_TIME64_COMPAT32 1
|
||||
+
|
||||
#ifdef __x86_64__
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 1
|
||||
/* Both x86-64 and x32 use the 64-bit system call interface. */
|
||||
# define __SYSCALL_WORDSIZE 64
|
||||
-#else
|
||||
-# define __WORDSIZE_TIME64_COMPAT32 0
|
||||
#endif
|
31
glibc-upstream-2.39-42.patch
Normal file
31
glibc-upstream-2.39-42.patch
Normal file
@ -0,0 +1,31 @@
|
||||
commit acc56074b0a5127631a64640aef1b7c5c103ebd8
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Thu May 2 17:06:19 2024 +0200
|
||||
|
||||
nscd: Use time_t for return type of addgetnetgrentX
|
||||
|
||||
Using int may give false results for future dates (timeouts after the
|
||||
year 2028).
|
||||
|
||||
Fixes commit 04a21e050d64a1193a6daab872bca2528bda44b ("CVE-2024-33601,
|
||||
CVE-2024-33602: nscd: netgroup: Use two buffers in addgetnetgrentX
|
||||
(bug 31680)").
|
||||
|
||||
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
||||
(cherry picked from commit 4bbca1a44691a6e9adcee5c6798a707b626bc331)
|
||||
|
||||
diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c
|
||||
index e8fe041846b75cb9..01d554af9c407739 100644
|
||||
--- a/nscd/netgroupcache.c
|
||||
+++ b/nscd/netgroupcache.c
|
||||
@@ -680,8 +680,8 @@ readdinnetgr (struct database_dyn *db, struct hashentry *he,
|
||||
.key_len = he->len
|
||||
};
|
||||
|
||||
- int timeout = addinnetgrX (db, -1, &req, db->data + he->key, he->owner,
|
||||
- he, dh);
|
||||
+ time_t timeout = addinnetgrX (db, -1, &req, db->data + he->key, he->owner,
|
||||
+ he, dh);
|
||||
if (timeout < 0)
|
||||
timeout = 0;
|
||||
return timeout;
|
73
glibc-upstream-2.39-43.patch
Normal file
73
glibc-upstream-2.39-43.patch
Normal file
@ -0,0 +1,73 @@
|
||||
commit 273a835fe7c685cc54266bb8b502787bad5e9bae
|
||||
Author: Carlos O'Donell <carlos@redhat.com>
|
||||
Date: Tue Apr 23 13:30:37 2024 -0400
|
||||
|
||||
time: Allow later version licensing.
|
||||
|
||||
The FSF's Licensing and Compliance Lab noted a discrepancy in the
|
||||
licensing of several files in the glibc package.
|
||||
|
||||
When timespect_get.c was impelemented the license did not include
|
||||
the standard ", or (at your option) any later version." text.
|
||||
|
||||
Change the license in timespec_get.c and all copied files to match
|
||||
the expected license.
|
||||
|
||||
This change was previously approved in principle by the FSF in
|
||||
RT ticket #1316403. And a similar instance was fixed in
|
||||
commit 46703efa02f6ddebce5ee54c92f7c32598de0de6.
|
||||
|
||||
(cherry picked from commit 91695ee4598b39d181ab8df579b888a8863c4cab)
|
||||
|
||||
diff --git a/sysdeps/unix/sysv/linux/timespec_get.c b/sysdeps/unix/sysv/linux/timespec_get.c
|
||||
index c6e5e6628928523b..778d1e33548d2369 100644
|
||||
--- a/sysdeps/unix/sysv/linux/timespec_get.c
|
||||
+++ b/sysdeps/unix/sysv/linux/timespec_get.c
|
||||
@@ -5,7 +5,7 @@
|
||||
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.
|
||||
+ 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
|
||||
diff --git a/sysdeps/unix/sysv/linux/timespec_getres.c b/sysdeps/unix/sysv/linux/timespec_getres.c
|
||||
index 5acebe2a2cb99ccf..2eef9e512c6f650e 100644
|
||||
--- a/sysdeps/unix/sysv/linux/timespec_getres.c
|
||||
+++ b/sysdeps/unix/sysv/linux/timespec_getres.c
|
||||
@@ -5,7 +5,7 @@
|
||||
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.
|
||||
+ 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
|
||||
diff --git a/time/timespec_get.c b/time/timespec_get.c
|
||||
index b031e42ca20c1eea..26a044bca6e7f9fe 100644
|
||||
--- a/time/timespec_get.c
|
||||
+++ b/time/timespec_get.c
|
||||
@@ -4,7 +4,7 @@
|
||||
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.
|
||||
+ 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
|
||||
diff --git a/time/timespec_getres.c b/time/timespec_getres.c
|
||||
index edb397507cdfc2fa..2e18b8bcacfec498 100644
|
||||
--- a/time/timespec_getres.c
|
||||
+++ b/time/timespec_getres.c
|
||||
@@ -5,7 +5,7 @@
|
||||
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.
|
||||
+ 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
|
34
glibc-upstream-2.39-44.patch
Normal file
34
glibc-upstream-2.39-44.patch
Normal file
@ -0,0 +1,34 @@
|
||||
commit 3148714ab61ad61281bae5a30f530d637034ac3b
|
||||
Author: Gabi Falk <gabifalk@gmx.com>
|
||||
Date: Tue Apr 30 20:05:02 2024 +0000
|
||||
|
||||
i586: Fix multiple definitions of __memcpy_chk and __mempcpy_chk
|
||||
|
||||
/home/bmg/install/compilers/x86_64-linux-gnu/lib/gcc/x86_64-glibc-linux-gnu/13.2.1/../../../../x86_64-glibc-linux-gnu/bin/ld: /home/bmg/build/glibcs/i586-linux-gnu/glibc/libc.a(memcpy_chk.o): in function `__memcpy_chk':
|
||||
/home/bmg/src/glibc/debug/../sysdeps/i386/memcpy_chk.S:29: multiple definition of `__memcpy_chk';/home/bmg/build/glibcs/i586-linux-gnu/glibc/libc.a(memcpy.o):/home/bmg/src/glibc/string/../sysdeps/i386/i586/memcpy.S:31: first defined here /home/bmg/install/compilers/x86_64-linux-gnu/lib/gcc/x86_64-glibc-linux-gnu/13.2.1/../../../../x86_64-glibc-linux-gnu/bin/ld: /home/bmg/build/glibcs/i586-linux-gnu/glibc/libc.a(mempcpy_chk.o): in function `__mempcpy_chk': /home/bmg/src/glibc/debug/../sysdeps/i386/mempcpy_chk.S:28: multiple definition of `__mempcpy_chk'; /home/bmg/build/glibcs/i586-linux-gnu/glibc/libc.a(mempcpy.o):/home/bmg/src/glibc/string/../sysdeps/i386/i586/memcpy.S:31: first defined here
|
||||
|
||||
After this change, the static library built for i586, regardless of PIC
|
||||
options, contains implementations of these functions respectively from
|
||||
sysdeps/i386/memcpy_chk.S and sysdeps/i386/mempcpy_chk.S. This ensures
|
||||
that memcpy and mempcpy won't pull in __chk_fail and the routines it
|
||||
calls.
|
||||
|
||||
Reported-by: Florian Weimer <fweimer@redhat.com>
|
||||
Signed-off-by: Gabi Falk <gabifalk@gmx.com>
|
||||
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
|
||||
Reviewed-by: Dmitry V. Levin <ldv@altlinux.org>
|
||||
(cherry picked from commit 789894a2f554d4503ecb2f13b2b4e93e43414f33)
|
||||
|
||||
diff --git a/sysdeps/i386/i586/memcpy.S b/sysdeps/i386/i586/memcpy.S
|
||||
index 3e26f112d685e148..79856d498af90f66 100644
|
||||
--- a/sysdeps/i386/i586/memcpy.S
|
||||
+++ b/sysdeps/i386/i586/memcpy.S
|
||||
@@ -26,7 +26,7 @@
|
||||
#define LEN SRC+4
|
||||
|
||||
.text
|
||||
-#if defined PIC && IS_IN (libc)
|
||||
+#if defined SHARED && IS_IN (libc)
|
||||
ENTRY (__memcpy_chk)
|
||||
movl 12(%esp), %eax
|
||||
cmpl %eax, 16(%esp)
|
57
glibc-upstream-2.39-45.patch
Normal file
57
glibc-upstream-2.39-45.patch
Normal file
@ -0,0 +1,57 @@
|
||||
commit ad92c483a4bd34db1cfb3eb625212ea64848244f
|
||||
Author: Gabi Falk <gabifalk@gmx.com>
|
||||
Date: Tue Apr 30 20:05:03 2024 +0000
|
||||
|
||||
i686: Fix multiple definitions of __memmove_chk and __memset_chk
|
||||
|
||||
Commit c73c96a4a1af1326df7f96eec58209e1e04066d8 updated memcpy.S and
|
||||
mempcpy.S, but omitted memmove.S and memset.S. As a result, the static
|
||||
library built as PIC, whether with or without multiarch support,
|
||||
contains two definitions for each of the __memmove_chk and __memset_chk
|
||||
symbols.
|
||||
|
||||
/usr/lib/gcc/i686-pc-linux-gnu/14/../../../../i686-pc-linux-gnu/bin/ld: /usr/lib/gcc/i686-pc-linux-gnu/14/../../../../lib/libc.a(memset-ia32.o): in function `__memset_chk':
|
||||
/var/tmp/portage/sys-libs/glibc-2.39-r3/work/glibc-2.39/string/../sysdeps/i386/i686/memset.S:32: multiple definition of `__memset_chk'; /usr/lib/gcc/i686-pc-linux-gnu/14/../../../../lib/libc.a(memset_chk.o):/var/tmp/portage/sys-libs/glibc-2.39-r3/work/glibc-2.39/debug/../sysdeps/i386/i686/multiarch/memset_chk.c:24: first defined here
|
||||
|
||||
After this change, regardless of PIC options, the static library, built
|
||||
for i686 with multiarch contains implementations of these functions
|
||||
respectively from debug/memmove_chk.c and debug/memset_chk.c, and
|
||||
without multiarch contains implementations of these functions
|
||||
respectively from sysdeps/i386/memmove_chk.S and
|
||||
sysdeps/i386/memset_chk.S. This ensures that memmove and memset won't
|
||||
pull in __chk_fail and the routines it calls.
|
||||
|
||||
Reported-by: Sam James <sam@gentoo.org>
|
||||
Tested-by: Sam James <sam@gentoo.org>
|
||||
Fixes: c73c96a4a1 ("i686: Fix build with --disable-multiarch")
|
||||
Signed-off-by: Gabi Falk <gabifalk@gmx.com>
|
||||
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
|
||||
Reviewed-by: Dmitry V. Levin <ldv@altlinux.org>
|
||||
(cherry picked from commit 5a2cf833f5772d6c37c7adac388dd9af9cc1c4b9)
|
||||
|
||||
diff --git a/sysdeps/i386/i686/memmove.S b/sysdeps/i386/i686/memmove.S
|
||||
index f230359ad62b2443..effd958120082b04 100644
|
||||
--- a/sysdeps/i386/i686/memmove.S
|
||||
+++ b/sysdeps/i386/i686/memmove.S
|
||||
@@ -29,7 +29,7 @@
|
||||
#define SRC DEST+4
|
||||
#define LEN SRC+4
|
||||
|
||||
-#if defined PIC && IS_IN (libc)
|
||||
+#if defined SHARED && IS_IN (libc)
|
||||
ENTRY_CHK (__memmove_chk)
|
||||
movl 12(%esp), %eax
|
||||
cmpl %eax, 16(%esp)
|
||||
diff --git a/sysdeps/i386/i686/memset.S b/sysdeps/i386/i686/memset.S
|
||||
index f02f5a6df763d4e9..ab06771ea0ca071f 100644
|
||||
--- a/sysdeps/i386/i686/memset.S
|
||||
+++ b/sysdeps/i386/i686/memset.S
|
||||
@@ -27,7 +27,7 @@
|
||||
#define LEN CHR+4
|
||||
|
||||
.text
|
||||
-#if defined PIC && IS_IN (libc)
|
||||
+#if defined SHARED && IS_IN (libc)
|
||||
ENTRY_CHK (__memset_chk)
|
||||
movl 12(%esp), %eax
|
||||
cmpl %eax, 16(%esp)
|
34
glibc-upstream-2.39-46.patch
Normal file
34
glibc-upstream-2.39-46.patch
Normal file
@ -0,0 +1,34 @@
|
||||
commit ff110b2591f0bdeccd121c3726af19c62d6fb184
|
||||
Author: Gabi Falk <gabifalk@gmx.com>
|
||||
Date: Tue Apr 30 20:05:04 2024 +0000
|
||||
|
||||
Add a test to check for duplicate definitions in the static library
|
||||
|
||||
This change follows two previous fixes addressing multiple definitions
|
||||
of __memcpy_chk and __mempcpy_chk functions on i586, and __memmove_chk
|
||||
and __memset_chk functions on i686. The test is intended to prevent
|
||||
such issues from occurring in the future.
|
||||
|
||||
Signed-off-by: Gabi Falk <gabifalk@gmx.com>
|
||||
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
|
||||
Reviewed-by: Dmitry V. Levin <ldv@altlinux.org>
|
||||
(cherry picked from commit ded2e0753e9c46debeb2e0d26c5e560d2581d314)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index f7e4eb9ff2cc464c..37bf70aa4ad4403f 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -577,6 +577,13 @@ $(objpfx)lint-makefiles.out: scripts/lint-makefiles.sh
|
||||
$(SHELL) $< "$(PYTHON)" `pwd` > $@ ; \
|
||||
$(evaluate-test)
|
||||
|
||||
+# Link libc.a as a whole to verify that it does not contain multiple
|
||||
+# definitions of any symbols.
|
||||
+tests-special += $(objpfx)link-static-libc.out
|
||||
+$(objpfx)link-static-libc.out:
|
||||
+ $(LINK.o) $(whole-archive) -r $(objpfx)libc.a -o /dev/null > $@ 2>&1; \
|
||||
+ $(evaluate-test)
|
||||
+
|
||||
# Print test summary for tests in $1 .sum file;
|
||||
# $2 is optional test identifier.
|
||||
# Fail if there are unexpected failures in the test results.
|
32
glibc-upstream-2.39-47.patch
Normal file
32
glibc-upstream-2.39-47.patch
Normal file
@ -0,0 +1,32 @@
|
||||
commit fa616ea3730cb42046d19f28d611be0bc390af7c
|
||||
Author: Sam James <sam@gentoo.org>
|
||||
Date: Sat May 4 13:28:13 2024 +0100
|
||||
|
||||
Revert "Add a test to check for duplicate definitions in the static library"
|
||||
|
||||
This reverts commit ff110b2591f0bdeccd121c3726af19c62d6fb184.
|
||||
|
||||
I had the wrong cherry-pick reference (the commit content is right; it's
|
||||
just referring to a base that isn't upstream), but let's revert and reapply
|
||||
for clarity.
|
||||
|
||||
Signed-off-by: Sam James <sam@gentoo.org>
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 37bf70aa4ad4403f..f7e4eb9ff2cc464c 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -577,13 +577,6 @@ $(objpfx)lint-makefiles.out: scripts/lint-makefiles.sh
|
||||
$(SHELL) $< "$(PYTHON)" `pwd` > $@ ; \
|
||||
$(evaluate-test)
|
||||
|
||||
-# Link libc.a as a whole to verify that it does not contain multiple
|
||||
-# definitions of any symbols.
|
||||
-tests-special += $(objpfx)link-static-libc.out
|
||||
-$(objpfx)link-static-libc.out:
|
||||
- $(LINK.o) $(whole-archive) -r $(objpfx)libc.a -o /dev/null > $@ 2>&1; \
|
||||
- $(evaluate-test)
|
||||
-
|
||||
# Print test summary for tests in $1 .sum file;
|
||||
# $2 is optional test identifier.
|
||||
# Fail if there are unexpected failures in the test results.
|
40
glibc-upstream-2.39-48.patch
Normal file
40
glibc-upstream-2.39-48.patch
Normal file
@ -0,0 +1,40 @@
|
||||
commit c16871e662cd0f3370173d916864b19e69f1bc9a
|
||||
Author: Sam James <sam@gentoo.org>
|
||||
Date: Sat May 4 13:28:51 2024 +0100
|
||||
|
||||
Revert "i686: Fix multiple definitions of __memmove_chk and __memset_chk"
|
||||
|
||||
This reverts commit ad92c483a4bd34db1cfb3eb625212ea64848244f.
|
||||
|
||||
I had the wrong cherry-pick reference (the commit content is right; it's
|
||||
just referring to a base that isn't upstream), but let's revert and reapply
|
||||
for clarity.
|
||||
|
||||
Signed-off-by: Sam James <sam@gentoo.org>
|
||||
|
||||
diff --git a/sysdeps/i386/i686/memmove.S b/sysdeps/i386/i686/memmove.S
|
||||
index effd958120082b04..f230359ad62b2443 100644
|
||||
--- a/sysdeps/i386/i686/memmove.S
|
||||
+++ b/sysdeps/i386/i686/memmove.S
|
||||
@@ -29,7 +29,7 @@
|
||||
#define SRC DEST+4
|
||||
#define LEN SRC+4
|
||||
|
||||
-#if defined SHARED && IS_IN (libc)
|
||||
+#if defined PIC && IS_IN (libc)
|
||||
ENTRY_CHK (__memmove_chk)
|
||||
movl 12(%esp), %eax
|
||||
cmpl %eax, 16(%esp)
|
||||
diff --git a/sysdeps/i386/i686/memset.S b/sysdeps/i386/i686/memset.S
|
||||
index ab06771ea0ca071f..f02f5a6df763d4e9 100644
|
||||
--- a/sysdeps/i386/i686/memset.S
|
||||
+++ b/sysdeps/i386/i686/memset.S
|
||||
@@ -27,7 +27,7 @@
|
||||
#define LEN CHR+4
|
||||
|
||||
.text
|
||||
-#if defined SHARED && IS_IN (libc)
|
||||
+#if defined PIC && IS_IN (libc)
|
||||
ENTRY_CHK (__memset_chk)
|
||||
movl 12(%esp), %eax
|
||||
cmpl %eax, 16(%esp)
|
27
glibc-upstream-2.39-49.patch
Normal file
27
glibc-upstream-2.39-49.patch
Normal file
@ -0,0 +1,27 @@
|
||||
commit 5141d4d83c17406f0eaea3e345ef2b52e10f386e
|
||||
Author: Sam James <sam@gentoo.org>
|
||||
Date: Sat May 4 13:28:54 2024 +0100
|
||||
|
||||
Revert "i586: Fix multiple definitions of __memcpy_chk and __mempcpy_chk"
|
||||
|
||||
This reverts commit 3148714ab61ad61281bae5a30f530d637034ac3b.
|
||||
|
||||
I had the wrong cherry-pick reference (the commit content is right; it's
|
||||
just referring to a base that isn't upstream), but let's revert and reapply
|
||||
for clarity.
|
||||
|
||||
Signed-off-by: Sam James <sam@gentoo.org>
|
||||
|
||||
diff --git a/sysdeps/i386/i586/memcpy.S b/sysdeps/i386/i586/memcpy.S
|
||||
index 79856d498af90f66..3e26f112d685e148 100644
|
||||
--- a/sysdeps/i386/i586/memcpy.S
|
||||
+++ b/sysdeps/i386/i586/memcpy.S
|
||||
@@ -26,7 +26,7 @@
|
||||
#define LEN SRC+4
|
||||
|
||||
.text
|
||||
-#if defined SHARED && IS_IN (libc)
|
||||
+#if defined PIC && IS_IN (libc)
|
||||
ENTRY (__memcpy_chk)
|
||||
movl 12(%esp), %eax
|
||||
cmpl %eax, 16(%esp)
|
34
glibc-upstream-2.39-50.patch
Normal file
34
glibc-upstream-2.39-50.patch
Normal file
@ -0,0 +1,34 @@
|
||||
commit 8323a83abd73446dc434aceff66219712c09140b
|
||||
Author: Gabi Falk <gabifalk@gmx.com>
|
||||
Date: Tue Apr 30 20:05:02 2024 +0000
|
||||
|
||||
i586: Fix multiple definitions of __memcpy_chk and __mempcpy_chk
|
||||
|
||||
/home/bmg/install/compilers/x86_64-linux-gnu/lib/gcc/x86_64-glibc-linux-gnu/13.2.1/../../../../x86_64-glibc-linux-gnu/bin/ld: /home/bmg/build/glibcs/i586-linux-gnu/glibc/libc.a(memcpy_chk.o): in function `__memcpy_chk':
|
||||
/home/bmg/src/glibc/debug/../sysdeps/i386/memcpy_chk.S:29: multiple definition of `__memcpy_chk';/home/bmg/build/glibcs/i586-linux-gnu/glibc/libc.a(memcpy.o):/home/bmg/src/glibc/string/../sysdeps/i386/i586/memcpy.S:31: first defined here /home/bmg/install/compilers/x86_64-linux-gnu/lib/gcc/x86_64-glibc-linux-gnu/13.2.1/../../../../x86_64-glibc-linux-gnu/bin/ld: /home/bmg/build/glibcs/i586-linux-gnu/glibc/libc.a(mempcpy_chk.o): in function `__mempcpy_chk': /home/bmg/src/glibc/debug/../sysdeps/i386/mempcpy_chk.S:28: multiple definition of `__mempcpy_chk'; /home/bmg/build/glibcs/i586-linux-gnu/glibc/libc.a(mempcpy.o):/home/bmg/src/glibc/string/../sysdeps/i386/i586/memcpy.S:31: first defined here
|
||||
|
||||
After this change, the static library built for i586, regardless of PIC
|
||||
options, contains implementations of these functions respectively from
|
||||
sysdeps/i386/memcpy_chk.S and sysdeps/i386/mempcpy_chk.S. This ensures
|
||||
that memcpy and mempcpy won't pull in __chk_fail and the routines it
|
||||
calls.
|
||||
|
||||
Reported-by: Florian Weimer <fweimer@redhat.com>
|
||||
Signed-off-by: Gabi Falk <gabifalk@gmx.com>
|
||||
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
|
||||
Reviewed-by: Dmitry V. Levin <ldv@altlinux.org>
|
||||
(cherry picked from commit 0fdf4ba48ccce5abf567340b0ab8fa8ed8a9bc6e)
|
||||
|
||||
diff --git a/sysdeps/i386/i586/memcpy.S b/sysdeps/i386/i586/memcpy.S
|
||||
index 3e26f112d685e148..79856d498af90f66 100644
|
||||
--- a/sysdeps/i386/i586/memcpy.S
|
||||
+++ b/sysdeps/i386/i586/memcpy.S
|
||||
@@ -26,7 +26,7 @@
|
||||
#define LEN SRC+4
|
||||
|
||||
.text
|
||||
-#if defined PIC && IS_IN (libc)
|
||||
+#if defined SHARED && IS_IN (libc)
|
||||
ENTRY (__memcpy_chk)
|
||||
movl 12(%esp), %eax
|
||||
cmpl %eax, 16(%esp)
|
57
glibc-upstream-2.39-51.patch
Normal file
57
glibc-upstream-2.39-51.patch
Normal file
@ -0,0 +1,57 @@
|
||||
commit 8b005d7869debac4d5cd67f65e49a0fad89da9ad
|
||||
Author: Gabi Falk <gabifalk@gmx.com>
|
||||
Date: Tue Apr 30 20:05:03 2024 +0000
|
||||
|
||||
i686: Fix multiple definitions of __memmove_chk and __memset_chk
|
||||
|
||||
Commit c73c96a4a1af1326df7f96eec58209e1e04066d8 updated memcpy.S and
|
||||
mempcpy.S, but omitted memmove.S and memset.S. As a result, the static
|
||||
library built as PIC, whether with or without multiarch support,
|
||||
contains two definitions for each of the __memmove_chk and __memset_chk
|
||||
symbols.
|
||||
|
||||
/usr/lib/gcc/i686-pc-linux-gnu/14/../../../../i686-pc-linux-gnu/bin/ld: /usr/lib/gcc/i686-pc-linux-gnu/14/../../../../lib/libc.a(memset-ia32.o): in function `__memset_chk':
|
||||
/var/tmp/portage/sys-libs/glibc-2.39-r3/work/glibc-2.39/string/../sysdeps/i386/i686/memset.S:32: multiple definition of `__memset_chk'; /usr/lib/gcc/i686-pc-linux-gnu/14/../../../../lib/libc.a(memset_chk.o):/var/tmp/portage/sys-libs/glibc-2.39-r3/work/glibc-2.39/debug/../sysdeps/i386/i686/multiarch/memset_chk.c:24: first defined here
|
||||
|
||||
After this change, regardless of PIC options, the static library, built
|
||||
for i686 with multiarch contains implementations of these functions
|
||||
respectively from debug/memmove_chk.c and debug/memset_chk.c, and
|
||||
without multiarch contains implementations of these functions
|
||||
respectively from sysdeps/i386/memmove_chk.S and
|
||||
sysdeps/i386/memset_chk.S. This ensures that memmove and memset won't
|
||||
pull in __chk_fail and the routines it calls.
|
||||
|
||||
Reported-by: Sam James <sam@gentoo.org>
|
||||
Tested-by: Sam James <sam@gentoo.org>
|
||||
Fixes: c73c96a4a1 ("i686: Fix build with --disable-multiarch")
|
||||
Signed-off-by: Gabi Falk <gabifalk@gmx.com>
|
||||
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
|
||||
Reviewed-by: Dmitry V. Levin <ldv@altlinux.org>
|
||||
(cherry picked from commit 5a2cf833f5772d6c37c7adac388dd9af9cc1c4b9)
|
||||
|
||||
diff --git a/sysdeps/i386/i686/memmove.S b/sysdeps/i386/i686/memmove.S
|
||||
index f230359ad62b2443..effd958120082b04 100644
|
||||
--- a/sysdeps/i386/i686/memmove.S
|
||||
+++ b/sysdeps/i386/i686/memmove.S
|
||||
@@ -29,7 +29,7 @@
|
||||
#define SRC DEST+4
|
||||
#define LEN SRC+4
|
||||
|
||||
-#if defined PIC && IS_IN (libc)
|
||||
+#if defined SHARED && IS_IN (libc)
|
||||
ENTRY_CHK (__memmove_chk)
|
||||
movl 12(%esp), %eax
|
||||
cmpl %eax, 16(%esp)
|
||||
diff --git a/sysdeps/i386/i686/memset.S b/sysdeps/i386/i686/memset.S
|
||||
index f02f5a6df763d4e9..ab06771ea0ca071f 100644
|
||||
--- a/sysdeps/i386/i686/memset.S
|
||||
+++ b/sysdeps/i386/i686/memset.S
|
||||
@@ -27,7 +27,7 @@
|
||||
#define LEN CHR+4
|
||||
|
||||
.text
|
||||
-#if defined PIC && IS_IN (libc)
|
||||
+#if defined SHARED && IS_IN (libc)
|
||||
ENTRY_CHK (__memset_chk)
|
||||
movl 12(%esp), %eax
|
||||
cmpl %eax, 16(%esp)
|
34
glibc-upstream-2.39-52.patch
Normal file
34
glibc-upstream-2.39-52.patch
Normal file
@ -0,0 +1,34 @@
|
||||
commit f8e462342189525e4605cf233b8f798d1c7f398d
|
||||
Author: Gabi Falk <gabifalk@gmx.com>
|
||||
Date: Tue Apr 30 20:05:04 2024 +0000
|
||||
|
||||
Add a test to check for duplicate definitions in the static library
|
||||
|
||||
This change follows two previous fixes addressing multiple definitions
|
||||
of __memcpy_chk and __mempcpy_chk functions on i586, and __memmove_chk
|
||||
and __memset_chk functions on i686. The test is intended to prevent
|
||||
such issues from occurring in the future.
|
||||
|
||||
Signed-off-by: Gabi Falk <gabifalk@gmx.com>
|
||||
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
|
||||
Reviewed-by: Dmitry V. Levin <ldv@altlinux.org>
|
||||
(cherry picked from commit ded2e0753e9c46debeb2e0d26c5e560d2581d314)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index f7e4eb9ff2cc464c..37bf70aa4ad4403f 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -577,6 +577,13 @@ $(objpfx)lint-makefiles.out: scripts/lint-makefiles.sh
|
||||
$(SHELL) $< "$(PYTHON)" `pwd` > $@ ; \
|
||||
$(evaluate-test)
|
||||
|
||||
+# Link libc.a as a whole to verify that it does not contain multiple
|
||||
+# definitions of any symbols.
|
||||
+tests-special += $(objpfx)link-static-libc.out
|
||||
+$(objpfx)link-static-libc.out:
|
||||
+ $(LINK.o) $(whole-archive) -r $(objpfx)libc.a -o /dev/null > $@ 2>&1; \
|
||||
+ $(evaluate-test)
|
||||
+
|
||||
# Print test summary for tests in $1 .sum file;
|
||||
# $2 is optional test identifier.
|
||||
# Fail if there are unexpected failures in the test results.
|
207
glibc-upstream-2.39-53.patch
Normal file
207
glibc-upstream-2.39-53.patch
Normal file
@ -0,0 +1,207 @@
|
||||
commit 71149c2a2e85a8233631cc816030d449f021bb2a
|
||||
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
Date: Mon May 6 13:18:45 2024 -0300
|
||||
|
||||
elf: Only process multiple tunable once (BZ 31686)
|
||||
|
||||
The 680c597e9c3 commit made loader reject ill-formatted strings by
|
||||
first tracking all set tunables and then applying them. However, it does
|
||||
not take into consideration if the same tunable is set multiple times,
|
||||
where parse_tunables_string appends the found tunable without checking
|
||||
if it was already in the list. It leads to a stack-based buffer overflow
|
||||
if the tunable is specified more than the total number of tunables. For
|
||||
instance:
|
||||
|
||||
GLIBC_TUNABLES=glibc.malloc.check=2:... (repeat over the number of
|
||||
total support for different tunable).
|
||||
|
||||
Instead, use the index of the tunable list to get the expected tunable
|
||||
entry. Since now the initial list is zero-initialized, the compiler
|
||||
might emit an extra memset and this requires some minor adjustment
|
||||
on some ports.
|
||||
|
||||
Checked on x86_64-linux-gnu and aarch64-linux-gnu.
|
||||
|
||||
Reported-by: Yuto Maeda <maeda@cyberdefense.jp>
|
||||
Reported-by: Yutaro Shimizu <shimizu@cyberdefense.jp>
|
||||
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
|
||||
(cherry picked from commit bcae44ea8536b30a7119c0986ff5692bddacb672)
|
||||
|
||||
diff --git a/elf/dl-tunables.c b/elf/dl-tunables.c
|
||||
index 03e1a68675d65224..614ac9c0471c5963 100644
|
||||
--- a/elf/dl-tunables.c
|
||||
+++ b/elf/dl-tunables.c
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <ldsodefs.h>
|
||||
#include <array_length.h>
|
||||
#include <dl-minimal-malloc.h>
|
||||
+#include <dl-symbol-redir-ifunc.h>
|
||||
|
||||
#define TUNABLES_INTERNAL 1
|
||||
#include "dl-tunables.h"
|
||||
@@ -223,6 +224,7 @@ parse_tunables_string (const char *valstring, struct tunable_toset_t *tunables)
|
||||
{
|
||||
tunables[ntunables++] =
|
||||
(struct tunable_toset_t) { cur, value, p - value };
|
||||
+
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -234,23 +236,27 @@ parse_tunables_string (const char *valstring, struct tunable_toset_t *tunables)
|
||||
static void
|
||||
parse_tunables (const char *valstring)
|
||||
{
|
||||
- struct tunable_toset_t tunables[tunables_list_size];
|
||||
- int ntunables = parse_tunables_string (valstring, tunables);
|
||||
- if (ntunables == -1)
|
||||
+ struct tunable_toset_t tunables[tunables_list_size] = { 0 };
|
||||
+ if (parse_tunables_string (valstring, tunables) == -1)
|
||||
{
|
||||
_dl_error_printf (
|
||||
"WARNING: ld.so: invalid GLIBC_TUNABLES `%s': ignored.\n", valstring);
|
||||
return;
|
||||
}
|
||||
|
||||
- for (int i = 0; i < ntunables; i++)
|
||||
- if (!tunable_initialize (tunables[i].t, tunables[i].value,
|
||||
- tunables[i].len))
|
||||
- _dl_error_printf ("WARNING: ld.so: invalid GLIBC_TUNABLES value `%.*s' "
|
||||
- "for option `%s': ignored.\n",
|
||||
- (int) tunables[i].len,
|
||||
- tunables[i].value,
|
||||
- tunables[i].t->name);
|
||||
+ for (int i = 0; i < tunables_list_size; i++)
|
||||
+ {
|
||||
+ if (tunables[i].t == NULL)
|
||||
+ continue;
|
||||
+
|
||||
+ if (!tunable_initialize (tunables[i].t, tunables[i].value,
|
||||
+ tunables[i].len))
|
||||
+ _dl_error_printf ("WARNING: ld.so: invalid GLIBC_TUNABLES value `%.*s' "
|
||||
+ "for option `%s': ignored.\n",
|
||||
+ (int) tunables[i].len,
|
||||
+ tunables[i].value,
|
||||
+ tunables[i].t->name);
|
||||
+ }
|
||||
}
|
||||
|
||||
/* Initialize the tunables list from the environment. For now we only use the
|
||||
diff --git a/elf/tst-tunables.c b/elf/tst-tunables.c
|
||||
index 095b5c81d95c8760..dff34ed748b4ae83 100644
|
||||
--- a/elf/tst-tunables.c
|
||||
+++ b/elf/tst-tunables.c
|
||||
@@ -17,6 +17,10 @@
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <array_length.h>
|
||||
+/* The test uses the tunable_list size, which is only exported for
|
||||
+ ld.so. This will result in a copy of tunable_list, which is ununsed by
|
||||
+ the test itself. */
|
||||
+#define TUNABLES_INTERNAL 1
|
||||
#include <dl-tunables.h>
|
||||
#include <getopt.h>
|
||||
#include <intprops.h>
|
||||
@@ -24,12 +28,13 @@
|
||||
#include <stdlib.h>
|
||||
#include <support/capture_subprocess.h>
|
||||
#include <support/check.h>
|
||||
+#include <support/support.h>
|
||||
|
||||
static int restart;
|
||||
#define CMDLINE_OPTIONS \
|
||||
{ "restart", no_argument, &restart, 1 },
|
||||
|
||||
-static const struct test_t
|
||||
+static struct test_t
|
||||
{
|
||||
const char *name;
|
||||
const char *value;
|
||||
@@ -284,6 +289,29 @@ static const struct test_t
|
||||
0,
|
||||
0,
|
||||
},
|
||||
+ /* Also check for repeated tunables with a count larger than the total number
|
||||
+ of tunables. */
|
||||
+ {
|
||||
+ "GLIBC_TUNABLES",
|
||||
+ NULL,
|
||||
+ 2,
|
||||
+ 0,
|
||||
+ 0,
|
||||
+ },
|
||||
+ {
|
||||
+ "GLIBC_TUNABLES",
|
||||
+ NULL,
|
||||
+ 1,
|
||||
+ 0,
|
||||
+ 0,
|
||||
+ },
|
||||
+ {
|
||||
+ "GLIBC_TUNABLES",
|
||||
+ NULL,
|
||||
+ 0,
|
||||
+ 0,
|
||||
+ 0,
|
||||
+ },
|
||||
};
|
||||
|
||||
static int
|
||||
@@ -327,6 +355,37 @@ do_test (int argc, char *argv[])
|
||||
spargv[i] = NULL;
|
||||
}
|
||||
|
||||
+ /* Create a tunable line with the duplicate values with a total number
|
||||
+ larger than the different number of tunables. */
|
||||
+ {
|
||||
+ enum { tunables_list_size = array_length (tunable_list) };
|
||||
+ const char *value = "";
|
||||
+ for (int i = 0; i < tunables_list_size; i++)
|
||||
+ value = xasprintf ("%sglibc.malloc.check=2%c",
|
||||
+ value,
|
||||
+ i == (tunables_list_size - 1) ? '\0' : ':');
|
||||
+ tests[33].value = value;
|
||||
+ }
|
||||
+ /* Same as before, but the last tunable values is differen than the
|
||||
+ rest. */
|
||||
+ {
|
||||
+ enum { tunables_list_size = array_length (tunable_list) };
|
||||
+ const char *value = "";
|
||||
+ for (int i = 0; i < tunables_list_size - 1; i++)
|
||||
+ value = xasprintf ("%sglibc.malloc.check=2:", value);
|
||||
+ value = xasprintf ("%sglibc.malloc.check=1", value);
|
||||
+ tests[34].value = value;
|
||||
+ }
|
||||
+ /* Same as before, but with an invalid last entry. */
|
||||
+ {
|
||||
+ enum { tunables_list_size = array_length (tunable_list) };
|
||||
+ const char *value = "";
|
||||
+ for (int i = 0; i < tunables_list_size - 1; i++)
|
||||
+ value = xasprintf ("%sglibc.malloc.check=2:", value);
|
||||
+ value = xasprintf ("%sglibc.malloc.check=1=1", value);
|
||||
+ tests[35].value = value;
|
||||
+ }
|
||||
+
|
||||
for (int i = 0; i < array_length (tests); i++)
|
||||
{
|
||||
snprintf (nteststr, sizeof nteststr, "%d", i);
|
||||
diff --git a/sysdeps/aarch64/multiarch/memset_generic.S b/sysdeps/aarch64/multiarch/memset_generic.S
|
||||
index 81748bdbce53e636..e125a5ed853301e1 100644
|
||||
--- a/sysdeps/aarch64/multiarch/memset_generic.S
|
||||
+++ b/sysdeps/aarch64/multiarch/memset_generic.S
|
||||
@@ -33,3 +33,7 @@
|
||||
#endif
|
||||
|
||||
#include <../memset.S>
|
||||
+
|
||||
+#if IS_IN (rtld)
|
||||
+strong_alias (memset, __memset_generic)
|
||||
+#endif
|
||||
diff --git a/sysdeps/sparc/sparc64/rtld-memset.c b/sysdeps/sparc/sparc64/rtld-memset.c
|
||||
index 55f38357902933b5..a19202a620fb8f7d 100644
|
||||
--- a/sysdeps/sparc/sparc64/rtld-memset.c
|
||||
+++ b/sysdeps/sparc/sparc64/rtld-memset.c
|
||||
@@ -1 +1,4 @@
|
||||
#include <string/memset.c>
|
||||
+#if IS_IN(rtld)
|
||||
+strong_alias (memset, __memset_ultra1)
|
||||
+#endif
|
45
glibc-upstream-2.39-54.patch
Normal file
45
glibc-upstream-2.39-54.patch
Normal file
@ -0,0 +1,45 @@
|
||||
commit 97bb89668d7171164975f3dc895e38343a2f3a95
|
||||
Author: H.J. Lu <hjl.tools@gmail.com>
|
||||
Date: Thu May 9 20:07:01 2024 -0700
|
||||
|
||||
Force DT_RPATH for --enable-hardcoded-path-in-tests
|
||||
|
||||
On Fedora 40/x86-64, linker enables --enable-new-dtags by default which
|
||||
generates DT_RUNPATH instead of DT_RPATH. Unlike DT_RPATH, DT_RUNPATH
|
||||
only applies to DT_NEEDED entries in the executable and doesn't applies
|
||||
to DT_NEEDED entries in shared libraries which are loaded via DT_NEEDED
|
||||
entries in the executable. Some glibc tests have libstdc++.so.6 in
|
||||
DT_NEEDED, which has libm.so.6 in DT_NEEDED. When DT_RUNPATH is generated,
|
||||
/lib64/libm.so.6 is loaded for such tests. If the newly built glibc is
|
||||
older than glibc 2.36, these tests fail with
|
||||
|
||||
assert/tst-assert-c++: /export/build/gnu/tools-build/glibc-gitlab-release/build-x86_64-linux/libc.so.6: version `GLIBC_2.36' not found (required by /lib64/libm.so.6)
|
||||
assert/tst-assert-c++: /export/build/gnu/tools-build/glibc-gitlab-release/build-x86_64-linux/libc.so.6: version `GLIBC_ABI_DT_RELR' not found (required by /lib64/libm.so.6)
|
||||
|
||||
Pass -Wl,--disable-new-dtags to linker when building glibc tests with
|
||||
--enable-hardcoded-path-in-tests. This fixes BZ #31719.
|
||||
|
||||
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
|
||||
(cherry picked from commit 2dcaf70643710e22f92a351e36e3cff8b48c60dc)
|
||||
|
||||
diff --git a/Makeconfig b/Makeconfig
|
||||
index 85e00cef94e9deb4..522182abdc426e70 100644
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -586,10 +586,13 @@ link-libc-rpath-link = -Wl,-rpath-link=$(rpath-link)
|
||||
# before the expansion of LDLIBS-* variables).
|
||||
|
||||
# Tests use -Wl,-rpath instead of -Wl,-rpath-link for
|
||||
-# build-hardcoded-path-in-tests.
|
||||
+# build-hardcoded-path-in-tests. Add -Wl,--disable-new-dtags to force
|
||||
+# DT_RPATH instead of DT_RUNPATH which only applies to DT_NEEDED entries
|
||||
+# in the executable and doesn't applies to DT_NEEDED entries in shared
|
||||
+# libraries which are loaded via DT_NEEDED entries in the executable.
|
||||
ifeq (yes,$(build-hardcoded-path-in-tests))
|
||||
-link-libc-tests-rpath-link = $(link-libc-rpath)
|
||||
-link-test-modules-rpath-link = $(link-libc-rpath)
|
||||
+link-libc-tests-rpath-link = $(link-libc-rpath) -Wl,--disable-new-dtags
|
||||
+link-test-modules-rpath-link = $(link-libc-rpath) -Wl,--disable-new-dtags
|
||||
else
|
||||
link-libc-tests-rpath-link = $(link-libc-rpath-link)
|
||||
link-test-modules-rpath-link =
|
30
glibc.spec
30
glibc.spec
@ -170,7 +170,7 @@ Version: %{glibcversion}
|
||||
# - It allows using the Release number without the %%dist tag in the dependency
|
||||
# generator to make the generated requires interchangeable between Rawhide
|
||||
# and ELN (.elnYY < .fcXX).
|
||||
%global baserelease 10
|
||||
%global baserelease 11
|
||||
Release: %{baserelease}%{?dist}
|
||||
|
||||
# Licenses:
|
||||
@ -349,6 +349,21 @@ Patch59: glibc-upstream-2.39-36.patch
|
||||
Patch60: glibc-upstream-2.39-37.patch
|
||||
Patch61: glibc-upstream-2.39-38.patch
|
||||
Patch62: glibc-upstream-2.39-39.patch
|
||||
Patch63: glibc-upstream-2.39-40.patch
|
||||
Patch64: glibc-upstream-2.39-41.patch
|
||||
Patch65: glibc-upstream-2.39-42.patch
|
||||
Patch66: glibc-upstream-2.39-43.patch
|
||||
Patch67: glibc-upstream-2.39-44.patch
|
||||
Patch68: glibc-upstream-2.39-45.patch
|
||||
Patch69: glibc-upstream-2.39-46.patch
|
||||
Patch70: glibc-upstream-2.39-47.patch
|
||||
Patch71: glibc-upstream-2.39-48.patch
|
||||
Patch72: glibc-upstream-2.39-49.patch
|
||||
Patch73: glibc-upstream-2.39-50.patch
|
||||
Patch74: glibc-upstream-2.39-51.patch
|
||||
Patch75: glibc-upstream-2.39-52.patch
|
||||
Patch76: glibc-upstream-2.39-53.patch
|
||||
Patch77: glibc-upstream-2.39-54.patch
|
||||
|
||||
##############################################################################
|
||||
# Continued list of core "glibc" package information:
|
||||
@ -2556,6 +2571,19 @@ update_gconv_modules_cache ()
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri May 10 2024 Florian Weimer <fweimer@redhat.com> - 2.39-11
|
||||
- Sync with upstream branch release/2.39/master,
|
||||
commit 97bb89668d7171164975f3dc895e38343a2f3a95:
|
||||
- Force DT_RPATH for --enable-hardcoded-path-in-tests
|
||||
- elf: Only process multiple tunable once (BZ 31686)
|
||||
- Add a test to check for duplicate definitions in the static library
|
||||
- i686: Fix multiple definitions of __memmove_chk and __memset_chk
|
||||
- i586: Fix multiple definitions of __memcpy_chk and __mempcpy_chk
|
||||
- time: Allow later version licensing.
|
||||
- nscd: Use time_t for return type of addgetnetgrentX
|
||||
- login: structs utmp, utmpx, lastlog _TIME_BITS independence (bug 30701)
|
||||
- login: Check default sizes of structs utmp, utmpx, lastlog
|
||||
|
||||
* Fri May 03 2024 Florian Weimer <fweimer@redhat.com> - 2.39-10
|
||||
- Build POWER10 multilib
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user