From 3e8e5d3396dbe9732053a58f46aef199772aaae7 Mon Sep 17 00:00:00 2001 From: Arjun Shankar Date: Tue, 21 Jul 2020 15:09:22 +0200 Subject: [PATCH] Work around libselinux API deprecations & auto-sync with upstream branch master - Add glibc-deprecated-selinux-makedb.patch and glibc-deprecated-selinux-nscd.patch to work around libselinux API deprecations. - Drop glibc-rseq-disable.patch; rseq support removed upstream. Upstream commit: ec2f1fddf29053957d061dfe310f106388472a4f - libio: Remove __libc_readline_unlocked - shadow: Implement fgetspent_r using __nss_fgetent_r - pwd: Implement fgetpwent_r using __nss_fgetent_r - gshadow: Implement fgetsgent_r using __nss_fgetent_r (bug 20338) - grp: Implement fgetgrent_r using __nss_fgetent_r - nss: Add __nss_fgetent_r - libio: Add fseterr_unlocked for internal use - nss_files: Use generic result pointer in parse_line - nss_files: Consolidate line parse declarations in - nss_compat: Do not use mmap to read database files (bug 26258) - nss_files: Consolidate file opening in __nss_files_fopen - Update powerpc-nofpu libm-test-ulps. - Use MPFR 4.1.0 in build-many-glibcs.py. - elf: Change TLS static surplus default back to 1664 - hurd: Fix longjmp check for sigstate - hurd: Fix longjmp early in initialization - manual: New signal and errno string functions are AS-safe - AArch64: Improve strlen_asimd performance (bug 25824) - Move from sunrpc to inet - en_US: Minimize changes to date_fmt (Bug 25923) - Linux: Remove rseq support - manual: Use Unicode instead HTML entities for characters (bug 19737) - Add NEWS entry for CVE-2020-6096 (bug 25620) - arm: remove string/tst-memmove-overflow XFAIL - AArch64: Rename IS_ARES to IS_NEOVERSE_N1 - AArch64: Add optimized Q-register memcpy - AArch64: Align ENTRY to a cacheline - Correct timespec implementation [BZ #26232] - Remove --enable-obsolete-rpc configure flag - hurd: Fix build-many-glibcs.py - x86: Support usable check for all CPU features - string: Make tst-strerror/tst-strsignal unsupported if msgfmt is not installed - malloc: Deprecate more hook-related functionality - elf: Support at least 32-byte alignment in static dlopen - x86: Remove __ASSEMBLER__ check in init-arch.h - x86: Remove the unused __x86_prefetchw - Documentation for ARC port - build-many-glibcs.py: Enable ARC builds - ARC: Build Infrastructure - ARC: ABI lists - ARC: Linux Startup and Dynamic Loading - ARC: Linux ABI - ARC: Linux Syscall Interface - ARC: hardware floating point support - ARC: math soft float support - ARC: Atomics and Locking primitives - ARC: Thread Local Storage support - ARC: startup and dynamic linking code - ARC: ABI Implementation - Fix time/tst-cpuclock1 intermitent failures - powerpc64: Fix calls when r2 is not used [BZ #26173] - Add NEWS entry for Update to Unicode 13.0.0 [BZ #25819] - Update i686 libm-test-ulps - Fix memory leak in __printf_fp_l (bug 26215). - Fix double free in __printf_fp_l (bug 26214). - linux: Fix syscall list generation instructions - sysv: linux: Add 64-bit time_t variant for shmctl - sysvipc: Remove the linux shm-pad.h file - sysvipc: Split out linux struct shmid_ds - sysv: linux: Add 64-bit time_t variant for msgctl - sysvipc: Remove the linux msq-pad.h file - sysvipc: Split out linux struct semid_ds - sysv: linux: Add 64-bit time_t variant for semctl --- glibc-rseq-disable.patch | 125 --------------------------------------- glibc.spec | 80 +++++++++++++++++++++++-- sources | 2 +- 3 files changed, 76 insertions(+), 131 deletions(-) delete mode 100644 glibc-rseq-disable.patch diff --git a/glibc-rseq-disable.patch b/glibc-rseq-disable.patch deleted file mode 100644 index 40090a7..0000000 --- a/glibc-rseq-disable.patch +++ /dev/null @@ -1,125 +0,0 @@ -Disable rseq integration until the Firefox sandbox supports rseq. - -Sandbox is incompatible with rseq registration - - -diff --git a/elf/libc_early_init.c b/elf/libc_early_init.c -index 86da66d5e01af08f..fd779941e7180fb6 100644 ---- a/elf/libc_early_init.c -+++ b/elf/libc_early_init.c -@@ -28,8 +28,9 @@ __libc_early_init (_Bool initial) - __ctype_init (); - - /* Register rseq ABI to the kernel for the main program's libc. */ -+ rseq_active_init (); - if (initial) -- rseq_register_current_thread (); -+ rseq_register_current_thread (); - - /* Only the outer namespace is marked as single-threaded. */ - __libc_single_threaded = initial; -diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions -index f72741b7e5afb22a..a730077142f0e20a 100644 ---- a/sysdeps/unix/sysv/linux/Versions -+++ b/sysdeps/unix/sysv/linux/Versions -@@ -171,6 +171,8 @@ libc { - __rseq_abi; - } - GLIBC_PRIVATE { -+ __rseq_active; -+ - # functions used in other libraries - __syscall_rt_sigqueueinfo; - __open_nocancel; -diff --git a/sysdeps/unix/sysv/linux/rseq-internal.h b/sysdeps/unix/sysv/linux/rseq-internal.h -index 8f6772ca1deada89..acaf033be465facd 100644 ---- a/sysdeps/unix/sysv/linux/rseq-internal.h -+++ b/sysdeps/unix/sysv/linux/rseq-internal.h -@@ -23,13 +23,29 @@ - #include - #include - #include -+#include - - #ifdef RSEQ_SIG -+ -+extern _Bool __rseq_active; -+ -+static inline void -+rseq_active_init (void) -+{ -+ __rseq_active = __access ("/etc/glibc.rseq.enabled", F_OK) == 0; -+} -+ - static inline void - rseq_register_current_thread (void) - { - int ret; - -+ if (!__rseq_active) -+ { -+ __rseq_abi.cpu_id = RSEQ_CPU_ID_REGISTRATION_FAILED; -+ return; -+ } -+ - if (__rseq_abi.cpu_id != RSEQ_CPU_ID_UNINITIALIZED) - __libc_fatal ("glibc fatal error: " - "rseq already initialized for this thread\n"); -@@ -64,6 +80,11 @@ rseq_register_current_thread (void) - } - } - #else /* RSEQ_SIG */ -+static inline void -+rseq_active_init (void) -+{ -+} -+ - static inline void - rseq_register_current_thread (void) - { -diff --git a/sysdeps/unix/sysv/linux/rseq-sym.c b/sysdeps/unix/sysv/linux/rseq-sym.c -index 090093408f1a4b3f..78d3a9dd8355436b 100644 ---- a/sysdeps/unix/sysv/linux/rseq-sym.c -+++ b/sysdeps/unix/sysv/linux/rseq-sym.c -@@ -19,8 +19,11 @@ - #include - #include - #include -+#include - - __thread struct rseq __rseq_abi = - { - .cpu_id = RSEQ_CPU_ID_UNINITIALIZED, - }; -+ -+_Bool __rseq_active __attribute__ ((nocommon)); -diff --git a/sysdeps/unix/sysv/linux/tst-rseq-nptl.c b/sysdeps/unix/sysv/linux/tst-rseq-nptl.c -index 5e788dcfa9eef8ef..ed846e9f5d5a5f4e 100644 ---- a/sysdeps/unix/sysv/linux/tst-rseq-nptl.c -+++ b/sysdeps/unix/sysv/linux/tst-rseq-nptl.c -@@ -250,6 +250,10 @@ do_rseq_test (void) - static int - do_test (void) - { -+ extern _Bool __rseq_active; -+ if (!__rseq_active) -+ FAIL_UNSUPPORTED ("/etc/glibc.rseq.enabled missing, test disabled"); -+ - return do_rseq_test (); - } - -diff --git a/sysdeps/unix/sysv/linux/tst-rseq.c b/sysdeps/unix/sysv/linux/tst-rseq.c -index aa902fb26a64f917..60eaab4bc13d1275 100644 ---- a/sysdeps/unix/sysv/linux/tst-rseq.c -+++ b/sysdeps/unix/sysv/linux/tst-rseq.c -@@ -57,6 +57,10 @@ do_rseq_test (void) - static int - do_test (void) - { -+ extern _Bool __rseq_active; -+ if (!__rseq_active) -+ FAIL_UNSUPPORTED ("/etc/glibc.rseq.enabled missing, test disabled"); -+ - do_rseq_test (); - return 0; - } diff --git a/glibc.spec b/glibc.spec index c5eafb5..3ed77ba 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,4 +1,4 @@ -%define glibcsrcdir glibc-2.31.9000-683-gffb17e7ba3 +%define glibcsrcdir glibc-2.31.9000-746-gec2f1fddf2 %define glibcversion 2.31.9000 # Pre-release tarballs are pulled in from git using a command that is # effectively: @@ -96,7 +96,7 @@ Summary: The GNU libc libraries Name: glibc Version: %{glibcversion} -Release: 19%{?dist} +Release: 20%{?dist} # In general, GPLv2+ is used by programs, LGPLv2+ is used for # libraries. @@ -167,9 +167,8 @@ Patch17: glibc-cs-path.patch Patch18: glibc-c-utf8-locale.patch Patch23: glibc-python3.patch Patch29: glibc-fedora-nsswitch.patch -Patch30: glibc-rseq-disable.patch -Patch31: glibc-deprecated-selinux-makedb.patch -Patch32: glibc-deprecated-selinux-nscd.patch +Patch30: glibc-deprecated-selinux-makedb.patch +Patch31: glibc-deprecated-selinux-nscd.patch ############################################################################## # Continued list of core "glibc" package information: @@ -2020,6 +2019,77 @@ fi %files -f compat-libpthread-nonshared.filelist -n compat-libpthread-nonshared %changelog +* Tue Jul 21 2020 Arjun Shankar - 2.31.9000-20 +- Add glibc-deprecated-selinux-makedb.patch and + glibc-deprecated-selinux-nscd.patch to work around libselinux API + deprecations. +- Drop glibc-rseq-disable.patch; rseq support removed upstream. +- Auto-sync with upstream branch master, + commit ec2f1fddf29053957d061dfe310f106388472a4f: +- libio: Remove __libc_readline_unlocked +- shadow: Implement fgetspent_r using __nss_fgetent_r +- pwd: Implement fgetpwent_r using __nss_fgetent_r +- gshadow: Implement fgetsgent_r using __nss_fgetent_r (bug 20338) +- grp: Implement fgetgrent_r using __nss_fgetent_r +- nss: Add __nss_fgetent_r +- libio: Add fseterr_unlocked for internal use +- nss_files: Use generic result pointer in parse_line +- nss_files: Consolidate line parse declarations in +- nss_compat: Do not use mmap to read database files (bug 26258) +- nss_files: Consolidate file opening in __nss_files_fopen +- Update powerpc-nofpu libm-test-ulps. +- Use MPFR 4.1.0 in build-many-glibcs.py. +- elf: Change TLS static surplus default back to 1664 +- hurd: Fix longjmp check for sigstate +- hurd: Fix longjmp early in initialization +- manual: New signal and errno string functions are AS-safe +- AArch64: Improve strlen_asimd performance (bug 25824) +- Move from sunrpc to inet +- en_US: Minimize changes to date_fmt (Bug 25923) +- Linux: Remove rseq support +- manual: Use Unicode instead HTML entities for characters (bug 19737) +- Add NEWS entry for CVE-2020-6096 (bug 25620) +- arm: remove string/tst-memmove-overflow XFAIL +- AArch64: Rename IS_ARES to IS_NEOVERSE_N1 +- AArch64: Add optimized Q-register memcpy +- AArch64: Align ENTRY to a cacheline +- Correct timespec implementation [BZ #26232] +- Remove --enable-obsolete-rpc configure flag +- hurd: Fix build-many-glibcs.py +- x86: Support usable check for all CPU features +- string: Make tst-strerror/tst-strsignal unsupported if msgfmt is not installed +- malloc: Deprecate more hook-related functionality +- elf: Support at least 32-byte alignment in static dlopen +- x86: Remove __ASSEMBLER__ check in init-arch.h +- x86: Remove the unused __x86_prefetchw +- Documentation for ARC port +- build-many-glibcs.py: Enable ARC builds +- ARC: Build Infrastructure +- ARC: ABI lists +- ARC: Linux Startup and Dynamic Loading +- ARC: Linux ABI +- ARC: Linux Syscall Interface +- ARC: hardware floating point support +- ARC: math soft float support +- ARC: Atomics and Locking primitives +- ARC: Thread Local Storage support +- ARC: startup and dynamic linking code +- ARC: ABI Implementation +- Fix time/tst-cpuclock1 intermitent failures +- powerpc64: Fix calls when r2 is not used [BZ #26173] +- Add NEWS entry for Update to Unicode 13.0.0 [BZ #25819] +- Update i686 libm-test-ulps +- Fix memory leak in __printf_fp_l (bug 26215). +- Fix double free in __printf_fp_l (bug 26214). +- linux: Fix syscall list generation instructions +- sysv: linux: Add 64-bit time_t variant for shmctl +- sysvipc: Remove the linux shm-pad.h file +- sysvipc: Split out linux struct shmid_ds +- sysv: linux: Add 64-bit time_t variant for msgctl +- sysvipc: Remove the linux msq-pad.h file +- sysvipc: Split out linux struct semid_ds +- sysv: linux: Add 64-bit time_t variant for semctl + * Fri Jul 10 2020 Florian Weimer - 2.31.9000-19 - Disable rseq registration by default to help Firefox (#1855729) diff --git a/sources b/sources index afbe8d3..db61efd 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (glibc-2.31.9000-683-gffb17e7ba3.tar.xz) = 103ff3c04de5dc149df93e5399de1630f6fff1b8d7f127881d6e530492b8b953a8064205ceecb311a77c0a10de3a5ab2056121fd1fa833a30327c6b1f08beacc +SHA512 (glibc-2.31.9000-746-gec2f1fddf2.tar.xz) = 8324ee622aae041ad66aac0dbf2e3dc8af735c5826cbd2186bd9dabbb5fc6b8ffd744f68629e1f3763ed1f6692167acd75a1b621a799ef3e753aa348fdd0b581