commit 2bd5642317b4644f83296800994ed831aa64fd51
Author: MSVSphere Packaging Team <packager@msvsphere-os.ru>
Date:   Fri Oct 25 14:49:13 2024 +0300

    import glibc-2.39-22.el10

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b446b34
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/glibc-2.39.tar.xz
diff --git a/.glibc.metadata b/.glibc.metadata
new file mode 100644
index 0000000..2501aee
--- /dev/null
+++ b/.glibc.metadata
@@ -0,0 +1 @@
+4b043eaba31efbdfc92c85d062e975141870295e SOURCES/glibc-2.39.tar.xz
diff --git a/SOURCES/ChangeLog.old b/SOURCES/ChangeLog.old
new file mode 100644
index 0000000..c927cc3
--- /dev/null
+++ b/SOURCES/ChangeLog.old
@@ -0,0 +1,11823 @@
+* Wed Jul 27 2022 Arjun Shankar <arjun@redhat.com> - 2.35.9000-32
+- Auto-sync with upstream branch master,
+  commit eaad4f9e8f07fc43618f6c8635a7e82831a423dd:
+- arc4random: simplify design for better safety
+- LoongArch: Update NEWS and README for the LoongArch port.
+- LoongArch: Update build-many-glibcs.py for the LoongArch Port.
+- LoongArch: Hard Float Support
+- LoongArch: Build Infrastructure
+- LoongArch: Add ABI Lists
+- LoongArch: Linux ABI
+- LoongArch: Linux Syscall Interface
+- LoongArch: Atomic and Locking Routines
+- LoongArch: Generic <math.h> and soft-fp Routines
+- LoongArch: Thread-Local Storage Support
+- LoongArch: ABI Implementation
+- LoongArch: Add relocations and ELF flags to elf.h and scripts/glibcelf.py
+- LoongArch: Add LoongArch entries to config.h.in
+- struct stat is not posix conformant on microblaze with __USE_FILE_OFFSET64
+- Linux: dirent/tst-readdir64-compat needs to use TEST_COMPAT (bug 27654)
+- manual: Add documentation for arc4random functions
+- s390x: Add optimized chacha20
+- powerpc64: Add optimized chacha20
+- x86: Add AVX2 optimized chacha20
+- x86: Add SSE2 optimized chacha20
+- aarch64: Add optimized chacha20
+- benchtests: Add arc4random benchtest
+- stdlib: Add arc4random tests
+- stdlib: Add arc4random, arc4random_buf, and arc4random_uniform (BZ #4417)
+- locale: Optimize tst-localedef-path-norm
+- malloc: Simplify implementation of __malloc_assert
+- Update scripts/config.* files from upstream GNU config version
+- linux: return UNSUPPORTED from tst-mount if entering mount namespace fails
+
+* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.35.9000-31
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
+
+* Sun Jul 17 2022 Patsy Griffin <patsy@redhat.com> - 2.35.9000-30
+- Auto-sync with upstream branch master,
+  commit 49889fb256a7f9b894b2d16fea23de1ac25b65e2.
+- x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level
+- x86: Add support to build wcscpy with explicit ISA level
+- x86: Add support to build strcmp/strlen/strchr with explicit ISA level
+- elf: Fix wrong fscanf usage on tst-pldd
+- Apply asm redirections in stdio.h before first use [BZ #27087]
+- S390: Define SINGLE_THREAD_BY_GLOBAL only on s390x
+- x86: Add missing rtm tests for strcmp family
+- x86: Remove unneeded rtld-wmemcmp
+- x86: Move wcslen SSE2 implementation to multiarch/wcslen-sse2.S
+- x86: Move wcschr SSE2 implementation to multiarch/wcschr-sse2.S
+- x86: Move strcat SSE2 implementation to multiarch/strcat-sse2.S
+- x86: Move strchr SSE2 implementation to multiarch/strchr-sse2.S
+- x86: Move strrchr SSE2 implementation to multiarch/strrchr-sse2.S
+- x86: Move memrchr SSE2 implementation to multiarch/memrchr-sse2.S
+- x86: Move strcpy SSE2 implementation to multiarch/strcpy-sse2.S
+- x86: Move strlen SSE2 implementation to multiarch/strlen-sse2.S
+- x86: Move strcmp SSE42 implementation to multiarch/strcmp-sse4_2.S
+- x86: Move wcscmp SSE2 implementation to multiarch/wcscmp-sse2.S
+- x86: Move strcmp SSE2 implementation to multiarch/strcmp-sse2.S
+- x86: Rename STRCASECMP_NONASCII macro to STRCASECMP_L_NONASCII
+- nptl: Fix ___pthread_unregister_cancel_restore asynchronous restore
+- x86: Remove __mmask intrinsics in strstr-avx512.c
+- x86: Remove generic strncat, strncpy, and stpncpy implementations
+- i386: Remove -Wa,-mtune=i686
+- x86-64: Remove redundant strcspn-generic/strpbrk-generic/strspn-generic
+- elf: Rename tst-audit26 to tst-audit28
+- x86-64: Don't mark symbols as hidden in strcmp-XXX.S
+- stdlib: Tests for mbrtoc8, c8rtomb, and the char8_t typedef.
+- stdlib: Implement mbrtoc8, c8rtomb, and the char8_t typedef.
+- gconv: Correct Big5-HKSCS conversion to preserve all state bits. [BZ #25744]
+- aarch64: Optimize string functions with shrn instruction
+- test-container: return UNSUPPORTED for ENOSPC on clone()
+- x86: Add support for building {w}memcmp{eq} with explicit ISA level
+- x86: Add support for building {w}memset{_chk} with explicit ISA level
+- x86: Add support for building {w}memmove{_chk} with explicit ISA level
+- x86: Add support for building str{c|p}{brk|spn} with explicit ISA level
+- x86: Add comment explaining no Slow_SSE4_2 check in ifunc-sse4_2
+- Replace __libc_multiple_threads with __libc_single_threaded
+- linux: Add mount_setattr
+- linux: Add tst-mount to check for Linux new mount API
+- linux: Add open_tree
+- linux: Add fspick
+- linux: Add fsconfig
+- AArch64: Reset HWCAP2_AFP bits in FPCR for default fenv
+- elf: Fix direction of NODELETE log messages during symbol lookup
+
+* Fri Jul  8 2022 Stephen Gallagher <sgallagh@redhat.com> - 2.35.9000-29
+- Modify glibc autorequires to exclude %%dist
+
+* Tue Jul  5 2022 Florian Weimer <fweimer@redhat.com> - 2.35.9000-28
+- ppc64le: Increase Clang compatibility of float128 redirects (#2100546)
+
+* Tue Jul 05 2022 Florian Weimer <fweimer@redhat.com> - 2.35.9000-27
+- Auto-sync with upstream branch master,
+  commit 7519dee356a0ab21c8990e59ed05dd48a4e573a0:
+- malloc: Simplify checked_request2size interface
+- stdlib: Simplify buffer management in canonicalize
+- localedef: Support building for older C standards
+- de_DE: Convert to UTF-8
+- locale: localdef input files are now encoded in UTF-8
+- locale: Introduce translate_unicode_codepoint into linereader.c
+- locale: Fix signed char bug in lr_getc
+- locale: Turn ADDC and ADDS into functions in linereader.c
+- libc-symbols.h: remove unused macros
+
+* Mon Jul 04 2022 Carlos O'Donell <carlos@redhat.com> - 2.35.9000-26
+- Auto-sync with upstream branch master,
+  commit 8ee2c043cfb35c48b45c7c5aed4022a8a7352bdc.
+- Fix hurd namespace issues for internal signal functions
+- argp: Remove old includes in !_LIBC case
+- Use GCC 12 branch in build-many-glibcs.py
+- Refactor internal-signals.h
+- riscv: Use memcpy to handle unaligned access when fixing R_RISCV_RELATIVE
+- AArch64: Add asymmetric faulting mode for tag violations in mem.tagging tunable
+- linux: Fix mq_timereceive check for 32 bit fallback code (BZ 29304)
+- x86: Add missing IS_IN (libc) check to strncmp-sse4_2.S
+- x86: Add missing IS_IN (libc) check to strcspn-sse4.c
+- x86: Add missing IS_IN (libc) check to memmove-ssse3.S
+- x86-64: Properly indent X86_IFUNC_IMPL_ADD_VN arguments
+- x86-64: Small improvements to dl-trampoline.S
+- x86: Move mem{p}{mov|cpy}_{chk_}erms to its own file
+- x86: Move and slightly improve memset_erms
+- x86: Add definition for __wmemset_chk AVX2 RTM in ifunc impl list
+- linux: Remove unnecessary nice.c and signal.c
+- nptl: Remove unused members from struct pthread
+- Linux: Forward declaration of struct iovec for process_madvise
+- x86: Add more feature definitions to isa-level.h
+
+* Wed Jun 29 2022 DJ Delorie <dj@redhat.com> - 2.35.9000-25
+- Rebuild for fixed CI test for bz699724
+
+* Tue Jun 28 2022 DJ Delorie <dj@redhat.com> - 2.35.9000-24
+- Auto-sync with upstream branch master,
+  commit a3563f3f369878467dd74aeb360448119a7a4b41.
+- elf: Fix -DNDEBUG warning in _dl_start_args_adjust
+- elf: Fix compile error with -Werror and -DNDEBUG
+- x86-64: Only define used SSE/AVX/AVX512 run-time resolvers
+- x86: Move CPU_FEATURE{S}_{USABLE|ARCH}_P to isa-level.h
+- x86: Fix backwards Prefer_No_VZEROUPPER check in ifunc-evex.h
+- x86: Rename strstr_sse2 to strstr_generic as it uses string/strstr.c
+- x86: Remove unused file wmemcmp-sse4
+- x86: Put wcs{n}len-sse4.1 in the sse4.1 text section
+- x86: Align entry for memrchr to 64-bytes.
+- Makerules: Remove no-op -Wl,-d when linking libc_pic.os
+- m68k: optimize RTLD_START
+- misc: Optimize internal usage of __libc_single_threaded
+- linux: Add move_mount
+- linux: Add fsmount
+- linux: Add fsopen
+- resolv/tst-resolv-noaaaa: Support building for older C standards
+- resolv: Implement no-aaaa stub resolver option
+- support: Change non-address output format of support_format_dns_packet
+- riscv: Use elf_machine_rela_relative to handle R_RISCV_RELATIVE
+- x86: Remove faulty sanity tests for RTLD build with no multiarch
+- stdlib: Fixup mbstowcs NULL __dst handling. [BZ #29279]
+- x86: Replace all sse instructions with vex equivilent in avx+ files
+- x86: Add support for compiling {raw|w}memchr with high ISA level
+- x86: Add defines / utilities for making ISA specific x86 builds
+- stdlib: Remove attr_write from mbstows if dst is NULL [BZ: 29265]
+- stdlib: Remove trailing whitespace from Makefile
+- debug: make __read_chk a cancellation point (bug 29274)
+- s390: use LC_ALL=C for readelf call
+- s390: use $READELF
+
+* Mon Jun 20 2022 Arjun Shankar <arjun@redhat.com> - 2.35.9000-23
+- Auto-sync with upstream branch master,
+  commit e5446dfea11e969212939197b606424a718d9b65:
+- i386: Fix include paths for strspn, strcspn, and strpbrk
+- elf: Silence GCC 11/12 false positive warning
+- x86: Rename generic functions with unique postfix for clarity
+- x86: Add BMI1/BMI2 checks for ISA_V3 check
+- x86-64: Handle fewer relocation types for RTLD_BOOTSTRAP
+- aarch64: Handle fewer relocations for RTLD_BOOTSTRAP
+- riscv: Change the relocations handled for RTLD_BOOTSTRAP
+- x86: Cleanup bounds checking in large memcpy case
+- x86: Add bounds `x86_non_temporal_threshold`
+- Remove remnant reference to ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA
+- elf: Remove ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA
+- x86: Add sse42 implementation to strcmp's ifunc
+- x86: Fix misordered logic for setting `rep_movsb_stop_threshold`
+- elf: Refine direct extern access diagnostics to protected symbol
+- Avoid -Wstringop-overflow= warning in iconv module.
+- Add bounds check to __libc_ifunc_impl_list
+- libio: Avoid RMW of flags2 outside lock (BZ #27842)
+- x86: Optimize svml_s_tanhf4_core_sse4.S
+- x86: Optimize svml_s_tanhf8_core_avx2.S
+- x86: Add data file that can be shared by tanhf-avx2 and tanhf-sse4
+- x86: Optimize svml_s_tanhf16_core_avx512.S
+- x86: Improve svml_s_atanhf4_core_sse4.S
+- x86: Improve svml_s_atanhf8_core_avx2.S
+- x86: Improve svml_s_atanhf16_core_avx512.S
+- x86: Align varshift table to 32-bytes
+- x86: Add copyright to strpbrk-c.c
+
+* Thu Jun 09 2022 Florian Weimer <fweimer@redhat.com> - 2.35.9000-22
+- Auto-sync with upstream branch master,
+  commit ace9e3edbca62d978b1e8f392d8a5d78500272d9:
+- nss: handle stat failure in check_reload_and_get (BZ #28752)
+- nss: add assert to DB_LOOKUP_FCT (BZ #28752)
+- x86: Fix page cross case in rawmemchr-avx2 [BZ #29234]
+- nptl_db: disable DT_RELR on libthread_db.so
+- elf: add missing newlines in lateglobal test
+- nptl: Fix __libc_cleanup_pop_restore asynchronous restore (BZ#29214)
+- x86: ZERO_UPPER_VEC_REGISTERS_RETURN_XTEST expect no transactions
+- x86: Shrink code size of memchr-evex.S
+- x86: Shrink code size of memchr-avx2.S
+- x86: Optimize memrchr-avx2.S
+- x86: Optimize memrchr-evex.S
+- x86: Optimize memrchr-sse2.S
+- Benchtests: Improve memrchr benchmarks
+- x86: Add COND_VZEROUPPER that can replace vzeroupper if no `ret`
+- x86: Create header for VEC classes in x86 strings library
+- powerpc: Fix VSX register number on __strncpy_power9 [BZ #29197]
+- AArch64: Sort makefile entries
+- AArch64: Add SVE memcpy
+- x86_64: Add strstr function with 512-bit EVEX
+- scripts/glibcelf.py: Add PT_AARCH64_MEMTAG_MTE constant
+
+* Mon Jun 06 2022 Carlos O'Donell <carlos@redhat.com> - 2.35.9000-21
+- Auto-sync with upstream branch master,
+  commit 999835533bc60fbd0b0b65d2412a6742e5a54b9d:
+- socket: Fix mistyped define statement in socket/sys/socket.h (BZ #29225)
+- Declare timegm for ISO C2X
+- Add PT_AARCH64_MEMTAG_MTE from Linux 5.18 to elf.h
+- grep: egrep -> grep -E, fgrep -> grep -F
+- string.h: Fix boolean spelling in comments
+- elf: Add #include <errno.h> for use of E* constants.
+- elf: Add #include <sys/param.h> for MAX usage.
+- linux: Add process_mrelease
+- linux: Add process_madvise
+- linux: Set tst-pidfd-consts unsupported for kernels headers older than 5.10
+- testrun.sh: Support passing strace and valgrind arguments
+- Linux: Adjust struct rseq definition to current kernel version
+- iconv: Use 64 bit stat for gconv_parseconfdir (BZ# 29213)
+- catgets: Use 64 bit stat for __open_catalog (BZ# 29211)
+- inet: Use 64 bit stat for ruserpass (BZ# 29210)
+- socket: Use 64 bit stat for isfdtype (BZ# 29209)
+- posix: Use 64 bit stat for fpathconf (_PC_ASYNC_IO) (BZ# 29208)
+- posix: Use 64 bit stat for posix_fallocate fallback (BZ# 29207)
+- misc: Use 64 bit stat for getusershell (BZ# 29203)
+- misc: Use 64 bit stat for daemon (BZ# 29203)
+- linux: use statx for fstat if neither newfstatat nor fstatat64 is present
+- Add MADV_DONTNEED_LOCKED from Linux 5.18 to bits/mman-linux.h
+- Add HWCAP2_MTE3 from Linux 5.18 to AArch64 bits/hwcap.h
+- i686: Use generic sincosf implementation for SSE2 version
+- benchtests: Add workload name for sincosf
+- i686: Use generic sinf implementation for SSE2 version
+- i686: Use generic cosf implementation for SSE2 version
+- benchtests: Add workload name for cosf
+- x86_64: Optimize sincos where sin/cos is optimized (bug 29193)
+- manual: fix reference to source file
+- Add SOL_SMC from Linux 5.18 to bits/socket.h
+- elf: Remove _dl_skip_args
+- x86_64: Remove _dl_skip_args usage
+- sparc: Remove _dl_skip_args usage
+- sh: Remove _dl_skip_args usage
+- s390: Remove _dl_skip_args usage
+- riscv: Remove _dl_skip_args usage
+- nios2: Remove _dl_skip_args usage (BZ# 29187)
+- mips: Remove _dl_skip_args usage
+- microblaze: Remove _dl_skip_args usage
+- m68k: Remove _dl_skip_args usage
+- ia64: Remove _dl_skip_args usage
+- i686: Remove _dl_skip_args usage
+- hppa: Remove _dl_skip_args usage (BZ# 29165)
+- csky: Remove _dl_skip_args usage
+- arc: Remove _dl_skip_args usage
+- arm: Remove _dl_skip_args usage
+- alpha: Remove _dl_skip_args usage
+- benchtests: Improve benchtests for strstr, memmem, and memchr
+- dlsym: Make RTLD_NEXT prefer default version definition [BZ #14932]
+- x86-64: Ignore r_addend for R_X86_64_GLOB_DAT/R_X86_64_JUMP_SLOT
+- x86_64: Implement evex512 version of strlen, strnlen, wcslen and wcsnlen
+- Update kernel version to 5.18 in header constant tests
+- String: Improve overflow test coverage for strnlen
+
+* Thu May 26 2022 Arjun Shankar <arjun@redhat.com> - 2.35.9000-20
+- Auto-sync with upstream branch master,
+  commit 3d9926663cba19f40d26d8a8ab3b2a7cc09ffb13:
+- Update syscall-names.list for Linux 5.18
+- Fix deadlock when pthread_atfork handler calls pthread_atfork or dlclose
+- Use Linux 5.18 in build-many-glibcs.py
+- stdio-common: Simplify printf_unknown interface in vfprintf-internal.c
+- stdio-common: Move union printf_arg int <printf.h>
+- stdio-common: Add printf specifier registry to <printf.h>
+- elf/dl-reloc.c: Copyright The GNU Toolchain Authors
+- benchtests: Improve bench-strnlen.c
+- math: Add math-use-builtins-fabs (BZ#29027)
+- linux: Add CLONE_NEWTIME from Linux 5.6 to bits/sched.h
+- Revert "[ARM][BZ #17711] Fix extern protected data handling"
+- Revert "[AArch64][BZ #17711] Fix extern protected data handling"
+- elf: Rewrite long RESOLVE_MAP macro to an always_inline static function
+
+* Mon May 23 2022 DJ Delorie <dj@redhat.com> - 2.35.9000-19
+- Auto-sync with upstream branch master,
+  commit 748df8126ac69e68e0b94e236ea3c2e11b1176cb.
+- dlfcn: Move RTLD_DEFAULT/RTLD_NEXT outside __USE_GNU
+- elf: Optimize _dl_new_hash in dl-new-hash.h
+- nss: Optimize nss_hash in nss_hash.c
+- benchtests: Add benchtests for dl_elf_hash, dl_new_hash and nss_hash
+- nss: Add tests for the nss_hash in nss_hash.h
+- elf: Add tests for the dl hash funcs (_dl_new_hash and _dl_elf_hash)
+- elf: Refactor dl_new_hash so it can be tested / benchmarked
+- locale: Add more cached data to LC_CTYPE
+- locale: Remove private union from struct __locale_data
+- locale: Remove cleanup function pointer from struct __localedata
+- locale: Call _nl_unload_locale from _nl_archive_subfreeres
+- stdio-common: Add tst-memstream-string for open_memstream overflow
+- __printf_fphex always uses LC_NUMERIC
+- vfprintf: Consolidate some multibyte/wide character processing
+- vfprintf: Move argument processing into vfprintf-process-arg.c
+- stdio-common: Add tst-vfprintf-width-i18n to cover numeric field width
+- string.h: fix __fortified_attr_access macro call [BZ #29162]
+- Enable DT_RELR in glibc shared libraries and PIEs automatically
+- S390: Enable static PIE
+- linux: Add tst-pidfd.c
+- linux: Add P_PIDFD
+- linux: Add pidfd_send_signal
+- linux: Add pidfd_getfd
+- linux: Add pidfd_open
+- aarch64: Move ld.so _start to separate file and drop _dl_skip_args
+- linux: Add a getauxval test [BZ #23293]
+- rtld: Remove DL_ARGV_NOT_RELRO and make _dl_skip_args const
+- rtld: Use generic argv adjustment in ld.so [BZ #23293]
+- scripts/glibcelf.py: Add *T_RISCV_* constants
+- Remove dl-librecon.h header.
+- elf: Remove ldconfig kernel version check
+- Remove kernel version check
+- linux: Use /sys/devices/system/cpu on __get_nprocs_conf (BZ#28991)
+- csu: Implement and use _dl_early_allocate during static startup
+- Linux: Introduce __brk_call for invoking the brk system call
+- sys/cdefs.h: Do not require C++ compilers to define __STDC__
+- fortify: Ensure that __glibc_fortify condition is a constant [BZ #29141]
+- Update RISC-V specific ELF definitions
+
+* Mon May 16 2022 Arjun Shankar <arjun@redhat.com> - 2.35.9000-18
+- Auto-sync with upstream branch master,
+  commit 9403b71ae97e3f1a91c796ddcbb4e6f044434734:
+- x86_64: Remove bzero optimization
+- RISC-V: Use an autoconf template to produce `preconfigure'
+- MIPS: Use an autoconf template to produce `preconfigure'
+- m68k: Use an autoconf template to produce `preconfigure'
+- C-SKY: Use an autoconf template to produce `preconfigure'
+- Remove configure fno_unit_at_a_time
+- stdio: Remove the usage of $(fno-unit-at-a-time) for siglist.c
+- stdio: Remove the usage of $(fno-unit-at-a-time) for errlist.c
+- Add declare_object_symbol_alias for assembly codes (BZ #28128)
+- wcrtomb: Make behavior POSIX compliant
+
+* Tue May 10 2022 Patsy Griffin <patsy@redhat.com> - 2.35.9000-17
+- Auto-sync with upstream branch master,
+  commit 8162147872491bb5b48e91543b19c49a29ae6b6d.
+- nptl: Add backoff mechanism to spinlock loop
+- Linux: Implement a useful version of _startup_fatal
+- ia64: Always define IA64_USE_NEW_STUB as a flag macro
+- linux: Fix posix_spawn return code if clone fails (BZ#29109)
+- benchtests: Add wcrtomb microbenchmark
+- clock_settime/clock_gettime: Use __nonnull to avoid null pointer
+- clock_adjtime: Use __nonnull to avoid null pointer
+- ntp_xxxtimex: Use __nonnull to avoid null pointer
+- adjtimex/adjtimex64: Use __nonnull to avoid null pointer
+- hurd spawni: Fix reauthenticating closed fds
+- Linux: Define MMAP_CALL_INTERNAL
+- i386: Honor I386_USE_SYSENTER for 6-argument Linux system calls
+- i386: Remove OPTIMIZE_FOR_GCC_5 from Linux libc-do-syscall.S
+- manual: Clarify that abbreviations of long options are allowed
+
+* Tue May 03 2022 Florian Weimer <fweimer@redhat.com> - 2.35.9000-16
+- Auto-sync with upstream branch master,
+  commit 8e28aa3a51bf0ef3683f2aed4b5b448744897b66:
+- elf: Remove fallback to the start of DT_STRTAB for dladdr
+- powerpc32: Remove unused HAVE_PPC_SECURE_PLT
+- dlfcn: Implement the RTLD_DI_PHDR request type for dlinfo
+- manual: Document the dlinfo function
+- Do not use --hash-style=both for building glibc shared objects
+- benchtests: Better libmvec integration
+- benchtests: Add UNSUPPORTED benchmark status
+- linux: Fix fchmodat with AT_SYMLINK_NOFOLLOW for 64 bit time_t (BZ#29097)
+- Use __ehdr_start rather than _begin in _dl_start_final
+- sysdeps: Add 'get_fast_jitter' interace in fast-jitter.h
+- posix/glob.c: update from gnulib
+- benchtests: Add pthread-mutex-locks bench
+- linux: Fix missing internal 64 bit time_t stat usage
+- elf: Fix DFS sorting algorithm for LD_TRACE_LOADED_OBJECTS with missing libraries (BZ #28868)
+- posix: Remove unused definition on _Fork
+- NEWS: Mention DT_RELR support
+- elf: Add more DT_RELR tests
+- elf: Properly handle zero DT_RELA/DT_REL values
+- elf: Support DT_RELR relative relocation format [BZ #27924]
+- Add GLIBC_ABI_DT_RELR for DT_RELR support
+- elf: Define DT_RELR related macros and types
+- elf: Replace PI_STATIC_AND_HIDDEN with opposite HIDDEN_VAR_NEEDS_DYNAMIC_RELOC
+- i386: Regenerate ulps
+- dlfcn: Do not use rtld_active () to determine ld.so state (bug 29078)
+- INSTALL: Rephrase -with-default-link documentation
+
+* Mon Apr 25 2022 Carlos O'Donell <carlos@redhat.com> - 2.35.9000-15
+- Auto-sync with upstream branch master,
+  commit 1305edd42c44fee6f8660734d2dfa4911ec755d6:
+- elf: Move post-relocation code of _dl_start into _dl_start_final
+- misc: Fix rare fortify crash on wchar funcs. [BZ 29030]
+- elf: Remove unused enum allowmask
+- scripts/glibcelf.py: Mark as UNSUPPORTED on Python 3.5 and earlier
+- x86: Optimize {str|wcs}rchr-evex
+- x86: Optimize {str|wcs}rchr-avx2
+- x86: Optimize {str|wcs}rchr-sse2
+- benchtests: Improve bench-strrchr
+- x86-64: Fix SSE2 memcmp and SSSE3 memmove for x32
+- Default to --with-default-link=no (bug 25812)
+- scripts: Add glibcelf.py module
+- Add locale for syr_SY
+- elf: Move elf_dynamic_do_Rel RTLD_BOOTSTRAP branches outside
+- m68k: Handle fewer relocations for RTLD_BOOTSTRAP (#BZ29071)
+- nptl: Fix pthread_cancel cancelhandling atomic operations
+- x86: Fix missing __wmemcmp def for disable-multiarch build
+- elf: Remove __libc_init_secure
+
+* Tue Apr 19 2022 DJ Delorie <dj@redhat.com> - 2.35.9000-14
+- Auto-sync with upstream branch master,
+  commit 78fb88827362fbd2cc8aa32892ae5b015106e25c.
+- mips: Fix mips64n32 64 bit time_t stat support (BZ#29069)
+- x86: Cleanup page cross code in memcmp-avx2-movbe.S
+- x86: Remove memcmp-sse4.S
+- x86: Optimize memcmp SSE2 in memcmp.S
+- misc: Use 64 bit time_t interfaces on syslog
+- misc: syslog: Move SYSLOG_NAME to USE_MISC (BZ #16355)
+- misc: syslog: Use fixed-sized buffer and remove memstream
+- misc: syslog: Simplify implementation
+- misc: syslog: Fix indentation and style
+- misc: Add syslog test
+- support: Add xmkfifo
+- stdio: Split __get_errname definition from errlist.c
+- x86: Reduce code size of mem{move|pcpy|cpy}-ssse3
+- x86: Remove mem{move|cpy}-ssse3-back
+- x86: Remove str{p}{n}cpy-ssse3
+- x86: Remove str{n}cat-ssse3
+- x86: Remove str{n}{case}cmp-ssse3
+- x86: Remove {w}memcmp-ssse3
+- nptl: Handle spurious EINTR when thread cancellation is disabled (BZ#29029)
+- S390: Add new s390 platform z16.
+- Replace {u}int_fast{16|32} with {u}int32_t
+- stdlib: Reflow and sort most variable assignments
+- elf: Fix memory leak in _dl_find_object_update (bug 29062)
+- hurd: Define ELIBEXEC
+- hurd: Fix arbitrary error code
+- NEWS: Move PLT tracking slowdown to glibc 2.35.
+- Remove _dl_skip_args_internal declaration
+- test-container: Fix "unused code" warnings on HURD
+- Add .clang-format style file
+- manual: Avoid name collision in libm ULP table [BZ #28956]
+
+* Tue Apr 12 2022 Arjun Shankar <arjun@redhat.com> - 2.35.9000-13
+- Add entry for Tarifit language locale for Morocco, and
+- Auto-sync with upstream branch master,
+  commit 1a85970f41ea1e5abe6da2298a5e8fedcea26b70:
+- powerpc: Relocate stinfo->main
+- powerpc64: Set up thread register for _dl_relocate_static_pie
+- powerpc64: Use medium model toc accesses throughout
+- linux: Constify rfv variable in dl_vdso_vsym
+- string: Replace outdated comments in strlen().
+- S390: Fix elf/tst-audit25[ab]
+- sparc64: Remove fcopysign{f} implementation
+- alpha: Remove fcopysign{f} implementation
+- math: Use builtin for ldbl-96 copysign
+- ia64: Remove fcopysign{f} implementation
+- x86: Remove fcopysign{f} implementation
+- powerpc: Remove fcopysign{f} implementation
+- Add rif_MA locale [BZ #27781]
+- tests/string: Drop simple/stupid/builtin tests
+- test-memcpy: Actually reverse source and destination
+- benchtests: Only build libmvec benchmarks iff $(build-mathvec) is set
+
+* Tue Apr 05 2022 Florian Weimer <fweimer@redhat.com> - 2.35.9000-12
+- Auto-sync with upstream branch master,
+  commit 053fe273434056f551ed8f81daf750db9dab5931:
+- linux: Fix __closefrom_fallback iterates until max int (BZ#28993)
+- Remove -z combreloc and HAVE_Z_COMBRELOC
+- sparc: Remove s_abs implementations
+- ia64: Remove fabs implementations
+- x86: Remove fabs{f} implementation
+- alpha: Remove s_abs implementations
+- Allow for unpriviledged nested containers
+- Increase the test timeout of some string tests
+- realpath: Bring back GNU extension on ENOENT and EACCES [BZ #28996]
+- stdlib: Fix tst-getrandom memcmp call
+- stdlib: Fix tst-rand48.c printf types
+- elf: Remove unused functions from tst-audit25(a,b)
+- nptl: Use libc-diag.h with tst-thread-setspecific
+- crypt: Remove unused variable on cert test
+- elf: Remove unused variables in tests
+- elf: Fix wrong fscanf usage on tst-pldd
+- posix: Remove unused variable on tst-_Fork.c
+- resolv: Initialize loop variable on tst-resolv-trailing
+- locale: Remove set but unused variable on ld-collate.c
+- localedate: Fix printf type on tst_mbrtowc
+- localedata: Remove unused variables in tests
+- x86: Small improvements for wcslen
+- x86: Small improvements for wcscpy-ssse3
+- debug: Improve fdelt_chk error message
+- Add HWCAP2_AFP, HWCAP2_RPRES from Linux 5.17 to AArch64 bits/hwcap.h
+- x86: Remove AVX str{n}casecmp
+- x86: Add EVEX optimized str{n}casecmp
+- x86: Add AVX2 optimized str{n}casecmp
+- string: Expand page cross test cases in test-strncmp.c
+- string: Expand page cross test cases in test-strcmp.c
+- x86: Optimize str{n}casecmp TOLOWER logic in strcmp-sse42.S
+- x86: Optimize str{n}casecmp TOLOWER logic in strcmp.S
+- string: Expand page cross tests in test-strncasecmp.c
+- string: Expand page cross tests in test-strcasecmp.c
+- benchtests: Use json-lib in bench-strncasecmp.c
+- benchtests: Use json-lib in bench-strcasecmp.c
+- x86: Fix fallback for wcsncmp_avx2 in strcmp-avx2.S [BZ #28896]
+- x86: Remove strspn-sse2.S and use the generic implementation
+- x86: Remove strpbrk-sse2.S and use the generic implementation
+- x86: Remove strcspn-sse2.S and use the generic implementation
+- x86: Optimize strspn in strspn-c.c
+- x86: Optimize strcspn and strpbrk in strcspn-c.c
+- benchtests: Use json-lib in bench-strspn.c
+- benchtests: Use json-lib in bench-strpbrk.c
+- x86: Code cleanup in strchr-evex and comment justifying branch
+- x86: Code cleanup in strchr-avx2 and comment justifying branch
+- benchtests: Add random benchmark in bench-strchr.c
+- benchtests: Use json-lib in bench-strchr.c
+- Update kernel version to 5.17 in tst-mman-consts.py
+- iconvdata: Fix enum type on UTF-7
+- nscd: Remove unused variable
+- support: Fix support_process_state_wait path size calculation
+- support: Remove unused extract_8 function
+- locale: Remove ununsed wctype_table_get function
+- gmon: Remove unused sprofil.c functions
+- Update syscall lists for Linux 5.17
+- Fix ununsed fstatat64_time64_statx
+- malloc: Fix duplicate inline for do_set_mxfast
+- elf: Remove inline _dl_dprintf
+- configure.ac: fix bashisms in configure.ac
+- getaddrinfo: Refactor code for readability
+- Use Linux 5.17 in build-many-glibcs.py
+- resolv: Fix unaligned accesses to fields in HEADER struct
+- gai_init: Avoid jumping from if condition to its else counterpart
+- gaiconf_init: Refactor some bits for readability
+- gethosts: Return EAI_MEMORY on allocation failure
+- gaih_inet: Split result generation into its own function
+- gaih_inet: split loopback lookup into its own function
+- gaih_inet: make gethosts into a function
+- gaih_inet: separate nss lookup loop into its own function
+- gaih_inet: Split nscd lookup code into its own function.
+- gaih_inet: Split simple gethostbyname into its own function
+- gaih_inet: make numeric lookup a separate routine
+- gaih_inet: Simplify service resolution
+- getaddrinfo: Fix leak with AI_ALL [BZ #28852]
+- gaih_inet: Simplify canon name resolution
+- Simplify allocations and fix merge and continue actions [BZ #28931]
+- iconv: Add UTF-7-IMAP variant in utf-7.c
+- iconv: make utf-7.c able to use variants
+- iconv: Better mapping to RFC for UTF-7
+- iconv: Always encode "optional direct" UTF-7 characters
+- stdio-common: Add wide stream coverage to tst-vfprintf-user-type
+- libio: Flush-only _IO_str_overflow must not return EOF (bug 28949)
+- libio: Convert tst_swprintf to the test framework
+- scripts/dso-ordering-test.py: Fix C&P error in * callrefs processing
+- stdio-common: Generate ja_JP.EUC-JP locale
+- stdio-common: Re-flow and sort Makefile variables
+- nss: Sort tests and tests-container and put one test per line
+- benchtests: Use "=" instead of ":=" [BZ #28970]
+- hppa: Use END instead of PSEUDO_END in swapcontext.S
+
+* Tue Mar 15 2022 DJ Delorie <dj@redhat.com> - 2.35.9000-11
+- Auto-sync with upstream branch master,
+  commit d05e6dc8d1032e1732542a48e0fb895432008b6e.
+- hppa: Implement swapcontext in assembler (bug 28960)
+- associate a deallocator for iconv_open
+- associate a deallocation for opendir
+- Add access function attributes to epoll_wait
+- Add access function attributes to grp and shadow headers
+- Define ISO 639-3 "tok" [BZ #28950]
+- nss: Protect against errno changes in function lookup (bug 28953)
+- nss: Do not mention NSS test modules in <gnu/lib-names.h>
+- malloc: Exit early on test failure in tst-realloc
+- Add some missing access function attributes
+- libio: Ensure output buffer for wchars (bug #28828)
+- inet: Return EAI_MEMORY when nrl_domainname() fails to allocate memory
+- inet: Remove strdupa from nrl_domainname()
+- inet: Fix getnameinfo (NI_NOFQDN) race condition (BZ#28566)
+- benchtests: make compare_strings.py accept string as attribute value
+
+* Wed Mar 09 2022 Arjun Shankar <arjun@redhat.com> - 2.35.9000-10
+- Drop glibc-rh1070416.patch; nscd related, thus no longer relevant.
+
+* Tue Mar 08 2022 Arjun Shankar <arjun@redhat.com> - 2.35.9000-9
+- Auto-sync with upstream branch master,
+  commit 6de743a4e31a94e3d022e64a90c9082290a5a573:
+- x86_64: Fix code formatting of vectorized math functions
+- pthread: Do not overwrite tests-time64
+- x86_64: Fix svml_s_acosf16_core_avx512.S code formatting
+- i386: Remove libc-do-syscall from sysdep-dl-routines [BZ #28936]
+- linux/i386: remove dead assignment of sysdep-dl-routines
+
+* Tue Mar 08 2022 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.35.9000-8
+- Fix version check to accommodate gettext snapshot builds in rawhide.
+
+* Tue Mar 01 2022 Carlos O'Donell <carlos@redhat.com> - 2.35.9000-7
+- Auto-sync with upstream branch master,
+  commit 2bbc694df279020a6620096d31c1e05c93966f9b:
+- nptl: Fix cleanups for stack grows up [BZ# 28899]
+- manual: SA_ONSTACK is ignored without alternate stack
+- io: Add fsync call in tst-stat
+- Linux: Consolidate auxiliary vector parsing (redo)
+
+* Fri Feb 25 2022 Arjun Shankar <arjun@redhat.com> - 2.35.9000-6
+- Auto-sync with upstream branch master,
+  commit 1fe00d3eb602a0754873b536dc92fb6226759ee4:
+- build: Properly generate .d dependency files [BZ #28922]
+- benchtests: Generate .d dependency files [BZ #28922]
+- benchtests: Remove duplicated loop in bench-bzero-walk.c
+- localedata: Do not generate output if warnings were present.
+- localedef: Update LC_MONETARY handling (Bug 28845)
+- localedef: Handle symbolic links when generating locale-archive
+- benchtests: Add small sizes (<= 64) to bench-bzero-walk.c
+- math: Add more input to atanh accuracy tests
+- resolv: Fix tst-resolv tests for 2.35 ABIs and later
+- x86_64: Disable libmvec tests if multiarch not enabled [BZ# 28869]
+- benchtests: Add benches for memset with 0 value
+- i686: Remove bzero optimizations
+- s390: Remove bzero optimizations
+- powerpc: Remove powerpc64 bzero optimizations
+- powerpc: Remove powerpc32 bzero optimizations
+- sparc: Remove bzero optimization
+- ia64: Remove bzero optimization
+- alpha: Remove bzero optimization
+- x86_64: Remove bcopy optimizations
+- i386: Remove bcopy optimizations
+- powerpc: Remove bcopy optimizations
+- ia64: Remove bcopy
+- hppa: Fix warnings from _dl_lookup_address
+- hppa: Revise gettext trampoline design
+
+* Wed Feb 23 2022 Carlos O'Donell <carlos@redhat.com> - 2.35.9000-5
+- Fix locale-archive generation (#2057697)
+
+* Tue Feb 22 2022 Carlos O'Donell <carlos@redhat.com> - 2.35.9000-4
+- Auto-sync with upstream branch master,
+  commit fdc1ae67fef27eea1445bab4bdfe2f0fb3bc7aa1:
+- Add SOL_MPTCP, SOL_MCTP from Linux 5.16 to bits/socket.h
+- elf: Check invalid hole in PT_LOAD segments [BZ #28838]
+- realpath: Do not copy result on failure (BZ #28815)
+- x86: Fix TEST_NAME to make it a string in tst-strncmp-rtm.c
+- x86: Test wcscmp RTM in the wcsncmp overflow case [BZ #28896]
+- hppa: Fix swapcontext
+- x86: Fallback {str|wcs}cmp RTM in the ncmp overflow case [BZ #28896]
+- string: Add a testcase for wcsncmp with SIZE_MAX [BZ #28755]
+- microblaze: Use the correct select syscall (BZ #28883)
+- Update kernel version to 5.16 in tst-mman-consts.py
+- pthread: Use 64 bit time_t stat internally for sem_open (BZ #28880)
+- x86: Fix bug in strncmp-evex and strncmp-avx2 [BZ #28895]
+- String: Strength memset tests in test-memset.c
+- x86-64: Define __memcmpeq in ld.so
+- htl: Destroy thread-specific data before releasing joins
+- htl: Fix initializing the key lock
+- mach: Fix LLL_SHARED value
+- htl: Make pthread_[gs]etspecific not check for key validity
+- x86-64: Remove bzero weak alias in SS2 memset
+- hppa: Fix typo
+- linux: Use socket-constants-time64.h on tst-socket-timestamp-compat
+- x86/configure.ac: Define PI_STATIC_AND_HIDDEN/SUPPORT_STATIC_PIE
+- Fix elf/tst-audit2 on hppa
+- x86: Use CHECK_FEATURE_PRESENT on PCONFIG
+- x86: Don't check PTWRITE in tst-cpu-features-cpuinfo.c
+- x86: Set .text section in memset-vec-unaligned-erms
+- Linux: Include <dl-auxv.h> in dl-sysdep.c only for SHARED
+- Revert "Linux: Consolidate auxiliary vector parsing"
+- String: Ensure 'MIN_PAGE_SIZE' is multiple of 'getpagesize'
+- Use binutils 2.38 branch in build-many-glibcs.py
+- elf: Remove LD_USE_LOAD_BIAS
+- malloc: Remove LD_TRACE_PRELINKING usage from mtrace
+- elf: Remove prelink support
+- Linux: Consolidate auxiliary vector parsing
+- Linux: Assume that NEED_DL_SYSINFO_DSO is always defined
+- Linux: Remove DL_FIND_ARG_COMPONENTS
+- Linux: Remove HAVE_AUX_SECURE, HAVE_AUX_XID, HAVE_AUX_PAGESIZE
+- elf: Merge dl-sysdep.c into the Linux version
+- hppa: Fix bind-now audit (BZ #28857)
+
+* Tue Feb 15 2022 Arjun Shankar <arjun@redhat.com> - 2.35.9000-3
+- Reduce installed size of some langpacks by de-duplicating LC_CTYPE
+
+* Thu Feb 10 2022 Arjun Shankar <arjun@redhat.com> - 2.35.9000-2
+- Drop glibc-fedora-localedef.patch and adjust locale installation
+  accordingly so that installed content remains unchanged.
+
+* Wed Feb 09 2022 Florian Weimer <fweimer@redhat.com> - 2.35.9000-1
+- Auto-sync with upstream branch master,
+  commit 3d9f171bfb5325bd5f427e9fc386453358c6e840:
+- x86-64: Optimize bzero
+- benchtests: Add benches for bzero
+- linux: fix accuracy of get_nprocs and get_nprocs_conf [BZ #28865]
+- x86: Remove SSSE3 instruction for broadcast in memset.S (SSE2 Only)
+- benchtests: Sort benches in Makefile
+- Benchtests: Add length zero benchmark for memset in bench-memset.c
+- x86: Improve vec generation in memset-vec-unaligned-erms.S
+- x86-64: Add vector tan/tanf to libmvec microbenchmark
+- x86-64: Add vector erfc/erfcf to libmvec microbenchmark
+- x86-64: Add vector asinh/asinhf to libmvec microbenchmark
+- x86-64: Add vector tanh/tanhf to libmvec microbenchmark
+- x86-64: Add vector erf/erff to libmvec microbenchmark
+- x86-64: Add vector acosh/acoshf to libmvec microbenchmark
+- x86-64: Add vector atanh/atanhf to libmvec microbenchmark
+- x86-64: Add vector log1p/log1pf to libmvec microbenchmark
+- x86-64: Add vector log2/log2f to libmvec microbenchmark
+- x86-64: Add vector log10/log10f to libmvec microbenchmark
+- x86-64: Add vector atan2/atan2f to libmvec microbenchmark
+- x86-64: Add vector cbrt/cbrtf to libmvec microbenchmark
+- x86-64: Add vector sinh/sinhf to libmvec microbenchmark
+- x86-64: Add vector expm1/expm1f to libmvec microbenchmark
+- x86-64: Add vector cosh/coshf to libmvec microbenchmark
+- x86-64: Add vector exp10/exp10f to libmvec microbenchmark
+- x86-64: Add vector exp2/exp2f to libmvec microbenchmark
+- x86-64: Add vector hypot/hypotf to libmvec microbenchmark
+- x86-64: Add vector asin/asinf to libmvec microbenchmark
+- x86-64: Add vector atan/atanf to libmvec microbenchmark
+- elf: Replace tst-audit24bmod2.so with tst-audit24bmod2
+- x86_64/multiarch: Sort sysdep_routines and put one entry per line
+- string: Sort headers, routines, tests and tests-translation
+- x86: Improve L to support L(XXX_SYMBOL (YYY, ZZZ))
+- Benchtests: move 'alloc_bufs' from loop in bench-memset.c
+- x86-64: Fix strcmp-evex.S
+- x86-64: Fix strcmp-avx2.S
+- x86-64: Add vector acos/acosf to libmvec microbenchmark
+- benchtests: Add more coverage for strcmp and strncmp benchmarks
+- x86: Optimize strcmp-evex.S
+- x86: Optimize strcmp-avx2.S
+- string: Improve coverage in test-strcmp.c and test-strncmp.c
+- string/test-str*cmp: remove stupid_[strcmp, strncmp, wcscmp, wcsncmp].
+- Open master branch for glibc 2.36 development
+
+* Tue Feb 08 2022 Florian Weimer <fweimer@redhat.com> - 2.35-2
+- Auto-sync with upstream branch release/2.35/master,
+  commit 24962427071fa532c3c48c918e9d64d719cc8a6c:
+- Add BZ#28860 reference on NEWS
+- linux: Fix missing __convert_scm_timestamps (BZ #28860)
+
+* Thu Feb 03 2022 Florian Weimer <fweimer@redhat.com> - 2.35-1
+- glibc 2.35 upstream release
+- Auto-sync with upstream branch release/2.35/master,
+  commit a2f1675634b3513c09c38e55e6766e8c05768b1f:
+- linux: __get_nprocs_sched: do not feed CPU_COUNT_S with garbage [BZ #28850]
+- posix: Fix tst-spawn6 terminal handling (BZ #28853)
+- Regenerate configure
+- Create ChangeLog.old/ChangeLog.24.
+- Prepare for glibc 2.35 release.
+- Regenerate configure.
+- Update install.texi, and regenerate INSTALL.
+- Update NEWS bug list.
+- Update NEWS.
+- Update translations.
+- Linux: Use ptrdiff_t for __rseq_offset
+- Fix elf/tst-audit25a with default bind now toolchains
+- posix: Replace posix_spawnattr_tc{get,set}pgrp_np with posix_spawn_file_actions_addtcsetpgrp_np
+- or1k: Define PI_STATIC_AND_HIDDEN
+- SET_RELHOOK: merge i386 and x86_64, and move to sysdeps/mach/hurd/x86
+- elf: Fix runtime linker auditing on aarch64 (BZ #26643)
+- elf: Issue la_symbind for bind-now (BZ #23734)
+- elf: Fix initial-exec TLS access on audit modules (BZ #28096)
+- elf: Add la_activity during application exit
+- localedata: Adjust C.UTF-8 to align with C/POSIX.
+- localedef: Fix handling of empty mon_decimal_point (Bug 28847)
+- malloc: Fix tst-mallocalign1 macro spacing.
+
+* Tue Feb 01 2022 Florian Weimer <fweimer@redhat.com> - 2.34.9000-39
+- Drop glibc-temp-Wno-use-after-free.patch, fixed upstream.
+- Auto-sync with upstream branch master,
+  commit 3fb18fd80c5900cc82748f3320b30516c57d24da:
+- elf: Add <dl-r_debug.h>
+- Mention _FORTIFY_SOURCE=3 for gcc12 in NEWS
+- malloc: Fix -Wuse-after-free warning in tst-mallocalign1 [BZ #26779]
+- Update libc.pot for 2.35 release.
+- tst-socket-timestamp-compat.c: Check __TIMESIZE [BZ #28837]
+- Add prelink removal plan on NEWS
+- Linux: Only generate 64 bit timestamps for 64 bit time_t recvmsg/recvmmsg
+- linux: Fix ancillary 64-bit time timestamp conversion (BZ #28349, BZ#28350)
+- support: Add support_socket_so_timestamp_time64
+- Fix elf/loadfail test build dependencies
+- Fix glibc 2.34 ABI omission (missing GLIBC_2.34 in dynamic loader)
+- x86: Use CHECK_FEATURE_PRESENT to check HLE [BZ #27398]
+- Guard tst-valgrind-smoke.out with run-built-tests
+- hurd: Add posix_spawnattr_tc{get,set}pgrp_np on libc.abilist
+- Avoid -Wuse-after-free in tests [BZ #26779].
+- elf: Replace tst-p_alignmod1-editX with a python script
+- stdlib: Avoid -Wuse-after-free in __add_to_environ [BZ #26779]
+- io: Fix use-after-free in ftw [BZ #26779]
+- intl: Avoid -Wuse-after-free [BZ #26779]
+- elf: Fix use-after-free in ldconfig [BZ #26779]
+- posix: Add terminal control setting support for posix_spawn
+
+* Mon Jan 24 2022 DJ Delorie <dj@redhat.com> - 2.34.9000-38
+- Auto-sync with upstream branch master,
+  commit 5b8e7980c5dabd9aaefeba4f0208baa8cf7653ee.
+- Linux: Detect user namespace support in io/tst-getcwd-smallbuff
+- Fix handling of unterminated bracket expressions in fnmatch (bug 28792)
+- realpath: Avoid overwriting preexisting error (CVE-2021-3998)
+- elf: Add a test for PT_LOAD segments with invalid p_align [BZ #28688]
+- elf: Add a test for PT_LOAD segments with p_align == 1 [BZ #28688]
+- elf: Add a test for PT_LOAD segments with mixed p_align [BZ #28676]
+- Add and use link-test-modules-rpath-link [BZ #28455]
+- tst-realpath-toolong: Fix hurd build
+- getcwd: Set errno to ERANGE for size == 1 (CVE-2021-3999)
+- Add valgrind smoke test
+- htl: Fix cleaning the reply port
+- elf: Properly align all PT_LOAD segments [BZ #28676]
+- realpath: Set errno to ENAMETOOLONG for result larger than PATH_MAX [BZ #28770]
+- support: Add helpers to create paths longer than PATH_MAX
+- nptl: Effectively skip CAS in spinlock loop
+- mips: Move DT_MIPS into <ldsodefs.h>
+- x86_64: Document libmvec vector functions accuracy [BZ #28766]
+- x86: Black list more Intel CPUs for TSX [BZ #27398]
+- elf: Fix tst-align3
+- elf: Move _dl_setup_hash to its own file
+- htl: Fix build error in annexc
+- elf: Reinstate tst-audit17
+- x86: use default cache size if it cannot be determined [BZ #28784]
+- rt/tst-mqueue*: Return UNSUPPORTED when mq_open fails with ENOSYS
+- Linux: Add epoll_pwait2 (BZ #27359)
+- Properly handle --disable-default-pie [BZ #28780]
+- elf: Fix 64 time_t support for installed statically binaries
+- Revert "elf: Fix 64 time_t support for installed statically binaries"
+- CVE-2022-23218: Buffer overflow in sunrpc svcunix_create (bug 28768)
+- sunrpc: Test case for clnt_create "unix" buffer overflow (bug 22542)
+- CVE-2022-23219: Buffer overflow in sunrpc clnt_create for "unix" (bug 22542)
+- socket: Add the __sockaddr_un_set function
+- elf/tst-dl_find_object: Disable subtests for non-contiguous maps (bug 28732)
+- elf: Set l_contiguous to 1 for the main map in more cases
+- elf: Introduce rtld_setup_main_map
+- hurd: Make RPC input array parameters const
+- hurd: optimize exec cleanup
+- hurd: Add __rtld_execve
+- hurd: Fix exec() leak on proc_task2proc failure
+- htl: Hide __pthread_attr's __schedparam type [BZ #23088]
+- htl: Clear kernel_thread field before releasing the thread structure
+- hurd: drop SA_SIGINFO availability xfail
+- hurd: Fix timer/clock_getres crash on NULL res parameter
+- hurd: Fix pthread_kill on exiting/ted thread
+- [hurd] Drop spurious #ifdef SHARED
+- [hurd] Call _dl_sort_maps_init in _dl_sysdep_start
+- elf tst-dl_find_object: Fix typo
+- s390x: Use <gcc-macros.h> in early HWCAP check
+- x86: Add x86-64-vN check to early startup
+- powerpc64le: Use <gcc-macros.h> in early HWCAP check
+- Add --with-rtld-early-cflags configure option
+- elf: Split dl-printf.c from dl-misc.c
+- elf/Makefile: Reflow and sort most variable assignments
+- Generate gcc-macros.h
+- x86: HAVE_X86_LAHF_SAHF, HAVE_X86_MOVBE and -march=x86-64-vN (bug 28782)
+- math: Add more inputs to atan2 accuracy tests [BZ #28765]
+- Disable debuginfod in printer tests [BZ #28757]
+- Update syscall lists for Linux 5.16
+- i386: Remove broken CAN_USE_REGISTER_ASM_EBP (bug 28771)
+- stdlib: Fix formatting of tests list in Makefile
+- stdlib: Sort tests in Makefile
+- x86_64: Fix SSE4.2 libmvec atan2 function accuracy [BZ #28765]
+- debug: Synchronize feature guards in fortified functions [BZ #28746]
+- debug: Autogenerate _FORTIFY_SOURCE tests
+- Do not build libresolv module with 64 bit time_t flags
+- Revert "linux: Fix ancillary 64-bit time timestamp conversion (BZ #28349, BZ #28350)"
+- Revert "support: Add support_socket_so_timestamp_time64"
+- timezone: Fix tst-bz28707 Makefile rule
+- linux: Fix ancillary 64-bit time timestamp conversion (BZ #28349, BZ #28350)
+- support: Add support_socket_so_timestamp_time64
+- elf: Fix 64 time_t support for installed statically binaries
+- Enable _FORTIFY_SOURCE=3 for gcc 12 and above
+- manual: Drop obsolete @refill
+- aarch64: Add HWCAP2_ECV from Linux 5.16
+- Use Linux 5.16 in build-many-glibcs.py
+- x86: Fix __wcsncmp_evex in strcmp-evex.S [BZ# 28755]
+- x86: Fix __wcsncmp_avx2 in strcmp-avx2.S [BZ# 28755]
+- math: Fix float conversion regressions with gcc-12 [BZ #28713]
+- elf: Simplify software TM implementation in _dl_find_object
+- Restore ENTRY_POINT definition on hppa, ia64 (bug 28749)
+- elf: Fix fences in _dl_find_object_update (bug 28745)
+- ttydefaults.h: Fix CSTATUS to control-t
+- AArch64: Check for SVE in ifuncs [BZ #28744]
+- debug: Remove catchsegv and libSegfault (BZ #14913)
+- Documentation for OpenRISC port
+- build-many-glibcs.py: add OpenRISC support
+- or1k: Build Infrastructure
+- or1k: ABI lists
+- or1k: Linux ABI
+- or1k: Linux Syscall Interface
+- or1k: math soft float support
+- or1k: Atomics and Locking primitives
+- or1k: Thread Local Storage support
+- or1k: startup and dynamic linking code
+- or1k: ABI Implementation
+- linux/syscalls: Add or1k_atomic syscall for OpenRISC
+- elf: Add reloc for OpenRISC
+- elf: Add a comment after trailing backslashes
+- elf: Also try DT_RUNPATH for LD_AUDIT dlopen [BZ #28455]
+- elf: Fix tst-linkall-static link when pthread is not in libc
+
+* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.34.9000-37
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
+* Tue Jan 04 2022 Florian Weimer <fweimer@redhat.com> - 2.34.9000-36
+- Auto-sync with upstream branch master,
+  commit 28713c06129f8f64f88c423266e6ff2880216509:
+- elf: Sort tests and modules-names
+- hurd: nuke all unknown ports on exec
+- hurd: Fix auth port leak
+- Remove stale reference to libanl.a
+- elf: Add <dl-debug.h>
+- Properly check linker option in LIBC_LINKER_FEATURE [BZ #28738]
+- hurd: Implement _S_msg_get_dtable
+- Update automatically-generated copyright dates
+- Sync move-if-change from Gnulib, updating copyright
+- Update copyright dates not handled by scripts/update-copyrights.
+- Update copyright dates with scripts/update-copyrights
+- hurd: Use __trivfs_server_name instead of trivfs_server_name
+- hurd: Bump BRK_START to 0x20000000
+- hurd: Avoid overzealous shared objects constraints
+- time: Refactor timesize.h for some ABIs
+- hurd: Make getrandom a stub inside the random translator
+- open64: Force O_LARGEFILE on all architectures
+- x86-64: Add vector tan/tanf implementation to libmvec
+- x86-64: Add vector erfc/erfcf implementation to libmvec
+- resolv: Do not install libanl.so symbolic link
+- resolv: Do not build libanl.so for ABIs starting at 2.35
+- timezone: test-case for BZ #28707
+- timezone: handle truncated timezones from tzcode-2021d and later (BZ #28707)
+- x86-64: Add vector asinh/asinhf implementation to libmvec
+- x86-64: Add vector tanh/tanhf implementation to libmvec
+- x86-64: Add vector erf/erff implementation to libmvec
+- x86-64: Add vector acosh/acoshf implementation to libmvec
+- x86-64: Add vector atanh/atanhf implementation to libmvec
+- x86-64: Add vector log1p/log1pf implementation to libmvec
+- x86-64: Add vector log2/log2f implementation to libmvec
+- x86-64: Add vector log10/log10f implementation to libmvec
+- x86-64: Add vector atan2/atan2f implementation to libmvec
+- x86-64: Add vector cbrt/cbrtf implementation to libmvec
+- x86-64: Add vector sinh/sinhf implementation to libmvec
+- x86-64: Add vector expm1/expm1f implementation to libmvec
+- x86-64: Add vector cosh/coshf implementation to libmvec
+- x86-64: Add vector exp10/exp10f implementation to libmvec
+- x86-64: Add vector exp2/exp2f implementation to libmvec
+- x86-64: Add vector hypot/hypotf implementation to libmvec
+- x86-64: Add vector asin/asinf implementation to libmvec
+- x86-64: Add vector atan/atanf implementation to libmvec
+
+* Wed Dec 29 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-35
+- Auto-sync with upstream branch master,
+  commit 5d28a8962dcb6ec056b81d730e3c6fb57185a210:
+- elf: Add _dl_find_object function
+- malloc: Remove memusage.h
+- malloc: Use hp-timing on libmemusage
+- Remove atomic-machine.h atomic typedefs
+- malloc: Remove atomic_* usage
+- microblaze: Add missing implementation when !__ASSUME_TIME64_SYSCALLS
+- elf: Do not fail for failed dlmopen on audit modules (BZ #28061)
+- elf: Issue audit la_objopen for vDSO
+- elf: Add audit tests for modules with TLSDESC
+- elf: Avoid unnecessary slowdown from profiling with audit (BZ#15533)
+- elf: Add _dl_audit_pltexit
+- elf: Add _dl_audit_pltenter
+- elf: Add _dl_audit_preinit
+- elf: Add _dl_audit_symbind_alt and _dl_audit_symbind
+- elf: Add _dl_audit_objclose
+- elf: Add _dl_audit_objsearch
+- elf: Add _dl_audit_activity_map and _dl_audit_activity_nsid
+- elf: Add _dl_audit_objopen
+- hurd: Fix static-PIE startup
+- hurd: let csu initialize tls
+- hurd: Fix XFAIL-ing mallocfork2 tests
+- hurd: XFAIL more tests that require setpshared support
+- malloc: Add missing shared thread library flags
+- stdio-common: Fix %m sprintf test output for GNU/Hurd
+- x86: Optimize L(less_vec) case in memcmpeq-evex.S
+- x86: Optimize L(less_vec) case in memcmp-evex-movbe.S
+- elf: Remove AArch64 from comment for AT_MINSIGSTKSZ
+- math: Properly cast X_TLOSS to float [BZ #28713]
+- Set default __TIMESIZE default to 64
+- stdio: Implement %#m for vfprintf and related functions
+- elf: Remove unused NEED_DL_BASE_ADDR and _dl_base_addr
+- x86-64: Add vector acos/acosf implementation to libmvec
+- intl/plural.y: Avoid conflicting declarations of yyerror and yylex
+- elf: Remove excessive p_align check on PT_LOAD segments [BZ #28688]
+- s_sincosf.h: Change pio4 type to float [BZ #28713]
+- Linux: Fix 32-bit vDSO for clock_gettime on powerpc32
+- Regenerate ulps on x86_64 with GCC 12
+- Add ARPHRD_CAN, ARPHRD_MCTP to net/if_arp.h
+- Remove ununsed tcb-offset
+- riscv: align stack before calling _dl_init [BZ #28703]
+- riscv: align stack in clone [BZ #28702]
+- elf: Fix tst-cpu-features-cpuinfo for KVM guests on some AMD systems [BZ #28704]
+- powerpc64[le]: Allocate extra stack frame on syscall.S
+- Update copyright header in recently merged ab_GE locale
+- fortify: Fix spurious warning with realpath
+
+* Tue Dec 28 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-34
+- armhfp, i686: Revert 64-bit time_t/off_t for internal use (#2034715)
+
+* Fri Dec 17 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-33
+- Auto-sync with upstream branch master,
+  commit b99b0f93ee8762fe53ff65802deb6f00700b9924:
+- nss: Use "files dns" as the default for the hosts database (#2033020)
+- arm: Guard ucontext _rtld_global_ro access by SHARED, not PIC macro
+- Fix The GNU ToolChain Authors copyright notice
+- Remove upper limit on tunable MALLOC_MMAP_THRESHOLD
+- localedata: add new locale ab_GE
+- Fix __minimal_malloc segfaults in __mmap due to stack-protector
+- __glibc_unsafe_len: Fix comment
+- malloc: Enable huge page support on main arena
+- malloc: Move MORECORE fallback mmap to sysmalloc_mmap_fallback
+- malloc: Add Huge Page support to arenas
+- malloc: Add Huge Page support for mmap
+- malloc: Move mmap logic to its own function
+- malloc: Add THP/madvise support for sbrk
+- malloc: Add madvise support for Transparent Huge Pages
+- powerpc: Use global register variable in <thread_pointer.h>
+- Use LFS and 64 bit time for installed programs (swbz#15333)
+
+* Wed Dec 15 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-32
+- Do not use --enable-static-pie configure flag since it is now ignored
+
+* Wed Dec 15 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-31
+- Drop glibc-fedora-revert-PT_LOAD-segment-align.patch; fix applied upstream
+- Auto-sync with upstream branch master,
+  commit 4435c29892c43ae9908a42e591747be63102689b:
+- Support target specific ALIGN for variable alignment test [BZ #28676]
+- NEWS: Document LD_PREFER_MAP_32BIT_EXEC as x86-64 only
+- elf: Align argument of __munmap to page size [BZ #28676]
+
+* Tue Dec 14 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-30
+- Add glibc-fedora-revert-PT_LOAD-segment-align.patch to revert upstream
+  commits 718fdd87b1b9 and fc2334ab32e0.
+- Auto-sync with upstream branch master,
+  commit 0884724a95b60452ad483dbe086d237d02ba624d:
+- intl: Emit no lines in bison generated files
+- hurd: Do not set PIE_UNSUPPORTED
+- NEWS: Move LD_PREFER_MAP_32BIT_EXEC
+- mach: Fix spurious inclusion of stack_chk_fail_local in libmachuser.a
+- Disable DT_RUNPATH on NSS tests [BZ #28455]
+- sysdeps: Simplify sin Taylor Series calculation
+- math: Remove the error handling wrapper from hypot and hypotf
+- math: Use fmin/fmax on hypot
+- aarch64: Add math-use-builtins-f{max,min}.h
+- math: Add math-use-builtinds-fmin.h
+- math: Add math-use-builtinds-fmax.h
+- math: Remove powerpc e_hypot
+- i386: Move hypot implementation to C
+- math: Use an improved algorithm for hypotl (ldbl-128)
+- math: Use an improved algorithm for hypotl (ldbl-96)
+- math: Improve hypot performance with FMA
+- math: Use an improved algorithm for hypot (dbl-64)
+- math: Simplify hypotf implementation
+- Cleanup encoding in comments
+- Replace --enable-static-pie with --disable-default-pie
+- hurd: Add rules for static PIE build
+- hurd: Fix gmon-static
+- x86-64: Remove LD_PREFER_MAP_32BIT_EXEC support [BZ #28656]
+- elf: Use errcode instead of (unset) errno in rtld_chain_load
+- Add a testcase to check alignment of PT_LOAD segment [BZ #28676]
+- elf: Properly align PT_LOAD segments [BZ #28676]
+- elf: Install a symbolic link to ld.so as /usr/bin/ld.so
+- nptl: Add one more barrier to nptl/tst-create1
+- Remove TLS_TCB_ALIGN and TLS_INIT_TCB_ALIGN
+- nptl: rseq failure after registration on main thread is fatal
+- nptl: Add public rseq symbols and <sys/rseq.h>
+- nptl: Add glibc.pthread.rseq tunable to control rseq registration
+- Linux: Use rseq to accelerate sched_getcpu
+- nptl: Add rseq registration
+- nptl: Introduce THREAD_GETMEM_VOLATILE
+- nptl: Introduce <tcb-access.h> for THREAD_* accessors
+- nptl: Add <thread_pointer.h> for defining __thread_pointer
+- String: test-memcpy used unaligned types for buffers [BZ 28572]
+- localedef: check magic value on archive load [BZ #28650]
+- x86: Don't set Prefer_No_AVX512 for processors with AVX512 and AVX-VNNI
+- linux: Add generic ioctl implementation
+- linux: Add generic syscall implementation
+- misc, nptl: Remove stray references to __condvar_load_64_relaxed
+- csu: Always use __executable_start in gmon-start.c
+- elf: execve statically linked programs instead of crashing [BZ #28648]
+- Add --with-timeoutfactor=NUM to specify TIMEOUTFACTOR
+
+* Mon Dec 13 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-29
+- Remove nscd (#1905142)
+  https://fedoraproject.org/wiki/Changes/RemoveNSCD
+
+* Fri Dec 10 2021 Pavel Březina <pbrezina@redhat.com> - 2.34.9000-28
+- /etc/nsswitch.conf is now owned by authselect (rhbz#2023741)
+
+* Thu Dec 09 2021 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.34.9000-27
+- Set BuildFlagsNonshared only if _annotated_build is set.
+
+* Sat Dec 04 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-26
+- Drop glibc-rh2026399.patch, not needed anymore due to upstream fix.
+- Auto-sync with upstream branch master,
+  commit 4df1fa6ddc8925a75f3da644d5da3bb16eb33f02:
+- x86-64: Use notl in EVEX strcmp (#2026399)
+- nptl: Increase default TCB alignment to 32
+- elf: add definition for ELF_NOTE_FDO and NT_FDO_PACKAGING_METADATA note
+- AArch64: Improve A64FX memcpy
+- AArch64: Optimize memcmp
+- powerpc64[le]: Fix CFI and LR save address for asm syscalls [BZ #28532]
+- linux: Implement pipe in terms of __NR_pipe2
+- linux: Implement mremap in C
+- linux: Add prlimit64 C implementation
+- elf: Include <stdbool.h> in tst-tls20.c
+- elf: Include <stdint.h> in tst-tls20.c
+- hurd: Let report-wait use a weak reference to _hurd_itimer_thread
+
+* Sat Dec  4 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-25
+- x86_64: Disable additional EVEX string functions (#2026399)
+
+* Fri Dec  3 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-24
+- x86_64: Disable EVEX *cmp* string functions (#2026399)
+
+* Thu Dec  2 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-23
+- Drop glibc-sdt-headers.patch; the official systemtap headers work again.
+
+* Thu Nov 25 2021 Carlos O'Donell <carlos@redhat.com> - 2.34.9000-22
+- Auto-sync with upstream branch master,
+  commit 137ed5ac440a4d3cf4178ce97f349b349a9c2c66:
+- linux: Use /proc/stat fallback for __get_nprocs_conf (BZ #28624)
+- linux: Add fanotify_mark C implementation
+- linux: Only build fstatat fallback if required
+- regex: fix buffer read overrun in search [BZ#28470]
+- x86-64: Add vector sin/sinf to libmvec microbenchmark
+- x86-64: Add vector pow/powf to libmvec microbenchmark
+- x86-64: Add vector log/logf to libmvec microbenchmark
+- x86-64: Add vector exp/expf to libmvec microbenchmark
+- x86-64: Add vector cos/cosf to libmvec microbenchmark
+- io: Refactor close_range and closefrom
+- nptl: Do not set signal mask on second setjmp return [BZ #28607]
+- powerpc: Define USE_PPC64_NOTOC iff compiler supports it
+- setjmp: Replace jmp_buf-macros.h with jmp_buf-macros.sym
+- Update kernel version to 5.15 in tst-mman-consts.py
+- socket: Do not use AF_NETLINK in __opensock
+- elf: Move la_activity (LA_ACT_ADD) after _dl_add_to_namespace_list() (BZ #28062)
+- Add PF_MCTP, AF_MCTP from Linux 5.15 to bits/socket.h
+- malloc: Fix malloc debug for 2.35 onwards
+- elf: Introduce GLRO (dl_libc_freeres), called from __libc_freeres
+- nptl: Extract <bits/atomic_wide_counter.h> from pthread_cond_common.c
+
+* Wed Nov 17 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-21
+- Temporary patch glibc-sdt-headers.patch, to fix s390x build failure.
+- Temporary patch glibc-dso-sort-makefile-fail.patch, to fix x86_64 build.
+- Auto-sync with upstream branch master,
+  commit a43c0b5483da4c5e3796af309864cb44256c02db:
+- x86-64: Create microbenchmark infrastructure for libmvec
+- elf: hidden visibility for __minimal_malloc functions
+- elf: Use a temporary file to generate Makefile fragments [BZ #28550]
+- dso-ordering-test.py: Put all sources in one directory [BZ #28550]
+- elf: Move LAV_CURRENT to link_lavcurrent.h
+- Move assignment out of the CAS condition
+- Add a comment for --enable-initfini-array [BZ #27945]
+- tst-tzset: output reason when creating 4GiB file fails
+- Add LLL_MUTEX_READ_LOCK [BZ #28537]
+- Avoid extra load with CAS in __pthread_mutex_clocklock_common [BZ #28537]
+- Avoid extra load with CAS in __pthread_mutex_lock_full [BZ #28537]
+- String: Split memcpy tests so that parallel build is faster
+- x86: Shrink memcmp-sse4.S code size
+- Support C2X printf %b, %B
+- Update syscall lists for Linux 5.15
+- s390: Use long branches across object boundaries (jgh instead of jh)
+
+* Tue Nov 16 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-20
+- Create /{bin,lib,lib64,sbin} as symbolic links in test-container
+
+* Wed Nov 10 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-19
+- Auto-sync with upstream branch master,
+  commit 0bd356df1afb0591470499813d4ebae9bcedd6a6:
+- Remove the unused +mkdep/+make-deps/s-proto.S/s-proto-cancel.S
+- Fix build a chec failures after b05fae4d8e34
+- elf: Use the minimal malloc on tunables_strdup
+
+* Mon Nov 08 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-18
+- Auto-sync with upstream branch master,
+  commit db6c4935fae6005d46af413b32aa92f4f6059dce:
+- Fix memmove call in vfprintf-internal.c:group_number
+- locale: Fix localedata/sort-test undefined behavior
+- test-memcpy.c: Double TIMEOUT to (8 * 60)
+- hurd: Remove unused __libc_close_range
+- hurd: Implement close_range and closefrom
+- x86: Double size of ERMS rep_movsb_threshold in dl-cacheinfo.h
+- x86: Optimize memmove-vec-unaligned-erms.S
+- benchtests: Add partial overlap case in bench-memmove-walk.c
+- benchtests: Add additional cases to bench-memcpy.c and bench-memmove.c
+- string: Make tests birdirectional test-memcpy.c
+- Remove the last trace of generate-md5 [BZ #28554]
+- Revert "benchtests: Add acosf function to bench-math"
+- Configure GCC with --enable-initfini-array [BZ #27945]
+- elf: Earlier missing dynamic segment check in _dl_map_object_from_fd
+- gconv: Do not emit spurious NUL character in ISO-2022-JP-3 (bug 28524)
+- [powerpc] Tighten contraints for asm constant parameters
+
+* Wed Nov 03 2021 Patsy Griffin <patsy@redhat.com> - 2.34.9000-17
+- Auto-sync with upstream branch master,
+  commit d3bf2f5927d51258a51ac7fde04f4805f8ee294a.
+- elf: Do not run DSO sorting if tunables is not enabled
+- riscv: Build with -mno-relax if linker does not support R_RISCV_ALIGN
+- x86-64: Replace movzx with movzbl
+- regex: Unnest nested functions in regcomp.c
+- Use Linux 5.15 in build-many-glibcs.py
+- elf: Assume disjointed .rela.dyn and .rela.plt for loader
+- i386: Explain why __HAVE_64B_ATOMICS has to be 0
+- benchtests: Add hypotf
+- benchtests: Make hypot input random
+- arm: Use have-mtls-dialect-gnu2 to check for ARM TLS descriptors support
+- arm: Use internal symbol for _dl_argv on _dl_start_user
+- x86-64: Remove Prefer_AVX2_STRCMP
+- x86-64: Improve EVEX strcmp with masked load
+
+* Fri Oct 29 2021 DJ Delorie <dj@redhat.com> - 2.34.9000-16
+- Auto-sync with upstream branch master,
+  commit 79d0fc65395716c1d95931064c7bf37852203c66.
+- benchtests: Add acosf function to bench-math
+- benchtests: Improve bench-memcpy-random
+- Disable -Waggressive-loop-optimizations warnings in tst-dynarray.c
+- Fix compiler issue with mmap_internal
+- Check if linker also support -mtls-dialect=gnu2
+- Fix LIBC_PROG_BINUTILS for -fuse-ld=lld
+- elf: Disable ifuncmain{1,5,5pic,5pie} when using LLD
+- Handle NULL input to malloc_usable_size [BZ #28506]
+- x86_64: Add memcmpeq.S to fix disable-multi-arch build
+- login: Add back libutil as an empty library
+- riscv: Fix incorrect jal with HIDDEN_JUMPTARGET
+- x86_64: Add evex optimized __memcmpeq in memcmpeq-evex.S
+- x86_64: Add avx2 optimized __memcmpeq in memcmpeq-avx2.S
+- x86_64: Add sse2 optimized __memcmpeq in memcmp-sse2.S
+- x86_64: Add support for __memcmpeq using sse2, avx2, and evex
+- Benchtests: Add benchtests for __memcmpeq
+- String: Add __memcmpeq as build target
+- NEWS: Add item for __memcmpeq
+- String: Add tests for __memcmpeq
+- String: Add hidden defs for __memcmpeq() to enable internal usage
+- String: Add support for __memcmpeq() ABI on all targets
+- configure: Don't check LD -v --help for LIBC_LINKER_FEATURE
+- elf: Make global.out depend on reldepmod4.so [BZ #28457]
+- x86: Replace sse2 instructions with avx in memcmp-evex-movbe.S
+- bench-math: Sort and put each bench per line
+- x86_64: Add missing libmvec ABI tests
+- elf: Fix e6fd79f379 build with --enable-tunables=no
+- elf: Fix slow DSO sorting behavior in dynamic loader (BZ #17645)
+- elf: Testing infrastructure for ld.so DSO sorting (BZ #17645)
+- iconv: Use TIMEOUTFACTOR for iconv test timeout
+- posix: Remove alloca usage for internal fnmatch implementation
+- Add alloc_align attribute to memalign et al
+- linux: Fix a possibly non-constant expression in _Static_assert
+- x86-64: Add sysdeps/x86_64/fpu/Makeconfig
+
+* Wed Oct 20 2021 Carlos O'Donell <carlos@redhat.com> - 2.34.9000-15
+- Remove glibc-ld-readonly-revert.patch.
+- Auto-sync with upstream branch master,
+  commit e037274c8ec86ca9d491331984b34f30701b23cf:
+- stdlib: Fix tst-canon-bz26341 when the glibc build current working
+  directory is itself using symlinks.
+- powerpc: Remove backtrace implementation
+- Correct access attribute on memfrob (bug 28475)
+- debug: Add tests for _FORTIFY_SOURCE=3
+- Make sure that the fortified function conditionals are constant
+- Don't add access size hints to fortifiable functions
+- glibcextract.py: Place un-assemblable @@@ in a comment
+- nss: Unnest nested function add_key
+- ld.so: Initialize bootstrap_map.l_ld_readonly [BZ #28340]
+- timex: Use 64-bit fields on 32-bit TIMESIZE=64 systems (BZ #28469)
+- manual: Update _TIME_BITS to clarify it's user defined
+- nptl: Fix tst-cancel7 and tst-cancelx7 pidfile race
+- elf: Fix elf_get_dynamic_info() for bootstrap
+- hurd if_index: Explicitly use AF_INET for if index discovery
+- hurd: Fix intr-msg parameter/stack kludge
+- x86-64: Add test-vector-abi.h/test-vector-abi-sincos.h
+- elf: Fix dynamic-link.h usage on rtld.c
+
+* Thu Oct 14 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-14
+- Adjust glibc-ld-readonly-revert.patch.
+- Auto-sync with upstream branch master,
+  commit e59ced238482fd71f3e493717f14f6507346741e:
+- x86: Optimize memset-vec-unaligned-erms.S
+- x86: Optimize memcmp-evex-movbe.S for frontend behavior and size
+- libio: Update tst-wfile-sync to not depend on stdin
+- elf: Update audit tests to not depend on stdout
+- elf: Fix elf_get_dynamic_info definition
+- Add TEST_COMPARE_STRING_WIDE to support/check.h
+- Fix nios2 localplt failure
+- elf: Remove Intel MPX support (lazy PLT, ld.so profile, and LD_AUDIT)
+- resolv: Avoid GCC 12 false positive warning [BZ #28439].
+- benchtests: Add medium cases and increase iters in bench-memset.c
+- x86: Modify ENTRY in sysdep.h so that p2align can be specified
+- resolv: make res_randomid use random_bits()
+- Linux: implement getloadavg(3) using sysinfo(2)
+- Remove unreliable parts of rt/tst-cpuclock2
+- elf: Avoid nested functions in the loader [BZ #27220]
+- Add run-time check for indirect external access
+- Initial support for GNU_PROPERTY_1_NEEDED
+- io: Fix ftw internal realloc buffer (BZ #28126)
+- Fix subscript error with odd TZif file [BZ #28338]
+
+* Thu Oct 07 2021 Carlos O'Donell <carlos@redhat.com> - 2.34.9000-13
+- Auto-sync with upstream branch master,
+  commit f2e06656d04a9fcb0603802a4f8ce7aa3a1f055e:
+- S390: Add PCI_MIO and SIE HWCAPs
+- support: Also return fd when it is 0
+- ld.so: Don't fill the DT_DEBUG entry in ld.so [BZ #28129]
+- S390: update libm test ulps
+- powerpc: update libm test ulps
+- math: Also xfail the new j0f tests for ibm128-libgcc
+- y2038: Use a common definition for stat for sparc32
+- Fix stdlib/tst-setcontext.c for GCC 12 -Warray-compare
+- aarch64: update libm test ulps
+- Fixed inaccuracy of j0f (BZ #28185)
+- Fix stdio-common tests for GCC 12 -Waddress
+- benchtests: Building benchmarks as static executables
+- elf: Avoid deadlock between pthread_create and ctors [BZ #28357]
+- time: Ignore interval nanoseconds on tst-itimer
+- io: Do not skip timestamps tests for 32-bit time_t
+- Update to Unicode 14.0.0 [BZ #28390]
+
+* Fri Oct 01 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-12
+- Auto-sync with upstream branch master,
+  commit eae81d70574e923ce3c59078b8df857ae192efa6:
+- nptl: pthread_kill must send signals to a specific thread [BZ #28407]
+- support: Add check for TID zero in support_wait_for_thread_exit
+- nptl: Add CLOCK_MONOTONIC support for PI mutexes
+- support: Add support_mutex_pi_monotonic
+- nptl: Use FUTEX_LOCK_PI2 when available
+- Linux: Add FUTEX_LOCK_PI2
+- Add C2X _PRINTF_NAN_LEN_MAX
+- Add exp10 macro to <tgmath.h> (bug 26108)
+- elf: Replace nsid with args.nsid [BZ #27609]
+- Add missing braces to bsearch inline implementation [BZ #28400]
+- Update alpha libm-test-ulps
+- Suppress -Wcast-qual warnings in bsearch
+- elf: Copy l_addr/l_ld when adding ld.so to a new namespace
+- powerpc: Fix unrecognized instruction errors with recent binutils
+
+* Wed Sep 29 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-11
+- Drop glibc-rh1992702-*.patch, applied upstream.
+- Auto-sync with upstream branch master,
+  commit 9bd9978639c2f75dbea5c25226264b1ac11fdf05:
+- Do not declare fmax, fmin _FloatN, _FloatNx versions for C2X
+- Do not define tgmath.h fmaxmag, fminmag macros for C2X (bug 28397)
+- Add fmaximum, fminimum functions
+- Linux: Simplify __opensock and fix race condition [BZ #28353]
+- pthread/tst-cancel28: Fix barrier re-init race condition
+- powerpc: Delete unneeded ELF_MACHINE_BEFORE_RTLD_RELOC
+- posix: Remove spawni.c
+- Disable symbol hack in libc_nonshared.a
+- linux: Revert the use of sched_getaffinity on get_nproc (BZ #28310)
+- linux: Simplify get_nprocs
+- misc: Add __get_nprocs_sched
+- htl: Fix sigset of main thread
+- htl: make pthread_sigstate read/write set/oset outside sigstate section
+- Avoid warning: overriding recipe for .../tst-ro-dynamic-mod.so
+- benchtests: Improve reliability of memcmp benchmarks
+- Define __STDC_IEC_60559_BFP__ and __STDC_IEC_60559_COMPLEX__
+- build-many-glibcs.py: add powerpc64le glibc variant without multiarch
+- Fix sysdeps/x86/fpu/s_ffma.c for 32-bit FMA processor case
+- Linux: Avoid closing -1 on failure in __closefrom_fallback
+- i386: Port elf_machine_{load_address,dynamic} from x86-64
+- aarch64: Disable A64FX memcpy/memmove BTI unconditionally
+- xsysconf: Only fail on error results and errno set
+- powerpc64le: Avoid conflicting types for f64xfmaf128 when IFUNC is not used
+- Fix ffma use of round-to-odd on x86
+- vfprintf: Unify argument handling in process_arg
+- vfprintf: Handle floating-point cases outside of process_arg macro
+
+* Thu Sep 23 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-10
+- Fix ppc64le build failure by reverting DL_RO_DYN_SECTION removal
+
+* Thu Sep 23 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-9
+- Auto-sync with upstream branch master,
+  commit 2849e2f53311b66853cb5159b64cba2bddbfb854:
+- nptl: Avoid setxid deadlock with blocked signals in thread exit [BZ #28361]
+- Add narrowing fma functions
+- ld.so: Replace DL_RO_DYN_SECTION with dl_relocate_ld [BZ #28340]
+- Adjust new narrowing div/mul tests for IBM long double, update powerpc ULPs
+- Mention today's regex merge in SHARED-FILES
+- Fix f64xdivf128, f64xmulf128 spurious underflows (bug 28358)
+- regex: copy back from Gnulib
+- nptl: Fix type of pthread_mutexattr_getrobust_np,
+  pthread_mutexattr_setrobust_np (bug 28036)
+- powerpc: Fix unrecognized instruction errors with recent GCC
+- elf: Include <sysdep.h> in elf/dl-debug-symbols.S
+- nptl: pthread_kill needs to return ESRCH for old programs (bug 19193)
+- Extend struct r_debug to support multiple namespaces [BZ #15971]
+- Use $(pie-default) with conformtest
+- Run conform/ tests using newly built libc
+- posix: Fix attribute access mode on getcwd [BZ #27476]
+- Fix build-many-glibcs.py --strip for installed library renaming
+- benchtests: Fix validate_benchout.py exceptions
+- elf: Remove THREAD_GSCOPE_IN_TCB
+- htl: Reimplement GSCOPE
+- htl: Move thread table to ld.so
+- Redirect fma calls to __fma in libm
+- time: Fix compile error in itimer test affecting hurd
+
+* Wed Sep 15 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-8
+- Use system CPU count for sysconf(_SC_NPROCESSORS_*) (#1992702)
+
+* Wed Sep 15 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-7
+- Auto-sync with upstream branch master,
+  commit 2444ce5421c6036a503842d8dd8d93c27aad59ee:
+- mach lll_lock/unlock: Explicitly request private locking
+- elf: Replace most uses of THREAD_GSCOPE_IN_TCB
+- Add MADV_POPULATE_READ and MADV_POPULATE_WRITE from Linux 5.14 to
+  bits/mman-linux.h
+- Update kernel version to 5.14 in tst-mman-consts.py
+- configure: Fix check for INSERT in linker script
+- iconvconfig: Fix behaviour with --prefix [BZ #28199]
+- nptl: Fix race between pthread_kill and thread exit (bug 12889)
+- nptl: pthread_kill, pthread_cancel should not fail after exit (bug 19193)
+- benchtests: Remove redundant assert.h
+- benchtests: Enable scripts/plot_strings.py to read stdin
+- Add narrowing square root functions
+- _Static_assert needs two arguments for compatibility with GCC before 9
+- testrun.sh: Add support for --tool=rpctrace
+
+* Thu Sep 09 2021 Patsy Griffin <patsy@redhat.com> - 2.34.9000-6
+- Auto-sync with upstream branch master,
+  commit 89dc0372a9055e7ef86fe19be6201fa0b16b2f0e.
+- Update syscall lists for Linux 5.14
+- Fix failing nss/tst-nss-files-hosts-long with local resolver
+- MIPS: Setup errno for {f,l,}xstat
+- Use Linux 5.14 in build-many-glibcs.py
+- locale: Add missing second argument to _Static_assert in C-collate-seq.c
+- Update hppa libm-test-ulps
+- Add generic C.UTF-8 locale (Bug 17318)
+- Add 'codepoint_collation' support for LC_COLLATE.
+- AArch64: Update A64FX memset not to degrade at 16KB
+- Revert "AArch64: Update A64FX memset not to degrade at 16KB"
+- Remove "Contributed by" lines
+- Port shared code information from the wiki
+- AArch64: Update A64FX memset not to degrade at 16KB
+- posix: remove some iso-8859-encoded characters
+- configure: Allow LD to be LLD 13.0.0 or above [BZ #26558]
+- hurd msync: Drop bogus test
+- hurd: Fix typo in msync
+
+* Tue Aug 31 2021 Florian Weimer <fweimer@redhat.com> - 2.34.9000-5
+- Auto-sync with upstream branch master,
+  commit 3c8b9879cab6d41787bc5b14c1748f62fd6d0e5f:
+- x86-64: Use testl to check __x86_string_control
+- i686: Don't include multiarch memove in libc.a
+- support: Add support_wait_for_thread_exit
+- Allow #pragma GCC in headers in conformtest
+- nptl: Fix tst-cancel7 and tst-cancelx7 race condition (BZ #14232)
+- Use support_open_dev_null_range io/tst-closefrom,
+  misc/tst-close_range, and posix/tst-spawn5 (BZ #28260)
+- support: Add support_open_dev_null_range
+- llio.texi: Wording fixes in description of closefrom()
+- Fix error message in memmove test to display correct src pointer
+
+* Wed Aug 25 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-4
+- Auto-sync with upstream branch master,
+  commit 9926f6e2eeb374cf729d4bb3f092dd4b36a8f861:
+- elf: Skip tst-auditlogmod-* if the linker doesn't support --depaudit [BZ #28151]
+- powerpc: Use --no-tls-get-addr-optimize in test only if the linker supports it
+- x86-64: Remove assembler AVX512DQ check
+- x86-64: Remove compiler -mavx512f check
+- Use __executable_start as the lowest address for profiling [BZ #28153]
+- hurd: Fix errlist error mapping
+- hurd: Remove old test-err_np.c file
+- Fix iconv build with GCC mainline
+- rtld: copy terminating null in tunables_strdup (bug 28256)
+- mtrace: Fix output with PIE and ASLR [BZ #22716]
+- x86-64: Optimize load of all bits set into ZMM register [BZ #28252]
+- Update string/test-memmove.c to cover 16KB copy
+- elf: Fix missing colon in LD_SHOW_AUXV output [BZ #28253]
+- x86: fix Autoconf caching of instruction support checks [BZ #27991]
+- arm: Simplify elf_machine_{load_address,dynamic}
+- riscv: Drop reliance on _GLOBAL_OFFSET_TABLE_[0]
+- Remove sysdeps/*/tls-macros.h
+
+* Tue Aug 24 2021 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.34.9000-3
+- Disable dependencies and linking for libc_malloc_debug.so (#1985048).
+
+* Tue Aug 17 2021 DJ Delorie <dj@redhat.com> - 2.34.9000-2
+- Auto-sync with upstream branch master,
+  commit b37b75d269883a2c553bb7019a813094eb4e2dd1.
+- x86_64: Simplify elf_machine_{load_address,dynamic}
+- elf: Drop elf/tls-macros.h in favor of __thread and tls_model attributes [BZ #28152] [BZ #28205]
+- hurd: Drop fmh kludge
+- time: Fix overflow itimer tests on 32-bit systems
+- mips: increase stack alignment in clone to match the ABI
+- mips: align stack in clone [BZ #28223]
+
+
+* Thu Aug 12 2021 Arjun Shankar <arjun@redhat.com> - 2.34.9000-1
+- Auto-sync with upstream branch master,
+  commit 4cc79c217744743077bf7a0ec5e0a4318f1e6641:
+- librt: add test (bug 28213)
+- mtrace: Use a static buffer for printing [BZ #25947]
+- hurd mmap: Reduce the requested max vmprot
+- hurd mmap: Factorize MAP_SHARED flag check
+- aarch64: Make elf_machine_{load_address,dynamic} robust [BZ #28203]
+- elf: Unconditionally use __ehdr_start
+- hurd: Add support for AT_NO_AUTOMOUNT
+- [5/5] AArch64: Improve A64FX memset medium loops
+- [4/5] AArch64: Improve A64FX memset by removing unroll32
+- [3/5] AArch64: Improve A64FX memset for remaining bytes
+- [2/5] AArch64: Improve A64FX memset for large sizes
+- [1/5] AArch64: Improve A64FX memset for small sizes
+- Use binutils 2.37 branch in build-many-glibcs.py
+- Add PTRACE_GET_RSEQ_CONFIGURATION from Linux 5.13 to sys/ptrace.h
+- librt: fix NULL pointer dereference (bug 28213)
+- powerpc64: Add checks for Altivec and VSX in ifunc selection
+- powerpc64: Check cacheline size before using optimised memset routines
+- powerpc64: Replace some PPC_FEATURE_HAS_VSX with PPC_FEATURE_ARCH_2_06
+- Linux: Fix fcntl, ioctl, prctl redirects for _TIME_BITS=64 (bug 28182)
+- Add INADDR_DUMMY from Linux 5.13 to netinet/in.h
+- tst-mxfast: Don't run with mcheck
+- rt: Set the correct message queue for tst-mqueue10
+- Update sparc libm-test-ulps
+- linux: Add sparck brk implementation
+- test-dlclose-exit-race: avoid hang on pthread_create error
+- gethosts: Remove unused argument _type
+- hurd: Avoid spurious warning
+- gaiconf_init: Avoid double-free in label and precedence lists
+- copy_and_spawn_sgid: Avoid double calls to close()
+- iconv_charmap: Close output file when done
+- gconv_parseconfdir: Fix memory leak
+- ldconfig: avoid leak on empty paths in config file
+- Fix build of nptl/tst-thread_local1.cc with GCC 12
+- nis: Fix leak on realloc failure in nis_getnames [BZ #28150]
+- Remove obsolete comments/name from several benchtest input files.
+- Remove obsolete comments/name from acos-inputs, since slow path was removed.
+- Open master branch for glibc 2.35 development
+
+* Mon Aug  2 2021 Florian Weimer <fweimer@redhat.com> - 2.34-1
+- Switch to glibc 2.34 release tarball:
+- Update ChangeLog.old/ChangeLog.23.
+- Prepare for glibc 2.34 release.
+- po/nl.po: Update Dutch translation.
+- Update install.texi, and regenerate INSTALL.
+- Update translations.
+- Update NEWS.
+- NEWS: Fix typos, grammar, and missing words
+- elf: Fix audit regression
+
+* Fri Jul 30 2021 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.33.9000-56
+- Port post scripts for gconv-extra to lua and drop dependency across
+  architectures for x86 multilib (#1988344).
+
+* Thu Jul 29 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-55
+- Auto-sync with upstream branch master,
+  commit c37fc3ebf0607ce1953c565ffe56d56555eeb25e:
+- Update libc.pot for 2.34 release.
+- x86-64: Add Avoid_Short_Distance_REP_MOVSB
+- Typo: Rename HAVE_CLONE3_WAPPER to HAVE_CLONE3_WRAPPER
+- build-many-glibcs.py: Add x86_64-linux-gnu-minimal configuration
+- tests: use xmalloc to allocate implementation array
+- xmalloc: Fix warnings with gcc analyzer
+- __cxa_thread_atexit_impl: Abort on allocation failure [BZ #18524]
+- manual: Drop the .so suffix in libc_malloc_debug description
+- hurd: _Fork: unlock malloc before calling fork child hooks
+
+* Tue Jul 27 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-54
+- Revert to old C.UTF-8 locale
+
+* Mon Jul 26 2021 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.33.9000-53
+- Loosen dependency on glibc-gconv-extra (#1812191).
+
+* Mon Jul 26 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-52
+- Switch to new version of C.UTF-8 locale
+
+* Mon Jul 26 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-51
+- Auto-sync with upstream branch master,
+  commit ddcc612ce923038b867083a0c55d6e034951155a:
+- Exclude static tests for mcheck and malloc-check
+- i386: Regenerate ulps
+
+* Sat Jul 24 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-50
+- Auto-sync with upstream branch master,
+  commit d34ed66f96fa9316654d7adb2afcce4be1d1c4f5:
+- manual: Document unsupported cases for interposition
+- x86: Install <bits/platform/x86.h> [BZ #27958]
+- Fix build and tests with --disable-tunables
+
+* Sat Jul 24 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-49
+- Remove both old and new library names in glibc-hwcaps removal (#1983677)
+
+* Fri Jul 23 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-48
+- Auto-sync with upstream branch master,
+  commit 9a7ab0769b295cbf5232140401742a8f34bda3de:
+- hurd: Fix glob lstat compatibility
+- socket: Add time64 alias for setsockopt
+- socket: Add time64 alias for getsockopt
+- mcheck Fix malloc_usable_size [BZ #22057]
+- Remove malloc hooks [BZ #23328]
+- Move malloc_{g,s}et_state to libc_malloc_debug
+- glibc.malloc.check: Wean away from malloc hooks
+- mtrace: Wean away from malloc hooks
+- Simplify __malloc_initialized
+- mcheck: Wean away from malloc hooks [BZ #23489]
+- Move malloc hooks into a compat DSO
+- Remove __morecore and __default_morecore
+- Remove __after_morecore_hook
+- Make mcheck tests conditional on GLIBC_2.23 or earlier
+- posix: Add sysconf(_SC_{MIN,}SIGSTKSZ) support
+- malloc: Fix tst-mallocfork3-malloc-check link
+- ARC: elf: make type safe
+- ARC: fp: (micro)optimize FPU_STATUS read by eliding FWE bit clearing
+
+* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.33.9000-47
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Wed Jul 21 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-46
+- Auto-sync with upstream branch master,
+  commit 77ede5f010f1b144e067ec035e422a13bb57c55d:
+- socket: Add time64 alias for sendmsg
+- socket: Add time64 alias for recvmsg
+- socket: Add time64 alias for sendmmsg
+- Linux: Add time64 alias for prctl
+- io: Add time64 alias for fcntl
+- misc: Add time64 alias for ioctl
+- RISC-V: Update rv64 ULPs
+- resolv: Do not install libnss_dns.a, libnss_dns.so
+- hurd: Add support for spawn_do_closefrom
+- elf: Fix tst-cpu-features-cpuinfo on some AMD systems (BZ #28090)
+- i386: Add the clone3 wrapper
+
+* Mon Jul 19 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-45
+- Remove glibc-hwcaps multilibs on upgrade (#1983677)
+
+* Mon Jul 19 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-44
+- Auto-sync with upstream branch master,
+  commit ee5ed99922ca90bcea4a2f9a48a0c9ae4b534ece:
+- nss: Directly load nss_dns, without going through dlsym/dlopen
+- resolv: Move nss_dns into libc
+- resolv: Move res_query functions into libc
+- resolv: Move res_mkquery, res_nmkquery into libc
+- resolv: Move res_send, res_nsend into libc
+- resolv: Move res_hostalias into its own file, along with hostalias
+- resolv: Move __res_context_hostalias into its own file and into libc
+- resolv: Move res_queriesmatch to its own file and into libc
+- resolv: Move res_nameinquery to its own file and into libc
+- resolv: Move ns_samename into its own file, and into libc
+- resolv: Move ns_makecanon into its own file, and into libc
+- resolv: Move res_isourserver to its own file and reformat to GNU style
+- resolv: Move __res_get_nsaddr to its own file and into libc
+- resolv: Rename res_comp.c to res-name-checking.c and move into libc
+- resolv: Move dn_skipname to its own file and into libc
+- resolv: Move dn_comp to its own file and into libc
+- resolv: Move _getlong, _getshort, __putlong, __putshort to res-putget
+- resolv: Move dn_expand to its own file and into libc
+- resolv: Move ns_name_compress into its own file and into libc
+- resolv: Move ns_name_pack into its own file and into libc
+- resolv: Move ns_name_pton into its own file and into libc
+- resolv: Move ns_name_uncompress into its own file and into libc
+- resolv: Move ns_name_skip to its own file and into libc (bug 28091)
+- resolv: Deprecate legacy interfaces in libresolv
+- tst-safe-linking: make false positives even more improbable
+- htl: Do not expose pthread hidden proto outside libpthread
+- elf: Fix a wrong array access on tst-tls20
+- elf: Add -Wl,--no-as-needed for tst-tls-manydynamic*mod-dep-bad.so (BZ #28089)
+- resolv: Move ns_name_unpack to its own file and into libc
+- resolv: Remove unnecessary res_isourserver_p call from send_dg
+- resolv: Move ns_name_ntop to its own file and into libc
+- nss_dns: Do not use deprecated packet parsing functions
+- resolv: Sort Makefile routines and Versions lexicographically
+- socket: Add hidden prototype for setsockopt
+- elf: Fix DTV gap reuse logic (BZ #27135)
+- Fix linknamespace errors and local-plt-usages in nss_files.
+- Add static tests for __clone_internal
+- x86-64: Add the clone3 wrapper
+- Add an internal wrapper for clone, clone2 and clone3
+- nss: Fix build error with --disable-nscd
+- htl: Fix linking static examples against libpthread
+- htl: Let libc call __pthread_mutex_{,try,un}lock
+- posix: Ignore non opened files on tst-spawn5
+- mcheck: Align struct hdr to MALLOC_ALIGNMENT bytes [BZ #28068]
+
+* Thu Jul 15 2021 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.33.9000-43
+- Run postun only if the main gconv-modules configuration file exists.
+  (#1981013)
+- Own %{libdir}/gconv/gconv-modules.d
+- Rearrange file list command so that gconv-modules.cache is no longer
+  marked as %config
+
+* Tue Jul 13 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-42
+- Perform systemd re-exec even if glibc.i686 is installed
+
+* Tue Jul 13 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-41
+- Re-exec systemd on upgrades
+
+* Mon Jul 12 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-40
+- Merge files NSS service module into libc.
+- Restore vDSO acceleration for time functions on older kernels for i686.
+- Auto-sync with upstream branch master,
+  commit 72e84d1db22203e01a43268de71ea8669eca2863:
+- Linux: Use 32-bit vDSO for clock_gettime, gettimeofday, time (BZ# 28071)
+- Reduce <limits.h> pollution due to dynamic PTHREAD_STACK_MIN
+- Fix failing nss/tst-nss-files-hosts-long.
+- nis: nis_local_group may read from __nisgroup[-1] (bug 28075)
+- hurd _Fork: Drop duplicate malloc_fork_lock calls
+- support: Replace _SC_MINSIGSTKSZ with _SC_SIGSTKSZ
+- support: Replace MINSIGSTKSZ with sysconf (_SC_MINSIGSTKSZ)
+- Define PTHREAD_STACK_MIN to sysconf(_SC_THREAD_STACK_MIN)
+- Force building with -fno-common
+- Add a generic malloc test for MALLOC_ALIGNMENT
+- Properly run tst-spawn5 directly [BZ #28067]
+- build-many-glibcs.py: Add glibcs-arm-linux-gnueabihf-thumb
+- nptl: Use out-of-line wake function in __libc_lock_unlock slow path
+- powerpc64le: Fix typo in configure
+- powerpc64: Remove strcspn ifunc from the loader
+- x86: Remove wcsnlen-sse4_1 from wcslen ifunc-impl-list [BZ #28064]
+- x86-64: Test strlen and wcslen with 0 in the RSI register [BZ #28064]
+- x86_64: Remove unneeded static PIE check for undefined weak diagnostic
+- Add NT_ARM_PAC_ENABLED_KEYS to elf.h
+- posix: Add posix_spawn_file_actions_addclosefrom_np
+- io: Add closefrom [BZ #10353]
+- linux: Add close_range
+- support: Add support_stack_alloc
+- _int_realloc is static
+- Move mcheck symbol from stdlib to malloc
+- nss: Do not install static linker input files for libnss_files
+- elf/tests: Make thrlock and noload depend on libm
+- Harden tcache double-free check
+- nss: Access nss_files through direct references
+- nss_files: Move into libc
+- nss_files: Add generic code for set*ent, end*ent and file open
+- nss_files: Allocate nscd file registration data on the heap
+- libio: Replace internal _IO_getdelim symbol with __getdelim
+- libio: Add hidden prototype for ungetc
+- inet: Add hidden prototype for __inet_network
+- Update MIPS libm-test-ulps
+- Update powerpc-nofpu libm-test-ulps
+- soft-fp: Add __extendhfsf2/__extendhfdf2, __truncsfhf2/__truncdfhf2,
+  __eqhf2/__nehf2
+- Update kernel version to 5.13 in tst-mman-consts.py
+- tests-exclude-mcheck: Fix typo
+
+* Wed Jul 07 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-39
+- Auto-sync with upstream branch master,
+  commit 7a5db2e82fbb6c3a6e3fdae02b7166c5d0e8c7a8:
+- elf: Clean up GLIBC_PRIVATE exports of internal libdl symbols
+- nptl: Reduce the GLIBC_PRIVATE ABI
+- nptl: Remove GLIBC_2.34 versions of __pthread_mutex_lock,
+  __pthread_mutex_unlock
+- nptl: Use internal low-level lock type for !IS_IN (libc)
+- glibc.malloc.check: Fix nit in documentation
+- Exclude tst-realloc from tests-mcheck
+- linux: Fix setsockopt fallback
+- linux: Use the expected size for SO_TIMESTAMP{NS} convertion
+- linux: Consolidate Linux setsockopt implementation
+- linux: Consolidate Linux getsockopt implementation
+- manual: fix description for preadv()
+
+* Tue Jul 06 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-38
+- Auto-sync with upstream branch master,
+  commit 832f50be6c9c010e46180d14126bbb81f35e808c:
+- linux: Check for null value msghdr struct before use
+- elf: Call free from base namespace on error in dl-libc.c [BZ #27646]
+
+* Mon Jul 05 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-37
+- Move libanl.a into glibc-devel.
+- Auto-sync with upstream branch master,
+  commit 91fb0f17a5779da6e7877eb74119a83dbe8bf167:
+- hooks.c: Remove incorrect comment
+- mtrace: Add attribute nocommon to mallwatch
+- Move glibc.malloc.check implementation into its own file
+- mtrace: Deprecate mallwatch and tr_break
+- Drop source dependencies on hooks.c and arena.c
+- malloc: Initiate tcache shutdown even without allocations [BZ #28028]
+- Add mcheck tests to malloc
+- iconvconfig: Use the public feof_unlocked
+- resolv: Move libanl into libc (if libpthread is in libc)
+- powerpc: optimize strcpy/stpcpy for POWER9/10
+- soft-fp: Add __extendhfxf2 and __truncxfhf2
+- x86: Check RTM_ALWAYS_ABORT for RTM [BZ #28033]
+- Update syscall lists for Linux 5.13
+- s390: Fix MEMCHR_Z900_G5 ifunc-variant if n>=0x80000000 [BZ #28024]
+- Fix extra PLT reference in libc.so due to __glob64_time64 if build with gcc 7.5 on 32bit.
+- AArch64: Add hp-timing.h
+- AArch64: Improve strnlen performance
+
+* Wed Jun 30 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-36
+- Auto-sync with upstream branch master,
+  commit eb68d7d23cc411acdf68a60f194343a6774d6194:
+- Linux: Avoid calling malloc indirectly from __get_nprocs (#1975693)
+- Use Linux 5.13 in build-many-glibcs.py
+
+* Wed Jun 30 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-35
+- Drop glibc-s390x-roundeven.patch, applied upstream.
+- Move libutil.a into glibc-devel.
+- Auto-sync with upstream branch master,
+  commit 734c60ebb607086ad6d67b2544d6b7baba72a652:
+- login: Move libutil into libc
+- login: Rework hidden prototypes for __setutent, __utmpname, __endutent
+- login: Hidden prototypes for _getpt, __ptsname_r, grantpt, unlockpt
+- nptl_db: Re-use the ELF-to-abilist converter for ABI checking
+- Add RFC 8335 Definitions from Linux 5.13
+- nss: Fix NSS_DECLARE_MODULE_FUNCTIONS handling of _nss_*_endnetgrent
+- s390x: Update math: redirect roundeven function
+- posix: Add _Fork [BZ #4737]
+
+* Mon Jun 28 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-34
+- Move librt.a to glibc-devel (#1977058)
+
+* Mon Jun 28 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-33
+- Dropped patches glibc-nosymlink-*.patch, glibc-iconvconfig-corruption.patch,
+  glibc-libthread_db-dynsym-*.patch; applied upstream.
+- Auto-sync with upstream branch master,
+  commit dd45734e322a03287d34d8af9b7da7b35cfddb8e:
+- nptl: Add glibc.pthread.stack_cache_size tunable
+- nptl: Export libthread_db-used symbols under GLIBC_PRIVATE
+- nptl: Rename nptl_version to __nptl_version
+- nptl_db: Clean up main/rtld variable handling
+- arm: align stack in clone [BZ 28020]
+- Linux: Cleanups after librt move
+- Linux: Move timer_settime, __timer_settime64 from librt to libc
+- Linux: Move timer_gettime, __timer_gettime64 from librt to libc
+- Linux: Move timer_getoverrun from librt to libc
+- Linux: Move timer_create, timer_delete from librt to libc
+- Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h
+- Install shared objects under their ABI names
+- elf: Generalize name-based DSO recognition in ldconfig
+- Makerules: Remove lib-version, $(subdir-version)
+- nptl_db: Install libthread_db under a regular implementation name
+- iconvconfig: Fix multiple issues
+- wordexp: handle overflow in positional parameter number (bug 28011)
+- Update math: redirect roundeven function
+- Use GCC builtins for roundeven functions if desired.
+- x86_64: roundeven with sse4.1 support
+- math: redirect roundeven function
+
+* Mon Jun 28 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-32
+- Switch to new version of libthread_db .dynsym patch
+
+* Mon Jun 28 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-31
+- Further .symtab adjustment: Keep all __GI_* symbols (#1975895)
+
+* Mon Jun 28 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-30
+- Keep most of .symtab in libc.so.6 (#1975895)
+
+* Sun Jun 27 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-29
+- Apply emergency patch to fix iconvconfig corruption
+
+* Sun Jun 27 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-28
+- Adjust glibc.req so that egrep does not cause eu-readelf to fail
+
+* Sun Jun 27 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-27
+- Drop glibc-revert-dtv-gap-reuse.patch, applied upstream.
+- Auto-sync with upstream branch master,
+  commit 2c16cb88a6e5ace0fb7cedca86860ea7bde522a7:
+- Linux: Move timer helper routines from librt to libc
+- Linux: Move mq_unlink from librt to libc
+- Linux: Move mq_send, mq_timedsend, __mq_timedsend_time64 to libc
+- Linux: Move mq_receive, mq_timedreceive, __mq_timedreceive_time64 to libc
+- Linux: Move mq_open, __mq_open_2 from librt to libc
+- Linux: Move mq_notify from librt to libc
+- Linux: Move mq_getattr from librt to libc
+- Linux: Move mq_setattr from librt to libc
+- Linux: Move mq_close from librt to libc
+- Linux: Move lio_listio, lio_listio64 from librt to libc
+- rt: Rework lio_listio implementation
+- Linux: Move aio_write, aio_write64 into libc
+- Linux: Move aio_suspend, aio_suspend64, __aio_suspend_time64 to libc
+- Linux: Move aio_return, aio_return64 into libc
+- Linux: Move aio_read, aio_read64 into libc
+- Linux: Move aio_fsync, aio_fsync64 into libc
+- Linux: Move aio_error, aio_error64 into libc
+- Linux: Move aio_cancel, aio_cancel64 into libc
+- Linux: Move aio_init from librt into libc
+- support: Fix xclone build failures on ia64 and hppa
+- elf: Disable most of TLS modid gaps processing [BZ #27135]
+- elf: Fix glibc-hwcaps priorities with cache flags mismatches [BZ #27046]
+- * NEWS: Clarify _TIME_BITS change.
+- x86: Remove unnecessary overflow check from wcsnlen-sse4_1.S
+- String: Add three more overflow tests cases to test-strnlen.c
+- Consolidate pthread_atfork
+- posix: Do not clobber errno by atfork handlers
+- posix: Consolidate fork implementation
+- support: Add xclone
+- x86: Fix tst-cpu-features-cpuinfo on Ryzen 9 (BZ #27873)
+- x86: Copy IBT and SHSTK usable only if CET is enabled
+- x86: Fix overflow bug in wcsnlen-sse4_1 and wcsnlen-avx2 [BZ #27974]
+- x86: Fix overflow bug with wmemchr-sse2 and wmemchr-avx2 [BZ #27974]
+- String: Add overflow tests for strnlen, memchr, and strncat [BZ #27974]
+- x86-64: Add wcslen optimize for sse4.1
+- x86-64: Move strlen.S to multiarch/strlen-vec.S
+- hurd: Fix build after 52a5fe70a2
+- nptl: Use SA_RESTART for SIGCANCEL handler
+- doc: _TIME_BITS defaults may change
+- More mcheck -> malloc-check refactoring
+- Add NEWS item for gconv-modules.d change
+- Handle DT_UNKNOWN in gconv-modules.d
+- iconvconfig: Use common gconv module parsing function
+- gconv_conf: Split out configuration file processing
+- gconv_conf: Remove unused variables
+- iconv: Remove alloca use in gconv-modules configuration parsing
+- Remove unsused symbols from nptl/Versions
+- linux: Only use 64-bit syscall if required for clock_nanosleep
+- linux: Only use 64-bit syscall if required for internal futex
+- linux: Only use 64-bit syscall if required for utimensat family
+- linux: Only use 64-bit syscall if required for sigtimedwait
+- linux: Only use 64-bit syscall if required for mq_timedsend
+- linux: Only use 64-bit syscall if required for mq_timedreceive
+- linux: Only use 64-bit syscall if required for timerfd_settime
+- linux: Only use 64-bit syscall if required for semtimedop
+- linux: timerfd_gettime minor cleanup
+- linux: Remove time64-support
+- linux: Remove supports_time64 () from clock_gettime
+- linux: Remove supports_time64 () from clock_getres
+- linux: Only use 64-bit syscall if required for select
+- linux: Only use 64-bit syscall if required for pselect
+- linux: Only use 64-bit syscall if required for ppoll
+- support: Add support_create_timer
+- Use 64 bit time_t stat internally
+- malloc: Drop __malloc_initialized from Versions
+- tst-mcheck: Rename to tst-malloc-check
+- Add hidden prototypes for fsync, fdatasync
+- nptl: Move pthreadP.h into sysdeps directory
+- rt: Move generic implementation from sysdeps/pthread to rt
+- rt: Move shm_unlink into libc
+- rt: Move shm_open into libc
+- rt: Replace generic stub of shm_unlink with the posix version
+- rt: Replace generic stub of shm_open with the posix version
+- Fix librt-routines-var issues for !PTHREAD_IN_LIBC
+- rt: Lexicographically sort Versions file; librt-routines in Makefile
+- elf: Use _dl_catch_error from base namespace in dl-libc.c [BZ #27646]
+- Makeconfig: Fix time64-compat.mk target
+
+* Sun Jun 27 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-26
+- Add automatic requires if building against glibc development snapshots
+
+* Thu Jun 24 2021 Carlos O'Donell <carlos@redhat.com> - 2.33.9000-25
+- Fix thread local storage corruption (#1974970)
+
+* Tue Jun 22 2021 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.33.9000-24
+- Strengthen dependency on glibc-gconv-extra.
+
+* Fri Jun 18 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-23
+- Make glibc-all-langpacks require glibc-gconv-extra in buildroots (#1973663)
+
+* Thu Jun 17 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-22
+- Export libthread_db symbols under GLBIC_PRIVATE (#1965374)
+
+* Thu Jun 17 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-21
+- Redo the crafted libc.so.6 symbol table for valgrind (#1965374)
+
+* Thu Jun 17 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-20
+- Remove .symtab from libc.so.6 again (#1965374)
+
+* Thu Jun 17 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-19
+- Drop glibc-rh697421.patch: The ISO-10646-UCS-2// alias for UTF-8 is incorrect
+  (#1972520)
+
+* Wed Jun 16 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-18
+- Rebuild against rawhide gcc
+
+* Tue Jun 15 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-17
+- Dropped glibc-gconv-modules-revert.patch, applied upstream.
+- Auto-sync with upstream branch master,
+  commit aa9a7f629632c9180de89632d4f2c1e6039f7781:
+- nptl: Export _pthread_cleanup_push, _pthread_cleanup_pop again
+- s390x: Align child stack while clone. [BZ #27968]
+- y2038: Add test coverage
+- libsupport: Add 64-bit time_t support for stat functions
+- libsupport: Add 64-bit time_t support for time functions
+- io: Add ftw64 with 64-bit time_t support
+- io: Add fts64 with 64-bit time_t support
+- posix: Add glob64 with 64-bit time_t support
+- y2038: Add support for 64-bit time on legacy ABIs
+- time: Add 64-bit time support for getdate
+- y2038: Add __USE_TIME_BITS64 support for socket-constants.h
+- y2038: Use a common definition for shmid_ds
+- y2038: Use a common definition for semid_ds
+- y2038: Use a common definition for msqid_ds
+- y2038: Use a common definition for stat
+- y2038: linux: Add __USE_TIME_BITS64 support for struct timex
+- y2038: Add __USE_TIME_BITS64 support for struct utimbuf
+- y2038: Add __USE_TIME_BITS64 support for struct timespec
+- y2038: Add __USE_TIME_BITS64 support for struct timeval
+- y2038: Add __USE_TIME_BITS64 support for time_t
+- linux: Add recvvmsg fallback for 64-bit time_t SO_TIMESTAMP{NS}
+- linux: Add fallback for 64-bit time_t SO_TIMESTAMP{NS}
+- linux: Add fallback for 64-bit time_t SO_{RCV,SND}TIMEO
+- linux: s390: Add libanl.abilist in s390 and s390x
+- linux: mips: Split libanl.abilist in n32 and n64
+- linux: mips: Split librt.abilist in n32 and n64
+- Reinstate gconv-modules as the default configuration file
+
+* Tue Jun 15 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-16
+- Preserve some symbols in libc.so.6's symtab (#1965374)
+
+* Tue Jun 15 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-15
+- Install shared objects under their ABI names, avoiding symlinks (#1652867)
+
+* Mon Jun 14 2021 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.33.9000-14
+- Add a conditional dependency for glibc-gconv-extra.i686 in x86_64.
+
+* Mon Jun 14 2021 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.33.9000-13
+- Auto-sync with upstream branch master,
+  commit ebae2f5a6f971a8f0b6c99e00f9c45ef7433924a.
+- Revert gconv configuration file name to gconv-modules.
+
+* Thu Jun 03 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-12
+- libdl is no longer  a separate shared object.
+- CVE-2021-33574: Use-after-free via mq_notify (#1965410)
+- Auto-sync with upstream branch master,
+  commit 466c1ea15f461edb8e3ffaf5d86d708876343bbf:
+- dlfcn: Rework static dlopen hooks
+- dlfcn: Eliminate GLIBC_PRIVATE dependency from tststatic2
+- dlfcn: Cleanups after -ldl is no longer required
+- dlfcn: Move dlopen into libc
+- dlfcn: Move dlvsym into libc
+- dlfcn: Move dlinfo into libc
+- dlfcn: Move dladdr1 into libc
+- dlfcn: Move dlmopen into libc
+- dlfcn: Move dlsym into libc
+- dlfcn: Move dladdr into libc
+- dlfcn: Move dlclose into libc
+- Improve test coverage of strlen function
+- fix typo
+- dlfcn: Move dlerror into libc
+- Add libc ABI extension kludge for baseline-violating libdl symbols
+- scripts/versions.awk: Add local: * to all version nodes
+- Add missing symbols to Version files
+- Fix use of __pthread_attr_copy in mq_notify (bug 27896)
+- Use __pthread_attr_copy in mq_notify (bug 27896)
+- Update floating-point feature test macro handling for C2X
+- stdio-common: Remove _IO_vfwscanf
+- aarch64: align stack in clone [BZ #27939]
+- powerpc: Optimized memcmp for power10
+- x86-64: Align child stack to 16 bytes [BZ #27902]
+
+* Mon May 31 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-11
+- glibc-sigsetxid-sa_onstack.patch was applied upstream
+- Auto-sync with upstream branch master,
+  commit 271ec55d0ae795f03d92e3aa61bff69a31a19e3a:
+- support: Do not build xpthread_attr_setaffinity_np for hurd
+- nptl: Add pthread_attr_setaffinity_np failure test
+- support: Add xpthread_attr_setaffinity_np wrapper
+- nptl: Move createthread to pthread_create
+- nptl: Move Linux createthread to nptl
+- nptl: Install SIGSETXID handler with SA_ONSTACK [BZ #27914]
+- aarch64: Added optimized memset for A64FX
+- aarch64: Added optimized memcpy and memmove for A64FX
+- benchtests: Fixed bench-memcpy-random: buf1: mprotect failed
+- aarch64: Added Vector Length Set test helper script
+- aarch64: define BTI_C and BTI_J macros as NOP unless HAVE_AARCH64_BTI
+- config: Added HAVE_AARCH64_SVE_ASM for aarch64
+- tst-mallinfo2.c: Use correct multiple for total variable
+
+* Wed May 26 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-10
+- nptl: Install SIGSETXID handler with SA_ONSTACK [BZ #27914]
+
+* Tue May 25 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-9
+- Auto-sync with upstream branch master,
+  commit ac0353af81a23535f517586a5d04427120a157ac.
+- This removes libpthread as a separate shared object.  New programs
+  will depend on the GLIBC_2.34 symbol version.  Upstream development
+  brings in the following noteworthy bug fixes:
+- ppc64le: scv ABI error handling fails to check IS_ERR_VALUE (#1962971)
+- CVE-2021-27645 glibc: Use-after-free in addgetnetgrentX function in
+  netgroupcache.c (#1932590)
+- Linking the main program with jemalloc causes sysconf to deadlock in
+  audit mode (#1909920)
+
+* Fri May 21 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-8
+- Switch back to a unified glibc-headers package for downstream (#1940686)
+
+* Fri May 21 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-7
+- aarch64: Enable optional memory tagging support
+
+* Tue May 11 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-6
+- Use distribution mechanism for debuginfo (#1661510, #1886295, #1905611)
+
+* Thu May  6 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-5
+- Build locales in parallel again
+
+* Tue May  4 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-4
+- Various changes to get glibc building again, using selected upstream
+  backports.
+- Re-enable -Werror by default.
+- This release introduces __libc_start_main@@GLIBC_2.34, so binaries
+  are not compatible with glibc 2.33.  Building binaries against this
+  glibc version is not recommended because of the partial libpthread
+  transition.
+- glibc-upstream-amx-detection.patch: Fix build failure after GCC 11.1 update.
+- glibc-upstream-malloc-test-hang.patch: Avoid test hang due to
+  annobin/binutils bug (#1951492)
+
+* Wed Mar 03 2021 Arjun Shankar <arjun@redhat.com> - 2.33.9000-3
+- Drop glibc-rh819430.patch; fixed upstream.
+- Auto-sync with upstream branch master,
+  commit f01a61e13872109b3b233158ab664364bd1879bc:
+- i386: Regenerate ulps
+- x86: Add CPU-specific diagnostics to ld.so --list-diagnostics
+- x86: Automate generation of PREFERRED_FEATURE_INDEX_1 bitfield
+- ld.so: Implement the --list-diagnostics option
+- powerpc: Update libm-test-ulps
+- tst: Add test for utimes
+- tst: Add test for utime
+- tst: Add test for futimens
+- nptl: __libc_cleanup_push/__libc_cleanup_pop require -fexceptions
+- elf: Build __dl_iterate_phdr with unwinding support [BZ #27498]
+- nptl: Use <unwind-link.h> for accessing the libgcc_s unwinder
+- Implement _Unwind_Resume in libc on top of <unwind-link.h>
+- Move sysdeps/gnu/unwind-resume.c to sysdeps/generic/unwind-resume.c
+- __frame_state_for: Use <unwind-link.h> for unwinder access
+- sparc: Implement backtrace on top <unwind-link.h>
+- m68k: Implement backtrace on top of <unwind-link.h>
+- i386: Implement backtrace on top of <unwind-link.h>
+- arm: Implement backtrace on top of <unwind-link.h>
+- backtrace: Implement on top of <unwind-link.h>
+- Implement <unwind-link.h> for dynamically loading the libgcc_s unwinder
+- Correct buffer end pointer in IO_wdefault_doallocate (BZ #26874)
+- aarch64: update ulps.
+- Add inputs that generate larger error bounds
+- Reduce the statically linked startup code [BZ #23323]
+- posix: Falling back to non wide mode in case of encoding error [BZ #14185]
+- nptl: Move elision implementations into libc
+- NEWS: Add missing bug closures
+- added rt to malloc/Depend [BZ #27132]
+- x86: Use x86/nptl/pthreaddef.h
+- nptl: Move futex-internal into libc
+- nptl: Move lowlevellock into libc [BZ #15648]
+- nptl: Move futex-internal.c into main nptl directory
+- nptl: Reformat Versions
+- nptl: Split libpthread-routines into one routine per line
+- x86: Remove unused variables for raw cache sizes from cacheinfo.h
+- Use Linux 5.11 in build-many-glibcs.py.
+- <bits/platform/x86.h>: Correct x86_cpu_TBM
+- x86_64/clone.S: Upate comments
+- i386/clone.S: Remove redundant EBX load
+- aarch64: Remove the unused __read_tp symbol
+- build-many-glibcs.py: Use make -O for more consistent log output
+
+* Sun Feb 21 2021 Carlos O'Donell <carlos@redhat.com> - 2.33.9000-2
+- Auto-sync with upstream branch master,
+  commit e9e7f24543e6d1b0a31641f144697e261df6ccd7:
+- configure: Replace obsolete AC_TRY_LINK with AC_LINK_IFELSE
+- configure: Remove obsolete AC_CHECK_TOOL_PREFIX
+- configure: Replace obsoleted AC_HELP_STRING with AS_HELP_STRING
+- Update syscall lists for Linux 5.11.
+- Correct hppa EFD_NONBLOCK, IN_NONBLOCK, SFD_NONBLOCK and TFD_NONBLOCK defines.
+- string: Work around GCC PR 98512 in rawmemchr
+- tst: time: Provide Y2038 tests for mktime (tst-mktime4.c)
+- tst: Provide test for difftime
+- tst: Provide test for ctime
+- tst: Provide test for sched_rr_get_interval
+- S390: Add new hwcap values.
+- aarch64: Fix sys/ptrace.h if linux headers are included
+- elf: Do not copy vDSO soname when setting up link map
+- x86: Remove the extra space between "# endif"
+- hurd: Fix fstatfs build failure
+- linux: Remove stat-check.c
+- linux: Remove overflow.h
+- linux: Consolidate internal_statvfs
+- linux: Consolidate statvfs implementations
+- linux: Consolidate fstatvfs implementations
+- linux: Consolidate statfs implementations
+- linux: Consolidate fstatfs implementations
+- linux: Set LFS statfs as default
+- linux: Set default kernel_stat.h to LFS
+- linux: Fix STATFS_IS_STATFS64 definition
+
+* Fri Feb 12 2021 Florian Weimer <fweimer@redhat.com> - 2.33.9000-1
+- Auto-sync with upstream branch master,
+  commit 228f30ab4724d4087d5f52018873fde22efea6e2:
+- tunables: Disallow negative values for some tunables
+- x86: Use SIZE_MAX instead of (long int)-1 for tunable range value
+- tunables: Simplify TUNABLE_SET interface
+- setrlimit/getrlimit: Use __nonnull to avoid null pointer
+- benchtests: Updated json bench-variant attribute
+- regex: stop using alloca
+- regexec: remove alloca usage in build_trtable
+- regex: remove alloca usage on regex set_regs
+- malloc: Sync dynarray with gnulib
+- misc: Sync cdefs.h with gnulib
+- linux: Fix __sem_check_add_mapping search_sem
+- linux: Fix __sem_check_add_mapping name length
+- Add more ptrace constants for AArch64 and PowerPC.
+- strchr: Add additional benchmarks and tests
+- x86-64: Refactor and improve performance of strchr-avx2.S
+- pthread: Remove alloca usage from __sem_check_add_mapping
+- pthread: Refactor semaphore code
+- linux: Require /dev/shm as the shared memory file system
+- sunrpc: Fix typo in xdr_string comment
+- tst: Provide test for ppoll
+- tst: Provide test for timerfd related functions
+- x86: Add PTWRITE feature detection [BZ #27346]
+- nsswitch: return result when nss database is locked [BZ #27343]
+- printf: Add smoke tests for long double
+- Add NT_ARM_TAGGED_ADDR_CTRL from Linux 5.10 to elf.h.
+- argp: Avoid undefined behaviour when invoking qsort().
+- argp: Improve comments.
+- argp: Don't pass invalid arguments to isspace, isalnum, isalpha, isdigit.
+- argp: Don't rely on undefined behaviour of _tolower().
+- argp: fix pointer-subtraction bug
+- Use binutils 2.36 branch in build-many-glibcs.py.
+- manual: Correct description of ENTRY [BZ #17183]
+- nptl: Remove private futex optimization [BZ #27304]
+- stdio-common: Add a few double formatting tests [BZ #27245]
+-  posix/tst-rfc3484: Fix compile failure linking to local __stat64
+- i686: Regenerate ULPs
+- tst-rtld-list-tunables.sh: Unset glibc tunables
+- linux: Remove shmmax check from tst-sysvshm-linux
+- x86: Adding an upper bound for Enhanced REP MOVSB.
+- Fix version.h for glibc 2.34 development
+- Add MS_NOSYMFOLLOW from Linux 5.10 to <sys/mount.h>.
+- Move _SC_MINSIGSTKSZ/_SC_SIGSTKSZ entry in NEWS
+- libSegFault: Fix printing signal number [BZ #27249]
+- hurd TIOCFLUSH: fix fixing argument
+- sysconf: Add _SC_MINSIGSTKSZ/_SC_SIGSTKSZ [BZ #20305]
+- hurd TIOCFLUSH: Cope BSD 4.1 semantic
+- tst-mallinfo2.c: Remove useless trailing semicolon for macro
+- elf: Replace a --defsym trick with an object file to be compatible with LLD
+- Open master branch for glibc 2.34 development
+- Prepare for glibc 2.33 release
+- Update NEWS with bugs
+- Update translations
+- NEWS: Fix typo in CVE-2021-3326 entry
+- elf: Fix tests that rely on ld.so.cache for cross-compiling
+- NEWS: Mention CVE-2021-3326 (iconv assertion with ISO-20220-JP-3)
+- NEWS: Add entry for glibc-hwcaps and deprecate legacy hwcaps
+- x86: Properly set usable CET feature bits [BZ #26625]
+- Update translations
+- Update libc.pot for 2.33 release
+- Update ia64 libm-test-ulps
+- sh: Update libm-tests-ulps
+- ia64: Fix brk call on statup
+- Update sparc libm-test-ulps
+- Update alpha libm-test-ulps
+- powerpc64: Workaround sigtramp vdso return call
+- Fix nss/tst-reload2 for systems without PATH_MAX
+- nsswitch: do not reload if "/" changes
+- elf: Limit tst-prelink-cmp target archs
+- CVE-2021-3326: gconv: Fix assertion failure in ISO-2022-JP-3 module (#1921917)
+
+* Wed Jan 27 2021 Arjun Shankar <arjun@redhat.com> - 2.32.9000-29
+- Auto-sync with upstream branch master,
+  commit df359a25ba6f6bda06104229fbfe284c1fb30915:
+- Revert "Make libc symbols hidden in static PIE" [BZ #27237]
+- benchtests: Do not build bench-timing-type with MODULE_NAME=libc
+- aarch64: Fix the list of tested IFUNC variants [BZ #26818]
+- Update INSTALL with package versions that are known to work
+- aarch64: Move and update the definition of MTE_ENABLED
+- Fix misplaced const
+- Update C-SKY libm-test-ulps
+- manual: Correct argument order in mount examples [BZ #27207]
+- linux: mips: Fix getdents64 fallback on mips64-n32
+- x86: Properly match CPU features in /proc/cpuinfo [BZ #27222]
+- x86-64: Update tst-glibc-hwcaps-2.c for x86-64 baseline
+- powerpc64: Select POWER9 machine for the scv instruction
+- x86: Check ifunc resolver with CPU_FEATURE_USABLE [BZ #27072]
+- Revert "linux: Move {f}xstat{at} to compat symbols" for static build
+- aarch64: revert memcpy optimze for kunpeng to avoid performance degradation
+- Make libc symbols hidden in static PIE
+- csu: Move static pie self relocation later [BZ #27072]
+- Use hidden visibility for early static PIE code
+- csu: Avoid weak ref for __ehdr_start in static PIE
+- configure: Check for static PIE support
+- elf: Avoid RELATIVE relocs in __tunables_init
+- elf: Make the tunable struct definition internal only
+- <sys/platform/x86.h>: Remove the C preprocessor magic
+- posix: Fix fnmatch.c on bootstrap
+- stdlib: Add testcase for BZ #26241
+- posix: Fix regex_internal.h on bootstrap
+- Use <startup.h> in __libc_init_secure
+- elf: Avoid RELATIVE relocation for _dl_sysinfo
+- libmvec: Add extra-test-objs to test-extras
+- Hurd: Add rtld-strncpy-c.c
+- Update MIPS libm-test-ulps.
+- Update arm libm-test-ulps.
+- Update powerpc-nofpu libm-test-ulps.
+- Update hppa libm-test-ulps
+- ARC: nofpu: Regenerate ulps
+- ld.so: Add --list-tunables to print tunable values
+- math/test-tgmath2: Fix fabs failure when no long double
+- x86: Move x86 processor cache info to cpu_features
+- Fix x86 build with --enable-tunable=no
+- ifuncmain6pie: Remove the circular IFUNC dependency [BZ #20019]
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.32.9000-28
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Sat Jan 23 2021 Arjun Shankar <arjun@redhat.com> - 2.32.9000-27
+- Introduce new glibc-doc.noarch subpackage (#1346925)
+- Move the reference manual info pages from glibc-devel to glibc-doc
+- Move debugger interface documentation from glibc to glibc-doc
+- Remove unnecessary README, INSTALL, NEWS files from glibc
+- Remove unnecessary README.timezone and gai.conf files from glibc-common
+
+* Thu Jan 14 2021 Arjun Shankar <arjun@redhat.com> - 2.32.9000-26
+- Deprecate nscd (#1905135)
+- https://fedoraproject.org/wiki/Changes/DeprecateNSCD
+
+* Wed Jan 13 2021 Carlos O'Donell <carlos@redhat.com> - 2.32.9000-25
+- Auto-sync with upstream branch master,
+  commit cf1290064598def8dfeddec3d86d98495aee1fba:
+- Use the right argument code in unnormal tests
+- ldconfig/x86: Store ISA level in cache and aux cache
+- elf: work around a gcc bug in elf_get_dynamic_info
+- x86: Set header.feature_1 in TCB for always-on CET [BZ #27177]
+- posix: consume less entropy on tempname
+- Makerules: Do not require startup files for format.lds probe object
+- install: Replace scripts/output-format.sed with objdump -f [BZ #26559]
+- math: Add BZ#18980 fix back on dbl-64 cosh
+- posix: Sync tempname with gnulib [BZ #26648]
+- posix: Fix return value of system if shell can not be executed [BZ #27053]
+- support: Add xchmod wrapper
+- Update STATX_ATTR_DAX value from Linux 5.10.
+- riscv: Initialize $gp before resolving the IRELATIVE relocation
+- riscv: support GNU indirect function
+- posix: Correct attribute access mode on readlinkat [BZ #27024].
+-  Add xfchmod to libsupport
+- Add xchdir to libsupport.
+- POSIX locale: Fix typo in comment
+- ARC: Regenerate ulps
+- mntent: Use __putc_unlocked instead of fputc_unlocked
+- aarch64: define PI_STATIC_AND_HIDDEN
+- Update NEWS for CVE-2019-25013.
+- x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker [BZ #26717]
+- Remove dbl-64/wordsize-64 (part 2)
+- Remove dbl-64/wordsize-64
+- Add SEGV_MTEAERR and SEGV_MTESERR from Linux 5.10.
+- support: Add support_small_thread_stack_size
+- stdlib: Sync canonicalize with gnulib [BZ #10635] [BZ #26592] [BZ #26341] [BZ #24970]
+- malloc: Add scratch_buffer_dupfree
+- Import filename.h from gnulib
+- Import idx.h from gnulib
+- alpha: Provide wait4 for static library [BZ #27150]
+- aarch64: push the set of rules before falling into slow path
+- nptl: Fix comment typo in pthread_cond_wait.c
+- x86: Check IFUNC definition in unrelocated executable [BZ #20019]
+- hurd: Fix mmap(!MAP_FIXED) on bogus address
+
+* Mon Jan 04 2021 Florian Weimer <fweimer@redhat.com> - 2.32.9000-24
+- Drop glibc-fedora-__libc_multiple_libcs.patch.  Replaced by upstream's
+  __libc_initial flag.
+- Adjust glibc-rh819430.patch to upstream's gnulib merge of fnmatch.
+- Disable -Werror again due to GCC PR98512.
+- Auto-sync with upstream branch master,
+  commit 3ec5d83d2a237d39e7fd6ef7a0bc8ac4c171a4a5:
+- x86-64: Avoid rep movsb with short distance [BZ #27130]
+- aarch64: fix stack missing after sp is updated
+- nptl: Remove set*id, set*gid files which are not built
+- Drop nan-pseudo-number.h usage from tests
+- posix: Sync fnmatch with gnulib
+- Sync flexmember.h with gnulib
+- Sync intprops.h with gnulib
+- posix: Sync glob code with gnulib
+- posix: Sync regex code with gnulib
+- Move generic nan-pseudo-number.h to ldbl-96
+- Sync FDL from https://www.gnu.org/licenses/fdl-1.3.texi
+- Sync move-if-change from Gnulib
+- Update automatically-generated copyright dates
+- Update copyright dates not handled by scripts/update-copyrights.
+- Update copyright dates with scripts/update-copyrights
+- aarch64: use PTR_ARG and SIZE_ARG instead of DELOUSE
+- nonstring: Enable __FORTIFY_LEVEL=3
+- string: Enable __FORTIFY_LEVEL=3
+- Introduce _FORTIFY_SOURCE=3
+- Warn on unsupported fortification levels
+- powerpc: Use scv instruction on clone when available
+- powerpc: Runtime selection between sc and scv for syscalls
+- malloc: preserve errno on mcheck hooks [BZ #17924]
+- x86 long double: Add tests for pseudo normal numbers
+- x86 long double: Consider pseudo numbers as signaling
+- io: Remove xmknod{at} implementations
+- io: Remove xstat implementations
+- free: preserve errno [BZ#17924]
+- hurd: Accept including hurd/version.h
+- hurd: Add WSTOPPED/WCONTINUED/WEXITED/WNOWAIT support [BZ #23091]
+- support: Make support_process_state_wait wait less
+- hurd: set sigaction for signal preemptors in arch-independent file
+- hurd: Fix spawni SPAWN_XFLAGS_TRY_SHELL with empty argv
+- hurd: Try shell in posix_spawn* only in compat mode
+- Remove _ISOMAC check from <cpu-features.h>
+- x86: Remove the duplicated CPU_FEATURE_CPU_P
+- Partially revert 681900d29683722b1cb0a8e565a0585846ec5a61
+- x86 long double: Support pseudo numbers in isnanl
+- x86 long double: Support pseudo numbers in fpclassifyl
+- MTE: Do not pad size in realloc_check
+- tests-mcheck: New variable to run tests with MALLOC_CHECK_=3
+- elf: Account for glibc-hwcaps/ prefix in _dl_important_hwcaps
+- misc: Use __ferror_unlocked instead of ferror
+- s390x: Regenerate ulps
+- powerpc: Regenerate ulps
+- addmntent: Remove unbounded alloca usage from getmntent [BZ#27083]
+- <sys/platform/x86.h>: Add Intel LAM support
+- i386: Regenerate ulps
+- aarch64: update ulps.
+- aarch64: Add aarch64-specific files for memory tagging support
+- aarch64: Add sysv specific enabling code for memory tagging
+- linux: Add compatibility definitions to sys/prctl.h for MTE
+- malloc: Basic support for memory tagging in the malloc() family
+- elf: Add a tunable to control use of tagged memory
+- config: Allow memory tagging to be enabled when configuring glibc
+- alpha: Remove anonymous union in struct stat [BZ #27042]
+- add inputs to auto-libm-test-in yielding larger errors (binary64, x86_64)
+- m68k: fix clobbering a5 in setjmp() [BZ #24202]
+- iconv add iconv_close before the function returned with bad value.
+- iconv: use iconv_close after iconv_open
+- Fix buffer overrun in EUC-KR conversion module (bz #24973)
+- hurd: Make trampoline fill siginfo ss_sp from sc_uesp
+- Hurd: make sigstates hold a reference on thread ports
+- profil-counter: Add missing SIGINFO case
+- hurd: implement SA_SIGINFO signal handlers.
+- hurd: Fix ELF_MACHINE_USER_ADDRESS_MASK value
+- hurd: Note when the vm_map kernel bug was fixed
+- hurd: Also turn KERN_INVALID_ADDRESS to EINVAL
+- ieee754: Remove unused __sin32 and __cos32
+- ieee754: Remove slow paths from asin and acos
+- getenv: Move call to strlen to the branch it's used in.
+- Update kernel version to 5.10 in tst-mman-consts.py.
+- s390x: Require GCC 7.1 or later to build glibc.
+- malloc: Use __libc_initial to detect an inner libc
+- Replace __libc_multiple_libcs with __libc_initial flag
+- {nptl,htl}/semaphoreP.h: clean up
+- htl: Get sem_open/sem_close/sem_unlink support [BZ #25524]
+- pthread: Move semaphore initialization for open to semaphoreP.h
+- Mark __libc_freeres_fn as used [BZ #27002]
+- Update syscall lists for Linux 5.10.
+- htl: Add pshared semaphore support
+- hurd: Add LLL_PRIVATE and LLL_SHARED
+- hurd: Add __libc_open and __libc_close
+- htl: Add futex-internal.h
+- hurd: Add __lll_abstimed_wait_intr
+- hurd: make lll_* take a variable instead of a ptr
+- hurd: Rename LLL_INITIALIZER to LLL_LOCK_INITIALIZER
+- Use Linux 5.10 in build-many-glibcs.py.
+
+* Wed Dec 16 2020 DJ Delorie <dj@redhat.com> - 2.32.9000-23
+- Fix conditionals for _enable_debug_packages and benchtests [BZ #1902514]
+
+* Tue Dec 15 2020 Patsy Griffin <patsy@redhat.com> - 2.32.9000-22
+- Auto-sync with upstream branch master,
+  commit 4d0985543f479a6f421d4d8a9e0d1dc71c9c2c53.
+- elf: Record libc.so link map when it is the main program (bug 20972)
+- Use GMP 6.2.1 in build-many-glibcs.py.
+- aarch64: remove the strlen_asimd symbol
+- aarch64: fix static PIE start code for BTI [BZ #27068]
+- elf: Fix failure handling in _dl_map_object_from_fd
+- elf: inline lose for error handling
+- Remove strtoimax, strtoumax, wcstoimax, wcstoumax inlines
+- nsswitch: handle missing actions properly
+- x86: Remove the default REP MOVSB threshold tunable value [BZ #27061]
+- elf.h: Remove SHF_GNU_BUILD_NOTE.
+- elf.h: fix spelling typos in comments
+- Fix spelling and grammar in several comments
+- malloc: Detect infinite-loop in _int_free when freeing tcache [BZ#27052]
+- elf: Fix dl-load.c
+- elf: Include libc.so.6 as main program in dependency sort (bug 20972)
+- support: Add support_slibdir_prefix variable
+- aarch64: Use mmap to add PROT_BTI instead of mprotect [BZ #26831]
+- elf: Pass the fd to note processing
+- elf: Move note processing after l_phdr is updated
+- aarch64: align address for BTI protection [BZ #26988]
+- aarch64: Fix missing BTI protection from dependencies [BZ #26926]
+- Fix linknamespace errors in nss_database.c if build with -Os.
+- treewide: fix incorrect spelling of indices in comments
+- linux: Consolidate brk implementation
+- elf: Include <sys/param.h> in cache.c
+- s390x: Add glibc-hwcaps support
+- elf: Fix run-time dependencies of tst-dlopen-fail-2
+- Handle out-of-memory case in svc_tcp.c/svc_unix.c:rendezvous_request.
+- elf: Fix incorrect comparison in sort_priorities_by_name
+- S390: Derive float_t from FLT_EVAL_METHOD
+- Fix parsing of /sys/devices/system/cpu/online (bug 25859)
+- Make strtoimax, strtoumax, wcstoimax, wcstoumax into aliases
+- Fixed typos in "NEWS for version 2.32"
+- Add NEWS entry for CVE-2020-29562 (BZ #26923)
+- iconv: Fix incorrect UCS4 inner loop bounds (BZ#26923)
+- Drop glibc-rh1906066 and glibc-rh741105 patches fixed by sync.
+
+* Mon Dec 14 2020 Florian Weimer <fweimer@redhat.com> - 2.32.9000-21
+- Re-enable -Werror everywhere (#1888246)
+
+* Wed Dec 09 2020 DJ Delorie <dj@redhat.com> - 2.32.9000-20
+- nsswitch: handle missing actions properly (temporary fix for 1906066)
+
+* Mon Dec 07 2020 Arjun Shankar <arjun@redhat.com> - 2.32.9000-19
+- Auto-sync with upstream branch master,
+  commit 088e9625378f25607acff3daf7a79cbdee497043:
+- x86: Rename readelflib.c
+- nsswitch: use new internal API (callers)
+- nsswitch: user new internal API (tests)
+- nsswitch: use new internal API (core)
+- nss: Implement <nss_database.h>
+- <nss_action.h>: New abstraction for combining NSS modules and NSS actions
+- nss: Introduce <nss_module.h>
+- Add scripts/move-symbol-to-libc.py
+
+* Fri Dec 04 2020 Arjun Shankar <arjun@redhat.com> - 2.32.9000-18
+- Drop glibc-revert-fxstat-compat.patch; applied upstream.
+- Drop glibc-revert-mknod-compat.patch; applied upstream.
+- Auto-sync with upstream branch master,
+  commit 4c38c1a229bc3628269ad98bd7e8d31d118d91f6:
+- powerpc64le: Add glibc-hwcaps support
+- x86: Adjust tst-cpu-features-supports.c for GCC 11
+- x86: Set RDRAND usable if CPU supports RDRAND
+- elf: Add missing <stddef.h> header to elf/dl-hwcaps.h
+- lowlevellock-futex: Remove not used macros
+- futex: Remove not used futex_reltimed_wait{_cancelable}
+- y2038: Convert gai_suspend to support 64 bit time
+- symbols: Add defines for libanl's libanl_hidden_{def|proto}
+- x86_64: Add glibc-hwcaps support
+- elf: Add glibc-hwcaps subdirectory support to ld.so cache processing
+- elf: Process glibc-hwcaps subdirectories in ldconfig
+- elf: Implement tail merging of strings in ldconfig
+- elf: Implement a string table for ldconfig, with tail merging
+- elf: Add extension mechanism to ld.so.cache
+- elf: Add endianness markup to ld.so.cache (bug 27008)
+- elf: Add glibc-hwcaps support for LD_LIBRARY_PATH
+- elf: Synchronize <elf.h> section header flags with binutils
+- x86: Fix THREAD_SELF definition to avoid ld.so crash (bug 27004)
+- htl: Add hidden def for __pthread_create/detach
+- manual: Clarify File Access Modes section and add O_PATH
+- htl: Add missing symbols
+- Revert "linux: Move xmknod{at} to compat symbols"
+- Revert "linux: Move {f}xstat{at} to compat symbols"
+- elf.h: Fix spelling of EM_TILE64 comment
+- nptl: Fix __futex_clocklock64 return error check [BZ #26964]
+- powerpc64le: ifunc select *f128 routines in multiarch mode
+- y2038: Convert aio_suspend to support 64 bit time
+- Fix typo in NEWS file
+- nptl: Add EOVERFLOW checks for futex calls
+- nptl: Fix PTHREAD_PRIO_PROTECT timed lock
+- sh: Add sh4 fpu Implies folder
+- io: nftw/ftw: Fix stack overflow with large nopenfd [BZ #26353]
+- elf: Introduce enum opt_format in the ldconfig implementation
+- support: Add support_copy_file
+- NEWS entry for commit b4f020c9b408fb3d1d3d4901c4a71839145f8791
+- timezone: Change zdump installation to bin directory
+- nptl: Return EINVAL for invalid clock for pthread_clockjoin_np
+- nptl: Return EINVAL for pthread_mutex_clocklock/PI with CLOCK_MONOTONIC [BZ #26801]
+- nptl: Replace lll_futex_wake with futex-internal.h
+- nptl: Replace lll_futex_supported_clockid with futex-internal.h
+- nptl: Replace lll_futex_{timed_}wait by futex-internal.h
+- nptl: Replace lll_timedwait with __futex_abstimed_wait64
+- nptl: Replace __futex_clocklock_wait64 with __futex_abstimed_wait64
+- nptl: Remove _futex_clock_wait_bitset64
+- nptl: Consolidate __futex_abstimed_wait_{cancelable}64
+- nptl: Extend __futex_abstimed_wait_cancelable64 comment
+- nptl: Remove clockwait_tid
+- nptl: Remove futex_wait_cancelable
+- nptl: Remove unused internal futex functions
+- Mark mtrace tests UNSUPPORTED if bug-ga2.mtrace or tst-leaks2.mtrace are missing
+- elf: Fix uninitialized variable for _dl_write
+- powerpc: Make PT_THREAD_POINTER available to assembly code
+- Use libnss_files.so for tests posix/bug-ga2 and resolv/tst-leaks2 [BZ #26821]
+- hurd report-wait: Fix stpcpy usage
+- hurd S_msg_report_wait: Fix detecting fd ports
+- hurd S_msg_report_wait: Fix reporting ports
+- hurd: Fix strcpy calls
+- hurd: Fix _S_msg_get/set_env_variable prototype
+- hurd: Enable using ifunc
+- Add {,sysdep-}ld-library-path make variable
+- nptl: Move stack list variables into _rtld_global
+- hurd: let _dl_argv and __libc_stack_end be relro
+- hurd: Remove some remnants of cthreads
+- nanosleep: Pass NULL when rem == NULL on ports with __TIMESIZE != 64
+- y2038: Convert thrd_sleep to support 64 bit time
+- y2038: Convert mtx_timedlock to support 64 bit time
+- y2038: Convert cnd_timedwait to support 64 bit time
+- hurd: Drop CLOCK_MONOTONIC change which slipped in
+- hurd: make ptsname fail with ENOTTY on non-master-pty
+- mach: Add missing assert.h include
+- hurd: break relocation loop between libc.so and lib{mach,hurd}user.so
+- Remove obsolete defines for HPUX support from fcntl.h and update O_NONBLOCK.
+- Remove tls.h inclusion from internal errno.h
+- nptl: Eliminate <smp.h> and __is_smp
+- powerpc: Eliminate UP macro conditionals
+- x86: Remove UP macro.  Define LOCK_PREFIX unconditionally.
+- alpha: Remove UP preprocessor conditionals
+- hurd: Make sure signals get started
+- hurd: initialize libpthread before starting the signal thread
+- hurd: Make _hurd_libc_proc_init idempotent
+- powerpc: Add optimized stpncpy for POWER9
+- powerpc: Add optimized strncpy for POWER9
+- Don't use nested function in test-ffs
+- Use __builtin___stpncpy_chk when available
+- tests: Remove NULL check for an array
+- hurd: Move {,f,l}xstat{,at} and xmknod{at} to compat symbols
+- hurd: Notify the proc server later during initialization
+- htl: Initialize later
+- htl: Keep thread signals blocked during its initialization
+- htl: Fix spurious symbols in namespaces
+- Use O_CLOEXEC in sysconf [BZ #26791]
+- struct _Unwind_Exception alignment should not depend on compiler flags
+- hurd: keep only required PLTs in ld.so
+- hurd: Add missing startup calls
+- riscv: Get cache information through sysconf
+- RISC-V: Add _dl_start_user.
+
+* Thu Nov 26 2020 Florian Weimer <fweimer@redhat.com> - 2.32.9000-17
+- s390x: Do not rewrite program interpreter symlink (make install is enough)
+
+* Tue Nov 10 2020 Carlos O'Donell <carlos@redhat.com> - 2.32.9000-16
+- Remove the work around for systemd-nspawn (#1869030).
+
+* Mon Nov 09 2020 DJ Delorie <dj@redhat.com> - 2.32.9000-15
+- Auto-sync with upstream branch master,
+  commit 75a193b7611bade31a150dfcc528b973e3d46231.
+- linux: Allow adjtime with NULL argument [BZ #26833]
+- aarch64: Add unwind information to _start (bug 26853)
+- bsd unlockpt: unlockpt needs to fail with EINVAL, not ENOTTY
+- Rearrange bsd_getpt vs bsd_openpt and implement posix_openpt on BSD
+- Remove __warndecl
+- Remove __warn_memset_zero_len [BZ #25399]
+- iconv: Accept redundant shift sequences in IBM1364 [BZ #26224]
+- msg: Remove redundant #include <sys/msg.h> header
+- tst-setuid1-static-ENV: Add $(common-objpfx)nss [BZ #26820]
+
+* Tue Nov 03 2020 Patsy Griffin <patsy@redhat.com> - 2.32.9000-14
+- Auto-sync with upstream branch master,
+  commit e156dabc766d6f6f99ce9402999eae380a3ec1f2.
+- aarch64: Add variant PCS lazy binding test [BZ #26798]
+- aarch64: Fix DT_AARCH64_VARIANT_PCS handling [BZ #26798]
+- hurd: Correct 'ethenet' spelling
+- Avoid -Wstringop-overflow warning in pthread_cleanup_push macros
+- Disable spurious -Warray-bounds for ypclnt.c (bug 26687)
+- Do not use array parameter to new_composite_name (bug 26726)
+- Disable spurious -Wstringop-overflow for setjmp/longjmp (bug 26647)
+- malloc debug: fix compile error when enable macro MALLOC_DEBUG > 1
+- tst-tcfree2: adjust coding style.
+- elf: In ldconfig, extract the new_sub_entry function from search_dir
+- Use MPC 1.2.1 in build-many-glibcs.py.
+- Argument Syntax: Use "option", @option, and @command.
+- elf: Unify old and new format cache handling code in ld.so
+- x86: Restore processing of cache size tunables in init_cacheinfo
+- Make elf.h header self contained.
+- x86: Optimizing memcpy for AMD Zen architecture.
+- Hurd: Fix ftime build
+- Add IP_RECVERR_RFC4884 and IPV6_RECVERR_RFC4884 from Linux 5.9.
+- misc: Add internal __getauxval2 function
+- Remove NEWS entry about ftime removal
+- time: Add 64-bit time_t support for ftime
+- Reinstate ftime and add deprecate message on ftime usage
+- Update kernel version to 5.9 in tst-mman-consts.py.
+- Amend grammar and add a description
+- Fix typo in NEWS file
+- Remove timing related checks of time/tst-cpuclock1
+- Update syscall lists for Linux 5.9.
+- Use Linux 5.9 in build-many-glibcs.py.
+- Reword description of SXID_* tunable properties
+- New benchtest: pthread locks
+- y2038: nptl: Provide __futex_clock_wait_bitset64 to support 64 bit bitset
+- C-SKY: Make dynamic linker's name compitable with the older gcc.
+- Revert "C-SKY:Fix dynamic linker's name when mfloat-abi=softfp."
+- Move vtimes to a compatibility symbol
+- y2038: linux: Provide __time64 implementation
+- rt: Fix typos in comments in <aio.h>
+- C-SKY:Fix dynamic linker's name when mfloat-abi=softfp.
+- Drop the glibc-revert-ftime-compat.patch.
+
+* Thu Oct 29 2020 DJ Delorie <dj@redhat.com> - 2.32.9000-13
+- Add BuildRequires for perl (malloc/mtrace) if running the testsuite.
+
+* Wed Oct 21 2020 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.32.9000-12
+- Revert __xstat64 symbol removal.
+- Revert xmknod* symbol removal.
+- Revert ftime symbol removal.
+
+* Sun Oct 18 2020 Patsy Griffin <patsy@redhat.com> - 2.32.9000-11
+- Auto-sync with upstream branch master,
+  commit 0f09154c64005e78b61484ae87b5ea2028051ea0.
+- x86: Initialize CPU info via IFUNC relocation [BZ 26203]
+- Add NEWS entry for ftime compatibility move
+- support: Add create_temp_file_in_dir
+- linux: Add __readdir_unlocked
+- linux: Simplify opendir buffer allocation
+- linux: Move posix dir implementations to Linux
+- linux: Add 64-bit time_t support for wait3
+- Move ftime to a compatibility symbol
+- linux: Fix time64 support for futimesat
+- linux: Use INTERNAL_SYSCALL on fstatat{64}
+- shm tests: Append PID to names passed to shm_open [BZ #26737]
+- sysvipc: Fix tst-sysvshm-linux on x32
+- x86/CET: Update vfork to prevent child return
+- resolv: Serialize processing in resolv/tst-resolv-txnid-collision
+- statfs: add missing f_flags assignment
+- y2038: Remove not used __fstatat_time64 define
+- y2038: nptl: Convert pthread_mutex_{clock|timed}lock to support 64 bit
+- sysvipc: Return EINVAL for invalid shmctl commands
+- sysvipc: Fix IPC_INFO and SHM_INFO handling [BZ #26636]
+- AArch64: Use __memcpy_simd on Neoverse N2/V1
+- resolv: Handle transaction ID collisions in parallel queries (bug 26600)
+- support: Provide a way to clear the RA bit in DNS server responses
+- support: Provide a way to reorder responses within the DNS test server
+- Add missing stat/mknod symbol on libc.abilist some ABIs
+- manual: correct the spelling of "MALLOC_PERTURB_" [BZ #23015]
+- manual: replace an obsolete collation example with a valid one
+- rtld: fix typo in comment
+- elf: Add missing <dl-procinfo.h> header to elf/dl-usage.c
+- hurd: support clock_gettime(CLOCK_PROCESS/THREAD_CPUTIME_ID)
+- linux: Move xmknod{at} to compat symbols
+- linux: Add {f}stat{at} y2038 support
+- linux: Move {f}xstat{at} to compat symbols
+- linux: Disentangle fstatat from fxstatat
+- linux: Implement {l}fstat{at} in terms of fstatat
+- linux: Move the struct stat{64} to struct_stat.h
+- Remove mknod wrapper functions, move them to symbols
+- Remove stat wrapper functions, move them to exported symbols
+- <sys/platform/x86.h>: Add FSRCS/FSRS/FZLRM support
+- <sys/platform/x86.h>: Add Intel HRESET support
+- <sys/platform/x86.h>: Add AVX-VNNI support
+- <sys/platform/x86.h>: Add AVX512_FP16 support
+- <sys/platform/x86.h>: Add Intel UINTR support
+- elf: Do not pass GLRO(dl_platform), GLRO(dl_platformlen) to _dl_important_hwcaps
+- elf: Enhance ld.so --help to print HWCAP subdirectories
+- elf: Add library search path information to ld.so --help
+- sunrpc: Adjust RPC function declarations to match Sun's (bug 26686]
+- Avoid GCC 11 -Warray-parameter warnings [BZ #26686].
+- elf: Make __rtld_env_path_list and __rtld_search_dirs global variables
+- elf: Print the full name of the dynamic loader in the ld.so help message
+- elf: Use the term "program interpreter" in the ld.so help message
+- scripts/update-copyrights: Update csu/version.c, elf/dl-usage.c
+- elf: Implement ld.so --version
+- nptl: Add missing cancellation flags on lockf
+- Update mips64 libm-test-ulps
+- Update alpha libm-test-ulps
+- elf: Implement ld.so --help
+- elf: Record whether paths come from LD_LIBRARY_PATH or --library-path
+- elf: Move ld.so error/help output to _dl_usage
+- elf: Extract command-line/environment variables state from rtld.c
+
+* Wed Oct 14 2020 Florian Weimer <fweimer@redhat.com> - 2.32.9000-10
+- Disable -Werror on ELN (#1888246)
+
+* Wed Oct 14 2020 Florian Weimer <fweimer@redhat.com> - 2.32.9000-9
+- Make glibc.spec self-contained (#1887097)
+
+* Thu Oct 08 2020 Arjun Shankar <arjun@redhat.com> - 2.32.9000-8
+- Drop glibc-fix-float128-benchtests.patch; applied upstream.
+- Auto-sync with upstream branch master,
+  commit 72d36ffd7db55ae599f4c77feb0eae25a0f3714e:
+- elf: Implement __rtld_malloc_is_complete
+- __vfscanf_internal: fix aliasing violation (bug 26690)
+- Revert "Fix missing redirects in testsuite targets"
+- nptl: Add missing cancellation flags on futex_internal and pselect32
+- elf: Implement _dl_write
+- elf: Do not search HWCAP subdirectories in statically linked binaries
+- Linux: Require properly configured /dev/pts for PTYs
+- Linux: unlockpt needs to fail with EINVAL, not ENOTTY (bug 26053)
+- login/tst-grantpt: Convert to support framework, more error checking
+- posix: Fix -Warray-bounds instances building timer_create [BZ #26687]
+- Replace Minumum/minumum with Minimum/minimum
+- Optimize scripts/merge-test-results.sh
+- Fix GCC 11 -Warray-parameter warning for __sigsetjmp (bug 26647)
+- manual: Fix typo
+- y2038: nptl: Convert pthread_rwlock_{clock|timed}{rd|wr}lock to support 64
+  bit time
+- Y2038: nptl: Provide futex_abstimed_wait64 supporting 64 bit time
+- sysvipc: Return EINVAL for invalid msgctl commands
+- sysvipc: Fix IPC_INFO and MSG_INFO handling [BZ #26639]
+- sysvipc: Return EINVAL for invalid semctl commands
+- sysvipc: Fix SEM_STAT_ANY kernel argument pass [BZ #26637]
+- aarch64: enforce >=64K guard size [BZ #26691]
+- sysvipc: Fix semtimedop for Linux < 5.1 for 64-bit ABI
+- nptl: futex: Move __NR_futex_time64 alias to beginning of futex-internal.h
+- nptl: Provide proper spelling for 32 bit version of futex_abstimed_wait
+- string: Fix strerrorname_np return value [BZ #26555]
+- Set tunable value as well as min/max values
+- ld.so: add an --argv0 option [BZ #16124]
+- Reversing calculation of __x86_shared_non_temporal_threshold
+- linux: Add time64 recvmmsg support
+- linux: Add time64 support for nanosleep
+- linux: Consolidate utimes
+- linux: Use 64-bit time_t syscall on clock_getcputclockid
+- linux: Add time64 sigtimedwait support
+- linux: Add time64 select support
+- nptl: Fix __futex_abstimed_wait_cancellable32
+- sysvipc: Fix semtimeop for !__ASSUME_DIRECT_SYSVIPC_SYSCALLS
+- hurd: add ST_RELATIME
+- intl: Handle translation output codesets with suffixes [BZ #26383]
+- bench-strcmp.c: Add workloads on page boundary
+- bench-strncmp.c: Add workloads on page boundary
+- strcmp: Add a testcase for page boundary
+- strncmp: Add a testcase for page boundary [BZ #25933]
+- Set locale related environment variables in debugglibc.sh
+- benchtests: Run _Float128 tests only on architectures that support it
+- powerpc: Protect dl_powerpc_cpu_features on INIT_ARCH() [BZ #26615]
+- x86: Harden printf against non-normal long double values (bug 26649)
+- x86: Use one ldbl2mpn.c file for both i386 and x86_64
+- Define __THROW to noexcept for C++11 and later
+
+* Mon Sep 21 2020 Arjun Shankar <arjun@redhat.com> - 2.32.9000-7
+- Adjust glibc-rh741105.patch.
+- Add glibc-fix-float128-benchtests.patch to allow building on armv7hl.
+- Auto-sync with upstream branch master,
+  commit cdf645427d176197b82f44308a5e131d69fb53ad:
+- Update mallinfo2 ABI, and test
+- Allow memset local PLT reference for RISC-V.
+- powerpc: fix ifunc implementation list for POWER9 strlen and stpcpy
+- nscd: bump GC cycle during cache pruning (bug 26130)
+- x86: Use HAS_CPU_FEATURE with IBT and SHSTK [BZ #26625]
+- <sys/platform/x86.h>: Add Intel Key Locker support
+- Fix handling of collating symbols in fnmatch (bug 26620)
+- pselect.c: Pass a pointer to SYSCALL_CANCEL [BZ #26606]
+- y2038: nptl: Convert sem_{clock|timed}wait to support 64 bit time
+- hurd: Add __x86_get_cpu_features to ld.abilist
+- x86: Install <sys/platform/x86.h> [BZ #26124]
+- linux: Add time64 pselect support
+- linux: Add time64 semtimedop support
+- linux: Add ppoll time64 optimization
+- linux: Simplify clock_getres
+- Update sparc libm-test-ulps
+- Remove internal usage of extensible stat functions
+- Linux: Consolidate xmknod
+- linux: Consolidate fxstatat{64}
+- linux: Consolidate fxstat{64}
+- linux: Consolidate lxstat{64}
+- linux: Consolidate xstat{64}
+- linux: Define STAT64_IS_KERNEL_STAT64
+- linux: Always define STAT_IS_KERNEL_STAT
+- Update powerpc libm-test-ulps
+- benchtests: Add "workload" traces for sinf128
+- benchtests: Add "workload" traces for sinf
+- benchtests: Add "workload" traces for sin
+- benchtests: Add "workload" traces for powf128
+- benchtests: Add "workload" traces for pow
+- benchtests: Add "workload" traces for expf128
+- benchtests: Add "workload" traces for exp
+- nptl: futex: Provide correct indentation for part of
+  __futex_abstimed_wait_cancelable64
+
+* Tue Sep 08 2020 DJ Delorie <dj@redhat.com> - 2.32.9000-6
+- Auto-sync with upstream branch master,
+  commit e74b61c09a2a2ab52153e731225ccba5078659b1.
+- Disable -Wstringop-overread for some string tests
+- string: Fix GCC 11 `-Werror=stringop-overread' error
+- C11 threads: Fix inaccuracies in testsuite
+- elf.h: Add aarch64 bti/pac dynamic tag constants
+- x86: Set CPU usable feature bits conservatively [BZ #26552]
+
+* Wed Sep 02 2020 Patsy Griffin <patsy@redhat.com> - 2.32.9000-5
+- Auto-sync with upstream branch master,
+  commit 86a912c8634f581ea42ec6973553dde7f058cfbf.
+- Update i686 ulps.
+- Use LFS readdir in generic POSIX getcwd [BZ# 22899]
+- linux: Remove __ASSUME_ATFCTS
+- Sync getcwd with gnulib
+- x86-64: Fix FMA4 detection in ifunc [BZ #26534]
+- y2038: nptl: Convert pthread_cond_{clock|timed}wait to support 64 bit time
+- malloc: Fix mallinfo deprecation declaration
+- x32: Add <fixup-asm-unistd.h> and regenerate arch-syscall.h
+- Add mallinfo2 function that support sizes >= 4GB.
+- Remove obsolete default/nss code
+- AArch64: Improve backwards memmove performance
+- Add RISC-V 32-bit target to build-many-glibcs.py
+- Documentation for the RISC-V 32-bit port
+- RISC-V: Build infrastructure for 32-bit port
+- RISC-V: Add rv32 path to RTLDLIST in ldd
+- riscv32: Specify the arch_minimum_kernel as 5.4
+- RISC-V: Fix llrint and llround missing exceptions on RV32
+- RISC-V: Add the RV32 libm-test-ulps
+- RISC-V: Add 32-bit ABI lists
+- RISC-V: Add hard float support for 32-bit CPUs
+- RISC-V: Support the 32-bit ABI implementation
+- RISC-V: Add arch-syscall.h for RV32
+- RISC-V: Add path of library directories for the 32-bit
+- RISC-V: Support dynamic loader for the 32-bit
+- RISC-V: Add support for 32-bit vDSO calls
+- RISC-V: Use 64-bit-time syscall numbers with the 32-bit port
+- RISC-V: Cleanup some of the sysdep.h code
+- RISC-V: Use 64-bit time_t and off_t for RV32 and RV64
+- io/lockf: Include bits/types.h before __OFF_T_MATCHES_OFF64_T check
+- elf/tst-libc_dlvsym: Add a TEST_COMPAT around some symbol tests
+- hurd: define BSD 4.3 ioctls only under __USE_MISC
+- string: test strncasecmp and strncpy near page boundaries
+- linux: Simplify utimensat
+- linux: Simplify timerfd_settime
+- linux: Simplify timer_gettime
+- linux: Simplify sched_rr_get_interval
+- linux: Simplify ppoll
+- linux: Simplify mq_timedsend
+- linux: Simplify mq_timedreceive
+- linux: Simplify clock_settime
+- linux: Simplify clock_nanosleep
+- linux: Simplify clock_gettime
+- linux: Simplify clock_adjtime
+- linux: Add helper function to optimize 64-bit time_t fallback support
+- S390: Sync HWCAP names with kernel by adding aliases [BZ #25971]
+- [vcstocl] Import ProjectQuirks from its own file
+- build-many-glibcs.py: Add a s390x -O3 glibc variant.
+- Fix namespace violation in stdio.h and sys/stat.h if build with optimization. [BZ #26376]
+- Add C2x BOOL_MAX and BOOL_WIDTH to limits.h.
+- Use MPC 1.2.0 in build-many-glibcs.py.
+- Add new STATX_* constants from Linux 5.8 to bits/statx-generic.h.
+- Correct locking and cancellation cleanup in syslog functions (bug 26100)
+
+* Thu Aug 20 2020 Carlos O'Donell <carlos@redhat.com> - 2.32.9000-4
+- Support building glibc in a mock chroot using older systemd-nspawn (#1869030).
+
+* Tue Aug 18 2020 Carlos O'Donell <carlos@redhat.com> - 2.32.9000-3
+- Suggest installing minimal localization e.g. C, POSIX, C.UTF-8.
+
+* Mon Aug 17 2020 DJ Delorie <dj@redhat.com> - 2.32.9000-2
+- Auto-sync with upstream branch master,
+  commit cb7e7a5ca1d6d25d59bc038bdc09630e507c41e5.
+- nptl: Handle NULL abstime [BZ #26394]
+- Update build-many-glibcs.py for binutils ia64 obsoletion.
+- Update kernel version to 5.8 in tst-mman-consts.py.
+- y2038: nptl: Convert pthread_{clock|timed}join_np to support 64 bit time
+- aarch64: update ulps.
+
+* Wed Aug 12 2020 Patsy Griffin <patsy@redhat.com> - 2.32.9000-1
+- Auto-sync with upstream branch master,
+  commit 0be0845b7a674dbfb996f66cd03d675f0f6028dc:
+- S390: Regenerate ULPs.
+- manual: Fix sigdescr_np and sigabbrev_np return type (BZ #26343)
+- math: Update x86_64 ulps
+- math: Regenerate auto-libm-test-out-j0
+- manual: Put the istrerrorname_np and strerrordesc_np return type in braces
+- Linux: Use faccessat2 to implement faccessat (bug 18683)
+- manual: Fix strerrorname_np and strerrordesc_np return type (BZ #26343)
+- math: Fix inaccuracy of j0f for x >= 2^127 when sin(x)+cos(x) is tiny
+- Update syscall lists for Linux 5.8.
+- Use Linux 5.8 in build-many-glibcs.py.
+- htl: Enable tst-cancelx?[45]
+- tst-cancel4: Make blocking on write more portable
+- hurd: Add missing hidden def
+- hurd: Rework sbrk
+- hurd: Implement basic sched_get/setscheduler
+- x86: Rename Intel CPU feature names
+- manual: Fix some @code/@var formatting glitches chapter Date And Time
+- Copy regex_internal.h from Gnulib
+- Copy regex BITSET_WORD_BITS porting from Gnulib
+- Sync regex.h from Gnulib
+- Sync mktime.c from Gnulib
+- Sync intprops.h from Gnulib
+- Open master branch for glibc 2.33 development.
+
+* Thu Aug 06 2020 Arjun Shankar <arjun@redhat.com> - 2.32-1
+- Auto-sync with upstream branch release/2.32/master,
+  commit 3de512be7ea6053255afed6154db9ee31d4e557a:
+- Prepare for glibc 2.32 release.
+- Regenerate configure scripts.
+- Update NEWS with bugs.
+- Update translations.
+- Don't mix linker error messages into edited scripts
+- benchtests/README update.
+- RISC-V: Update lp64d libm-test-ulps according to HiFive Unleashed
+- aarch64: update NEWS about branch protection
+- Add NEWS entry for CVE-2016-10228 (bug 19519)
+- powerpc: Fix incorrect cache line size load in memset (bug 26332)
+- Update Nios II libm-test-ulps file.
+
+* Fri Jul 31 2020 Patsy Griffin <patsy@redhat.com> - 2.31.9000-24
+- Auto-sync with upstream branch master,
+  commit 7f1a08cff82255cd4252a2c75fd65b80a6a170bf.
+- Move NEWS entry for CVE-2020-1751 to the 2.31 section
+- NEWS: Deprecate weak libpthread symbols for single-threaded checks
+- NEWS: Deprecate nss_hesiod
+- nptl: Zero-extend arguments to SETXID syscalls [BZ #26248]
+- Use binutils 2.35 branch in build-many-glibcs.py.
+- aarch64: Use future HWCAP2_MTE in ifunc resolver
+- Update x86-64 libm-test-ulps
+- aarch64: Respect p_flags when protecting code with PROT_BTI
+- Disable warnings due to deprecated libselinux symbols used by nss and nscd
+- Regenerate INSTALL for ARC port updates.
+- Update libc.pot for 2.32 release.
+- powerpc: Fix POWER10 selection
+- powerpc64le: guarantee a .gnu.attributes section [BZ #26220]
+
+* Wed Jul 29 2020 Florian Weimer <fweimer@redhat.com> - 2.31.9000-23
+- Inherit -mbranch-protection=standard from redhat-rpm-config (for aarch64)
+
+* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org>
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Wed Jul 22 2020 Carlos O'Donell <carlos@redhat.com> - 2.31.9000-21
+- Use make macros
+- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
+
+* Tue Jul 21 2020 Arjun Shankar <arjun@redhat.com> - 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.  (#1855729)
+- 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_files.h>
+- 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 <rpc/netdb.h> 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 <fweimer@redhat.com> - 2.31.9000-19
+- Disable rseq registration by default to help Firefox (#1855729)
+
+* Thu Jul 09 2020 Florian Weimer <fweimer@redhat.com> - 2.31.9000-18
+- Auto-sync with upstream branch master,
+  commit ffb17e7ba3a5ba9632cee97330b325072fbe41dd:
+- rtld: Avoid using up static TLS surplus for optimizations [BZ #25051]
+- rtld: Account static TLS surplus for audit modules
+- rtld: Add rtld.nns tunable for the number of supported namespaces
+- Remove --enable-obsolete-nsl configure flag
+- Move non-deprecated RPC-related functions from sunrpc to inet
+- aarch64: add NEWS entry about branch protection support
+- aarch64: redefine RETURN_ADDRESS to strip PAC
+- aarch64: fix pac-ret support in _mcount
+- aarch64: Add pac-ret support to assembly files
+- aarch64: configure check for pac-ret code generation
+- aarch64: ensure objects are BTI compatible
+- aarch64: enable BTI at runtime
+- aarch64: fix RTLD_START for BTI
+- aarch64: fix swapcontext for BTI
+- aarch64: Add BTI support to assembly files
+- aarch64: Rename place holder .S files to .c
+- aarch64: configure test for BTI support
+- Rewrite abi-note.S in C.
+- rtld: Clean up PT_NOTE and add PT_GNU_PROPERTY handling
+- string: Move tst-strsignal tst-strerror to tests-container
+- string: Fix prototype mismatch in sigabbrev_np, __sigdescr_np
+- arm: CVE-2020-6096: Fix multiarch memcpy for negative length (#1820332)
+- arm: CVE-2020-6096: fix memcpy and memmove for negative length (#1820332)
+- sunrpc: Remove hidden aliases for global data symbols (bug 26210)
+- hurd: Fix strerror not setting errno
+- tst-strsignal: fix checking for RT signals support
+- hurd: Evaluate fd before entering the critical section
+- CVE-2016-10228: Rewrite iconv option parsing (#1428292)
+- nss: Remove cryptographic key support from nss_files, nss_nis, nss_nisplus
+- sunrpc: Do not export getrpcport by default
+- sunrpc: Do not export key handling hooks by default
+- sunrpc: Turn clnt_sperrno into a libc_hidden_nolink_sunrpc symbol
+- string: Add strerrorname_np and strerrordesc_np
+- string: Add sigabbrev_np and sigdescr_np
+- string: Add strerror_l on test-strerror-errno
+- string: Add strerror, strerror_r, and strerror_l test
+- string: Add strsignal test
+- string: Simplify strerror_r
+- string: Use tls-internal on strerror_l
+- string: Implement strerror in terms of strerror_l
+- string: Remove old TLS usage on strsignal
+- linux: Fix __NSIG_WORDS and add __NSIG_BYTES
+- signal: Move sys_errlist to a compat symbol
+- signal: Move sys_siglist to a compat symbol
+- signal: Add signum-{generic,arch}.h
+- Remove most vfprintf width/precision-dependent allocations (bug 14231, bug 26211).
+- elf: Do not signal LA_ACT_CONSISTENT for an empty namespace [BZ #26076]
+- Fix stringop-overflow errors from gcc 10 in iconv.
+- x86: Add thresholds for "rep movsb/stosb" to tunables
+- Use C2x return value from getpayload of non-NaN (bug 26073).
+- x86: Detect Extended Feature Disable (XFD)
+- x86: Correct bit_cpu_CLFSH [BZ #26208]
+- manual: Document __libc_single_threaded
+- Add the __libc_single_threaded variable
+- Linux: rseq registration tests
+- Linux: Use rseq in sched_getcpu if available
+- Linux: Perform rseq registration at C startup and thread creation
+- tst-cancel4: deal with ENOSYS errors
+- manual: Show copyright information not just in the printed manual
+
+
+* Thu Jul 02 2020 Carlos O'Donell <carlos@redhat.com> - 2.31.9000-17
+- Auto-sync with upstream branch master,
+  commit c6aac3bf3663709cdefde5f5d5e9e875d607be5e.
+- Fix typo in comment in bug 26137 fix.
+- Fix strtod multiple-precision division bug (bug 26137).
+- Linux: Fix UTC offset setting in settimeofday for __TIMESIZE != 64
+- random: range is not portably RAND_MAX [BZ #7003]
+- Update kernel version to 5.7 in tst-mman-consts.py.
+- powerpc: Add support for POWER10
+- hurd: Simplify usleep timeout computation
+- htl: Enable cancel*16 an cancel*20 tests
+- hurd: Add remaining cancelation points
+- hurd: fix usleep(ULONG_MAX)
+- hurd: Make fcntl(F_SETLKW*) cancellation points
+- hurd: make wait4 a cancellation point
+- hurd: Fix port definition in HURD_PORT_USE_CANCEL
+- hurd: make close a cancellation point
+- hurd: make open and openat cancellation points
+- hurd: clean fd and port on thread cancel
+- htl: Move cleanup handling to non-private libc-lock
+- htl: Fix includes for lockfile
+- htl: avoid cancelling threads inside critical sections
+- tst-cancel4-common.c: fix calling socketpair
+- x86: Detect Intel Advanced Matrix Extensions
+- Set width of JUNGSEONG/JONGSEONG characters from UD7B0 to UD7FB to 0 [BZ #26120]
+- S390: Optimize __memset_z196.
+- S390: Optimize __memcpy_z196.
+- elf: Include <stddef.h> (for size_t), <sys/stat.h> in <ldconfig.h>
+- nptl: Don't madvise user provided stack
+- S390: Regenerate ULPs.
+- htl: Add wrapper header for <semaphore.h> with hidden __sem_post
+- elf: Include <stdbool.h> in <dl-tunables.h> because bool is used
+- htl: Fix case when sem_*wait is canceled while holding a token
+- htl: Make sem_*wait cancellations points
+- htl: Simplify non-cancel path of __pthread_cond_timedwait_internal
+- htl: Enable tst-cancel25 test
+- powerpc: Add new hwcap values
+- aarch64: MTE compatible strncmp
+- aarch64: MTE compatible strcmp
+- aarch64: MTE compatible strrchr
+- aarch64: MTE compatible memrchr
+- aarch64: MTE compatible memchr
+- aarch64: MTE compatible strcpy
+- Add MREMAP_DONTUNMAP from Linux 5.7
+- x86: Update CPU feature detection [BZ #26149]
+
+* Mon Jun 22 2020 DJ Delorie <dj@redhat.com> - 2.31.9000-16
+- Auto-sync with upstream branch master,
+  commit ea04f0213135b13d80f568ca2c4127c2ec112537.
+- aarch64: Remove fpu Makefile
+- m68k: Use sqrt{f} builtin for coldfire
+- arm: Use sqrt{f} builtin
+- riscv: Use sqrt{f} builtin
+- s390: Use sqrt{f} builtin
+- sparc: Use sqrt{f} builtin
+- mips: Use sqrt{f} builtin
+- alpha: Use builtin sqrt{f}
+- i386: Use builtin sqrtl
+- x86_64: Use builtin sqrt{f,l}
+- powerpc: Use sqrt{f} builtin
+- s390x: Use fma{f} builtin
+- aarch64: Use math-use-builtins for ceil{f}
+- math: Decompose math-use-builtins.h
+- hurd: Add mremap
+- ia64: Use generic exp10f
+- New exp10f version without SVID compat wrapper
+- i386: Use generic exp10f
+- math: Optimized generic exp10f with wrappers
+- benchtests: Add exp10f benchmark
+
+* Fri Jun 19 2020 Patsy Franklin <patsy@redhat.com> - 2.31.9000-15
+- Auto-sync with upstream branch master,
+  commit 27f8864bd41f0f1b61e8e947d9a030b1a0d23df9.
+- x86: Update F16C detection [BZ #26133]
+- Fix avx2 strncmp offset compare condition check [BZ #25933]
+- nptl: Remove now-spurious tst-cancelx9 references
+- x86_64: Use %xmmN with vpxor to clear a vector register
+- x86: Correct bit_cpu_CLFLUSHOPT [BZ #26128]
+- powerpc64le: refactor e_sqrtf128.c
+- Update syscall-names.list for Linux 5.7.
+- ieee754/dbl-64: Reduce the scope of temporary storage variables
+- manual: Add pthread_attr_setsigmask_np, pthread_attr_getsigmask_np
+- ld.so: Check for new cache format first and enhance corruption check
+- hurd: Fix __writev_nocancel_nostatus
+- hurd: Make send* cancellation points
+- htl: Enable more cancellation tests
+- hurd: Make write and pwrite64 cancellation points
+- htl: Fix cleanup support for IO locking
+- htl: Move cleanup stack to variable shared between libc and pthread
+- htl: initialize first and prevent from unloading
+- htl: Add noreturn attribute on __pthread_exit forward
+- hurd: Make recv* cancellation points
+- powerpc: Automatic CPU detection in preconfigure
+- Use Linux 5.7 in build-many-glibcs.py.
+- htl: Enable more cancel tests
+- htl: Fix linking static tests by factorizing the symbols list
+- Add "%d" support to _dl_debug_vdprintf
+- aarch64: MTE compatible strlen
+- aarch64: MTE compatible strchr
+- aarch64: MTE compatible strchrnul
+- AArch64: Merge Falkor memcpy and memmove implementations
+- hurd: document that gcc&gdb look at the trampoline code
+- pthread: Move back linking rules to nptl and htl
+- htl: Enable more tests
+- htl: Fix registration of atfork handlers in modules
+- htl: Fix tls initialization for already-created threads
+- hurd: Make read and pread64 cancellable
+- hurd: Fix unwinding over interruptible RPC
+- htl: Enable but XFAIL tst-flock2, tst-signal1, tst-signal2
+- hurd: XFAIL more tests that require setpshared support
+- hurd: Briefly document in xfails the topics of the bugzilla entries
+- htl: Enable more tests
+- htl: Add sem_clockwait support
+- htl: fix register-atfork ordering
+- hurd: Fix hang in _hurd_raise_signal from pthread_kill
+- hurd: Reject raising invalid signals
+- hurd: fix clearing SS_ONSTACK when longjmp-ing from sighandler
+- hurd: Add pointer guard support
+- hurd: Add stack guard support
+- dl-runtime: reloc_{offset,index} now functions arch overide'able
+- powerpc64le: add optimized strlen for P9
+- powerpc64le: use common fmaf128 implementation
+
+* Fri Jun 05 2020 Patsy Griffin <patsy@redhat.com> - 2.31.9000-14
+- Auto-sync with upstream branch master,
+  commit e52434a2e4d1105272daaef87678da950fbec73f.
+- benchtests: Restore the clock_gettime option
+- Update HP_TIMING_NOW for _ISOMAC in sysdeps/generic/hp-timing.h
+- Replace val with __val in TUNABLE_SET_VAL_IF_VALID_RANGE
+- support: Fix detecting hole support on >2KB-block filesystems
+- powerpc: Fix powerpc64le due a7a3435c9a
+- manual/jobs.texi: remove unused var from example code
+- powerpc/fpu: use generic fma functions
+- aarch/fpu: use generic builtins based math functions
+- ieee754: provide gcc builtins based generic fma functions
+- ieee754: provide gcc builtins based generic sqrt functions
+- Linux: Use __pthread_attr_setsigmask_internal for timer helper thread
+- nptl: Add pthread_attr_setsigmask_np, pthread_attr_getsigmask_np
+- nptl: Make pthread_attr_t dynamically extensible
+- nptl: Destroy the default thread attribute as part of freeres
+- nptl: Change type of __default_pthread_attr
+- nptl: Use __pthread_attr_setaffinity_np in pthread_getattr_np
+- nptl: Use __pthread_getattr_default_np in pthread_create
+- nptl: Add internal alias __pthread_getattr_default_np
+- htl: Fix gsync_wait symbol exposition
+- htl: Make pthread_cond_destroy wait for threads to be woken
+- htl: Enable more cond tests
+- tst-cond11: Fix build with _SC_MONOTONIC_CLOCK > 0
+- mbstowcs: Document, test, and fix null pointer dst semantics (Bug 25219)
+- build: Use FAIL_EXIT1 () on failure to exec child [BZ #23990]
+- manual: Fix backtraces code example [BZ #10441]
+- hurd: Fix fexecve
+- i386: Remove unused file sysdeps/unix/i386/sysdep.S
+- hurd: fix ptsname error when called on a non-tty
+- hurd: Fix fdopendir checking for directory type
+- i386: Remove NO_TLS_DIRECT_SEG_REFS handling
+- Hurd: Move <hurd/sigpreempt.h> internals into wrapper header
+- Hurd: Use __sigmask in favor of deprecated sigmask
+- hurd: Fix pselect atomicity
+- elf: Remove extra hwcap mechanism from ldconfig
+- elf: Do not read hwcaps from the vDSO in ld.so
+- linux: Use internal DIR locks when accessing filepos on telldir
+- Update i386 libm-test-ulps
+- htl: Add clock variants
+- signal: Deprecate additional legacy signal handling functions
+- elf: Turn _dl_printf, _dl_error_printf, _dl_fatal_printf into functions
+- x86: Update Intel Atom processor family optimization
+- elf.h: add aarch64 property definitions
+- elf.h: Add PT_GNU_PROPERTY
+- <libc-symbols.h>: Add libpthread hidden alias support
+- nptl: Use __pthread_attr_copy in pthread_setattr_default_np
+- nptl: Use __pthread_attr_copy in pthread_getattr_default_np (bug 25999)
+- nptl: Add __pthread_attr_copy for copying pthread_attr_t objects
+- nptl: Make __pthread_attr_init, __pthread_attr_destroy available internally
+- nptl: Move pthread_gettattr_np into libc
+- nptl: Move pthread_getaffinity_np into libc
+- nptl: Move pthread_attr_setaffinity_np into libc
+- nptl: Replace some stubs with the Linux implementation
+- Linux: Add missing handling of tai field to __ntp_gettime64
+- Mention GCC 10 attribute access.
+- y2038: Replace __clock_gettime with __clock_gettime64
+- manual: Add missing section and node for clockid_t wait functions
+- y2038: linux: Provide __ntp_gettimex64 implementation
+- y2038: linux: Provide __ntp_gettime64 implementation
+- y2038: Provide conversion helpers for struct __ntptimeval64
+- y2038: Introduce struct __ntptimeval64 - new internal glibc type
+- y2038: linux: Provide __adjtime64 implementation
+- y2038: linux: Provide ___adjtimex64 implementation
+- y2038: linux: Provide __clock_adjtime64 implementation
+- ldconfig: Default to the new format for ld.so.cache
+- nss_compat: internal_end*ent may clobber errno, hiding ERANGE [BZ #25976]
+- powerpc: Optimized rawmemchr for POWER9
+- x86: Add --enable-cet=permissive
+- Remove NO_CTORS_DTORS_SECTIONS macro
+- elf: Assert that objects are relocated before their constructors run
+- powerpc: Optimized stpcpy for POWER9
+- powerpc: Optimized strcpy for POWER9
+- x86: Move CET control to _dl_x86_feature_control [BZ #25887]
+- sunrpc/tst-udp-*: Fix timeout value
+- Linux: Remove remnants of the getcpu cache
+- Update timezone code from tzcode 2020a
+- aarch64: fix strcpy and strnlen for big-endian [BZ #25824]
+- locale: Add transliteration for Geresh, Gershayim (U+05F3, U+05F4)
+- string: Fix string/tst-memmove-overflow to compile with GCC 7
+- Add arch-syscall.h dependency for generating sysd-syscalls file
+- arm: XFAIL string/tst-memmove-overflow due to bug 25620
+- elf: Remove redundant add_to_global_resize_failure  call from dl_open_args
+- string: Add string/tst-memmove-overflow, a test case for bug 25620
+- support: Add support_blob_repeat_allocate_shared
+- nptl: wait for pending setxid request also in detached thread (bug 25942)
+- aarch64: Accept PLT calls to __getauxval within libc.so
+- Use unsigned constants for ICMP6 filters [BZ #22489]
+- Linux: Enhance glibcsyscalls.py to support listing system calls
+
+* Mon May 11 2020 DJ Delorie <dj@redhat.com> - 2.31.9000-13
+- Auto-sync with upstream branch master,
+  commit 978e8ac39f8ba2d694031e521511da1ae803ccfc.
+- Suppress GCC 10 true positive warnings [BZ #25967]
+- POWER: Add context-synchronizing instructions to pkey_write [BZ #25954]
+- hurd: Add missing sigstate members initialization
+- x86-64: Use RDX_LP on __x86_shared_non_temporal_threshold [BZ #25966]
+- linux: Remove assembly umount2 implementation
+- signal: Use <sigsetops.h> for sigemptyset, sigfillset
+- ckb_IQ, or_IN locales: Add missing reorder-end keywords
+- semaphore: consolidate arch headers into a generic one
+- Use GCC 10 branch in build-many-glibcs.py.
+- Document the internal _ and N_ macros
+- y2038: Provide conversion helpers for struct __timex64
+- y2038: Introduce struct __timex64 - new internal glibc type
+- y2038: include: Move struct __timeval64 definition to a separate file
+- y2038: nscd: Modify nscd_helper to use __clock_gettime64
+- y2038: inet: Convert inet deadline to support 64 bit time
+- y2038: hurd: Provide __clock_gettime64 function
+- y2038: Export __clock_gettime64 to be usable in other libraries
+- manual: Document the O_NOFOLLOW open flag
+- powerpc64le/power9: guard power9 strcmp against rtld usage [BZ# 25905]
+- float128: use builtin_signbitf128 always
+- improve out-of-bounds checking with GCC 10 attribute access [BZ #25219]
+- nios2: delete sysdeps/unix/sysv/linux/nios2/kernel-features.h
+- powerpc: Rename argN to _argN in LOADARGS_N [BZ #25902]
+- locale/tst-localedef-path-norm: Don't create $(complocaledir)
+- support: Set errno before testing it.
+- localedef: Add tests-container test for --no-hard-links.
+- test-container: Support $(complocaledir) and mkdirp.
+- i386: Remove unused variable in sysdeps/x86/cacheinfo.c
+- Add a C wrapper for prctl [BZ #25896]
+- powerpc64le: Enable support for IEEE long double
+- powerpc64le: blacklist broken GCC compilers (e.g GCC 7.5.0)
+- powerpc64le: bump binutils version requirement to >= 2.26
+- powerpc64le: raise GCC requirement to 7.4 for long double transition
+- Rename __LONG_DOUBLE_USES_FLOAT128 to __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI
+- ldbl-128ibm-compat: workaround GCC 9 C++ PR90731
+- x86: Add the test case of __get_cpu_features support for Zhaoxin processors
+- x86: Add cache information support for Zhaoxin processors
+- x86: Add CPU Vendor ID detection support for Zhaoxin processors
+- Update translations
+- Add C wrappers for process_vm_readv/process_vm_writev [BZ #25810]
+- generic/typesizes.h: Add support for 32-bit arches with 64-bit types
+- semctl: Remove the sem-pad.h file
+- bits/sem.h: Split out struct semid_ds
+- Mark unsigned long arguments with U in more syscalls [BZ #25810]
+- elf: Add initial flag argument to __libc_early_init
+- Add SYSCALL_ULONG_ARG_[12] to pass long to syscall [BZ #25810]
+- Makeconfig: Use $(error ...) to output error message
+- manual: Fix typos in the fexecve description
+- misc: Remove sstk from the autogenerated system call list
+- Remove unused floating-point configuration from gmp-impl.h.
+- support: Implement <support/xthread.h> key create/delete
+- nptl/tst-setuid1-static: Improve isolation from system objects
+- Increase the timeout of locale/tst-localedef-path-norm
+- Use 2020 as copyright year.
+- misc: Turn sstk into a compat symbol
+- manual: Document the fexecve function
+- nptl: Start new threads with all signals blocked [BZ #25098]
+- localedef: Add verbose messages for failure paths.
+- Remove most gmp-mparam.h headers.
+- elf: Implement __libc_early_init
+- elf: Introduce <elf_machine_sym_no_match.h>
+- Add a syscall test for [BZ #25810]
+- elf: Support lld-style link map for librtld.map
+- signal: Only handle on NSIG signals on signal functions (BZ #25657)
+- linux: Use pthread_sigmask on sigprocmask
+- ia64: Remove sigprocmask/sigblock objects from libpthread
+- nptl: Move pthread_sigmask implementation to libc
+- Bug 25819: Update to Unicode 13.0.0
+
+* Wed Apr 29 2020 Florian Weimer <fweimer@redhat.com> - 2.31.9000-12
+- nss_db.x86_64 should install nss_db.i686 if glibc.i686 is installed (#1807821)
+- Likewise for nss_hesiod.
+
+* Mon Apr 27 2020 Florian Weimer <fweimer@redhat.com> - 2.31.9000-11
+- Introduce glibc-headers-x86, glibc-headers-s390 packages (#1828332)
+- Remove the glibc-headers package
+
+* Mon Apr 20 2020 DJ Delorie <dj@redhat.com> - 2.31.9000-10
+- Auto-sync with upstream branch master,
+  commit 0798b8ecc8da8667362496c1217d18635106c609.
+- ARC: Update syscall-names.list for ARC specific syscalls
+- Revert "x86_64: Add SSE sfp-exceptions"
+- provide y2038 safe socket constants for default/asm-generic ABI
+- x86_64: Add SSE sfp-exceptions
+- Remove __NO_MATH_INLINES
+- i686: Add INTERNAL_SYSCALL_NCS 6 argument support
+- Reset converter state after second wchar_t output (Bug 25734)
+- Fix typo in posix/tst-fnmatch.input (Bug 25790)
+
+* Wed Apr 15 2020 Patsy Griffin <patsy@redhat.com> - 2.31.9000-9
+- Auto-sync with upstream branch master,
+  commit 076f09afbac1aa57756faa7a8feadb7936a724e4.
+- Linux: Remove <sys/sysctl.h> and the sysctl function
+- posix: Add wait4 test case
+- linux: wait4: Fix incorrect return value comparison
+- hurd: add mach_print function
+- x32: Properly pass long to syscall [BZ #25810]
+- Add GRND_INSECURE from Linux 5.6 to sys/random.h
+- Update kernel version to 5.6 in tst-mman-consts.py.
+
+* Wed Apr 15 2020 Florian Weimer <fweimer@redhat.com> - 2.31.9000-8
+- nsswitch.conf: don't add sss to shadow line
+
+* Wed Apr 08 2020 Carlos O'Donell <carlos@redhat.com> - 2.31.9000-7
+- Auto-sync with upstream branch master,
+  commit b1caa144c74678097cada5a54eda2996bb459d8f.
+- Update mips libm-test-ulps
+- Update alpha libm-test-ulps
+- Update ia64 libm-test-ulps
+- Update sparc libm-test-ulps
+- Update arm libm-test-ulps
+- Update aarch64 libm-test-ulps
+- Updates to the shn_MM locale [BZ #25532]
+- powerpc: Update ULPs and xfail more ibm128 outputs
+- i386: Remove build support for GCC older than GCC 6
+- oc_FR locale: Fix spelling of April (bug 25639)
+- Update hppa libm-test-ulps
+- y2038: linux: Provide __mq_timedreceive_time64 implementation
+- y2038: linux: Provide __mq_timedsend_time64 implementation
+- y2038: include: Move struct __timespec64 definition to a separate file
+- malloc: ensure set_max_fast never stores zero [BZ #25733]
+- powerpc64le: enforce non-specific long double in .gnu.attributes section
+- powerpc64le: workaround ieee long double / _Float128 stdc++ bug
+- powerpc64le: Enforce -mabi=ibmlongdouble when -mfloat128 used
+- powerpc64le/multiarch: don't generate strong aliases for fmaf128-ppc64
+- ldbl-128ibm: simplify iscanonical.h
+- i386: Disable check_consistency for GCC 5 and above [BZ #25788]
+- Add IPPROTO_ETHERNET and IPPROTO_MPTCP from Linux 5.6 to netinet/in.h.
+- Update syscall lists for Linux 5.6.
+- elf: Implement DT_AUDIT, DT_DEPAUDIT support [BZ #24943]
+- elf: Simplify handling of lists of audit strings
+- support: Change xgetline to return 0 on EOF
+- nptl: Remove x86_64 cancellation assembly implementations [BZ #25765]
+- aarch64: update bits/hwcap.h
+- Add tests for Safe-Linking
+- S390: Regenerate ULPs.
+- sysv/alpha: Use generic __timeval32 and helpers
+- linux: Use long time_t for wait4/getrusage
+- resource: Add a __rusage64 struct
+- linux: Use long time_t __getitimer/__setitimer
+- sysv: Define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64
+- math: Add inputs that yield larger errors for float type (x86_64)
+
+* Tue Mar 31 2020 DJ Delorie <dj@redhat.com> - 2.31.9000-6
+- Auto-sync with upstream branch master,
+  commit 49c3c37651e2d2ec4ff8ce21252bbbc08a9d6639.
+- Fix alignment bug in Safe-Linking
+- Typo fixes and CR cleanup in Safe-Linking
+- Use Linux 5.6 and GMP 6.2.0 in build-many-glibcs.py.
+- Add new file missed in previous hppa commit.
+- powerpc: Add support for fmaf128() in hardware
+- Fix data race in setting function descriptors during lazy binding on hppa.
+- sparc: Move __fenv_{ld,st}fsr to fenv-private.h
+- x86: Remove feraiseexcept optimization
+- math: Remove fenvinline.h
+- hurd: Make O_TRUNC update mtime/ctime
+- Add Safe-Linking to fastbins and tcache
+- Add benchtests for roundeven and roundevenf.
+- time: Add a __itimerval64 struct
+- time: Add a timeval with a 32-bit tv_sec and tv_usec
+- sysv/linux: Rename alpha functions to be alpha specific
+- ARC: add definitions to elf/elf.h
+- powerpc64: apply -mabi=ibmlongdouble to special files
+- powerpc64le: add -mno-gnu-attribute to *f128 objects and difftime
+- Makeconfig: sandwich gnulib-tests between libc/ld linking of tests
+- powerpc64le: Ensure correct ldouble compiler flags are used
+- Fix tests which expose ldbl -> _Float128 redirects
+- ldbl-128ibm-compat: PLT redirects for using ldbl redirects internally
+
+* Wed Mar 25 2020 Patsy Franklin <patsy@redhat.com> - 2.31.9000-5
+- Auto-sync with upstream branch master,
+  commit 4eda036f5b897fa8bc20ddd2099b5a6ed4239dc9.
+- stdlib: Move tst-system to tests-container
+- support/shell-container.c: Add builtin kill
+- support/shell-container.c: Add builtin exit
+- support/shell-container.c: Return 127 if execve fails
+- Add NEWS entry for CVE-2020-1751 (bug 25423)
+- posix: Fix system error return value [BZ #25715]
+- y2038: fix: Add missing libc_hidden_def attribute for some syscall wrappers
+- Extended Char Intro: Use getwc in example (Bug 25626)
+- stdio: Add tests for printf multibyte convertion leak [BZ#25691]
+- stdio: Remove memory leak from multibyte convertion [BZ#25691]
+- Add NEWS entry for CVE-2020-1752 (bug 25414)
+- math: Remove inline math tests
+- Remove __LIBC_INTERNAL_MATH_INLINES
+- math: Remove mathinline
+- m68k: Remove mathinline.h
+- oc_FR locale: Fix spelling of Thursday (bug 25639)
+- x86: Remove ARCH_CET_LEGACY_BITMAP [BZ #25397]
+- Fix build with GCC 10 when long double = double.
+- nscd/cachedumper.c : fix whitespace
+- Fix nscd/cachedumper.c compile errors
+- manual: Fix inconsistent declaration of wcsrchr [BZ #24655]
+- nscd: add cache dumper
+
+* Fri Mar 13 2020 Patsy Franklin <patsy@redhat.com> - 2.31.9000-4
+- Auto-sync with upstream branch master,
+  commit 2de7fe62534b7a6461c633114f03e9dff394f5f7.
+- parse_tunables: Fix typo in comment
+- ldconfig: trace origin paths with -v
+- test-container: print errno when execvp fails
+- [AArch64] Improve integer memcpy
+- Add NEWS entry for CVE-2020-10029 (bug 25487)
+- gcc PR 89877: miscompilation due to missing cc clobber in longlong.h macros
+- mips: Fix wrong INTERNAL_SYSCALL_ERROR_P check from bc2eb9321e
+- elf: Fix wrong indentation from commit eb447b7b4b
+- y2038: linux: Provide __futimesat64 implementation
+- y2038: linux: Provide __lutimes64 implementation
+- y2038: linux: Provide __futimes64 implementation
+- y2038: fix: Add missing libc_hidden_def for __futimens64
+- sparc: Move sigreturn stub to assembly 
+- ldbl-128ibm: Let long double files have specific compiler flags
+- ldbl-128ibm-compat: Add tests for IBM long double functions
+- powerpc: Fix feraiseexcept and feclearexcept macros
+- arm: Fix softp-fp Implies (BZ #25635)
+- Remove reference of --without-fp on configure
+- linux/sysipc: Include linux/posix_types.h for __kernel_mode_t
+- Improve IFUNC check [BZ #25506]
+- linux: Clear mode_t padding bits (BZ#25623)
+- linux: Remove aarch64 ipc_priv.h
+- Linux: Use __fstatat64 in fchmodat implementation
+- Linux: Use AT_FDCWD in utime, utimes when calling utimensat
+- S390: Remove backchain-based fallback and use generic backtrace.c.
+- manual: Fix wrong declaration of wcschr [BZ #24654]
+- manual: Fix typo in parse_printf_format example [BZ #24638]
+
+* Thu Mar  5 2020 Florian Weimer <fweimer@redhat.com> - 2.31.9000-3
+- Emergency patch for broken utimes/utime functions
+
+* Tue Mar 03 2020 Patsy Franklin <patsy@redhat.com> - 2.31.9000-2
+- Auto-sync with upstream branch master,
+  commit 78c9d0c6efabe2067ef7f93cd36325f54c60adc2.
+- Update translations
+- Convert Python scripts to Python 3
+- alpha: Do not build with -fpic
+- y2038: linux: Provide __utime64 implementation
+- y2038: linux: Provide __utimes64 implementation
+- y2038: Introduce struct __utimbuf64 - new internal glibc type
+- microblaze: vfork is always available
+- m68k: getpagesize syscall number is always available
+- Linux: epoll_pwait syscall number is always available
+- x86_64: Do not define __NR_semtimedop in <sysdep.h>
+- ia64: Do not define __NR_semtimedop in <sysdep.h>
+- Linux: open_by_handle_at syscall number is always available
+- Linux: set_robust_list syscall number is always available
+- Linux: pciconfig_iobase syscall number is always available on alpha
+- Linux: getdents64 syscall number is always available on MIPS
+- Linux: Clean up preadv2, pwritev2 system call names
+- Linux: exit_group syscall number is always available
+- Linux: set_tid_address syscall number is always available
+- Linux: pkey_mprotect syscall number is always available
+- Linux: rt_sigqueueinfo syscall number is always available
+- Linux: getrandom syscall number is always available
+- Linux: Clean up preadv, pwritev system call names
+- Linux: Clean up pread64/pwrite64 system call names
+- Linux: sigaltstack syscall number is always available
+- Linux: sched_getaffinity syscall number is always available
+- Linux: sched_setaffinity syscall number is always available
+- Linux: statx syscall number is always available
+- Linux: mq_* syscall numbers are always available
+- Linux: mlock2 syscall number is always available
+- Linux: copy_file_range syscall number is always available
+- Linux: renameat2 syscall number is always available
+- build-many-glibcs.py: Add list-compilers, list-glibcs commands
+- build-many-glibcs.py: Add --shallow option
+- Fixed typo in run_command_array() in support/shell-container.c
+- Add missing libc_hidden_def for __utimensat64
+- elf: Add elf/check-wx-segment, a test for the presence of WX segments
+- i386: Use comdat instead of .gnu.linkonce for i386 setup pic register (BZ #20543)
+- ldbl-128ibm-compat: link tst-ldbl-efgcvt against loader too
+- ldbl-128ibm-compat: enforce ibm128 on compat tests
+- ldbl-128ibm-compat: Provide nexttoward functions
+- ldbl-128ibm-compat: Provide a significand implementation
+- ldbl-128ibm-compat: Redirect complex math functions
+- ldbl-128ibm-compat: Redirect long double functions to f128/ieee128 functions
+- posix: Remove posix waitid
+- posix: Refactor tst-waitid (BZ #14666)
+- support: Add support_process_state_wait
+- malloc/tst-mallocfork2: Kill lingering process for unexpected failures
+
+* Wed Feb 26 2020 Patsy Franklin <patsy@redhat.com> - 2.31.9000-1
+- Auto-sync with upstream branch master,
+  commit 758599bc9dcc5764e862bd9e1613c5d1e6efc5d3.
+- elf: Apply attribute_relro to pointers in elf/dl-minimal.c
+- powerpc: Refactor fenvinline.h
+- nss_nis: Use NSS_DECLARE_MODULE_FUNCTIONS
+- csu: Use ELF constructor instead of _init in libc.so
+- ldbl-128ibm: make ieee754.h work with IEEE 128 long double
+- ldbl-128ibm-compat: fixup subdir location of several funcs
+- ldbl-128ibm-compat: enforce correct abi flags on internal file
+- ldbl-128ibm-compat: Provide ieee128 symbols to narrow functions
+- Undefine redirections after long double definition on __LDBL_COMPAT [BZ #23294]
+- nios2: Fix Linux kABI for syscall return
+- Fix use-after-free in glob when expanding ~user (bug 25414)
+- nptl: Move pthread_setschedparam implementation into libc
+- nptl: Move pthread_getschedparam implementation into libc
+- Add hidden prototypes for __sched_getparam, __sched_getscheduler
+- nptl: Move pthread_cond_init implementation into libc
+- nptl: Move pthread_cond_destroy implementation into libc
+- nptl: Move pthread_condattr_init implementation into libc
+- nptl: Move pthread_condattr_destroy implementation into libc
+- nptl: Move pthread_attr_setscope implementation into libc
+- nptl: Move pthread_attr_getscope implementation into libc
+- nptl: Move pthread_attr_setschedpolicy implementation into libc
+- nptl: Move pthread_attr_getschedpolicy implementation into libc
+- nptl: Sort routines list in Makefile alphabetically
+- nptl: Use .NOTPARALLEL in Makefile only if actually running tests
+- Block all signals on timer_create thread (BZ#10815)
+- Fix tst-pkey expectations on pkey_get [BZ #23202]
+- y2038: linux: Provide __gettimeofday64 implementation
+- Linux: Work around kernel bugs in chmod on /proc/self/fd paths [BZ #14578]
+- Introduce <elf-initfini.h> and ELF_INITFINI for all architectures
+- mips: Fix bracktrace result for signal frames
+- Move implementation of <file_change_detection.h> into a C file
+- <fd_to_filename.h>: Add type safety and port to Hurd
+- Prepare redirections for IEEE long double on powerpc64le
+- conform/conformtest.py: Extend tokenizer to cover character constants
+- stdlib: Reduce namespace pollution in <inttypes.h>
+- x86: Avoid single-argument _Static_assert in <tls.h>
+- x86 tls: Use _Static_assert for TLS access size assertion
+- htl: Link internal htl tests against libpthread
+- pthread: Fix building tst-robust8 with nptl
+- pthread: Move robust mutex tests from nptl to sysdeps/pthread
+- htl: Remove stub warning for pthread_mutexattr_setpshared
+- htl: Add missing functions and defines for robust mutexes
+- htl: Only check pthread_self coherency when DEBUG is set
+- hurd: Add THREAD_GET/SETMEM/_NC
+- hurd tls: update comment about fields at the end of tcbhead
+- ld.so: Do not export free/calloc/malloc/realloc functions [BZ #25486]
+- Remove weak declaration of free from <inline-hashtab.h>
+- elf: Extract _dl_sym_post, _dl_sym_find_caller_map from elf/dl-sym.c
+- elf: Introduce the rtld-stubbed-symbols makefile variable
+- arm: fix use of INTERNAL_SYSCALL_CALL
+- linux: Remove INTERNAL_SYSCALL_DECL
+- nptl: Remove ununsed pthread-errnos.h rule
+- linux: Consolidate INLINE_SYSCALL
+- s390: Consolidate Linux syscall definition
+- riscv: Avoid clobbering register parameters in syscall
+- microblaze: Avoid clobbering register parameters in syscall
+- nios2: Use Linux kABI for syscall return
+- mips: Use Linux kABI for syscall return
+- mips64: Consolidate Linux sysdep.h
+- ia64: Use Linux kABI for syscall return
+- alpha: Refactor syscall and Use Linux kABI for syscall return
+- sparc: Avoid clobbering register parameters in syscall
+- sparc: Use Linux kABI for syscall return
+- powerpc: Use Linux kABI for syscall return
+- powerpc: Consolidate Linux syscall definition
+- i386: Enable CET support in ucontext functions
+- tst-clone3: Use __NR_futex_time64 if we don't have __NR_futex
+- powerpc64: Add memory protection key support [BZ #23202]
+- ldbl-128ibm-compat: Provide a scalb implementation
+- Add a generic scalb implementation
+- Adjust thresholds in Bessel function implementations (bug 14469).
+- resolv: Fix ABA race in /etc/resolv.conf change detection [BZ #25420]
+- resolv: Enhance __resolv_conf_load to capture file change data
+- resolv: Fix file handle leak in __resolv_conf_load [BZ #25429]
+- resolv: Use <file_change_detection.h> in __resolv_conf_get_current
+- Add STATX_ATTR_VERITY from Linux 5.5 to bits/statx-generic.h.
+- Use gcc -finput-charset=ascii for check-installed-headers.
+- math/test-sinl-pseudo: Use stack protector only if available
+- alpha: Fix static gettimeofday symbol
+- nss_nisplus: Use NSS_DECLARE_MODULE_FUNCTIONS
+- nss_dns: Use NSS_DECLARE_MODULE_FUNCTIONS
+- nss_files: Use NSS_DECLARE_MODULE_FUNCTIONS
+- nss_db: Use NSS_DECLARE_MODULE_FUNCTIONS
+- nss_compat: Use NSS_DECLARE_MODULE_FUNCTIONS
+- nss_hesiod: Use NSS_DECLARE_MODULE_FUNCTIONS
+- nss: Add function types and NSS_DECLARE_MODULE_FUNCTIONS macro to <nss.h>
+- nss_compat: Do not use nss_* names for function pointers
+- Avoid ldbl-96 stack corruption from range reduction of pseudo-zero (bug 25487).
+- mips: Fix argument passing for inlined syscalls on Linux [BZ #25523]
+- mips: Use 'long int' and 'long long int' in linux syscall code
+- alpha: Use generic gettimeofday implementation
+- sunrpc: Properly clean up if tst-udp-timeout fails
+- elf: avoid stack allocation in dl_open_worker
+- elf: avoid redundant sort in dlopen
+- elf: Allow dlopen of filter object to work [BZ #16272]
+- Update translations
+- Rename RWF_WRITE_LIFE_NOT_SET to RWH_WRITE_LIFE_NOT_SET following Linux 5.5.
+- S390: Fix non-ascii character in fenv.h.
+- io: Add io/tst-lchmod covering lchmod and fchmodat
+- Linux: Emulate fchmodat with AT_SYMLINK_NOFOLLOW using O_PATH [BZ #14578]
+- io: Implement lchmod using fchmodat [BZ #14578]
+- Add internal <file_change_detection.h> header file
+- elf.h: Add R_RISCV_IRELATIVE
+- Fix typo in the name for Wednesday in Kurdish [BZ #9809]
+- debug: Add missing locale dependencies of fortify tests
+- htl C11 threads: Avoid pthread_ symbols visibility in static library
+- hurd: Add __pthread_spin_wait and use it
+- ldbl-128ibm-compat: set PRINTF_CHK flag in {,v}sprintf_chk
+- Use --disable-gdbserver in build-many-glibcs.py.
+- Improve random memcpy benchmark
+- nptl: update default pthread-offsets.h
+- nptl: add missing pthread-offsets.h
+- htl: Avoid a local plt for pthread_self
+- pthread: Move some join tests from nptl to sysdeps/pthread
+- htl: Make joining self return EDEADLK
+- pthread: Move most barrier tests from nptl to sysdeps/pthread
+- htl: Fix barrier_wait with one thread
+- pthread: Move most sem tests from nptl to sysdeps/pthread
+- htl: Make sem_wait/sem_timedwait interruptible
+- htl: Make sem_open return ENOSYS
+- htl: Add support for semaphore maximum value
+- pthread: Move key tests from nptl to sysdeps/pthread
+- hurd: Make nanosleep a cancellation point
+- htl: Add support for libc cancellation points
+- htl: clean __pthread_get_cleanup_stack hidden proto
+- htl: XFAIL rwlock tests which need pshared support
+- pthread: Move some rwlock tests from nptl to sysdeps/pthread
+- pthread: Move most once tests from nptl to sysdeps/pthread
+- htl: support cancellation during pthread_once
+- pthread: Move most cond tests from nptl to sysdeps/pthread
+- htl: make pthread_cond_destroy return EBUSY on waiters
+- htl: Report missing mutex lock on pthread_cond_*wait
+- htl: Fix linking static testcases
+- htl: Move __register_atfork from forward to own file
+- pthread: Move some attr tests from nptl to sysdeps/pthread
+- htl: Fix default guard size
+- pthread: Move most mutex tests from nptl to sysdeps/pthread
+- pthread: Move spin tests from nptl to sysdeps/pthread
+- htl: make pthread_spin_lock really spin
+- htl: Avoid check-installed-headers looking at inlines
+- htl: Do not put spin_lock inlines in public headers
+- pthread: Move basic tests from nptl to sysdeps/pthread
+- htl: Fix calling pthread_exit in the child of a fork
+- x86: Remove <bits/select.h> and use the generic version
+- C11 threads: Move implementation to sysdeps/pthread
+- htl: Add C11 threads types definitions
+- C11 threads: make thrd_join more portable
+- C11 threads: Fix thrd_t / pthread_t compatibility assertion
+- C11 threads: do not require PTHREAD_DESTRUCTOR_ITERATIONS
+- nptl: Move nptl-specific types to separate header
+- htl: Make __PTHREAD_ONCE_INIT more flexible
+- htl: Add support for C11 threads behavior
+- htl: Add missing internal functions declarations
+- htl: Rename _pthread_mutex_init/destroy to __pthread_mutex_init/destroy
+- htl: Move internal mutex/rwlock symbols to GLIBC_PRIVATE
+- Linux: Add io/tst-o_path-locks test
+- support: Add the xlstat function
+- htl: Remove duplicate files
+- htl: Remove unused files
+- resolv: Fix CNAME chaining in resolv/tst-resolv-ai_idn-common.c
+- Remove a comment claiming that sin/cos round correctly.
+- y2038: linux: Provide __settimeofday64 implementation
+- y2038: Provide conversion helpers for struct __timeval64
+- y2038: alpha: Rename valid_timeval64_to_timeval to valid_timeval_to_timeval32
+- y2038: alpha: Rename valid_timeval_to_timeval64 to valid_timeval32_to_timeval
+- y2038: Introduce struct __timeval64 - new internal glibc type
+- y2038: Define __suseconds64_t type to be used with struct __timeval64
+- Update kernel version to 5.5 in tst-mman-consts.py.
+- Update syscall lists for Linux 5.5.
+- NEWS: Set fill-column hint to 72
+- y2038: linux: Provide __timespec_get64 implementation
+- Use binutils 2.34 branch in build-many-glibcs.py.
+- Run nptl/tst-pthread-getattr in a container
+- test-container: add exec, cwd
+- Use Linux 5.5 in build-many-glibcs.py.
+- rt: avoid PLT setup in timer_[sg]ettime
+- Update or_IN collation [BZ #22525]
+- Fix ckb_IQ [BZ #9809]
+- Add new locale: ckb_IQ (Kurdish/Sorani spoken in Iraq) [BZ #9809]
+- list-fixed-bugs.py: Wrap at 72 chars
+- y2038: linux: Provide __sched_rr_get_interval64 implementation
+- y2038: linux: Provide __timerfd_settime64 implementation
+- y2038: linux: Provide __timerfd_gettime64 implementation
+- i386: Remove _exit.S
+- i386: Use ENTRY/END in assembly codes
+- i386-mcount.S: Add _CET_ENDBR to _mcount and __fentry__
+- i386/sub_n.S: Add a missing _CET_ENDBR to indirect jump target
+- i386: Don't unnecessarily save and restore EAX, ECX and EDX [BZ# 25262]
+- x86: Don't make 2 calls to dlerror () in a row
+- Open master for 2.32 development
+
+* Mon Feb 03 2020 DJ Delorie <dj@redhat.com> - 2.31-1
+- Auto-sync with upstream branch release/2.31/master,
+  commit 9ea3686266dca3f004ba874745a4087a89682617.
+- glibc 2.31 release
+- Generate ChangeLog.old/ChangeLog.20 for 2.31
+- Add bugs fixed in 2.31 in NEWS
+- Update newest tested versions of dependencies in install.texi
+- Add more contributors to the manual
+- Add note to NEWS about kernel headers dependency on risc-v
+- Add Portuguese (Portugal) translation
+- Add NEWS entry about 64-bit time_t syscall use on 32-bit targets
+- nptl: Avoid using PTHREAD_MUTEX_DEFAULT in macro definition [BZ #25271]
+
+* Thu Jan 30 2020 Patsy Franklin <patsy@redhat.com> - 2.30.9000-33
+- Auto-sync with upstream branch master,
+  commit 352bb99754ae7c83ff1b974f9c52244e974c9410.
+- Build raise with -fasynchronous-unwind-tables.
+- Fix locale/tst-locale-locpath cross-testing when sshd sets LANG.
+- Fix elf/tst-rtld-preload cross-testing.
+- Fix cross-testing of tst-ifunc-fault-* tests.
+- gitlog-to-changelog: Drop scripts in favour of gnulib version
+- Add NEWS entry about the change in handling of PT_GNU_STACK on MIPS
+- Fix array overflow in backtrace on PowerPC (bug 25423)
+- getaddrinfo: Fix resource leak after strdup failure in gethosts (swbz#25425)
+
+* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org>
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Mon Jan 20 2020 Patsy Franklin <patsy@redhat.com> - 2.30.9000-31
+- Auto-sync with upstream branch master,
+  commit 92ce43eef7ac844782d50a8015d977d216fbadec.
+- Run bench-timing-type with newly built libc.
+- Get rid of Werror=maybe-uninitialized in res_send.c.
+- translations: Update translations
+- translations: Trim po files using msgattrib
+- Update translations
+- translations: Run msgmerge when downloading translations
+- Fix maybe-uninitialized error on powerpc
+- powerpc32: Fix syntax error in __GLRO macro
+- Remove incorrect alloc_size attribute from pvalloc (swbz#25401)
+
+* Fri Jan 17 2020 Florian Weimer <fweimer@redhat.com> - 2.30.9000-30
+- Auto-sync with upstream branch master,
+  commit 70ba28f7ab2923d4e36ffc9d5d2e32357353b25c:
+- Fix tst-pkey.c pkey_alloc return checks and manual
+- powerpc: Move cache line size to rtld_global_ro
+- powerpc: Initialize rtld_global_ro for static dlopen (swbz#20802)
+- Revert outdated translations
+- vcs-to-changelog: Add quirk for __nonnull
+- elf: Add elf/tst-dlopenfail-2 (swbz#25396, #1395758)
+- Clear GL(dl_initfirst) when freeing its link_map (swbz#25396, #1395758)
+- Update Translations
+- Fix "elf: Add tst-ldconfig-ld_so_conf-update test" on 32bit.
+- elf: Add tst-ldconfig-ld_so_conf-update test
+- sl_SI locale: Use "." as the thousands separator (swbz#25233)
+
+* Mon Jan 06 2020 Arjun Shankar <arjun@redhat.com> - 2.30.9000-29
+- Auto-sync with upstream branch master,
+  commit cbce69e70dc4b04fefcc7257e593733b8b03856c:
+- Multiple locales: Add date_fmt (bug 24054)
+- Update libc.pot for 2.31 release
+- Add libm_alias_finite for _finite symbols
+- Linux: Fix clock_nanosleep time64 check
+- linux: Fix vDSO macros build with time64 interfaces
+- x86: Make x32 use x86 time implementation
+- Remove vDSO support from make-syscall.sh
+- linux: Update x86 vDSO symbols
+- linux: Update mips vDSO symbols
+- linux: Consolidate Linux gettimeofday
+- linux: Consolidate time implementation
+- elf: Enable relro for static build
+- elf: Move vDSO setup to rtld (BZ#24967)
+- linux: Add support for clock_gettime64 vDSO
+- linux: Optimize fallback 32-bit clock_gettime
+- linux: Enable vDSO clock_gettime64 for i386
+- linux: Enable vDSO clock_gettime64 for arm
+- linux: Enable vDSO clock_gettime64 for mips
+- linux: Add support for clock_getres64 vDSO
+- linux: Optimize fallback 32-bit clock_getres
+- htl: Use dso_handle.h
+- htl: Drop common tcbhead_t definition
+- htl: Move pthread_atfork to libc_nonshared.a
+- htl: Add __errno_location and __h_errno_location
+- hurd: Fix message reception for timer_thread
+
+* Thu Jan 02 2020 Florian Weimer <fweimer@redhat.com> - 2.30.9000-28
+- Auto-sync with upstream branch master,
+  commit cc47d5c5f53f6d845ac54698ae8929af15662c44:
+- Linux: Use built-in system call tables
+- lv_LV locale: Correct the time part of d_t_fmt (swbz#25324)
+- km_KH locale: Use "%M" instead of "m" in d_t_fmt (swbz#25323)
+- ldbl-128ibm-compat: Do not mix -mabi=*longdouble and -mlong-double-128
+- ldbl-128ibm-compat: Compiler flags for stdio functions
+- Do not redirect calls to __GI_* symbols, when redirecting to *ieee128
+- aarch64: add default memcpy version for kunpeng920
+- aarch64: ifunc rename for kunpeng
+- aarch64: Modify error-shown comments for strcpy
+- linux: Consolidate sigprocmask
+- Fix return code for __libc_signal_* functions
+- nptl: Remove duplicate internal __SIZEOF_PTHREAD_MUTEX_T (swbz#25241)
+
+* Thu Dec 26 2019 Carlos O'Donell <carlos@redhat.com> - 2.30.9000-27
+- Auto-sync with upstream branch master,
+  commit b8c210bcc74840d24c61d39bde15bea9daf3e271.
+- mnw_MM, my_MM, and shn_MM locales: Do not use %Op
+- Avoid compat symbols for totalorder in powerpc64le IEEE long double
+- ldbl-128ibm-compat: Add *cvt functions
+- Refactor *cvt functions implementation (2/2)
+- Refactor *cvt functions implementation (1/2)
+- Add exception-based flags for wait4
+- aarch64: Optimized memset for Kunpeng processor.
+- aarch64: Optimized strlen for strlen_asimd
+- aarch64: Add Huawei Kunpeng to tunable cpu list
+- aarch64: Optimized implementation of memrchr
+- aarch64: Optimized implementation of strnlen
+- aarch64: Optimized implementation of strcpy
+- aarch64: Optimized implementation of memcmp
+- Consolidate wait3 implementations
+- Implement waitpid in terms of wait4
+- linux: Use waitid on wait4 if __NR_wait4 is not defined
+- Implement wait in terms of waitpid
+- nptl: Move waitpid implementation to libc
+- nptl: Move wait implementation to libc
+- Remove __waitpid_nocancel
+- Fix test isolation for elf/tst-ifunc-fault-lazy, elf/tst-ifunc-fault-bindnow
+- Fix __libc_signal_block_all on sparc64
+- powerpc: Do not run IFUNC resolvers for LD_DEBUG=unused [BZ #24214]
+
+* Thu Dec 19 2019 Patsy Franklin <patsy@redhat.com> - 2.30.9000-26
+- Auto-sync with upstream branch master,
+  commit 3dcad8158f43d71d5b8f6f317f82952ddf3468f3.
+- hurd: Do not make sigprocmask available in ld.so
+- build-many-glibcs.py: Do not build C++ PCHs by default
+- hurd: Make getrandom honour GRND_NONBLOCK
+- tunables: report sbrk() failure
+- build-many-glibcs.py: Add mipsisa64r6el-linux-gnu target
+- mips: Do not include hi and lo in __SYSCALL_CLOBBERS for R6
+- ldbl-128ibm-compat: Add ISO C99 versions of scanf functions
+- ldbl-128ibm-compat: Fix selection of GNU and ISO C99 scanf
+- hurd: Fix local PLT
+- dlopen: Do not block signals
+- dlopen: Rework handling of pending NODELETE status
+- dlopen: Fix issues related to NODELETE handling and relocations
+- hurd: Fix __close_nocancel_nostatus availability
+- hurd: add getrandom and getentropy implementations
+- hurd: Implement __close_nocancel_nostatus
+- manual: clarify fopen with the x flag
+- S390: Use sysdeps/ieee754/dbl-64/wordsize-64 on s390x.
+- S390: Implement roundtoint and converttoint and define TOINT_INTRINSICS.
+- S390: Implement math-barriers math_opt_barrier and math_force_eval.
+- S390: Use libc_fe* macros in fe* functions.
+- S390: Implement libc_fe* macros.
+- S390: Use convert-to-fixed instruction for llround functions.
+- S390: Use convert-to-fixed instruction for lround functions.
+- S390: Use convert-to-fixed instruction for llrint functions.
+- S390: Use convert-to-fixed instruction for lrint functions.
+- S390: Use load-fp-integer instruction for roundeven functions.
+- Adjust s_copysignl.c regarding code style.
+- Adjust s_ceilf.c and s_ceill.c regarding code style.
+- Adjust s_floorf.c and s_floorl.c regarding code style.
+- Adjust s_rintf.c and s_rintl.c regarding code style.
+- Adjust s_nearbyintf.c and s_nearbyintl.c regarding code style.
+- Use GCC builtins for copysign functions if desired.
+- Use GCC builtins for round functions if desired.
+- Use GCC builtins for trunc functions if desired.
+- Use GCC builtins for ceil functions if desired.
+- Use GCC builtins for floor functions if desired.
+- Use GCC builtins for rint functions if desired.
+- Use GCC builtins for nearbyint functions if desired.
+- Always use wordsize-64 version of s_round.c.
+- Always use wordsize-64 version of s_trunc.c.
+- Always use wordsize-64 version of s_ceil.c.
+- Always use wordsize-64 version of s_floor.c.
+- Always use wordsize-64 version of s_rint.c.
+- Always use wordsize-64 version of s_nearbyint.c.
+- ldconfig: Do not print a warning for a missing ld.so.conf file
+- hurd: Fix using altstack while in an RPC call to be aborted
+- Fix failure when CFLAGS contains -DNDEBUG (Bug 25251)
+
+* Mon Dec 09 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-25
+- Auto-sync with upstream branch master,
+  commit 0487ebed2278b20971af4cabf186fd3681adccf0.
+- nptl: Add more missing placeholder abi symbol from nanosleep move
+- sysdeps/riscv/start.S: rename .Lload_gp to load_gp (bug 24376)
+- y2038: linux: Provide __timer_settime64 implementation
+- y2038: linux: Provide __timer_gettime64 implementation
+- timer: Decouple x86_64 specific timer_settime from generic Linux implementation
+- timer: Decouple x86_64 specific timer_gettime from generic Linux implementation
+- time: Introduce glibc's internal struct __itimerspec64
+- Correct range checking in mallopt/mxfast/tcache [BZ #25194]
+- misc/test-errno-linux: Handle EINVAL from quotactl
+- <string.h>: Define __CORRECT_ISO_CPP_STRING_H_PROTO for Clang [BZ #25232]
+- build-many-glibcs.py: Move sparcv8 to extra_glibcs
+
+* Thu Dec  5 2019 Florian Weimer <fweimer@redhat.com> - 2.30.9000-24
+- Upstream patches for fallout from dlopen NODELETE changes (#1778344, #1778366)
+
+* Wed Dec 04 2019 Patsy Franklin <patsy@redhat.com> - 2.30.9000-23
+- Auto-sync with upstream branch master,
+  commit ec138c67cbda8b5826a0a2a7ba456408117996dc.
+- sysdeps: Add clock_gettime64 vDSO
+- Do not use ld.so to open statically linked programs in debugglibc.sh
+- Attach to test in container from debugglibc.sh
+- Expand $(as-needed) and $(no-as-needed) throughout the build system
+- x86: Assume --enable-cet if GCC defaults to CET [BZ #25225]
+- ldbl-128ibm-compat: Add tests for strfroml, strtold, and wcstold
+- ldbl-128ibm-compat: Add tests for strfmon and strfmon_l
+- ldbl-128ibm-compat: Add strfmon_l with IEEE long double format
+- ldbl-128ibm-compat: Replace http with https in new files
+- elf: Do not run IFUNC resolvers for LD_DEBUG=unused [BZ #24214]
+- elf/tst-dlopenfail: Disable --no-as-needed for tst-dlopenfailmod1.so
+- hurd: Fix ld.so __access override from libc
+- hurd: Fix ld.so __getcwd override from libc
+- hurd: Make __sigprocmask GLIBC_PRIVATE
+- hurd: Fix renameat2 error
+- hurd: make strerror(0) coherent with other ports
+- hurd: Fix ld.so link
+- Update kernel version to 5.4 in tst-mman-consts.py.
+- Update SOMAXCONN value from Linux 5.4.
+- Update syscall-names.list for Linux 5.4.
+- Fix syntax error in build-many-glibcs.py.
+- Define MADV_COLD and MADV_PAGEOUT from Linux 5.4.
+
+* Mon Dec  2 2019 Florian Weimer <fweimer@redhat.com> - 2.30.9000-22
+- dlopen: Remove incorrect assert in activate_nodelete (#1778344)
+
+* Thu Nov 28 2019 Florian Weimer <fweimer@redhat.com> - 2.30.9000-21
+- Auto-sync with upstream branch master,
+  commit e37c2cf299b61ce18f62852f6c5624c27829b610:
+- Move _dl_open_check to its original place in dl_open_worker
+- Block signals during the initial part of dlopen
+- Remove all loaded objects if dlopen fails, ignoring NODELETE (#1395758)
+- Avoid late dlopen failure due to scope, TLS slotinfo updates (swbz#25112)
+- Avoid late failure in dlopen in global scope update (swbz#25112)
+- Lazy binding failures during dlopen/dlclose must be fatal (swbz#24304)
+- resolv: Implement trust-ad option for /etc/resolv.conf (#1164339)
+- dlsym: Do not determine caller link map if not needed
+- libio: Disable vtable validation for pre-2.1 interposed handles (swbz#25203)
+- ldbl-128ibm-compat: Add syslog functions
+- ldbl-128ibm-compat: Add obstack printing functions
+- ldbl-128ibm-compat: Reuse tests for err.h and error.h functions
+- ldbl-128ibm-compat: Add error.h functions
+- ldbl-128ibm-compat: Add err.h functions
+- ldbl-128ibm-compat: Add argp_error and argp_failure
+- sparc: Use atomic compiler builtins on sparc
+- Remove 32 bit sparc v7 support
+
+* Wed Nov 27 2019 Arjun Shankar <arjun@redhat.com> - 2.30.9000-20
+- Auto-sync with upstream branch master,
+  commit bfdb731438206b0f70fe7afa890681155c30b419:
+- rtld: Check __libc_enable_secure for LD_PREFER_MAP_32BIT_EXEC (CVE-2019-19126)
+- Introduce DL_LOOKUP_FOR_RELOCATE flag for _dl_lookup_symbol_x
+- Enable inlining issignalingf within glibc
+- Don't use a custom wrapper macro around __has_include (bug 25189).
+- Remove duplicate inline implementation of issignalingf
+- misc: Set generic pselect as ENOSYS
+- Use DEPRECATED_SCANF macro for remaining C99-compliant scanf functions
+- ldbl-128ibm-compat: Add regular/wide character printing printing functions
+- ldbl-128ibm-compat: Test double values and positional arguments
+- ldbl-128ibm-compat: Add regular/wide character scanning functions
+- arm: Fix armv7 selection after 'Split BE/LE abilist'
+- Use Linux 5.4 in build-many-glibcs.py.
+- sysdeps/posix: Simplify if expression in getaddrinfo
+- sysdeps/posix/getaddrinfo: Return early on invalid address family
+- ru_UA locale: use copy "ru_RU" in LC_TIME (bug 25044)
+- locale: Greek -> ASCII transliteration table [BZ #12031]
+- nptl: Cleanup mutex internal offset tests
+- nptl: Add tests for internal pthread_rwlock_t offsets
+- nptl: Remove rwlock elision definitions
+- nptl: Add struct_mutex.h and struct_rwlock.h
+- nptl: Add default pthreadtypes-arch.h and pthread-offsets.h
+- Compile elf/rtld.c with -fno-tree-loop-distribute-patterns.
+- nptl: Fix __PTHREAD_MUTEX_INITIALIZER for !__PTHREAD_MUTEX_HAVE_PREV
+- S390: Fix handling of needles crossing a page in strstr z15 ifunc [BZ #25226]
+
+* Mon Nov 18 2019 Patsy Griffin <patsy@redhat.com> - 2.30.9000-19
+- Auto-sync with upstream branch master,
+  commit 2a764c6ee848dfe92cb2921ed3b14085f15d9e79.
+- Enhance _dl_catch_exception to allow disabling exception handling
+- hurd: Suppress GCC 10 -Warray-bounds warning in init-first.c [BZ #25097]
+- linux: Add comment on affinity set sizes to tst-skeleton-affinity.c
+- Avoid zero-length array at the end of struct link_map [BZ #25097]
+- Introduce link_map_audit_state accessor function
+- Properly initialize audit cookie for the dynamic loader [BZ #25157]
+- nios2: Work around backend bug triggered by csu/libc-tls.c (GCC PR 92499)
+- Redefine _IO_iconv_t to store a single gconv step pointer [BZ #25097]
+- Add new script for plotting string benchmark JSON output
+- support: Fix support_set_small_thread_stack_size to build on Hurd
+- login: Use pread64 in utmp implementation
+- Clarify purpose of assert in _dl_lookup_symbol_x
+- aarch64: Increase small and medium cases for __memcpy_generic
+- login: Introduce matches_last_entry to utmp processing
+
+* Tue Nov 12 2019 Arjun Shankar <arjun@redhat.com> - 2.30.9000-18
+- Auto-sync with upstream branch master,
+  commit cba932a5a9e91cffd7f4172d7e91f9b2efb1f84b:
+- nptl: Move nanosleep implementation to libc
+- Refactor nanosleep in terms of clock_nanosleep
+- nptl: Refactor thrd_sleep in terms of clock_nanosleep
+- math: enhance the endloop condition of function handle_input_flag
+- hurd: Remove lingering references to the time function
+- hurd: Use __clock_gettime in _hurd_select
+- login: Remove double-assignment of fl.l_whence in try_file_lock
+- nptl: Add missing placeholder abi symbol from nanosleep move
+- login: Acquire write lock early in pututline [BZ #24882]
+- Remove hppa pthreadP.h
+- sysdeps/clock_nanosleep: Use clock_nanosleep_time64 if avaliable
+- Fix array bounds violation in regex matcher (bug 25149)
+- support: Add support_set_small_thread_stack_size
+- linux: Reduce stack size for nptl/tst-thread-affinity-pthread
+- y2038: linux: Provide __ppoll64 implementation
+- Declare asctime_r, ctime_r, gmtime_r, localtime_r for C2X.
+- support: Add xsetlocale function
+- libio/tst-fopenloc: Use xsetlocale, xfopen, and xfclose
+- Fix clock_nanosleep when interrupted by a signal
+- slotinfo in struct dtv_slotinfo_list should be flexible array [BZ #25097]
+
+* Wed Nov 06 2019 Patsy Franklin <patsy@redhat.com> - 2.30.9000-17
+- Auto-sync with upstream branch master,
+  commit 2a0356e1191804d57005e1cfe2a72f019b7a8cce.
+- posix: Sync regex with gnulib
+- Add mnw language code [BZ #25139]
+- Add new locale: mnw_MM (Mon language spoken in Myanmar) [BZ #25139]
+- S390: Fp comparison are now raising FE_INVALID with gcc 10.
+- linux: pselect: Remove CALL_PSELECT6 macro
+- Fix run-one-test so that it runs elf tests
+- nptl: Fix niggles with pthread_clockjoin_np
+- hppa: Align __clone stack argument to 8 bytes (Bug 25066)
+- y2038: linux: Provide __futimens64 implementation
+- y2038: linux: Provide __utimensat64 implementation
+- nptl: Add pthread_timedjoin_np, pthread_clockjoin_np NULL timeout test
+- nptl: Add pthread_clockjoin_np
+- manual: Add documentation for pthread_tryjoin_np and pthread_timedjoin_np
+- nptl: Convert tst-join3 to use libsupport
+- Sync time/mktime.c with gnulib
+- Sync timespec-{add,sub} with gnulib
+- Sync intprops.h with gnulib
+- Refactor adjtimex based on clock_adjtime
+- Refactor PI mutexes internal definitions
+- Remove pause and nanosleep not cancel wrappers
+- nptl: Replace non cancellable pause/nanosleep with futex
+- Consolidate lowlevellock-futex.h
+- Consolidate futex-internal.h
+- Base max_fast on alignment, not width, of bins (Bug 24903)
+- Revise the documentation of simple calendar time.
+- Make second argument of gettimeofday as 'void *'
+- Use clock_gettime to implement gettimeofday.
+- Use clock_gettime to implement timespec_get.
+- Consolidate and deprecate ftime
+- Change most internal uses of time to __clock_gettime.
+- Use clock_gettime to implement time.
+- Use clock_settime to implement settimeofday.
+- Use clock_settime to implement stime; withdraw stime.
+- Change most internal uses of __gettimeofday to __clock_gettime.
+- Linux/Alpha: don't use timeval32 system calls.
+- resolv/tst-idna_name_classify: Isolate from system libraries
+- hurd: Support for file record locking
+- Comment out initgroups from example nsswitch.conf (Bug 25146)
+
+* Mon Oct 28 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-16
+- Auto-sync with upstream branch master,
+  commit 177a3d48a1c74d7b2cd6bfd48901519d25a5ecad.
+- y2038: linux: Provide __clock_getres64 implementation
+- time: Introduce function to check correctness of nanoseconds value
+- Add Transliterations for Unicode Misc. Mathematical Symbols-A/B [BZ #23132]
+- Install charmaps uncompressed in testroot
+- Add wait-for-debugger test harness hooks
+- Define __STATFS_MATCHES_STATFS64
+- hurd: Fix build after __pread64 usage in the dynamic loader
+- sysdeps/stat: Handle 64-bit ino_t types on 32-bit hosts
+- S390: Remove not needed stack frame in syscall function.
+
+* Fri Oct 25 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-15
+- Add *.mo files to all-langpacks (#1624528)
+
+* Thu Oct 24 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-14
+- Add Requires on basesystem for main package (#1757267)
+- Add Requires on coreutils for glibc-headers (uses rm)
+
+* Wed Oct 23 2019 Arjun Shankar <arjun@redhat.com> - 2.30.9000-13
+- Auto-sync with upstream branch master,
+  commit 7db1fe38de21831d53ceab9ae83493d8d1aec601:
+- Include <kernel-features.h> explicitly in Linux clock_settime.c
+- Remove math-finite.h
+- Remove finite-math tests
+- Remove x64 _finite tests and references
+- Fix testroot.pristine creation copying dynamic linker
+
+* Fri Oct 18 2019 Patsy Franklin <patsy@redhat.com> - 2.30.9000-12
+- Auto-sync with upstream branch master,
+  commit ef21bd2d8c6805c0c186a01f7c5039189f51b8c4.
+- loadarchive: guard against locale-archive corruption (Bug #25115)
+- Undo accidental commit to ChangeLog.19.
+- nptl: Document AS-safe functions in cancellation.c.
+- elf: Use nocancel pread64() instead of lseek()+read()
+- Add nocancel version of pread64()
+- Add run-one-test convenience target and makefile help text
+- Update sysvipc kernel-features.h files for Linux 5.1
+- S390: Add new s390 platform z15.
+- nptl: SIGCANCEL, SIGTIMER, SIGSETXID are always defined
+- nptl/tst-cancel25 needs to be an internal test
+- Remove libc_hidden_def from __semtimedop stub
+- sysvipc: Implement semop based on semtimedop
+- ipc: Refactor sysvipc internal definitions
+- Rename and split elf/tst-dlopen-aout collection of tests
+- dlfcn: Remove remnants of caller sensitivity from dlinfo
+- ldconfig: handle .dynstr located in separate segment (bug 25087)
+- ldd: Print "not a dynamic executable" on standard error [BZ #24150]
+- Add PTRACE_GET_SYSCALL_INFO from Linux 5.3 to sys/ptrace.h.
+- Move ChangeLog to ChangeLog.old/ChangeLog.19
+- manual: Remove warning in the documentation of the abort function
+- sysvipc: Set ipc_perm mode as mode_t (BZ#18231)
+- Simplify note processing
+- syscall-names.list: fix typos in comment
+- y2038: linux: Provide __clock_settime64 implementation
+- posix: Use posix_spawn for wordexp
+- mips: Do not malloc on getdents64 fallback
+- sparc: Assume GOTDATA support in the toolchain
+- <dirent.h>: Remove wrong comment about getdents64 declaration
+- ChangeLog: Remove leading spaces before tabs and trailing whitespace
+- Make tst-strftime2 and tst-strftime3 depend on locale generation
+- posix/tst-wordexp-nocmd: Fix diagnostics output in test
+- wordexp: Split out command execution tests from posix/wordexp-test
+
+* Tue Oct 08 2019 Arjun Shankar <arjun@redhat.com> - 2.30.9000-11
+- Adjust glibc-rh741105.patch.
+- Auto-sync with upstream branch master,
+  commit ca602c1536ce2777f95c07525f3c42d78812e665:
+- Add TCP_TX_DELAY from Linux 5.3 to netinet/tcp.h
+- [powerpc] fenv_private.h clean up
+- [powerpc] libc_feupdateenv_test: optimize FPSCR access
+- [powerpc] __fesetround_inline optimizations
+- [powerpc] Rename fegetenv_status to fegetenv_control
+- [powerpc] libc_feholdsetround_noex_ppc_ctx: optimize FPSCR write
+- [powerpc] Rename fesetenv_mode to fesetenv_control
+- Add helper script for glibc debugging
+- Update bits/mman.h constants and tst-mman-consts.py for Linux 5.3.
+- y2038: Provide conversion helpers for struct __timespec64
+- Use binutils 2.33 branch in build-many-glibcs.py.
+- Sync "language", "lang_name", "territory", "country_name" with CLDR/langtable
+- Split up endian.h to minimize exposure of BYTE_ORDER.
+- time: Add padding for the timespec if required
+- Enable passing arguments to the inferior in debugglibc.sh
+- [powerpc] No need to enter "Ignore Exceptions Mode"
+- Y2038: Include proper header to provide support for struct timeval on HURD
+- Disable warnings in string/tester.c at top level.
+- string/endian.h: Restore the __USE_MISC conditionals
+- Disable -Wmaybe-uninitialized for total_deadline in sunrpc/clnt_udp.c.
+- ChangeLog update from my last commit
+- nptl: Move pthread_attr_setinheritsched implementation into libc.
+- elf: Never use the file ID of the main executable [BZ #24900]
+- elf: Assign TLS modid later during dlopen [BZ #24930]
+- nptl: Move pthread_attr_getschedparam implementation into libc
+- riscv: Remove support for variable page sizes
+- nptl: Move pthread_attr_setschedparam implementation into libc
+
+* Fri Sep 27 2019 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.30.9000-10
+- Use full locale names in langpack descriptions (#1651375)
+
+* Thu Sep 26 2019 Patsy Franklin <patsy@redhat.com> - 2.30.9000-9
+- Auto-sync with upstream branch master,
+  commit 464cd3a9d5f505d92bae9a941bb75b0d91ac14ee.
+- y2038: Introduce struct __timespec64 - new internal glibc type
+- auto-changelog: Remove latin1 from codecs
+- Set the expects flags to clock_nanosleep
+- Fix tst-sigcontext-get_pc rule name from a43565ac447b1
+- inet/net-internal.h: Fix uninitalised clntudp_call() variable
+- Fix vDSO initialization on arm and mips
+- Script to generate ChangeLog-like output from git log
+- [powerpc] SET_RESTORE_ROUND optimizations and bug fix
+- Fix building support_ptrace.c on i686-gnu.
+- S390: Use _HP_TIMING_S390_H instead of _HP_TIMING_H.
+- Update syscall-names.list for Linux 5.3.
+- Use Linux 5.3 in build-many-glibcs.py.
+- S390: Add support for HP_TIMING_NOW.
+- Fix RISC-V vfork build with Linux 5.3 kernel headers.
+- Add UNSUPPORTED check in elf/tst-pldd.
+- sparc64: Use linux generic time implementation
+- mips: Consolidate INTERNAL_VSYSCALL_CALL
+- powerpc: Simplify vsyscall internal macros
+- Refactor vDSO initialization code
+- Remove PREPARE_VERSION and PREPARE_VERSION_KNOW
+- Fix small error in HP_TIMING_PRINT trailing null char setting
+
+* Mon Sep 16 2019 Parag Nemade <pnemade AT redhat DOT com> - 2.30.9000-8
+- Change Supplements "langpacks-" to "langpacks-core-" (#1729992)
+
+* Mon Sep 16 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-7
+- Auto-sync with upstream branch master,
+  commit 1a6566094d3097f4a3037ab5555cddc6cb11c3a3.
+- alpha: force old OSF1 syscalls for getegid, geteuid and getppid [BZ #24986]
+- Fix http: URL in 'configure'
+- Regenerate charmap-kw.h, locfile-kw.h
+- Fix three GNU license URLs, along with trailing-newline issues.
+- Prefer https to http for gnu.org and fsf.org URLs
+
+* Fri Sep 06 2019 Patsy Franklin <patsy@redhat.com> - 2.30.9000-6
+- Auto-sync with upstream branch master,
+  commit 1b7f04070bd94f259e2ed24d6fb76309d64fb164.
+- locale: Avoid zero-length array in _nl_category_names [BZ #24962]
+- math: Replace const attribute with pure in totalorder* functions
+- y2038: Introduce the __ASSUME_TIME64_SYSCALLS define
+- Finish move of clock_* functions to libc. [BZ #24959]
+- Update Alpha libm-test-ulps
+- localedef: Use initializer for flexible array member [BZ #24950]
+- Add misc/tst-mntent-autofs, testing autofs "ignore" filtering
+- Use autofs "ignore" mount hint in getmntent_r/getmntent
+- hurd: Fix build
+- Use generic memset/memcpy/memmove in benchtests
+- nptl: Move pthread_attr_getinheritsched implementation into libc
+- hurd: Fix SS_ONSTACK support
+- hurd: Remove optimizing anonymous maps as __vm_allocate.
+- hurd: Fix poll and select POSIX compliancy details about errors
+- hurd: Fix timeout handling in _hurd_select
+- hurd getcwd: Allow unknown root directory
+- hurd: Fix implementation of setitimer.
+- hurd: Fix _hurd_select for single fd sets
+- MIPS support for GNU hash
+- sh: Split BE/LE abilist
+- microblaze: Split BE/LE abilist
+- arm: Split BE/LE abilist
+- Correct the spelling of more contributors
+- Fix posix/tst-regex by using UTF-8 and own test input
+- [powerpc] fegetenv_status: simplify instruction generation
+- [powerpc] fesetenv: optimize FPSCR access
+- [powerpc] SET_RESTORE_ROUND improvements
+- [powerpc] fe{en,dis}ableexcept, fesetmode: optimize FPSCR accesses
+- [powerpc] fe{en,dis}ableexcept optimize bit translations
+- misc: Use allocate_once in getmntent
+- nptl: Move pthread_attr_setdetachstate implementation into libc
+- login: pututxline could fail to overwrite existing entries [BZ #24902]
+- Fix posix/tst-regex by using a dedicated input-file.
+
+* Tue Aug 27 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-5
+- Move makedb from glibc-common to nss_db (#1704334)
+
+* Mon Aug 26 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-4
+- Auto-sync with upstream branch master,
+  commit 1bced8cadc82077f0201801239e89eb24b68e9aa.
+- Don't put non-ASCII into installed headers
+- Fix spellings of contributor names in comments and doc
+- [MIPS] Raise highest supported EI_ABIVERSION value [SWBZ #24916]
+- mips: Force RWX stack for hard-float builds that can run on pre-4.8 kernels
+- linux: Make profil_counter a compat_symbol (SWBZ#17726)
+- Refactor sigcontextinfo.h
+- Add RTLD_SINGLE_THREAD_P on generic single-thread.h
+- Chinese locales: Set first_weekday to 2 (swbug 24682).
+- powerpc: Fix typos and field name in comments
+- Mark IDN tests unsupported with libidn2 before 2.0.5.
+- Document strftime %Ob and %OB as C2X features.
+- Remove dead regex code
+- Fix bad pointer / leak in regex code
+- Don't use the argument to time.
+- Add tgmath.h macros for narrowing functions.
+- Update i386 libm-test-ulps
+
+* Mon Aug 19 2019 Carlos O'Donell <carlos@redhat.com> - 2.30.9000-3
+- Drop glibc-fedora-nscd-warnings.patch; applied upstream.
+- Drop Source7: nsswitch.conf; applying patch to upstream.
+- Add glibc-fedora-nsswitch.patch for Fedora customizations.
+- Auto-sync with upstream branch master,
+  commit d34d4c80226b3f5a1b51a8e5b005a52fba07d7ba:
+- Do not print backtraces on fatal glibc errors.
+- elf: Self-dlopen failure with explict loader invocation (swbz#24900)
+- login: Add nonstring attributes to struct utmp, struct utmpx (swbz#24899)
+- login: Use struct flock64 in utmp (swbz#24880)
+- login: Disarm timer after utmp lock acquisition (swbz#24879)
+
+* Fri Aug 16 2019 Carlos O'Donell <carlos@redhat.com> - 2.30.9000-2
+- Fix C.UTF-8 to use full code ranges.
+
+* Thu Aug 15 2019 Florian Weimer <fweimer@redhat.com> - 2.30.9000-1
+- Auto-sync with upstream branch master,
+  commit 341da5b4b6253de9a7581a066f33f89cacb44dec.
+
+* Fri Aug 02 2019 Florian Weimer <fweimer@redhat.com> - 2.30-1
+- Drop glibc-rh1734680.patch, applied upstream.
+- Auto-sync with upstream branch release/2.30/master,
+  commit be9a328c93834648e0bec106a1f86357d1a8c7e1:
+- malloc: Remove unwanted leading whitespace in malloc_info (swbz#24867)
+- glibc 2.30 release
+- iconv: Revert steps array reference counting changes (#1734680)
+- Restore r31 setting in powerpc32 swapcontext
+
+* Wed Jul 31 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-37
+- Fix memory leak in iconv_open (#1734680)
+
+* Tue Jul 30 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-36
+- Drop glibc-rh1732406.patch, fix for the regression applied upstream.
+- Auto-sync with upstream branch master,
+  commit 8a814e20d443adc460a1030fa1a66aa9ae817483:
+- nptl: Use uintptr_t for address diagnostic in nptl/tst-pthread-getattr
+- Linux: Move getdents64 to <dirent.h>
+- test-container: Install with $(sorted-subdirs) (swbz#24794)
+- gconv: Check reference count in __gconv_release_cache (#1732406)
+- x86-64: Compile branred.c with -mprefer-vector-width=128 (swbz#24603)
+- build-many-glibcs.py: Use Linux 5.2 by default
+- Linux: Use in-tree copy of SO_ constants for !__USE_MISC (swbz#24532)
+- test-container: Avoid copying unintended system libraries
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org>
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Tue Jul 23 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-34
+- Revert libio change that causes crashes (#1732406)
+
+* Mon Jul 22 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-33
+- Auto-sync with upstream branch master,
+  commit dcf36bcad3f283f77893d3b157ef7bb2c99419f2.
+- Add NEWS entry about the new AArch64 IFUNC resolver call ABI
+- locale/C-translit.h.in: Cyrillic -> ASCII transliteration [BZ #2872]
+- Linux: Update syscall-names.list to Linux 5.2
+
+* Thu Jul 18 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-32
+- Auto-sync with upstream branch master,
+  commit 3556658c5b8765480711b265abc901c67d5fc060.
+- Regenerate po/libc.pot for 2.30 release.
+- nptl: Add POSIX-proposed _clock functions to hppa pthread.h
+- nptl: Remove unnecessary forwarding of pthread_cond_clockwait from libc
+- Afar locales: Months and days updated from CLDR (bug 21897).
+- nl_BE locale: Use "copy "nl_NL"" in LC_NAME (bug 23996).
+- nl_BE and nl_NL locales: Dutch salutations (bug 23996).
+- ga_IE and en_IE locales: Revert first_weekday removal (bug 24200).
+- nptl: Remove futex_supports_exact_relative_timeouts
+- Update NEWS for new _clockwait and _clocklock functions
+- nptl: Add POSIX-proposed pthread_mutex_clocklock
+- nptl: Rename lll_timedlock to lll_clocklock and add clockid parameter
+- nptl: Add POSIX-proposed pthread_rwlock_clockrdlock & pthread_rwlock_clockwrlock
+- nptl: pthread_rwlock: Move timeout validation into _full functions
+- nptl: Add POSIX-proposed pthread_cond_clockwait
+- nptl: Add POSIX-proposed sem_clockwait
+- nptl: Add clockid parameter to futex timed wait calls
+- posix: Fix large mmap64 offset for mips64n32 (BZ#24699)
+- nss_db: fix endent wrt NULL mappings [BZ #24695] [BZ #24696]
+
+* Wed Jul 10 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-31
+- Auto-sync with upstream branch master,
+  commit 30ba0375464f34e4bf8129f3d3dc14d0c09add17.
+- Don't declare __malloc_check_init in <malloc.h> (bug 23352)
+- nftw: fill in stat buf for dangling links [BZ #23501]
+- dl-vdso: Add LINUX_4 HASH CODE to support nds32 vdso mechanism
+- riscv: restore ABI compatibility (bug 24484)
+- aarch64: new ifunc resolver ABI
+- nptl: Remove vfork IFUNC-based forwarder from libpthread [BZ #20188]
+- malloc: Add nptl, htl dependency for the subdirectory [BZ #24757]
+- Call _dl_open_check after relocation [BZ #24259]
+- Linux: Use mmap instead of malloc in dirent/tst-getdents64
+- ld.so: Support moving versioned symbols between sonames [BZ #24741]
+- io: Remove copy_file_range emulation [BZ #24744]
+- Linux: Adjust gedents64 buffer size to int range [BZ #24740]
+- powerpc: Use generic e_expf
+- Linux: Add nds32 specific syscalls to syscall-names.list
+- szl_PL locale: Fix a typo in the previous commit (bug 24652).
+
+* Mon Jun 24 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-30
+- Auto-sync with upstream branch master,
+  commit 2bd81b60d6ffdf7e0d22006d69f4b812b1c80513.
+- szl_PL locale: Spelling corrections (swbz 24652).
+- nl_{AW,NL}: Correct the thousands separator and grouping (swbz 23831).
+- Add missing VDSO_{NAME,HASH}_* macros and use them for PREPARE_VERSION_KNOWN
+- nptl: Convert various tests to use libsupport
+- support: Invent verbose_printf macro
+- support: Add xclock_now helper function.
+
+* Fri Jun 21 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-29
+- Auto-sync with upstream branch master,
+  commit 21cc130b78a4db9113fb6695e2b951e697662440:
+- During exit, skip wide buffer handling for legacy stdio handles (#1722216)
+- powerpc: add 'volatile' to asm
+- powerpc: Fix static-linked version of __ppc_get_timebase_freq (swbz#24640)
+- nl_AW locale: Correct the negative monetary format (swb#z24614)
+- Fix gcc 9 build errors for make xcheck. (swbz#24556)
+- dlfcn: Avoid one-element flexible array in Dl_serinfo (swbz#24166)
+- elf: Refuse to dlopen PIE objects (swbz#24323)
+- nl_NL locale: Correct the negative monetary format (swbz#24614)
+- powerpc: Refactor powerpc64 lround/lroundf/llround/llroundf
+- powerpc: refactor powerpc64 lrint/lrintf/llrint/llrintf
+
+* Mon Jun 17 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-28
+- Auto-sync with upstream branch master,
+  commit 48c3c1238925410b4e777dc94e2fde4cc9132d44.
+- Linux: Fix __glibc_has_include use for <sys/stat.h> and statx (#1721129)
+- <sys/cdefs.h>: Inhibit macro expansion for __glibc_has_include
+- Add IPV6_ROUTER_ALERT_ISOLATE from Linux 5.1 to bits/in.h
+- aarch64: handle STO_AARCH64_VARIANT_PCS
+- aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS
+- powerpc: Remove optimized finite
+- math: Use wordsize-64 version for finite
+- powerpc: Remove optimized isinf
+- math: Use wordsize-64 version for isinf
+- powerpc: Remove optimized isnan
+- math: Use wordsize-64 version for isnan
+- benchtests: Add isnan/isinf/isfinite benchmark
+- powerpc: copysign cleanup
+- powerpc: consolidate rint
+- libio: freopen of default streams crashes in old programs (swbz#24632)
+- Linux: Deprecate <sys/sysctl.h> and sysctl
+- <sys/stat.h>: Use Linux UAPI header for statx if available and useful
+  (#1721129)
+- <sys/cdefs.h>: Add __glibc_has_include macro
+- Improve performance of memmem
+- Improve performance of strstr
+- Benchmark strstr hard needles
+- Fix malloc tests build with GCC 10
+
+* Mon Jun 10 2019 Patsy Franklin <patsy@redhat.com> - 2.29.9000-27
+- Auto-sync with upstream branch master,
+  commit 51ea67d54882318c4fa5394c386f4816ddc22408.
+- powerpc: get_rounding_mode: utilize faster method to get rounding mode
+- riscv: Do not use __has_include__
+- powerpc: fegetexcept: utilize function instead of duplicating code
+- iconv: Use __twalk_r in __gconv_release_shlib
+- Fix iconv buffer handling with IGNORE error handler (swbz#18830)
+
+* Wed Jun  5 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-26
+- Restore /usr/lib/locale/locale-archive under its original name (#1716710)
+
+* Tue Jun  4 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-25
+- Add glibc version to locale-archive name (#1716710)
+
+* Mon Jun 03 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-24
+- Auto-sync with upstream branch master,
+  commit dc91a19e6f71e1523f4ac179191a29b2131d74bb:
+- Linux: Add oddly-named arm syscalls to syscall-names.list.
+- arm: Remove ioperm/iopl/inb/inw/inl/outb/outw/outl support.
+- Add INADDR_ALLSNOOPERS_GROUP from Linux 5.1 to netinet/in.h.
+
+* Sat Jun 01 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-23
+- Convert glibc_post_upgrade to lua.
+
+* Sat Jun 01 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-22
+- Remove support for filtering glibc-all-langpacks (#1715891)
+- Auto-sync with upstream branch master,
+  commit 9250e6610fdb0f3a6f238d2813e319a41fb7a810:
+- powerpc: Fix build failures with current GCC
+- Remove unused get_clockfreq files
+- powerpc: generic nearbyint/nearbyintf
+- tt_RU: Add lang_name (swbz#24370)
+- tt_RU: Fix orthographic mistakes in mon and abmon sections (swbz#24369)
+- Add IGMP_MRDISC_ADV from Linux 5.1 to netinet/igmp.h.
+
+* Mon May 27 2019 Arjun Shankar <arjun@redhat.com> - 2.29.9000-21
+- Auto-sync with upstream branch master,
+  commit 85188d8211698d1a255f0aec6529546db5c56de3:
+- Remove support for PowerPC SPE extension
+- elf: Add tst-ldconfig-bad-aux-cache test
+- Add F_SEAL_FUTURE_WRITE from Linux 5.1 to bits/fcntl-linux.h
+- nss_dns: Check for proper A/AAAA address alignment
+
+* Tue May 21 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-20
+- Auto-sync with upstream branch master,
+  commit 46ae07324b1cd50fbf8f37a076d6babcfca7c510.
+- Improve string benchtest timing
+- sysvipc: Add missing bit of semtimedop s390 consolidation
+- wcsmbs: Fix data race in __wcsmbs_clone_conv [swbz #24584]
+- libio: Fix gconv-related memory leak [swbz #24583]
+- libio: Remove codecvt vtable [swbz #24588]
+- support: Expose sbindir as support_sbindir_prefix
+- support: Add missing EOL terminators on timespec
+- support: Correct confusing comment
+- sysvipc: Consolidate semtimedop s390
+- sysvipc: Fix compat msgctl (swbz#24570)
+- Add NT_ARM_PACA_KEYS and NT_ARM_PACG_KEYS from Linux 5.1 to elf.h.
+- Small tcache improvements
+- manual: Document O_DIRECTORY
+- Update kernel-features.h files for Linux 5.1.
+- nss_nis, nss_nisplus: Remove RES_USE_INET6 handling
+- nss_files: Remove RES_USE_INET6 from hosts processing
+- support: Report NULL blobs explicitly in TEST_COMPARE
+- dlfcn: Guard __dlerror_main_freeres with __libc_once_get (once) [swbz# 24476]
+- Add missing Changelog entry
+
+* Wed May 15 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-19
+- Auto-sync with upstream branch master,
+  commit 32ff397533715988c19cbf3675dcbd727ec13e18:
+- Fix crash in _IO_wfile_sync (#1710460)
+- nss: Turn __nss_database_lookup into a compatibility symbol
+- support: Add support_install_rootsbindir
+- iconv: Remove public declaration of __gconv_transliterate
+- Linux: Add the tgkill function
+- manual: Adjust twalk_r documentation.
+- elf: Fix tst-pldd for non-default --prefix and/or --bindir (swbz#24544)
+- support: Export bindir path on support_path
+- configure: Make --bindir effective
+- x86: Remove arch-specific low level lock implementation
+- nptl: Assume LLL_LOCK_INITIALIZER is 0
+- nptl: Small optimization for lowlevellock
+- Add single-thread.h header
+- locale: Update to Unicode 12.1.0 (swbz#24535)
+- malloc: Fix tcache count maximum (swbz#24531)
+- sem_close: Use __twalk_r
+- support: Fix timespec printf
+- nptl/tst-abstime: Use libsupport
+- nptl: Convert some rwlock tests to use libsupport
+- nptl: Use recent additions to libsupport in tst-sem5
+- nptl: Convert tst-cond11.c to use libsupport
+- support: Add timespec.h
+- Move nptl/tst-eintr1 to xtests (swbz#24537)
+- powerpc: trunc/truncf refactor
+- powerpc: round/roundf refactor
+- powerpc: floor/floorf refactor
+- support: Add xclock_gettime
+- malloc/tst-mallocfork2: Use process-shared barriers
+- Update syscall-names.list for Linux 5.1
+- Use GCC 9 in build-many-glibcs.py
+- aarch64: thunderx2 memmove performance improvements
+- misc/tst-tsearch: Additional explicit error checking
+- elf: Fix elf/tst-pldd with --enable-hardcoded-path-in-tests (swbz#24506)
+- misc: Add twalk_r function
+
+* Thu May 02 2019 Arjun Shankar <arjun@redhat.com> - 2.29.9000-18
+- Auto-sync with upstream branch master,
+  commit 20aa5819586ac7ad11f711bab64feda307965191:
+- semaphore.h: Add nonnull attributes
+- powerpc: Remove power4 mpa optimization
+- powerpc: Refactor ceil/ceilf
+- Fix -O1 compilation errors with `__ddivl' and `__fdivl' [BZ #19444]
+- Make mktime etc. compatible with __time64_t
+
+* Fri Apr 26 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-17
+- Auto-sync with upstream branch master,
+  commit c57afec0a9b318bb691e0f5fa4e9681cf30df7a4:
+- Increase BIND_NOW coverage (#1702671)
+- Fix pldd hang (#1361689)
+- riscv: remove DL_RO_DYN_SECTION (swbz#24484)
+- locale: Add LOCPATH diagnostics to the locale program
+- Reduce benchtests time
+
+* Mon Apr 22 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-16
+- Auto-sync with upstream branch master,
+  commit 25f7a3c96116a9102df8bf7b04ef160faa32416d.
+- malloc: make malloc fail with requests larger than PTRDIFF_MAX (BZ#23741)
+- powerpc: Fix format issue from 3a16dd780eeba602
+- powerpc: fma using builtins
+- powerpc: Use generic fabs{f} implementations
+- mips: Remove rt_sigreturn usage on context function
+- powerpc: Remove rt_sigreturn usage on context function
+- support: Add support_capture_subprogram
+- stdlib/tst-secure-getenv: handle >64 groups
+
+* Mon Apr 15 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-15
+- Auto-sync with upstream branch master,
+  commit e3f454bac0f968216699ca405c127c858f0657c7:
+- nss_dns: Do not replace root domain with empty string
+- alloc_buffer: Return unqualified pointer type in alloc_buffer_next
+- malloc: Set and reset all hooks for tracing (swbz#16573)
+
+* Thu Apr 11 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-14
+- Run valgrind smoke test against the install tree
+
+* Thu Apr 11 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-13
+- Do not use --g-libs with find-debuginfo.sh; it breaks valgrind (#1698824)
+
+* Wed Apr 10 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-12
+- Strip debugging information from installed programs again (#1661510)
+
+* Tue Apr 09 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-11
+- Drop glibc-warning-fix.patch. Microbenchmark code fixed upstream.
+- Auto-sync with upstream branch master,
+  commit 648279f4af423c4783ec1dfa63cb7b46a7640217:
+- powerpc: Use generic wcscpy optimization
+- powerpc: Use generic wcschr optimization
+- powerpc: Use generic wcsrchr optimization
+- aarch64: thunderx2 memcpy implementation cleanup and streamlining
+- resolv: Remove support for RES_USE_INET6 and the inet6 option
+- resolv: Remove RES_INSECURE1, RES_INSECURE2
+
+* Thu Apr 04 2019 Arjun Shankar <arjun@redhat.com> - 2.29.9000-10
+- Auto-sync with upstream branch master,
+  commit 8260f23616c1a2a4e609f989a195fba7690a42ca:
+- Fix strptime era handling, add more strftime tests [BZ #24394]
+- time/tst-strftime2.c: Make the file easier to maintain
+- time: Add tests for Minguo calendar [BZ #24293]
+- ja_JP locale: Add entry for the new Japanese era [BZ #22964]
+- Add Reiwa era tests to time/tst-strftime3.c
+
+* Mon Apr 01 2019 Arjun Shankar <arjun@redhat.com> - 2.29.9000-9
+- Auto-sync with upstream branch master,
+  commit 993e3107af67edefcfc79a62ae55f7b98aa5151e:
+- Add AArch64 HWCAPs from Linux 5.0
+- tt_RU: Fix orthographic mistakes in day and abday sections [BZ #24296]
+- iconv, localedef: avoid floating point rounding differences [BZ #24372]
+- Fix parentheses error in iconvconfig.c and ld-collate.c [BZ #24372]
+- S390: New configure check and hwcap values for new CPU architecture arch13
+- S390: Add memmove, strstr, and memmem ifunc variants for arch13
+- nptl: Remove pthread_clock_gettime pthread_clock_settime
+- linux: Assume clock_getres CLOCK_{PROCESS,THREAD}_CPUTIME_ID
+- Remove __get_clockfreq
+- Do not use HP_TIMING_NOW for random bits
+- hp-timing: Refactor rtld usage, add generic support
+- Add NT_ARM_PAC_MASK and NT_MIPS_MSA from Linux 5.0 to elf.h
+- Add UDP_GRO from Linux 5.0 to netinet/udp.h
+- nptl: Convert tst-sem5 & tst-sem13 to use libsupport
+- nptl/tst-rwlock14: Test pthread_rwlock_timedwrlock correctly
+- nss/tst-nss-files-alias-leak: add missing opening quote in printf
+- math: Enable some math builtins for clang
+- powerpc: Use __builtin_{mffs,mtfsf}
+- RISC-V: Fix `test' operand error with soft-float ABI being configured
+
+* Wed Mar 20 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-8
+- Add warnings and notes to /etc/nsswitch.conf and /etc/nscd.conf.
+
+* Mon Mar 18 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-7
+- Auto-sync with upstream branch master,
+  commit 78919d3886c9543279ec755a701e279c62b44164.
+
+* Thu Mar 14 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-6
+- Drop glibc-fedora-streams-rh436349.patch.  STREAMS was removed upstream.
+- Auto-sync with upstream branch master,
+  commit a0a0dc83173ce11ff45105fd32e5d14356cdfb9c:
+- Remove obsolete, never-implemented XSI STREAMS declarations
+- nss: Fix tst-nss-files-alias-truncated for default --as-needed linking
+- scripts/check-obsolete-constructs.py: Process all headers as UTF-8.
+- Use Linux 5.0 in build-many-glibcs.py.
+- hurd: Add no-op version of __res_enable_icmp [BZ #24047]
+- Move inttypes.h and stdint.h to stdlib.
+- Use a proper C tokenizer to implement the obsolete typedefs test.
+- Fix output of LD_SHOW_AUXV=1.
+
+* Wed Mar 13 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-5
+- Drop glibc-rh1670028.patch, applied upstream
+- Auto-sync with upstream branch master,
+  commit 38b52865d4ccfee3647f27e969e539a4396a73b1:
+- elf: Add DF_1_KMOD, DF_1_WEAKFILTER, DF_1_NOCOMMON to <elf.h>
+- resolv: Enable full ICMP errors for UDP DNS sockets [BZ #24047]
+- C-SKY: add elf header definition for elfutils
+- C-SKY: mark lr as undefined to stop unwinding
+- C-SKY: remove user_regs definition
+- C-SKY: fix sigcontext miss match
+- Bug 24307: Update to Unicode 12.0.0
+- Break lines before not after operators, batch 4.
+- check-wrapper-headers test: Adjust Fortran include file directory
+- Fix location where math-vector-fortran.h is installed.
+
+* Wed Mar 06 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-4
+- Auto-sync with upstream branch master,
+  commit 0ddb7ea842abf63516b74d4b057c052afc6ba863.
+- nptl: Assume __ASSUME_FUTEX_CLOCK_REALTIME support
+- powerpc: Fix build of wcscpy with --disable-multi-arch
+- elf: Remove remnants of MAP_ANON emulation
+- S390: Increase function alignment to 16 bytes.
+- ja_JP: Change the offset for Taisho gan-nen from 2 to 1 [BZ #24162]
+- ldbl-opt: Reuse test cases from misc/ that check long double
+- ldbl-opt: Add error and error_at_line (bug 23984)
+- ldbl-opt: Add err, errx, verr, verrx, warn, warnx, vwarn, and vwarnx (bug 23984)
+- ldbl-opt: Reuse argp tests that print long double
+- ldbl-opt: Add argp_error and argp_failure (bug 23983)
+- elf/tst-big-note: Improve accuracy of test [BZ #20419]
+- S390: Fix introduction of __wcscpy and weak wcscpy symbols.
+- __netlink_assert_response: Add more __libc_fatal newlines [BZ #20271]
+- Add more spaces before '('.
+- elf: Add tests with a local IFUNC resolver [BZ #23937]
+- elf/Makefile: Run IFUNC tests if binutils supports IFUNC
+- powerpc: Fix linknamespace introduced by 4d8015639a75
+- hurd: Add renameat2 support for RENAME_NOREPLACE
+- Fix -Wempty-body warnings in Hurd-specific code.
+- Add some spaces before '('.
+- wcsmbs: optimize wcsnlen
+- wcsmbs: optimize wcsncpy
+- wcsmbs: optimize wcsncat
+- wcsmbs: optimize wcscpy
+- wcsmbs: optimize wcscat
+- wcsmbs: optimize wcpncpy
+- wcsmbs: optimize wcpcpy
+- Break further lines before not after operators.
+- Add and move fall-through comments in system-specific code.
+
+* Fri Mar 1 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-3
+- Add .gdb_index to debug information (rhbz#1680765)
+
+* Wed Feb 27 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-2
+- Fix build failure related to microbenchmarks.
+
+* Tue Feb 26 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-1
+- Auto-sync with upstream branch master,
+  commit e0cb7b6131ee5f2dca2938069b8b9590304e6f6b:
+- nss_files: Fix /etc/aliases null pointer dereference (swbz#24059)
+- regex: fix read overrun (swbz#24114)
+- libio: use stdout in puts and putchar, etc (swbz#24051)
+- aarch64: Add AmpereComputing emag to tunable cpu list
+- aarch64: Optimized memset specific to AmpereComputing emag
+- aarch64: Optimized memchr specific to AmpereComputing emag
+- Require GCC 6.2 or later to build glibc
+- manual: Document lack of conformance of sched_* functions (swbz#14829)
+- libio: Use stdin consistently for input functions (swbz#24153)
+- x86-64 memcmp: Use unsigned Jcc instructions on size (swbz#24155)
+- Fix handling of collating elements in fnmatch (swbz#17396,swbz#16976)
+- arm: Use "nr" constraint for Systemtap probes (swbz#24164)
+- Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP (swbz#23403)
+- Add compiler barriers for pthread_mutex_trylock (swbz#24180)
+- rt: Turn forwards from librt to libc into compat symbols (swbz#24194)
+- Linux: Add gettid system call wrapper (swbz#6399)
+- nptl: Avoid fork handler lock for async-signal-safe fork (swbz#24161)
+- elf: Ignore LD_AUDIT interfaces if la_version returns 0 (swbz#24122)
+- nptl: Reinstate pthread_timedjoin_np as a cancellation point (swbz#24215)
+- nptl: Fix invalid Systemtap probe in pthread_join (swbz#24211)
+
+* Tue Feb 19 2019 Florian Weimer <fweimer@redhat.com> - 2.29-8
+- Drop glibc-rh1674280.patch.  Different fix applied upstream.  (#1674280)
+- Auto-sync with upstream branch release/2.29/master,
+  commit 067fc32968b601493f4b247a3ac00caeea3f3d61:
+- nptl: Fix invalid Systemtap probe in pthread_join (#1674280)
+
+* Mon Feb 11 2019 Florian Weimer <fweimer@redhat.com> - 2.29-7
+- Hotfix for invalid Systemtap probe in pthread_join (#1674280)
+
+* Mon Feb 11 2019 Florian Weimer <fweimer@redhat.com> - 2.29-6
+- Remove LRA bug on POWER workaround, fixed in gcc-9.0.1-0.4.fc30 (#1673018)
+
+* Mon Feb 11 2019 Florian Weimer <fweimer@redhat.com> - 2.29-5
+- Auto-sync with upstream branch release/2.29/master,
+  commit c096b008d2671028c21ac8cf01f18a2083e73c44:
+- nptl: Avoid fork handler lock for async-signal-safe fork (swbz#24161)
+- nptl: Add compiler barriers in pthread_mutex_trylock (swbz#24180)
+
+* Thu Feb  7 2019 Florian Weimer <fweimer@redhat.com> - 2.29-4
+- Work around LRA hang on ppc64le (#1673018)
+
+* Wed Feb 06 2019 Florian Weimer <fweimer@redhat.com> - 2.29-3
+- Auto-sync with upstream branch release/2.29/master,
+  commit 2de15ac95713a238dc258eb8977ecdfca811fc19:
+- arm: Use "nr" constraint for Systemtap probes (#1196181)
+
+* Fri Feb  1 2019 Florian Weimer <fweimer@redhat.com> - 2.29-2
+- Eliminate %%glibcrelease macro.
+- Switch to regular Release: pattern.
+
+* Thu Jan 31 2019 Carlos O'Donell <carlos@redhat.com> - 2.29-1
+- Auto-sync with upstream branch release/2.29/master,
+  commit 86013ef5cea322b8f4b9c22f230c22cce369e947.
+- nptl: Fix pthread_rwlock_try*lock stalls (swbz#23844)
+
+* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org>
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Mon Jan 28 2019 DJ Delorie <dj@redhat.com> - 2.28.9000-37
+- Auto-sync with upstream branch master,
+  commit e1e47c912a8e557508362715f7468091def3ec4f.
+- Update translations.
+* Mon Jan 28 2019 Florian Weimer <fweimer@redhat.com> - 2.28.9000-36
+- resolv: Enable full ICMP error reporting in stub resolver (#1670028)
+
+* Mon Jan 28 2019 Florian Weimer <fweimer@redhat.com> - 2.28.9000-35
+- Remove obsolete scriptlets
+
+* Fri Jan 25 2019 Florian Weimer <fweimer@redhat.com> - 2.28.9000-34
+- Auto-sync with upstream branch master,
+  commit 83e6b59625f45db1eee93e5684091f740c52a083:
+- elf: Revert LD_AUDIT fix for modules with invalid version (swbz#24122)
+- strftime: Pass the additional flags from "%EY" to "%Ey" (swbz#24096)
+- strftime: Set the default width of "%Ey" to 2 (swbz#23758)
+
+* Thu Jan 24 2019 Florian Weimer <fweimer@redhat.com> - 2.28.9000-33
+- Auto-sync with upstream branch master,
+  commit 3367acdb344a1d7fcf8f53748d301d652c8911dd:
+- elf: Fix LD_AUDIT for modules with invalid version (swbz#24122)
+- CVE-2016-10739: getaddrinfo: Fully parse IPv4 address strings (#1331390)
+- resolv: Do not send queries for non-host-names in nss_dns (swbz#24112)
+- malloc: Revert fastbins to old-style atomics
+
+* Wed Jan 23 2019 Florian Weimer <fweimer@redhat.com> - 2.28.9000-32
+- Use assembler to produce annobin notes for nonshared libraries (#1668822)
+
+* Wed Jan 16 2019 Carlos O'Donell <carlos@redhat.com> - 2.28.9000-31
+- Auto-sync with upstream branch master,
+  commit 008b598e2a495024f9777006716cfd8668f3db33.
+- x86-64: Optimize strcat/strncat, strcpy/strncpy and stpcpy/stpncpy with AVX2
+- powerpc: Fix VSCR position in ucontext (swbz#24088)
+- AArch64: Add ifunc support for Ares
+- soft-fp: Properly check _FP_W_TYPE_SIZE (swbz#24066)
+
+* Thu Jan 10 2019 Florian Weimer <fweimer@redhat.com> - 2.28.9000-30
+- Inherit -march=haswell flag from redhat-rpm-config
+
+* Mon Jan 07 2019 Arjun Shankar <arjun@redhat.com> - 2.28.9000-29
+- Auto-sync with upstream branch master,
+  commit 2ef427168818ce04b03cecb7b739f9db0156e3e4.
+- Require GCC 5 or later to build glibc (swbz#23993)
+- Only build libm with -fno-math-errno (swbz#24024)
+- sysdeps/ieee754: prevent maybe-uninitialized errors with -O (swbz#19444)
+- Multiple locales: Use the correct 12-hour time formats (swbz#10496)
+- sq_AL: Use the correct date and time formats (swbz#10496, swbz#23724)
+- en_US: define date_fmt (swbz#24046)
+- Remove executable bit from localedata/locales/bi_VU (swbz#23995)
+- malloc: Always call memcpy in _int_realloc (swbz#24027)
+- ARM: fix kernel assisted atomics with GCC 8 (swbz#24034)
+- S390: Unify 31/64bit mem{set,cmp,cpy,pcpy}, bzero with ifunc handling
+- S390: Refactor ifunc handling for several str* and wc* functions
+- posix: Clear close-on-exec for posix_spawn adddup2 (swbz#23640)
+- termios: Define TIOCSER_TEMT with __USE_MISC (swbz#17783)
+- termios: Consolidate Baud Rate Selection definitions (swbz#23783)
+- Y2038: add __{localtime64,gmttime64,ctime64}[_r] functions
+- Y2038: make __difftime compatible with 64-bit time
+
+* Mon Dec 17 2018 DJ Delorie <dj@redhat.com> - 2.28.9000-28
+- Auto-sync with upstream branch master,
+  commit 6bbfc5c09fc5b5e3d4a0cddbbd4e2e457767dae7.
+- Add statx conditionals for wordsize-32 *xstat.c
+- regex: fix storage-exhaustion error (swbz#18040)
+- regex: fix heap-use-after-free error (swbz#18040)
+- manual: Document thread/task IDs for Linux
+
+* Thu Dec 13 2018 Carlos O'Donell <carlos@redhat.com> - 2.28.9000-27
+- Auto-sync with upstream branch master,
+  commit ade8b817fead73b302d08c88cd44ea2ea56793d4.
+- powerpc: missing CFI register information in __mpn_* functions (swbz#23614)
+- rdlock stalls indefinitely on an unlocked pthread rwlock (swbz#23861)
+
+* Tue Dec 11 2018 Carlos O'Donell <carlos@redhat.com> - 2.28.9000-26
+- Auto-sync with upstream branch master,
+  commit 505b5b292293a5d6bd4046a6bc7f8c2381a33da4.
+- Fix powf overflow handling in non-nearest rounding mode (swbz#23961)
+- test-container: move postclean outside of namespace changes (swbz#23948)
+- Enable VDSO for static linking on mips (swbz#19767)
+
+* Mon Dec 10 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-25
+- Auto-sync with upstream branch master,
+  commit 8d20a2f414fa52aceef8a0e3675415df54a840db:
+- compat getdents64: Use correct offset for retry (swbz#23972)
+- x86: Fix static analysis warning in tst-cet-property-2 (swbz#23490)
+- malloc: Add another test for tcache double free check (swbz#23907)
+- getcpu: New system call wrapper
+- posix_spawn_file_actions_addfchdir_np: New function (swbz#17405)
+- Preparations for the IBM long double transition
+- Preparations for 64-bit time_t on 32-bit architectures
+- Enable VDSO for static linking on arm (swbz#19767)
+
+* Mon Dec 03 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-24
+- Auto-sync with upstream branch master,
+  commit 7b36d26b22d147ffc347f427f9fd584700578a94:
+- CVE-2018-19591: if_nametoindex: Fix descriptor for overlong name (#1654000)
+- Mutex: Add pthread mutex tunables
+- stdlib: assert on NULL function pointer in atexit etc. (swbz#20544)
+- Enable VDSO on i386 statically linked programs
+- posix: Use posix_spawn on system
+- posix: Use posix_spawn on popen (swbz#17490, swbz#22834)
+- Fix _dl_profile_fixup data-dependency issue (swbz#23690)
+- Enable VDSO for static linking on aarch64
+
+* Thu Nov 29 2018 Carlos O'Donell <carlos@redhat.com> - 2.28.9000-23
+- Move requirement on libgcc from glibc-devel to glibc (#1352973)
+
+* Tue Nov 27 2018 Carlos O'Donell <carlos@redhat.com> - 2.28.9000-22
+- Add requires on explicit glibc version for glibc-nss-devel (#1651260)
+
+* Tue Nov 27 2018 Arjun Shankar <arjun@redhat.com> - 2.28.9000-21
+- Drop glibc-rh1652495.patch.  Applied upstream. (#1652495)
+- Auto-sync with upstream branch master,
+  commit ce035c6e909ad20ef2fe13c92eab4e69f6495b61.
+
+* Mon Nov 26 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-20
+- Do not use parallel make for building locales (#1652228)
+
+* Thu Nov 22 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-19
+- malloc: Revert tcache double-free check (#1652495)
+
+* Tue Nov 20 2018 DJ Delorie <dj@redhat.com> - 2.28.9000-18
+- Auto-sync with upstream branch master,
+  commit bcdaad21d4635931d1bd3b54a7894276925d081d.
+- malloc: tcache double free check
+- [AArch64] Adjust writeback in non-zero memset
+- Update config.guess and config.sub to current versions.
+- support: Print timestamps in timeout handler
+- Use STRFMON_LDBL_IS_DBL instead of __ldbl_is_dbl.
+
+* Fri Nov 16 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-17
+- Auto-sync with upstream branch master,
+  commit 346ef23f197a0c8ba807c344bd39101b711050ee.
+
+* Fri Nov 09 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-16
+- Auto-sync with upstream branch master,
+  commit 43257c335ad6b9e05fb882975e1776ff763164ee:
+- Disable CET for binaries created by older link editors (#1648297)
+
+* Wed Nov 07 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-15
+- Auto-sync with upstream branch master,
+  commit 00c86a37d1b63044e3169d1f2ebec23447c73f79.
+
+* Wed Nov 07 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-14
+- Auto-sync with upstream branch master,
+  commit 1df872fd74f730bcae3df201a229195445d2e18a:
+- libanl: Fix crash if first helper thread creation failed (#1646381)
+
+* Thu Nov  1 2018 Mike FABIAN <mfabian@redhat.com> - 2.28.9000-13
+- Include Esperanto (eo) in glibc-all-langpacks (#1643756)
+
+* Mon Oct 29 2018 DJ Delorie <dj@redhat.com> - 2.28.9000-12
+- Auto-sync with upstream branch master,
+  commit c6982f7efc1c70fe2d6160a87ee44d871ac85ab0.
+
+* Fri Oct 26 2018 Arjun Shankar <arjun@redhat.com> - 2.28.9000-11
+- Auto-sync with upstream branch master,
+  commit fe61f17cfc18f17befca3280e828bb40e8c772b0.
+
+* Wed Oct 24 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-10
+- Auto-sync with upstream branch master,
+  commit a27a4f4721837a5fb36ace833764b06a64c5af1c.
+
+* Thu Oct 18 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-9
+- Auto-sync with upstream branch master,
+  commit 72771e53753647111d31c5c4bf43d8901e6baf7e.
+
+* Thu Sep 27 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-8
+- Auto-sync with upstream branch master,
+  commit f841c97e515a1673485a2b12b3c280073d737890:
+- stdlib/tst-setcontext9 test suite failure on ppc64le (#1623519)
+
+* Thu Sep 20 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-7
+- Auto-sync with upstream branch master,
+  commit db9a8ad4ff3fc58e3773a9a4d0cabe3c1bc9c94c:
+- gethostid: Missing NULL check for gethostbyname_r result (#1631338)
+- stdlib/tst-setcontext9 test suite failure (#1623519)
+
+* Wed Sep  5 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-6
+- Add python3-devel build dependency for downstream benefit
+
+* Wed Sep 05 2018 Carlos O'Donell <carlos@redhat.com> - 2.28.9000-5
+- Provide compatibility support for linking against libpthread_nonshared.a
+  (#1625507)
+
+* Wed Aug 29 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-4
+- Remove workaround for valgrind bug (#1600034)
+
+* Wed Aug 29 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-3
+- Auto-sync with upstream branch master,
+  commit ff6b24501f70da7d6375d6f5929262b9509db39e.
+
+* Mon Aug 27 2018 Florian Weimer <fweimer@redhat.com> - 2.28.9000-2
+- Auto-sync with upstream branch master,
+  commit 99ea93ca31795469d2a1f1570f17a5c39c2eb7e2:
+- nptl: Fix waiters-after-spinning case in pthread_cond_broadcast (#1622669)
+- regex: Fix memory corruption when pattern and input contain NUL (#1622674)
+
+* Tue Aug 21 2018 Carlos O'Donell <carlos@systemhalted.org> - 2.28.9000-1
+- Drop glibc-asflags.patch. Applied upstream.
+- Drop glibc-rh1614705.patch. Applied upstream.
+- Drop glibc-with-nonshared-cflags.patch. Applied upstream.
+- Auto-sync with upstream branch master,
+  commit aa42b3dbcb0326badf377fec2c7fb2f34fdabecd.
+
+* Mon Aug 13 2018 Carlos O'Donell <carlos@redhat.com> - 2.28-5
+- Remove abort() warning in manual (#1615608)
+
+* Fri Aug 10 2018 Florian Weimer <fweimer@redhat.com> - 2.28-4
+- Fix regression in readdir64@GLIBC_2.1 compat symbol (#1614705)
+
+* Thu Aug  2 2018 Florian Weimer <fweimer@redhat.com> - 2.28-3
+- Log /proc/sysinfo if available (on s390x)
+
+* Thu Aug  2 2018 Florian Weimer <fweimer@redhat.com> - 2.28-2
+- Honor %%{valgrind_arches}
+
+* Wed Aug 01 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-43
+- Update to glibc 2.28 release tarball:
+- Translation updates
+- x86/CET: Fix property note parser (swbz#23467)
+- x86: Add tst-get-cpu-features-static to $(tests) (swbz#23458)
+
+* Mon Jul 30 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-42
+- Auto-sync with upstream branch master,
+  commit af86087f02a5522d8801a11d8381e04f95e33162:
+- x86/CET: Don't parse beyond the note end
+- Fix Linux fcntl OFD locks tests on unsupported kernels
+- x86: Populate COMMON_CPUID_INDEX_80000001 for Intel CPUs (swbz#23459)
+- x86: Correct index_cpu_LZCNT (swbz#23456)
+- Fix string/tst-xbzero-opt if build with gcc head
+
+* Thu Jul 26 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-41
+- Build with --enable-cet on x86_64, i686
+- Auto-sync with upstream branch master,
+  commit cfba5dbb10cc3abde632b46c60c10b2843917035:
+- Keep expected behaviour for [a-z] and [A-z] (#1607286)
+- Additional ucontext tests
+- Intel CET enhancements
+- ISO C11 threads support
+- Fix out-of-bounds access in IBM-1390 converter (swbz#23448)
+- New locale Yakut (Sakha) for Russia (sah_RU) (swbz#22241)
+- os_RU: Add alternative month names (swbz#23140)
+- powerpc64: Always restore TOC on longjmp (swbz#21895)
+- dsb_DE locale: Fix syntax error and add tests (swbz#23208)
+- Improve performance of the generic strstr implementation
+- regcomp: Fix off-by-one bug in build_equiv_class (swbz#23396)
+- Fix out of bounds access in findidxwc (swbz#23442)
+
+* Fri Jul 13 2018 Carlos O'Donell <carlos@redhat.com> - 2.27.9000-40
+- Fix file list for glibc RPM packaging (#1601011).
+
+* Wed Jul 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-39
+- Add POWER9 multilib (downstream only)
+
+* Wed Jul 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-38
+- Auto-sync with upstream branch master,
+  commit 93304f5f7a32f73b551266c5a181db51d97a71e4:
+- Install <bits/statx.h> header
+- Put the correct Unicode version number 11.0.0 into the generated files
+
+* Wed Jul 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-37
+- Work around valgrind issue on i686 (#1600034)
+
+* Tue Jul 10 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-36
+- Auto-sync with upstream branch master,
+  commit fd70af45528d59a00eb3190ef6706cb299488fcd:
+- Add the statx function
+- regexec: Fix off-by-one bug in weight comparison (#1582229)
+- nss_files: Fix re-reading of long lines (swbz#18991)
+- aarch64: add HWCAP_ATOMICS to HWCAP_IMPORTANT
+- aarch64: Remove HWCAP_CPUID from HWCAP_IMPORTANT
+- conform/conformtest.pl: Escape literal braces in regular expressions
+- x86: Use AVX_Fast_Unaligned_Load from Zen onwards.
+
+* Fri Jul  6 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-35
+- Remove ppc64 multilibs
+
+* Fri Jul 06 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-34
+- Auto-sync with upstream branch master,
+  commit 3a885c1f51b18852869a91cf59a1b39da1595c7a.
+
+* Thu Jul  5 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-33
+- Enable build flags inheritance for nonshared flags
+
+* Wed Jul  4 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-32
+- Add annobin annotations to assembler code (#1548438)
+
+* Wed Jul  4 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-31
+- Enable -D_FORTIFY_SOURCE=2 for nonshared code
+
+* Mon Jul 02 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-30
+- Auto-sync with upstream branch master,
+  commit b7b88cea4151d85eafd7ababc2e4b7ae1daeedf5:
+- New locale: dsb_DE (Lower Sorbian)
+
+* Fri Jun 29 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-29
+- Drop glibc-deprecate_libcrypt.patch.  Variant applied upstream. (#1566464)
+- Drop glibc-linux-timespec-header-compat.patch.  Upstreamed.
+- Auto-sync with upstream branch master,
+  commit e69d994a63afc2d367f286a2a7df28cbf710f0fe.
+
+* Thu Jun 28 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-28
+- Drop glibc-rh1315108.patch.  extend_alloca was removed upstream. (#1315108)
+- Auto-sync with upstream branch master,
+  commit c49e18222e4c40f21586dabced8a49732d946917.
+
+* Thu Jun 21 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-27
+- Compatibility fix for <sys/stat.h> and <linux/time.h>
+
+* Thu Jun 21 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-26
+- Auto-sync with upstream branch master,
+  commit f496b28e61d0342f579bf794c71b80e9c7d0b1b5.
+
+* Mon Jun 18 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-25
+- Auto-sync with upstream branch master,
+  commit f2857da7cdb65bfad75ee30981f5b2fde5bbb1dc.
+
+* Mon Jun 18 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-24
+- Auto-sync with upstream branch master,
+  commit 14beef7575099f6373f9a45b4656f1e3675f7372:
+- iconv: Make IBM273 equivalent to ISO-8859-1 (#1592270)
+
+* Mon Jun 18 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-23
+- Inherit the -msse2 build flag as well (#1592212)
+
+* Fri Jun 01 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-22
+- Modernise nsswitch.conf defaults (#1581809)
+- Adjust build flags inheritence from redhat-rpm-config
+- Auto-sync with upstream branch master,
+  commit 104502102c6fa322515ba0bb3c95c05c3185da7a.
+
+* Fri May 25 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-21
+- Auto-sync with upstream branch master,
+  commit c1dc1e1b34873db79dfbfa8f2f0a2abbe28c0514.
+
+* Wed May 23 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-20
+- Auto-sync with upstream branch master,
+  commit 7f9f1ecb710eac4d65bb02785ddf288cac098323:
+- CVE-2018-11237: Buffer overflow in __mempcpy_avx512_no_vzeroupper (#1581275)
+- Drop glibc-rh1452750-allocate_once.patch,
+  glibc-rh1452750-libidn2.patch.  Applied upstream.
+
+* Wed May 23 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-19
+- Auto-sync with upstream branch master,
+  commit 8f145c77123a565b816f918969e0e35ee5b89153.
+
+* Thu May 17 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-18
+- Do not run telinit u on upgrades (#1579225)
+- Auto-sync with upstream branch master,
+  commit 632a6cbe44cdd41dba7242887992cdca7b42922a.
+
+* Fri May 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-17
+- Avoid exporting some Sun RPC symbols with default versions (#1577210)
+- Inherit the -mstackrealign flag if it is set
+- Inherit compiler flags in the original order
+- Auto-sync with upstream branch master,
+  commit 89aacb513eb77549a29df2638913a0f8178cf3f5:
+- CVE-2018-11236: realpath: Fix path length overflow (#1581270, swbz#22786)
+
+* Fri May 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-16
+- Use /usr/bin/python3 for benchmarks scripts (#1577223)
+
+* Thu Apr 19 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-15
+- Auto-sync with upstream branch master,
+  commit 0085be1415a38b40a5a1a12e49368498f1687380.
+
+* Mon Apr 09 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-14
+- Auto-sync with upstream branch master,
+  commit 583a27d525ae189bdfaa6784021b92a9a1dae12e.
+
+* Thu Mar 29 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-13
+- Auto-sync with upstream branch master,
+  commit d39c0a459ef32a41daac4840859bf304d931adab:
+- CVE-2017-18269: memory corruption in i386 memmove (#1580934)
+
+* Mon Mar 19 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-12
+- Auto-sync with upstream branch master,
+  commit fbce6f7260c3847f14dfa38f60c9111978fb33a5.
+
+* Fri Mar 16 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-11
+- Auto-sync with upstream branch master,
+  commit 700593fdd7aef1e36cfa8bad969faab76a6facda.
+
+* Wed Mar 14 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-10
+- Auto-sync with upstream branch master,
+  commit 7108f1f944792ac68332967015d5e6418c5ccc88.
+
+* Mon Mar 12 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-9
+- Auto-sync with upstream branch master,
+  commit da6d4404ecfd7eacba8c096b0761a5758a59da4b.
+
+* Tue Mar  6 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-8
+- Enable annobin annotations (#1548438)
+
+* Thu Mar 01 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-7
+- Auto-sync with upstream branch master,
+  commit 1a2f44a848663036c8a14671fe0faa3fed0b2a25:
+- Remove spurios reference to libpthread_nonshared.a
+
+* Thu Mar 01 2018 Florian Weimer <fweimer@redhat.com> - 2.27.9000-6
+- Switch back to upstream master branch
+- Drop glibc-rh1013801.patch, applied upstream.
+- Drop glibc-fedora-nptl-linklibc.patch, no longer needed.
+- Auto-sync with upstream branch master,
+  commit bd60ce86520b781ca24b99b2555e2ad389bbfeaa.
+
+* Wed Feb 28 2018 Florian Weimer <fweimer@redhat.com> - 2.27-5
+- Inherit as many flags as possible from redhat-rpm-config (#1550914)
+
+* Mon Feb 19 2018 Richard W.M. Jones <rjones@redhat.com> - 2.27-4
+- riscv64: Add symlink from /usr/lib64/lp64d -> /usr/lib64 for ABI compat.
+- riscv64: Disable valgrind smoke test on this architecture.
+
+* Wed Feb 14 2018 Florian Weimer <fweimer@redhat.com> - 2.27-3
+- Spec file cleanups:
+  - Remove %%defattr(-,root,root)
+  - Use shell to run ldconfig %%transfiletrigger
+  - Move %%transfiletrigger* to the glibc-common subpackage
+  - Trim changelog
+  - Include ChangeLog.old in the source RPM
+
+* Wed Feb  7 2018 Florian Weimer <fweimer@redhat.com> - 2.27-2.1
+- Linux: use reserved name __key in pkey_get (#1542643)
+- Auto-sync with upstream branch release/2.27/master,
+  commit 56170e064e2b21ce204f0817733e92f1730541ea.
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org>
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Mon Feb 05 2018 Carlos O'Donell <carlos@redhat.com> - 2.27-1
+- Update to released glibc 2.27.
+- Auto-sync with upstream branch master,
+  commit 23158b08a0908f381459f273a984c6fd328363cb.
+
+* Tue Jan 30 2018 Richard W.M. Jones <rjones@redhat.com> - 2.26.9000-52
+- Disable -fstack-clash-protection on riscv64:
+  not supported even by GCC 7.3.1 on this architecture.
+
+* Mon Jan 29 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-51
+- Explicitly run ldconfig in the buildroot
+- Do not run ldconfig from scriptlets
+- Put triggers into the glibc-common package, do not pass arguments to ldconfig
+
+* Mon Jan 29 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-50
+- Auto-sync with upstream branch master,
+  commit cdd14619a713ab41e26ba700add4880604324dbb:
+- libnsl: Turn remaining symbols into compat symbols (swbz#22701)
+- be_BY, be_BY@latin, lt_LT, el_CY, el_GR, ru_RU, ru_UA, uk_UA:
+  Add alternative month names (swbz#10871)
+- x86: Revert Intel CET changes to __jmp_buf_tag (swbz#22743)
+- aarch64: Revert the change of the __reserved member of mcontext_t
+
+* Mon Jan 29 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.26.9000-49
+- Add file triggers to do ldconfig calls automatically
+
+* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-48
+- Auto-sync with upstream branch master,
+  commit 21c0696cdef617517de6e25711958c40455c554f:
+- locale: Implement alternative month names (swbz#10871)
+- locale: Change month names for pl_PL (swbz#10871)
+
+* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-47
+- Unconditionally build without libcrypt
+
+* Fri Jan 19 2018 Björn Esser <besser82@fedoraproject.org> - 2.26.9000-46
+- Remove deprecated libcrypt, gets replaced by libxcrypt
+- Add applicable Requires on libxcrypt
+
+* Fri Jan 19 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-45
+- Drop static PIE support on aarch64.  It leads to crashes at run time.
+- Remove glibc-rpcgen subpackage.  See rpcsvc-proto.  (#1531540)
+
+* Fri Jan 19 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-44
+- Correct the list of static PIE architectures (#1247050)
+- glibc_post_upgrade: Remove process restart logic
+- glibc_post_upgrade: Integrate into the build process
+- glibc_post_upgrade: Do not clean up tls subdirectories
+- glibc_post_upgrade: Drop ia64 support
+- Remove architecture-specific symbolic link for iconvconfig
+- Auto-sync with upstream branch master,
+  commit 4612268a0ad8e3409d8ce2314dd2dd8ee0af5269:
+- powerpc: Fix syscalls during early process initialization (swbz#22685)
+
+* Fri Jan 19 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-43
+- Enable static PIE support on i386, x86_64 (#1247050)
+- Remove add-on support (already gone upstream)
+- Rework test suite status reporting
+- Auto-sync with upstream branch master,
+  commit 64f63cb4583ecc1ba16c7253aacc192b6d088511:
+- malloc: Fix integer overflows in memalign and malloc functions (swbz#22343)
+- x86-64: Properly align La_x86_64_retval to VEC_SIZE (swbz#22715)
+- aarch64: Update bits/hwcap.h for Linux 4.15
+- Add NT_ARM_SVE to elf.h
+
+* Wed Jan 17 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-42
+- CVE-2017-14062, CVE-2016-6261, CVE-2016-6263:
+  Use libidn2 for IDNA support (#1452750)
+
+* Mon Jan 15 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-41
+- CVE-2018-1000001: Make getcwd fail if it cannot obtain an absolute path
+  (#1533837)
+- elf: Synchronize DF_1_* flags with binutils (#1439328)
+- Auto-sync with upstream branch master,
+  commit 860b0240a5645edd6490161de3f8d1d1f2786025:
+- aarch64: fix static pie enabled libc when main is in a shared library
+- malloc: Ensure that the consolidated fast chunk has a sane size
+
+* Fri Jan 12 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-40
+- libnsl: Do not install libnsl.so, libnsl.a (#1531540)
+- Use unversioned Supplements: for langpacks (#1490725)
+- Auto-sync with upstream branch master,
+  commit 9a08a366a7e7ddffe62113a9ffe5e50605ea0924:
+- hu_HU locale: Avoid double space (swbz#22657)
+- math: Make default libc_feholdsetround_noex_ctx use __feholdexcept
+  (swbz#22702)
+
+* Thu Jan 11 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-39
+- nptl: Open libgcc.so with RTLD_NOW during pthread_cancel (#1527887)
+- Introduce libnsl subpackage and remove NIS headers (#1531540)
+- Use versioned Obsoletes: for libcrypt-nss.
+- Auto-sync with upstream branch master,
+  commit 08c6e95234c60a5c2f37532d1111acf084f39345:
+- nptl: Add tst-minstack-cancel, tst-minstack-exit (swbz#22636)
+- math: ldbl-128ibm log1pl (-qNaN) spurious "invalid" exception (swbz#22693)
+
+* Wed Jan 10 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-38
+- nptl: Fix stack guard size accounting (#1527887)
+- Remove invalid Obsoletes: on glibc-header provides
+- Require python3 instead of python during builds
+- Auto-sync with upstream branch master,
+  commit 09085ede12fb9650f286bdcd805609ae69f80618:
+- math: ldbl-128ibm lrintl/lroundl missing "invalid" exceptions (swbz#22690)
+- x86-64: Add sincosf with vector FMA
+
+* Mon Jan  8 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-37
+- Add glibc-rpcgen subpackage, until the replacement is packaged (#1531540)
+
+* Mon Jan 08 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-36
+- Auto-sync with upstream branch master,
+  commit 579396ee082565ab5f42ff166a264891223b7b82:
+- nptl: Add test for callee-saved register restore in pthread_exit
+- getrlimit64: fix for 32-bit configurations with default version >= 2.2
+- elf: Add linux-4.15 VDSO hash for RISC-V
+- elf: Add RISC-V dynamic relocations to elf.h
+- powerpc: Fix error message during relocation overflow
+- prlimit: Replace old_rlimit RLIM64_INFINITY with RLIM_INFINITY (swbz#22678)
+
+* Fri Jan 05 2018 Florian Weimer <fweimer@redhat.com> - 2.26.9000-35
+- Remove sln (#1531546)
+- Remove Sun RPC interfaces (#1531540)
+- Rebuild with newer GCC to fix pthread_exit stack unwinding issue (#1529549)
+- Auto-sync with upstream branch master,
+  commit f1a844ac6389ea4e111afc019323ca982b5b027d:
+- CVE-2017-16997: elf: Check for empty tokens before DST expansion (#1526866)
+- i386: In makecontext, align the stack before calling exit (swbz#22667)
+- x86, armhfp: sync sys/ptrace.h with Linux 4.15 (swbz#22433)
+- elf: check for rpath emptiness before making a copy of it
+- elf: remove redundant is_path argument
+- elf: remove redundant code from is_dst
+- elf: remove redundant code from _dl_dst_substitute
+- scandir: fix wrong assumption about errno (swbz#17804)
+- Deprecate external use of libio.h and _G_config.h
+
+* Fri Dec 22 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-34
+- Auto-sync with upstream branch master,
+  commit bad7a0c81f501fbbcc79af9eaa4b8254441c4a1f:
+- copy_file_range: New function to copy file data
+- nptl: Consolidate pthread_{timed,try}join{_np}
+- nptl: Implement pthread_self in libc.so (swbz#22635)
+- math: Provide a C++ version of iseqsig (swbz#22377)
+- elf: remove redundant __libc_enable_secure check from fillin_rpath
+- math: Avoid signed shift overflow in pow (swbz#21309)
+- x86: Add feature_1 to tcbhead_t (swbz#22563)
+- x86: Update cancel_jmp_buf to match __jmp_buf_tag (swbz#22563)
+- ld.so: Examine GLRO to detect inactive loader (swbz#20204)
+- nscd: Fix nscd readlink argument aliasing (swbz#22446)
+- elf: do not substitute dst in $LD_LIBRARY_PATH twice (swbz#22627)
+- ldconfig: set LC_COLLATE to C (swbz#22505)
+- math: New generic sincosf
+- powerpc: st{r,p}cpy optimization for aligned strings
+- CVE-2017-1000409: Count in expanded path in _dl_init_path (#1524867)
+- CVE-2017-1000408: Compute correct array size in _dl_init_paths (#1524867)
+- x86-64: Remove sysdeps/x86_64/fpu/s_cosf.S
+- aarch64: Improve strcmp unaligned performance
+
+* Wed Dec 13 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-33
+- Remove power6 platform directory (#1522675)
+
+* Wed Dec 13 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-32
+- Obsolete the libcrypt-nss subpackage (#1525396)
+- armhfp: Disable -fstack-clash-protection due to GCC bug (#1522678)
+- ppc64: Disable power6 multilib due to GCC bug (#1522675)
+- Auto-sync with upstream branch master,
+  commit 243b63337c2c02f30ec3a988ecc44bc0f6ffa0ad:
+- libio: Free backup area when it not required (swbz#22415)
+- math: Fix nextafter and nexttoward declaration (swbz#22593)
+- math: New generic cosf
+- powerpc: POWER8 memcpy optimization for cached memory
+- x86-64: Add sinf with FMA
+- x86-64: Remove sysdeps/x86_64/fpu/s_sinf.S
+- math: Fix ctanh (0 + i NaN), ctanh (0 + i Inf) (swbz#22568)
+- lt_LT locale: Base collation on copy "iso14651_t1" (swbz#22524)
+- math: Add _Float32 function aliases
+- math: Make cacosh (0 + iNaN) return NaN + i pi/2 (swbz#22561)
+- hsb_DE locale: Base collation on copy "iso14651_t1" (swbz#22515)
+
+* Wed Dec 06 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-31
+- Add elision tunables.  Drop related configure flag.  (#1383986)
+- Auto-sync with upstream branch master,
+  commit 37ac8e635a29810318f6d79902102e2e96b2b5bf:
+- Linux: Implement interfaces for memory protection keys
+- math: Add _Float64, _Float32x function aliases
+- math: Use sign as double for reduced case in sinf
+- math: fix sinf(NAN)
+- math: s_sinf.c: Replace floor with simple casts
+- et_EE locale: Base collation on iso14651_t1 (swbz#22517)
+- tr_TR locale: Base collation on iso14651_t1 (swbz#22527)
+- hr_HR locale: Avoid single code points for digraphs in LC_TIME (swbz#10580)
+- S390: Fix backtrace in vdso functions
+
+* Mon Dec 04 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-30
+- Add build dependency on bison
+- Auto-sync with upstream branch master,
+  commit 7863a7118112fe502e8020a0db0fa74fef281f29:
+- math: New generic sinf (swbz#5997)
+- is_IS locale: Base collation on iso14651_t1 (swbz#22519)
+- intl: Improve reproducibility by using bison (swbz#22432)
+- sr_RS, bs_BA locales: make collation rules the same as for hr_HR (wbz#22534)
+- hr_HR locale: various updates (swbz#10580)
+- x86: Make a space in jmpbuf for shadow stack pointer
+- CVE-2017-17426: malloc: Fix integer overflow in tcache (swbz#22375)
+- locale: make forward accent sorting the default in collating (swbz#17750)
+
+* Wed Nov 29 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-29
+- Enable -fstack-clash-protection (#1512531)
+- Auto-sync with upstream branch master,
+  commit a55430cb0e261834ce7a4e118dd9e0f2b7fb14bc:
+- elf: Properly compute offsets of note descriptor and next note (swbz#22370)
+- cs_CZ locale: Base collation on iso14651_t1 (swbz#22336)
+- Implement the mlock2 function
+- Add _Float64x function aliases
+- elf: Consolidate link map sorting
+- pl_PL locale: Base collation on iso14651_t1 (swbz#22469)
+- nss: Export nscd hash function as __nss_hash (swbz#22459)
+
+* Thu Nov 23 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-28
+- Auto-sync with upstream branch master,
+  commit cccb6d4e87053ed63c74aee063fa84eb63ebf7b8:
+- sigwait can fail with EINTR (#1516394)
+- Add memfd_create function
+- resolv: Fix p_secstodate overflow handling (swbz#22463)
+- resolv: Obsolete p_secstodate
+- Avoid use of strlen in getlogin_r (swbz#22447)
+- lv_LV locale: fix collation (swbz#15537)
+- S390: Add cfi information for start routines in order to stop unwinding
+- aarch64: Optimized memset for falkor
+
+* Sun Nov 19 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-27
+- Auto-sync with upstream branch master,
+  commit f6e965ee94b37289f64ecd3253021541f7c214c3:
+- powerpc: AT_HWCAP2 bit PPC_FEATURE2_HTM_NO_SUSPEND
+- aarch64: Add HWCAP_DCPOP bit
+- ttyname, ttyname_r: Don't bail prematurely (swbz#22145)
+- signal: Optimize sigrelse implementation
+- inet: Check length of ifname in if_nametoindex (swbz#22442)
+- malloc: Account for all heaps in an arena in malloc_info (swbz#22439)
+- malloc: Add missing arena lock in malloc_info (swbz#22408)
+- malloc: Use __builtin_tgmath in tgmath.h with GCC 8 (swbz#21660)
+- locale: Replaced unicode sequences in the ASCII printable range
+- resolv: More precise checks in res_hnok, res_dnok (swbz#22409, swbz#22412)
+- resolv: ns_name_pton should report trailing \ as error (swbz#22413)
+- locale: mfe_MU, miq_NI, an_ES, kab_DZ, om_ET: Escape / in d_fmt (swbz#22403)
+
+* Tue Nov 07 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-26
+- Auto-sync with upstream branch master,
+  commit 6b86036452b9ac47b4ee7789a50f2f37df7ecc4f:
+- CVE-2017-15804: glob: Fix buffer overflow during GLOB_TILDE unescaping
+- powerpc: Use latest string function optimization for internal function calls
+- math: No _Float128 support for ppc64le -mlong-double-64 (swbz#22402)
+- tpi_PG locale: Fix wrong d_fmt
+- aarch64: Disable lazy symbol binding of TLSDESC
+- tpi_PG locale: fix syntax error (swbz#22382)
+- i586: Use conditional branches in strcpy.S (swbz#22353)
+- ffsl, ffsll: Declare under __USE_MISC, not just __USE_GNU
+- csb_PL locale: Fix abmon/mon for March (swbz#19485)
+- locale: Various yesstr/nostr/yesexpr/noexpr fixes (swbz#15260, swbz#15261)
+- localedef: Add --no-warnings/--warnings option
+- powerpc: Replace lxvd2x/stxvd2x with lvx/stvx in P7's memcpy/memmove
+- locale: Use ASCII as much as possible in LC_MESSAGES
+- Add new locale yuw_PG (swbz#20952)
+- malloc: Add single-threaded path to malloc/realloc/calloc/memalloc
+- i386: Replace assembly versions of e_powf with generic e_powf.c
+- i386: Replace assembly versions of e_log2f with generic e_log2f.c
+- x86-64: Add powf with FMA
+- x86-64: Add logf with FMA
+- i386: Replace assembly versions of e_logf with generic e_logf.c
+- i386: Replace assembly versions of e_exp2f with generic e_exp2f.c
+- x86-64: Add exp2f with FMA
+- i386: Replace assembly versions of e_expf with generic e_expf.c
+
+* Sat Oct 21 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-25
+- Auto-sync with upstream branch master,
+  commit 797ba44ba27521261f94cc521f1c2ca74f650147:
+- math: Add bits/floatn.h defines for more _FloatN / _FloatNx types
+- posix: Fix improper assert in Linux posix_spawn (swbz#22273)
+- x86-64: Use fxsave/xsave/xsavec in _dl_runtime_resolve (swbz#21265)
+- CVE-2017-15670: glob: Fix one-byte overflow (#1504807)
+- malloc: Add single-threaded path to _int_free
+- locale: Add new locale kab_DZ (swbz#18812)
+- locale: Add new locale shn_MM (swbz#13605)
+
+* Fri Oct 20 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-24
+- Use make -O to serialize make output
+- Auto-sync with upstream branch master,
+  commit 63b4baa44e8d22501c433c4093aa3310f91b6aa2:
+- sysconf: Fix missing definition of UIO_MAXIOV on Linux (#1504165)
+- Install correct bits/long-double.h for MIPS64 (swbz#22322)
+- malloc: Fix deadlock in _int_free consistency check
+- x86-64: Don't set GLRO(dl_platform) to NULL (swbz#22299)
+- math: Add _Float128 function aliases
+- locale: Add new locale mjw_IN (swbz#13994)
+- aarch64: Rewrite elf_machine_load_address using _DYNAMIC symbol
+- powerpc: fix check-before-set in SET_RESTORE_ROUND
+- locale: Use U+202F as thousands separators in pl_PL locale (swbz#16777)
+- math: Use __f128 to define FLT128_* constants in include/float.h for old GCC
+- malloc: Improve malloc initialization sequence (swbz#22159)
+- malloc: Use relaxed atomics for malloc have_fastchunks
+- locale: New locale ca_ES@valencia (swbz#2522)
+- math: Let signbit use the builtin in C++ mode with gcc < 6.x (swbz#22296)
+- locale: Place monetary symbol in el_GR, el_CY after the amount (swbz#22019)
+
+* Tue Oct 17 2017 Florian Weimer <fweimer@redhat.com> - 2.26.9000-23
+- Switch to .9000 version numbers during development
+
+* Tue Oct 17 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-22
+- Auto-sync with upstream branch master,
+  commit c38a4bfd596db2be2b9c1f96715bdc833eab760a:
+- malloc: Use compat_symbol_reference in libmcheck (swbz#22050)
+
+* Mon Oct 16 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-21
+- Auto-sync with upstream branch master,
+  commit 596f70134a8f11967c65c1d55a94a3a2718c731d:
+- Silence -O3 -Wall warning in malloc/hooks.c with GCC 7 (swbz#22052)
+- locale: No warning for non-symbolic character (swbz#22295)
+- locale: Allow "" int_curr_Symbol (swbz#22294)
+- locale: Fix localedef exit code (swbz#22292)
+- nptl: Preserve error in setxid thread broadcast in coredumps (swbz#22153)
+- powerpc: Avoid putting floating point values in memory (swbz#22189)
+- powerpc: Fix the carry bit on mpn_[add|sub]_n on POWER7 (swbz#22142)
+- Support profiling PIE (swbz#22284)
+
+* Wed Oct 11 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-20
+- Auto-sync with upstream branch master,
+  commit d8425e116cdd954fea0c04c0f406179b5daebbb3:
+- nss_files performance issue in multi mode (swbz#22078)
+- Ensure C99 and C11 interfaces are available for C++ (swbz#21326)
+
+* Mon Oct 09 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-19
+- Move /var/db/Makefile to nss_db (#1498900)
+- Auto-sync with upstream branch master,
+  commit 645ac9aaf89e3311949828546df6334322f48933:
+- openpty: use TIOCGPTPEER to open slave side fd
+
+* Fri Oct 06 2017 Carlos O'Donell <carlos@systemhalted.org> - 2.26.90-18
+- Auto-sync with upstream master,
+  commit 1e26d35193efbb29239c710a4c46a64708643320.
+- malloc: Fix tcache leak after thread destruction (swbz#22111)
+- powerpc:  Fix IFUNC for memrchr.
+- aarch64: Optimized implementation of memmove for Qualcomm Falkor
+- Always do locking when iterating over list of streams (swbz#15142)
+- abort: Do not flush stdio streams (swbz#15436)
+
+* Wed Oct 04 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-17
+- Move nss_compat to the main glibc package (#1400538)
+- Auto-sync with upstream master,
+  commit 11c4f5010c58029e73e656d5df4f8f42c9b8e877:
+- crypt: Use NSPR header files in addition to NSS header files (#1489339)
+- math: Fix yn(n,0) without SVID wrapper (swbz#22244)
+- math: Fix log2(0) and log(10) in downward rounding (swbz#22243)
+- math: Add C++ versions of iscanonical for ldbl-96, ldbl-128ibm (swbz#22235)
+- powerpc: Optimize memrchr for power8
+- Hide various internal functions (swbz#18822)
+
+* Sat Sep 30 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-16
+- Auto-sync with upstream master,
+  commit 1e2bffd05c36a9be30d7092d6593a9e9aa009ada:
+- Add IBM858 charset (#1416405)
+- Update kernel version in syscall-names.list to 4.13
+- Add Linux 4.13 constants to bits/fcntl-linux.h
+- Add fcntl sealing interfaces from Linux 3.17 to bits/fcntl-linux.h
+- math: New generic powf, log2f, logf
+- Fix nearbyint arithmetic moved before feholdexcept (swbz#22225)
+- Mark __dso_handle as hidden (swbz#18822)
+- Skip PT_DYNAMIC segment with p_filesz == 0 (swbz#22101)
+- glob now matches dangling symbolic links (swbz#866, swbz#22183)
+- nscd: Release read lock after resetting timeout (swbz#22161)
+- Avoid __MATH_TG in C++ mode with -Os for fpclassify (swbz#22146)
+- Fix dlclose/exit race (swbz#22180)
+- x86: Add SSE4.1 trunc, truncf (swbz#20142)
+- Fix atexit/exit race (swbz#14333)
+- Use execveat syscall in fexecve (swbz#22134)
+- Enable unwind info in libc-start.c and backtrace.c
+- powerpc: Avoid misaligned stores in memset
+- powerpc: build some IFUNC math functions for libc and libm (swbz#21745)
+- Removed redundant data (LC_TIME and LC_MESSAGES) for niu_NZ (swbz#22023)
+- Fix LC_TELEPHONE for az_AZ (swbz#22112)
+- x86: Add MathVec_Prefer_No_AVX512 to cpu-features (swbz#21967)
+- x86: Add x86_64 to x86-64 HWCAP (swbz#22093)
+- Finish change from “Bengali” to “Bangla” (swbz#14925)
+- posix: fix glob bugs with long login names (swbz#1062)
+- posix: Fix getpwnam_r usage (swbz#1062)
+- posix: accept inode 0 is a valid inode number (swbz#19971)
+- Remove redundant LC_TIME data in om_KE (swbz#22100)
+- Remove remaining _HAVE_STRING_ARCH_* definitions (swbz#18858)
+- resolv: Fix memory leak with OOM during resolv.conf parsing (swbz#22095)
+- Add miq_NI locale for Miskito (swbz#20498)
+- Fix bits/math-finite.h exp10 condition (swbz#22082)
+
+* Mon Sep 04 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-15
+- Auto-sync with upstream master,
+  commit b38042f51430974642616a60afbbf96fd0b98659:
+- Implement tmpfile with O_TMPFILE (swbz#21530)
+- Obsolete pow10 functions
+- math.h: Warn about an already-defined log macro
+
+* Fri Sep 01 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-14
+- Build glibc with -O2 (following the upstream default).
+- Auto-sync with upstream master,
+  commit f4a6be2582b8dfe8adfa68da3dd8decf566b3983:
+- malloc: Abort on heap corruption, without a backtrace (swbz#21754)
+- getaddrinfo: Return EAI_NODATA for gethostbyname2_r with NO_DATA (swbz#21922)
+- getaddrinfo: Fix error handling in gethosts (swbz#21915) (swbz#21922)
+- Place $(elf-objpfx)sofini.os last (swbz#22051)
+- Various locale fixes (swbz#15332, swbz#22044)
+
+* Wed Aug 30 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-13
+- Drop glibc-rh952799.patch, applied upstream (#952799, swbz#22025)
+- Auto-sync with upstream master,
+  commit 5f9409b787c5758fc277f8d1baf7478b752b775d:
+- Various locale fixes (swbz#22022, swbz#22038, swbz#21951, swbz#13805,
+  swbz#21971, swbz#21959)
+- MIPS/o32: Fix internal_syscall5/6/7 (swbz#21956)
+- AArch64: Fix procfs.h not to expose stdint.h types
+- iconv_open: Fix heap corruption on gconv_init failure (swbz#22026)
+- iconv: Mangle __btowc_fct even without __init_fct (swbz#22025)
+- Fix bits/math-finite.h _MSUF_ expansion namespace (swbz#22028)
+- Provide a C++ version of iszero that does not use __MATH_TG (swbz#21930)
+
+* Mon Aug 28 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-12
+- Auto-sync with upstream master,
+  commit 2dba5ce7b8115d6a2789bf279892263621088e74.
+
+* Fri Aug 25 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-11
+- Auto-sync with upstream master,
+  commit 3d7b66f66cb223e899a7ebc0f4c20f13e711c9e0:
+- string/stratcliff.c: Replace int with size_t (swbz#21982)
+- Fix tgmath.h handling of complex integers (swbz#21684)
+
+* Thu Aug 24 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-10
+- Use an architecture-independent system call list (#1484729)
+- Drop glibc-fedora-include-bits-ldbl.patch (#1482105)
+
+* Tue Aug 22 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-9
+- Auto-sync with upstream master,
+  commit 80f91666fed71fa3dd5eb5618739147cc731bc89.
+
+* Mon Aug 21 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-8
+- Auto-sync with upstream master,
+  commit a8410a5fc9305c316633a5a3033f3927b759be35:
+- Obsolete matherr, _LIB_VERSION, libieee.a.
+
+* Mon Aug 21 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-7
+- Auto-sync with upstream master,
+  commit 4504783c0f65b7074204c6126c6255ed89d6594e.
+
+* Mon Aug 21 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-6
+- Auto-sync with upstream master,
+  commit b5889d25e9bf944a89fdd7bcabf3b6c6f6bb6f7c:
+- assert: Support types without operator== (int) (#1483005)
+
+* Mon Aug 21 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-5
+- Auto-sync with upstream master,
+  commit 2585d7b839559e665d5723734862fbe62264b25d:
+- Do not use generic selection in C++ mode
+- Do not use __builtin_types_compatible_p in C++ mode (#1481205)
+- x86-64: Check FMA_Usable in ifunc-mathvec-avx2.h (swbz#21966)
+- Various locale fixes (swbz#21750, swbz#21960, swbz#21959, swbz#19852)
+- Fix sigval namespace (swbz#21944)
+- x86-64: Optimize e_expf with FMA (swbz#21912)
+- Adjust glibc-rh827510.patch.
+
+* Wed Aug 16 2017 Tomasz Kłoczko <kloczek@fedoraproject.org> - 2.26-4
+- Remove 'Buildroot' tag, 'Group' tag, and '%%clean' section, and don't
+  remove the buildroot in '%%install', all per Fedora Packaging Guidelines
+  (#1476839)
+
+* Wed Aug 16 2017 Florian Weimer <fweimer@redhat.com> - 2.26.90-3
+- Auto-sync with upstream master,
+  commit 403143e1df85dadd374f304bd891be0cd7573e3b:
+- x86-64: Align L(SP_RANGE)/L(SP_INF_0) to 8 bytes (swbz#21955)
+- powerpc: Add values from Linux 4.8 to <elf.h>
+- S390: Add new s390 platform z14.
+- Various locale fixes (swbz#14925, swbz#20008, swbz#20482, swbz#12349
+  swbz#19982, swbz#20756, swbz#20756, swbz#21836, swbz#17563, swbz#16905,
+  swbz#21920, swbz#21854)
+- NSS: Replace exported NSS lookup functions with stubs (swbz#21962)
+- i386: Do not set internal_function
+- assert: Suppress pedantic warning caused by statement expression (swbz#21242)
+- powerpc: Restrict xssqrtqp operands to Vector Registers (swbz#21941)
+- sys/ptrace.h: remove obsolete PTRACE_SEIZE_DEVEL constant (swbz#21928)
+- Remove __qaddr_t, __long_double_t
+- Fix uc_* namespace (swbz#21457)
+- nss: Call __resolv_context_put before early return in get*_r (swbz#21932)
+- aarch64: Optimized memcpy for Qualcomm Falkor processor
+- manual: Document getcontext uc_stack value on Linux (swbz#759)
+- i386: Add <startup.h> (swbz#21913)
+- Don't use IFUNC resolver for longjmp or system in libpthread (swbz#21041)
+- Fix XPG4.2 bits/sigaction.h namespace (swbz#21899)
+- x86-64: Add FMA multiarch functions to libm
+- i386: Support static PIE in start.S
+- Compile tst-prelink.c without PIE (swbz#21815)
+- x86-64: Use _dl_runtime_resolve_opt only with AVX512F (swbz#21871)
+- x86: Remove __memset_zero_constant_len_parameter (swbz#21790)
+
+* Wed Aug 16 2017 Florian Weimer <fweimer@redhat.com> - 2.26-2
+- Disable multi-arch (IFUNC string functions) on i686 (#1471427)
+- Remove nosegneg 32-bit Xen PV support libraries (#1482027)
+- Adjust spec file to RPM changes
+
+* Thu Aug 03 2017 Carlos O'Donell <carlos@systemhalted.org> - 2.26-1
+- Update to released glibc 2.26.
+- Auto-sync with upstream master,
+  commit 2aad4b04ad7b17a2e6b0e66d2cb4bc559376617b.
+- getaddrinfo: Release resolver context on error in gethosts (swbz#21885)
+
+* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.25.90-30.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Sat Jul 29 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-30
+- Auto-sync with upstream master,
+  commit 5920a4a624b1f4db310d1c44997b640e2a4653e5:
+- mutex: Fix robust mutex lock acquire (swbz#21778)
+
+* Fri Jul 28 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-29
+- Auto-sync with upstream master,
+  commit d95fcb2df478efbf4f8537ba898374043ac4561f:
+- rwlock: Fix explicit hand-over (swbz#21298)
+- tunables: Use direct syscall for access (swbz#21744)
+- Avoid accessing corrupted stack from __stack_chk_fail (swbz#21752)
+- Remove extra semicolons in struct pthread_mutex (swbz#21804)
+- grp: Fix cast-after-dereference (another big-endian group merge issue)
+- S390: fix sys/ptrace.h to make it includible again after asm/ptrace.h
+- Don't add stack_chk_fail_local.o to libc.a (swbz#21740)
+- i386: Test memmove_chk and memset_chk only in libc.so (swbz#21741)
+- Add new locales az_IR, mai_NP (swbz#14172)
+- Various locale improvements
+
+* Thu Jul 27 2017 Carlos O'Donell <codonell@redhat.com> - 2.25.90-28
+- Adjust to new rpm debuginfo generation (#1475009).
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.25.90-27.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Wed Jul 19 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-27
+- Auto-sync with upstream master,
+  commit 00d7a3777369bac3d8d44152dde2bb7381984ef6:
+- aarch64: Fix out of bound array access in _dl_hwcap_string
+
+* Mon Jul 17 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-26
+- Drop glibc-rh1467518.patch in favor of upstream patch (#1467518)
+- Auto-sync with upstream master,
+  commit 91ac3a7d8474480685632cd25f844d3154c69fdf:
+- Fix pointer alignment in NSS group merge result construction (#1471985)
+- Various locale fixes
+
+* Fri Jul 14 2017 Carlos O'Donell <carlos@systemhalted.org> - 2.25.90-25
+- armv7hl: Drop 32-bit ARM build fix, already in upstream master.
+- s390x: Apply glibc fix again, removing PTRACE_GETREGS etc. (#1469536).
+- Auto-sync with upstream master,
+  commit de895ddcd7fc45caeeeb0ae312311b8bd31d82c5:
+- Added Fiji Hindi language locale for Fiji (swbz#21694).
+- Added yesstr/nostr for nds_DE and nds_NL (swbz#21756).
+- Added yesstr and nostr for Tigrinya (swbz#21759).
+- Fix LC_MESSAGES and LC_ADDRESS for anp_IN (swbz#21760).
+- Added yesstr/nostr and fix yesexpr for pap_AW and pap_CW (swbz#21757).
+- Added Tongan language locale for Tonga (swbz#21728).
+- [ARM] Fix ld.so crash when built using Binutils 2.29.
+- Added yesstr and nostr for aa_ET (swbz#21768).
+- New locale for bi_VU (swbz#21767).
+- Disable single thread optimization for open_memstream
+
+* Wed Jul 12 2017 Carlos O'Donell <carlos@redhat.com> - 2.25.90-24
+- Fix IFUNC crash in early startup for ppc64le static binaries (#1467518).
+- Enable building with BIND_NOW on ppc64le (#1467518).
+- Fix 32-bit ARM builds in presence of new binutils.
+
+* Wed Jul 12 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-23
+- malloc: Tell GCC optimizers about MAX_FAST_SIZE in _int_malloc (#1470060)
+- Auto-sync with upstream master,
+  commit 30200427a99e5ddac9bad08599418d44d54aa9aa:
+- Add per-thread cache to malloc
+- Add Samoan language locale for Samoa
+- Add Awajún / Aguaruna locale for Peru
+- CVE-2010-3192: Avoid backtrace from __stack_chk_fail (swbz#12189)
+- Add preadv2, writev2 RWF_NOWAIT flag (swbz#21738)
+- Fix abday strings for ar_JO/ar_LB/ar_SY locales (swbz#21749)
+- Fix abday strings for ar_SA locale (swbz#21748, swbz#19066)
+- Set data_fmt for da_DK locale (swbz#17297)
+- Add yesstr and nostr for the zh_HK locale (swbz#21733)
+- Fix abday strings for the ksIN@devanagari locale (swbz#21743)
+- Do not include _dl_resolv_conflicts in libc.a (swbz#21742)
+- Test __memmove_chk, __memset_chk only in libc.so (swbz#21741)
+- Add iI and eE to  yesexpr and noexpr respectively for ts_ZA locale
+- Add yesstr/nostr for kw_GB locale (swbz#21734)
+- Add yesstr and nostr for the ts_ZA locale (swbz#21727)
+- Fix LC_NAME for hi_IN locale (swbz#21729)
+- Add yesstr and nostr for the xh_ZA locale (swbz#21724)
+- Add yesstr and nostr for the zh_CN locale (swbz#21723)
+- Fix full weekday names for the ks_IN@devanagari locale (swbz#21721)
+- Various fixes to Arabic locales after CLDR import 
+
+* Tue Jul 11 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-22
+- Reinstantiate stack_t cleanup (#1468904)
+- s390x: Restore PTRACE_GETREGS etc. to get GCC to build (#1469536)
+
+* Sun Jul  9 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-21
+- Back out stack_t cleanup (#1468904)
+
+* Thu Jul 06 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-20
+- Auto-sync with upstream master,
+  commit 031e519c95c069abe4e4c7c59e2b4b67efccdee5:
+- x86-64: Align the stack in __tls_get_addr (#1440287)
+- Add Tok-Pisin (tpi_PG) locale.
+- Add missing yesstr/nostr for Pashto locale (swbz#21711)
+- Add missing yesstr/nostr for Breton locale (swbz#21706)
+- Single threaded stdio optimization
+- sysconf: Use conservative default for _SC_NPROCESSORS_ONLN (swbz#21542)
+
+* Tue Jul 04 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-19
+- Auto-sync with upstream master,
+  commit 4446a885f3aeb3a33b95c72bae1f115bed77f0cb.
+
+* Tue Jul 04 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-18
+- Auto-sync with upstream master,
+  commit 89f6307c5d270ed4f11cee373031fa9f2222f2b9.
+
+* Tue Jul  4 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-17
+- Disable building with BIND_NOW on ppc64le (#1467518)
+
+* Mon Jul 03 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-16
+- Auto-sync with upstream master,
+  commit e237357a5a0559dee92261f1914d1fa2cd43a1a8:
+- Support an arbitrary number of search domains in the stub resolver (#168253)
+- Detect and apply /etc/resolv.conf changes in libresolv (#1374239)
+- Increase malloc alignment on i386 to 16 (swbz#21120)
+- Make RES_ROTATE start with a random name server (swbz#19570)
+- Fix tgmath.h totalorder, totalordermag return type (swbz#21687)
+- Miscellaneous sys/ucontext.h namespace fixes (swbz#21457)
+- Rename struct ucontext tag (swbz#21457)
+- Call exit system call directly in clone (swbz#21512)
+- powerpc64le: Enable float128
+- getaddrinfo: Merge IPv6 addresses and IPv4 addresses (swbz#21295)
+- Avoid .symver on common symbols (swbz#21666)
+- inet_pton: Reject IPv6 addresses with many leading zeros (swbz#16637)
+
+* Fri Jun 23 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-15
+- Auto-sync with upstream master,
+  commit 3ec7c02cc3e922b9364dc8cfd1d4546671b91003, fixing:
+- memcmp-avx2-movbe.S incorrect results for lengths 2/3 (#1464403)
+
+* Fri Jun 23 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-14
+- Auto-sync with upstream master,
+  commit 12f50337ae80672c393c2317d471d097ad92c492, changing:
+- localedata: fur_IT: Fix spelling of Wednesday (Miercus)
+- Update to Unicode 10.0.0
+- inet: __inet6_scopeid_pton should accept node-local addresses (swbz#21657)
+
+* Fri Jun 23 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-13
+- Reenable valgrind on aarch64
+
+* Thu Jun 22 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-12
+- Log auxiliary vector during build
+
+* Thu Jun 22 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-11
+- Auto-sync with upstream master,
+  commit 0a47d031e44f15236bcef8aeba80e737bd013c6f.
+
+* Thu Jun 22 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-10
+- Disable valgrind on aarch64
+
+* Wed Jun 21 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-9
+- Drop historic aarch64 TLS patches
+- Drop workaround for GCC PR69537
+- Auto-sync with upstream master,
+  commit 9649350d2ee47fae00794d57e2526aa5d67d900e.
+
+* Wed Jun 21 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-8
+- Adjust build requirements for gcc, binutils, kernel-headers.
+- Auto-sync with upstream master,
+  commit 43e0ac24c836eed627a75ca932eb7e64698407c6, changing:
+- Remove <xlocale.h>
+
+* Mon Jun 19 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-7
+- Drop glibc-Disable-buf-NULL-in-login-tst-ptsname.c, applied upstream.
+- Auto-sync with upstream master,
+  commit 37e9dc814636915afb88d0779e5e897e90e7b8c0, fixing:
+- CVE-2017-1000366: Avoid large allocas in the dynamic linker (#1462820)
+- wait3 namespace (swbz#21625)
+- S390: Sync ptrace.h with kernel (swbz#21539)
+- Another x86 sys/ucontext.h namespace issue (swbz#21457)
+- siginterrupt namespace (swbz#21597)
+- Signal stack namespace (swbz#21584)
+- Define struct rusage in sys/wait.h when required (swbz#21575)
+- S390: Fix build with gcc configured with --enable-default-pie (swbz#21537)
+- Update timezone code from tzcode 2017b
+- nptl: Invert the mmap/mprotect logic on allocated stacks (swbz#18988)
+- PowerPC64 ELFv2 PPC64_OPT_LOCALENTRY
+- Make copy of <bits/std_abs.h> from GCC (swbz#21573)
+- localedata: ce_RU: update weekdays from CLDR (swbz#21207)
+- localedata: Remove trailing spaces (swbz#20275)
+- XPG4 bsd_signal namespace (swbz#21552)
+- Correct collation rules for Malayalam (swbz#19922, swbz#19919)
+- waitid namespace (swbz#21561)
+- Condition signal.h inclusion in sys/wait.h (swbz#21560)
+- ld.so: Consolidate 2 strtouls into _dl_strtoul (swbz#21528)
+- tst-timezone race (swbz#14096)
+- Define SIG_HOLD for XPG4 (swbz#21538)
+- struct sigaltstack namespace (swbz#21517)
+- sigevent namespace (swbz#21543)
+- Add shim header for bits/syscall.h (swbz#21514)
+- namespace issues in sys/ucontext.h (swbz#21457)
+- posix: Implement preadv2 and pwritev2
+- Various float128 and tunables improvements
+
+* Tue Jun 06 2017 Stephen Gallagher <sgallagh@redhat.com> - 2.25.90-6
+- Reduce libcrypt-nss dependency to 'Suggests:'
+
+* Wed May 31 2017 Arjun Shankar <arjun.is@lostca.se> - 2.25.90-5
+- Auto-sync with upstream master,
+  commit cfa9bb61cd09c40def96f042a3123ec0093c4ad0.
+- Fix sys/ucontext.h namespace from signal.h etc. inclusion (swbz#21457)
+- Fix sigstack namespace (swbz#21511)
+
+* Wed May 31 2017 Arjun Shankar <arjun.is@lostca.se> - 2.25.90-4
+- Disable the NULL buffer test in login/tst-ptsname.c. It leads to a build
+  failure during 'make check'. A permanent solution is being discussed
+  upstream.
+
+* Tue May 23 2017 Arjun Shankar <arjun.is@lostca.se> - 2.25.90-3
+- Auto-sync with upstream master,
+  commit 231a59ce2c5719d2d77752c21092960e28837b4a.
+- Add el_GR@euro support (swbz#20686)
+- Set dl_platform and dl_hwcap from CPU features (swbz#21391)
+- Use __glibc_reserved convention in mcontext, sigcontext (swbz#21457)
+- Fix signal.h bsd_signal namespace (swbz#21445)
+- Fix network headers stdint.h namespace (swbz#21455)
+- resolv: Use RES_DFLRETRY consistently (swbz#21474)
+- Condition some sys/ucontext.h contents on __USE_MISC (swbz#21457)
+- Consolidate Linux read syscall (swbz#21428)
+- fork: Remove bogus parent PID assertions (swbz#21386)
+- Reduce value of LD_HWCAP_MASK for tst-env-setuid test case (swbz#21502)
+- libio: Avoid dup already opened file descriptor (swbz#21393)
+
+* Mon May 01 2017 Carlos O'Donell <carlos@systemhalted.org> - 2.25.90-2
+- Auto-sync with upstream master,
+  commit 25e39b4229fb365a605dc4c8f5d6426a77bc08a6.
+- logbl for POWER7 return incorrect results (swbz#21280)
+- sys/socket.h uio.h namespace (swbz#21426)
+- Support POSIX_SPAWN_SETSID (swbz#21340)
+- Document how to provide a malloc replacement (swbz#20424)
+- Verify that all internal sockets opened with SOCK_CLOEXEC (swbz#15722)
+- Use AVX2 memcpy/memset on Skylake server (swbz#21396)
+- unwind-dw2-fde deadlock when using AddressSanitizer (swbz#21357)
+- resolv: Reduce advertised EDNS0 buffer size to guard against
+  fragmentation attacks (swbz#21361)
+- mmap64 silently truncates large offset values (swbz#21270)
+- _dl_map_segments does not test for __mprotect failures consistently
+  (swbz#20831)
+
+* Thu Mar 02 2017 Florian Weimer <fweimer@redhat.com> - 2.25.90-1
+- Switch back to upstream master branch.
+- Drop Unicode 9 patch, merged upstream.
+- Auto-sync with upstream master,
+  commit a10e9c4e53fc652b79abf838f7f837589d2c84db, fixing:
+- Build all DSOs with BIND_NOW (#1406731)
+
+* Wed Mar  1 2017 Jakub Hrozek <jhrozek@redhat.com> - 2.25-3
+- NSS: Prefer sss service for passwd, group databases (#1427646)
+
+* Tue Feb 28 2017 Florian Weimer <fweimer@redhat.com> - 2.25-2
+- Auto-sync with upstream release/2.25/master,
+  commit 93cf93e06ce123439e41d3d62790601c313134cb, fixing:
+- sunrpc: Improvements for UDP client timeout handling (#1346406)
+- sunrpc: Avoid use-after-free read access in clntudp_call (swbz#21115)
+- Fix getting tunable values on big-endian (swbz#21109)
+
+* Wed Feb 08 2017 Carlos O'Donell <carlos@redhat.com> - 2.25-1
+- Update to final released glibc 2.25.
+
+* Wed Feb 08 2017 Carlos O'Donell <carlos@redhat.com> - 2.24.90-31
+- Fix builds with GCC 7.0.
+
+* Wed Feb 01 2017 Carlos O'Donell <carlos@redhat.com> - 2.24.90-30
+- Optimize IBM z System builds for zEC12.
+
+* Wed Jan 25 2017 Florian Weimer <fweimer@redhat.com> - 2.24.90-29
+- Use vpath in crypt-glibc/Makefile to obtain the test input file.
+- Auto-sync with upstream master,
+  commit 5653ab12b4ae15b32d41de7c56b2a4626cd0437a, fixing:
+- ARM fpu_control.h for assemblers requiring VFP insn names (swbz#21047)
+- FAIL in test string/tst-xbzero-opt (swbz#21006)
+- Make soft-float powerpc swapcontext restore the signal mask (swbz#21045)
+- Clear list of acquired robust mutexes in the child after fork (swbz#19402)
+
+* Thu Jan 12 2017 Carlos O'Donell <carlos@systemhalted.org> - 2.24.90-28
+- Auto-sync with upstream master,
+  commit 468e525c81a4af10f2e613289b6ff7c950773a9e:
+- Drop rwlock related patches applied upstream.
+- Fix i686 memchr for large input sizes (swbz#21014)
+- Fix x86 strncat for large input sizes (swbz#19390)
+- powerpc: Fix write-after-destroy in lock elision (swbz#20822)
+- New pthread rwlock that is more scalable.
+- Fix testsuite build for GCC 7 -Wformat-truncation.
+
+* Mon Jan 02 2017 Florian Weimer <fweimer@redhat.com> - 2.24.90-27
+- Auto-sync with upstream master,
+  commit 73dfd088936b9237599e4ab737c7ae2ea7d710e1:
+- Enable tunables.
+- Drop condvar-related patches applied upstream.
+- Update DNS RR type definitions (swbz#20593)
+- CVE-2015-5180: resolv: Fix crash with internal QTYPE (#1249603)
+- sunrpc: Always obtain AF_INET addresses from NSS (swbz#20964)
+
+* Mon Dec 26 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-26
+- Auto-sync with upstream master,
+  commit cecbc7967f0bcac718b6f8f8942b58403c0e917c
+- Enable stack protector for most of glibc (#1406731)
+
+* Fri Dec 23 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.24.90-25
+- Auto-sync with upstream master,
+  commit 81e0662e5f2c342ffa413826b7b100d56677b613, fixing:
+- Shared object unload assert when calling dlclose (#1398370, swbz#11941)
+- Fix nss_nisplus build with mainline GCC (swbz#20978)
+- Add Intel TSX blacklist for silicon with known errata.
+- Add fmax, fmin, fmaxf, fminf microbenchmarks.
+- Robust mutexes: Fix lost wake-up (swbz#20973).
+- Add fmaxmag, fminmag, roundeven, roundevenf, roundevenl functions.
+
+* Sun Dec 18 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-24
+- Auto-sync with upstream master,
+  commit e077349ce589466eecd47213db4fae6b80ec18c4, fixing:
+- Warn about assignment in assertions (#1105335)
+- powerpc64/power7 memchr for large input sizes (swbz#20971)
+- fmax, fmin sNaN handling (swbz#20947)
+
+* Mon Dec 12 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-23
+- Auto-sync with upstream master,
+  commit 92dcaa3e2f7bf0f7f1c04cd2fb6a317df1a4e225, fixing:
+- Add getrandom, getentropy (#1172273)
+- Add additional compiler barriers to backtrace tests (swbz#20956)
+
+* Fri Dec 09 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-22
+- Auto-sync with upstream master,
+  commit 0abbe7cd700951082b314182a0958d65238297ef, changing:
+- IN6_IS_ADDR_ does not require enabling non-standard extensions (#1138893)
+- Install libm.a as linker script (swbz#20539)
+- Fix writes past the allocated array bounds in execvpe (swbz#20847)
+- Fix hypot sNaN handling (swbz#20940)
+- Fix x86_64/x86 powl handling of sNaN arguments (swbz#20916)
+- Fix sysdeps/ieee754 pow handling of sNaN arguments (swbz#20916)
+- Fix pow (qNaN, 0) result with -lieee (swbz#20919)
+- Fix --enable-nss-crypt failure of tst-linkall-static (swbz#20918)
+
+* Fri Dec 02 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-21
+- Auto-sync with upstream master,
+  commit 01b23a30b42a90b1ebd882a0d81110a1542e504a, fixing:
+- aarch64: Incorrect dynamic TLS resolution (#1400347)
+
+* Wed Nov 30 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-20
+- Auto-sync with upstream master,
+  commit 9e78f6f6e7134a5f299cc8de77370218f8019237, fixing:
+- stdio buffering with certain network file systems (#1400144)
+- libpthread initialization breaks ld.so exceptions (#1393909)
+- x86_64: Use of PLT and GOT in static archives (swbz#20750)
+- localedata, iconvdata: 0x80->Euro sign mapping for GBK (swbz#20864)
+- math: x86_64 -mfpmath=387 float_t, double_t (swbz#20787)
+
+* Wed Nov 23 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-19
+- Auto-sync with upstream master,
+  commit 7a5e3d9d633c828d84a9535f26b202a6179978e7:
+- Fix default float_t definition (swbz#20855)
+- Fix writes past the allocated array bounds in execvpe (swbz#20847)
+
+* Tue Nov 22 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-18
+- Auto-sync with upstream master,
+  commit 5ee1a4443a3eb0868cef1fe506ae6fb6af33d4ad.
+
+* Wed Nov 16 2016 Carlos O'Donell <carlos@redhat.com> - 2.24.90-17
+* Add new scalable implementation of POSIX read-write locks.
+
+* Wed Nov 16 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-16
+- Do not try to link libcrypt statically during tests
+
+* Wed Nov 16 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-15
+- Auto-sync with upstream master,
+  commit 530862a63e0929128dc98fbbd463b120934434fb, fixing:
+- Fix rpcgen buffer overrun (swbz#20790)
+- Fix ppc64 build failure to swbz#20729 fix attempt
+
+* Wed Nov  2 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-14
+- Drop glibc-swbz20019.patch, applied upstream.
+- dlerror returns NULL after dlsym (RTLD_NEXT) lookup failure (#1333945)
+  (fixed by dropping the revert)
+- Auto-sync with upstream master,
+  commit 9032070deaa03431921315f973c548c2c403fecc, fixing:
+- Correct clog10 documentation (swbz#19673)
+- Fix building with -Os (swbz#20729)
+- Properly initialize glob structure with GLOB_BRACE|GLOB_DOOFFS (swbz#20707)
+- powerpc: Fix TOC stub on powerpc64 clone (swbz#20728)
+- math: Make strtod raise "inexact" exceptions (swbz#19380)
+- malloc: Remove malloc_get_state, malloc_set_state (swbz#19473)
+
+* Sat Oct 22 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-13
+- Auto-sync with upstream master,
+  commit e37208ce86916af9510ffb9ce7b3c187986f07de, changing:
+- Restore <math.h> compatbility with extern "C" wrappers
+
+* Fri Oct 21 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-12
+- Auto-sync with upstream master,
+  commit b3918c44db615637b26d919ce599cd86592316b3, fixing:
+- math: Turn iszero into a function template (#1387415)
+- ARM: Use VSQRT instruction (swbz#20660)
+- math: Stop powerpc copysignl raising "invalid" for sNaN (swbz#20718)
+- x86: Fix FMA and AVX2 detection (swbz#20689)
+- x86: Avoid assertion failure on older Intel CPus (swbz#20647)
+
+* Mon Oct 17 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.24.90-11
+- Add prototype support for detecting invalid IFUNC calls (swbz#20019).
+- New POSIX thread condition variable implementation (swbz#13165).
+
+* Fri Oct 07 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-10
+- Auto-sync with upstream master,
+  commit 5140d036f9c16585448b5908c3a219bd96842161, fixing:
+- resolv: Remove RES_USEBSTRING and its implementation (swbz#20629)
+- Refactor ifunc resolvers due to false debuginfo (swbz#20478)
+
+* Tue Oct 04 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-9
+- Auto-sync with upstream master,
+  commit ff88ee7edfaa439e23c42fccaf3a36cd5f041894, fixing:
+- LONG_WIDTH is incorrectly set to the 64 on 32-bit platforms (#1381582)
+- libio: Multiple fixes for open_{w}memstream (swbz#18241, swbz#20181)
+- Simplify and test _dl_addr_inside_object (swbz#20292)
+
+* Thu Sep 22 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-8
+- Add support for MIPS (#1377795)
+- Drop glibc-rh1315476-1.patch (sln pre-processor cleanup), it was
+  applied upstream.
+- Auto-sync with upstream master,
+  commit 17af5da98cd2c9ec958421ae2108f877e0945451, fixing the following bugs:
+- Fix non-LE TLS in static programs (swbz#19826)
+- resolv: Remove unsupported hook functions from the API (swbz#20016)
+- Remove RR type classification macros (swbz#20592)
+- Remove obsolete DNSSEC support (swbz#20591)
+- manual: Clarify the documentation of strverscmp (swbz#20524)
+
+* Tue Sep 20 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.24.90-7
+- Auto-sync with upstream master.
+
+* Thu Sep 01 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-6
+- Auto-sync with upstream master,
+  commit 4d728087ef8cc826b05bd21d0c74d4eca9b1a27d, fixing:
+- Base <sys/quota.h> on Linux headers (#1360480)
+- Simplify static malloc interposition (swbz#20432)
+
+* Fri Aug 26 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-5
+- Auto-sync with upstream master,
+  commit 7e625f7e85b4e88f10dbde35a0641742af581806, fixing:
+- lt_LT locale: use hyphens in d_fmt (swbz#20497)
+- nptl test time reductions (swbz#19946)
+
+* Sun Aug 21 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-4
+- Auto-sync with upstream master,
+  commit 66abf9bfbe24ac1e7207d26ccad725ed938dc52c, fixing:
+- argp: Do not override GCC keywords with macros (#1366830)
+
+* Wed Aug 17 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-3
+- Auto-sync with upstream master,
+  commit d9067fca40b8aac156d73cfa44d6875813555a6c, with these changes:
+- Avoid duplicating object files already in libc.a (#1352625)
+- CVE-2016-6323: Backtraces can hang on ARM EABI (32-bit) (swbz#20435)
+- et_EE: locale has wrong {p,n}_cs_precedes value (swbz#20459
+
+* Thu Aug 11 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-2
+- Auto-sync with upstream master,
+  commit f79211792127f38d5954419bb3784c8eb7f5e4e5
+
+* Mon Aug 08 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.24.90-1
+- Set version to 2.24.90 to match upstream development.
+
+* Mon Aug 08 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.23.90-31
+- Auto-sync with upstream master.
+
+* Thu Jul 21 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-30
+- Drop sendmsg/recvmsg compatibility patch (#1344830)
+- glibc-devel depends on libgcc%%{_isa} (#1289356)
+- Drop Requires(pre) on libgcc
+- Introduce libcrypt and libcrypt-nss (#1324623)
+- Do not try to install mtrace when bootstrapping
+
+* Wed Jul 20 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-29
+- Move NSS modules to subpackages (#1338889)
+
+* Wed Jul 13 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-28
+- Auto-sync with upstream master, commit
+  f531f93056b34800383c5154280e7ba5112563c7.
+- Add de_LI.UTF-8 locale.
+- Make ldconfig and sln the same binary.  (#1315476)
+
+* Fri Jul 08 2016 Mike FABIAN <mfabian@redhat.com> - 2.23.90-27
+- Unicode 9.0.0 updates (ctype, charmap, transliteration) (#1351108)
+
+* Tue Jul 05 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-26
+- Auto-sync with upstream master, up to commit
+  30e4cc5413f72c2c728a544389da0c48500d9904, fixing these bug:
+- strcasecmp failure on ppc64le (#nscd breaks initgroups with nis (initgroups are empty) (#1294574)
+
+* Fri Jun 24 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-25
+- Properly handle more invalid --install-langs arguments (#1349906).
+
+* Tue Jun 21 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-24
+- Auto-sync with upstream master, commit
+  a3b473373ee43a292f5ec68a7fda6b9cfb26a9b0, fixing these bugs:
+- Unnecessary mmap fallback in malloc (#1348620)
+- pwritev system call passes incorrect offset to kernel (#1346070)
+
+* Sat Jun 18 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-23
+- Use scriptlet expansion in all-langpacks posttrans script to expand
+  _install_langes macro.
+
+* Mon Jun 13 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-22
+- Remove glibc-fedora-uname-getrlimit.patch.  This patch was
+  introduced to fix bug rhbz#579086 (Preloading a replacement uname
+  is causing environment to be cleaned if libpthread is loaded).
+  UTS namespaces should now offer a cleaner way yo do this.
+- Drop sendmmsg/recvmmsg compat symbols on 32-bit architectures (#1344830)
+* Sat Jun 11 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-21
+- First phase of sendmsg/recvmsg/sendmmsg/recvmmsg ABI revert:
+  GLIBC_2.24 compatibility symbols (#1344830)
+- Auto-sync with upstream master
+  (commit 31d0a4fa646db8b8c97ce24e0ec0a7b73de4fca1),
+  fixing the following bugs:
+- Add eo locale
+- Crash in the nss_db NSS service module during iteration (#1344480)
+
+* Thu Jun 09 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-20
+- Auto-sync with upstream master, fixing this bug:
+- Emacs crashes on startup (#1342976)
+
+* Wed Jun 01 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-19
+- Auto-sync with upstream master.
+- Adjust glibc-rh1315108.patch accordingly.
+- Fix fork redirection in libpthread (#1326903)
+- CVE-2016-4429: stack overflow in Sun RPC clntudp_call (#1337140)
+- Do not disable assertions in release builds (#1338887)
+
+* Wed May 11 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-18
+- Move support for building GCC 2.96 into compat-gcc-296.
+
+* Wed May 11 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-17
+- Temporily revert dlsym (RTLD_NEXT)/dlerror change, to unbreak
+  ASAN until it is fixed (#1335011)
+
+* Mon May  9 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-16
+- Drop the “fix” for fork/vfork NULL symbols in libpthread.  It does
+  not work because ld.so apparently supports some variant of direct
+  binding.
+
+* Mon May 09 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-15
+- Auto-sync with upstream master.
+- Drop glibc-nsswitch-Add-group-merging-support.patch, applied upstream.
+- Drop glibc-rh1252570.patch, alternative fixes applied upstream.
+- Adjust glibc-rh1315108.patch to minor upstream change.
+- Update SUPPORTED file.
+- Experimental fix for NULL fork/vfork symbols in libpthread (#1326903)
+
+* Tue May 03 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.23.90-14
+- Require libselinux for nscd in non-bootstrap configuration.
+
+* Fri Apr 29 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.23.90-13
+- Auto-sync with upstream master.
+
+* Thu Apr 28 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-12
+- Move spec file system information logging to the build stage.
+
+* Thu Apr 14 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-11
+- Auto-sync with upstream master.
+- Unbreak pread/pread64 on armhfp (#1327277)
+
+* Thu Apr 14 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-10
+- Auto-sync with upstream master.
+
+* Thu Apr 14 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-9
+- Auto-sync with upstream master.  Removes type union wait.
+- Update SUPPORTED locales file.
+
+* Fri Apr 08 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-8
+- Auto-sync with upstream master.
+
+* Tue Mar 29 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-7
+- Auto-sync with upstream master.
+- Adjust glibc-rh1252570.patch to partial upstream fix.
+- Drop glibc-fix-an_ES.patch, now included upstream.
+
+* Wed Mar 16 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-6
+- Use 'an' as language abbreviation for an_ES.
+
+* Mon Mar 07 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.23.90-5
+- Auto-sync with upstream master.
+
+* Sun Mar  6 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-4
+- Remove extend_alloca (#1315108)
+
+* Mon Feb 29 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-3
+- Enhance support for upgrading from a non-language-pack system.
+
+* Fri Feb 26 2016 Mike FABIAN <mfabian@redhat.com> - 2.23.90-2
+- Create new language packages for all supported languages.
+  Locales, translations, and locale sources are split into
+  distinct sub-packages. A meta-package is created for users
+  to install all languages. Transparent installation support
+  is provided via dnf langpacks.
+
+* Fri Feb 26 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.23.90-1
+- Upstream development version is now 2.23.90.
+
+* Thu Feb 25 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.22.90-38
+- Auto-sync with upstream master.
+
+* Fri Feb 19 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-37
+- Remove stray newline from Serbian locales (#1114591).
+
+* Tue Feb 16 2016 CArlos O'Donell <carlos@redhat.com> - 2.22.90-36
+- Fix CVE-2015-7547: getaddrinfo() stack-based buffer overflow (#1308943).
+
+* Mon Feb 15 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-35
+- Revert may_alias attribute for struct sockaddr (#1306511).
+- Revert upstream commit 2212c1420c92a33b0e0bd9a34938c9814a56c0f7 (#1252570).
+
+* Sat Feb 13 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-34
+- Auto-sync with upstream master.
+- Support aliasing with struct sockaddr pointers (#1306511).
+
+* Tue Feb 09 2016 Carlos O'Donell <carlos@redhat.com> - 2.22.90-33
+- Use --with-cpu=power8 for ppc64le default runtime (#1227361).
+
+* Tue Feb 02 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-32
+- Auto-sync with upstream master.
+- Add glibc-isinf-cxx11.patch to improve C++11 compatibility.
+
+* Thu Jan 28 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-31
+- Add workaround for GCC PR69537.
+
+* Thu Jan 28 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-30
+- Auto-sync with upstream master.
+
+* Wed Jan 13 2016 Carlos O'Donell <carlos@redhat.com> - 2.22.90-29
+- New pthread_barrier algorithm with improved standards compliance.
+
+* Wed Jan 13 2016 Carlos O'Donell <carlos@redhat.com> - 2.22.90-28
+- Add group merging support for distributed management (#1146822).
+
+* Tue Jan 12 2016 Carlos O'Donell <carlos@redhat.com> - 2.22.90-27
+- Remove 32-bit POWER support.
+- Add 64-bit POWER7 BE and 64-bit POWER8 BE optimized libraries.
+
+* Mon Dec 21 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-26
+- Auto-sync with upstream master.
+
+* Wed Dec 16 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-25
+- Auto-sync with upstream master.
+- Includes fix for malloc assertion failure in get_free_list.  (#1281714)
+- Drop Unicode 8.0 patches (now merged upstream).
+
+* Sat Dec  5 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-24
+- Put libmvec_nonshared.a into the -devel package.  (#1288738)
+
+* Sat Dec 05 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-23
+- Auto-sync with upstream master.
+
+* Thu Nov 26 2015 Carlos O'Donell <carlos@redhat.com> - 2.22.90-22
+- The generic hidden directive support is already used for
+  preinit/init/fini-array symbols so we drop the Fedora-specific
+  patch that does the same thing.
+  Reported by Dmitry V. Levin <ldv@altlinux.org>
+
+* Thu Nov 26 2015 DJ Delorie <dj@redhat.com> - 2.22.90-22
+- Require glibc-static for C++ tests.
+- Require gcc-c++, libstdc++-static, and glibc-static only when needed.
+- Fix --without docs to not leave info files.
+
+* Fri Nov 20 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-21
+- Auto-sync with upstream master.
+
+* Wed Nov 18 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-20
+- Auto-sync with upstream master.
+
+* Wed Nov 18 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-19
+- Disable -Werror on s390 (#1283184).
+
+* Mon Nov 16 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-18
+- Auto-sync with upstream master.
+
+* Mon Nov 16 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-17
+- Revert temporary armhfp build fix.
+
+* Mon Nov  9 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-16
+- Apply temporary fix for armhfp build issue.
+
+* Mon Nov 09 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-15
+- Auto-sync with upstream master.
+
+* Tue Nov  3 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-14
+- Log uname, cpuinfo, meminfo during build (#1276636)
+
+* Fri Oct 30 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-13
+- Auto-sync with upstream master.
+
+* Fri Oct 30 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-12
+- Revert to upstream implementation of condition variables (#1229659)
+
+* Wed Oct 28 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-11
+- Disable valgrind test on ppc64p7, too.
+
+* Mon Oct 26 2015 Carlos O'Donell <carlos@redhat.com> - 2.22.90-10
+- Disable valgrind test for ppc64.
+
+* Wed Oct 21 2015 Carlos O'Donell <carlos@redhat.com> - 2.22.90-9
+- Sync with upstream master.
+- Update new condvar implementation.
+
+* Fri Oct  9 2015 Carlos O'Donell <carlos@redhat.com> - 2.22.90-8
+- Remove libbsd.a (#1193168).
+
+* Wed Sep 16 2015 Mike FABIAN <mfabian@redhat.com> - 2.22.90-7
+- Add the C.UTF-8 locale (#902094).
+
+* Wed Sep 16 2015 Carlos O'Donell <carlos@systemhalted.org> - 2.22.90-6
+- Fix GCC 5 and -Werror related build failures.
+- Fix --install-langs bug which causes SIGABRT (#1262040).
+
+* Fri Aug 28 2015 Carlos O'Donell <carlos@systemhalted.org> - 2.22.90-5
+- Auto-sync with upstream master.
+
+* Thu Aug 27 2015 Carlos O'Donell <carlos@redhat.com> - 2.22.90-4
+- Build require gcc-c++ for the C++ tests.
+- Support --without testsuite option to disable testing after build.
+- Support --without benchtests option to disable microbenchmarks.
+- Update --with bootstrap to disable benchtests, valgrind, documentation,
+  selinux, and nss-crypt during bootstrap.
+- Support --without werror to disable building with -Werror.
+- Support --without docs to disable build requirement on texinfo.
+- Support --without valgrind to disable testing with valgrind.
+- Remove c_stubs add-on and enable fuller support for static binaries.
+- Remove librtkaio support (#1227855).
+
+* Sun Aug 16 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.22.90-3
+- Auto-sync with upstream master.
+
+* Fri Aug 14 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.22.90-2
+- Remove initgroups from the default nsswitch.conf (#751450).
+
+* Fri Aug 14 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.22.90-1
+- Sync with upstream master.
+
+* Tue Jul 28 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-20
+- Sync with upstream master.
+
+* Thu Jul 23 2015 Mike FABIAN <mfabian@redhat.com> - 2.21.90-19
+- some more additions to the translit_neutral file by Marko Myllynen
+
+* Tue Jul 14 2015 Mike FABIAN <mfabian@redhat.com> - 2.21.90-18
+- Unicode 8.0.0 updates, including the transliteration files (#1238412).
+
+* Sun Jun 21 2015 Carlos O'Donell <carlos@redhat.com> - 2.21.90-17
+- Remove all linuxthreads handling from glibc spec file.
+
+* Wed Jun 17 2015 Carlos O'Donell <carlos@redhat.com> - 2.21.90-16
+- Move split out architecture-dependent header files into devel package
+  and keep generic variant in headers package, thus keeping headers package
+  content and file list identical across multilib rpms.
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.21.90-15.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Wed Jun  3 2015 Carlos O'Donell <carlos@redhat.com> - 2.21.90-15
+- Remove patch to increase DTV surplus which is no longer needed after
+  upstream commit f8aeae347377f3dfa8cbadde057adf1827fb1d44.
+
+* Sat May 30 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-14
+- Fix build failure on aarch64 (#1226459).
+
+* Mon May 18 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-13
+- Sync with upstream master.
+- Install new condvar implementation.
+
+* Fri May 08 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-12
+- Add benchmark comparison scripts.
+
+* Thu May 07 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-11
+- Auto-sync with upstream master.
+- Revert arena threshold fix to work around #1209451.
+
+* Tue Apr 07 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-10
+- Revert last auto-sync (#1209451).
+
+* Mon Apr 06 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-9
+- Auto-sync with upstream master.
+
+* Tue Mar 24 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-8
+- Auto-sync with upstream master.
+
+* Tue Mar 17 2015 Carlos O'Donell <carlos@redhat.com> - 2.21.90-7
+- Use rpm.expand in scripts to reduce set of required RPM features.
+
+* Thu Mar 12 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-6
+- Auto-sync with upstream master.
+
+* Tue Mar  3 2015 Mike Fabian <mfabian@redhat.com> - 2.21.90-5
+- Support installing only those locales specified by the RPM macro
+  %%_install_langs (#156477).
+
+* Mon Feb 23 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-4
+- Auto-sync with upstream master.
+
+* Sat Feb 21 2015 Till Maas <opensource@till.name> - 2.21.90-3.1
+- Rebuilt for Fedora 23 Change
+  https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
+
+* Thu Feb 12 2015 Carlos O'Donell <carlos@systemhalted.org> - 2.21.90-3
+- Fix missing clock_* IFUNCs in librtkaio.
+
+* Thu Feb 12 2015 Carlos O'Donell <carlos@systemhalted.org> - 2.21.90-2
+- Auto-sync with upstream master.
+
+* Wed Feb 11 2015 Carlos O'Donell <carlos@systemhalted.org> - 2.21.90-1
+- Add back x86 vDSO support.
+- Fix rtkaio build to reference clock_* functions from libc.
+
+* Wed Jan 21 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-20
+- Sync with upstream master.
+- Disable werror on s390x.
+- Revert x86 vDSO support since it breaks i686 rtkaio build.
+
+* Tue Jan 20 2015 Peter Robinson <pbrobinson@fedoraproject.org> 2.20.90-19
+- Drop large ancient ChangeLogs (rhbz #1169546)
+
+* Mon Jan 12 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-18
+- Pass address of main_arena.mutex to mutex_lock/unlock.
+
+* Thu Jan 08 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-17
+- Define a __tls_get_addr macro to avoid a conflicting declaration.
+
+* Wed Jan 07 2015 Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com> - 2.20.90-16
+- Disable -Werror for s390 as well.
+
+* Wed Jan 07 2015 Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com> - 2.20.90-14
+- Sync with upstream master.
+- Disable -Werror on powerpc and armv7hl.
+- Temporarily disable valgrind test on ppc64.
+
+* Sun Dec 28 2014 Dan Horák <dan[at]danny.cz>
+- valgrind available only on selected arches (missing on s390)
+
+* Wed Dec 10 2014 Kyle McMartin <kmcmarti@redhat.com>
+- aarch64: Drop strchrnul.S revert, apply fix from Richard Earnshaw.
+
+* Fri Dec 05 2014 Carlos O'Donell <carlos@redhat.com> - 2.20.90-13
+- Fix permission of debuginfo source files to allow multiarch
+  debuginfo packages to be installed and upgraded.
+
+* Fri Dec 05 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-12
+- Remove LIB_LANG since we don't install locales in /usr/lib/locale anymore.
+- Don't own any directories in /usr/share/locale (#1167445).
+- Use the %%find_lang macro to get the *.mo files (#1167445).
+- Add %%lang tags to language locale files in /usr/share/i18n/locale (#1169044).
+
+* Wed Dec 03 2014 Kyle McMartin <kyle@fedoraproject.org> - 2.20.90-11
+- aarch64: revert optimized strchrnul.S implementation (rhbz#1167501)
+  until it can be debugged.
+
+* Fri Nov 28 2014 Carlos O'Donell <carlos@redhat.com> - 2.20.90-10
+- Auto-sync with upstream master.
+
+* Wed Nov 19 2014 Carlos O'Donell <carlos@redhat.com> - 2.20.90-9
+- Sync with upstream master.
+
+* Wed Nov 05 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-8
+- Make getconf return only /usr/bin (#1138835).
+- Sync with upstream master.
+
+* Tue Nov 04 2014 Arjun Shankar <arjun.is@lostca.se> - 2.20.90-7
+- Add patch that modifies several tests to use test-skeleton.c.
+  The patch is accepted but not yet committed upstream.
+  https://sourceware.org/ml/libc-alpha/2014-10/msg00744.html
+
+* Tue Sep 30 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-6
+- Sync with upstream master.
+- Disable more Intel TSX usage in rwlocks (#1146967).
+- Enable lock elision again on s390 and s390x.
+- Enable Systemtap SDT probes for all architectures (#985109).
+
+* Fri Sep 26 2014 Carlos O'Donell <carlos@redhat.com> - 2.20.90-5
+- Disable lock elision support for Intel hardware until microcode
+  updates can be done in early bootup (#1146967).
+- Fix building test tst-strtod-round for ARM.
+
+* Tue Sep 23 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-4
+- Sync with upstream master.
+- Don't own the common debuginfo directories (#1144853).
+- Run valgrind in the %%check section to ensure that it does not break.
+
+* Tue Sep 16 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-3
+- Sync with upstream master.
+- Revert patch for #737223.
+
+* Mon Sep 08 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-2
+- Build build-locale-archive statically again.
+
+* Mon Sep 08 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-1
+- Sync with upstream master.
+
+* Thu Sep  4 2014 Carlos O'Donell <carlos@redhat.com> - 2.19.90-36
+- Allow up to 32 dlopened modules to use static TLS (#1124987).
+- Run glibc tests in %%check section of RPM spec file.
+- Do not run tests with `-k` and fail if any test fails to build.
+
+* Tue Aug 26 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-35
+- Sync with upstream master.
+- Use INTERNAL_SYSCALL in TLS_INIT_TP (#1133134).
+- Remove gconv loadable module transliteration support (CVE-2014-5119, #1119128).
+
+* Fri Aug 22 2014 Dennis Gilmore <dennis@ausil.us> - 2.19.90-34
+- add back sss to nsswitch.conf we have added workarounds in the tools
+
+* Thu Aug 21 2014 Kevin Fenzi <kevin@scrye.com> - 2.19.90-33.1
+- Rebuild for rpm bug 1131960
+
+* Tue Aug 19 2014 Dennis Gilmore <dennis@ausil.us> - 2.19.90-33
+- remove sss from default nsswitch.conf it causes issues with live image composing
+
+* Wed Aug 13 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-32
+- Auto-sync with upstream master.
+- Revert to only defining __extern_always_inline for g++-4.3+.
+- Fix build failure in compat-gcc-32 (#186410).
+
+* Mon Jul 28 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-31
+- Auto-sync with upstream master.
+
+* Wed Jul 23 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-30
+- Undo last master sync to fix up rawhide.
+
+* Tue Jul 15 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-29
+- Auto-sync with upstream master.
+
+* Sat Jul 12 2014 Tom Callaway <spot@fedoraproject.org> - 2.19.90-28
+- fix license handling
+
+* Mon Jul 07 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-27
+- Auto-sync with upstream master.
+
+* Fri Jul 04 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-26
+- Sync with upstream roland/nptl branch.
+- Improve testsuite failure outputs in build.log
+
+* Thu Jul 03 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-25
+- Sync with upstream roland/nptl branch.
+
+* Wed Jul 02 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-24
+- Sync with upstream master.
+
+* Tue Jun 24 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-23
+- Sync with upstream master.
+- Add fix to unbreak i386 ABI breakage due to a change in scalbn.
+
+* Fri Jun 20 2014 Kyle McMartin <kmcmarti@redhat.com> - 2.19.90-22
+- AArch64: Save & restore NZCV (flags) upon entry to _dl_tlsdesc_dynamic
+  in order to work around GCC reordering compares across the TLS
+  descriptor sequence (GCC PR61545.) Committing a (temporary) fix here
+  allows us to avoid rebuilding the world with gcc 4.9.0-11.fc21.
+
+* Mon Jun 16 2014 Kyle McMartin <kmcmarti@redhat.com> - 2.19.90-21
+- Auto-sync with upstream master.
+
+* Thu Jun 12 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-20
+- Auto-sync with upstream master.
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.19.90-19.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Tue Jun 03 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-19
+- Sync with upstream master.
+
+* Mon May 26 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-18
+- Sync with upstream master.
+- Adjust rtkaio patches to build with upstream master.
+
+* Wed May 21 2014 Kyle McMartin <kyle@fedoraproject.org> - 2.19.90-17
+- Backport some upstream-wards patches to fix TLS issues on AArch64.
+
+* Wed May 21 2014 Kyle McMartin <kyle@fedoraproject.org> - 2.19.90-16
+- AArch64: Fix handling of nocancel syscall failures (#1098327)
+
+* Thu May 15 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-15
+- Sync with upstream master.
+
+* Wed May 14 2014 Carlos O'Donell <carlos@redhat.com> - 2.19.90-14
+- Add support for displaying all test results in build logs.
+
+* Wed May 14 2014 Carlos O'Donell <carlos@redhat.com> - 2.19.90-13
+- Add initial support for ppc64le.
+
+* Tue Apr 29 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-12
+- Auto-sync with upstream master.
+- Remove ports addon.
+
+* Fri Apr 18 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-11
+- Sync with upstream master.
+
+* Thu Apr 10 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-10
+- Sync with upstream master.
+
+* Thu Apr 03 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-9
+- Sync with upstream master.
+
+* Wed Mar 26 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-8
+- Sync with upstream master.
+
+* Wed Mar 19 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-7
+- Sync with upstream master.
+- Fix offset computation for append+ mode on switching from read (#1078355).
+
+* Wed Mar 12 2014 Carlos O'Donell <carlos@redhat.com> - 2.19.90-6
+- Sync with upstream master.
+- Use cleaner upstream solution for -ftree-loop-distribute-patterns (#911307).
+
+* Tue Mar 04 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-5
+- Sync with upstream master.
+
+* Thu Feb 27 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-4
+- Use nscd service files from glibc sources.
+- Make nscd service forking in systemd service file.
+
+* Tue Feb 25 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-3
+- Sync with upstream master.
+- Separate ftell from fseek logic and avoid modifying FILE data (#1069559).
+
+* Mon Feb 24 2014 Carlos O'Donell <carlos@redhat.com> - 2.19.90-2
+- Fix build-locale-archive failure to open default template.
+
+* Tue Feb 18 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-1
+- Sync with upstream master.
+
+* Tue Feb 04 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-27
+- Sync with upstream master.
+
+* Wed Jan 29 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-26
+- Modify regular expressions to include powerpcle stubs-*.h (#1058258).
+
+* Wed Jan 29 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-25
+- Sync with upstream master.
+
+* Sat Jan 25 2014 Ville Skyttä <ville.skytta@iki.fi> - 2.18.90-24
+- Own the %%{_prefix}/lib/locale dir.
+
+* Thu Jan 23 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-23
+- Sync with upstream master.
+
+* Thu Jan 16 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-22
+- Back out ftell test case (#1052846).
+
+* Tue Jan 14 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-21
+- Sync with upstream master.
+- Fix infinite loop in ftell when writing wide char data (#1052846).
+
+* Tue Jan  7 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-20
+- Sync with upstream master.
+- Enable systemtap probes on Power and S/390.
+
+* Fri Dec 27 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-19
+- Sync with upstream master.
+
+* Fri Dec 20 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-18
+- Sync with upstream master.
+
+* Wed Dec  4 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-17
+- Sync with upstream master.
+  - Fix shm_open validation (#1037787);
+
+* Thu Nov 28 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-16
+- Sync with upstream master.
+
+* Wed Nov 20 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-15
+- Sync with upstream master.
+
+* Fri Nov  8 2013 Carlos O'Donell <carlos@redhat.com> - 2.18.90-14
+- Enhance NSCD's SELinux support to use dynamic permission names (#1025126).
+
+* Mon Oct 28 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-13
+- Sync with upstream master.
+  - Skip over unimplemented timezone format specifier in strptime (#947722).
+
+* Mon Oct 21 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-12
+- Allow fill_archive to be called with NULL fname.
+- Sync with upstream master.
+
+* Tue Oct 15 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-11
+- Sync with upstream master.
+
+* Thu Oct  3 2013 Carlos O'Donell <carlos@redhat.com> - 2.18.90-10
+- Allow applications to use pthread_atfork without explicitly
+  requiring libpthread.so. (#1013801)
+- Support `--list-archive FILE' in localedef utility.
+
+* Thu Oct  3 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-9
+- Define swap_endianness_p in build-locale-archive.
+
+* Wed Oct  2 2013 Carlos O'Donell <carlos@redhat.com> - 2.18.90-8
+- Allow ldconfig cached objects previously marked as hard or soft
+  ABI to now become unmarked without raising an error. This works
+  around a binutils bug that caused objects to become unmarked.
+  (#1009145)
+
+* Tue Oct  1 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-7
+- Fix check for PI mutex on non-x86 systems (#1007590).
+- Resync with upstream master.
+
+* Tue Sep 24 2013 Carlos O'Donell <carlos@redhat.com> - 2.18.90-6
+- Avoid the use of __block which is a reserved keyword for clang++
+  (#1009623).
+
+* Mon Sep 23 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-5
+- Resync with upstream master.
+
+* Sun Sep 22 2013 Carlos O'Donell <carlos@redhat.com> - 2.18.90-4
+- Fix CVE-2013-4788: Static applications now support pointer mangling.
+  Existing static applications must be recompiled (#985625).
+
+* Wed Sep 18 2013 Patsy Franklin <pfrankli@redhat.com> - 2.18.90-3
+- Fix conditional requiring specific binutils for s390/s390x.
+
+* Mon Sep 16 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-2
+- Resync with upstream master.
+- Fix CVE-2013-4332 (#1008299).
+
+* Thu Sep  5 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-1
+- Resync with upstream master.
+- Drop patch for #800224.
+
+* Thu Aug 29 2013 Carlos O'Donell <carlos@redhat.com> - 2.18-6
+- Fix Power build (#997531).
+
+* Wed Aug 28 2013 Carlos O'Donell <carlos@redhat.com> - 2.18-5
+- Fix indirect function support to avoid calling optimized routines
+  for the wrong hardware (#985342).
+
+* Mon Aug 26 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18-4
+- Initialize res_hconf in nscd. (#1000924).
+
+* Tue Aug 20 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18-3
+- Remove non-ELF support in rtkaio.
+- Avoid inlining of cleanup function for kaio_suspend.
+- Expand sizes of some types in strcoll (#855399, CVE-2012-4424).
+- Fix tst-aiod2 and tst-aiod3 test failures (#970865).
+
+* Mon Aug 19 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18-2
+- Fix buffer overflow in readdir_r (#995841, CVE-2013-4237).
+- Remove releng tarball.
+
+* Fri Aug 16 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18-1
+- Upstream release 2.18.
+- Pull in systemd during build and use the tmpfilesdir macro.
+
+* Wed Aug 14 2013 Carlos O'Donell <codonell@redhat.com> - 2.17.90-14
+- Update spec file to use rpm prefix everywhere.
+
+* Tue Aug 13 2013 Carlos O'Donell <codonell@redhat.com> - 2.17.90-13
+- Revert `Move to /usr' transition.
+
+* Tue Aug 13 2013 Carlos O'Donell <codonell@redhat.com> - 2.17.90-12
+- Complete `Move to /usr' transition. All relevant files are now
+  installed into `/usr'.
+
+* Wed Aug 07 2013 Karsten Hopp <karsten@redhat.com> 2.17.90-11
+- rebuild with the latest rpm to fix missing ld64.so provides on PPC
+
+* Mon Jul 29 2013 Carlos O'Donell <codonell@redhat.com> - 2.17.90-10
+- Fix missing libbsd.a in debuginfo packages.
+
+* Mon Jul 29 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.17.90-9
+- Fix strcoll flaws (#855399, CVE-2012-4412, CVE-2012-4424).
+
+* Mon Jul 29 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.17.90-8
+- Resync with upstream master.
+- Disable pt_chown (CVE-2013-2207).
+
+* Thu Jul 25 2013 Carlos O'Donell <carlos@redhat.com> - 2.17.90-7
+- Correctly name the 240-bit slow path sytemtap probe slowpow_p10 for slowpow.
+
+* Wed Jul 24 2013 Carlos O'Donell <carlos@redhat.com> - 2.17.90-6
+- Add build requirement on static libstdc++ library to fix testsuite failures
+  for static C++ tests.
+
+* Fri Jul 12 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.17.90-5
+- Enable lock elision support (#982363).
+- Depend on systemd instead of systemd-units (#983760).
+
+* Tue Jul  9 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.17.90-4
+- Resync with upstream master.
+
+* Thu Jun 20 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.17.90-3
+- Resync with upstream master.
+
+* Tue Jun 11 2013 Remi Collet <rcollet@redhat.com> - 2.17.90-2
+- rebuild for new GD 2.1.0
+
+* Tue Jun  4 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.17.90-1
+- Resync with upstream master.
+
+* Tue May 14 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.17-9
+- Avoid crashing in LD_DEBUG when program name is unavailable (#961238).
+
+* Sun May  5 2013 Patsy Franklin <pfrankli@redhat.com> - 2.17-8
+- Fix _nl_find_msg malloc failure case, and callers. (#959034).
+
+* Tue Apr 23 2013 Patsy Franklin <pfrankli@redhat.com> - 2.17-7
+- Test init_fct for NULL, not result->__init_fct, after demangling (#952799).
+
+* Tue Apr 23 2013 Patsy Franklin <pfrankli@redhat.com> - 2.17-6
+- Increase limits on xdr name and record requests (#892777).
+- Consistently MANGLE/DEMANGLE init_fct, end_fct and btow_fct (#952799).
+
+* Thu Mar 28 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.17-5
+- Don't add input group during initgroups_dyn in hesiod (#921760).
+
+* Sun Mar 17 2013 Carlos O'Donell <carlos@redhat.com> - 2.17-4
+- Fixed i386 glibc builds (#917161).
+- Fixed multibyte character processing crash in regexp (#905877, CVE-2013-0242)
+
+* Wed Feb 27 2013 Carlos O'Donell <carlos@redhat.com> - 2.17-3
+- Renamed release engineering directory to `releng' (#903754).
+- Fix building with gcc 4.8.0 (#911307).
+
+* Thu Feb 7 2013 Carlos O'Donell <carlos@redhat.com> - 2.17-2
+- Fix ownership of /usr/lib[64]/audit (#894307).
+- Support unmarked ARM objects in ld.so.cache and aux cache (#905184).
+
+* Tue Jan 1 2013 Jeff Law <law@redhat.com> - 2.17-1
+- Resync with official glibc-2.17 release
+* Fri Dec 21 2012 Jeff Law <law@redhat.com> - 2.16.90-40
+- Resync with master
+
+* Wed Dec 19 2012 Jeff Law <law@redhat.com> - 2.16.90-39
+- Add rtld-debugger-interface.txt as documentation. (#872242)
+
+* Fri Dec 7 2012 Jeff Law <law@redhat.com> - 2.16.90-38
+- Resync with master
+- Drop patch for 731228 that is no longer needed.
+
+* Thu Dec 6 2012 Jeff Law <law@redhat.com> - 2.16.90-37
+- Resync with master
+- Patch for 697421 has been submitted upstream.
+- Drop local patch for 691912 that is no longer needed.
+
+* Mon Dec 3 2012 Jeff Law <law@redhat.com> - 2.16.90-36
+- Resync with master
+- Drop local patch for 657588 that is no longer needed.
+- Drop local patch for 740682 that is no longer needed.
+- Drop local patch for 770439 that is no longer needed.
+- Drop local patch for 789209 that is no longer needed.
+- Drop local patch for nss-files-overflow that seems
+  useless.
+- Drop localedata-locales-fixes as they were rejected
+  upstream.
+- Drop test-debug-gnuc-hack.patch that seems useless now.
+- Repack patchlist.
+
+* Fri Nov 30 2012 Jeff Law <law@redhat.com> - 2.16.90-35
+- Resync with master (#882137).
+- Remove local patch for strict-aliasing warnings that
+  is no longer needed.
+- Remove local patch for 730856 that is no longer needed.
+- Repack patchlist.
+
+* Thu Nov 29 2012 Jeff Law <law@redhat.com> - 2.16.90-34
+- Remove local patch which "temporarily" re-added currences
+  obsoleted by the Euro.
+- Remove hunks from strict-aliasing patch that are no longer
+  needed.
+
+* Thu Nov 29 2012 Jeff Law <law@redhat.com> - 2.16.90-33
+- Resync with master.
+- Drop local patch for 788989.
+- Repack patchlist.
+
+* Wed Nov 28 2012 Jeff Law <law@redhat.com> - 2.16.90-32
+- Resync with master.
+- Drop local patch for 878913.
+- Drop local patch for 880666.
+- Drop local patch for 767693.
+- Repack patchlist.
+
+* Tue Nov 27 2012 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.16.90-31
+- Ensure that hashtable size is greater than 3 (#878913).
+- fwrite returns 0 on EOF (#880666).
+
+* Mon Nov 26 2012 Jeff Law <law@redhat.com> - 2.16.90-30
+- Resync with upstream sources
+- Drop local patch for getconf.
+- Repack patchlist.
+
+* Fri Nov 16 2012 Jeff Law <law@redhat.com> - 2.16.90-29
+- Rsync with upstream sources
+- Drop local patches for 803286, 791161, 790292, 790298
+
+* Wed Nov 7 2012 Jeff Law <law@redhat.com> - 2.16.90-28
+- Resync with upstream sources (#873397)
+
+* Mon Nov 5 2012 Jeff Law <law@redhat.com> - 2.16.90-27
+- Resync with upstream sources.
+- Don't use distinct patches for 770869, 787201 and 688948
+  as they all modify stuff under fedora/
+- Repack patchlist
+
+* Thu Nov 1 2012 Jeff Law <law@redhat.com> - 2.16.90-26
+- Resync with upstream sources (#872336)
+
+* Mon Oct 22 2012 Jeff Law <law@redhat.com> - 2.16.90-25
+- Rsync with upstream sources
+- Drop 864820 patch as now that it's upstream.
+- Add sss to /etc/nsswitch.conf (#867473)
+
+* Thu Oct 11 2012 Jeff Law <law@redhat.com> - 2.16.90-24
+- Rsync with upstream sources
+- Drop local 552960-2 patch now that it's upstream.
+- Drop local 858274 patch now that the root problem is fixed upstream.
+- Repack patchlist.
+
+* Wed Oct 10 2012 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.16.90-23
+- Fix Marathi names for Wednesday, September and October (#rh864820).
+
+* Fri Oct  5 2012 Jeff Law <law@redhat.com> - 2.16.90-22
+- Resync with upstream sources
+- Drop local 552960 patch now that it's upstream
+- Drop local stap patch now obsolete
+- Drop local s390 patch which avoided problems with old assemblers
+- Drop old fortify source patch to deal with old compilers
+
+* Thu Oct 4 2012 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.16.90-21
+- Take mutex in cleanup only if it is not already taken.
+
+* Tue Oct 2 2012 Jeff Law <law@redhat.com> - 2.16.90-20
+- Resync with upstream sources.
+- Repack patchlist.
+
+* Mon Oct 1 2012 Jeff Law <law@redhat.com> - 2.16.90-19
+- Resync with upstream sources to pick up fma fixes
+
+* Fri Sep 28 2012 Jeff Law <law@redhat.com> - 2.16.90-18
+- Resync with upstream sources.
+- Drop fedora-cdefs-gnuc.patch, it's not needed anymore.
+- Drop fedora-gai-rfc1918.patch, it's upstream now.
+- Drop fedora-localedata-no_NO.patch, it was supposed to be
+  temporary -- that was back in 2003.  This should have been
+  sorted out long ago.  We'll just have to deal with the
+  fallout.
+- Drop fedora-vfprintf-sw6530.patch, it's upstream now.
+- Drop rh769421.patch; Siddhesh has fixed this properly with 552960.
+
+* Fri Sep 28 2012 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.16.90-17
+- Release mutex before going back to wait for PI mutexes (#552960).
+
+* Tue Sep 25 2012 Jeff Law <law@redhat.com> - 2.16.90-16
+- Resync with upstream sources.
+
+* Fri Sep 21 2012 Jeff Law <law@redhat.com> - 2.16.90-15
+- Remove most of fedora-nscd patch as we no longer use the
+  old init files, but systemd instead.
+- Remove path-to-vi patch.  With the usr-move changes that
+  patch is totally unnecessary.
+- Remove i686-nopl patch.  Gas was changed back in 2011 to
+  avoid nopl.
+- Move gai-rfc1918 patch to submitted upstream status
+
+* Fri Sep 21 2012 Jeff Law <law@redhat.com> - 2.16.90-14
+- Revert patch for 816647, it's blatently broken.
+
+* Fri Sep 21 2012 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.16.90-13
+- Bring back byteswap-16.h (#859268).
+
+* Thu Sep 20 2012 Jeff Law <law@redhat.com> - 2.16.90-12
+- Revert recent upstream strstr changes (#858274)
+- Demangle function pointers before testing them (#816647)
+- Remove handling of /etc/localtime and /var/spool/postfix/etc/localtime
+  as systemd will be handling them from now on (#858735).
+
+* Fri Sep 14 2012 Jeff Law <law@redhat.com> - 2.16.90-11
+- Resync with upstream sources (#857236).
+
+* Sat Sep  8 2012 Peter Robinson <pbrobinson@fedoraproject.org> - 2.16.90-10
+- Enable ports to fix FTBFS on ARM
+
+* Wed Sep 5 2012 Jeff Law <law@redhat.com> - 2.16.90-9
+- Resync with upstream sources.
+
+* Tue Sep 4 2012 Jeff Law <law@redhat.com> - 2.16.90-8
+- Incorporate ppc64p7 arch changes (#854250)
+
+* Thu Aug 30 2012 Jeff Law <law@redhat.com> - 2.16.90-7
+- Resync with upstream sources.
+
+* Wed Aug 22 2012 Jeff Law <law@redhat.com> - 2.16.90-6
+- Resync with upstream sources.
+
+* Tue Aug 21 2012 Jeff Law <law@redhat.com> - 2.16.90-5
+- Replace manual systemd scriptlets with macroized scriptlets (#850129)
+
+* Mon Aug 20 2012 Jeff Law <law@redhat.com> - 2.16.90-4
+- Move /etc/localtime into glibc-common package since glibc-common
+  owns the scriptlets which update it.
+
+* Mon Aug 20 2012 Jeff Law <law@redhat.com> - 2.16.90-3
+- Remove obsolete patches from glibc-fedora.patch.  Explode
+  remaining patches into distinct patchfiles.  Thanks to
+  Dmitry V. Levin for identifying them!
+  Drop ia64 specific patches and specfile fragments
+
+* Wed Aug 15 2012 Jeff Law <law@redhat.com> - 2.16.90-2
+- Fix integer overflow leading to buffer overflow in strto* (#847718)
+
+* Mon Aug 13 2012 Jeff Law <law@redhat.com> - 2.16.90-1
+- Resync with upstream sources, drop obsolete patches.
+- Drop glibc-ports bits as they're part of the master
+  sources now.
+
+* Mon Aug 13 2012 Jeff Law <law@redhat.com> - 2.16-9
+- Replace patch for 179072 with official version from upstream.
+
+* Fri Aug 10 2012 Jeff Law <law@redhat.com> - 2.16-8
+- Replace patch for 789238 with official version from upstream.
+
+* Wed Jul 25 2012 Jeff Law <law@redhat.com> - 2.16-7
+- Pack IPv4 servers at the start of nsaddr_list and
+  only track the number of IPV4 servers in EXT(statp->nscounti (#808147)
+- Mark set*uid, set*gid as __wur (warn unused result) (#845960)
+
+* Wed Jul 25 2012 Jeff Law <law@redhat.com> - 2.16-6
+- Revert patch for BZ696143, it made it impossible to use IPV6
+  addresses explicitly in getaddrinfo, which in turn broke
+  ssh, apache and other code. (#808147)
+- Avoid another unbound alloca in vfprintf (#841318)
+- Remove /etc/localtime.tzupdate in lua scriptlets
+- Revert back to using posix.symlink as posix.link with a 3rd
+  argument isn't supported in the lua version embedded in rpm.
+- Revert recent changes to res_send (804630, 835090).
+- Fix memcpy args in res_send (#841787).
+
+* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.16-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Thu Jul 5 2012 Jeff Law <law@redhat.com> - 2.16-2
+- Use posix.link rather than posix.symlink in scriptlet to
+  update /etc/localtime (#837344).
+
+* Mon Jul 2 2012 Jeff Law <law@redhat.com> - 2.16-1
+- Resync with upstream glibc-2.16 release.
+
+* Fri Jun 22 2012 Jeff Law <law@redhat.com> - 2.15.90-16
+- Resync with upstream sources, drop obsolete patch.
+
+* Thu Jun 21 2012 Jeff Law <law@redhat.com> - 2.15.90-15
+- Resync with upstream sources (#834447).
+- Fix use-after-free in dcigettext.c (#816647).
+
+* Fri Jun 15 2012 Jeff Law <law@redhat.com> - 2.15.90-14
+- Resync with master.
+
+* Thu Jun 14 2012 Jeff Law <law@redhat.com> - 2.15.90-13
+- Delay setting DECIDED field in locale file structure until
+  we have read the file's data (#827510).
+
+* Mon Jun 11 2012 Dennis Gilmore <dennis@ausil.us> - 2.15.90-12
+- actually apply the arm linker hack
+
+* Mon Jun 11 2012 Dennis Gilmore <dennis@ausil.us> - 2.15.90-11
+- only deal with the arm linker compat hack on armhfp arches
+- armsfp arches do not have a linker change
+- Backward compat hack for armhf binaries.
+
+* Thu Jun  7 2012 Jeff Law <law@redhat.com> - 2.15.90-10
+- Fix parsing of /etc/sysconfig/clock when ZONE has spaces. (#828291)
+
+* Tue Jun  5 2012 Jeff Law <law@redhat.com> - 2.15.90-9
+- Resync with upstream sources, drop unnecessary patches.
+- Fix DoS in RPC implementation (#767693)
+- Remove deprecated alpha support.
+- Remove redundant hunk from patch. (#823905)
+
+* Fri Jun  1 2012 Patsy Franklin <patsy@redhat.com> - 2.15.90-8
+- Fix iconv() segfault when the invalid multibyte character 0xffff is input
+  when converting from IBM930 (#823905)
+
+* Fri Jun 1 2012 Jeff Law <law@redhat.com> - 2.15.90-7
+- Resync with upstream sources.  (#827040)
+
+* Thu May 31 2012 Patsy Franklin <patsy@redhat.com> - 2.15.90-6
+- Fix fnmatch() when '*' wildcard is applied on a file name containing
+  multibyte chars. (#819430)
+
+* Wed May 30 2012  Jeff Law <law@redhat.com> - 2.15.90-5
+- Resync with upstream sources, drop unnecessary patches.
+
+* Tue May 29 2012  Jeff Law <law@redhat.com> - 2.15.90-4
+- Build info files in the source dir, then move to objdir
+  to avoid multilib conflicts (#825061)
+
+* Fri May 25 2012  Jeff Law <law@redhat.com> - 2.15.90-3
+- Work around RPM dropping the contents of /etc/localtime
+  when it turns into a symlink with %post common script (#825159).
+
+* Wed May 23 2012  Jeff Law <law@redhat.com> - 2.15.90-2
+- Fix option rotate when one IPV6 server is enabled (#804630)
+- Reenable slow/uberslow path taps slowpow/slowexp.
+
+* Wed May 23 2012  Jeff Law <law@redhat.com> - 2.15.90-1
+- Resync with upstream sources, drop unnecessary patches.
+
+* Tue May 22 2012 Patsy Franklin <pfrankli@redhat.com> - 2.15-41
+- Fix tzdata trigger (#822200)
+- Make the symlink relative rather than linking into the buildroot (#822200).
+- Changed /etc/localtime to a symlink. 8222000 (#822200)
+
+* Tue May 15 2012 Jeff Law <law@redhat.com> - 2.15-40
+- Update to upstream patch for 806070 (#806070)
+
+* Mon May 14 2012 Jeff Law <law@redhat.com> - 2.15-39
+- Update upstream patch for AVX testing (#801650)
+
+* Fri May 11 2012 Jeff Law <law@redhat.com> - 2.15-38
+- Upstream patch to fix AVX testing (#801650)
+
+* Thu May 10 2012 Jeff Law <law@redhat.com> - 2.15-37
+- Try again to fix AVX testing (#801650)
+
+* Mon May 7 2012 Jeff Law <law@redhat.com> - 2.15-36
+- Improve fortification disabled warning.
+- Change location of dynamic linker for armhf.
+
+* Mon Apr 30 2012 Jeff Law <law@redhat.com> - 2.15-35
+- Implement context routines for ARM (#817276)
+
+* Fri Apr 13 2012 Jeff Law <law@redhat.com> - 2.15-34
+- Issue a warning if FORTIFY_CHECKING is requested, but disabled.
+
+* Thu Apr 12 2012 Jeff Law <law@redhat.com> - 2.15-33
+- Fix another unbound alloca in nscd groups (#788989)
+
+* Tue Apr 3 2012 Jeff Law <law@redhat.com> - 2.15-32
+- Fix first day of week for lv_LV (#682500)
+
+* Mon Apr 2 2012 Jeff Law <law@redhat.com> - 2.15-31
+- When retrying after main arena failure, always retry in a
+  different arena. (#789238)
+
+* Tue Mar 27 2012 Jeff Law <law@redhat.com> - 2.15-30
+- Avoid unbound alloca usage in *-crypt routines (#804792)
+- Fix data race in nscd (#806070)
+
+* Fri Mar 23 2012 Jeff Law <law@redhat.com> - 2.15-29
+- Fix typo in __nss_getent (#806403).
+
+* Wed Mar 14 2012 Jeff Law <law@redhat.com> - 2.15-28
+- Add doi_IN, sat_IN and mni_IN to SUPPORTED locals (#803286)
+- Add stap probes in slowpow and slowexp.
+
+* Fri Mar 09 2012 Jeff Law <law@redhat.com> - 2.15-27
+- Fix AVX checks (#801650)
+
+* Wed Feb 29 2012 Jeff Law <law@redhat.com> - 2.15-26
+- Set errno properly in vfprintf (#794797)
+- Don't kill application when LD_PROFILE is set. (#800224)
+
+* Wed Feb 29 2012 Jeff Law <law@redhat.com> - 2.15-25
+- Fix out of bounds memory access in resolver (#798471)
+- Always mark vDSO as used (#758888)
+
+* Fri Feb 24 2012 Jeff Law <law@redhat.com> - 2.15-24
+- Fix bogus underflow (#760935)
+- Correctly handle dns request where large numbers of A and AAA records
+  are returned (#795498)
+- Fix nscd crash when group has many members (#788989)
+
+* Mon Feb 20 2012 Jeff Law <law@redhat.com> - 2.15-23
+- Avoid "nargs" integer overflow which could be used to bypass FORTIFY_SOURCE (#794797)
+
+* Mon Feb 20 2012 Jeff Law <law@redhat.com> - 2.15-22
+- Fix main arena locking in malloc/calloc retry path (#789238)
+
+* Fri Feb 17 2012 Jeff Law <law@redhat.com> - 2.15-21
+- Correctly identify all 127.x.y.z addresses (#739743)
+- Don't assign native result if result has no associated interface (#739743)
+
+* Fri Feb 17 2012 Jeff Law <law@redhat.com> - 2.15-20
+- Ignore link-local IPV6 addresses for AI_ADDRCONFIG (#697149)
+
+* Fri Feb 17 2012 Jeff Law <law@redhat.com> - 2.15-19
+- Fix reply buffer mismanagement in resolver (#730856)
+
+* Thu Feb 16 2012 Jeff Law <law@redhat.com> - 2.15-18
+- Revert 552960/769421 changes again, still causing problems.
+- Add doi_IN (#791161)
+- Add sat_IN (#790292)
+- Add mni_IN (#790298)
+
+* Thu Feb 9 2012 Jeff Law <law@redhat.com> - 2.15-17
+- Fix lost wakeups in pthread_cond_*.  (#552960, #769421)
+- Clarify info page for snprintf (#564528)
+- Fix first_weekday and first_workday for ru_UA (#624296)
+
+* Tue Feb 7 2012 Jeff Law <law@redhat.com> - 2.15-16
+- Fix currency_symbol for uk_UA (#789209)
+- Fix weekday names in Kashmiri locale (#770439)
+
+* Tue Feb 7 2012 Jeff Law <law@redhat.com> - 2.15-15
+- Remove change for 787662, correct fix is in gcc.
+
+* Mon Feb 6 2012 Jeff Law <law@redhat.com> - 2.15-13
+- More accurately detect if we're in a chroot (#688948)
+
+* Fri Feb 3 2012 Jeff Law <law@redhat.com> - 2.15-12
+- Add fedfs to /etc/rpc (#691912)
+- Run nscd in the foreground w/ syslogging, fix systemd config (#770869)
+- Avoid mapping past end of shared object (#741105)
+- Turn off -mno-minimal-toc on PPC (#787201)
+- Remove hunk from glibc-rh657588.patch that didn't belong
+
+* Wed Feb 1 2012 Jeff Law <law@redhat.com> - 2.15-8
+- Prevent erroneous inline optimization of initfini.s on PowerPC64 (#783979)
+- Use upstream variant of fix for 740506.
+- Fix month abbreviations for zh_CN (#657588)
+
+* Sun Jan 29 2012 Jeff Law <law@redhat.com> - 2.15-7
+- Sort objects before relocations (sw#13618)
+- Fix bogus sort code that was copied from dl-deps.c.
+
+* Thu Jan 26 2012 Jeff Law <law@redhat.com> - 2.15-6
+- First argument to settimeofday can be null (#740682)
+- Add aliases for ISO-10646-UCS-2 (#697421)
+
+* Tue Jan 24 2012 Jeff Law <law@redhat.com> - 2.15-4
+- Update ports from master.
+- Fix first workday/weekday for it_IT (#622499)
+- Fix type to uint16_t based on upstream comments (729661)
+- Do not cache negative results in nscd if these are transient (#784402)
+
+* Mon Jan 23 2012 Jeff Law <law@redhat.com> - 2.15-3
+- Fix cycle detection (#729661)
+- Fix first workday/weekday for it_IT (#446078)
+- Fix first workday/weekday for ca_ES (#454629)
+
+* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.15-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Sun Jan 1 2012 Jeff Law <law@redhat.com> - 2.15-1.fc17
+- Update from master (a316c1f)
+
+* Thu Dec 22 2011 Jeff Law <law@redhat.com> - 2.14.90-26.fc17
+- Update from master (16c6f99)
+- Fix typo in recent tzfile change (#769476)
+- Make MALLOC_ARENA_MAX and MALLOC_ARENA_TEST match documentation (#740506)
+- Revert "fix" to pthread_cond_wait (#769421)
+- Extract patch for 730856 from fedora-patch into a distinct patchfile
+
+* Mon Dec 19 2011 Jeff Law <law@redhat.com> - 2.14.90-25.fc17
+- Update from master (a4647e7).
+
+* Sun Dec 18 2011 Jeff Law <law@redhat.com> - 2.14.90-24.fc16.3
+- Check values from TZ file header (#767696)
+- Handle EAGAIN from FUTEX_WAIT_REQUEUE_PI (#552960)
+- Add {dist}.#
+- Correct return value from pthread_create when stack alloction fails.
+  (#767746)
+
+* Wed Dec 7 2011 Jeff Law <law@redhat.com> - 2.14.90-23
+- Fix a wrong constant in powerpc hypot implementation (#750811)
+  #13534 in python bug database
+  #13472 in glibc bug database
+- Truncate time values in Linux futimes when falling back to utime
+
+* Mon Dec 5 2011 Jeff Law <law@redhat.com> - 2.14.90-22
+- Mark fortified __FD_ELT as extension (#761021)
+- Fix typo in manual (#708455)
+
+* Wed Nov 30 2011 Jeff Law <law@redhat.com> - 2.14.90-21
+- Don't fail in makedb if SELinux is disabled (#750858)
+- Fix access after end of search string in regex matcher (#757887)
+
+* Mon Nov 28 2011 Jeff Law <law@redhat.com> - 2.14.90-20
+- Drop lock before calling malloc_printerr (#757881)
+
+* Fri Nov 18 2011 Jeff Law <law@redhat.com> - 2.14.90-19
+- Check malloc arena atomically (BZ#13071)
+- Don't call reused_arena when _int_new_arena failed (#753601)
+
+* Wed Nov 16 2011 Jeff Law <law@redhat.com> - 2.14.90-18
+- Fix grouping and reuse other locales in various locales (BZ#13147)
+
+* Tue Nov 15 2011 Jeff Law <law@redhat.com> - 2.14.90-17
+- Revert bogus commits/rebasing of Nov 14, Nov 11 and Nov 8.  Sources
+  should be equivalent to Fedora 16's initial release.
+
+* Wed Oct 26 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.14.90-15
+- Rebuilt for glibc bug#747377
+
+* Wed Oct 19 2011 Jim Meyering <meyering@redhat.com> - 2.14.90-14
+- Revert the upstream patch that added the leaf attribute, since it
+  caused gcc -O2 to move code past thread primitives and sometimes
+  even out of critical sections.  See http://bugzilla.redhat.com/747377
+
+* Wed Oct 19 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-13
+- Update from master
+  - Fix linkage conflict with feraiseexcept (#746753)
+  - More libm optimisations
+
+* Mon Oct 17 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-12
+- Update from master
+  - Correctly handle missing initgroups database (#745675)
+  - Optimize many libm functions
+  - Optimize access to isXYZ and toXYZ tables
+  - Optimized memcmp and wmemcmp for x86-64 and x86-32
+  - Add parameter annotation to modf (BZ#13268)
+  - Support optimized isXXX functions in C++ code
+  - Check for zero size in memrchr for x86_64 (#745739)
+  - Optimized memchr, memrchr, rawmemchr for x86-32
+
+* Tue Oct 11 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-11
+- Update from master
+  - Clean up locarchive mmap reservation code
+  - Fix netname2host (BZ#13179)
+  - Fix remainder (NaN, 0) (BZ#6779, BZ#6783)
+  - S/390: Fix longlong.h inline asms for zarch
+  - Improve 64 bit memchr, memrchr, rawmemchr with SSE2
+  - Update translations
+  - Implement caching of netgroups in nscd
+  - Handle OOM in NSS
+  - Don't call ifunc functions in trace mode
+- Convert tzdata-update to lua (#729796)
+- Horrible workaround for horribly broken software (#737223)
+
+* Wed Sep 28 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-10
+- Update from master
+  - Correctly reparse group line after enlarging the buffer (#739360)
+  - Fix parse error in bits/mathinline.h with --std=c99 (#740235)
+- Update nscd service file (#740284)
+- Drop nscd init file (#740196)
+
+* Fri Sep 16 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-9
+- Update from master
+  - Define IP_MULTICAST_ALL (BZ#13192)
+  - Add fmax and fmin inlines for x86-64
+  - Avoid race between {,__de}allocate_stack and __reclaim_stacks
+    during fork (#737387)
+  - Optimized lrint and llrint for x86-64
+  - Also relocate in dependency order when doing symbol dependency
+    testing (#737459)
+  - Optimize logb code for 64-bit machines
+  - Fix jn precision (BZ#11589)
+  - Fix boundary conditions in scanf (BZ#13138)
+  - Don't lock string streams in stream cleanup code (BZ#12847)
+  - Define ELFOSABI_GNU
+  - Fix lround loss of precision
+  - Add range checking for FD_SET, FD_CLR, and FD_ISSET
+- Make sure AVC thread has capabilities
+
+* Thu Sep  8 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-8
+- Update from master
+  - Use O_CLOEXEC when loading objects and cache in ld.so (BZ#13068)
+  - Fix memory leak in case of failed dlopen (BZ#13123)
+  - Optimizations for POWER
+  - Prefer real syscalls instead of vsyscalls on x86-64 outside libc.so
+  - Add Atom-optimized strchr and strrchr for x86-64
+  - Try shell in posix_spawn* only in compat mode (BZ#13134)
+  - Fix glob.h header by removing gcc 1.x support (BZ#13150)
+  - Optimized strchr and strrchr with SSE2 on x86-32
+  - Add optimized x86 wcscmp
+  - Fixes and optimizations for 32-bit sparc fabs
+  - Fix nptl semaphore cleanup invocation
+  - Sanitize HWCAP_SPARC_* defines/usage, and add new entries
+
+* Thu Sep  1 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-7
+- Update from master
+  - Relocate objects in dependency order (#733462)
+- Avoid assertion failure when first DNS answer was empty (#730856)
+- Don't treat tls_offset == 1 as forced dynamic (#731228)
+
+* Wed Aug 24 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-6
+- Update from master
+  - Correct cycle detection during dependency sorting
+  - Use ifuncs for time and gettimeofday on x86-64
+  - Fix fopen (non-existing-file, "re") errno
+  - Fix CFI info in x86-64 trampolines for non-AVX code
+  - Build libresolv with SSP flags
+  - Avoid executable stack in makedb (#731063)
+  - Align x86 TCB to 64 bytes (cache line size), important for Atom
+
+* Mon Aug 15 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-5
+- Update from master
+  - Implement LD_DEBUG=scopes
+  - Locale-independent parsing in libintl (#726536)
+  - Fix stack alignment on x86_64 (#728762)
+  - Implement scandirat function
+
+* Tue Aug  9 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-4
+- Update from master
+  - Properly tokenize nameserver line for servers with IPv6 address
+  - Fix encoding name for IDN in getaddrinfo (#725755)
+  - Fix inline strncat/strncmp on x86
+  - Define SEEK_DATA and SEEK_HOLE
+  - Define AF_NFC and PF_NFC
+  - Update ptrace constants
+  - Add read barriers in cancellation initialization
+  - Add read barrier protecting DES initialization
+  - Fix overflow bug in optimized strncat for x86-64
+  - Check for overflows in expressions (BZ#12852)
+  - Fix check for AVX enablement (#720176, BZ#13007)
+  - Force La_x86_64_ymm to be 16-byte aligned
+  - Add const attr to gnu_dev_{major,minor,makedev}
+- Filter out GLIBC_PRIVATE symbols again
+
+* Wed Jul 20 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-3
+- Update from master
+  - S/390: Don't use r11 in INTERNAL_VSYSCALL_NCS macro
+  - Avoid warning in nscd config file parsing code
+  - Improve 64 bit strcat functions with SSE2/SSSE3
+  - Fix alloca accounting in strxfrm
+  - Avoid possible crashes in anormal nscd exits
+  - Updated Swedish and Dutch translations
+
+* Thu Jul 14 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-2
+- Update from master
+  - Generalize framework to register monitoring of files in nscd
+  - Handle ext4 in {,f}pathconf
+  - Handle Lustre filesystem (BZ#12868)
+  - Handle W; without long options in getopt (BZ#12922)
+  - Change error code for underflows in strtod (BZ#9696)
+  - Fix handling of chained netgroups
+  - Optimize long-word additions in SHA implementation
+  - Handle nscd negtimeout==0
+  - nss_compat: query NIS domain only when needed
+  - Fix robust mutex handling after fork
+  - Make sure RES_USE_INET6 is always restored
+- Add systemd configuration for nscd
+- Be more careful running build-locale-archive
+
+* Thu Jun 30 2011 Andreas Schwab <schwab@redhat.com> - 2.14.90-1
+- Update from master
+  - Fix quoting in some installed shell scripts (BZ#12935)
+  - Fix missing .ctors/.dtors lead word in soinit
+  - Improved st{r,p}{,n}cpy for SSE2 and SSSE3 on x86
+  - Avoid __check_pf calls in getaddrinfo unless really needed
+    (BZ#12907)
+  - Rate limit expensive _SC_NPROCESSORS_ONLN computation
+  - Add initgroups lookup support to getent
+  - Reenable nss_db with a completely new implementation
+  - Rewrite makedb to avoid using db library
+  - Add pldd program
+- Obsolete nss_db
+- Don't build tzdata-update and build-locale-archive statically
+
+* Tue Jun 28 2011 Andreas Schwab <schwab@redhat.com> - 2.14-4
+- Update from 2.14 branch
+  - Fix crash in GB18030 encoder (#712901)
+- Fix more bugs in GB18030 charmap
+- Don't use gethostbyaddr to determine canonical name
+
+* Tue Jun 21 2011 Andreas Schwab <schwab@redhat.com> - 2.14-3
+- Update from 2.14 branch
+  - Fix typo in recent resolver change which causes segvs (#710279)
+  - Fix memory leak in getaddrinfo (#712178)
+  - Fix <bits/mqueue2.h> for C++ (BZ#12841)
+  - Assume Intel Core i3/i5/i7 processor if AVX is available
+- Filter results from gethostbyname4_r according to request flags
+  (#711827)
+- Repair GB18030 charmap (#712901)
+- Revert "Use .machine to prevent AS from complaining about z9-109
+  instructions in iconv modules" (#711330)
+
+* Fri Jun  3 2011 Andreas Schwab <schwab@redhat.com> - 2.14-2
+- Revert "Handle DNS server failures in case of AF_UNSPEC lookups
+  correctly" (#710279)
+
+* Tue May 31 2011 Andreas Schwab <schwab@redhat.com> - 2.14-1
+- Update to 2.14 release
+  - Handle DNS server failures in case of AF_UNSPEC lookups correctly
+    (BZ#12684)
+  - Prevent loader from loading itself
+  - Restore _res correctly (BZ#12350)
+  - Interpret numeric values in shadow file as signed (BZ#11099)
+  - Recognize use-vc option in resolv.conf (BZ#11558)
+  - Mark malloc hook variables as deprecated
+  - Declare malloc hook variables as volatile (BZ#11781)
+  - Don't document si_code used for raise (BZ#11799)
+  - Fix unnecessary overallocation due to incomplete character (BZ#12811)
+  - Handle failure of _nl_explode_name in all cases
+  - Add support for time syscall in vDSO (BZ#12813)
+  - Add sendmmsg and setns syscalls
+  - Use getcpu definition from vDSO on x86-64 (BZ#12813)
+- Don't free non-malloced memory and fix memory leak (#709267)
+
+* Fri May 27 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-14
+- Update from master
+  - Fix conversion to ISO-2022-JP-2 with ISO-8859-7 designation
+    (BZ#12814)
+  - Undo accidental change in x86-64 user.h
+  - Update Japanese translation
+  - Define RLIMIT_RTTIME (BZ#12795)
+  - Update longlong.h from GCC
+  - Add a few more alloca size checks (BZ#12671)
+  - Fix flags parameter value passed to pltenter and pltexit
+  - Define CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM
+  - Always fill output buffer in XPG strerror function (BZ#12782)
+  - Nicer output for negative error numbers in strerror_r
+  - Fix CP1258 conversion (BZ#12777)
+  - Fix handling of LC_CTYPE in locale name handling (BZ#12788)
+  - Set stream errors in more cases (BZ#12792)
+  - Don't unconditionally use alloca in gaih_inet (BZ#11869)
+  - Update documentation in regex.h (BZ#11857)
+  - Prevent Altivec and VSX insns on PowerPC64 when no FPRs or VRs are
+    available
+  - Fix typo in x86-64 powl (BZ#12775)
+- Avoid overriding CFLAGS (#703880)
+
+* Wed May 18 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-13
+- Update from master
+  - Update GB18030 to 2005 version (BZ#11837)
+  - Update RE_SYNTAX*_AWK constants in regex.h
+  - Handle long variable names in putenv (BZ#11892)
+  - Fix test for error_one_per_line mode in error (BZ#12766)
+  - Cleanup x86-64 sys/user.h (BZ#11820)
+  - Several locale data updates (BZ#11987, BZ#9732, BZ#9730, BZ#4357,
+    BZ#12582)
+  - Avoid potential deadlock in mtrace (BZ#6420)
+  - Fix a few problems in fopen and freopen
+  - Provide more helpful error message in getopt (BZ#7101)
+  - Make stack canary value harder to read through read overflow (BZ#10149)
+  - Use mmap for allocation of buffers used for __abort_msg (BZ#11901)
+  - Fix handling of static TLS in dlopen'ed objects (BZ#12453)
+  - Fix initialization of optimization values for AIO (BZ#12083)
+  - Fix handling of conversion problem in CP932 module (BZ#12601)
+  - Fix potential problem with out-of-scope buffer (BZ#12626)
+  - Handle recursive calls in backtrace better (BZ#12432)
+  - Fix handling of incomplete character storage in state
+  - Fix file descriptor position after fclose (BZ#12724)
+- Reinstall NIS RPC headers
+
+* Fri May 13 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-12
+- Update from master
+  - Fix resizing table for unique symbols when adding symbol for copy
+    relocation (BZ#12511)
+  - Fix sched_setscheduler call in spawn implementation (BZ#12052)
+  - Report write error in addmnt even for cached streams (BZ#12625)
+  - Translate kernel error into what pthread_create should return
+    (BZ#386)
+  - More configurability for secondary group lookup (BZ#11257)
+  - Several locale data updates (BZ#11258, BZ#11487, BZ#11532,
+    BZ#11578, BZ#11653, BZ#11668, BZ#11945, BZ#11947, BZ#12158,
+    BZ#12200, BZ#12178, BZ#12178, BZ#12346, BZ#12449, BZ#12545,
+    BZ#12551, BZ#12611, BZ#12660, BZ#12681, BZ#12541, BZ#12711,
+    BZ#12738)
+  - Fix Linux getcwd for long paths (BZ#12713)
+  - static tls memory leak on TLS_DTV_AT_TP archs
+  - Actually undefine ARG_MAX from <linux/limits.h>
+  - Backport BIND code to query name as TLD (BZ#12734)
+  - Allow $ORIGIN to reference trusted directoreis in SUID binaries
+    (BZ #12393)
+  - Add missing {__BEGIN,__END}_DECLS to sys/sysmacros.h
+  - Report if no record is found by initgroups in nss_files
+- Never leave $ORIGIN unexpanded
+- Revert "Ignore origin of privileged program"
+- Reexport RPC interface
+
+* Thu May  5 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-11
+- Update from master
+  - Don't use removed rpc headers
+- Install rpc/netdb.h again
+
+* Wed May  4 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-10
+- Update from master
+  - ldconfig: don't crash on empty path in config file (#699784)
+  - getaddrinfo(AF_INET6) does not return scope_id info provided by
+    NSS modules (BZ#12714)
+  - Fix pathconf(_PC_BUF_SIZE) (BZ#12723)
+  - Fix getnameinfo flags parameter type (BZ#12717)
+  - Add finer grained control for initgroups lookups to NSS
+  - Use all possible bytes from fopen mode string (BZ#12685, #698025)
+  - Define initgroups callback for nss_files
+  - elf.h: Define R_ARM_IRELATIVE reloc type
+  - Fix static linking with checking x86/x86-64 memcpy (BZ#12653)
+  - Fix POWER4/POWER7 optimized strncmp to not read past differing bytes
+  - Fix FPU context handling in getcontext on x86-64 (BZ#12420)
+  - Skip extra zeroes when searching auxv on s390
+  - Obsolete RPC implementation in libc
+  - Fix memory leak in TLS of loaded objects (BZ#12650)
+  - Don't leave empty element in rpath when skipping an element
+  - Make ppc sync_file_range cancelable
+  - Maintain stack alignment in ____longjmp_chk on x86_64
+
+* Thu Apr  7 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-9
+- Update from master
+  - Fix typo in cache information table for x86-{32,64}
+  - Define CLOCK_BOOTTIME, O_PATH, AT_EMPTY_PATH
+  - Work around old buggy program which cannot cope with memcpy
+    semantics (BZ#12518)
+  - Fix visibility of declarations of wcpcpy and wcpncpy (BZ#12631)
+  - Add clock_adjtime, name_to_handle_at, open_by_handle_at, syncfs
+    syscalls
+  - Really implement fallocate{,64} and sync_file_range as
+    cancellation points
+- Enable systemtap support (#690281)
+
+* Thu Mar 24 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-8
+- Update from master
+  - Fix infinite loop (#690323)
+
+* Mon Mar 21 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-7
+- Update from master
+  - Handle page boundaries in x86 SSE4.2 strncmp (BZ#12597)
+  - Implement x86 cpuid handling of leaf4 for cache information (BZ#12587)
+  - Check size of pattern in wide character representation in fnmatch
+    (BZ #12583)
+  - Remove __restrict quals from wmemcmp prototype
+  - Fix copy relocations handling of unique objects (BZ#12510)
+- ldd: never run file directly
+- Ignore rpath elements containing non-isolated use of $ORIGIN when
+  privileged
+- Don't leave empty element in rpath when skipping the first element
+- Revert "Don't crash when dependencies are missing" (#688990)
+
+* Mon Mar  7 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-6
+- Update from master
+  - Fix loading first object along a path when tracing
+  - Enable SSE2 memset for AMD'supcoming Orochi processor
+  - Don't read past end of buffer in fmemopen
+- Revert broken changes (#682307)
+
+* Wed Mar  2 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-5
+- Update from master
+  - Fix memory leak in dlopen with RTLD_NOLOAD (BZ#12509)
+  - Don't crash when dependencies are missing (BZ#12454)
+  - Fix allocation when handling positional parameters in printf
+    (BZ#12445)
+  - Fix two printf handler issues
+- Fix false assertion (BZ#12454, #673014)
+
+* Mon Feb 14 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-4
+- Update from master
+  - Update sysdeps/unix/sysv/linux/sparc/bits/socket.h
+  - Synchronize generic bits/sched.h cpu_set_t with Linux implementation
+  - Schedule nscd cache pruning more accurately from re-added values
+  - Fix passing symbol value to pltexit callbacks when ld.so auditing
+  - Fix range error handling in sgetspent
+- Revert "Fix ordering of DSO constructors and destructors" (#673014)
+- Create debuginfo-common on biarch archs
+- Reinstall assembler workaround.
+- Replace setuid by file capabilities (#646469)
+
+* Tue Jan 25 2011 Andreas Schwab <schwab@redhat.com> - 2.13.90-1
+- Update from master
+  - Fix ordering of DSO constructors and destructors (BZ#11724)
+- Remove no longer needed assembler workaround
+
+* Tue Jan 18 2011 Andreas Schwab <schwab@redhat.com> - 2.13-1
+- Update to 2.13 release
+  - Define AT_NO_AUTOMOUNT
+  - Define MADV_HUGEPAGE and MADV_NOHUGEPAGE
+  - Add definitions for new socket protocols
+  - Signal temporary host lookup errors in nscd as such to the
+    requester (BZ#6812)
+  - Change setgroups to affect all the threads in the process
+    (BZ#10563)
+  - FIx handling of unterminated [ expression in fnmatch (BZ#12378)
+  - Relax requirement on close in child created by posix_spawn
+  - Fix handling of missing syscall in Linux mkdirat (BZ#12397)
+  - Handle long lines in host lookups in the right place (BZ#10484)
+  - Fix assertion when handling DSTs during auditing
+  - Fix alignment in x86 destructor calls
+  - Fix grouping when rounding increases number of integer digits
+    (BZ#12394)
+  - Update Japanese translations
+  - Fix infloop on persistent failing calloc in regex (BZ#12348)
+  - Use prlimit64 for 32-bit [gs]etrlimit64 implementation (BZ#12201)
+  - Change XPG-compliant strerror_r function to return error code
+    (BZ#12204)
+  - Always allow overwriting printf modifiers etc.
+  - Make PowerPC64 default to nonexecutable stack
+
+* Tue Dec 14 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-21
+- Revert bogus change
+
+* Mon Dec 13 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-20
+- Update from master
+  - Declare wcpcpy and wcpncpy only under _GNU_SOURCE
+  - Fix use of restrict in wchar.h and string.h
+  - Fix race in qsort_r initialization (BZ#11655)
+  - Don't ignore zero TTL in DNS answers
+  - Allow aux_cache_file open()ing to fail silently even in the chroot
+    mode (BZ#11149)
+  - Fix multiple nss_compat initgroups() bugs (BZ#10085)
+  - Define MAP_HUGETLB and SWAP_FLAG_DISCARD
+- Remove .UTF-8 suffix from locale names when it is the only supported
+  codeset (#657556)
+- Don't ignore $ORIGIN in libraries
+
+* Fri Nov 12 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-19
+- Update from master
+  - Fix memory leak in fnmatch
+  - Support Intel processor model 6 and model 0x2c
+  - Fix comparison in sqrtl for IBM long double
+  - Fix one exit path in x86-64 SSE4.2 str{,n}casecmp (BZ#12205, #651638)
+  - Fix warnings in __bswap_16 (BZ#12194)
+  - Use IFUNC on x86-64 memset
+  - Power7-optimized mempcpy
+  - Handle uneven cache size in 32bit SSE2 memset (BZ#12191)
+  - Verify in ttyname that the symlink is valid (BZ#12167)
+  - Update Danish translations
+  - Fix concurrency problem between dl_open and dl_iterate_phdr
+  - Fix x86-64 strchr propagation of search byte into all bytes of SSE
+    register (BZ#12159)
+  - Fix perturbing in malloc on free (BZ#12140)
+  - PPC/A2 optimized memcpy function
+  - Add C99 FP_FAST_FMA{,F,L} macros to <math.h>
+- Check that the running kernel is new enough (#649589)
+
+* Fri Oct 22 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-18
+- Require suid bit on audit objects in privileged programs (CVE-2010-3856)
+
+* Tue Oct 19 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-17
+- Update from master
+  - Fix some fma issues, implement fmal (BZ#3268, #43358)
+  - Expect PLT call to _Unwind_Find_FDE on s390*-linux
+- Never expand $ORIGIN in privileged programs (#643306, CVE-2010-3847)
+
+* Thu Oct 14 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-16
+- Update from master
+  - Implement accurate fma (BZ#3268, #43358)
+  - Fix alignment of AVX save area on x86-64 (BZ#12113)
+  - Fix regex memory leaks (BZ#12078)
+  - Improve output of psiginfo (BZ#12107, BZ#12108)
+  - Don't return NULL address in getifaddrs (BZ#12093)
+  - Fix strstr and memmem algorithm (BZ#12092, #641124)
+- Don't discard result of decoding ACE if AI_CANONIDN (#636642)
+- Remove /etc/gai.conf from glibc-common and mark it %%ghost in glibc
+- Require exact glibc version in nscd
+
+* Mon Oct  4 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-15
+- Update from master
+  - Handle large requests in debugging hooks for malloc (BZ#12005)
+  - Fix handling of remaining bytes in buffer for strncmp and
+    strncasecmp (BZ#12077)
+  - Handle cgroup and btrfs filesystems in statvfs
+  - S/390: Fix highgprs check in startup code (BZ#12067)
+  - Properly convert f_fsid in statvfs (BZ#11611)
+
+* Tue Sep 28 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-14
+- Don't try to write to _rtld_global_ro after performing relro
+  protection (#638091)
+
+* Mon Sep 27 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-13
+- Update from master
+  - Add two forgotten licence exceptions
+  - getdents64 fallback d_type support
+  - Move freeres function from ld.so to libc.so
+  - Undo feature selection for ftruncate (BZ#12037)
+  - Fix namespace pollution in pthread_cleanup_push
+  - Fix limit detection in x86-64 SSE2 strncasecmp (#632560)
+  - Add support for fanotify_mark on sparc32 and s390
+  - Fix register conflict in s390 ____longjmp_chk (#629970)
+  - Don't try to free rpath strings allocated during startup (#629976)
+  - Actually make it possible to user the default name server
+- Fix memory leak on init/fini dependency list (#632936)
+- Fix handling of collating symbols in regexps (BZ#11561)
+- Don't parse %%s format argument as multibyte string (BZ#6530)
+- Fix overflow in nss files parser
+- Fix spurious nop at start of __strspn_ia32
+
+* Wed Sep 15 2010 Dennis Gilmore <dennis@ausil.us> - 2.12.90-12
+- dont build sparcv9v and sparc64v anymore
+
+* Mon Sep 13 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-11
+- Update from master
+  - Fix _FORITY_SOURCE version of longjmp for Linux/x86-64 (BZ#11968)
+- Work around shortest-stem feature in make 3.82+
+
+* Mon Sep  6 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-10
+- Update from master
+  - Remove invalid iconv aliases (BZ#11979)
+  - Update x86-64 mpn routines from GMP 5.0.1
+  - Fix array overflow in floating point parser (BZ#7066)
+  - Support fanotify_mark syscall on powerpc32
+  - Unroll x86-64 strlen
+  - Unroll 32bit SSE strlen and handle slow bsf
+  - Missing server address again leads to localhost being used (BZ#10851)
+- Revert last change
+- Remove or don't install unpackaged files for auxarches
+
+* Sat Sep 04 2010 Dennis Gilmore <dennis@ausil.us> - 2.12.90-9
+- disable unpackaged file check on auxarches
+
+* Mon Aug 23 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-8
+- Update from master
+  - Fix static strspn on x86 (#624852)
+  - Various POWER7 optimized string functions
+  - Fix x86 pthread_cond_signal() FUTEX_WAKE_OP fallback
+  - Add optimized strncasecmp versions for x86-64
+  - PowerPC64 ABI fixes
+  - Properly quote output of locale (BZ#11904)
+  - f_flags in statfs implementation
+  - Add support for fanotify_init and fanotify_mask syscalls
+  - Add support for prlimit and prlimit64
+  - Fix IPTOS_CLASS definition (BZ#11903)
+  - Avoid too much stack use in fnmatch (BZ#11883)
+  - x86: Add support for frame pointer less mcount
+- Disable asynchronous-unwind-tables during configure run
+
+* Mon Aug  2 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-7
+- Update from master
+  - Add optimized x86-64 implementation of strnlen and strcaecmp
+  - Document M_PERTURB
+  - Fix vDSO synthetic hwcap handling so they are not masked out from
+    ld.so.cache matching
+  - POWER6/7 optimizations for copysign
+- Build with ports addon on alpha and armv5tel
+- Add conflict with kernel < 2.6.32 (#619538)
+- Switch to xz compressed tar files
+- build-locale-archive: process only directories matching *_*
+
+* Wed Jul 21 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-6
+- Bump minimum kernel version to 2.6.32
+
+* Mon Jul 12 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-5
+- Update from master
+  - Don't pass NULL occation to dl_signal_cerror
+  - Implement _PC_PIPE_BUF.
+- Add glibc-ports tarball
+
+* Fri Jul  2 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-4
+- Update from master
+  - Work around kernel rejecting valid absolute timestamps
+  - Improve 64bit memcpy/memmove for Atom, Core 2 and Core i7
+  - Fix error handling in Linux getlogin*
+- Workaround assembler bug sneaking in nopl (#579838)
+- Fix scope handling during dl_close
+- Fix setxid race handling exiting threads
+
+* Tue Jun 15 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-3
+- Update from master
+  - Power7 string compare optimizations
+  - Properly resize buffer in NIS initgroups
+  - Define F_SETPIPE_SZ and F_GETPIPE_SZ
+  - Fix more C++ incompatibility problems in headers
+- Properly set __libc_multiple_libcs
+- Don't assume AT_PAGESIZE is always available (#597578)
+- Don't call uname or getrlimit in libpthread init function (#579086)
+- Mark /etc/rpc as %%config (#587050)
+
+* Mon May 31 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-2
+- Update from master
+  - Small fix to POWER7 32-bit memcpy
+  - Correct x86 CPU family and model check (BZ#11640, #596554)
+  - Fix iov size in SH register_dump
+  - Don't crash on unresolved weak symbol reference
+  - Implement recvmmsg also as socketcall
+  - sunrpc: Fix spurious fall-through
+  - Make <sys/timex.h> compatible with C++ (#593762)
+- Fix users and groups creation in nscd %%post script
+
+* Wed May 19 2010 Andreas Schwab <schwab@redhat.com> - 2.12.90-1
+- Update from master
+  - POWER7 optimized memset
+  - Fix typo in es_CR locale
+  - Enable IDN support in getent
+  - Fix race in free sanity check
+  - Fix lookup of collation sequence value during regexp matching
+  - Fix name of tt_RU.UTF-8@iqtelif locale (#589138)
+  - Handle too-small buffers in Linux getlogin_r (BZ#11571, #589946)
+
+* Tue May  4 2010 Roland McGrath <roland@redhat.com> - 2.12-1
+- Update to 2.12 release.
+  - Fix ldconfig chroot handling.
+  - Don't deadlock in __dl_iterate_phdr while (un)loading objects.
+  - Fix handling of newline in addmntent.
+  - Fix AIO when thread creation failed.
+
+* Fri Apr 16 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-20
+- Update from master
+  - Fix bugs in x86-32 strcmp-sse4.S and strcmp-ssse3.S
+  - Add x86-32 FMA support
+  - Don't crash in trace mode when dependencies are missing
+  - x86-64 SSE4 optimized memcmp
+  - Fix makecontext on s390/s390x
+
+* Tue Apr 13 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-19
+- Avoid multiarch memcmp in tzdata-update (#581677)
+
+* Mon Apr 12 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-18
+- Update from master
+  - Implement interfaces to set and get names of threads (BZ#11390)
+  - Locale data updates (BZ#10824, BZ#10936, BZ#11470, BZ#11471)
+  - Print reload count in nscd statistics (BZ#10915)
+  - Fix reading loginuid file in getlogin{,_r}
+  - Fix fallocate error return on i386
+  - Fix cproj implmentation (BZ#10401)
+  - Fix getopt handing (BZ#11039, BZ#11040, BZ#11041)
+  - Implement new mode for NIS passwd.adjunct.byname table (BZ#11134)
+  - Obey LD_HWCAP_MASK in ld.so.cache lookups
+
+* Tue Apr  6 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-17
+- Update from master
+  - Locale data updates (BZ#11007, BZ#11258, BZ#11272, BZ#10554)
+  - Handle DNS timeouts in old-style lookup code (BZ#11010)
+  - Fix aux cache handling in ldconfig with chroot (BZ#11149)
+  - Fix printing error messages in getopt (BZ#11043)
+  - Declare iruserok and iruserok_af (BZ#11070)
+  - Fix option aliasing in argp (BZ#11254)
+  - Handle POSIX-compliant errno value of unlink in remove (BZ#11276)
+  - Fix definition and testing of S_ISSOCK (BZ#11279)
+  - Fix retrieving of kernel header version (BZ#11287)
+  - Fix concurrent handling of __cpu_features (BZ#11292)
+  - Handle unnecessary padding in getdents64 (BZ#11333)
+  - Fix changes to interface list during getifaddrs calls (BZ#11387)
+  - Missing memory barrier in DES initialization (BZ#11449)
+  - Fix spurious UNAVAIL status is getaddrinfo
+  - Add support for new clocks (BZ#11389)
+  - Fix Linux getlogin{_r,} implementation
+  - Fix missing zero-termination in cuserid (BZ#11397)
+  - Fix glob with empty pattern
+  - Fix handling of STB_GNU_UNIQUE in LD_TRACE_PRELINKING
+  - Unify wint_t handling in wchar.h and wctype.h (BZ#11410)
+  - Implement handling of libc ABI in ELF header
+  - Don't underestimate length of DST substitution in rpath
+  - Power7-optimized 64-bit and 32-bit memcpy
+- Assign global scope to RFC 1918 addresses (#577626)
+
+* Thu Mar 18 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-16
+- Fix SSSE3 memcmp (#574210)
+
+* Tue Mar  9 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-15
+- Update from master
+  - sparc64: Fix handling of R_SPARC_TLS_LE_* relocations (#571551)
+  - Handle ext4 and logfs in statvfs functions
+  - Fix setxid race with thread creation
+  - Pass -mtune=i686 to assembler when compiling for i686
+  - Fix R_X86_64_PC32 overflow detection
+  - Fix msgrcv on sparc64
+  - Fix unwind info in x86 strcmp-sse4.S (BZ#11332)
+  - sparc: Add multiarch support for memset/bzero/memcpy
+- Remove directories owned by filesystem (#569414)
+- Add %%ghost /etc/gai.conf to glibc-common (#567748)
+
+* Tue Feb 23 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-14
+- Update from master
+  - Sparc updates
+- Fix SSSE3 memcpy (#556584)
+
+* Mon Feb 22 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-13
+- Update from master
+  - Use CPUID_OFFSET instead of FEATURE_OFFSET
+  - Add 32bit memcmp/strcmp/strncmp optimized for SSSE3/SSS4.2
+  - Fix file descriotor leak in nftw with FTW_CHDIR (BZ#11271)
+  - Add Sparc STT_GNU_IFUNC support
+  - Add power7-optimized classification functions
+- Reapply "Optimize 32bit memset/memcpy with SSE2/SSSE3."
+- Use unsigned comparison in sse memcpy/memset
+
+* Mon Feb  8 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-12
+- Update from master
+  - Update constants in <sys/mount.h> for current kernels (#11235)
+  - Fix endless loop with invalid /etc/shells file (#11242)
+  - Fix sorting of malayalam letter 'na' (#10414)
+  - Add kok_IN locale
+  - Use common collation data in as_IN locale
+  - Avoid alloca in setenv for long strings
+- Use shared mapping to reserve memory when creating locale archive (#10855)
+- Fix fstat on Linux/sparc64 (#11155)
+
+* Mon Feb  1 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-11
+- Update from master
+  - Fix error checking in iconv (#558053)
+  - Don't map U00DF to U1E9E in toupper table
+  - _nl_load_locale() incorrectly handles mmap() failures (BZ#11200)
+  - Fix various issues in regex matcher (BZ#11183, BZ#11184, BZ#11185,
+    BZ#11186, BZ#11187, BZ#11188, BZ#11189, BZ#11190, BZ#11191,
+    BZ#11192, BZ#11193)
+
+* Tue Jan 19 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-10
+- Update from master
+  - Fix ____longjmp_chk for s390/s390x
+  - Remove duplicate definitions of O_DSYNC and O_RSYNC for Linux/sparc
+  - Ignore negative dynamic entry types (#546890)
+  - Fix pthread_cond_*wait with requeue-PI on i386 (#548989)
+  - Fix _XOPEN_SOURCE_EXTENDED handling
+- Revert "Optimize 32bit memset/memcpy with SSE2/SSSE3."
+
+* Fri Jan 15 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-9
+- Update from master.
+  - Define IPTOS_CLASS_* macros according to RFC 2474 (BZ#11027)
+  - Always use IPv4 sockets for IPv4 addresses (BZ#11141)
+  - regcomp.c: do not ignore memory allocation failure (BZ#11127)
+  - Fix malloc_info without prior allocations (BZ#11126)
+  - Optimize 32bit memset/memcpy with SSE2/SSSE3
+  - Relax feature tests in headers
+
+* Tue Jan 12 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-8
+- Update from master.
+  - More POSIX conformance fixes.
+
+* Mon Jan 11 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-7
+- Fix build failure.
+
+* Mon Jan 11 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-6
+- Update from master.
+  - POSIX conformance fixes (BZ#11125).
+
+* Mon Jan  4 2010 Andreas Schwab <schwab@redhat.com> - 2.11.90-5
+- Update from master.
+  - Additional setcontext(), etc. conformance tests (BZ#11115).
+  - Handle AT_FDCWD in futimens (BZ#10992).
+  - Update poll.h header for POSIX 2008 (BZ#11093).
+  - Avoid ELF lookup race.
+
+* Mon Dec 14 2009 Andreas Schwab <schwab@redhat.com> - 2.11.90-4
+- Update from master.
+  - Add Requeue-PI support for x86 arch.
+  - Redefine O_SYNC and O_DSYNC to match 2.6.33+ kernels.
+  - Fix a few error cases in *name4_r lookup handling (BZ#11000).
+  - Fix kernel version check in recent ptsname change (BZ#11046).
+  - Add more warnings to exec functions (BZ#11056).
+  - Add recvmmsg interface.
+  - Define SCHED_IDLE and SCHED_RESET_ON_FORK for Linux.
+
+* Mon Nov 30 2009 Andreas Schwab <schwab@redhat.com> - 2.11.90-3
+- Update from master.
+  - Fix infloop in __pthread_disable_asynccancel on x86_64 (#537690).
+  - Prevent unintended file desriptor leak in grantpt (#530558).
+  - Fix startup to security-relevant statically linked binaries (#528631).
+- Re-install CFI in x86/x86_64 clone (#491542).
+
+* Tue Nov 24 2009 Andreas Schwab <schwab@redhat.com> - 2.11.90-2
+- Update from master.
+  - Define week, first_weekday, and first_workday for en_DK locale (#525126).
+  - Use struct timespec for timestamps in struct stat also if
+    __USE_XOPEN2K8 (#539870).
+  - Fix week information for nl_NL locale (#499748).
+  - Update ntp_gettime for Linux (#479558).
+  - Fix getwc* and putwc* on non-wide streams (BZ#10958).
+  - Avoid warnings in CPU_* macros when using const bitsets (BZ#10918).
+  - Handle LC_GLOBAL_LOCALE in duplocale (BZ#10969).
+  - Fix _NC_LOCALE_NAME definition (BZ#10968).
+  - Add missing Linux MADV_* definitions (BZ#10972).
+  - Add support for new Linux error ERFKILL (BZ#10939).
+- Enable multi-arch support on ppc and ppc64.
+
+* Thu Nov 12 2009 Andreas Schwab <schwab@redhat.com> - 2.11.90-1
+- Update from master.
+
+* Thu Nov  5 2009 Andreas Schwab <schwab@redhat.com> - 2.11-2
+- Fix readahead on powerpc32.
+- Fix R_PPC64_{JMP_IREL,IRELATIVE} handling.
+- Fix preadv, pwritev and fallocate for -D_FILE_OFFSET_BITS=64 (#533063).
+
+* Mon Nov  2 2009 Andreas Schwab <schwab@redhat.com> - 2.11-1
+- Update to 2.11 release.
+- Disable multi-arch support on PowerPC again since binutils is too old.
+- Fix crash in tzdata-update due to use of multi-arch symbol (#532128).
+
+* Fri Oct 30 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-27
+- Update from master.
+  - Fix races in setXid implementation (BZ#3270).
+  - Implement IFUNC for PPC and enable multi-arch support.
+  - Implement mkstemps/mkstemps64 and mkostemps/mkostemps64 (BZ#10349).
+  - Fix IA-64 and S390 sigevent definitions (BZ#10446).
+  - Fix memory leak in NIS grp database handling (BZ#10713).
+  - Print timestamp in nscd debug messages (BZ#10742).
+  - Fix mixing IPv4 and IPv6 name server in resolv.conf.
+  - Fix range checks in coshl.
+  - Implement SSE4.2 optimized strchr and strrchr.
+  - Handle IFUNC symbols in dlsym (#529965).
+  - Misc fixes (BZ#10312, BZ#10315, BZ#10319, BZ#10391, BZ#10425,
+    BZ#10540, BZ#10553, BZ#10564, BZ#10609, BZ#10692, BZ#10780,
+    BZ#10717, BZ#10784, BZ#10789, BZ#10847
+- No longer build with -fno-var-tracking-assignments.
+
+* Mon Oct 19 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-26
+- Update from master.
+  - Add ____longjmp_chk for sparc.
+- Avoid installing the same libraries twice.
+
+* Mon Oct 12 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-25
+- Update from master
+  - Fix descriptor leak when calling dlopen with RTLD_NOLOAD (#527409).
+  - Fix week-1stday in C locale.
+  - Check for integer overflows in formatting functions.
+  - Fix locale program error handling (#525363).
+
+* Mon Sep 28 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-24
+- Update from master.
+  - Fix missing reloc dependency (#517001).
+
+* Mon Sep 21 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-23
+- Update from master.
+
+* Mon Sep 14 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-22
+- Update from master.
+  - Fix endless loop in localedef.
+  - Fix __longjmp_chk on s390/s390x.
+- Fix exit codes in nscd start script (#521848).
+- Build with -fno-var-tracking-assignments for now (#523172).
+
+* Mon Sep  7 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-21
+- Update from master.
+  - Fix strstr/strcasestr on i386 (#519226).
+
+* Thu Sep  3 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-20
+- Update from master.
+  - Fix strstr/strcasestr/fma/fmaf on x86_64 (#519226).
+  - Fix lookup of group names in hesiod initgroups (#520472).
+
+* Wed Sep  2 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-19
+- Update from master.
+  - Fix x86_64 bits/mathinline.h for -m32 compilation.
+
+* Tue Sep  1 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-18
+- Update from master.
+  - fix parse error in <bits/mathinline.h> (#520209).
+
+* Thu Aug 27 2009 Roland McGrath <roland@redhat.com> - 2.10.90-17
+- Update from master.
+
+* Wed Aug 26 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-16
+- Update from master.
+  - handle AVX saving on x86-64 in interrupted symbol lookups (#519081).
+
+* Mon Aug 24 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-15
+- Update from master.
+  - fix fortify failure with longjmp from alternate stack (#512103).
+- Add conflict with prelink (#509655).
+
+* Mon Aug 17 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-14
+- Update from master.
+  - fix pthread_cond_signal (#516469)
+
+* Mon Aug 10 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-13
+- Update from master.
+  - fix rehashing of unique symbols (#515677)
+- Fix spurious messages with --excludedocs (#515948)
+
+* Mon Aug  3 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-12
+- Update from master.
+  - fix fortify failure with longjmp from alternate stack (#512103)
+
+* Thu Jul 30 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-11
+- Update from master.
+- Don't package debuginfo files in glibc-devel.
+
+* Tue Jul 28 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-10
+- Update from master.
+  * fix memory ordering in pthread_mutex_unlock (BZ#10418)
+  * implement RES_USE_DNSSEC option in resolver (#205842)
+  * fix hang in ldd -r (#513945)
+
+* Mon Jul 27 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-9
+- Update from master.
+
+* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.10.90-8.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Fri Jul 24 2009 Jakub Jelinek <jakub@redhat.com> - 2.10.90-7.1
+- Fix up pthread_cond_timedwait on x86_64 with old kernels.
+
+* Thu Jul 23 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-7
+- Update from master.
+- Build with -DNDEBUG unless using a prerelease.
+
+* Thu Jul 23 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-6
+- Rebuilt with binutils-2.19.51.0.14-29.fc12 to fix static binaries
+
+* Wed Jul 22 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-5
+- Update from master.
+- Undefine __i686 on x86 to fix build.
+
+* Mon Jul 20 2009 Andreas Schwab <schwab@redhat.com> - 2.10.90-4
+- Update from master.
+- Don't build separate i686 package.
+
+* Wed Jul  8 2009 Andreas Schwab <schwab@redhat.com> 2.10.90-3
+- Reenable setuid on pt_chown.
+
+* Thu Jul  2 2009 Andreas Schwab <aschwab@redhat.com> 2.10.90-2
+- Update from master.
+
+* Fri Jun 26 2009 Andreas Schwab <aschwab@redhat.com> 2.10.90-1
+- Update from master.
+- Enable multi-arch support on x86/x86-64.
+- Add requires glibc-headers to glibc-devel (#476295).
+- Implement second fallback mode for DNS requests (#505105).
+- Don't generate invalid POSIX TZ string for Asia/Dhaka timezone (#506941).
+- Allow backtrace through __longjmp_chk on powerpc.
+
+* Fri May 22 2009 Jakub Jelinek <jakub@redhat.com> 2.10.1-2
+- fix accept4 on architectures other than i?86/x86_64
+- robustify nscd client code during server GC
+- fix up nscd segfaults during daemon shutdown
+- fix memchr on ia64 (BZ#10162)
+- replace the Sun RPC license with the BSD license, with the explicit
+  permission of Sun Microsystems
+- fix up powerpc long double errno reporting
+
+* Sun May 10 2009 Jakub Jelinek <jakub@redhat.com> 2.10.1-1
+- fix up getsgent_r and getsgnam_r exports on i?86 and ppc
+
+* Sat May  9 2009 Jakub Jelinek <jakub@redhat.com> 2.10-2
+- update from trunk
+  - glibc 2.10 release
+  - fix memchr on x86_64 (#499689)
+
+* Mon Apr 27 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-22
+- update from trunk
+  - further localedef fixes
+- fix build-locale-archive
+
+* Fri Apr 24 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-21
+- update from trunk
+  - fix localedef
+  - fix SHIFT_JIS iconv EILSEQ handling (#497267)
+  - misc fixes (BZ#10093, BZ#10100)
+
+* Fri Apr 24 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-20
+- update from trunk
+  - fix p{read,write}v{,64} (#497429, #497434)
+  - fix strfmon (#496386)
+
+* Thu Apr 16 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-19
+- update from trunk
+  - fix dlopen from statically linked binaries (#495830)
+
+* Thu Apr 16 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-18
+- update from trunk
+  - fix fallocate
+
+* Wed Apr 15 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-17
+- update from trunk
+  - if threads have very small stack sizes, use much smaller buffer
+    in __get_nprocs when called from within malloc (#494631)
+
+* Tue Apr 14 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-16
+- update from trunk
+
+* Thu Apr  9 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-15
+- rebuilt with fixed gcc to avoid miscompilation of i586 memmove
+- reenable experimental malloc again
+
+* Wed Apr  8 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-14
+- update from trunk
+- temporarily disable experimental malloc
+
+* Tue Apr  7 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-13
+- update from trunk
+  - fix strverscmp (#494457)
+- configure with --enable-nss-crypt
+
+* Wed Apr  1 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-12
+- update from trunk
+- configure with --enable-experimental-malloc
+
+* Fri Mar 20 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-11
+- update from trunk
+  - POSIX 2008 prototype adjustments for scandir{,64}, alphasort{,64} and
+    versionsort{,64}
+  - fix libthread_db (#491197)
+
+* Tue Mar 10 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-10
+- update from trunk
+  - fix atexit/__cxa_atexit
+
+* Mon Mar  9 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-9
+- update from trunk
+  - POSIX 2008 support: -D_XOPEN_SOURCE=700 and -D_POSIX_C_SOURCE=200809L
+- move libnldbl_nonshared.a on ppc*/s390*/sparc* back to glibc-devel
+
+* Fri Feb 27 2009 Roland McGrath <roland@redhat.com> - 2.9.90-8.1
+- fix libthread_db (#487212)
+
+* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.9.90-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Wed Feb 18 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-7
+- update from trunk
+- adjust for i586 + i686 from i386 + i686 build
+- split static libraries into glibc-static subpackage
+- ld -r the whole libpthread.a together to avoid endless issues with
+  -static ... -lpthread
+- require 2.6.18 and later kernel
+
+* Wed Feb  4 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-3
+- update from trunk
+  - ISO C++ compliant strchr etc. with GCC 4.4+
+  - AT_RANDOM support
+
+* Thu Jan  8 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-2
+- update from trunk
+
+* Fri Jan  2 2009 Jakub Jelinek <jakub@redhat.com> 2.9.90-1
+- update from trunk (#478314)
+
+* Mon Dec  8 2008 Jakub Jelinek <jakub@redhat.com> 2.9-3
+- temporarily disable _nss_dns_gethostbyname4_r (#459756)
+- NIS hostname lookup fixes (#473073, #474800, BZ#7058)
+- fix unsetenv (#472941)
+
+* Thu Nov 13 2008 Jakub Jelinek <jakub@redhat.com> 2.9-2
+- glibc 2.9 release
+- fix CPU_ALLOC_SIZE on 32-bit arches (BZ#7029)
+
+* Wed Nov 12 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-17
+- update from trunk
+  - don't abort on broken DNS replies (#469299, BZ#7009)
+  - misc fixes (BZ#6966, BZ#7008, BZ#6955, BZ#6843)
+
+* Fri Oct 31 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-16
+- update from trunk
+  - further resolver fixes
+  - another dynamic TLS handling fix (#469263)
+  - misc fixes (BZ#6867, BZ#6875, BZ#6919, BZ#6920, BZ#6942, BZ#6947,
+		BZ#6968, BZ#6974, BZ#6980, BZ#6995)
+- rebuild with newer rpm to avoid stripping
+  shared libraries when they shouldn't be (#468129)
+
+* Tue Oct 28 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-15
+- update from trunk
+  - __libc_res_nquery fixes (#466786)
+
+* Sun Oct 19 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-14
+- update from trunk
+  - fix dynamic TLS handling (#467309)
+  - fix sys/signalfd.h for C++ (#467172)
+  - fix sprof (#458861)
+  - fix _mcount and socket syscalls on s390x (#464146)
+  - try harder to allocate memory in valloc and pvalloc (#461481)
+- fix power6 32-bit libs (#467311)
+
+* Fri Oct 10 2008 Dennis Gilmore <dennis@ausil.us> 2.8.90-13
+- apply sparcv9v memset patch from jakub and davem
+
+* Fri Aug 29 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-12
+- update from trunk
+  - revert origin changes (#457849)
+  - use MAP_STACK for thread stacks
+  - misc fixes (BZ#6845, BZ#6544, BZ#6634, BZ#6589, BZ#6790, BZ#6791,
+    BZ#6824)
+  - power7 bits (BZ#6817)
+  - fix expm1 on i?86/x86_64 (#43354, BZ#5794)
+
+* Sat Aug  2 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-11
+- update from trunk
+  - fix non-absolute $ORIGIN handling (#457560)
+  - exported some further libresolv APIs (#453325)
+  - misc fixes
+
+* Tue Jul 29 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-10
+- update from trunk
+  - resolver fixes
+  - misc fixes (BZ#6771, BZ#6763, BZ#6698, BZ#6712)
+  - s390{,x} utmp/utmpx bi-arch support (BZ#6724)
+  - popen "e" flag
+- fr_FR locale changes reenabled
+
+* Wed Jul 16 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-9
+- update from trunk
+  - fix unbuffered vfprintf if writing to the stream fails (#455360)
+  - remove useless "malloc: using debugging hooks" message (#455355)
+  - nscd fixes
+  - fix resolver alignment issues (#454500)
+  - fix setvbuf (BZ#6719)
+
+* Thu Jul  3 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-8
+- update from trunk
+  - watch even resolv.conf in nscd using inotify
+  - some nscd fixes
+
+* Fri Jun 13 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-7
+- update from trunk
+  - avoid *lround* on ppc* clobbering cr3/cr4 registers (#450790)
+  - further nscd fixes (#450704)
+  - use inotify in nscd to watch files
+
+* Thu Jun 12 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-6
+- update from trunk
+  - nscd fixes (#450704)
+  - fix getservbyport (#449358)
+  - fix regexp.h (#446406)
+  - avoid crashing on T_DNAME in DNS responses (#450766)
+
+* Sun May 25 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-5
+- update from trunk
+
+* Tue May 20 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-4
+- further getaddrinfo and nscd fixes
+
+* Sun May 18 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-3
+- getaddrinfo and nscd fixes
+- reenable assertion checking in rawhide
+
+* Fri May 16 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-2
+- fix getaddrinfo (#446801, #446808)
+
+* Thu May 15 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-1
+- update to trunk
+  - O(n) memmem/strstr/strcasestr
+  - i386/x86_64 TLS descriptors support
+  - concurrent IPv4 and IPv6 DNS lookups by getaddrinfo
+
+* Mon May  5 2008 Jakub Jelinek <jakub@redhat.com> 2.8-3
+- don't run telinit u in %%post if both /dev/initctl and
+  /sbin/initctl exist (#444978)
+- workaround GCC ppc64 miscompilation of c{log{,10},acosh,atan}l
+  (#444996)
+
+* Wed Apr 30 2008 Jakub Jelinek <jakub@redhat.com> 2.8-2
+- fix nscd races during GC (BZ#5381)
+- rebuilt with fixed GCC to fix regex miscompilation on power6
+- SPARC fixes
+
+* Sat Apr 12 2008 Jakub Jelinek <jakub@redhat.com> 2.8-1
+- 2.8 release
+
+* Fri Apr 11 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-16
+- update to trunk
+  - misc fixes (BZ#4997, BZ#5741)
+  - make sure all users of __libc_setlocale_lock know it is
+    now a rwlock
+  - fix ppc/ppc64 compatibility _sys_errlist and _sys_siglist
+    symbols
+
+* Thu Apr 10 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-15
+- update to trunk
+  - misc fixes (BZ#4314, BZ#4407, BZ#5209, BZ#5436, BZ#5768, BZ#5998,
+		BZ#6024)
+- restart sshd in %%post when upstart is used - it doesn't have
+  /dev/initctl (#441763)
+- disable assert checking again
+
+* Tue Apr  8 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-14
+- update to trunk
+  - misc fixes (BZ#5443, BZ#5475, BZ#5478, BZ#5939, BZ#5979, BZ#5995,
+		BZ#6004, BZ#6007, BZ#6020, BZ#6021, BZ#6042)
+  - change mtrace to keep perl 5.10 quiet (#441082)
+  - don't share conversion state between mbtowc and wctomb (#438687)
+  - if st_blksize is too large and malloc fails, retry with smaller
+    buffer in opendir (#430768)
+  - correct *printf overflow test (#358111)
+
+* Fri Mar 28 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-13
+- update to trunk
+  - don't define ARG_MAX in <limits.h>, as it is no longer
+    constant - use sysconf (_SC_ARG_MAX) to get the current
+    argument size limit
+  - fix build on sparc64
+- only service sshd condrestart if /etc/rc.d/init.d/sshd exists
+  (#428859)
+
+* Wed Mar 26 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-12
+- update to trunk
+  - new CLONE_* flags in <sched.h> (#438542)
+  - nis+ errno clobbering fix (#437945)
+  - fix adjtime (#437974)
+
+* Fri Mar 14 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-11
+- update to trunk
+- remove <stropts.h>, define _XOPEN_STREAMS -1 (#436349)
+
+* Wed Mar  5 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-8
+- update to trunk
+  - {,v}{as,d}printf and obstack_{,v}printf fortification (#435905)
+  - fix getnameinfo/gethostbyaddr (#428067, BZ#5790)
+  - fix yp_order (#435519, BZ#5854)
+  - misc fixes (BZ#5779, BZ#5736, BZ#5627, BZ#5818, BZ#5012)
+- merge review cleanup (Tom Callaway, #225806)
+
+* Sat Feb 16 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-7
+- update to trunk
+  - make NI_MAXHOST and NI_MAXSERV available even in BSDish
+    namespaces (BZ#5737)
+  - timerfd_* syscalls
+
+* Fri Feb  1 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-6
+- fix build
+
+* Thu Jan 31 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-5
+- update to trunk
+- rebuild with gcc 4.3
+
+* Fri Jan 11 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-4
+- update to trunk
+  - misc fixes (BZ#5541, BZ#5545, BZ#5553, BZ#5112, BZ#5520)
+  - getaddrinfo fixes
+  - signalize EOVERFLOW from sem_post instead of overflowing
+    the counter
+  - fix i?86 makecontext
+  - fix iconv for iso-2022-jp//translit (#397021)
+
+* Thu Jan  3 2008 Jakub Jelinek <jakub@redhat.com> 2.7.90-3
+- update to trunk
+  - fix recognition of interface family (#425768)
+  - add __THROW to __ctype_{b,tolower,toupper}_loc prototypes
+
+* Thu Dec 27 2007 Jakub Jelinek <jakub@redhat.com> 2.7.90-2
+- update to trunk
+  - nsswitch fix (#425768)
+- temporarily enable assert checking
+
+* Wed Dec 12 2007 Jakub Jelinek <jakub@redhat.com> 2.7.90-1
+- update to trunk
+  - fix __USE_STRING_INLINES on i?86 (#408731, #371711)
+  - fix *scanf (#388751)
+
+* Wed Oct 17 2007 Jakub Jelinek <jakub@redhat.com> 2.7-1
+- glibc 2.7 release
+- fix tzfile.c for times after last transition (#333561)
+- fix sem_post@GLIBC_2.0 on i?86
+- appease valgrind in libpthread.so initialization
+- misc fixes (BZ#3425, BZ#5184, BZ#5186)
+
+* Mon Oct 15 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-21
+- fix getgr{name,gid}{,_r} with nscd
+
+* Sun Oct 14 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-20
+- install <bits/error.h> (#330031)
+- disable -D_FORTIFY_SOURCE{,=2} support (with a warning) for
+  GCC 3.4.x and earlier(#327641)
+- pl_PL locale changes (BZ#4098, #242296)
+- misc fixes (BZ#1140, BZ#3195, BZ#3242, BZ#4359)
+
+* Thu Oct 11 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-19
+- fix <netinet/tcp.h>
+- simple preprocessor in localedef, fix de_DE collation with it
+
+* Wed Oct 10 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-18
+- add signalfd, eventfd, eventfd_read, eventfd_write
+- qsort speedups
+- workaround for cpuid bugs (#324081)
+- make sure gettext's conversion_lock is initialized even if
+  program isn't linked against libpthread.so.0, only dlopens it (#321761)
+- misc fixes (BZ#5112, BZ#5113, BZ#5104, BZ#5063, BZ#5010, BZ#4407,
+  BZ#3924, BZ#5103, BZ#2633, BZ#181, BZ#73, #321901)
+
+* Wed Oct  3 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-17
+- fix {,v}swprintf with -D_FORTIFY_SOURCE=1 -mlong-double-64 on ppc*/s390*/sparc*
+- strcoll fixes
+- misc fixes (BZ#645, BZ#5071)
+- locale fixes (BZ#4941, #299321, #203364, #196711, #236212)
+
+* Sat Sep 29 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-16
+- misc fixes (BZ#4963, BZ#4972, BZ#5028, BZ#5043, BZ#5058)
+- improve -D_FORTIFY_SOURCE{,=2} diagnostic through warning/error
+  attributes
+- fix wcscpy, wcpcpy, fgetws, fgetws_unlocked, swprintf and vswprintf
+  fortification inlines
+- fix a scalability issue with lazy binding in heavily multithreaded
+  programs
+
+* Thu Sep 20 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-15
+- $5$ (SHA-256) and $6$ (SHA-512) support in crypt
+  (#228697, #249477, #173834)
+
+* Tue Sep 18 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-14
+- -D_FORTIFY_SOURCE{,=2} support for C++
+- fortification of fread{,_unlocked}
+- support *scanf m allocation modifier (%%ms, %%mls, %%mc, ...)
+- in -std=c99 or -D_XOPEN_SOURCE=600 mode don't recognize
+  %%as, %%aS and %%a[ as a GNU extension for *scanf
+- fix splice, vmsplice, tee return value, make them cancellation
+  points
+- mq_open checking
+- use inline function rather than function-like macro
+  for open{,at}{,64} checking
+- IFA_F_OPTIMISTIC handling in getaddrinfo (#259681)
+- fix an ABBA deadlock in ld.so (#284171)
+- remove sparc{32,64} unwind info from _start and clone
+
+* Mon Aug 27 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-13
+- fix personality on x86_64/ppc/ppc64 (#256281)
+
+* Sat Aug 25 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-12
+- readd x86_64 gettimeofday stuff, initialize it earlier
+- nis_list fix (#254115)
+- workaround for bugs in ia64 silly /emul/ia32-linux hack (#253961)
+- misc fixes (BZ#3924, BZ#4566, BZ#4582, BZ#4588, BZ#4726, BZ#4946,
+  BZ#4905, BZ#4814, BZ#4925, BZ#4936, BZ#4896, BZ#4937, BZ#3842,
+  BZ#4554, BZ#4557, BZ#4938)
+
+* Fri Aug 17 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-11
+- remove __strtold_internal and __wcstold_internal from ppc*/s390*/sparc*
+  *-ldbl.h headers
+- temporarily backout x86_64 gettimeofday.S changes (#252453)
+- some further sparc, sparc64 and alpha fixes
+
+* Wed Aug 15 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-10
+- don't open /etc/ld.so.{cache,preload} with O_NOATIME (#252146)
+- s390{,x}, alpha and sparc fixes
+- sparcv9 is no longer an aux arch, as we expect
+  to not build sparc.rpm glibc any longer, only sparcv9.rpm,
+  sparc64.rpm and new two aux arches sparcv9v.rpm and sparc64v.rpm
+
+* Tue Aug 14 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-9
+- private futex even for mutexes and condvars
+- some further O_CLOEXEC changes
+- use vDSO on x86_64 if available
+- ia64 build fixes (#251983)
+
+* Fri Aug 10 2007 Roland McGrath <roland@redhat.com> 2.6.90-8
+- update to trunk
+  - fix missing strtold_l export on ppc64
+
+* Thu Aug  9 2007 Roland McGrath <roland@redhat.com> 2.6.90-6
+- update to trunk
+  - fix local PLT regressions
+- spec file revamp for new find-debuginfo.sh
+
+* Sun Aug  5 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-4
+- fix librt.so and librtkaio.so on ppc32, so that it is not using
+  bss PLT
+
+* Sat Aug  4 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-3
+- fix open{,at}{,64} macro for -pedantic (#250897)
+- add transliteration for l with stroke (#250492)
+- fix strtod ("-0", NULL)
+- update License tag
+
+* Wed Aug  1 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-2
+- make aux-cache purely optional performance optimization in ldconfig,
+  don't issue any errors if it can't be created (#250430)
+- remove override_headers hack, BuildRequire >= 2.6.22 kernel-headers
+  and rely on its content
+
+* Tue Jul 31 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-1
+- update to trunk
+  - private futex optimizations
+  - open{,at}{,64} argument checking
+- ldconfig speedups
+
+* Sun Jul  8 2007 Jakub Jelinek <jakub@redhat.com> 2.6-4
+- filter <built-in> pseudo-files from debuginfo source lists (#245714)
+- fix sscanf when errno is EINTR before the call (BZ#4745)
+- save/restore errno around reading /etc/default/nss (BZ#4702)
+- fix LD_HWCAP_MASK handling
+- disable workaround for #210748, instead backport
+  ld.so locking fixes from the trunk (#235026)
+- new x86_64 memcpy
+- don't write uninitialized padding bytes to nscd socket
+- fix dl{,v}sym, dl_iterate_phdr and dlopen if some library is
+  mapped into ld.so's inter-segment hole on x86_64 (#245035, #244545)
+- fix LD_AUDIT=a:b program (#180432)
+- don't crash on pseudo-zero long double values passed to
+  *printf on i?86/x86_64/ia64 (BZ#4586)
+- fix *printf %%La and strtold with some hexadecimal floating point
+  constants on ppc/ppc64
+- fix nextafterl on ppc/ppc64
+- fix sem_timedwait on i?86 and x86_64
+
+* Thu May 24 2007 Jakub Jelinek <jakub@redhat.com> 2.6-3
+- don't use %%config(missingok) for locale-archive.tmpl,
+  instead of removing it altogether truncate it to zero
+  size (#240697)
+- add a workaround for #210748
+
+* Mon May 21 2007 Jakub Jelinek <jakub@redhat.com> 2.6-2
+- restore malloc_set_state backwards compatibility (#239344)
+- fix epoll_pwait (BZ#4525)
+- fix printf with unknown format spec or positional arguments
+  and large width and/or precision (BZ#4514)
+- robust mutexes fix (BZ#4512)
+
+* Tue May 15 2007 Roland McGrath <roland@redhat.com> 2.6-1
+- glibc 2.6 release
+
+* Fri May 11 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-24
+- utimensat, futimens and lutimes support
+
+* Thu May 10 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-23
+- use madvise MADV_DONTNEED in malloc
+- fix ia64 feraiseexcept
+- fix s390{,x} feholdexcept (BZ#3427)
+- ppc fenv fixes
+- make fdatasync a cancellation point (BZ#4465)
+- fix *printf for huge precisions with wide char code and multi-byte
+  strings
+- fix dladdr (#232224, BZ#4131)
+
+* Fri May  4 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-22
+- add transliteration for <U2044> (BZ#3213)
+- fix *scanf with %%f on hexadecimal floats without exponent (BZ#4342)
+- fix *printf with very large precisions for %%s (#238406, BZ#4438)
+- fix inet_ntop size checking for AF_INET (BZ#4439)
+- for *printf %%e avoid 1.000e-00, for exponent 0 always use + sign (#238431)
+- fix a regression introduced in #223467 changes
+- gethostby*_r alignment fixes (BZ#4381)
+- fix ifaddrs error handling
+
+* Mon Apr 16 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-21
+- don't include individual locale files in glibc-common,
+  rather include prepared locale-archive template and let
+  build-locale-archive create locale-archive from the template
+  and any user supplied /usr/lib/locale/*_* directories,
+  then unlink the locale-archive template - this should save
+  > 80MB of glibc-common occupied disk space
+- fix _XOPEN_VERSION (BZ#4364)
+- fix printf with %%g and values tiny bit smaller than 1.e-4 (#235864,
+  BZ#4362)
+- fix NIS+ __nisfind_server (#235229)
+
+* Sat Mar 31 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-20
+- assorted NIS+ speedups (#223467)
+- fix HAVE_LIBCAP configure detection (#178934)
+- remove %%{_prefix}/sbin/rpcinfo from glibc-common (#228894)
+- nexttoward*/nextafter* fixes (BZ#3306)
+- feholdexcept/feupdateenv fixes (BZ#3427)
+- speed up fnmatch with two or more * in the pattern
+
+* Sat Mar 17 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-19
+- fix power6 libm compat symbols on ppc32 (#232633)
+- fix child refcntr in NPTL fork (#230198)
+- fix ifaddrs with many net devices on > 4KB page size arches (#230151)
+- fix pthread_mutex_timedlock on x86_64 (#228103)
+- various fixes (BZ#3919, BZ#4101, BZ#4130, BZ#4181, BZ#4069, BZ#3458)
+
+* Wed Feb 21 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-18
+- fix nftw with FTW_CHDIR on / (BZ#4076)
+- nscd fixes (BZ#4074)
+- fix fmod{,f,l} on i?86 (BZ#3325)
+- support localized digits for fp values in *scanf (BZ#2211)
+- namespaces fixes (BZ#2633)
+- fix euidaccess (BZ#3842)
+- glob fixes (BZ#3996)
+- assorted locale data fixes (BZ#1430, BZ#672, BZ#58, BZ#3156,
+  BZ#2692, BZ#2648, BZ#3363, BZ#3334, BZ#3326, BZ#3322, BZ#3995,
+  BZ#3885, BZ#3884, BZ#3851)
+
+* Sun Feb 11 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-17
+- RFC2671 support in resolver (#205842)
+- fix strptime (BZ#3944)
+- fix regcomp with REG_NEWLINE (BZ#3957)
+- fix pthread_mutex_timedlock on x86_64 (#228103)
+
+* Fri Feb  2 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-16
+- add strerror_l
+- fix application crashes when doing NSS lookups through nscd
+  mmapped databases and nscd decides to start garbage collection
+  during the lookups (#219145, #225315)
+- fix %%0lld printing of 0LL on 32-bit architectures (BZ#3902)
+- ignore errors from install-info in glibc-devel scriptlets
+  (#223691)
+
+* Wed Jan 17 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-15
+- fix NIS getservbyname when proto is NULL
+- fix nss_compat +group handling (#220658)
+- cache services in nscd
+- fix double free in fts_close (#222089)
+- fix vfork+execvp memory leak (#221187)
+- soft-fp fixes (BZ#2749)
+- further strtod fixes (BZ#3855)
+- make sure pthread_kill doesn't return EINVAL even if
+  the target thread exits in between pthread_kill ESRCH check
+  and the actual tgkill syscall (#220420)
+- fix ABBA deadlock possibility in ld.so scope locking code
+
+* Tue Dec 19 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-14
+- fix {j,m}rand48{,_r} on 64-bit arches (BZ#3747)
+- handle power6x AT_PLATFORM (#216970)
+- fix a race condition in getXXbyYY_r (#219145)
+- fix tst-pselect testcase
+
+* Thu Dec 14 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-13
+- fix setcontext on ppc32 (#219107)
+- fix wide stdio after setvbuf (#217064, BZ#2337)
+- handle relatime mount option in statvfs
+- revert i?86/x86_64 clone CFI temporarily
+
+* Sun Dec 10 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-12
+- fix hasmntopt (#218802)
+- fix setusershell and getusershell (#218782)
+- strtod fixes (BZ#3664, BZ#3673, BZ#3674)
+- fix memusage with realloc (x, 0)
+
+* Tue Dec  5 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-11
+- allow suid apps to setenv NIS_PATH and influence through that
+  nis_list and nis_lookup (#209155)
+- fix ttyname and ttyname_r with invalid file descriptor (#218276)
+- cs_CZ LC_TIME fixes (#218438)
+- fix build with 2.6.19+ headers (#217723)
+
+* Fri Dec  1 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-10
+- fix x86-64 restore_rt unwind info
+
+* Thu Nov 30 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-9
+- fix last svc_run change (#217850)
+- on ppc64 build __libc_start_main without unwind info,
+  as it breaks MD_FROB_UPDATE_CONTEXT (#217729, #217775; in the
+  future that could be fixable just by providing .cfi_undefined r2
+  in __libc_start_main instead)
+- add unwind info for x86-64 restore_rt signal return landing pad
+  (#217087)
+- add power6x subdir to /%%{_lib}/ and /%%{_lib}/rtkaio/,
+  link all libs from ../power6/* into them
+
+* Tue Nov 28 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-8
+- fix svc_run (#216834, BZ#3559)
+- add -fasynchronous-unwind-tables to CFLAGS (#216518)
+- make sure there is consistent timestamp for /etc/ld.so.conf,
+  /etc/localtime and /etc/rpc between multilib glibc rpms
+
+* Mon Nov 20 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-7
+- handle IPv6 addresses in /etc/hosts that are mappable to
+  IPv4 addresses in IPv4 host lookups (#215283)
+- fix :include: /etc/alias handling (#215572)
+- handle new tzdata format to cope with year > 2037 transitions
+  on 64-bit architectures
+
+* Fri Nov 10 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-6
+- fix strxfrm fix
+- fix i?86 floor and ceil inlines (BZ#3451)
+
+* Thu Nov  9 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-5
+- fix sysconf (_SC_LEVEL{2,3}_CACHE_SIZE) on Intel Core Duo
+  CPUs
+- fix libthread_db.so on TLS_DTV_AT_TP architectures
+- fix --inhibit-rpath (#214569)
+- fix _r_debug content when prelinked ld.so executes
+  a program as its argument
+- fix strxfrm
+- powerpc-cpu add-on updates
+
+* Fri Nov  3 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-4
+- fix atexit backwards compatibility (#213388)
+- add mai_IN locale (#213415)
+- remove bogus %%{_libdir}/librt.so.1 symlink (#213555)
+- fix memusage (#213656)
+- change libc.info category (#209493)
+
+* Sun Oct 29 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-3
+- fix suid/sgid binaries on i?86/x86_64 (#212723)
+
+* Fri Oct 27 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-2
+- fix ia64 build
+- don't call _dl_close outside of dl_load_lock critical section
+  if dlopen failed (BZ#3426)
+- add rtld scope locking (#211133)
+
+* Wed Oct 25 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-1
+- fix i?86 6 argument syscalls (e.g. splice)
+- fix rtld minimal realloc (BZ#3352)
+- fix RFC3484 getaddrinfo sorting according to rules 4 and 7 (BZ#3369)
+- fix xdrmem_setpos (#211452)
+- bump __GLIBC_MINOR__
+- increase PTHREAD_STACK_MIN on ppc{,64} to 128K to allow
+  64K pagesize kernels (#209877)
+- speed up initgroups on NIS+ (#208203)
+
+* Mon Oct  2 2006 Jakub Jelinek <jakub@redhat.com> 2.5-2
+- fix nscd database growing (#207928)
+- bypass prelinking when LD_DYNAMIC_WEAK=1 is in the environment
+
+* Fri Sep 29 2006 Jakub Jelinek <jakub@redhat.com> 2.5-1
+- glibc 2.5 release
+
+* Wed Sep 27 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-36
+- rebuilt with gcc-4.1.1-26 to fix unwind info
+
+* Mon Sep 25 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-35
+- fix glob with large number of matches (BZ#3253)
+- fix fchownat on kernels that don't support that syscall (BZ#3252)
+- fix lrintl on s390{,64}
+
+* Sat Sep 23 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-34
+- fix ppc{32,64} longjmp (BZ#3225)
+- fix user visible spelling errors (BZ#3137)
+- fix l{,l}rint{,f,l} around zero (BZ#2592)
+- avoid stack trampoline in s390{,x} makecontext
+
+* Tue Sep 19 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-33
+- fix dlclose (#206639)
+- don't load platform optimized libraries if kernel doesn't set
+  AT_PLATFORM
+- fix ppc{32,64} libSegFault.so
+- use -mtune=generic even for glibc-devel.i386 (#206437)
+- fix /%%{_lib}/librt.so.1 symlink
+
+* Fri Sep 15 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-32
+- on ppc* use just AT_PLATFORM and altivec AT_HWCAP bit for library selection
+- fix lrintl and lroundl on ppc{,64}
+- use hidden visibility on fstatat{,64} and mknodat in libc_nonshared.a
+
+* Sun Sep 10 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-31
+- fix pthread_cond_{,timed}wait cancellation (BZ#3123)
+- fix lrint on ppc32 (BZ#3155)
+- fix malloc allocating more than half of address space (BZ#2775)
+- fix mktime on 32-bit arches a few years after 2038 (BZ#2821)
+
+* Thu Sep  7 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-30
+- add librtkaio, to use it add /%%{lib}/rtkaio to your
+  LD_LIBRARY_PATH or /etc/ld.so.conf
+- fix or_IN February name (#204730)
+- fix pthread_create called from cancellation handlers (BZ#3124)
+- fix regex case insensitive searches with characters where upper
+  and lower case multibyte representations have different length
+  (e.g. I and dotless i, #202991)
+
+* Tue Sep  5 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-29
+- randomize resolver query ids before use instead after use (#205113)
+- fix resolver symver checking with DT_GNU_HASH (#204909)
+- put .hash section in glibc libraries at the end of RO segment
+  when .gnu.hash is present
+
+* Thu Aug 31 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-28
+- another malloc doubly linked list corruption problem fix (#204653)
+
+* Thu Aug 31 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-27
+- allow $LIB and $PLATFORM in dlopen parameters even in suid/sgid (#204399)
+- handle $LIB/$PLATFORM in LD_LIBRARY_PATH
+- fix splice prototype (#204530)
+
+* Mon Aug 28 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-26
+- real fix for the doubly linked list corruption problem
+- try harder in realloc to allocate memory (BZ#2684)
+- fix getnameinfo error reporting (#204122)
+- make localedef more robust on invalid input (#203728)
+
+* Fri Aug 25 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-25
+- temporarily back out code to limit number of unsorted block
+  sort iterations (#203735, #204027)
+- handle PLT symbols in dladdr properly (BZ#2683)
+- avoid malloc infinite looping for allocations larger than
+  the system can allocate (#203915)
+
+* Tue Aug 22 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-23
+- malloc fixes, especially for 32-bit arches (#202309)
+- further *_IN locale fixes (#200230)
+- fix get{serv,rpc}ent{,_r} if NIS map is empty (#203237)
+- fix /usr/bin/iconv (#203400)
+
+* Fri Aug 18 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-22
+- rebuilt with latest binutils to pick up 64K -z commonpagesize
+  on ppc/ppc64 (#203001)
+
+* Tue Aug 15 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-21
+- if some test gets stuck, kill the tee process after make check
+  finishes
+- build with -mtune=generic on i686 and x86_64
+
+* Tue Aug 15 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-20
+- PTHREAD_PRIO_PROTECT support
+- fix errno if nice() fails (#201826)
+
+* Thu Aug 10 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-19
+- adaptive malloc brk/mmap threshold
+- fix fchownat to use kernel syscall (if available) on many arches (#201870)
+- only define O_DIRECT with -D_GNU_SOURCE on ia64 to match all
+  other arches (#201748)
+
+* Mon Aug  7 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-18
+- NIS+ fixes
+- fix memusage and xtrace scripts (#200736)
+- redirect /sbin/service sshd condrestart std{out,err} to /dev/null
+  when executed from glibc_post_upgrade
+
+* Wed Aug  2 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-17
+- typo fix for the dladdr patch
+- build i?86 glibc with -mno-tls-direct-seg-refs (#200469)
+
+* Wed Aug  2 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-16
+- fix dladdr on binaries/libraries with only DT_GNU_HASH and no
+  DT_HASH (#200635)
+- fix early timeout of initgroups data in nscd (#173019)
+- add am/pm display to es_PE and es_NI locales (#167101)
+- fix nss_compat failures when nis/nis+ unavailable (#192072)
+
+* Mon Jul 31 2006 Roland McGrath <roland@redhat.com> 2.4.90-15
+- fix missing destructor calls in dlclose (#197932)
+- enable transliteration support in all locales (#196713)
+- disallow RTLD_GLOBAL flag for dlmopen in secondary namespaces (#197462)
+- PI mutex support
+
+* Mon Jul 10 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-13
+- DT_GNU_HASH support
+
+* Fri Jun 30 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-12
+- buildrequire gettext
+- enable fstatat64/newfstatat syscalls even on ppc*/s390*/ia64 (#196494)
+- fix out of memory behavior in gettext (#194321)
+- fix regex on multi-byte non-UTF-8 charsets (#193873)
+- minor NIS+ fixes (#190803)
+- don't use cancellable calls in posix_spawn* and only set{u,g}id
+  current thread if requested (#193631)
+
+* Wed May 31 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-11
+- don't exit from nscd -i <database> before the database is
+  actually invalidated, add locking to prune_cache (#191464)
+- build glibc-devel.i386 static libraries with
+  -mno-tls-direct-seg-refs -DNO_TLS_DIRECT_SEG_REFS
+- RFC3542 support (advanced API for IPv6; #191001, BZ##2693)
+
+* Wed May 24 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-10
+- on i686 make glibc owner of /lib/i686 directory (#192597)
+- search parent NIS+ domains (#190803)
+
+* Sun May 21 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-9
+- update from CVS
+  - big NIS+ changes
+
+* Fri May 19 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-8
+- update from CVS
+  - fix nss_compat when SETENT_BATCH_READ=TRUE is in /etc/default/nss
+  - fix RFC3484 precedence table for site-local and ULA addresses (#188364)
+  - fix a sunrpc memory leak
+
+* Thu May 11 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-7
+- update from CVS
+  - fix tcgetattr (#177965)
+  - fix <sys/queue.h> (#191264)
+
+* Fri May  5 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-6
+- update from CVS
+- rebuilt using fixed rpm
+
+* Fri May  5 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-5
+- update from CVS
+  - some NIS+ fixes
+  - allow overriding rfc3484 address sorting tables for getaddrinfo
+    through /etc/gai.conf (sample config file included in %%doc directory)
+
+* Mon May  1 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-4
+- update from CVS
+  - SETENT_BATCH_READ /etc/default/nss option for speeding up
+    some usages of NIS+ (#188246)
+  - move debug state change notification (#179208)
+  - fix ldd script if one of the dynamic linkers is not installed (#190259)
+
+* Thu Apr 27 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-3
+- update from CVS
+  - fix a typo in nscd.conf (#190085)
+  - fix handling of SIGHUP in nscd when some caches are disabled (#189978)
+  - make nscd paranoia mode working with non-root server-user (#189779)
+
+* Wed Apr 26 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-2
+- update from CVS
+  - fix getaddrinfo (#190002)
+  - add auto-propagate nscd.conf options (#177154)
+  - fix nscd auditing (#169148)
+
+* Tue Apr 25 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-1
+- update from CVS
+
+* Mon Apr 24 2006 Jakub Jelinek <jakub@redhat.com> 2.4-6
+- update from CVS
+  - NIS+ fixes
+  - don't segfault on too large argp key values (#189545)
+  - getaddrinfo fixes for RFC3484 (#188364)
+
+* Tue Mar 28 2006 Jakub Jelinek <jakub@redhat.com> 2.4-5
+- update from CVS
+  - pshared robust mutex support
+  - fix btowc and bwtoc in C++ (#186410)
+  - fix NIS+ (#186592)
+  - don't declare __wcsto*l_internal for non-GCC or if not -O1+ (#185667)
+- don't mention nscd failures on 2.0 kernels (#185335)
+
+* Tue Mar  7 2006 Roland McGrath <roland@redhat.com> 2.4-4
+- back up %%{ix86} gdb conflicts to < 6.3.0.0-1.111
+
+* Tue Mar  7 2006 Jakub Jelinek <jakub@redhat.com> 2.4-3
+- really fix rintl on ppc64
+
+* Tue Mar  7 2006 Jakub Jelinek <jakub@redhat.com> 2.4-2
+- accurate unwind info for lowlevellock.h stubs on %%{ix86}
+- fix ppc/ppc64 ceill, floorl, rintl, roundl and truncl (BZ#2423)
+
+* Mon Mar  6 2006 Jakub Jelinek <jakub@redhat.com> 2.4-1
+- update from CVS
+  - glibc 2.4 release
+
+* Mon Mar  6 2006 Jakub Jelinek <jakub@redhat.com> 2.3.91-2
+- update from CVS
+  - fix sYSMALLOc for MALLOC_ALIGNMENT > 2 * SIZE_SZ (#183895)
+  - revert ppc32 malloc alignment patch, it breaks malloc_set_state
+    and needs some further thoughts and time (#183894)
+- provide accurate unwind info for lowlevellock.h stubs on x86_64
+
+* Thu Mar  2 2006 Jakub Jelinek <jakub@redhat.com> 2.3.91-1
+- update from CVS
+  - fixes for various arches
+- ensure malloc returns pointers aligned to at least
+  MIN (2 * sizeof (size_t), __alignof__ (long double))
+  (only on ppc32 this has not been the case lately with addition
+   of 128-bit long double, #182742)
+
+* Wed Mar  1 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-39
+- update from CVS
+
+* Fri Feb 17 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-38
+- update from CVS
+  - robust mutexes rewrite
+
+* Mon Feb 13 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-37
+- update from CVS
+  - *at fixes
+  - unshare syscall wrapper
+
+* Sat Feb  4 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-36
+- update from CVS
+  - fix frequency setting for ITIMER_PROF (#179938, BZ#2268)
+  - fix powerpc inline fegetround ()
+  - fix nptl_db (#179946)
+
+* Fri Feb  3 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-35
+- update from CVS
+  - handle futimesat (fd, NULL, tvp) as futimes (fd, tvp)
+- fix <stdlib.h> q{e,f,g}cvt{,_r} for -mlong-double-64
+
+* Thu Feb  2 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-34
+- fix <math.h> with C++ and -mlong-double-64 (#179742)
+- add nexttowardl redirect for -mlong-double-64
+
+* Thu Feb  2 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-33
+- update from CVS
+  - long double support fixes
+
+* Wed Feb  1 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-32
+- update from CVS
+  - 128-bit long double fixes for ppc{,64}, s390{,x} and sparc{,v9},
+    alpha 128-bit long double support
+- add inotify syscall numbers to the override <asm/unistd.h> headers
+  (#179366)
+
+* Mon Jan 30 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-31
+- update from CVS
+  - 128-bit long double on ppc, ppc64, s390, s390x and sparc{,v9}
+- add some new syscall numbers to the override <asm/unistd.h>
+  headers
+
+* Mon Jan  9 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-30
+- update from CVS
+  - <pthread.h> initializer fixes for -std=c{8,9}9 on 32-bit
+    arches
+- avoid writable .rodata (#177121)
+
+* Fri Jan  6 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-29
+- update from CVS
+  - make pthread_mutex_t an unnamed union again, as it affects
+    libstdc++ ABI mangling
+
+* Fri Jan  6 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-28
+- update from CVS
+  - make aio_suspend interruptible by signals (#171968)
+
+* Fri Jan  6 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-27
+- only rely on d_type in 32-bit getdents on s390 for 2.6.11+
+
+* Wed Jan  4 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-26
+- update from CVS
+  - for newly linked lio_listio* callers, send per request
+    notifications (#170116)
+  - fixup nscd -S option removal changes (#176860)
+  - remove nonnull attribute from ctermid (#176753)
+  - fix PTHREAD_*_INITIALIZER{,_NP} on 64-bit arches
+  - SPARC NPTL support for pre-v9 CPUs
+- drop support for 2.4.xx and < 2.6.9 kernels
+
+* Mon Jan  2 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-25
+- update from CVS
+  - s390{,x} and sparc{,64} pointer mangling fixes
+- install a sanitized LinuxThreads <bits/libc-lock.h>
+
+* Mon Jan  2 2006 Jakub Jelinek <jakub@redhat.com> 2.3.90-24
+- update from CVS
+  - nscd audit changes (#174422)
+  - ppc{32,64} vDSO support and ppc32 hp-timing
+
+* Tue Dec 27 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-23
+- update from CVS
+  - robust mutexes
+- fix transliteration segfaults (#176573, #176583)
+- ignore prelink temporaries in ldconfig (#176570)
+
+* Wed Dec 21 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-22
+- update from CVS
+  - minor fts fixes
+- revert broken _Pragma () workaround
+- fix ldconfig on bi-arch architectures (#176316)
+
+* Tue Dec 20 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-21
+- update from CVS
+  - fix pointer (de)mangling in gconv_cache.c
+
+* Tue Dec 20 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-20
+- update from CVS
+  - time ((void *) 1) should segfault, not return -EFAULT (#174856, BZ#1952)
+  - fix errlist generation
+- update ulps for GCC 4.1 on IA-64
+
+* Mon Dec 19 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-19
+- update from CVS
+  - sysdeps/generic reorg
+  - setjmp/longjmp jump pointer mangling
+- rebuilt with GCC 4.1-RH prerelease, worked around broken _Pragma ()
+  handling in it
+- remove glibc-profile subpackage
+- use non-PLT calls for malloc/free/realloc/memalign invocations in
+  mtrace and mcheck hooks (#175261)
+- setjmp/longjmp jump pointer mangling on ppc{,64}/ia64/s390{,x}
+
+* Sat Nov 19 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-18
+- update from CVS
+  - change <sys/stat.h> for broken apps that #define const /**/,
+    handle non-GCC compilers
+  - fix ppc{32,64} strncmp (BZ#1877, #173643, IT#83510)
+  - provide shmatt_t typedef in ia64 <sys/shm.h (#173680)
+  - support 2nd arg to futimesat being NULL (#173581)
+
+* Wed Nov 16 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-17
+- update from CVS
+  - fix <sys/stat.h> in C++
+  - {fstat,fchown,rename,unlink}at fixes
+  - epoll_wait is now a cancellation point
+
+* Tue Nov 15 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-16
+- update from CVS
+- make sure waitid syscall is used on ppc*/s390*
+
+* Thu Oct 20 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-15
+- update from CVS
+  - be permissive in %%n check because of kernel bug #165351 (#171240)
+  - don't misalign stack in pthread_once on x86_64 (#170786, IT#81521)
+  - many locale fixes
+
+* Mon Oct 10 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-14
+- update from CVS
+  - fix malloc bug after fork introduced in the last update
+  - fix getent hosts IP for IPv4 IPs (#169831)
+
+* Mon Oct  3 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-13
+- update from CVS
+  - fix setuid etc. hangs if some thread exits during the call (#167766)
+  - fix innetgr memory leak (#169051)
+  - support > 2GB nscd log files (#168851)
+  - too many other changes to list here
+- include errno in nscd message if audit_open failed (#169148)
+
+* Mon Sep 12 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-12
+- update from CVS
+  - netgrp handling fixes (#167728)
+  - fix memory leak in setlocale (BZ#1318)
+  - fix hwcaps computation
+  - several regex portability improvements (#167019)
+  - hypotf fix
+  - fix *printf return code if underlying write fails (BZ#1146)
+  - PPC64 dl{,v}sym fixes for new ABI .opd symbols
+- fix calloc with MALLOC_PERTURB_ in environment on 64-bit architectures
+  (#166719)
+- source /etc/sysconfig/nscd (if it exists) in /etc/rc.d/init.d/nscd
+  (#167083)
+- add %%triggerin for tzdata to glibc-common, so that tzdata updates
+  update /etc/localtime and /var/spool/postfix/etc/localtime if they
+  exist (#167787)
+
+* Mon Aug 29 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-11
+- FUTEX_WAKE_OP support to speed up pthread_cond_signal
+
+* Wed Aug 24 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-10
+- update from CVS
+  - fix growing of nscd persistent database (BZ#1204)
+  - fix _FORTIFY_SOURCE mbstowcs and wcstombs if destination size
+    is known at compile time, but length argument is not
+
+* Mon Aug 22 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-9
+- update from CVS
+  - fix resolving over TCP (#161181, #165802)
+  - on ia64 don't abort on unhandled math function exception codes
+    (#165693)
+
+* Mon Aug  8 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-8
+- update from CVS
+  - nscd persistent database verifier (#164001)
+  - cleanup _FORTIFY_SOURCE bits/*.h headers (#165000)
+  - handle EINTR in sigwait properly
+- make sure poor man's stack guard randomization keeps first
+  byte 0 even on big-endian 32-bit arches
+- fix {elf,nptl}/tst-stackguard1
+- obsolete linuxthreads-devel in glibc-devel
+
+* Fri Jul 29 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-7
+- update from CVS
+- do some poor man's stack guard randomization even without
+  the costly --enable-stackguard-randomization
+- rebuilt with new GCC to make it use -msecure-plt on PPC32
+
+* Mon Jul 25 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-6
+- update from CVS
+  - fix execvp if PATH is not in environment and the call is going
+    to fail (BZ#1125)
+  - another bits/wchar2.h fix (#163990)
+
+* Fri Jul 22 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-5
+- update from CVS
+  - fix stubs.h generation
+- don't use _G_va_list in bits/wchar2.h
+
+* Fri Jul 22 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-4
+- update from CVS
+  - make sure bits/wchar2.h header is installed
+  - fix __getgroups_chk return type
+
+* Thu Jul 21 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-3
+- update from CVS
+  - make sure nscd cmsg buffers aren't misaligned, handle EINTR from
+    poll when contacting nscd more gracefully
+  - remove malloc attribute from posix_memalign
+  - correctly size nscd buffer for grpcache key (#163538)
+  - fix atan2f
+  - fix error memory leaks
+  - some more _FORTIFY_SOURCE protection
+
+* Fri Jul  8 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-2
+- update from CVS
+  - ia64 stack protector support
+  - handle DNS referral results as server errors (#162625)
+  - ctan{,h}{,f,l} fixes (#160759)
+  - pass argc, argv and envp also to executable's *ni_array
+    functions (BZ#974)
+  - add ellipsis to clone prototype (#161593)
+  - fix glibc-profile (#162601)
+  - nss_compat fixes
+- use sysdeps/generic version of <bits/stdio-lock.h> in installed
+  headers instead of NPTL version (#162634)
+
+* Mon Jun 27 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-1
+- update from CVS
+  - stack protector support
+  - fix xdr_{,u_}{longlong_t,hyper} on 64-bit arches (#161583)
+- enable @GLIBC_2.4 symbols
+- remove linuxthreads
+
+* Mon Jun 20 2005 Jakub Jelinek <jakub@redhat.com> 2.3.5-11
+- update from CVS
+  - PPC32 -msecure-plt support
+  - support classes keyword in /etc/hesiod.conf (#150350)
+  - add RLIMIT_NICE and RLIMIT_RTPRIO to <sys/resources.h> (#157049)
+  - decrease number of .plt relocations in libc.so
+  - use -laudit in nscd (#159217)
+  - handle big amounts of networking interfaces in getifaddrs/if_nameindex
+    (#159399)
+  - fix pa_IN locale's am_pm (#158715, BZ#622)
+  - fix debugging of PIEs
+
+* Mon May 30 2005 Jakub Jelinek <jakub@redhat.com> 2.3.5-10
+- fix LD_ASSUME_KERNEL (since 2.3.5-8 GLRO(dl_osversion)
+  has been always overwritten with the version of currently
+  running kernel)
+- remove linuxthreads man pages other than those covered in
+  3p section, as 3p man pages are far better quality and describe
+  POSIX behaviour that NPTL implements (#159084)
+
+* Tue May 24 2005 Jakub Jelinek <jakub@redhat.com> 2.3.5-9
+- update from CVS
+  - increase bindresvport's LOWPORT to 512, apparently some
+    broken daemons don't think 0 .. 511 ports are reserved
+
+* Mon May 23 2005 Jakub Jelinek <jakub@redhat.com> 2.3.5-8
+- update from CVS
+  - fix kernel version check in ld.so
+- fix sendfile{,64} prototypes (BZ#961)
+- try more ports in bindresvport if all 600..1023 are
+  used, don't use priviledged ports when talking to portmap
+  (#141773)
+
+* Fri May 20 2005 Jakub Jelinek <jakub@redhat.com> 2.3.5-7
+- update from CVS
+  - make regexec thread safe (BZ#934)
+- fix statically linked programs on i?86, x86_64, s390* and
+  sparc* (#158027)
+- fix IBM939 iconv module (BZ#955)
+
+* Wed May  4 2005 Jakub Jelinek <jakub@redhat.com> 2.3.5-6
+- update from CVS
+  - fix cancellation on i?86
+  - add call frame information to i?86 assembly
+
+* Tue May  3 2005 Jakub Jelinek <jakub@redhat.com> 2.3.5-5
+- update from CVS
+  - add some more UTF-8 locales (#156115)
+- clean up /lib64/tls instead of /lib/tls on x86-64, s390x and
+  ppc64 in glibc_post_upgrade (#156656)
+- fix posix_fallocate{,64} (#156289)
+
+* Thu Apr 28 2005 Jakub Jelinek <jakub@redhat.com> 2.3.5-4
+- update from CVS
+  - fix nscd cache pruning (#150748)
+
+* Wed Apr 27 2005 Jakub Jelinek <jakub@redhat.com> 2.3.5-3
+- update from CVS
+  - fix linuxthreads clocks
+- put xen libs into the glibc-2*.i686 package instead of a separate one
+- fix librt.so symlink in linuxthreads-devel
+- do not include linuxthreads-devel on %%{auxarches},
+  just on the base architectures
+
+* Wed Apr 27 2005 Jakub Jelinek <jakub@redhat.com> 2.3.5-2
+- update from CVS
+  - with MALLOC_CHECK_=N N>0 (#153003)
+  - fix recursive dlclose (#154641)
+  - handle %%z in strptime (#154804)
+  - automatically append /%%{_lib}/obsolete/linuxthreads/
+    to standard library search path if LD_ASSUME_KERNEL=N N <= 2.4.19
+    or for glibc 2.0 binaries (or broken ones that don't use errno/h_errno
+    properly).  Warning: all those will stop working when LinuxThreads
+    is finally nuked, which is not very far away
+  - remove nonnull attribute from acct prototype (BZ#877)
+  - kernel CPU clocks support
+  - fix *scanf in locales with multi-byte decimal point
+
+* Wed Apr 27 2005 Roland McGrath <roland@redhat.com>
+- glibc-xen subpackage for i686
+
+* Fri Apr 15 2005 Roland McGrath <roland@redhat.com> 2.3.5-1
+- update from CVS
+  - fix execvp regression (BZ#851)
+  - ia64 libm updates
+  - sparc updates
+  - fix initstate{,_r}/strfry (#154504)
+  - grok PT_NOTE in vDSO for kernel version and extra hwcap dirs,
+    support "hwcap" keyword in ld.so.conf files
+
+* Tue Apr  5 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-21
+- update from CVS
+  - fix xdr_rmtcall_args on 64-bit arches (#151686)
+- fix <pthread.h> and <bits/libc-lock.h> with -std=c89 -fexceptions (#153774)
+
+* Mon Apr  4 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-20
+- move LinuxThreads libraries to /%%{_lib}/obsolete/linuxthreads/
+  and NPTL libraries to /%%{_lib}.  To run a program against LinuxThreads,
+  LD_ASSUME_KERNEL=2.4.xx LD_LIBRARY_PATH=/%%{_lib}/obsolete/linuxthreads/
+  is now needed
+- bzip2 ChangeLog* files instead of gzipping them
+
+* Sat Apr  2 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-19
+- update from CVS
+  - fix nextafterl and several other libm routines on ia64
+  - fix initgroups (BZ#661)
+- kill nptl-devel subpackage, add linuxthreads-devel,
+  compile and link by default against NPTL and only with
+  -I/usr/include/linuxthreads -L/usr/%%{_lib}/linuxthreads
+  against LinuxThreads
+- package /usr/lib/debug/%%{_lib}/tls/i{5,6}86 symlinks in
+  i386 glibc-debuginfo
+- limit number of ChangeLog* files in glibc-common %%doc
+  to last 2.5 years of changes only to save space
+
+* Fri Mar 25 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-18
+- fix build on 64-bit arches with new GCC
+
+* Thu Mar 24 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-17
+- update from CVS
+  - fix LD_AUDIT in LinuxThreads ld.so
+  - fix calloc with M_PERTURB
+  - fix error handling in pthread_create with PTHREAD_EXPLICIT_SCHED
+    on ppc*/ia64/alpha/mips (BZ#801)
+  - fix a typo in WINDOWS-31J charmap (#151739)
+  - fix NIS ypprot_err (#151469)
+
+* Sun Mar 20 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-16
+- fix pread with -D_FILE_OFFSET_BITS=64 (#151573)
+
+* Sat Mar 19 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-15
+- update from CVS
+  - better fix for the dlclose bug (#145810, #150414)
+  - fix regex crash on case insensitive search in zh_CN locale
+    (#151215)
+  - fix malloc_trim (BZ#779)
+  - with -D_FORTIFY_SOURCE=*, avoid defining read and a bunch of others
+    as function-like macros, there are too many broken programs
+    out there
+- add %%dir %%{_prefix}/%%{_lib}/gconv to glibc's file list (#151372)
+
+* Sun Mar  6 2005 Roland McGrath <roland@redhat.com> 2.3.4-14
+- fix bits/socket2.h macro typos
+
+* Sat Mar  5 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-12
+- fix tst-chk{2,3}
+- fix up AS_NEEDED directive in /usr/%%{_lib}/libc.so
+- BuildReq binutils >= 2.15.94.0.2-1 for AS_NEEDED, in
+  glibc-devel Conflict with binutils < 2.15.94.0.2-1
+
+* Thu Mar  3 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-11
+- update from CVS
+  - fix execvp (#149290)
+  - fix dlclose (#145810)
+  - clear padding in gconv-modules.cache (#146614, BZ#776)
+- rebuilt with GCC4
+- changed __GLIBC_MINOR__ for now back to 3
+- back out the newly added GLIBC_2.4 *_chk routines, instead
+  do the checking in macros
+
+* Sat Feb 12 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-10
+- hopefully fix interaction with prelink (#147655)
+
+* Fri Feb 11 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-9
+- update from CVS
+  - bi-arch <gnu/stubs.h> (BZ#715)
+
+* Fri Feb 11 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-8
+- update from CVS
+  - bi-arch <gnu/lib-names.h> (BZ#632)
+  - fix libdl on s390 and maybe other platforms
+  - fix initstate{,_r} (BZ#710)
+  - fix <gnu/stubs.h> generation (BZ#157)
+- define CMSPAR in bits/termios.h (#147533)
+
+* Tue Feb  8 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-7
+- update from CVS
+  - fix TLS handling in linuxthreads
+
+* Tue Feb  8 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-6
+- update from CVS
+  - ld.so auditing
+  - fix segfault if chrooted app attempts to dlopen a library
+    and no standard library directory exists at all (#147067, #144303)
+  - fix initgroups when nscd is running, but has group caching disabled
+    (#146588)
+  - fix pthread_key_{create,destroy} in LinuxThreads when pthread_create
+    has not been called yet (#146710)
+  - fix ppc64 swapcontext and setcontext (#146736, BZ#700)
+  - service nscd cosmetic fixes (#146776)
+  - fix IA-32 and x86-64 stack alignment in DSO constructors (#145689)
+  - fix zdump -v segfaults on x86-64 (#146210)
+  - avoid calling sigaction (SIGPIPE, ...) inside syslog (#146021, IT#56686)
+  - fix errno values for futimes (BZ#633)
+  - unconditionally include <features.h> in malloc.h (BZ#650)
+  - change regex \B handling to match old GNU regex as well as perl/grep's dfa
+    (from empty string inside of word to empty string not at a word boundary,
+     BZ#693)
+  - slightly optimize i686 TLS accesses, use direct TLS %%gs access in sem_*
+    and allow building -mno-tls-direct-seg-refs glibc that is free of direct TLS
+    %%gs access with negative offsets
+  - fix addseverity
+  - fix fmemopen
+  - fix rewinddir
+  - increase svc{tcp,unix}_create listen backlog
+
+* Thu Jan  6 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-5
+- update from CVS
+  - add some warn_unused_result marking
+  - make ftruncate available even for just -D_POSIX_C_SOURCE=200112L
+    (BZ#640)
+
+* Thu Jan  6 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-4
+- update from CVS
+  - fix IA-32 stack alignment for LinuxThreads thread functions
+    and functions passed to clone(2) directly
+  - fix ecvt{,_r} on denormals (#143279)
+  - fix __tls_get_addr typo
+  - fix rounding in IA-64 alarm (#143710)
+  - don't reinitialize __environ in __libc_start_main, so that
+    effects of setenv/putenv done in DSO initializers are preserved
+    (#144037, IT#57403)
+  - fix fmemopen
+  - fix vDSO l_map_end and l_text_end values
+  - IA64 libm update (#142494)
+- fix ppc rint/ceil etc. (BZ#602)
+
+* Tue Dec 21 2004 Jakub Jelinek <jakub@redhat.com> 2.3.4-3
+- rebuilt
+
+* Mon Dec 20 2004 Jakub Jelinek <jakub@redhat.com> 2.3.4-2
+- work around rpm bug some more, this time by copying
+  iconvconfig to iconvconfig.%%{_target_cpu}.
+
+* Mon Dec 20 2004 Jakub Jelinek <jakub@redhat.com> 2.3.4-1
+- update from CVS
+  - glibc 2.3.4 release
+  - add -o and --nostdlib options to iconvconfig
+- if /sbin/ldconfig doesn't exist when running
+  glibc_post_upgrade.%%{_target_cpu}, just don't attempt to run it.
+  This can happen during first install of bi-arch glibc and the
+  other arch glibc's %%post wil run /sbin/ldconfig (#143326)
+- use -o and --nostdlib options to create all needed
+  gconv-modules.cache files on bi-arch setups
+
+* Sun Dec 19 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-99
+- rebuilt
+
+* Sat Dec 18 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-98
+- add .%%{_target_cpu} to glibc_post_upgrade, only run telinit u
+  if /sbin/init is the same ELF class and machine as
+  glibc_post_upgrade.%%{_target_cpu} and similarly with
+  condrestarting sshd (#143046)
+
+* Fri Dec 17 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-97
+- update from CVS
+  - fix ppc64 getcontext and swapcontext (BZ#610)
+  - sparc/sparc64 fixes
+
+* Wed Dec 15 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-96
+- update from CVS
+  - fix i686 __USE_STRING_INLINES strncat
+  - make sure ppc/ppc64 maintain correct stack alignment
+    across clone
+
+* Wed Dec 15 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-95
+- export nis_domain_of_r from libnsl.so again which was
+  unintentionally lost
+
+* Wed Dec 15 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-93
+- update from CVS
+  - ppc/ppc64 clone without CLONE_THREAD getpid () adjustement
+  - fix MALLOC_CHECK_={1,2,3} for non-contiguous main arena
+    (BZ#457)
+  - fix sysconf (_POSIX_V6_*) for other ABI environments in
+    bi-arch setups
+- s390/s390x clone without CLONE_THREAD getpid () adjustement
+
+* Tue Dec 14 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-92
+- update from CVS
+- fix %%{_prefix}/libexec/getconf filenames generation
+
+* Tue Dec 14 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-91
+- update from CVS
+  - double buffer size in getXXbyYY or getXXent on ERANGE
+    instead of adding BUFLEN (#142617)
+  - avoid busy loop in malloc if another thread is doing fork
+    (#142214)
+  - some more realloc corruption checks
+  - fix getconf _POSIX_V6_WIDTH_RESTRICTED_ENVS output,
+    tweak %%{_prefix}/libexec/getconf/ filenames
+
+* Fri Dec 10 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-90
+- update from CVS
+  - regex speedups
+  - use | cat in ldd if running under bash3+ to allow running
+    it on binaries that are not through SELinux allowed to access
+    console or tty
+- add __NR_waitid defines for alpha and ia64
+
+* Wed Dec  8 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-89
+- update from CVS
+  - fix clone2 on ia64
+  - avoid tst-timer5 failing with linuxthreads implementation
+- if __libc_enable_secure, disallow mode != normal
+- change ldd script to imply -r when -u is used, properly
+  propagate return value and handle suid binaries
+
+* Tue Dec  7 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-88
+- update from CVS
+  - disregard LD_SHOW_AUXV and LD_DYNAMIC_WEAK if __libc_enable_secure
+  - disregard LD_DEBUG if __libc_enable_secure in normal mode
+    if /suid-debug doesn't exist
+  - fix fseekpos after ungetc
+  - avoid reading bytes before start of buffers in regex's
+    check_dst_limits_calc_pos_1 (#142060)
+  - make getpid () working with clone/clone2 without CLONE_THREAD
+    (so far on i386/x86_64/ia64 only)
+- move %%{_prefix}/libexec/getconf/* to glibc from glibc-common
+- make %%{_prefix}/libexec/getconf directory owned by glibc package
+
+* Fri Dec  3 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-87
+- update from CVS
+  - build libpthread_nonshared.a objects with -fPIC on s390/s390x
+  - fix mktime with < 0 or > 59 tm_sec on entry
+  - remove nonnull attribute for realpath
+  - add $(make-target-directory) for errlist-compat.c rule
+    (hopefully fix #141404)
+- add testcase for ungetc bug
+- define _POSIX_{,THREAD_}CPUTIME to 0 on all Linux arches
+
+* Tue Nov 30 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-86
+- update from CVS
+  - some posix_opt.h fixes
+- fix strtold use of unitialized memory (#141000)
+- some more bugfixes for bugs detected by valgrind
+- rebuilt with GCC >= 3.4.3-5 to avoid packed stack layout
+  on s390{,x} (#139678)
+
+* Fri Nov 26 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-85
+- update from CVS
+  - support -v specification in getconf
+  - fix sysconf (_SC_LFS64_CFLAGS) etc.
+  - avoid thread stack aliasing issues on EM64T (#140803)
+- move %%{_prefix}/include/nptl headers from nptl-devel
+  to glibc-headers, so that even NPTL specific programs
+  can be built bi-arch without problems
+
+* Wed Nov 24 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-84
+- update from CVS
+  - fix memory leak in getaddrinfo if using nscd (#139559)
+  - handle large lines in /etc/hosts and /etc/networks
+    (#140378)
+  - add nonnull attributes to selected dirent.h and dlfcn.h
+    functions
+
+* Sun Nov 21 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-83
+- update from CVS
+  - add deprecated and/or nonnull attribute to some signal.h
+    functions
+  - speed up tzset () by only using stat instead of open/fstat
+    when calling tzset for the second and following time if
+    /etc/localtime has not changed
+- fix tgamma (BZ #552)
+
+* Sat Nov 20 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-82
+- update from CVS
+  - some malloc () checking
+  - libpthread.a object dependency cleanups (#115157)
+  - <bits/socket.h> fix for -std=c89 -pedantic-errors (#140132)
+
+* Fri Nov 19 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-81
+- don't use chunksize in <= 2 * SIZE_SZ free () checks
+
+* Fri Nov 19 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-80
+- update from CVS
+  - with -D_FORTIFY_SOURCE=2, prevent missing %%N$ formats
+  - for -D_FORTIFY_SOURCE=2 and %%n in writable format string,
+    issue special error message instead of using the buffer overflow
+    detected one
+  - speedup regex searching with REG_NOSUB, add RE_NO_SUB,
+    speedup searching with nested subexps (BZ #544)
+  - block SIGCANCEL in NPTL timer_* helper thread
+- further free () checking
+
+* Tue Nov 16 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-79
+- update from CVS
+- fix free () checking
+- move /etc/default/nss into glibc-common (hopefully fix #132392)
+
+* Mon Nov 15 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-78
+- update from CVS
+  - fix LD_DEBUG=statistics
+  - issue error message before aborting in __chk_fail ()
+- some more free () checking
+
+* Fri Nov 12 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-77
+- update from CVS
+  - speedup regex on palindromes (BZ #429)
+  - fix NPTL set{,e,re,res}[ug]id, so that even if making process
+    less priviledged all threads change their credentials successfully
+
+* Wed Nov 10 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-76
+- update from CVS
+  - fix regcomp crash (#138439)
+  - fix ftell{,o,o64} (#137885)
+  - robustification of nscd to cope with corrupt databases (#137140)
+  - fix NPTL with pthread_exit immediately after pthread_create (BZ #530)
+  - some regex optimizations
+
+* Tue Nov  2 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-75
+- update from CVS
+  - mktime cleanups (BZ #487, #473)
+  - unique comments in free(3) check error messages
+- adjust some x86_64 headers for -m32 (#129712)
+- object size checking support even with GCC-3.4.2-RH >= 3.4.2-8
+
+* Wed Oct 27 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-74
+- fix <netinet/udp.h> header
+- fix globfree (#137176)
+- fix exiting if there are dlmopened libraries in namespaces
+  other than main one not closed yet
+- export again _res_opcodes and __p_{class,type}_syms from
+  libresolv.so that were lost in -69
+
+* Thu Oct 21 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-73
+- remove setaltroot and key{_add,_request,ctl} also from Versions
+- back out _sys_errlist changes
+
+* Thu Oct 21 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-72
+- back out setaltroot and key{_add,_request,ctl} addition
+- fix severe x86-64 symbol versioning regressions that breaks
+  e.g. java binaries
+
+* Wed Oct 20 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-71
+- update from CVS
+  - fix minor catchsegv temp file handling vulnerability
+    (CAN-2004-0968, #136319)
+  - add 4 new errno codes
+  - setaltroot, key{_add,_request,ctl} syscalls on some arches
+  - export _dl_debug_state@GLIBC_PRIVATE from ld.so again for
+    gdb purpose
+  - use inet_pton to decide what is address and what is hostname
+    in getent (#135422)
+  - change dladdr/dladdr1, so that dli_saddr is the same kind
+    of value as dlsym/dlvsym return (makes difference on ia64/hppa only)
+  - fix catchsegv script so that it works with both 32-bit and 64-bit
+    programs on multi-arch platforms
+
+* Tue Oct 19 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-70
+- update from CVS
+- require newer selinux-policy (#135978)
+- add %%dir for /var/run/nscd and /var/db/nscd and %%ghost
+  files in it
+- conflict with gcc4 4.0.0-0.6 and earlier (needs __builtin_object_size)
+
+* Mon Oct 18 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-69
+- update from CVS
+  - object size checking support (-D_FORTIFY_SOURCE={1,2})
+
+* Thu Oct 14 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-68
+- update from CVS
+  - support for namespaces in the dynamic linker
+  - fix dlclose (BZ #77)
+  - libSegFault.so uses now backtrace() to work on IA-64, x86-64
+    and s390 (#130254)
+
+* Tue Oct 12 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-67
+- update from CVS
+  - use non-blocking sockets in resolver (#135234)
+  - reset pd->res options on thread exit, so that threads
+    reusing cached stacks get resolver state properly initialized
+    (BZ #434)
+
+* Wed Oct  6 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-66
+- update from CVS
+- avoid using perl in the spec file, buildrequire sed >= 3.95
+  (#127671)
+- export TIMEOUTFACTOR=16
+- fix _JMPBUF_CFA_UNWINDS_ADJ on s390{,x}
+
+* Tue Oct  5 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-65
+- update from CVS
+  - define _POSIX_THREAD_PROCESS_SHARED and _POSIX_CLOCK_SELECTION
+    to -1 in LinuxThreads
+  - define _POSIX_CPUTIME and _POSIX_THREAD_CPUTIME to 0
+    on i?86/ia64 and make sure sysconf (_SC_{,THREAD_}CPUTIME)
+    returns correct value
+- if _POSIX_CLOCK_SELECTION == -1 in nscd, still try
+  sysconf (_SC_CLOCK_SELECTION) and if it returns true,
+  dlopen libpthread.so and dlsym pthread_condattr_setclock
+- build nscd with -z relro and -z now
+
+* Mon Oct  4 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-64
+- update from CVS
+  - stop using __builtin_expect in assert and assert_perror
+    (#127606)
+  - try to avoid too much VA fragmentation with malloc
+    on flexmap layout (#118574)
+  - nscd robustification
+  - change valloc to use debugging hooks (#134385)
+- make glibc_post_upgrade more verbose on errors (Fergal Daly,
+  #125700)
+
+* Fri Oct  1 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-63
+- update from CVS
+  - fix __nscd_getgrouplist
+  - fix a typo in x86_64 pthread_mutex_timedwait fix
+
+* Fri Oct  1 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-62
+- update from CVS
+  - fix NPTL pthread_mutex_timedwait on i386/x86_64 (BZ #417)
+
+* Thu Sep 30 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-61
+- update from CVS
+  - some nscd fixes (#134193)
+  - cache initgroups in nscd (#132850)
+  - reread /etc/localtime in tzset () even if just mtime changed
+    (#133481)
+  - fix glob (#126460)
+  - another get_myaddress fix
+
+* Wed Sep 29 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-60
+- update from CVS
+  - fix get_myaddress (#133982)
+  - remove nonnull attribute from second utime argument (#133866)
+  - handle SIGSETXID the same way as SIGCANCEL in
+    sigaction/pthread_kill/sigwait/sigwaitinfo etc.
+  - add __extension__ to long long types in NPTL <bits/pthreadtypes.h>
+
+* Mon Sep 27 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-59
+- update from CVS
+  - fix BZ #151, #362, #381, #407
+  - fdim fix for +inf/+inf (BZ #376)
+
+* Sun Sep 26 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-58
+- update from CVS
+  - vasprintf fix (BZ #346)
+  - gettext locking (BZ #322)
+- change linuxthreads useldt.h inclusion login again, the last
+  one failed all linuxthreads FLOATING_STACKS tests
+
+* Sat Sep 25 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-57
+- update from CVS
+  - fix setuid in LD_ASSUME_KERNEL=2.2.5 libc (#133558)
+  - fix nis locking (#132204)
+  - RTLD_DEEPBIND support
+  - fix pthread_create bugs (BZ #401, #405)
+
+* Wed Sep 22 2004 Roland McGrath <roland@redhat.com> 2.3.3-56
+- migrated CVS to fedora-branch in sources.redhat.com glibc repository
+  - source tarballs renamed
+  - redhat/ moved to fedora/, some old cruft removed
+- update from trunk
+  - some __nonnull annotations
+
+* Wed Sep 22 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-55
+- update from CVS
+  - set{re,e,res}[ug]id now affect the whole process in NPTL
+  - return EAGAIN instead of ENOMEM when not enough memory
+    in pthread_create
+
+* Fri Sep 17 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-54
+- update from CVS
+  - nscd getaddrinfo caching
+
+* Tue Sep 14 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-53
+- restore temporarily old definition of __P()/__PMT()
+  for third party apps
+
+* Tue Sep 14 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-52
+- update from CVS
+  - nscd bi-arch fix
+  - remove all uses of __P()/__PMT() from glibc headers
+- update and reenable nscd SELinux patch
+- remove libnss1* and libnss*.so.1 compatibility NSS modules
+  on IA-32, SPARC and Alpha
+
+* Fri Sep 10 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-51
+- update from CVS
+  - disable one of the malloc double free checks for non-contiguous
+    arenas where it doesn't have to be true even for non-broken
+    apps
+
+* Thu Sep  9 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-50
+- update from CVS
+  - pwd/grp/host loops with nscd speed up by sharing the
+    nscd cache r/o with applications
+  - inexpensive double free check in free(3)
+  - make NPTL pthread.h initializers usable even from C++
+    (BZ #375)
+- use atomic instructions even in i386 nscd on i486+ CPUs
+  (conditionally)
+
+* Fri Sep  3 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-49
+- update from CVS
+- fix linuxthreads tst-cancel{[45],-static}
+
+* Fri Sep  3 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-48
+- update from CVS
+  - fix pthread_cond_destroy (BZ #342)
+  - fix fnmatch without FNM_NOESCAPE (BZ #361)
+  - fix ppc32 setcontext (BZ #357)
+- add NPTL support for i386 glibc (only if run on i486 or higher CPU)
+- add __NR_waitid defines for i386, x86_64 and sparc*
+
+* Tue Aug 31 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-47
+- update from CVS
+  - persistent nscd caching
+  - ppc64 32-bit atomicity fix
+  - fix x86-64 nptl-devel headers for -m32 compilation
+- %%ghost /etc/ld.so.cache (#130597)
+- edit /etc/ld.so.conf in glibc_post_upgrade if
+  include ld.so.conf.d/*.conf line is missing (#120588)
+- ugly hacks for the IA-64 /emul braindamage (#124996, #128267)
+
+* Sat Aug 21 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-46
+- update from CVS
+
+* Thu Aug 19 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-45
+- update from CVS
+  - fix nss_compat's initgroups handling (#130363)
+  - fix getaddrinfo ai_canonname setting
+
+* Thu Aug 19 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-44
+- update from CVS
+  - add ip6-dotint resolv.conf option, make
+    no-ip6-dotint the default
+- BuildPrereq libselinux-devel (#129946)
+- on ppc64, build without dot symbols
+
+* Thu Aug 12 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-43
+- update from CVS
+  - remove debugging printout (#129747)
+  - make <sys/shm.h> usable in C++ (IT#45148)
+- update RLIMIT_* constants in <bits/resource.h>, make
+  <sys/resource.h> POSIX compliant (#129740)
+
+* Wed Aug 11 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-42
+- fix last tzset () fixes, disable rereading of /etc/localtime
+  every time for now
+- really enable SELinux support for NSCD
+
+* Wed Aug 11 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-41
+- update from CVS
+  - fread_unlocked/fwrite_unlocked macro fixes (BZ #309, #316)
+  - tzset () fixes (BZ #154)
+- speed up pthread_rwlock_unlock on arches other than i386 and
+  x86_64 (#129455)
+- fix compilation with -ansi (resp. -std=c89 or -std=c99) and
+  -D_XOPEN_SOURCE=[56]00 but no -D_POSIX_SOURCE* or -D_POSIX_C_SOURCE*
+  (BZ #284)
+- add SELinux support for NSCD
+
+* Fri Aug  6 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-40
+- update from CVS
+  - change res_init to force all threads to re-initialize
+    resolver before they use it next time (#125712)
+  - various getaddrinfo and related fixes (BZ #295, #296)
+  - fix IBM{932,943} iconv modules (#128674)
+  - some nscd fixes (e.g. BZ #292)
+  - RFC 3678 support (Multicast Source Filters)
+- handle /lib/i686/librtkaio-* in i386 glibc_post_upgrade
+  the same as /lib/i686/librt-*
+
+* Fri Jul 23 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-39
+- update from CVS
+  - conformance related changes in headers
+- remove -finline-limit=2000 for GCC 3.4.x+
+
+* Thu Jul 22 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-38
+- update from CVS
+  - fix res_init leaks
+  - fix newlocale races
+  - fix ppc64 setjmp
+- fix strtold (BZ #274)
+
+* Fri Jul 16 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-37
+- update from CVS
+  - allow pthread_cancel in DSO destructors run at exit time
+- fix pow{f,,l} on IA-32 and powl on x86-64
+- allow PIEs on IA-32 to have main in a shared library they depend on
+
+* Mon Jul  5 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-36
+- s390* .plt slot reduction
+- fix pthread_rwlock_timedrdlock on x86_64
+
+* Wed Jun 30 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-35
+- tweak spec file for the libpthread-0.61.so -> libpthread-2.3.3.so
+  NPTL changes
+
+* Wed Jun 30 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-34
+- update from CVS
+  - if_nameindex using preferably netlink
+  - printf_parsemb initialization fix
+  - NPTL version is now the same as glibc version
+
+* Mon Jun 28 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-33
+- update from CVS
+  - reread resolv.conf for nscd --invalidate=hosts
+  - fix F_GETLK/F_SETLK/F_SETLKW constants on x86_64 for
+    -m32 -D_FILE_OFFSET_BITS=64 compilations
+  - avoid calling non-existing fcntl64 syscall on ppc64
+
+* Mon Jun 14 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-32
+- update from CVS
+  - FUTEX_CMP_REQUEUE support (fix pthread_cond_* deadlocks)
+  - fix backtrace in statically linked programs
+- rebuilt with GCC 3.4, adjusted ulps and i386 <bits/string.h>
+
+* Fri May 28 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-31
+- update from CVS
+- <bits/string2.h> and <bits/mathinline.h> changes for GCC 3.{2,4,5}+
+- make c_stubs buildable even with GCC 3.2.x (#123042)
+
+* Fri May 21 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-30
+- fix pthread_cond_wait on architectures other than IA-32 and
+  x86_64
+
+* Thu May 20 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-29
+- use lib64 instead of lib on ia64 if %%{_lib} is defined to lib64
+
+* Wed May 19 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-28
+- update from CVS
+  - FUTEX_REQUEUE fixes (#115349)
+  - SPARC GCC 3.4 build fix
+  - fix handling of undefined TLS symbols on IA32 (RELA only),
+    SPARC and SH
+  - regex translate fix
+  - speed up sprintf
+  - x86_64 makecontext alignment fix
+  - make POSIX sigpause the default sigpause, unless BSD sigpause
+    requested
+
+* Tue May 11 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-27
+- remove /lib64/tls/librtkaio-2.3.[23].so in glibc_post_upgrade
+  on x86-64, s390x and ppc64 instead of /lib/tls/librtkaio-2.3.[23].so
+- build mq_{send,receive} with -fexceptions
+
+* Fri May  7 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-26
+- update from CVS
+  - fix <tgmath.h>
+  - fix memory leaks in nis, getifaddrs, etc. caused by incorrect
+    use of realloc
+- remove /lib/{tls,i686}/librtkaio-2.3.[23].so in glibc_post_upgrade
+  and rerun ldconfig if needed, otherwise after glibc upgrade librt.so.1
+  might be a stale symlink
+
+* Wed May  5 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-25
+- update from CVS
+- disable FUTEX_REQUEUE (work around #115349)
+- mq for sparc/sparc64/ia64
+
+* Tue May  4 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-24
+- update from CVS
+  - define S_ISSOCK in -D_XOPEN_SOURCE=600 and S_I[FS]SOCK
+    plus F_[SG]ETOWN also in -D_XOPEN_SOURCE=500 (both
+    included already in XNS5)
+  - reorder dlopen checks, so that dlopening ET_REL objects
+    complains about != ET_DYN != ET_EXEC, not about phentsize
+    (#121606)
+  - fix strpbrk macro for GCC 3.4+ (BZ #130)
+  - fix <sys/sysctl.h> (BZ #140)
+  - sched_[gs]etaffinity documentation fix (BZ #131)
+  - fix sparc64 build (BZ #139)
+  - change linuxthreads back to use non-cancellable writes
+    to manager pipes etc.
+  - fix sem_timedwait return value in linuxthreads (BZ #133)
+  - ia64 unnecessary PLT relocs removal
+
+* Thu Apr 22 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-23
+- update from CVS
+  - fix *scanf
+  - fix shm_unlink, sem_unlink and mq_unlink errno values
+  - avoid memory leaks in error
+  - execstack fixes on s390
+
+* Mon Apr 19 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-22
+- update from CVS
+  - mq and timer fixes
+- rebuilt with binutils >= 2.15.90.0.3-2 to fix IA-64 statically
+  linked binaries
+- fix linuxthreads librt.so on s390{,x}, so it is no longer DT_TEXTREL
+
+* Sat Apr 17 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-21
+- disable rtkaio
+- update from CVS
+  - POSIX message passing support
+  - fixed SIGEV_THREAD support for POSIX timers
+  - fix free on non-malloced memory in syslog
+  - fix ffsl on some 64-bit arches
+  - fix sched_setaffinity on x86-64, ia64
+  - fix ppc64 umount
+  - NETID_AUTHORITATIVE, SERVICES_AUTHORITATIVE support
+  - various NIS speedups
+  - fix fwrite with > 2GB sizes on 64-bit arches
+  - fix pthread_getattr_np guardsize reporting in NPTL
+- report PLT relocations in ld.so and libc.so during the build
+
+* Thu Mar 25 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-20
+- update from CVS
+  - change NPTL PTHREAD_MUTEX_ADAPTIVE_NP mutexes to spin on SMP
+  - strtol speed optimization
+  - don't try to use certainly unimplemented syscalls on ppc64
+- kill -debug subpackage, move the libs to glibc-debuginfo{,-common}
+  into /usr/lib/debug/usr/%%{_lib}/ directory
+- fix c_stubs with gcc 3.4
+- move all the up to 3 builds into %%build scriptlet and
+  leave only installation in the %%install scriptlet
+
+* Mon Mar 22 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-19
+- update from CVS
+  - affinity API changes
+
+* Thu Mar 18 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-18
+- update from CVS
+  - fix ia64 iopl (#118591)
+  - add support for /etc/ld.so.conf.d/*.conf
+  - fix x86-64 LD_DEBUG=statistics
+- fix hwcap handling when using ld.so.cache (#118518)
+
+* Mon Mar 15 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-17
+- update from CVS
+  - implement non-_l function on top of _l functions
+
+* Thu Mar 11 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-16
+- update from CVS
+- fix s390{,x} TLS handling
+
+* Wed Mar 10 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-15
+- update from CVS
+  - special section for compatibility code
+  - make getpid () work even in vfork () child
+- configure with --enable-bind-now to avoid lazy binding in ld.so
+  and libc.so
+
+* Fri Mar  5 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-14
+- update from CVS
+  - fix iconv -c (#117021)
+  - fix PIEs on sparc/sparc64
+  - fix posix_fadvise on 64-bit architectures
+- add locale-archive as %%ghost file (#117014)
+
+* Mon Mar  1 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-13
+- update from CVS
+
+* Fri Feb 27 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-12
+- update from CVS
+
+* Fri Feb 27 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-11
+- update from CVS
+  - fix ld.so when vDSO is randomized
+
+* Fri Feb 20 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-10
+- update from CVS
+
+* Fri Feb 20 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-9
+- update from CVS
+
+* Tue Feb 10 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-8
+- update from CVS
+
+* Tue Jan 27 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-7
+- update from CVS
+  - dl_iterate_phdr extension to signal number of added/removed
+    libraries
+- fix PT_GNU_RELRO support on ppc* with prelinking
+
+* Fri Jan 23 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-6
+- rebuilt with fixed GCC on IA-64
+
+* Thu Jan 22 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-5
+- fix PT_GNU_RELRO support
+
+* Wed Jan 21 2004 Jakub Jelinek <jakub@redhat.com> 2.3.3-4
+- update from CVS
+  - some further regex speedups
+  - fix re.translate handling in regex (#112869)
+  - change regfree to match old regex behaviour (what is freed
+    and clearing of freed pointers)
+  - fix accesses to unitialized memory in regex (#113507, #113425,
+    #113421)
+  - PT_GNU_RELRO support
+
+* Tue Dec 30 2003 Jakub Jelinek <jakub@redhat.com> 2.3.3-3
+- update from CVS
+  - fix pmap_set fd and memory leak (#112726)
+- fix backreference handling in regex
+- rebuilt under glibc without the above bug to fix
+  libc.so linker script (#112738)
+
+* Mon Dec 29 2003 Jakub Jelinek <jakub@redhat.com> 2.3.3-2
+- update from CVS
+  - faster getpid () in NPTL builds
+  - fix to make pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, )
+    really disable cancellation (#112512)
+  - more regex fixes and speedups
+  - fix nextafter*/nexttoward*
+  - handle 6th syscall(3) argument on AMD64
+  - handle memalign/posix_memalign in mtrace
+  - fix linuxthreads memory leak (#112208)
+  - remove throw () from cancellation points in linuxthreads (#112602)
+  - fix NPTL unregister_atfork
+  - fix unwinding through alternate signal stacks
+
+* Mon Dec  1 2003 Jakub Jelinek <jakub@redhat.com> 2.3.3-1
+- update from CVS
+  - 2.3.3 release
+  - lots of regex fixes and speedups (#110401)
+  - fix atan2
+  - fix pshared condvars in NPTL
+  - fix pthread_attr_destroy for attributes created with
+    pthread_attr_init@GLIBC_2.0
+- for the time being, include both nb_NO* and no_NO* as locales
+  so that the distribution can catch up with the no_NO->nb_NO
+  transition
+- add BuildPrereq texinfo (#110252)
+
+* Tue Nov 18 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-102
+- update from CVS
+  - fix getifaddrs (CAN-2003-0859)
+  - fix ftw fd leak
+  - fix linuxthreads sigaction (#108634)
+  - fix glibc 2.0 stdio compatibility
+  - fix uselocale (LC_GLOBAL_LOCALE)
+  - speed up stdio locking in non-threaded programs on IA-32
+  - try to maintain correct order of cleanups between those
+    registered with __attribute__((cleanup))
+    and with LinuxThreads style pthread_cleanup_push/pop (#108631)
+  - fix segfault in regex (#109606)
+  - fix RE_ICASE multi-byte handling in regex
+  - fix pthread_exit in libpthread.a (#109790)
+  - FTW_ACTIONRETVAL support
+  - lots of regex fixes and speedups
+  - fix ceill/floorl on AMD64
+
+* Mon Oct 27 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-101
+- update from CVS
+  - fix ld.so --verify (and ldd)
+
+* Mon Oct 27 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-100
+- update from CVS
+  - fix sprof (#103727)
+  - avoid infinite loops in {,f}statvfs{,64} with hosed mounts file
+  - prevent dlopening of executables
+  - fix glob with GLOB_BRACE and without GLOB_NOESCAPE
+  - fix locale printing of word values on 64-bit big-endian arches
+    (#107846)
+  - fix getnameinfo and getaddrinfo with reverse IPv6 lookups
+    (#101261)
+
+* Wed Oct 22 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-99
+- update from CVS
+  - dl_iterate_phdr in libc.a on arches other than IA-64
+  - LD_DEBUG=statistics prints number of relative relocations
+  - fix hwcap computation
+- NPTL is now part of upstream glibc CVS
+- include {st,xh,zu}_ZA{,.UTF-8} locales
+
+* Sat Oct  4 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-98
+- update from CVS
+  - fix close, pause and fsync (#105348)
+  - fix pthread_once on IA-32
+- implement backtrace () on IA-64, handle -fomit-frame-pointer
+  in AMD64 backtrace () (#90402)
+
+* Tue Sep 30 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-97
+- update from CVS
+  - fix <sys/sysmacros.h> with C++ or -ansi or -pedantic C
+  - fix mknod/ustat return value when given bogus device number (#105768)
+
+* Fri Sep 26 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-96
+- rebuilt
+
+* Fri Sep 26 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-95
+- fix IA-64 getcontext
+
+* Thu Sep 25 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-94
+- update from CVS
+- fix syslog with non-C non-en_* locales (#61296, #104979)
+- filter GLIBC_PRIVATE symbols from glibc provides
+- fix NIS+
+
+* Thu Sep 25 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-93
+- update from CVS
+- assume 2.4.21 kernel features on RHEL/ppc*, so that
+  {make,set,get,swap}context works
+- backout execstack support for RHEL
+- build rtkaio on amd64 too
+
+* Wed Sep 24 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-92
+- update from CVS
+  - execstack/noexecstack support
+  - build nscd as PIE
+- move __libc_stack_end back to @GLIBC_2.1
+- build against elfutils >= 0.86 to fix stripping on s390x
+
+* Mon Sep 22 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-91
+- rebuilt
+
+* Mon Sep 22 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-90
+- update from CVS
+  - NPTL locking change (#102682)
+- don't jump around lock on amd64
+
+* Thu Sep 18 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-89
+- fix open_memstream/syslog (#104661)
+
+* Thu Sep 18 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-88
+- update from CVS
+  - retrieve affinity in pthread_getattr_np
+  - fix pthread_attr_[gs]etaffinity_np
+  - handle hex and octal in wordexp
+
+* Wed Sep 17 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-87
+- update from CVS
+  - truncate instead of round in utimes when utimes syscall is not available
+  - don't align stack in every glibc function unnecessarily on IA-32
+  - make sure threads have their stack 16 byte aligned on IA-32
+  - move sched_[sg]etaffinity to GLIBC_2.3.3 symbol version (#103231)
+  - fix pthread_getattr_np for the initial thread (#102683)
+  - avoid linuxthreads signal race (#104368)
+- ensure all gzip invocations are done with -n option
+
+* Fri Sep 12 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-86
+- update from CVS
+- avoid linking in libgcc_eh.a unnecessarily
+- change ssize_t back to long int on s390 -m31, unless
+  gcc 2.95.x is used
+
+* Wed Sep 10 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-85
+- update from CVS
+  - fix IA-64 memccpy (#104114)
+
+* Tue Sep  9 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-84
+- update from CVS
+  - undo broken amd64 signal context changes
+
+* Tue Sep  9 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-83
+- update from CVS
+- change *nlink_t, *ssize_t and *intptr_t types on s390 -m31 to
+  {unsigned,} int
+- change *u_quad_t, *quad_t, *qaddr_t, *dev_t, *ino64_t, *loff_t,
+  *off64_t, *rlim64_t, *blkcnt64_t, *fsblkcnt64_t, *fsfilcnt64_t
+  on 64-bit arches from {unsigned,} long long int {,*} to
+  {unsigned,} long int {,*} to restore binary compatibility
+  for C++ functions using these types as arguments
+
+* Sun Sep  7 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-82
+- rebuilt
+
+* Sat Sep  6 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-81
+- update from CVS
+  - fix tc[gs]etattr/cf[gs]et[io]speed on ppc (#102732)
+  - libio fixes
+
+* Thu Sep  4 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-80
+- update from CVS
+  - fix IA-64 cancellation when mixing __attribute__((cleanup ()))
+    and old-style pthread_cleanup_push cleanups
+
+* Tue Sep  2 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-79
+- updated from CVS
+  - lots of cancellation fixes
+  - fix posix_fadvise* on ppc32
+  - TLS layout fix
+  - optimize stdio cleanups (#103354)
+  - sparcv9 NPTL
+  - include sigset, sighold, sigrelse, sigpause and sigignore prototypes
+    in signal.h even if -D_XOPEN_SOURCE_EXTENDED (#103269)
+  - fix svc_getreqset on 64-bit big-endian arches
+  - return ENOSYS in linuxthreads pthread_barrierattr_setpshared for
+    PTHREAD_PROCESS_SHARED
+  - add pthread_cond_timedwait stubs to libc.so (#102709)
+- split glibc-devel into glibc-devel and glibc-headers to ensure
+  amd64 /usr/include always wins on amd64/i386 bi-arch installs
+- increase PTHREAD_STACK_MIN on alpha, ia64 and sparc*
+- get rid of __syscall_* prototypes and stubs in sysdeps/unix/sysv/linux
+- run make check also with linuxthreads (on IA-32 non-FLOATING_STACKS)
+  ld.so and NPTL (on IA-32 also FLOATING_STACKS linuxthreads) libraries
+  and tests
+
+* Mon Aug 25 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-78
+- include dl-osinfo.h only in glibc-debuginfo-2*.rpm, not
+  in glibc-debuginfo-common*
+
+* Mon Aug 25 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-77
+- update from CVS
+  - fix glibc 2.0 libio compatibility (#101385)
+  - fix ldconfig with /usr/lib/lib*.so symlinks (#102853)
+  - fix assert.h (#102916, #103017)
+  - make ld.so.cache identical between IA-32 and AMD64 (#102887)
+  - fix static linking of large IA-64 binaries (#102586)
+- avoid using floating point regs in lazy binding code on ppc64 (#102763)
+
+* Fri Aug 22 2003 Roland McGrath <roland@redhat.com> 2.3.2-76
+- add td_thr_tls_get_addr changes missed in initial nptl_db rewrite
+
+* Sun Aug 17 2003 Roland McGrath <roland@redhat.com> 2.3.2-74
+- nptl_db rewrite not yet in CVS
+
+* Thu Aug 14 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-72
+- update from CVS
+  - fix rtkaio aio_fsync{,64}
+  - update rtkaio for !BROKEN_THREAD_SIGNALS
+  - fix assert macro when used on pointers
+
+* Wed Aug 13 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-71
+- update from CVS
+
+* Tue Aug 12 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-70
+- update from CVS
+- disable CLONE_STOPPED for now until it is resolved
+- strip crt files
+- fix libio on arches with no < GLIBC_2.2 support (#102102, #102105)
+- fix glibc-debuginfo to include all nptl and nptl_db sources
+
+* Thu Aug  7 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-69
+- update from CVS
+  - fix pthread_create@GLIBC_2.0 (#101767)
+- __ASSUME_CLONE_STOPPED on all arches but s390* in RHEL
+
+* Sun Aug  3 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-68
+- update from CVS
+  - only use CLONE_STOPPED if kernel supports it, fix setting of thread
+    explicit scheduling (#101457)
+
+* Fri Aug  1 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-67
+- update from CVS
+  - fix utimes and futimes if kernel doesn't support utimes syscall
+  - fix s390 ssize_t type
+  - fix dlerror when called before any dlopen/dlsym
+  - update IA-64 bits/sigcontext.h (#101344)
+  - various warning fixes
+  - fix pthread.h comment typos (#101363)
+
+* Wed Jul 30 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-66
+- update from CVS
+- fix dlopen of libraries using TLS IE/LE models
+
+* Tue Jul 29 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-65
+- update from CVS
+  - fix timer_create
+  - use __extension__ before long long typedefs in <bits/types.h> (#100718)
+
+* Mon Jul 28 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-64
+- update from CVS
+  - fix wcpncpy (#99462)
+  - export _res@GLIBC_2.0 even from NPTL libc.so (__res_state ()
+    unlike __errno_location () or __h_errno_location () was introduced
+    in glibc 2.2)
+  - fix zic bug on 64-bit platforms
+  - some TLS handling fixes
+  - make ldconfig look into alternate ABI dirs by default (#99402)
+- move %%{_datadir}/zoneinfo to tzdata package, so that it can be
+  errataed separately from glibc
+- new add-on - rtkaio
+- prereq libgcc, as glibc now relies on libgcc_s.so.1 for pthread_cancel
+
+* Tue Jul 15 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-63
+- fix thread cancellation on ppc64
+
+* Sat Jul 12 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-62
+- update from CVS
+  - fix thread cancellation on ppc32, s390 and s390x
+
+* Thu Jul 10 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-61
+- update from CVS
+  - build libc_nonshared.a with -fPIC instead of -fpic
+- fix ppc64 PIE support
+- add cfi directives to NPTL sysdep-cancel.h on ppc/ppc64/s390/s390x
+
+* Tue Jul  8 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-60
+- update from CVS
+
+* Thu Jul  3 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-59
+- update from CVS
+- on IA-64 use different symbols for cancellation portion of syscall
+  handlers to make gdb happier
+
+* Thu Jun 26 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-58
+- update from CVS
+  - nss_compat supporting LDAP etc.
+
+* Tue Jun 24 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-57
+- update from CVS
+
+* Thu Jun 19 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-56
+- fix condvars and semaphores in ppc* NPTL
+- fix test-skeleton.c reporting of timed-out tests (#91269)
+- increase timeouts for tests during make check
+
+* Wed Jun 18 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-55
+- make ldconfig default to both /lib+/usr/lib and /lib64+/usr/lib64
+  on bi-ABI architectures (#97557)
+- disable FUTEX_REQUEUE on ppc* temporarily
+
+* Wed Jun 18 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-54
+- update from CVS
+- fix glibc_post_upgrade on ppc
+
+* Tue Jun 17 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-53
+- update from CVS
+- fix localedef (#90659)
+- tweak linuxthreads for librt cancellation
+
+* Mon Jun 16 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-52
+- update from CVS
+
+* Thu Jun 12 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-51
+- update from CVS
+- fix <gnu/stubs.h> (#97169)
+
+* Wed Jun 11 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-50
+- update from CVS
+
+* Tue Jun 10 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-49
+- update from CVS
+  - fix pthread_cond_signal on IA-32 (#92080, #92253)
+  - fix setegid (#91567)
+- don't prelink -R libc.so on any architecture, it prohibits
+  address randomization
+
+* Thu Jun  5 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-48
+- update from CVS
+  - fix IA-64 NPTL build
+
+* Thu Jun  5 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-47
+- update from CVS
+- PT_GNU_STACK segment in binaries/executables and .note.GNU-stack
+  section in *.[oa]
+
+* Sun Jun  1 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-46
+- update from CVS
+- enable NPTL on AMD64
+- avoid using trampolines in localedef
+
+* Thu May 29 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-45
+- enable NPTL on IA-64
+
+* Thu May 29 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-44
+- update from CVS
+- enable NPTL on s390 and s390x
+- make __init_array_start etc. symbols in elf-init.oS hidden undefined
+
+* Thu May 29 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-43
+- update from CVS
+
+* Fri May 23 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-42
+- update from CVS
+
+* Tue May 20 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-41
+- update from CVS
+- use NPTL libs if uname -r contains nptl substring or is >= 2.5.69
+  or set_tid_address syscall is available instead of checking
+  AT_SYSINFO dynamic tag
+
+* Thu May 15 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-40
+- update from CVS
+
+* Wed May 14 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-39
+- update from CVS
+  - fix for prelinking of libraries with no dependencies
+
+* Tue May 13 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-38
+- update from CVS
+- enable NPTL on ppc and ppc64
+
+* Tue May  6 2003 Matt Wilson <msw@redhat.com> 2.3.2-37
+- rebuild
+
+* Sun May  4 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-36
+- update from CVS
+
+* Sat May  3 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-35
+- update from CVS
+  - make -jN build fixes
+
+* Fri May  2 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-34
+- update from CVS
+- avoid using trampolines in iconvconfig for now
+
+* Sat Apr 26 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-33
+- update from CVS
+
+* Fri Apr 25 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-32
+- update from CVS
+- more ppc TLS fixes
+
+* Wed Apr 23 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-31
+- update from CVS
+  - nscd fixes
+  - fix Bahrain spelling (#56298)
+  - fix Ukrainian collation (#83973)
+  - accept trailing spaces in /etc/ld.so.conf (#86032)
+  - perror fix (#85994)
+  - fix localedef (#88978)
+  - fix getifaddrs (#89026)
+  - fix strxfrm (#88409)
+- fix ppc TLS
+- fix getaddrinfo (#89448)
+- don't print warning about errno, h_errno or _res if
+  LD_ASSUME_KERNEL=2.4.1 or earlier
+
+* Tue Apr 15 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-30
+- update from CVS
+- fix prelink on ppc32
+- add TLS support on ppc32 and ppc64
+- make sure on -m64 arches all helper binaries are built with this
+  option
+
+* Mon Apr 14 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-29
+- update from CVS
+  - fix strxfrm (#88409)
+- use -m64 -mno-minimal-toc on ppc64
+- conflict with kernels < 2.4.20 on ppc64 and < 2.4.0 on x86_64
+- link glibc_post_upgrade against newly built libc.a
+
+* Sun Apr 13 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-28
+- update from CVS
+  - fix NPTL pthread_detach and already terminated, but not yet
+    joined thread (#88219)
+  - fix bug-regex4 testcase (#88118)
+  - reenable prelink support broken in 2.3.2-13
+  - fix register_printf_function (#88052)
+  - fix double free with fopen using ccs= (#88056)
+  - fix potential access below $esp in {set,swap}context (#88093)
+  - fix buffer underrun in gencat -H (#88099)
+  - avoid using unitialized variable in tst-tgmath (#88101)
+  - fix gammal (#88104)
+  - fix iconv -c
+  - fix xdr_string (PR libc/4999)
+  - fix /usr/lib/nptl/librt.so symlink
+  - avoid running NPTL cleanups twice in some cases
+  - unblock __pthread_signal_cancel in linuxthreads, so that
+    linuxthreads threaded programs work correctly if spawned
+    from NPTL threaded programs
+  - fix sysconf _SC_{NPROCESSORS_{CONF,ONLN},{,AV}PHYS_PAGES}
+- remove /lib/i686 directory before running ldconfig in glibc post
+  during i686 -> i386 glibc "upgrades" (#88456)
+
+* Wed Apr  2 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-22
+- update from CVS
+  - add pthread_atfork to libpthread.a
+
+* Tue Apr  1 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-21
+- update from CVS
+- make sure linuxthreads pthread_mutex_lock etc. is not a cancellation
+  point
+
+* Sat Mar 29 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-20
+- update from CVS
+- if kernel >= 2.4.1 doesn't support NPTL, fall back to
+  /lib/i686 libs on i686, not stright to /lib
+
+* Fri Mar 28 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-19
+- update from CVS
+  - timers fixes
+
+* Thu Mar 27 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-18
+- update from CVS
+- fix NPTL pthread_cond_timedwait
+- fix sysconf (_SC_MONOTONIC_CLOCK)
+- use /%%{_lib}/tls instead of /lib/tls on x86-64
+- add /%%{_lib}/tls/librt*so* and /%%{_lib}/i686/librt*so*
+- display content of .out files for all make check failures
+
+* Wed Mar 26 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-17
+- update from CVS
+  - kernel POSIX timers support
+
+* Sat Mar 22 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-16
+- update from CVS
+  - export __fork from glibc again
+- fix glibc-compat build in NPTL
+- fix c_stubs
+- fix some more atomic.h problems
+- don't check abi in glibc-compat libs
+
+* Fri Mar 21 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-15
+- update from CVS
+- build glibc-compat (for glibc 2.0 compatibility) and c_stubs add-ons
+- condrestart sshd in glibc_post_upgrade so that the user can
+  log in remotely and handle the rest (#86339)
+- fix a typo in glibc_post_upgrade on sparc
+
+* Tue Mar 18 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-14
+- update from CVS
+- change i686/athlon libc.so.6 base to 0x00e80000
+
+* Mon Mar 17 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-13
+- update from CVS
+  - hopefully last fix for condvar problems
+
+* Fri Mar 14 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-12
+- fix bits/syscall.h creation on x86-64
+
+* Thu Mar 13 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-11
+- update from CVS
+
+* Wed Mar 12 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-10
+- update from CVS
+
+* Tue Mar 11 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-9
+- update from CVS
+- fix glibc-debug description (#85111)
+- make librt.so a symlink again, not linker script
+
+* Tue Mar  4 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-8
+- update from CVS
+- remove the workarounds for broken software accessing GLIBC_PRIVATE
+  symbols
+
+* Mon Mar  3 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-7
+- update from CVS
+
+* Sun Mar  2 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-6
+- fix TLS IE/LE model handling in dlopened libraries
+  on TCB_AT_TP arches
+
+* Tue Feb 25 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-5
+- update from CVS
+
+* Tue Feb 25 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-4
+- update from CVS
+
+* Mon Feb 24 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-3
+- update from CVS
+- only warn about errno, h_errno or _res for binaries, never
+  libraries
+- rebuilt with gcc-3.2.2-4 to use direct %%gs TLS access insn sequences
+
+* Sun Feb 23 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-2
+- update from CVS
+
+* Sat Feb 22 2003 Jakub Jelinek <jakub@redhat.com> 2.3.2-1
+- update from CVS
+
+* Thu Feb 20 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-51
+- update from CVS
+
+* Wed Feb 19 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-50
+- update from CVS
+
+* Wed Feb 19 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-49
+- update from CVS
+- remove nisplus and nis from the default nsswitch.conf (#67401, #9952)
+
+* Tue Feb 18 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-48
+- update from CVS
+
+* Sat Feb 15 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-47
+- update from CVS
+
+* Fri Feb 14 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-46
+- update from CVS
+  - pthread_cond* NPTL fixes, new NPTL testcases
+
+* Thu Feb 13 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-45
+- update from CVS
+- include also linuxthreads FLOATING_STACKS libs on i686 and athlon:
+  LD_ASSUME_KERNEL=2.2.5 to LD_ASSUME_KERNEL=2.4.0 is non-FLOATING_STACKS lt,
+  LD_ASSUME_KERNEL=2.4.1 to LD_ASSUME_KERNEL=2.4.19 is FLOATING_STACKS lt,
+  later is NPTL
+- enable TLS on alpha/alphaev6
+- add BuildPreReq: /usr/bin/readlink
+
+* Tue Feb 11 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-44
+- update from CVS
+  - pthread_once fix
+
+* Mon Feb 10 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-43
+- update from CVS
+- vfork fix on s390
+- rebuilt with binutils 2.13.90.0.18-5 so that accesses to errno
+  don't bind locally (#83325)
+
+* Thu Feb 06 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-42
+- update from CVS
+- fix pthread_create after vfork+exec in linuxthreads
+
+* Wed Feb 05 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-41
+- update from CVS
+
+* Thu Jan 30 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-40
+- update from CVS
+
+* Wed Jan 29 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-39
+- update from CVS
+- enable TLS on s390{,x} and sparc{,v9}
+
+* Fri Jan 17 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-38
+- update from CVS
+- initialize __environ in glibc_post_upgrade to empty array,
+  so that it is not NULL
+- compat symlink for s390x /lib/ld64.so.1
+- enable glibc-profile on x86-64
+- only include libNoVersion.so on IA-32, Alpha and Sparc 32-bit
+
+* Thu Jan 16 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-37
+- update from CVS
+  - nscd fixes, *scanf fix
+- fix %%nptlarches noarch build (#81909)
+- IA-64 TLS fixes
+
+* Tue Jan 14 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-36
+- update from CVS
+- rework -debuginfo subpackage, add -debuginfo-common
+  subpackage on IA-32, Alpha and Sparc (ie. auxiliary arches)
+- fix vfork in libc.a on PPC32, Alpha, Sparc
+- fix libio locks in linuxthreads libc.so if libpthread.so
+  is dlopened later (#81374)
+
+* Mon Jan 13 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-35
+- update from CVS
+  - dlclose bugfixes
+- fix NPTL libpthread.a
+- fix glibc_post_upgrade on several arches
+
+* Sat Jan 11 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-34
+- update from CVS
+- TLS support on IA-64
+
+* Wed Jan  8 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-33
+- fix vfork in linuxthreads (#81377, #81363)
+
+* Tue Jan  7 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-32
+- update from CVS
+- don't use TLS libs if kernel doesn't set AT_SYSINFO
+  (#80921, #81212)
+- add ntp_adjtime on alpha (#79996)
+- fix nptl_db (#81116)
+
+* Sun Jan  5 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-31
+- update from CVS
+- support all architectures again
+
+* Fri Jan  3 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-30
+- fix condvar compatibility wrappers
+- add ugly hack to use non-TLS libs if a binary is seen
+  to have errno, h_errno or _res symbols in .dynsym
+
+* Fri Jan  3 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-29
+- update from CVS
+  - fixes for new condvar
+
+* Thu Jan  2 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-28
+- new NPTL condvar implementation plus related linuxthreads
+  symbol versioning updates
+
+* Thu Jan  2 2003 Jakub Jelinek <jakub@redhat.com> 2.3.1-27
+- update from CVS
+- fix #include <sys/stat.h> with -D_BSD_SOURCE or without
+  feature set macros
+- make *sigaction, sigwait and raise the same between
+  -lpthread -lc and -lc -lpthread in linuxthreads builds
+
+* Tue Dec 31 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-26
+- fix dlclose
+
+* Sun Dec 29 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-25
+- enable sysenter by default for now
+- fix endless loop in ldconfig
+
+* Sat Dec 28 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-24
+- update from CVS
+
+* Fri Dec 27 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-23
+- update from CVS
+  - fix ptmalloc_init after clearenv (#80370)
+
+* Sun Dec 22 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-22
+- update from CVS
+- add IA-64 back
+- move TLS libraries from /lib/i686 to /lib/tls
+
+* Thu Dec 19 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-21
+- system(3) fix for linuxthreads
+- don't segfault in pthread_attr_init from libc.so
+- add cancellation tests from nptl to linuxthreads
+
+* Wed Dec 18 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-20
+- fix up lists of exported symbols + their versions
+  from the libraries
+
+* Wed Dec 18 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-19
+- fix --with-tls --enable-kernel=2.2.5 libc on IA-32
+
+* Wed Dec 18 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-18
+- update from CVS
+  - fix NPTL hanging mozilla
+  - initialize malloc in mALLOPt (fixes problems with squid, #79957)
+  - make linuxthreads work with dl_dynamic_weak 0
+  - clear dl_dynamic_weak everywhere
+
+* Tue Dec 17 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-17
+- update from CVS
+  - NPTL socket fixes, flockfile/ftrylockfile/funlockfile fix
+  - kill -debug sub-package, rename -debug-static to -debug
+  - clear dl_dynamic_weak for NPTL
+
+* Mon Dec 16 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-16
+- fix <bits/mathinline.h> and <bits/nan.h> for C++
+- automatically generate NPTL libpthread wrappers
+
+* Mon Dec 16 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-15
+- update from CVS
+  - all functions which need cancellation should now be cancellable
+    both in libpthread.so and libc.so
+  - removed @@GLIBC_2.3.2 cancellation wrappers
+
+* Fri Dec 13 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-14
+- update from CVS
+  - replace __libc_lock_needed@GOTOFF(%%ebx) with
+    %%gs:offsetof(tcbhead_t, multiple_threads)
+  - start of new NPTL cancellation wrappers
+
+* Thu Dec 12 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-13
+- update from CVS
+- use inline locks in malloc
+
+* Tue Dec 10 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-12
+- update from CVS
+  - support LD_ASSUME_KERNEL=2.2.5 in statically linked programs
+
+* Mon Dec  9 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-11
+- update from CVS
+- rebuilt with gcc-3.2.1-2
+
+* Fri Dec  6 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-10
+- update from CVS
+- non-nptl --with-tls --without-__thread FLOATING_STACKS libpthread
+  should work now
+- faster libc locking when using nptl
+- add OUTPUT_FORMAT to linker scripts
+- fix x86_64 sendfile (#79111)
+
+* Wed Dec  4 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-9
+- update from CVS
+  - RUSCII support (#78906)
+- for nptl builds add BuildRequires
+- fix byteswap.h for non-gcc (#77689)
+- add nptl-devel package
+
+* Tue Dec  3 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-8
+- update from CVS
+  - make --enable-kernel=2.2.5 --with-tls --without-__thread
+    ld.so load nptl and other --with-__thread libs
+- disable nptl by default for now
+
+* Wed Nov 27 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-7
+- update from CVS
+- restructured redhat/Makefile and spec, so that src.rpm contains
+  glibc-<date>.tar.bz2, glibc-redhat-<date>.tar.bz2 and glibc-redhat.patch
+- added nptl
+
+* Fri Nov  8 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-6
+- update from CVS
+  - even more regex fixes
+- run sed testsuite to check glibc regex
+
+* Thu Oct 24 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-5
+- fix LD_DEBUG=statistics and LD_TRACE_PRELINKING in programs
+  using libpthread.so.
+
+* Thu Oct 24 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-4
+- update from CVS
+  - fixed %%a and %%A in *printf (#75821)
+  - fix re_comp memory leaking (#76594)
+
+* Tue Oct 22 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-3
+- update from CVS
+  - some more regex fixes
+- fix libpthread.a (#76484)
+- fix locale-archive enlarging
+
+* Fri Oct 18 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-2
+- update from CVS
+  - don't need to use 128K of stacks for DNS lookups
+  - regex fixes
+  - updated timezone data e.g. for this year's Brasil DST
+    changes
+  - expand ${LIB} in RPATH/RUNPATH/dlopen filenames
+
+* Fri Oct 11 2002 Jakub Jelinek <jakub@redhat.com> 2.3.1-1
+- update to 2.3.1 final
+  - support really low thread stack sizes (#74073)
+- tzdata update
+
+* Wed Oct  9 2002 Jakub Jelinek <jakub@redhat.com> 2.3-2
+- update from CVS
+  - handle low stack limits
+  - move s390x into */lib64
+
+* Thu Oct  3 2002 Jakub Jelinek <jakub@redhat.com> 2.3-1
+- update to 2.3 final
+  - fix freopen on libstdc++ <= 2.96 stdin/stdout/stderr (#74800)
+
+* Sun Sep 29 2002 Jakub Jelinek <jakub@redhat.com> 2.2.94-3
+- don't prelink -r libc.so on ppc/x86-64/sparc*, it doesn't
+  speed things up, because they are neither REL arches, nor
+  ELF_MACHINE_REL_RELATIVE
+- fix sparc64 build
+
+* Sun Sep 29 2002 Jakub Jelinek <jakub@redhat.com> 2.2.94-2
+- update from CVS
+
+* Sat Sep 28 2002 Jakub Jelinek <jakub@redhat.com> 2.2.94-1
+- update from CVS
+- prelink on ppc and x86-64 too
+- don't remove ppc memset
+- instead of listing on which arches to remove glibc-compat
+  list where it should stay
+
+* Fri Sep  6 2002 Jakub Jelinek <jakub@redhat.com> 2.2.93-5
+- fix wcsmbs functions with invalid character sets (or malloc
+  failures)
+- make sure __ctype_b etc. compat vars are updated even if
+  they are copy relocs in the main program
+
+* Thu Sep  5 2002 Jakub Jelinek <jakub@redhat.com> 2.2.93-4
+- fix /lib/libnss1_dns.so.1 (missing __set_h_errno definition
+  leading to unresolved __set_h_errno symbol)
+
+* Wed Sep  4 2002 Jakub Jelinek <jakub@redhat.com> 2.2.93-3
+- security fix - increase dns-network.c MAXPACKET to at least
+  65536 to avoid buffer overrun. Likewise glibc-compat
+  dns-{host,network}.c.
+
+* Tue Sep  3 2002 Jakub Jelinek <jakub@redhat.com> 2.2.93-2
+- temporarily add back __ctype_b, __ctype_tolower and __ctype_toupper to
+  libc.a and export them as @@GLIBC_2.0 symbols, not @GLIBC_2.0
+  from libc.so - we have still lots of .a libraries referencing
+  __ctype_{b,tolower,toupper} out there...
+
+* Tue Sep  3 2002 Jakub Jelinek <jakub@redhat.com> 2.2.93-1
+- update from CVS
+  - 2.2.93 release
+  - use double instead of single indirection in isXXX macros
+  - per-locale wcsmbs conversion state
+
+* Sat Aug 31 2002 Jakub Jelinek <jakub@redhat.com> 2.2.92-2
+- update from CVS
+  - fix newlocale/duplocale/uselocale
+- disable profile on x86_64 for now
+
+* Sat Aug 31 2002 Jakub Jelinek <jakub@redhat.com> 2.2.92-1
+- update from CVS
+  - 2.2.92 release
+  - fix gettext after uselocale
+  - fix locales in statically linked threaded programs
+  - fix NSS
+
+* Thu Aug 29 2002 Jakub Jelinek <jakub@redhat.com> 2.2.91-1
+- update from CVS
+  - 2.2.91 release
+  - fix fd leaks in locale-archive reader (#72043)
+- handle EROFS in build-locale-archive gracefully (#71665)
+
+* Wed Aug 28 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-27
+- update from CVS
+  - fix re_match (#72312)
+- support more than 1024 threads
+
+* Fri Aug 23 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-26
+- update from CVS
+  - fix i386 build
+
+* Thu Aug 22 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-25
+- update from CVS
+  - fix locale-archive loading hang on some (non-primary) locales
+    (#72122, #71878)
+  - fix umount problems with locale-archives when /usr is a separate
+    partition (#72043)
+- add LICENSES file
+
+* Fri Aug 16 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-24
+- update from CVS
+  - only mmap up to 2MB of locale-archive on 32-bit machines
+    initially
+  - fix fseek past end + fread segfault with mmaped stdio
+- include <sys/debugreg.h> which is mistakenly not included
+  in glibc-devel on IA-32
+
+* Fri Aug 16 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-23
+- don't return normalized locale name in setlocale when using
+  locale-archive
+
+* Thu Aug 15 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-22
+- update from CVS
+  - optimize for primary system locale
+- localedef fixes (#71552, #67705)
+
+* Wed Aug 14 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-21
+- fix path to locale-archive in libc reader
+- build locale archive at glibc-common %%post time
+- export __strtold_internal and __wcstold_internal on Alpha again
+- workaround some localedata problems
+
+* Tue Aug 13 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-20
+- update from CVS
+- patch out set_thread_area for now
+
+* Fri Aug  9 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-19
+- update from CVS
+- GB18030 patch from Yu Shao
+- applied Debian patch for getaddrinfo IPv4 vs. IPv6
+- fix regcomp (#71039)
+
+* Sun Aug  4 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-18
+- update from CVS
+- use /usr/sbin/prelink, not prelink (#70376)
+
+* Thu Jul 25 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-17
+- update from CVS
+
+* Thu Jul 25 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-16
+- update from CVS
+  - ungetc fix (#69586)
+  - fseek errno fix (#69589)
+  - change *etrlimit prototypes for C++ (#68588)
+- use --without-tls instead of --disable-tls
+
+* Thu Jul 11 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-15
+- set nscd user's shell to /sbin/nologin (#68369)
+- fix glibc-compat buffer overflows (security)
+- buildrequire prelink, don't build glibc's own copy of it (#67567)
+- update from CVS
+  - regex fix (#67734)
+  - fix unused warnings (#67706)
+  - fix freopen with mmap stdio (#67552)
+  - fix realloc (#68499)
+
+* Tue Jun 25 2002 Bill Nottingham <notting@redhat.com> 2.2.90-14
+- update from CVS
+  - fix argp on long words
+  - update atime in libio
+
+* Sat Jun 22 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-13
+- update from CVS
+  - a thread race fix
+  - fix readdir on invalid dirp
+
+* Wed Jun 19 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-12
+- update from CVS
+  - don't use __thread in headers
+- fix system(3) in threaded apps
+- update prelink, so that it is possible to prelink -u libc.so.6.1
+  on Alpha
+
+* Fri Jun  7 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-11
+- update from CVS
+  - fix __moddi3 (#65612, #65695)
+  - fix ether_line (#64427)
+- fix setvbuf with mmap stdio (#65864)
+- --disable-tls for now, waiting for kernel
+- avoid duplication of __divtf3 etc. on IA-64
+- make sure get*ent_r and _IO_wfile_jumps are exported (#62278)
+
+* Tue May 21 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-10
+- update from CVS
+  - fix Alpha pthread bug with gcc 3.1
+
+* Fri Apr 19 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-35
+- fix nice
+
+* Mon Apr 15 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-34
+- add relocation dependencies even for weak symbols (#63422)
+- stricter check_fds check for suid/sgid binaries
+- run make check at %%install time
+
+* Sat Apr 13 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-33
+- handle Dec 31 1969 in mktime for timezones west of GMT (#63369)
+- back out do-lookup.h change (#63261, #63305)
+- use "memory" clobber instead all the fancy stuff in i386/i686/bits/string.h
+  since lots of compilers break on it
+- fix sparc build with gcc 3.1
+- fix spec file for athlon
+
+* Tue Apr  9 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-32
+- fix debugging of threaded apps (#62804)
+- fix DST for Estonia (#61494)
+- document that pthread_mutexattr_?etkind_np are deprecated
+  and pthread_mutexattr_?ettype should be used instead in man
+  pages (#61485)
+- fix libSegFault.so undefined externals
+
+* Fri Apr  5 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-31
+- temporarily disable prelinking ld.so, as some statically linked
+  binaries linked against debugging versions of old glibcs die on it
+  (#62352)
+- fix <semaphore.h> for -std=c99 (#62516)
+- fix ether_ntohost segfault (#62397)
+- remove in glibc_post_upgrade on i386 all /lib/i686/libc-*.so,
+  /lib/i686/libm-*.so and /lib/i686/libpthread-*.so, not just current
+  version (#61633)
+- prelink -r on alpha too
+
+* Thu Mar 28 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-30
+- update GB18030 iconv module (Yu Shao)
+
+* Tue Mar 26 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-29
+- features.h fix
+
+* Tue Mar 26 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-28
+- update from CVS
+  - fix nscd with huge groups
+  - fix nis to not close fds it shouldn't
+- rebuilt against newer glibc-kernheaders to use the correct
+  PATH_MAX
+- handle .athlon.rpm glibc the same way as .i686.rpm
+- add a couple of .ISO-8859-15 locales (#61908)
+- readd temporarily currencies which were superceeded by Euro
+  into the list of accepted currencies by localedef to make
+  standard conformance testsuites happy
+- temporarily moved __libc_waitpid back to make Sun JDK happy
+- use old malloc code
+- prelink i686/athlon ld.so and prelink -r i686/athlon libc.so
+
+* Thu Mar 14 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-27
+- update from CVS
+  - fix DST handling for southern hemisphere (#60747)
+  - fix daylight setting for tzset (#59951)
+  - fix ftime (#60350)
+  - fix nice return value
+  - fix a malloc segfault
+- temporarily moved __libc_wait, __libc_fork and __libc_stack_end
+  back to what they used to be exported at
+- censorship (#60758)
+
+* Thu Feb 28 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-26
+- update from CVS
+- use __attribute__((visibility(...))) if supported, use _rtld_local
+  for ld.so only objects
+- provide libc's own __{,u}{div,mod}di3
+
+* Wed Feb 27 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-25
+- switch back to 2.2.5, mmap stdio needs work
+
+* Mon Feb 25 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-8
+- fix two other mmap stdio bugs (#60228)
+
+* Thu Feb 21 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-7
+- fix yet another mmap stdio bug (#60145)
+
+* Tue Feb 19 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-6
+- fix mmap stdio bug (seen on ld as File truncated error, #60043)
+- apply Andreas Schwab's fix for pthread sigwait
+- remove /lib/i686/ libraries in glibc_post_upgrade when
+  performing i386 glibc install
+
+* Thu Feb 14 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-5
+- update to CVS
+- added glibc-utils subpackage
+- disable autoreq in glibc-debug
+- readd %%lang() to locale files
+
+* Thu Feb  7 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-4
+- update to CVS
+- move glibc private symbols to GLIBC_PRIVATE symbol version
+
+* Wed Jan  9 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-3
+- fix a sqrt bug on alpha which caused SHN_UNDEF $__full_ieee754_sqrt..ng
+  symbol in libm
+
+* Tue Jan  8 2002 Jakub Jelinek <jakub@redhat.com> 2.2.90-2
+- add debug-static package
+
+* Mon Dec 31 2001 Jakub Jelinek <jakub@redhat.com> 2.2.90-1
+- update from CVS
+- remove -D__USE_STRING_INLINES
+- add debug subpackage to trim glibc and glibc-devel size
+
+* Wed Oct  3 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-19
+- fix strsep
+
+* Fri Sep 28 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-18
+- fix a ld.so bug with duplicate searchlists in l_scope
+- fix erfcl(-inf)
+- turn /usr/lib/librt.so into linker script
+
+* Wed Sep 26 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-17
+- fix a ld.so lookup bug after lots of dlopen calls
+- fix CMSG_DATA for non-gcc non-ISOC99 compilers (#53984)
+- prelinking support for Sparc64
+
+* Fri Sep 21 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-16
+- update from CVS to fix DT_SYMBOLIC
+- prelinking support for Alpha and Sparc
+
+* Tue Sep 18 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-15
+- update from CVS
+  - linuxthreads now retries if -1/EINTR is returned from
+    reading or writing to thread manager pipe (#43742)
+- use DT_FILTER in librt.so (#53394)
+  - update glibc prelink patch so that it handles filters
+- fix timer_* with SIGEV_NONE (#53494)
+- make glibc_post_upgrade work on PPC (patch from Franz Sirl)
+
+* Mon Sep 10 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-14
+- fix build on sparc32
+- 2.2.4-13 build for some reason missed some locales
+  on alpha/ia64
+
+* Mon Sep  3 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-13
+- fix iconvconfig
+
+* Mon Sep  3 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-12
+- add fam to /etc/rpc (#52863)
+- fix <inttypes.h> for C++ (#52960)
+- fix perror
+
+* Mon Aug 27 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-11
+- fix strnlen(x, -1)
+
+* Mon Aug 27 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-10
+- doh, <bits/libc-lock.h> should only define __libc_rwlock_t
+  if __USE_UNIX98.
+
+* Mon Aug 27 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-9
+- fix bits/libc-lock.h so that gcc can compile
+- fix s390 build
+
+* Fri Aug 24 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-8
+- kill stale library symlinks in ldconfig (#52350)
+- fix inttypes.h for G++ < 3.0
+- use DT_REL*COUNT
+
+* Wed Aug 22 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-7
+- fix strnlen on IA-64 (#50077)
+
+* Thu Aug 16 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-6
+- glibc 2.2.4 final
+- fix -lpthread -static (#51672)
+
+* Fri Aug 10 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-5
+- doh, include libio/tst-swscanf.c
+
+* Fri Aug 10 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-4
+- don't crash on catclose(-1)
+- fix wscanf %%[] handling
+- fix return value from swprintf
+- handle year + %%U/%%W week + week day in strptime
+
+* Thu Aug  9 2001 Jakub Jelinek <jakub@redhat.com> 2.2.4-3
+- update from CVS to
+  - fix strcoll (#50548)
+  - fix seekdir (#51132)
+  - fix memusage (#50606)
+- don't make gconv-modules.cache %%config file, just don't verify
+  its content.
+
+* Mon Aug  6 2001 Jakub Jelinek <jakub@redhat.com>
+- fix strtod and *scanf (#50723, #50724)
+
+* Sat Aug  4 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+  - fix iconv cache handling
+- glibc should not own %%{_infodir}, %%{_mandir} nor %%{_mandir}/man3 (#50673)
+- add gconv-modules.cache as emtpy config file (#50699)
+- only run iconvconfig if /usr is mounted read-write (#50667)
+
+* Wed Jul 25 2001 Jakub Jelinek <jakub@redhat.com>
+- move iconvconfig from glibc-common into glibc subpackage,
+  call it from glibc_post_upgrade instead of common's post.
+
+* Tue Jul 24 2001 Jakub Jelinek <jakub@redhat.com>
+- turn off debugging printouts in iconvconfig
+
+* Tue Jul 24 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+  - fix IA-32 makecontext
+  - make fflush(0) thread-safe (#46446)
+
+* Mon Jul 23 2001 Jakub Jelinek <jakub@redhat.com>
+- adjust prelinking DT_* and SHT_* values in elf.h
+- update from CVS
+  - iconv cache
+  - make iconv work in SUID/SGID programs (#34611)
+
+* Fri Jul 20 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+  - kill non-pic code in libm.so
+  - fix getdate
+  - fix some locales (#49402)
+- rebuilt with binutils-2.11.90.0.8-5 to place .interp section
+  properly in libBrokenLocale.so, libNoVersion.so and libanl.so
+- add floating stacks on IA-64, Alpha, Sparc (#49308)
+
+* Mon Jul 16 2001 Jakub Jelinek <jakub@redhat.com>
+- make /lib/i686 directory owned by glibc*.i686.rpm
+
+* Mon Jul  9 2001 Jakub Jelinek <jakub@redhat.com>
+- remove rquota.[hx] headers which are now provided by quota (#47141)
+- add prelinking patch
+
+* Thu Jul  5 2001 Jakub Jelinek <jakub@redhat.com>
+- require sh-utils for nscd
+
+* Mon Jun 25 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS (#43681, #43350, #44663, #45685)
+- fix ro_RO bug (#44644)
+
+* Wed Jun  6 2001 Jakub Jelinek <jakub@redhat.com>
+- fix a bunch of math bugs (#43210, #43345, #43346, #43347, #43348, #43355)
+- make rpc headers -ansi compilable (#42390)
+- remove alphaev6 optimized memcpy, since there are still far too many
+  broken apps which call memcpy where they should call memmove
+- update from CVS to (among other things):
+  - fix tanhl bug (#43352)
+
+* Tue May 22 2001 Jakub Jelinek <jakub@redhat.com>
+- fix #include <signal.h> with -D_XOPEN_SOURCE=500 on ia64 (#35968)
+- fix a dlclose reldeps handling bug
+- some more profiling fixes
+- fix tgmath.h
+
+* Thu May 17 2001 Jakub Jelinek <jakub@redhat.com>
+- make ldconfig more quiet
+- fix LD_PROFILE on i686 (#41030)
+
+* Wed May 16 2001 Jakub Jelinek <jakub@redhat.com>
+- fix the hardlink program, so that it really catches all files with
+  identical content
+- add a s390x clone fix
+
+* Wed May 16 2001 Jakub Jelinek <jakub@redhat.com>
+- fix rpc for non-threaded apps using svc_fdset and similar variables (#40409)
+- fix nss compatibility DSO versions for alphaev6
+- add a hardlink program instead of the shell 3x for plus cmp -s/link
+  which takes a lot of time during build
+- rework BuildPreReq and Conflicts with gcc, so that
+  it applies only where it has to
+
+* Fri May 11 2001 Jakub Jelinek <jakub@redhat.com>
+- fix locale name of ja_JP in UTF-8 (#39783)
+- fix re_search_2 (#40244)
+- fix memusage script (#39138, #39823)
+- fix dlsym(RTLD_NEXT, ) from main program (#39803)
+- fix xtrace script (#39609)
+- make glibc conflict with glibc-devel 2.2.2 and below (to make sure
+  libc_nonshared.a has atexit)
+- fix getconf LFS_CFLAGS on 64bitters
+- recompile with gcc-2.96-84 or above to fix binary compatibility problem
+  with __frame_state_for function (#37933)
+
+* Fri Apr 27 2001 Jakub Jelinek <jakub@redhat.com>
+- glibc 2.2.3 release
+  - fix strcoll (#36539)
+- add BuildPreReqs (#36378)
+
+* Wed Apr 25 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+
+* Fri Apr 20 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+  - fix sparc64, ia64
+  - fix some locale syntax errors (#35982)
+
+* Wed Apr 18 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+
+* Wed Apr 11 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+
+* Fri Apr  6 2001 Jakub Jelinek <jakub@redhat.com>
+- support even 2.4.0 kernels on ia64, sparc64 and s390x
+- include UTF-8 locales
+- make gconv-modules %%config(noreplace)
+
+* Fri Mar 23 2001 Jakub Jelinek <jakub@redhat.com>
+- back out sunrpc changes
+
+* Wed Mar 21 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+  - fix ia64 build
+  - fix pthread_getattr_np
+
+* Fri Mar 16 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+  - run atexit() registered functions at dlclose time if they are in shared
+    libraries (#28625)
+  - add pthread_getattr_np API to make JVM folks happy
+
+* Wed Mar 14 2001 Jakub Jelinek <jakub@redhat.com>
+- require 2.4.1 instead of 2.4.0 on platforms where it required 2.4 kernel
+- fix ldd behaviour on unresolved symbols
+- remove nonsensical ldconfig warning, update osversion for the most
+  recent library with the same soname in the same directory instead (#31703)
+- apply selected patches from CVS
+- s390x spec file changes from Florian La Roche
+
+* Wed Mar  7 2001 Jakub Jelinek <jakub@redhat.com>
+- fix gencat (#30894)
+- fix ldconfig changes from yesterday, fix LD_ASSUME_KERNEL handling
+
+* Tue Mar  6 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+- make pthread_attr_setstacksize consistent before and after pthread manager
+  is started (#28194)
+- pass back struct sigcontext from pthread signal wrapper (on ia32 only so
+  far, #28493)
+- on i686 ship both --enable-kernel 2.2.5 and 2.4.0 libc/libm/libpthread,
+  make ld.so pick the right one
+
+* Sat Feb 17 2001 Preston Brown <pbrown@redhat.com>
+- glib-common doesn't require glibc, until we can figure out how to get out of dependency hell.
+
+* Sat Feb 17 2001 Jakub Jelinek <jakub@redhat.com>
+- make glibc require particular version of glibc-common
+  and glibc-common prerequire glibc.
+
+* Fri Feb 16 2001 Jakub Jelinek <jakub@redhat.com>
+- glibc 2.2.2 release
+  - fix regex REG_ICASE bug seen in ksymoops
+
+* Sat Feb 10 2001 Jakub Jelinek <jakub@redhat.com>
+- fix regexec leaking memory (#26864)
+
+* Fri Feb  9 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+  - fix ia64 build with gnupro
+  - make regex 64bit clean
+  - fix tgmath make check failures on alpha
+
+* Tue Feb  6 2001 Jakub Jelinek <jakub@redhat.com>
+- update again for ia64 DF_1_INITFIRST
+
+* Fri Feb  2 2001 Jakub Jelinek <jakub@redhat.com>
+- update from CVS
+  - fix getaddrinfo (#25437)
+  - support DF_1_INITFIRST (#25029)
+
+* Wed Jan 24 2001 Jakub Jelinek <jakub@redhat.com>
+- build all auxiliary arches with --enablekernel 2.4.0, those wanting
+  to run 2.2 kernels can downgrade to the base architecture glibc.
+
+* Sat Jan 20 2001 Jakub Jelinek <jakub@redhat.com>
+- remove %%lang() flags from %%{_prefix}/lib/locale files temporarily
+
+* Sun Jan 14 2001 Jakub Jelinek <jakub@redhat.com>
+- update to 2.2.1 final
+  - fix a pthread_kill_other_threads_np breakage (#23966)
+  - make static binaries using dlopen work on ia64 again
+- fix a typo in glibc-common group
+
+* Wed Jan 10 2001 Bernhard Rosenkraenzer <bero@redhat.com>
+- devel requires glibc = %%{version}
+- noreplace /etc/nscd.conf
+
+* Wed Jan 10 2001 Jakub Jelinek <jakub@redhat.com>
+- some more security fixes:
+  - don't look up LD_PRELOAD libs in cache for SUID apps
+    (because that bypasses SUID bit checking on the library)
+  - place output files for profiling SUID apps into /var/profile,
+    use O_NOFOLLOW for them
+  - add checks for $MEMUSAGE_OUTPUT and $SEGFAULT_OUTPUT_NAME
+- hardlink identical locale files together
+- add %%lang() tags to locale stuff
+- remove ko_KR.utf8 for now, it is provided by locale-utf8 package
+
+* Mon Jan  8 2001 Jakub Jelinek <jakub@redhat.com>
+- add glibc-common subpackage
+- fix alphaev6 memcpy (#22494)
+- fix sys/cdefs.h (#22908)
+- don't define stdin/stdout/stderr as macros for -traditional (#22913)
+- work around a bug in IBM JDK (#22932, #23012)
+- fix pmap_unset when network is down (#23176)
+- move nscd in rc.d before netfs on shutdown
+- fix $RESOLV_HOST_CONF in SUID apps (#23562)
+
+* Fri Dec 15 2000 Jakub Jelinek <jakub@redhat.com>
+- fix ftw and nftw
+
+* Wed Dec 13 2000 Jakub Jelinek <jakub@redhat.com>
+- fix fcvt (#22184)
+- ldd /lib/ld-linux.so.2 is not crashing any longer again (#22197)
+- fix gencat
+
+* Mon Dec 11 2000 Jakub Jelinek <jakub@redhat.com>
+- fix alpha htonl and alphaev6 stpcpy
+
+* Sat Dec  9 2000 Jakub Jelinek <jakub@redhat.com>
+- update to CVS to:
+  - fix getnameinfo (#21934)
+  - don't stomp on memory in rpath handling (#21544)
+  - fix setlocale (#21507)
+- fix libNoVersion.so.1 loading code (#21579)
+- use auxarches define in spec file for auxiliary
+  architectures (#21219)
+- remove /usr/share directory from filelist (#21218)
+
+* Sun Nov 19 2000 Jakub Jelinek <jakub@redhat.com>
+- update to CVS to fix getaddrinfo
+
+* Fri Nov 17 2000 Jakub Jelinek <jakub@redhat.com>
+- update to CVS to fix freopen
+- remove all alpha workarounds, not needed anymore
+
+* Wed Nov 15 2000 Jakub Jelinek <jakub@redhat.com>
+- fix dladdr bug on alpha/sparc32/sparc64
+- fix Makefiles so that they run static tests properly
+
+* Tue Nov 14 2000 Jakub Jelinek <jakub@redhat.com>
+- update to CVS to fix ldconfig
+
+* Thu Nov  9 2000 Jakub Jelinek <jakub@redhat.com>
+- update to glibc 2.2 release
+
+* Mon Nov  6 2000 Jakub Jelinek <jakub@redhat.com>
+- update to CVS to:
+  - export __sysconf@@GLIBC_2.2 (#20417)
+
+* Fri Nov  3 2000 Jakub Jelinek <jakub@redhat.com>
+- merge to 2.1.97
+
+* Mon Oct 30 2000 Jakub Jelinek <jakub@redhat.com>
+- update to CVS, including:
+  - fix WORD_BIT/LONG_BIT definition in limits.h (#19088)
+  - fix hesiod (#19375)
+  - set LC_MESSAGES in zic/zdump for proper error message output (#19495)
+  - fix LFS fcntl when used with non-LFS aware kernels (#19730)
+
+* Thu Oct 19 2000 Jakub Jelinek <jakub@redhat.com>
+- fix alpha semctl (#19199)
+- update to CVS, including:
+  - fix glibc headers for Compaq non-gcc compilers
+  - fix locale alias handling code (#18832)
+  - fix rexec on little endian machines (#18886)
+- started writing changelog again
+
+* Thu Aug 10 2000 Adrian Havill <havill@redhat.com>
+- added ja ujis alias for backwards compatibility
diff --git a/SOURCES/RHEL-18039-1.patch b/SOURCES/RHEL-18039-1.patch
new file mode 100644
index 0000000..549b26f
--- /dev/null
+++ b/SOURCES/RHEL-18039-1.patch
@@ -0,0 +1,79 @@
+commit 95f61610f3e481d191b6184432342236fd59186d
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Wed Jul 24 12:06:47 2024 +0200
+
+    resolv: Support clearing option flags with a “-” prefix (bug 14799)
+    
+    I think using a “-” prefix is less confusing than introducing
+    double-negation construct (“no-no-tld-query”).
+    
+    Reviewed-by: DJ Delorie <dj@redhat.com>
+
+diff --git a/resolv/res_init.c b/resolv/res_init.c
+index 263263d474721545..243532b3ade338d8 100644
+--- a/resolv/res_init.c
++++ b/resolv/res_init.c
+@@ -682,27 +682,29 @@ res_setoptions (struct resolv_conf_parser *parser, const char *options)
+           {
+             char str[22];
+             uint8_t len;
+-            uint8_t clear;
+             unsigned long int flag;
+           } options[] = {
+ #define STRnLEN(str) str, sizeof (str) - 1
+-            { STRnLEN ("rotate"), 0, RES_ROTATE },
+-            { STRnLEN ("edns0"), 0, RES_USE_EDNS0 },
+-            { STRnLEN ("single-request-reopen"), 0, RES_SNGLKUPREOP },
+-            { STRnLEN ("single-request"), 0, RES_SNGLKUP },
+-            { STRnLEN ("no_tld_query"), 0, RES_NOTLDQUERY },
+-            { STRnLEN ("no-tld-query"), 0, RES_NOTLDQUERY },
+-            { STRnLEN ("no-reload"), 0, RES_NORELOAD },
+-            { STRnLEN ("use-vc"), 0, RES_USEVC },
+-            { STRnLEN ("trust-ad"), 0, RES_TRUSTAD },
+-            { STRnLEN ("no-aaaa"), 0, RES_NOAAAA },
++            { STRnLEN ("rotate"), RES_ROTATE },
++            { STRnLEN ("edns0"),  RES_USE_EDNS0 },
++            { STRnLEN ("single-request-reopen"), RES_SNGLKUPREOP },
++            { STRnLEN ("single-request"), RES_SNGLKUP },
++            { STRnLEN ("no_tld_query"), RES_NOTLDQUERY },
++            { STRnLEN ("no-tld-query"), RES_NOTLDQUERY },
++            { STRnLEN ("no-reload"), RES_NORELOAD },
++            { STRnLEN ("use-vc"),  RES_USEVC },
++            { STRnLEN ("trust-ad"), RES_TRUSTAD },
++            { STRnLEN ("no-aaaa"), RES_NOAAAA },
+           };
+ #define noptions (sizeof (options) / sizeof (options[0]))
++          bool negate_option = *cp == '-';
++          if (negate_option)
++            ++cp;
+           for (int i = 0; i < noptions; ++i)
+             if (strncmp (cp, options[i].str, options[i].len) == 0)
+               {
+-                if (options[i].clear)
+-                  parser->template.options &= options[i].flag;
++                if (negate_option)
++                  parser->template.options &= ~options[i].flag;
+                 else
+                   parser->template.options |= options[i].flag;
+                 break;
+diff --git a/resolv/tst-resolv-res_init-skeleton.c b/resolv/tst-resolv-res_init-skeleton.c
+index 6bef62cde2cbf8cd..d3a19eb305d41467 100644
+--- a/resolv/tst-resolv-res_init-skeleton.c
++++ b/resolv/tst-resolv-res_init-skeleton.c
+@@ -679,6 +679,16 @@ struct test_case test_cases[] =
+      "; nameserver[0]: [192.0.2.1]:53\n",
+      .res_options = "attempts:5 ndots:3 edns0 ",
+     },
++    {.name = "RES_OPTIONS can clear flags",
++     .conf = "options ndots:2 use-vc no-aaaa edns0\n"
++     "nameserver 192.0.2.1\n",
++     .expected = "options ndots:3 use-vc\n"
++     "search example.com\n"
++     "; search[0]: example.com\n"
++     "nameserver 192.0.2.1\n"
++     "; nameserver[0]: [192.0.2.1]:53\n",
++     .res_options = "ndots:3 -edns0 -no-aaaa",
++    },
+     {.name = "many search list entries (bug 19569)",
+      .conf = "nameserver 192.0.2.1\n"
+      "search corp.example.com support.example.com"
diff --git a/SOURCES/RHEL-18039-2.patch b/SOURCES/RHEL-18039-2.patch
new file mode 100644
index 0000000..9834166
--- /dev/null
+++ b/SOURCES/RHEL-18039-2.patch
@@ -0,0 +1,204 @@
+commit 765325951ac5c7d072278c9424930b29657e9758
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Wed Jul 24 12:06:47 2024 +0200
+
+    resolv: Implement strict-error stub resolver option (bug 27929)
+    
+    For now, do not enable this mode by default due to the potential
+    impact on compatibility with existing deployments.
+    
+    Reviewed-by: DJ Delorie <dj@redhat.com>
+
+diff --git a/resolv/res_init.c b/resolv/res_init.c
+index 243532b3ade338d8..b838dc70642e1935 100644
+--- a/resolv/res_init.c
++++ b/resolv/res_init.c
+@@ -695,6 +695,7 @@ res_setoptions (struct resolv_conf_parser *parser, const char *options)
+             { STRnLEN ("use-vc"),  RES_USEVC },
+             { STRnLEN ("trust-ad"), RES_TRUSTAD },
+             { STRnLEN ("no-aaaa"), RES_NOAAAA },
++            { STRnLEN ("strict-error"), RES_STRICTERR },
+           };
+ #define noptions (sizeof (options) / sizeof (options[0]))
+           bool negate_option = *cp == '-';
+diff --git a/resolv/res_send.c b/resolv/res_send.c
+index 9c77613f374e5469..9a284ed44aa8cc2e 100644
+--- a/resolv/res_send.c
++++ b/resolv/res_send.c
+@@ -1234,21 +1234,38 @@ send_dg(res_state statp,
+ 
+ 		if (thisansp_error) {
+ 		next_ns:
+-			if (recvresp1 || (buf2 != NULL && recvresp2)) {
+-			  *resplen2 = 0;
+-			  return resplen;
+-			}
+-			if (buf2 != NULL && !single_request)
++		        /* Outside of strict-error mode, use the first
++			   response even if the second response is an
++			   error.  This allows parallel resolution to
++			   succeed even if the recursive resolver
++			   always answers with SERVFAIL for AAAA
++			   queries (which still happens in practice
++			   unfortunately).
++
++			   In strict-error mode, always switch to the
++			   next server and try to get a response from
++			   there.  */
++			if ((statp->options & RES_STRICTERR) == 0)
+ 			  {
+-			    /* No data from the first reply.  */
+-			    resplen = 0;
+-			    /* We are waiting for a possible second reply.  */
+-			    if (matching_query == 1)
+-			      recvresp1 = 1;
+-			    else
+-			      recvresp2 = 1;
+-
+-			    goto wait;
++			    if (recvresp1 || (buf2 != NULL && recvresp2))
++			      {
++				*resplen2 = 0;
++				return resplen;
++			      }
++
++			    if (buf2 != NULL && !single_request)
++			      {
++				/* No data from the first reply.  */
++				resplen = 0;
++				/* We are waiting for a possible
++				   second reply.  */
++				if (matching_query == 1)
++				  recvresp1 = 1;
++				else
++				  recvresp2 = 1;
++
++				goto wait;
++			      }
+ 			  }
+ 
+ 			/* don't retry if called from dig */
+diff --git a/resolv/resolv.h b/resolv/resolv.h
+index f40d6c58cee0f585..b8a0f66a5fd50e22 100644
+--- a/resolv/resolv.h
++++ b/resolv/resolv.h
+@@ -133,6 +133,7 @@ struct res_sym {
+ #define RES_NORELOAD    0x02000000 /* No automatic configuration reload.  */
+ #define RES_TRUSTAD     0x04000000 /* Request AD bit, keep it in responses.  */
+ #define RES_NOAAAA      0x08000000 /* Suppress AAAA queries.  */
++#define RES_STRICTERR   0x10000000 /* Report more DNS errors as errors.  */
+ 
+ #define RES_DEFAULT	(RES_RECURSE|RES_DEFNAMES|RES_DNSRCH)
+ 
+diff --git a/resolv/tst-resolv-res_init-skeleton.c b/resolv/tst-resolv-res_init-skeleton.c
+index d3a19eb305d41467..e41bcebd9d9a8024 100644
+--- a/resolv/tst-resolv-res_init-skeleton.c
++++ b/resolv/tst-resolv-res_init-skeleton.c
+@@ -129,6 +129,7 @@ print_resp (FILE *fp, res_state resp)
+         print_option_flag (fp, &options, RES_NORELOAD, "no-reload");
+         print_option_flag (fp, &options, RES_TRUSTAD, "trust-ad");
+         print_option_flag (fp, &options, RES_NOAAAA, "no-aaaa");
++        print_option_flag (fp, &options, RES_STRICTERR, "strict-error");
+         fputc ('\n', fp);
+         if (options != 0)
+           fprintf (fp, "; error: unresolved option bits: 0x%x\n", options);
+@@ -741,6 +742,15 @@ struct test_case test_cases[] =
+      "nameserver 192.0.2.1\n"
+      "; nameserver[0]: [192.0.2.1]:53\n"
+     },
++    {.name = "strict-error flag",
++     .conf = "options strict-error\n"
++     "nameserver 192.0.2.1\n",
++     .expected = "options strict-error\n"
++     "search example.com\n"
++     "; search[0]: example.com\n"
++     "nameserver 192.0.2.1\n"
++     "; nameserver[0]: [192.0.2.1]:53\n"
++    },
+     { NULL }
+   };
+ 
+diff --git a/resolv/tst-resolv-semi-failure.c b/resolv/tst-resolv-semi-failure.c
+index aa9798b5a7dfaa88..b7681210f450bb5a 100644
+--- a/resolv/tst-resolv-semi-failure.c
++++ b/resolv/tst-resolv-semi-failure.c
+@@ -67,6 +67,9 @@ response (const struct resolv_response_context *ctx,
+   resolv_response_close_record (b);
+ }
+ 
++/* Set to 1 if strict error checking is enabled.  */
++static int do_strict_error;
++
+ static void
+ check_one (void)
+ {
+@@ -83,7 +86,10 @@ check_one (void)
+       struct addrinfo *ai;
+       int ret = getaddrinfo ("www.example", "80", &hints, &ai);
+       const char *expected;
+-      if (ret == 0 && ai->ai_next != NULL)
++      /* In strict-error mode, a switch to the second name server
++         happens, and both responses are received, so a single
++         response is a bug.  */
++      if (do_strict_error || (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
+@@ -99,33 +105,36 @@ check_one (void)
+ 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,
+-         });
++  for (do_strict_error = 0; do_strict_error < 2; ++do_strict_error)
++    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;
++        if (do_strict_error)
++          _res.options |= RES_STRICTERR;
++        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;
++        for (int do_fail_aaaa = 0; do_fail_aaaa < 2; ++do_fail_aaaa)
++          {
++            fail_aaaa = do_fail_aaaa;
+ 
+-          rcode = 2; /* SERVFAIL.  */
+-          check_one ();
++            rcode = 2; /* SERVFAIL.  */
++            check_one ();
+ 
+-          rcode = 4; /* NOTIMP.  */
+-          check_one ();
++            rcode = 4; /* NOTIMP.  */
++            check_one ();
+ 
+-          rcode = 5; /* REFUSED.  */
+-          check_one ();
+-        }
++            rcode = 5; /* REFUSED.  */
++            check_one ();
++          }
+ 
+-      resolv_test_end (aux);
+-    }
++        resolv_test_end (aux);
++      }
+ 
+   return 0;
+ }
diff --git a/SOURCES/bench.mk b/SOURCES/bench.mk
new file mode 100644
index 0000000..dfe46bd
--- /dev/null
+++ b/SOURCES/bench.mk
@@ -0,0 +1,77 @@
+objpfx = $(prefix)/$(ver)/usr/libexec/glibc-benchtests/
+
+bench-math := acos acosh asin asinh atan atanh cos cosh exp exp2 ffs ffsll \
+	      log log2 modf pow rint sin sincos sinh sqrt tan tanh
+
+bench-pthread := pthread_once
+
+bench := $(bench-math) $(bench-pthread)
+
+run-bench := $(prefix)/$(ver)/lib64/ld-linux-x86-64.so.2 --library-path $(prefix)/$(ver)/lib64 $${run}
+
+# String function benchmarks.
+string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+		mempcpy memset rawmemchr stpcpy stpncpy strcasecmp strcasestr \
+		strcat strchr strchrnul strcmp strcpy strcspn strlen \
+		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+string-bench-all := $(string-bench)
+
+stdlib-bench := strtod
+
+benchset := $(string-bench-all) $(stdlib-bench)
+
+bench-malloc := malloc-thread
+
+binaries-bench := $(addprefix $(objpfx)bench-,$(bench))
+binaries-benchset := $(addprefix $(objpfx)bench-,$(benchset))
+binaries-bench-malloc := $(addprefix $(objpfx)bench-,$(bench-malloc))
+
+DETAILED_OPT :=
+
+ifdef DETAILED
+	DETAILED_OPT := -d
+endif
+
+bench: bench-set bench-func bench-malloc
+
+bench-set: $(binaries-benchset)
+	for run in $^; do \
+	  outfile=$(prefix)/$$(basename $${run}.$(ver).out); \
+	  echo "Running $${run}"; \
+	  $(run-bench) > $${outfile}.tmp; \
+	  mv $${outfile}{.tmp,}; \
+	done
+
+bench-malloc: $(binaries-bench-malloc)
+	run=$(objpfx)bench-malloc-thread; \
+	outfile=$(prefix)/$$(basename $${run}.$(ver).out); \
+	for thr in 1 8 16 32; do \
+	  echo "Running $${run} $${thr}"; \
+	  $(run-bench) $${thr} > $${outfile}.tmp; \
+	  mv $${outfile}{.tmp,}; \
+	done
+
+# Build and execute the benchmark functions.  This target generates JSON
+# formatted bench.out.  Each of the programs produce independent JSON output,
+# so one could even execute them individually and process it using any JSON
+# capable language or tool.
+bench-func: $(binaries-bench)
+	{ echo "{\"timing_type\": \"hp-timing\","; \
+	echo " \"functions\": {"; \
+	for run in $^; do \
+	  if ! [ "x$${run}" = "x$<" ]; then \
+	    echo ","; \
+	  fi; \
+	  echo "Running $${run}" >&2; \
+	  $(run-bench) $(DETAILED_OPT); \
+	done; \
+	echo; \
+	echo " }"; \
+	echo "}"; } > $(prefix)/bench.$(ver).out-tmp; \
+	if [ -f $(prefix)/bench.$(ver).out ]; then \
+	  mv -f $(prefix)/bench.$(ver).out{,.old}; \
+	fi; \
+	mv -f $(prefix)/bench.$(ver).out{-tmp,}
+#	scripts/validate_benchout.py bench.out \
+#		scripts/benchout.schema.json
diff --git a/SOURCES/glibc-RHEL-22226.patch b/SOURCES/glibc-RHEL-22226.patch
new file mode 100644
index 0000000..3d09f70
--- /dev/null
+++ b/SOURCES/glibc-RHEL-22226.patch
@@ -0,0 +1,121 @@
+commit 5361ad3910c257bc327567be76fde532ed238e42
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Fri Apr 19 14:38:17 2024 +0200
+
+    login: Use unsigned 32-bit types for seconds-since-epoch
+    
+    These fields store timestamps when the system was running.  No Linux
+    systems existed before 1970, so these values are unused.  Switching
+    to unsigned types allows continued use of the existing struct layouts
+    beyond the year 2038.
+    
+    The intent is to give distributions more time to switch to improved
+    interfaces that also avoid locking/data corruption issues.
+    
+    Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+
+diff --git a/bits/utmp.h b/bits/utmp.h
+index f2d1c13d8cd205b2..27cb536800c46d67 100644
+--- a/bits/utmp.h
++++ b/bits/utmp.h
+@@ -36,7 +36,7 @@
+ struct lastlog
+   {
+ #if __WORDSIZE_TIME64_COMPAT32
+-    int32_t ll_time;
++    __uint32_t ll_time;
+ #else
+     __time_t ll_time;
+ #endif
+@@ -76,7 +76,7 @@ struct utmp
+   int32_t ut_session;		/* Session ID, used for windowing.  */
+   struct
+   {
+-    int32_t tv_sec;		/* Seconds.  */
++    __uint32_t tv_sec;		/* Seconds.  */
+     int32_t tv_usec;		/* Microseconds.  */
+   } ut_tv;			/* Time entry was made.  */
+ #else
+diff --git a/login/Makefile b/login/Makefile
+index f91190e3dcd1e6c6..84563230ef665f9c 100644
+--- a/login/Makefile
++++ b/login/Makefile
+@@ -44,9 +44,11 @@ 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-utmp-size-64
++  tst-pututxline-lockfail tst-pututxline-cache tst-utmp-size tst-utmp-size-64 \
++  tst-utmp-unsigned tst-utmp-unsigned-64
+ 
+ CFLAGS-tst-utmp-size-64.c += -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64
++CFLAGS-tst-utmp-unsigned-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-unsigned-64.c b/login/tst-utmp-unsigned-64.c
+new file mode 100644
+index 0000000000000000..940e7654f8dc5fd6
+--- /dev/null
++++ b/login/tst-utmp-unsigned-64.c
+@@ -0,0 +1 @@
++#include "tst-utmp-unsigned.c"
+diff --git a/login/tst-utmp-unsigned.c b/login/tst-utmp-unsigned.c
+new file mode 100644
+index 0000000000000000..27ad03a7d608e83d
+--- /dev/null
++++ b/login/tst-utmp-unsigned.c
+@@ -0,0 +1,40 @@
++/* Check that struct utmp, struct utmpx, struct lastlog use unsigned epoch.
++   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>
++
++/* Undefined.  Used to check that the conditions below are optimized away.  */
++void link_failure_utmp (void);
++void link_failure_utmpx (void);
++void link_failure_lastlog (void);
++
++static int
++do_test (void)
++{
++  if ((struct utmp) { .ut_tv = { 0x80000000U, }, }.ut_tv.tv_sec <= 0)
++    link_failure_utmp ();
++  if ((struct utmpx) { .ut_tv = { 0x80000000U, }, }.ut_tv.tv_sec <= 0)
++    link_failure_utmpx ();
++  if ((struct lastlog) { .ll_time = 0x80000000U, }.ll_time <= 0)
++    link_failure_lastlog ();
++  return 0;
++}
++
++#include <support/test-driver.c>
+diff --git a/sysdeps/gnu/bits/utmpx.h b/sysdeps/gnu/bits/utmpx.h
+index 34b4afbc6ac25968..ed0df9bd8141d4e6 100644
+--- a/sysdeps/gnu/bits/utmpx.h
++++ b/sysdeps/gnu/bits/utmpx.h
+@@ -74,7 +74,7 @@ struct utmpx
+   __int32_t ut_session;		/* Session ID, used for windowing.  */
+   struct
+   {
+-    __int32_t tv_sec;		/* Seconds.  */
++    __uint32_t tv_sec;		/* Seconds.  */
+     __int32_t tv_usec;		/* Microseconds.  */
+   } ut_tv;			/* Time entry was made.  */
+ #else
diff --git a/SOURCES/glibc-bench-compare b/SOURCES/glibc-bench-compare
new file mode 100755
index 0000000..84e3aba
--- /dev/null
+++ b/SOURCES/glibc-bench-compare
@@ -0,0 +1,153 @@
+#!/usr/bin/bash
+# This script can be invoked as follows:
+#
+# glibc-bench-compare [options] <BUILD> [BUILD]
+#
+# Options may be one of the following:
+#
+# -t		The BUILD arguments are task ids and not a version-release string
+# -a ARCH	Do comparison for ARCH architecture
+#
+# If any of the above options are given, both BUILD arguments must be given.
+# Otherwise, if only one BUILD is specified, then it is compared against the
+# installed glibc.
+
+# Silence the pushd/popd messages
+pushd() {
+	command pushd "$@" > /dev/null 2>&1
+}
+
+popd() {
+	command popd "$@" > /dev/null 2>&1
+}
+
+# Clean up any downloaded files before we exit
+trap "rm -rf /tmp/glibc-bench-compare.$BASHPID.*" EXIT
+
+task=0
+arch=$(uname -i)
+options=0
+path=0
+installed=
+
+# Look for any commandline options
+while getopts ":tpa:" opt; do
+	case $opt in
+		p)
+		path=1
+		;;
+		t)
+		task=1
+		options=1
+		echo "Not implemented."
+		exit 1
+		;;
+		a)
+		arch=$OPTARG
+		options=1
+		;;
+		*)
+		;;
+	esac
+done
+
+# Done, now shift all option arguments out.
+shift $((OPTIND-1))
+
+if [ $# -gt 2 ] || [ $# -eq 0 ] || [ $# -lt 2 -a $options -eq 1 ]; then
+	echo "Usage: $0 [OPTIONS] <old> [new]"
+	echo
+	echo "OPTIONS:"
+	echo -e "\t-t\tCompare two brew tasks"
+	echo -e "\t-a ARCH\tGet rpms for the ARCH architecture"
+	echo -e "\t-p\tCompare built rpms in two paths."
+	echo -e "\t\tThis minimally needs glibc, glibc-common and glibc-benchtests"
+	exit 1
+fi
+
+if [ -z $2 ]; then
+	new="$1"
+	old=$(rpm --queryformat "%{VERSION}-%{RELEASE}\n" -q glibc | head -1)
+	installed=$old
+else
+	new="$2"
+	old="$1"
+fi
+
+decompress_rpms() {
+	# We were given a path to the rpms.  Figure out the version-release and
+	# decompress the rpms.
+	if [ -n $1 ]; then
+		vr=$(rpm --queryformat="%{VERSION}-%{RELEASE}" -qp $1/glibc-2*.rpm | head -1)
+		mkdir $vr && pushd $vr
+	fi
+
+	for r in $1*.rpm; do
+		( rpm2cpio $r | cpio -di ) > /dev/null
+	done
+
+	if [ -n $1 ]; then
+		popd
+		echo $vr
+	fi
+}
+
+# Get rpms for a build and decompress them
+get_build() {
+	echo "Processing build $1"
+	mkdir $1 && pushd $1
+	brew buildinfo "glibc-$1" |
+	sed -n -e "s|/mnt/koji\(.\+$arch.\+\)|http://kojipkgs.fedoraproject.org\1|p" |
+	while read url; do
+		echo "Downloading $url"
+		wget -q $url
+	done
+	decompress_rpms
+
+	echo "Removing rpms"
+	rm -f $1/*.rpm
+
+	popd
+}
+
+# Run benchmarks for a build
+run_bench() {
+	if [ -z $1 ]; then
+		make DETAILED=1 ver=$installed prefix= -f /usr/libexec/glibc-benchtests/bench.mk bench
+	else
+		make DETAILED=1 ver=$1 prefix=$PWD -f $1/usr/libexec/glibc-benchtests/bench.mk bench
+	fi
+}
+
+# Get absolute paths if needed, since we will change into the working directory
+# next.
+if [ $path -eq 1 ]; then
+	old_path=$(realpath $old)/
+	new_path=$(realpath $new)/
+fi
+
+tmpdir=$(mktemp -p /tmp -d glibc-bench-compare.$$.XXXX)
+pushd $tmpdir
+
+# Get both builds.
+if [ $path -eq 0 ]; then
+	if [ -z $installed ]; then
+		get_build $old
+	fi
+	get_build $new
+else
+	old=$(decompress_rpms $old_path)
+	new=$(decompress_rpms $new_path)
+fi
+
+# make bench for each of those.
+if [ -z $installed ]; then
+	run_bench $old
+else
+	run_bench
+fi
+run_bench $new
+
+# Now run the comparison script.
+$old/usr/libexec/glibc-benchtests/compare_bench.py $old/usr/libexec/glibc-benchtests/benchout.schema.json \
+	bench.$old.out bench.$new.out
diff --git a/SOURCES/glibc-cs-path.patch b/SOURCES/glibc-cs-path.patch
new file mode 100644
index 0000000..40835d2
--- /dev/null
+++ b/SOURCES/glibc-cs-path.patch
@@ -0,0 +1,44 @@
+Short description: Adjust CS_PATH and the test container layout.
+Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
+Origin: PATCH
+Upstream status: not-needed
+
+In Fedora we should return only /usr/bin as CS_PATH because /bin is just
+a symlink to /usr/bin after MoveToUsr transition (which glibc has not
+really completed).
+
+We also create /{bin,lib,lib64,sbin} in the test container as symbolic
+links.  This brings the test container in line with Fedora's filesystem
+layout and avoids some test failures.  For example, because Fedora's
+CS_PATH is /usr/bin, tst-vfork3 will try to execute /usr/bin/echo in the
+container.  Without this change the container installs `echo' in /bin
+not /usr/bin, causing the test to fail.
+
+diff --git a/Makefile b/Makefile
+index a49870d3d1e636a9..feb2599203b10098 100644
+--- a/Makefile
++++ b/Makefile
+@@ -598,9 +598,13 @@ $(tests-container) $(addsuffix /tests,$(subdirs)) : \
+ $(objpfx)testroot.pristine/install.stamp :
+ 	test -d $(objpfx)testroot.pristine || \
+ 	  mkdir $(objpfx)testroot.pristine
+-	# We need a working /bin/sh for some of the tests.
+-	test -d $(objpfx)testroot.pristine/bin || \
+-	  mkdir $(objpfx)testroot.pristine/bin
++	# Set up symlinks to directories whose contents got moved to /usr
++	for moved in bin lib lib64 sbin; do \
++		test -d $(objpfx)testroot.pristine/usr/$$moved || \
++		  mkdir -p $(objpfx)testroot.pristine/usr/$$moved ;\
++		test -e $(objpfx)testroot.pristine/$$moved || \
++		  ln -s usr/$$moved $(objpfx)testroot.pristine/$$moved ;\
++	done
+ 	# We need the compiled locale dir for localedef tests.
+ 	test -d $(objpfx)testroot.pristine/$(complocaledir) || \
+ 	  mkdir -p $(objpfx)testroot.pristine/$(complocaledir)
+diff --git a/sysdeps/unix/confstr.h b/sysdeps/unix/confstr.h
+index 15859c3b2759878e..9b63b7f8069866fd 100644
+--- a/sysdeps/unix/confstr.h
++++ b/sysdeps/unix/confstr.h
+@@ -1 +1 @@
+-#define	CS_PATH	"/bin:/usr/bin"
++#define	CS_PATH	"/usr/bin"
diff --git a/SOURCES/glibc-fedora-linux-tcsetattr.patch b/SOURCES/glibc-fedora-linux-tcsetattr.patch
new file mode 100644
index 0000000..3ae7e27
--- /dev/null
+++ b/SOURCES/glibc-fedora-linux-tcsetattr.patch
@@ -0,0 +1,61 @@
+Short description: Fedora-specific workaround for kernel pty bug.
+Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
+Origin: PATCH
+Upstream status: not-submitted
+
+This is a Fedora-specific workaround for a kernel bug where calling
+ioctl on a pty will silently ignore the invalid c_cflag. The
+workaround is to use TCGETS to verify the setting matches. This is
+not upstream and needs to either be removed or submitted upstream
+after analysis.
+
+Index: b/sysdeps/unix/sysv/linux/tcsetattr.c
+===================================================================
+--- a/sysdeps/unix/sysv/linux/tcsetattr.c
++++ b/sysdeps/unix/sysv/linux/tcsetattr.c
+@@ -45,6 +45,7 @@ __tcsetattr (int fd, int optional_action
+ {
+   struct __kernel_termios k_termios;
+   unsigned long int cmd;
++  int retval;
+ 
+   switch (optional_actions)
+     {
+@@ -75,7 +76,36 @@ __tcsetattr (int fd, int optional_action
+   memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0],
+ 	  __KERNEL_NCCS * sizeof (cc_t));
+ 
+-  return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios);
++  retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios);
++
++  if (retval == 0 && cmd == TCSETS)
++    {
++      /* The Linux kernel has a bug which silently ignore the invalid
++        c_cflag on pty. We have to check it here. */
++      int save = errno;
++      retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios);
++      if (retval)
++       {
++         /* We cannot verify if the setting is ok. We don't return
++            an error (?). */
++         __set_errno (save);
++         retval = 0;
++       }
++      else if ((termios_p->c_cflag & (PARENB | CREAD))
++              != (k_termios.c_cflag & (PARENB | CREAD))
++              || ((termios_p->c_cflag & CSIZE)
++                  && ((termios_p->c_cflag & CSIZE)
++                      != (k_termios.c_cflag & CSIZE))))
++       {
++         /* It looks like the Linux kernel silently changed the
++            PARENB/CREAD/CSIZE bits in c_cflag. Report it as an
++            error. */
++         __set_errno (EINVAL);
++         retval = -1;
++       }
++    }
++
++  return retval;
+ }
+ weak_alias (__tcsetattr, tcsetattr)
+ libc_hidden_def (tcsetattr)
diff --git a/SOURCES/glibc-fedora-localedata-rh61908.patch b/SOURCES/glibc-fedora-localedata-rh61908.patch
new file mode 100644
index 0000000..d62d7a2
--- /dev/null
+++ b/SOURCES/glibc-fedora-localedata-rh61908.patch
@@ -0,0 +1,50 @@
+Short description: Add 4 ISO-8859-15 locales to SUPPORTED for Euro symbol.
+Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
+Origin: PATCH
+Bug-RHEL: #61908
+Upstream status: not-needed
+
+Very early RHL 7.3 requirement to add these locales so users can
+get access to Euro symbol. We should review this bug and decide if
+the UTF-8 locales are now serving the same purpose and drop the
+additional locales.
+
+* Tue Mar 26 2002 Jakub Jelinek <jakub@redhat.com> 2.2.5-28
+- add a couple of .ISO-8859-15 locales (#61908)
+
+diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED
+index c8b63cc2fe2b4547..32088fdef06a14a3 100644
+--- a/localedata/SUPPORTED
++++ b/localedata/SUPPORTED
+@@ -103,6 +103,7 @@ cy_GB.UTF-8/UTF-8 \
+ cy_GB/ISO-8859-14 \
+ da_DK.UTF-8/UTF-8 \
+ da_DK/ISO-8859-1 \
++da_DK.ISO-8859-15/ISO-8859-15 \
+ de_AT.UTF-8/UTF-8 \
+ de_AT/ISO-8859-1 \
+ de_AT@euro/ISO-8859-15 \
+@@ -140,6 +141,7 @@ en_DK.UTF-8/UTF-8 \
+ en_DK/ISO-8859-1 \
+ en_GB.UTF-8/UTF-8 \
+ en_GB/ISO-8859-1 \
++en_GB.ISO-8859-15/ISO-8859-15 \
+ en_HK.UTF-8/UTF-8 \
+ en_HK/ISO-8859-1 \
+ en_IE.UTF-8/UTF-8 \
+@@ -157,6 +159,7 @@ en_SG.UTF-8/UTF-8 \
+ en_SG/ISO-8859-1 \
+ en_US.UTF-8/UTF-8 \
+ en_US/ISO-8859-1 \
++en_US.ISO-8859-15/ISO-8859-15 \
+ en_ZA.UTF-8/UTF-8 \
+ en_ZA/ISO-8859-1 \
+ en_ZM/UTF-8 \
+@@ -425,6 +428,7 @@ sv_FI/ISO-8859-1 \
+ sv_FI@euro/ISO-8859-15 \
+ sv_SE.UTF-8/UTF-8 \
+ sv_SE/ISO-8859-1 \
++sv_SE.ISO-8859-15/ISO-8859-15 \
+ sw_KE/UTF-8 \
+ sw_TZ/UTF-8 \
+ syr/UTF-8 \
diff --git a/SOURCES/glibc-fedora-manual-dircategory.patch b/SOURCES/glibc-fedora-manual-dircategory.patch
new file mode 100644
index 0000000..11c2656
--- /dev/null
+++ b/SOURCES/glibc-fedora-manual-dircategory.patch
@@ -0,0 +1,31 @@
+Short description: Place glibc info into "Libraries" category.
+Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
+Origin: PATCH
+Upstream status: not-needed
+
+The category names for libraries is completely random including
+"Libraries", "GNU Libraries", "GNU libraries", and "Software libraries."
+In the GNU info manual the "Software libraries" category is given as an
+example, but really we need to standardize on a category for upstream.
+I suggest we drop this change after some upstream discussion.
+
+From 4820b9175535e13df79ce816106016040014916e Mon Sep 17 00:00:00 2001
+From: Jakub Jelinek <jakub@redhat.com>
+Date: Fri, 3 Nov 2006 16:31:21 +0000
+Subject: [PATCH] Change @dircategory.
+
+---
+ manual/libc.texinfo |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+--- a/manual/libc.texinfo
++++ b/manual/libc.texinfo
+@@ -7,7 +7,7 @@
+ @include macros.texi
+ 
+ @comment Tell install-info what to do.
+-@dircategory Software libraries
++@dircategory Libraries
+ @direntry
+ * Libc: (libc).                 C library.
+ @end direntry
diff --git a/SOURCES/glibc-python3.patch b/SOURCES/glibc-python3.patch
new file mode 100644
index 0000000..ae36c51
--- /dev/null
+++ b/SOURCES/glibc-python3.patch
@@ -0,0 +1,30 @@
+Use python3 for installed executable python scripts.
+
+Fedora is a Python3-only distribution:
+https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
+
+This fixes build failures where builders may strictly enforce only
+python3 during a transitional phase.
+
+Author: Carlos O'Donell <carlos@redhat.com>
+
+diff --git a/benchtests/scripts/compare_bench.py b/benchtests/scripts/compare_bench.py
+index d4370d723f313a0e..2bbb91d6ea9f6c18 100755
+--- a/benchtests/scripts/compare_bench.py
++++ b/benchtests/scripts/compare_bench.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+ # Copyright (C) 2015-2024 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+ #
+diff --git a/benchtests/scripts/import_bench.py b/benchtests/scripts/import_bench.py
+index fac2945f6d36db13..ac40878934490380 100644
+--- a/benchtests/scripts/import_bench.py
++++ b/benchtests/scripts/import_bench.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+ # Copyright (C) 2015-2024 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+ #
diff --git a/SOURCES/glibc-rh2292195-1.patch b/SOURCES/glibc-rh2292195-1.patch
new file mode 100644
index 0000000..fc5bbfd
--- /dev/null
+++ b/SOURCES/glibc-rh2292195-1.patch
@@ -0,0 +1,72 @@
+commit 086910fc41655152812b515dc324d2ac0dc36e67
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Thu Jun 20 10:32:16 2024 +0200
+
+    malloc: Always install mtrace (bug 31892)
+    
+    Generation of the Perl script does not depend on Perl, so we can
+    always install it even if $(PERL) is not set during the build.
+    
+    Change the malloc/mtrace.pl text substition not to rely on $(PERL).
+    Instead use PATH at run time to find the Perl interpreter. The Perl
+    interpreter cannot execute directly a script that starts with
+    “#! /bin/sh”: it always executes it with /bin/sh.  There is no
+    perl command line switch to disable this behavior.  Instead, use
+    the Perl require function to execute the script.  The additional
+    shift calls remove the “.” shell arguments.  Perl interprets the
+    “.” as a string concatenation operator, making the expression
+    syntactically valid.
+    
+    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+
+diff --git a/malloc/Makefile b/malloc/Makefile
+index cc14cf66c9661f99..02aff1bd1dc664c3 100644
+--- a/malloc/Makefile
++++ b/malloc/Makefile
+@@ -250,7 +250,6 @@ others-extras = mcheck-init.o
+ aux := set-freeres thread-freeres
+ 
+ # The Perl script to analyze the output of the mtrace functions.
+-ifneq ($(PERL),no)
+ install-bin-script = mtrace
+ generated += mtrace
+ 
+@@ -261,7 +260,6 @@ address-width=10
+ else
+ address-width=18
+ endif
+-endif
+ 
+ # Unless we get a test for the availability of libgd which also works
+ # for cross-compiling we disable the memusagestat generation in this
+@@ -349,7 +347,7 @@ sLIBdir := $(shell echo $(slibdir) | sed 's,lib\(\|64\)$$,\\\\$$LIB,')
+ 
+ $(objpfx)mtrace: mtrace.pl
+ 	rm -f $@.new
+-	sed -e 's|@PERL@|$(PERL)|' -e 's|@XXX@|$(address-width)|' \
++	sed -e 's|@XXX@|$(address-width)|' \
+ 	    -e 's|@VERSION@|$(version)|' \
+ 	    -e 's|@PKGVERSION@|$(PKGVERSION)|' \
+ 	    -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|' $^ > $@.new \
+diff --git a/malloc/mtrace.pl b/malloc/mtrace.pl
+index 075da0d9f11da15c..dc6085820e62092c 100644
+--- a/malloc/mtrace.pl
++++ b/malloc/mtrace.pl
+@@ -1,6 +1,6 @@
+-#! @PERL@
+-eval "exec @PERL@ -S $0 $@"
+-    if 0;
++#! /bin/sh
++eval exec "perl -e 'shift; \$progname=shift; shift; require \$progname'" . "$0" . "$@"
++   if 0;
+ # Copyright (C) 1997-2024 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+ # Based on the mtrace.awk script.
+@@ -22,7 +22,6 @@ eval "exec @PERL@ -S $0 $@"
+ $VERSION = "@VERSION@";
+ $PKGVERSION = "@PKGVERSION@";
+ $REPORT_BUGS_TO = '@REPORT_BUGS_TO@';
+-$progname = $0;
+ 
+ sub usage {
+     print "Usage: mtrace [OPTION]... [Binary] MtraceData\n";
diff --git a/SOURCES/glibc-rh2292195-2.patch b/SOURCES/glibc-rh2292195-2.patch
new file mode 100644
index 0000000..61436e8
--- /dev/null
+++ b/SOURCES/glibc-rh2292195-2.patch
@@ -0,0 +1,84 @@
+commit dd144dce21c864781fade4561581d50fb4549956
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Thu Jun 20 20:55:10 2024 +0200
+
+    malloc: Replace shell/Perl gate in mtrace
+    
+    The previous version expanded $0 and $@ twice.
+    
+    The new version defines a q no-op shell command.  The Perl syntax
+    error is masked by the eval Perl function.  The q { … } construct
+    is executed by the shell without errors because the q shell function
+    was defined, but treated as a non-expanding quoted string by Perl,
+    effectively hiding its context from the Perl interpreter.  As before
+    the script is read by require instead of executed directly, to avoid
+    infinite recursion because the #! line contains /bin/sh.
+    
+    Introduce the “fatal” function to produce diagnostics that are not
+    suppressed by “do”.  Use “do” instead of “require” because it has
+    fewer requirements on the executed script than “require”.
+    
+    Prefix relative paths with './' because “do” (and “require“ before)
+    searches for the script in @INC if the path is relative and does not
+    start with './'.  Use $_ to make the trampoline shorter.
+    
+    Add an Emacs mode marker to indentify the script as a Perl script.
+
+diff --git a/malloc/mtrace.pl b/malloc/mtrace.pl
+index dc6085820e62092c..0a631a07bc4cfbb6 100644
+--- a/malloc/mtrace.pl
++++ b/malloc/mtrace.pl
+@@ -1,6 +1,12 @@
+ #! /bin/sh
+-eval exec "perl -e 'shift; \$progname=shift; shift; require \$progname'" . "$0" . "$@"
+-   if 0;
++# -*- perl -*-
++eval "q () {
++  :
++}";
++q {
++    exec perl -e '$_ = shift; $_ = "./$_" unless m,^/,; do $_' "$0" "$@"
++}
++;
+ # Copyright (C) 1997-2024 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+ # Based on the mtrace.awk script.
+@@ -22,6 +28,7 @@ eval exec "perl -e 'shift; \$progname=shift; shift; require \$progname'" . "$0"
+ $VERSION = "@VERSION@";
+ $PKGVERSION = "@PKGVERSION@";
+ $REPORT_BUGS_TO = '@REPORT_BUGS_TO@';
++$progname = $_;
+ 
+ sub usage {
+     print "Usage: mtrace [OPTION]... [Binary] MtraceData\n";
+@@ -33,6 +40,11 @@ sub usage {
+     exit 0;
+ }
+ 
++sub fatal {
++    print STDERR "$_[0]\n";
++    exit 1;
++}
++
+ # We expect two arguments:
+ #   #1: the complete path to the binary
+ #   #2: the mtrace data filename
+@@ -86,7 +98,7 @@ if ($#ARGV == 0) {
+ 	close (LOCS);
+     }
+ } else {
+-    die "Wrong number of arguments, run $progname --help for help.";
++    fatal "Wrong number of arguments, run $progname --help for help.";
+ }
+ 
+ sub addr2line {
+@@ -148,7 +160,8 @@ sub location {
+ }
+ 
+ $nr=0;
+-open(DATA, "<$data") || die "Cannot open mtrace data file";
++open(DATA, "<$data")
++  or fatal "$progname: Cannot open mtrace data file $data: $!";
+ while (<DATA>) {
+     my @cols = split (' ');
+     my $n, $where;
diff --git a/SOURCES/glibc-rh2292195-3.patch b/SOURCES/glibc-rh2292195-3.patch
new file mode 100644
index 0000000..ef2d7f1
--- /dev/null
+++ b/SOURCES/glibc-rh2292195-3.patch
@@ -0,0 +1,31 @@
+commit 2a6c922f09e7a1c206e0cbdb4424f1cf101a5bda
+Author: Andreas Schwab <schwab@suse.de>
+Date:   Thu Jun 20 14:13:01 2024 +0200
+
+    mtrace: make shell commands robust against meta characters
+    
+    Use the list form of the open function to avoid interpreting meta
+    characters in the arguments.
+
+diff --git a/malloc/mtrace.pl b/malloc/mtrace.pl
+index 0a631a07bc4cfbb6..32b4da935f7c7c4a 100644
+--- a/malloc/mtrace.pl
++++ b/malloc/mtrace.pl
+@@ -87,7 +87,7 @@ if ($#ARGV == 0) {
+     }
+     # Set the environment variable LD_TRACE_LOADED_OBJECTS to 2 so the
+     # executable is also printed.
+-    if (open (locs, "env LD_TRACE_LOADED_OBJECTS=2 $prog |")) {
++    if (open (locs, "-|", "env", "LD_TRACE_LOADED_OBJECTS=2", $prog)) {
+ 	while (<locs>) {
+ 	    chop;
+ 	    if (/^.*=> (.*) .(0x[0123456789abcdef]*).$/) {
+@@ -104,7 +104,7 @@ if ($#ARGV == 0) {
+ sub addr2line {
+     my $addr = pop(@_);
+     my $prog = pop(@_);
+-    if (open (ADDR, "addr2line -e $prog $addr|")) {
++    if (open (ADDR, "-|", "addr2line", "-e", $prog, $addr)) {
+ 	my $line = <ADDR>;
+ 	chomp $line;
+ 	close (ADDR);
diff --git a/SOURCES/glibc-rh827510.patch b/SOURCES/glibc-rh827510.patch
new file mode 100644
index 0000000..6115891
--- /dev/null
+++ b/SOURCES/glibc-rh827510.patch
@@ -0,0 +1,37 @@
+Short description: Fix newlocale error return.
+Author(s): Fedora glibc team <glibc@lists.fedoraproject.org>
+Origin: PATCH
+Bug-RHEL: #832516
+Bug-Fedora: #827510
+Bug-Upstream: #14247
+Upstream status: not-submitted
+
+This needs to go upstream right away to fix the error case for
+newlocale not correctly returning an error.
+
+2012-06-14  Jeff Law  <law@redhat.com>
+
+	* locale/loadlocale.c (_nl_load_locale): Delay setting
+	file->decided until we have successfully loaded the file's
+	data.
+
+diff --git a/locale/loadlocale.c b/locale/loadlocale.c
+index e3fa187..9fd9216 100644
+--- a/locale/loadlocale.c
++++ b/locale/loadlocale.c
+@@ -169,7 +169,6 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
+   int save_err;
+   int alloc = ld_mapped;
+ 
+-  file->decided = 1;
+   file->data = NULL;
+ 
+   fd = __open_nocancel (file->filename, O_RDONLY | O_CLOEXEC);
+@@ -278,6 +277,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
+   newdata->alloc = alloc;
+ 
+   file->data = newdata;
++  file->decided = 1;
+ }
+ 
+ void
diff --git a/SOURCES/glibc-upstream-2.39-1.patch b/SOURCES/glibc-upstream-2.39-1.patch
new file mode 100644
index 0000000..487c192
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-1.patch
@@ -0,0 +1,264 @@
+commit 6d1e3fb07b45e2e31e469b16cf21b24bccf8914c
+Author: Andreas K. Hüttel <dilfridge@gentoo.org>
+Date:   Wed Jan 31 02:12:43 2024 +0100
+
+    Replace advisories directory
+    
+    Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
+
+diff --git a/ADVISORIES b/ADVISORIES
+new file mode 100644
+index 0000000000000000..d4e33f2df3d74cd8
+--- /dev/null
++++ b/ADVISORIES
+@@ -0,0 +1,2 @@
++For the GNU C Library Security Advisories, see the git master branch:
++https://sourceware.org/git/?p=glibc.git;a=tree;f=advisories;hb=HEAD
+diff --git a/advisories/GLIBC-SA-2023-0001 b/advisories/GLIBC-SA-2023-0001
+deleted file mode 100644
+index 3d19c91b6a676ffd..0000000000000000
+--- a/advisories/GLIBC-SA-2023-0001
++++ /dev/null
+@@ -1,14 +0,0 @@
+-printf: incorrect output for integers with thousands separator and width field
+-
+-When the printf family of functions is called with a format specifier
+-that uses an <apostrophe> (enable grouping) and a minimum width
+-specifier, the resulting output could be larger than reasonably expected
+-by a caller that computed a tight bound on the buffer size.  The
+-resulting larger than expected output could result in a buffer overflow
+-in the printf family of functions.
+-
+-CVE-Id: CVE-2023-25139
+-Public-Date: 2023-02-02
+-Vulnerable-Commit: e88b9f0e5cc50cab57a299dc7efe1a4eb385161d (2.37)
+-Fix-Commit: c980549cc6a1c03c23cc2fe3e7b0fe626a0364b0 (2.38)
+-Fix-Commit: 07b9521fc6369d000216b96562ff7c0ed32a16c4 (2.37-4)
+diff --git a/advisories/GLIBC-SA-2023-0002 b/advisories/GLIBC-SA-2023-0002
+deleted file mode 100644
+index 5122669a6451f803..0000000000000000
+--- a/advisories/GLIBC-SA-2023-0002
++++ /dev/null
+@@ -1,15 +0,0 @@
+-getaddrinfo: Stack read overflow in no-aaaa mode
+-
+-If the system is configured in no-aaaa mode via /etc/resolv.conf,
+-getaddrinfo is called for the AF_UNSPEC address family, and a DNS
+-response is received over TCP that is larger than 2048 bytes,
+-getaddrinfo may potentially disclose stack contents via the returned
+-address data, or crash.
+-
+-CVE-Id: CVE-2023-4527
+-Public-Date: 2023-09-12
+-Vulnerable-Commit: f282cdbe7f436c75864e5640a409a10485e9abb2 (2.36)
+-Fix-Commit: bd77dd7e73e3530203be1c52c8a29d08270cb25d (2.39)
+-Fix-Commit: 4ea972b7edd7e36610e8cde18bf7a8149d7bac4f (2.36-113)
+-Fix-Commit: b7529346025a130fee483d42178b5c118da971bb (2.37-38)
+-Fix-Commit: b25508dd774b617f99419bdc3cf2ace4560cd2d6 (2.38-19)
+diff --git a/advisories/GLIBC-SA-2023-0003 b/advisories/GLIBC-SA-2023-0003
+deleted file mode 100644
+index d3aef803480bc298..0000000000000000
+--- a/advisories/GLIBC-SA-2023-0003
++++ /dev/null
+@@ -1,15 +0,0 @@
+-getaddrinfo: Potential use-after-free
+-
+-When an NSS plugin only implements the _gethostbyname2_r and
+-_getcanonname_r callbacks, getaddrinfo could use memory that was freed
+-during buffer resizing, potentially causing a crash or read or write to
+-arbitrary memory.
+-
+-CVE-Id: CVE-2023-4806
+-Public-Date: 2023-09-12
+-Fix-Commit: 973fe93a5675c42798b2161c6f29c01b0e243994 (2.39)
+-Fix-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420)
+-Fix-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270)
+-Fix-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115)
+-Fix-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39)
+-Fix-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20)
+diff --git a/advisories/GLIBC-SA-2023-0004 b/advisories/GLIBC-SA-2023-0004
+deleted file mode 100644
+index 5286a7aa545cd942..0000000000000000
+--- a/advisories/GLIBC-SA-2023-0004
++++ /dev/null
+@@ -1,16 +0,0 @@
+-tunables: local privilege escalation through buffer overflow
+-
+-If a tunable of the form NAME=NAME=VAL is passed in the environment of a
+-setuid program and NAME is valid, it may result in a buffer overflow,
+-which could be exploited to achieve escalated privileges.  This flaw was
+-introduced in glibc 2.34.
+-
+-CVE-Id: CVE-2023-4911
+-Public-Date: 2023-10-03
+-Vulnerable-Commit: 2ed18c5b534d9e92fc006202a5af0df6b72e7aca (2.34)
+-Fix-Commit: 1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa (2.39)
+-Fix-Commit: dcc367f148bc92e7f3778a125f7a416b093964d9 (2.34-423)
+-Fix-Commit: c84018a05aec80f5ee6f682db0da1130b0196aef (2.35-274)
+-Fix-Commit: 22955ad85186ee05834e47e665056148ca07699c (2.36-118)
+-Fix-Commit: b4e23c75aea756b4bddc4abcf27a1c6dca8b6bd3 (2.37-45)
+-Fix-Commit: 750a45a783906a19591fb8ff6b7841470f1f5701 (2.38-27)
+diff --git a/advisories/GLIBC-SA-2023-0005 b/advisories/GLIBC-SA-2023-0005
+deleted file mode 100644
+index cc4eb90b8283dc14..0000000000000000
+--- a/advisories/GLIBC-SA-2023-0005
++++ /dev/null
+@@ -1,18 +0,0 @@
+-getaddrinfo: DoS due to memory leak
+-
+-The fix for CVE-2023-4806 introduced a memory leak when an application
+-calls getaddrinfo for AF_INET6 with AI_CANONNAME, AI_ALL and AI_V4MAPPED
+-flags set.
+-
+-CVE-Id: CVE-2023-5156
+-Public-Date: 2023-09-25
+-Vulnerable-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420)
+-Vulnerable-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270)
+-Vulnerable-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115)
+-Vulnerable-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39)
+-Vulnerable-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20)
+-Fix-Commit: 8006457ab7e1cd556b919f477348a96fe88f2e49 (2.34-421)
+-Fix-Commit: 17092c0311f954e6f3c010f73ce3a78c24ac279a (2.35-272)
+-Fix-Commit: 856bac55f98dc840e7c27cfa82262b933385de90 (2.36-116)
+-Fix-Commit: 4473d1b87d04b25cdd0e0354814eeaa421328268 (2.37-42)
+-Fix-Commit: 5ee59ca371b99984232d7584fe2b1a758b4421d3 (2.38-24)
+diff --git a/advisories/GLIBC-SA-2024-0001 b/advisories/GLIBC-SA-2024-0001
+deleted file mode 100644
+index 28931c75ae018cc3..0000000000000000
+--- a/advisories/GLIBC-SA-2024-0001
++++ /dev/null
+@@ -1,15 +0,0 @@
+-syslog: Heap buffer overflow in __vsyslog_internal
+-
+-__vsyslog_internal did not handle a case where printing a SYSLOG_HEADER
+-containing a long program name failed to update the required buffer
+-size, leading to the allocation and overflow of a too-small buffer on
+-the heap.
+-
+-CVE-Id: CVE-2023-6246
+-Public-Date: 2024-01-30
+-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37)
+-Fix-Commit: 6bd0e4efcc78f3c0115e5ea9739a1642807450da (2.39)
+-Fix-Commit: 23514c72b780f3da097ecf33a793b7ba9c2070d2 (2.38-42)
+-Fix-Commit: 97a4292aa4a2642e251472b878d0ec4c46a0e59a (2.37-57)
+-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16)
+-Fix-Commit: d1a83b6767f68b3cb5b4b4ea2617254acd040c82 (2.36-126)
+diff --git a/advisories/GLIBC-SA-2024-0002 b/advisories/GLIBC-SA-2024-0002
+deleted file mode 100644
+index 940bfcf2fcb76050..0000000000000000
+--- a/advisories/GLIBC-SA-2024-0002
++++ /dev/null
+@@ -1,15 +0,0 @@
+-syslog: Heap buffer overflow in __vsyslog_internal
+-
+-__vsyslog_internal used the return value of snprintf/vsnprintf to
+-calculate buffer sizes for memory allocation.  If these functions (for
+-any reason) failed and returned -1, the resulting buffer would be too
+-small to hold output.
+-
+-CVE-Id: CVE-2023-6779
+-Public-Date: 2024-01-30
+-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37)
+-Fix-Commit: 7e5a0c286da33159d47d0122007aac016f3e02cd (2.39)
+-Fix-Commit: d0338312aace5bbfef85e03055e1212dd0e49578 (2.38-43)
+-Fix-Commit: 67062eccd9a65d7fda9976a56aeaaf6c25a80214 (2.37-58)
+-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16)
+-Fix-Commit: 2bc9d7c002bdac38b5c2a3f11b78e309d7765b83 (2.36-127)
+diff --git a/advisories/GLIBC-SA-2024-0003 b/advisories/GLIBC-SA-2024-0003
+deleted file mode 100644
+index b43a5150ab1b0cc4..0000000000000000
+--- a/advisories/GLIBC-SA-2024-0003
++++ /dev/null
+@@ -1,13 +0,0 @@
+-syslog: Integer overflow in __vsyslog_internal
+-
+-__vsyslog_internal calculated a buffer size by adding two integers, but
+-did not first check if the addition would overflow.
+-
+-CVE-Id: CVE-2023-6780
+-Public-Date: 2024-01-30
+-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37)
+-Fix-Commit: ddf542da94caf97ff43cc2875c88749880b7259b (2.39)
+-Fix-Commit: d37c2b20a4787463d192b32041c3406c2bd91de0 (2.38-44)
+-Fix-Commit: 2b58cba076e912961ceaa5fa58588e4b10f791c0 (2.37-59)
+-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16)
+-Fix-Commit: b9b7d6a27aa0632f334352fa400771115b3c69b7 (2.36-128)
+diff --git a/advisories/README b/advisories/README
+deleted file mode 100644
+index 94e68b1350bbad0e..0000000000000000
+--- a/advisories/README
++++ /dev/null
+@@ -1,73 +0,0 @@
+-GNU C Library Security Advisory Format
+-======================================
+-
+-Security advisories in this directory follow a simple git commit log
+-format, with a heading and free-format description augmented with tags
+-to allow parsing key information.  References to code changes are
+-specific to the glibc repository and follow a specific format:
+-
+-  Tag-name: <commit-ref> (release-version)
+-
+-The <commit-ref> indicates a specific commit in the repository.  The
+-release-version indicates the publicly consumable release in which this
+-commit is known to exist.  The release-version is derived from the
+-git-describe format, (i.e. stripped out from glibc-2.34.NNN-gxxxx) and
+-is of the form 2.34-NNN.  If the -NNN suffix is absent, it means that
+-the change is in that release tarball, otherwise the change is on the
+-release/2.YY/master branch and not in any released tarball.
+-
+-The following tags are currently being used:
+-
+-CVE-Id:
+-This is the CVE-Id assigned under the CVE Program
+-(https://www.cve.org/).
+-
+-Public-Date:
+-The date this issue became publicly known.
+-
+-Vulnerable-Commit:
+-The commit that introduced this vulnerability.  There could be multiple
+-entries, one for each release branch in the glibc repository; the
+-release-version portion of this tag should tell you which branch this is
+-on.
+-
+-Fix-Commit:
+-The commit that fixed this vulnerability.  There could be multiple
+-entries for each release branch in the glibc repository, indicating that
+-all of those commits contributed to fixing that issue in each of those
+-branches.
+-
+-Adding an Advisory
+-------------------
+-
+-An advisory for a CVE needs to be added on the master branch in two steps:
+-
+-1. Add the text of the advisory without any Fix-Commit tags along with
+-   the fix for the CVE.  Add the Vulnerable-Commit tag, if applicable.
+-   The advisories directory does not exist in release branches, so keep
+-   the advisory text commit distinct from the code changes, to ease
+-   backports.  Ask for the GLIBC-SA advisory number from the security
+-   team.
+-
+-2. Finish all backports on release branches and then back on the msater
+-   branch, add all commit refs to the advisory using the Fix-Commit
+-   tags.  Don't bother adding the release-version subscript since the
+-   next step will overwrite it.
+-
+-3. Run the process-advisories.sh script in the scripts directory on the
+-   advisory:
+-
+-     scripts/process-advisories.sh update GLIBC-SA-YYYY-NNNN
+-
+-   (replace YYYY-NNNN with the actual advisory number).
+-
+-4. Verify the updated advisory and push the result.
+-
+-Getting a NEWS snippet from advisories
+---------------------------------------
+-
+-Run:
+-
+-  scripts/process-advisories.sh news
+-
+-and copy the content into the NEWS file.
diff --git a/SOURCES/glibc-upstream-2.39-10.patch b/SOURCES/glibc-upstream-2.39-10.patch
new file mode 100644
index 0000000..858f28e
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-10.patch
@@ -0,0 +1,16 @@
+commit 983f34a1252de3ca6f2305c211d86530ea42010e
+Author: caiyinyu <caiyinyu@loongson.cn>
+Date:   Mon Mar 11 16:07:48 2024 +0800
+
+    LoongArch: Correct {__ieee754, _}_scalb -> {__ieee754, _}_scalbf
+
+diff --git a/sysdeps/loongarch/fpu/e_scalbf.c b/sysdeps/loongarch/fpu/e_scalbf.c
+index 9f054852362e2d76..7c0395fbb5afbc58 100644
+--- a/sysdeps/loongarch/fpu/e_scalbf.c
++++ b/sysdeps/loongarch/fpu/e_scalbf.c
+@@ -57,4 +57,4 @@ __ieee754_scalbf (float x, float fn)
+ 
+   return x;
+ }
+-libm_alias_finite (__ieee754_scalb, __scalb)
++libm_alias_finite (__ieee754_scalbf, __scalbf)
diff --git a/SOURCES/glibc-upstream-2.39-11.patch b/SOURCES/glibc-upstream-2.39-11.patch
new file mode 100644
index 0000000..d816c3c
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-11.patch
@@ -0,0 +1,80 @@
+commit 7fc8242bf87828c935ac5df5cafb9dc7ab635fd9
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Fri Feb 16 07:17:10 2024 -0800
+
+    x86-64: Save APX registers in ld.so trampoline
+    
+    Add APX registers to STATE_SAVE_MASK so that APX registers are saved in
+    ld.so trampoline.  This fixes BZ #31371.
+    
+    Also update STATE_SAVE_OFFSET and STATE_SAVE_MASK for i386 which will
+    be used by i386 _dl_tlsdesc_dynamic.
+    Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
+    
+    (cherry picked from commit dfb05f8e704edac70db38c4c8ee700769d91a413)
+
+diff --git a/sysdeps/x86/sysdep.h b/sysdeps/x86/sysdep.h
+index 85d0a8c943cbb218..837fd28734914a1c 100644
+--- a/sysdeps/x86/sysdep.h
++++ b/sysdeps/x86/sysdep.h
+@@ -21,14 +21,54 @@
+ 
+ #include <sysdeps/generic/sysdep.h>
+ 
++/* The extended state feature IDs in the state component bitmap.  */
++#define X86_XSTATE_X87_ID	0
++#define X86_XSTATE_SSE_ID	1
++#define X86_XSTATE_AVX_ID	2
++#define X86_XSTATE_BNDREGS_ID	3
++#define X86_XSTATE_BNDCFG_ID	4
++#define X86_XSTATE_K_ID		5
++#define X86_XSTATE_ZMM_H_ID	6
++#define X86_XSTATE_ZMM_ID	7
++#define X86_XSTATE_PKRU_ID	9
++#define X86_XSTATE_TILECFG_ID	17
++#define X86_XSTATE_TILEDATA_ID	18
++#define X86_XSTATE_APX_F_ID	19
++
++#ifdef __x86_64__
+ /* Offset for fxsave/xsave area used by _dl_runtime_resolve.  Also need
+    space to preserve RCX, RDX, RSI, RDI, R8, R9 and RAX.  It must be
+-   aligned to 16 bytes for fxsave and 64 bytes for xsave.  */
+-#define STATE_SAVE_OFFSET (8 * 7 + 8)
+-
+-/* Save SSE, AVX, AVX512, mask and bound registers.  */
+-#define STATE_SAVE_MASK \
+-  ((1 << 1) | (1 << 2) | (1 << 3) | (1 << 5) | (1 << 6) | (1 << 7))
++   aligned to 16 bytes for fxsave and 64 bytes for xsave.
++
++   NB: Is is non-zero because of the 128-byte red-zone.  Some registers
++   are saved on stack without adjusting stack pointer first.  When we
++   update stack pointer to allocate more space, we need to take the
++   red-zone into account.  */
++# define STATE_SAVE_OFFSET (8 * 7 + 8)
++
++/* Save SSE, AVX, AVX512, mask, bound and APX registers.  Bound and APX
++   registers are mutually exclusive.  */
++# define STATE_SAVE_MASK		\
++  ((1 << X86_XSTATE_SSE_ID)		\
++   | (1 << X86_XSTATE_AVX_ID)		\
++   | (1 << X86_XSTATE_BNDREGS_ID)	\
++   | (1 << X86_XSTATE_K_ID)		\
++   | (1 << X86_XSTATE_ZMM_H_ID) 	\
++   | (1 << X86_XSTATE_ZMM_ID)		\
++   | (1 << X86_XSTATE_APX_F_ID))
++#else
++/* Offset for fxsave/xsave area used by _dl_tlsdesc_dynamic.  Since i386
++   doesn't have red-zone, use 0 here.  */
++# define STATE_SAVE_OFFSET 0
++
++/* Save SSE, AVX, AXV512, mask and bound registers.   */
++# define STATE_SAVE_MASK		\
++  ((1 << X86_XSTATE_SSE_ID)		\
++   | (1 << X86_XSTATE_AVX_ID)		\
++   | (1 << X86_XSTATE_BNDREGS_ID)	\
++   | (1 << X86_XSTATE_K_ID)		\
++   | (1 << X86_XSTATE_ZMM_H_ID))
++#endif
+ 
+ /* Constants for bits in __x86_string_control:  */
+ 
diff --git a/SOURCES/glibc-upstream-2.39-12.patch b/SOURCES/glibc-upstream-2.39-12.patch
new file mode 100644
index 0000000..74e0b72
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-12.patch
@@ -0,0 +1,1453 @@
+commit a364304718725a31ab141936322855c76c73e35e
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Mon Feb 26 06:37:03 2024 -0800
+
+    x86: Update _dl_tlsdesc_dynamic to preserve caller-saved registers
+    
+    Compiler generates the following instruction sequence for GNU2 dynamic
+    TLS access:
+    
+            leaq    tls_var@TLSDESC(%rip), %rax
+            call    *tls_var@TLSCALL(%rax)
+    
+    or
+    
+            leal    tls_var@TLSDESC(%ebx), %eax
+            call    *tls_var@TLSCALL(%eax)
+    
+    CALL instruction is transparent to compiler which assumes all registers,
+    except for EFLAGS and RAX/EAX, are unchanged after CALL.  When
+    _dl_tlsdesc_dynamic is called, it calls __tls_get_addr on the slow
+    path.  __tls_get_addr is a normal function which doesn't preserve any
+    caller-saved registers.  _dl_tlsdesc_dynamic saved and restored integer
+    caller-saved registers, but didn't preserve any other caller-saved
+    registers.  Add _dl_tlsdesc_dynamic IFUNC functions for FNSAVE, FXSAVE,
+    XSAVE and XSAVEC to save and restore all caller-saved registers.  This
+    fixes BZ #31372.
+    
+    Add GLRO(dl_x86_64_runtime_resolve) with GLRO(dl_x86_tlsdesc_dynamic)
+    to optimize elf_machine_runtime_setup.
+    Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
+    
+    (cherry picked from commit 0aac205a814a8511e98d02b91a8dc908f1c53cde)
+
+diff --git a/elf/Makefile b/elf/Makefile
+index 5d78b659ce813ff9..c5c37a9147e69d83 100644
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -424,6 +424,7 @@ tests += \
+   tst-glibc-hwcaps-prepend \
+   tst-global1 \
+   tst-global2 \
++  tst-gnu2-tls2 \
+   tst-initfinilazyfail \
+   tst-initorder \
+   tst-initorder2 \
+@@ -846,6 +847,9 @@ modules-names += \
+   tst-filterobj-flt \
+   tst-finilazyfailmod \
+   tst-globalmod2 \
++  tst-gnu2-tls2mod0 \
++  tst-gnu2-tls2mod1 \
++  tst-gnu2-tls2mod2 \
+   tst-initlazyfailmod \
+   tst-initorder2a \
+   tst-initorder2b \
+@@ -3044,8 +3048,22 @@ $(objpfx)tst-tlsgap.out: \
+   $(objpfx)tst-tlsgap-mod0.so \
+   $(objpfx)tst-tlsgap-mod1.so \
+   $(objpfx)tst-tlsgap-mod2.so
++
++$(objpfx)tst-gnu2-tls2: $(shared-thread-library)
++$(objpfx)tst-gnu2-tls2.out: \
++  $(objpfx)tst-gnu2-tls2mod0.so \
++  $(objpfx)tst-gnu2-tls2mod1.so \
++  $(objpfx)tst-gnu2-tls2mod2.so
++
+ ifeq (yes,$(have-mtls-dialect-gnu2))
++# This test fails if dl_tlsdesc_dynamic doesn't preserve all caller-saved
++# registers.  See https://sourceware.org/bugzilla/show_bug.cgi?id=31372
++test-xfail-tst-gnu2-tls2 = yes
++
+ CFLAGS-tst-tlsgap-mod0.c += -mtls-dialect=gnu2
+ CFLAGS-tst-tlsgap-mod1.c += -mtls-dialect=gnu2
+ CFLAGS-tst-tlsgap-mod2.c += -mtls-dialect=gnu2
++CFLAGS-tst-gnu2-tls2mod0.c += -mtls-dialect=gnu2
++CFLAGS-tst-gnu2-tls2mod1.c += -mtls-dialect=gnu2
++CFLAGS-tst-gnu2-tls2mod2.c += -mtls-dialect=gnu2
+ endif
+diff --git a/elf/tst-gnu2-tls2.c b/elf/tst-gnu2-tls2.c
+new file mode 100644
+index 0000000000000000..7ac04d7f3312033e
+--- /dev/null
++++ b/elf/tst-gnu2-tls2.c
+@@ -0,0 +1,122 @@
++/* Test TLSDESC relocation.
++   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
++   <http://www.gnu.org/licenses/>.  */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <dlfcn.h>
++#include <pthread.h>
++#include <support/xdlfcn.h>
++#include <support/xthread.h>
++#include <support/check.h>
++#include <support/test-driver.h>
++#include "tst-gnu2-tls2.h"
++
++#ifndef IS_SUPPORTED
++# define IS_SUPPORTED() true
++#endif
++
++/* An architecture can define it to clobber caller-saved registers in
++   malloc below to verify that the implicit TLSDESC call won't change
++   caller-saved registers.  */
++#ifndef PREPARE_MALLOC
++# define PREPARE_MALLOC()
++#endif
++
++extern void * __libc_malloc (size_t);
++
++size_t malloc_counter = 0;
++
++void *
++malloc (size_t n)
++{
++  PREPARE_MALLOC ();
++  malloc_counter++;
++  return __libc_malloc (n);
++}
++
++static void *mod[3];
++#ifndef MOD
++# define MOD(i) "tst-gnu2-tls2mod" #i ".so"
++#endif
++static const char *modname[3] = { MOD(0), MOD(1), MOD(2) };
++#undef MOD
++
++static void
++open_mod (int i)
++{
++  mod[i] = xdlopen (modname[i], RTLD_LAZY);
++  printf ("open %s\n", modname[i]);
++}
++
++static void
++close_mod (int i)
++{
++  xdlclose (mod[i]);
++  mod[i] = NULL;
++  printf ("close %s\n", modname[i]);
++}
++
++static void
++access_mod (int i, const char *sym)
++{
++  struct tls var = { -1, -1, -1, -1 };
++  struct tls *(*f) (struct tls *) = xdlsym (mod[i], sym);
++  /* Check that our malloc is called.  */
++  malloc_counter = 0;
++  struct tls *p = f (&var);
++  TEST_VERIFY (malloc_counter != 0);
++  printf ("access %s: %s() = %p\n", modname[i], sym, p);
++  TEST_VERIFY_EXIT (memcmp (p, &var, sizeof (var)) == 0);
++  ++(p->a);
++}
++
++static void *
++start (void *arg)
++{
++  /* The DTV generation is at the last dlopen of mod0 and the
++     entry for mod1 is NULL.  */
++
++  open_mod (1); /* Reuse modid of mod1. Uses dynamic TLS.  */
++
++  /* Force the slow path in GNU2 TLS descriptor call.  */
++  access_mod (1, "apply_tls");
++
++  return arg;
++}
++
++static int
++do_test (void)
++{
++  if (!IS_SUPPORTED ())
++    return EXIT_UNSUPPORTED;
++
++  open_mod (0);
++  open_mod (1);
++  open_mod (2);
++  close_mod (0);
++  close_mod (1); /* Create modid gap at mod1.  */
++  open_mod (0); /* Reuse modid of mod0, bump generation count.  */
++
++  /* Create a thread where DTV of mod1 is NULL.  */
++  pthread_t t = xpthread_create (NULL, start, NULL);
++  xpthread_join (t);
++  return 0;
++}
++
++#include <support/test-driver.c>
+diff --git a/elf/tst-gnu2-tls2.h b/elf/tst-gnu2-tls2.h
+new file mode 100644
+index 0000000000000000..77964a57a352e6a4
+--- /dev/null
++++ b/elf/tst-gnu2-tls2.h
+@@ -0,0 +1,36 @@
++/* Test TLSDESC relocation.
++   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 <stdint.h>
++
++struct tls
++{
++  int64_t a, b, c, d;
++};
++
++extern struct tls *apply_tls (struct tls *);
++
++/* An architecture can define them to verify that clobber caller-saved
++   registers aren't changed by the implicit TLSDESC call.  */
++#ifndef BEFORE_TLSDESC_CALL
++# define BEFORE_TLSDESC_CALL()
++#endif
++
++#ifndef AFTER_TLSDESC_CALL
++# define AFTER_TLSDESC_CALL()
++#endif
+diff --git a/elf/tst-gnu2-tls2mod0.c b/elf/tst-gnu2-tls2mod0.c
+new file mode 100644
+index 0000000000000000..45556a0e173922cc
+--- /dev/null
++++ b/elf/tst-gnu2-tls2mod0.c
+@@ -0,0 +1,31 @@
++/* DSO used by tst-gnu2-tls2.
++   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 "tst-gnu2-tls2.h"
++
++__thread struct tls tls_var0 __attribute__ ((visibility ("hidden")));
++
++struct tls *
++apply_tls (struct tls *p)
++{
++  BEFORE_TLSDESC_CALL ();
++  tls_var0 = *p;
++  struct tls *ret = &tls_var0;
++  AFTER_TLSDESC_CALL ();
++  return ret;
++}
+diff --git a/elf/tst-gnu2-tls2mod1.c b/elf/tst-gnu2-tls2mod1.c
+new file mode 100644
+index 0000000000000000..e10b9dbc0a7573c7
+--- /dev/null
++++ b/elf/tst-gnu2-tls2mod1.c
+@@ -0,0 +1,31 @@
++/* DSO used by tst-gnu2-tls2.
++   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 "tst-gnu2-tls2.h"
++
++__thread struct tls tls_var1[100] __attribute__ ((visibility ("hidden")));
++
++struct tls *
++apply_tls (struct tls *p)
++{
++  BEFORE_TLSDESC_CALL ();
++  tls_var1[1] = *p;
++  struct tls *ret = &tls_var1[1];
++  AFTER_TLSDESC_CALL ();
++  return ret;
++}
+diff --git a/elf/tst-gnu2-tls2mod2.c b/elf/tst-gnu2-tls2mod2.c
+new file mode 100644
+index 0000000000000000..141af51e55b8bf34
+--- /dev/null
++++ b/elf/tst-gnu2-tls2mod2.c
+@@ -0,0 +1,31 @@
++/* DSO used by tst-gnu2-tls2.
++   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 "tst-gnu2-tls2.h"
++
++__thread struct tls tls_var2 __attribute__ ((visibility ("hidden")));
++
++struct tls *
++apply_tls (struct tls *p)
++{
++  BEFORE_TLSDESC_CALL ();
++  tls_var2 = *p;
++  struct tls *ret = &tls_var2;
++  AFTER_TLSDESC_CALL ();
++  return ret;
++}
+diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h
+index fc1ef96587e1992e..50d74fe6e9aaa7bb 100644
+--- a/sysdeps/i386/dl-machine.h
++++ b/sysdeps/i386/dl-machine.h
+@@ -347,7 +347,7 @@ and creates an unsatisfiable circular dependency.\n",
+ 		  {
+ 		    td->arg = _dl_make_tlsdesc_dynamic
+ 		      (sym_map, sym->st_value + (ElfW(Word))td->arg);
+-		    td->entry = _dl_tlsdesc_dynamic;
++		    td->entry = GLRO(dl_x86_tlsdesc_dynamic);
+ 		  }
+ 		else
+ #  endif
+diff --git a/sysdeps/i386/dl-tlsdesc-dynamic.h b/sysdeps/i386/dl-tlsdesc-dynamic.h
+new file mode 100644
+index 0000000000000000..36270285775016ff
+--- /dev/null
++++ b/sysdeps/i386/dl-tlsdesc-dynamic.h
+@@ -0,0 +1,190 @@
++/* Thread-local storage handling in the ELF dynamic linker.  i386 version.
++   Copyright (C) 2004-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/>.  */
++
++#undef REGISTER_SAVE_AREA
++
++#if !defined USE_FNSAVE && (STATE_SAVE_ALIGNMENT % 16) != 0
++# error STATE_SAVE_ALIGNMENT must be multiple of 16
++#endif
++
++#if DL_RUNTIME_RESOLVE_REALIGN_STACK
++# ifdef USE_FNSAVE
++#  error USE_FNSAVE shouldn't be defined
++# endif
++# ifdef USE_FXSAVE
++/* Use fxsave to save all registers.  */
++#  define REGISTER_SAVE_AREA	512
++# endif
++#else
++# ifdef USE_FNSAVE
++/* Use fnsave to save x87 FPU stack registers.  */
++#  define REGISTER_SAVE_AREA	108
++# else
++#  ifndef USE_FXSAVE
++#   error USE_FXSAVE must be defined
++#  endif
++/* Use fxsave to save all registers.  Add 12 bytes to align the stack
++   to 16 bytes.  */
++#  define REGISTER_SAVE_AREA	(512 + 12)
++# endif
++#endif
++
++	.hidden _dl_tlsdesc_dynamic
++	.global	_dl_tlsdesc_dynamic
++	.type	_dl_tlsdesc_dynamic,@function
++
++     /* This function is used for symbols that need dynamic TLS.
++
++	%eax points to the TLS descriptor, such that 0(%eax) points to
++	_dl_tlsdesc_dynamic itself, and 4(%eax) points to a struct
++	tlsdesc_dynamic_arg object.  It must return in %eax the offset
++	between the thread pointer and the object denoted by the
++	argument, without clobbering any registers.
++
++	The assembly code that follows is a rendition of the following
++	C code, hand-optimized a little bit.
++
++ptrdiff_t
++__attribute__ ((__regparm__ (1)))
++_dl_tlsdesc_dynamic (struct tlsdesc *tdp)
++{
++  struct tlsdesc_dynamic_arg *td = tdp->arg;
++  dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer + DTV_OFFSET);
++  if (__builtin_expect (td->gen_count <= dtv[0].counter
++			&& (dtv[td->tlsinfo.ti_module].pointer.val
++			    != TLS_DTV_UNALLOCATED),
++			1))
++    return dtv[td->tlsinfo.ti_module].pointer.val + td->tlsinfo.ti_offset
++      - __thread_pointer;
++
++  return ___tls_get_addr (&td->tlsinfo) - __thread_pointer;
++}
++*/
++	cfi_startproc
++	.align 16
++_dl_tlsdesc_dynamic:
++	/* Like all TLS resolvers, preserve call-clobbered registers.
++	   We need two scratch regs anyway.  */
++	subl	$32, %esp
++	cfi_adjust_cfa_offset (32)
++	movl	%ecx, 20(%esp)
++	movl	%edx, 24(%esp)
++	movl	TLSDESC_ARG(%eax), %eax
++	movl	%gs:DTV_OFFSET, %edx
++	movl	TLSDESC_GEN_COUNT(%eax), %ecx
++	cmpl	(%edx), %ecx
++	ja	2f
++	movl	TLSDESC_MODID(%eax), %ecx
++	movl	(%edx,%ecx,8), %edx
++	cmpl	$-1, %edx
++	je	2f
++	movl	TLSDESC_MODOFF(%eax), %eax
++	addl	%edx, %eax
++1:
++	movl	20(%esp), %ecx
++	subl	%gs:0, %eax
++	movl	24(%esp), %edx
++	addl	$32, %esp
++	cfi_adjust_cfa_offset (-32)
++	ret
++	.p2align 4,,7
++2:
++	cfi_adjust_cfa_offset (32)
++#if DL_RUNTIME_RESOLVE_REALIGN_STACK
++	movl	%ebx, -28(%esp)
++	movl	%esp, %ebx
++	cfi_def_cfa_register(%ebx)
++	and	$-STATE_SAVE_ALIGNMENT, %esp
++#endif
++#ifdef REGISTER_SAVE_AREA
++	subl	$REGISTER_SAVE_AREA, %esp
++# if !DL_RUNTIME_RESOLVE_REALIGN_STACK
++	cfi_adjust_cfa_offset(REGISTER_SAVE_AREA)
++# endif
++#else
++# if !DL_RUNTIME_RESOLVE_REALIGN_STACK
++#  error DL_RUNTIME_RESOLVE_REALIGN_STACK must be true
++# endif
++	/* Allocate stack space of the required size to save the state.  */
++	LOAD_PIC_REG (cx)
++	subl	RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET+XSAVE_STATE_SIZE_OFFSET+_rtld_local_ro@GOTOFF(%ecx), %esp
++#endif
++#ifdef USE_FNSAVE
++	fnsave	(%esp)
++#elif defined USE_FXSAVE
++	fxsave	(%esp)
++#else
++	/* Save the argument for ___tls_get_addr in EAX.  */
++	movl	%eax, %ecx
++	movl	$TLSDESC_CALL_STATE_SAVE_MASK, %eax
++	xorl	%edx, %edx
++	/* Clear the XSAVE Header.  */
++# ifdef USE_XSAVE
++	movl	%edx, (512)(%esp)
++	movl	%edx, (512 + 4 * 1)(%esp)
++	movl	%edx, (512 + 4 * 2)(%esp)
++	movl	%edx, (512 + 4 * 3)(%esp)
++# endif
++	movl	%edx, (512 + 4 * 4)(%esp)
++	movl	%edx, (512 + 4 * 5)(%esp)
++	movl	%edx, (512 + 4 * 6)(%esp)
++	movl	%edx, (512 + 4 * 7)(%esp)
++	movl	%edx, (512 + 4 * 8)(%esp)
++	movl	%edx, (512 + 4 * 9)(%esp)
++	movl	%edx, (512 + 4 * 10)(%esp)
++	movl	%edx, (512 + 4 * 11)(%esp)
++	movl	%edx, (512 + 4 * 12)(%esp)
++	movl	%edx, (512 + 4 * 13)(%esp)
++	movl	%edx, (512 + 4 * 14)(%esp)
++	movl	%edx, (512 + 4 * 15)(%esp)
++# ifdef USE_XSAVE
++	xsave	(%esp)
++# else
++	xsavec	(%esp)
++# endif
++	/* Restore the argument for ___tls_get_addr in EAX.  */
++	movl	%ecx, %eax
++#endif
++	call	HIDDEN_JUMPTARGET (___tls_get_addr)
++	/* Get register content back.  */
++#ifdef USE_FNSAVE
++	frstor	(%esp)
++#elif defined USE_FXSAVE
++	fxrstor	(%esp)
++#else
++	/* Save and retore ___tls_get_addr return value stored in EAX.  */
++	movl	%eax, %ecx
++	movl	$TLSDESC_CALL_STATE_SAVE_MASK, %eax
++	xorl	%edx, %edx
++	xrstor	(%esp)
++	movl	%ecx, %eax
++#endif
++#if DL_RUNTIME_RESOLVE_REALIGN_STACK
++	mov	%ebx, %esp
++	cfi_def_cfa_register(%esp)
++	movl	-28(%esp), %ebx
++	cfi_restore(%ebx)
++#else
++	addl	$REGISTER_SAVE_AREA, %esp
++	cfi_adjust_cfa_offset(-REGISTER_SAVE_AREA)
++#endif
++	jmp	1b
++	cfi_endproc
++	.size	_dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
++
++#undef STATE_SAVE_ALIGNMENT
+diff --git a/sysdeps/i386/dl-tlsdesc.S b/sysdeps/i386/dl-tlsdesc.S
+index 90d93caa0cdb7442..f002feee56e43f71 100644
+--- a/sysdeps/i386/dl-tlsdesc.S
++++ b/sysdeps/i386/dl-tlsdesc.S
+@@ -18,8 +18,27 @@
+ 
+ #include <sysdep.h>
+ #include <tls.h>
++#include <cpu-features-offsets.h>
++#include <features-offsets.h>
+ #include "tlsdesc.h"
+ 
++#ifndef DL_STACK_ALIGNMENT
++/* Due to GCC bug:
++
++   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58066
++
++   __tls_get_addr may be called with 4-byte stack alignment.  Although
++   this bug has been fixed in GCC 4.9.4, 5.3 and 6, we can't assume
++   that stack will be always aligned at 16 bytes.  */
++# define DL_STACK_ALIGNMENT 4
++#endif
++
++/* True if _dl_tlsdesc_dynamic should align stack for STATE_SAVE or align
++   stack to MINIMUM_ALIGNMENT bytes before calling ___tls_get_addr.  */
++#define DL_RUNTIME_RESOLVE_REALIGN_STACK \
++  (STATE_SAVE_ALIGNMENT > DL_STACK_ALIGNMENT \
++   || MINIMUM_ALIGNMENT > DL_STACK_ALIGNMENT)
++
+ 	.text
+ 
+      /* This function is used to compute the TP offset for symbols in
+@@ -65,69 +84,35 @@ _dl_tlsdesc_undefweak:
+ 	.size	_dl_tlsdesc_undefweak, .-_dl_tlsdesc_undefweak
+ 
+ #ifdef SHARED
+-	.hidden _dl_tlsdesc_dynamic
+-	.global	_dl_tlsdesc_dynamic
+-	.type	_dl_tlsdesc_dynamic,@function
+-
+-     /* This function is used for symbols that need dynamic TLS.
+-
+-	%eax points to the TLS descriptor, such that 0(%eax) points to
+-	_dl_tlsdesc_dynamic itself, and 4(%eax) points to a struct
+-	tlsdesc_dynamic_arg object.  It must return in %eax the offset
+-	between the thread pointer and the object denoted by the
+-	argument, without clobbering any registers.
+-
+-	The assembly code that follows is a rendition of the following
+-	C code, hand-optimized a little bit.
+-
+-ptrdiff_t
+-__attribute__ ((__regparm__ (1)))
+-_dl_tlsdesc_dynamic (struct tlsdesc *tdp)
+-{
+-  struct tlsdesc_dynamic_arg *td = tdp->arg;
+-  dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer + DTV_OFFSET);
+-  if (__builtin_expect (td->gen_count <= dtv[0].counter
+-			&& (dtv[td->tlsinfo.ti_module].pointer.val
+-			    != TLS_DTV_UNALLOCATED),
+-			1))
+-    return dtv[td->tlsinfo.ti_module].pointer.val + td->tlsinfo.ti_offset
+-      - __thread_pointer;
+-
+-  return ___tls_get_addr (&td->tlsinfo) - __thread_pointer;
+-}
+-*/
+-	cfi_startproc
+-	.align 16
+-_dl_tlsdesc_dynamic:
+-	/* Like all TLS resolvers, preserve call-clobbered registers.
+-	   We need two scratch regs anyway.  */
+-	subl	$28, %esp
+-	cfi_adjust_cfa_offset (28)
+-	movl	%ecx, 20(%esp)
+-	movl	%edx, 24(%esp)
+-	movl	TLSDESC_ARG(%eax), %eax
+-	movl	%gs:DTV_OFFSET, %edx
+-	movl	TLSDESC_GEN_COUNT(%eax), %ecx
+-	cmpl	(%edx), %ecx
+-	ja	.Lslow
+-	movl	TLSDESC_MODID(%eax), %ecx
+-	movl	(%edx,%ecx,8), %edx
+-	cmpl	$-1, %edx
+-	je	.Lslow
+-	movl	TLSDESC_MODOFF(%eax), %eax
+-	addl	%edx, %eax
+-.Lret:
+-	movl	20(%esp), %ecx
+-	subl	%gs:0, %eax
+-	movl	24(%esp), %edx
+-	addl	$28, %esp
+-	cfi_adjust_cfa_offset (-28)
+-	ret
+-	.p2align 4,,7
+-.Lslow:
+-	cfi_adjust_cfa_offset (28)
+-	call	HIDDEN_JUMPTARGET (___tls_get_addr)
+-	jmp	.Lret
+-	cfi_endproc
+-	.size	_dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
++# define USE_FNSAVE
++# define MINIMUM_ALIGNMENT	4
++# define STATE_SAVE_ALIGNMENT	4
++# define _dl_tlsdesc_dynamic	_dl_tlsdesc_dynamic_fnsave
++# include "dl-tlsdesc-dynamic.h"
++# undef _dl_tlsdesc_dynamic
++# undef MINIMUM_ALIGNMENT
++# undef USE_FNSAVE
++
++# define MINIMUM_ALIGNMENT	16
++
++# define USE_FXSAVE
++# define STATE_SAVE_ALIGNMENT	16
++# define _dl_tlsdesc_dynamic	_dl_tlsdesc_dynamic_fxsave
++# include "dl-tlsdesc-dynamic.h"
++# undef _dl_tlsdesc_dynamic
++# undef USE_FXSAVE
++
++# define USE_XSAVE
++# define STATE_SAVE_ALIGNMENT	64
++# define _dl_tlsdesc_dynamic	_dl_tlsdesc_dynamic_xsave
++# include "dl-tlsdesc-dynamic.h"
++# undef _dl_tlsdesc_dynamic
++# undef USE_XSAVE
++
++# define USE_XSAVEC
++# define STATE_SAVE_ALIGNMENT	64
++# define _dl_tlsdesc_dynamic	_dl_tlsdesc_dynamic_xsavec
++# include "dl-tlsdesc-dynamic.h"
++# undef _dl_tlsdesc_dynamic
++# undef USE_XSAVEC
+ #endif /* SHARED */
+diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
+index 4d50b327b55ffd65..992aabe43ec60abf 100644
+--- a/sysdeps/x86/Makefile
++++ b/sysdeps/x86/Makefile
+@@ -1,5 +1,5 @@
+ ifeq ($(subdir),csu)
+-gen-as-const-headers += cpu-features-offsets.sym
++gen-as-const-headers += cpu-features-offsets.sym features-offsets.sym
+ endif
+ 
+ ifeq ($(subdir),elf)
+@@ -86,6 +86,11 @@ endif
+ tst-ifunc-isa-2-ENV = GLIBC_TUNABLES=glibc.cpu.hwcaps=-SSE4_2,-AVX,-AVX2,-AVX512F
+ tst-ifunc-isa-2-static-ENV = $(tst-ifunc-isa-2-ENV)
+ tst-hwcap-tunables-ARGS = -- $(host-test-program-cmd)
++
++CFLAGS-tst-gnu2-tls2.c += -msse
++CFLAGS-tst-gnu2-tls2mod0.c += -msse2 -mtune=haswell
++CFLAGS-tst-gnu2-tls2mod1.c += -msse2 -mtune=haswell
++CFLAGS-tst-gnu2-tls2mod2.c += -msse2 -mtune=haswell
+ endif
+ 
+ ifeq ($(subdir),math)
+diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
+index 25e6622a79bb969f..835113b42f924b83 100644
+--- a/sysdeps/x86/cpu-features.c
++++ b/sysdeps/x86/cpu-features.c
+@@ -27,8 +27,13 @@
+ extern void TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *)
+   attribute_hidden;
+ 
+-#if defined SHARED && defined __x86_64__
+-# include <dl-plt-rewrite.h>
++#if defined SHARED
++extern void _dl_tlsdesc_dynamic_fxsave (void) attribute_hidden;
++extern void _dl_tlsdesc_dynamic_xsave (void) attribute_hidden;
++extern void _dl_tlsdesc_dynamic_xsavec (void) attribute_hidden;
++
++# ifdef __x86_64__
++#  include <dl-plt-rewrite.h>
+ 
+ static void
+ TUNABLE_CALLBACK (set_plt_rewrite) (tunable_val_t *valp)
+@@ -47,6 +52,15 @@ TUNABLE_CALLBACK (set_plt_rewrite) (tunable_val_t *valp)
+ 		 : plt_rewrite_jmp);
+     }
+ }
++# else
++extern void _dl_tlsdesc_dynamic_fnsave (void) attribute_hidden;
++# endif
++#endif
++
++#ifdef __x86_64__
++extern void _dl_runtime_resolve_fxsave (void) attribute_hidden;
++extern void _dl_runtime_resolve_xsave (void) attribute_hidden;
++extern void _dl_runtime_resolve_xsavec (void) attribute_hidden;
+ #endif
+ 
+ #ifdef __LP64__
+@@ -1130,6 +1144,44 @@ no_cpuid:
+ 	       TUNABLE_CALLBACK (set_x86_shstk));
+ #endif
+ 
++  if (GLRO(dl_x86_cpu_features).xsave_state_size != 0)
++    {
++      if (CPU_FEATURE_USABLE_P (cpu_features, XSAVEC))
++	{
++#ifdef __x86_64__
++	  GLRO(dl_x86_64_runtime_resolve) = _dl_runtime_resolve_xsavec;
++#endif
++#ifdef SHARED
++	  GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_xsavec;
++#endif
++	}
++      else
++	{
++#ifdef __x86_64__
++	  GLRO(dl_x86_64_runtime_resolve) = _dl_runtime_resolve_xsave;
++#endif
++#ifdef SHARED
++	  GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_xsave;
++#endif
++	}
++    }
++  else
++    {
++#ifdef __x86_64__
++      GLRO(dl_x86_64_runtime_resolve) = _dl_runtime_resolve_fxsave;
++# ifdef SHARED
++      GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fxsave;
++# endif
++#else
++# ifdef SHARED
++      if (CPU_FEATURE_USABLE_P (cpu_features, FXSR))
++	GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fxsave;
++      else
++	GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fnsave;
++# endif
++#endif
++    }
++
+ #ifdef SHARED
+ # ifdef __x86_64__
+   TUNABLE_GET (plt_rewrite, tunable_val_t *,
+diff --git a/sysdeps/x86/dl-procinfo.c b/sysdeps/x86/dl-procinfo.c
+index ee957b4d70050b1c..5920d4b32034501d 100644
+--- a/sysdeps/x86/dl-procinfo.c
++++ b/sysdeps/x86/dl-procinfo.c
+@@ -86,3 +86,19 @@ PROCINFO_CLASS const char _dl_x86_platforms[4][9]
+ #else
+ ,
+ #endif
++
++#if defined SHARED && !IS_IN (ldconfig)
++# if !defined PROCINFO_DECL
++  ._dl_x86_tlsdesc_dynamic
++# else
++PROCINFO_CLASS void * _dl_x86_tlsdesc_dynamic
++# endif
++# ifndef PROCINFO_DECL
++= NULL
++# endif
++# ifdef PROCINFO_DECL
++;
++# else
++,
++# endif
++#endif
+diff --git a/sysdeps/x86_64/features-offsets.sym b/sysdeps/x86/features-offsets.sym
+similarity index 89%
+rename from sysdeps/x86_64/features-offsets.sym
+rename to sysdeps/x86/features-offsets.sym
+index 9e4be3393a60fd92..77e990c7053a38bf 100644
+--- a/sysdeps/x86_64/features-offsets.sym
++++ b/sysdeps/x86/features-offsets.sym
+@@ -3,4 +3,6 @@
+ #include <ldsodefs.h>
+ 
+ RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET offsetof (struct rtld_global_ro, _dl_x86_cpu_features)
++#ifdef __x86_64__
+ RTLD_GLOBAL_DL_X86_FEATURE_1_OFFSET offsetof (struct rtld_global, _dl_x86_feature_1)
++#endif
+diff --git a/sysdeps/x86/sysdep.h b/sysdeps/x86/sysdep.h
+index 837fd28734914a1c..485cad9c0283b334 100644
+--- a/sysdeps/x86/sysdep.h
++++ b/sysdeps/x86/sysdep.h
+@@ -70,6 +70,12 @@
+    | (1 << X86_XSTATE_ZMM_H_ID))
+ #endif
+ 
++/* States which should be saved for TLSDESC_CALL and TLS_DESC_CALL.
++   Compiler assumes that all registers, including x87 FPU stack registers,
++   are unchanged after CALL, except for EFLAGS and RAX/EAX.  */
++#define TLSDESC_CALL_STATE_SAVE_MASK	\
++  (STATE_SAVE_MASK | (1 << X86_XSTATE_X87_ID))
++
+ /* Constants for bits in __x86_string_control:  */
+ 
+ /* Avoid short distance REP MOVSB.  */
+diff --git a/sysdeps/x86/tst-gnu2-tls2.c b/sysdeps/x86/tst-gnu2-tls2.c
+new file mode 100644
+index 0000000000000000..de900a423bb70321
+--- /dev/null
++++ b/sysdeps/x86/tst-gnu2-tls2.c
+@@ -0,0 +1,20 @@
++#ifndef __x86_64__
++#include <sys/platform/x86.h>
++
++#define IS_SUPPORTED() CPU_FEATURE_ACTIVE (SSE2)
++#endif
++
++/* Clear XMM0...XMM7  */
++#define PREPARE_MALLOC()				\
++{							\
++  asm volatile ("xorps %%xmm0, %%xmm0" : : : "xmm0" );	\
++  asm volatile ("xorps %%xmm1, %%xmm1" : : : "xmm1" );	\
++  asm volatile ("xorps %%xmm2, %%xmm2" : : : "xmm2" );	\
++  asm volatile ("xorps %%xmm3, %%xmm3" : : : "xmm3" );	\
++  asm volatile ("xorps %%xmm4, %%xmm4" : : : "xmm4" );	\
++  asm volatile ("xorps %%xmm5, %%xmm5" : : : "xmm5" );	\
++  asm volatile ("xorps %%xmm6, %%xmm6" : : : "xmm6" );	\
++  asm volatile ("xorps %%xmm7, %%xmm7" : : : "xmm7" );	\
++}
++
++#include <elf/tst-gnu2-tls2.c>
+diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile
+index 90f4ecfd262cfb87..e8babc9a4edbf90b 100644
+--- a/sysdeps/x86_64/Makefile
++++ b/sysdeps/x86_64/Makefile
+@@ -10,7 +10,7 @@ LDFLAGS-rtld += -Wl,-z,nomark-plt
+ endif
+ 
+ ifeq ($(subdir),csu)
+-gen-as-const-headers += features-offsets.sym link-defines.sym
++gen-as-const-headers += link-defines.sym
+ endif
+ 
+ ifeq ($(subdir),gmon)
+diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h
+index 6d605d0d3293bcd6..ff5d45f7cb7cd81d 100644
+--- a/sysdeps/x86_64/dl-machine.h
++++ b/sysdeps/x86_64/dl-machine.h
+@@ -71,9 +71,6 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
+ 			   int lazy, int profile)
+ {
+   Elf64_Addr *got;
+-  extern void _dl_runtime_resolve_fxsave (ElfW(Word)) attribute_hidden;
+-  extern void _dl_runtime_resolve_xsave (ElfW(Word)) attribute_hidden;
+-  extern void _dl_runtime_resolve_xsavec (ElfW(Word)) attribute_hidden;
+   extern void _dl_runtime_profile_sse (ElfW(Word)) attribute_hidden;
+   extern void _dl_runtime_profile_avx (ElfW(Word)) attribute_hidden;
+   extern void _dl_runtime_profile_avx512 (ElfW(Word)) attribute_hidden;
+@@ -96,8 +93,6 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
+       /* Identify this shared object.  */
+       *(ElfW(Addr) *) (got + 1) = (ElfW(Addr)) l;
+ 
+-      const struct cpu_features* cpu_features = __get_cpu_features ();
+-
+ #ifdef SHARED
+       /* The got[2] entry contains the address of a function which gets
+ 	 called to get the address of a so far unresolved function and
+@@ -107,6 +102,7 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
+ 	 end in this function.  */
+       if (__glibc_unlikely (profile))
+ 	{
++	  const struct cpu_features* cpu_features = __get_cpu_features ();
+ 	  if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512F))
+ 	    *(ElfW(Addr) *) (got + 2) = (ElfW(Addr)) &_dl_runtime_profile_avx512;
+ 	  else if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX))
+@@ -126,15 +122,8 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
+ 	  /* This function will get called to fix up the GOT entry
+ 	     indicated by the offset on the stack, and then jump to
+ 	     the resolved address.  */
+-	  if (MINIMUM_X86_ISA_LEVEL >= AVX_X86_ISA_LEVEL
+-	      || GLRO(dl_x86_cpu_features).xsave_state_size != 0)
+-	    *(ElfW(Addr) *) (got + 2)
+-	      = (CPU_FEATURE_USABLE_P (cpu_features, XSAVEC)
+-		 ? (ElfW(Addr)) &_dl_runtime_resolve_xsavec
+-		 : (ElfW(Addr)) &_dl_runtime_resolve_xsave);
+-	  else
+-	    *(ElfW(Addr) *) (got + 2)
+-	      = (ElfW(Addr)) &_dl_runtime_resolve_fxsave;
++	  *(ElfW(Addr) *) (got + 2)
++	    = (ElfW(Addr)) GLRO(dl_x86_64_runtime_resolve);
+ 	}
+     }
+ 
+@@ -383,7 +372,7 @@ and creates an unsatisfiable circular dependency.\n",
+ 		  {
+ 		    td->arg = _dl_make_tlsdesc_dynamic
+ 		      (sym_map, sym->st_value + reloc->r_addend);
+-		    td->entry = _dl_tlsdesc_dynamic;
++		    td->entry = GLRO(dl_x86_tlsdesc_dynamic);
+ 		  }
+ 		else
+ #  endif
+diff --git a/sysdeps/x86_64/dl-procinfo.c b/sysdeps/x86_64/dl-procinfo.c
+index 4d1d790fbb2f2992..06637a8154d8648f 100644
+--- a/sysdeps/x86_64/dl-procinfo.c
++++ b/sysdeps/x86_64/dl-procinfo.c
+@@ -41,5 +41,21 @@
+ 
+ #include <sysdeps/x86/dl-procinfo.c>
+ 
++#if !IS_IN (ldconfig)
++# if !defined PROCINFO_DECL && defined SHARED
++  ._dl_x86_64_runtime_resolve
++# else
++PROCINFO_CLASS void * _dl_x86_64_runtime_resolve
++# endif
++# ifndef PROCINFO_DECL
++= NULL
++# endif
++# if !defined SHARED || defined PROCINFO_DECL
++;
++# else
++,
++# endif
++#endif
++
+ #undef PROCINFO_DECL
+ #undef PROCINFO_CLASS
+diff --git a/sysdeps/x86_64/dl-tlsdesc-dynamic.h b/sysdeps/x86_64/dl-tlsdesc-dynamic.h
+new file mode 100644
+index 0000000000000000..0c2e8d5320d0bd26
+--- /dev/null
++++ b/sysdeps/x86_64/dl-tlsdesc-dynamic.h
+@@ -0,0 +1,166 @@
++/* Thread-local storage handling in the ELF dynamic linker.  x86_64 version.
++   Copyright (C) 2004-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/>.  */
++
++#ifndef SECTION
++# define SECTION(p)	p
++#endif
++
++#undef REGISTER_SAVE_AREA
++#undef LOCAL_STORAGE_AREA
++#undef BASE
++
++#include "dl-trampoline-state.h"
++
++	.section SECTION(.text),"ax",@progbits
++
++	.hidden _dl_tlsdesc_dynamic
++	.global	_dl_tlsdesc_dynamic
++	.type	_dl_tlsdesc_dynamic,@function
++
++     /* %rax points to the TLS descriptor, such that 0(%rax) points to
++	_dl_tlsdesc_dynamic itself, and 8(%rax) points to a struct
++	tlsdesc_dynamic_arg object.  It must return in %rax the offset
++	between the thread pointer and the object denoted by the
++	argument, without clobbering any registers.
++
++	The assembly code that follows is a rendition of the following
++	C code, hand-optimized a little bit.
++
++ptrdiff_t
++_dl_tlsdesc_dynamic (register struct tlsdesc *tdp asm ("%rax"))
++{
++  struct tlsdesc_dynamic_arg *td = tdp->arg;
++  dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer + DTV_OFFSET);
++  if (__builtin_expect (td->gen_count <= dtv[0].counter
++			&& (dtv[td->tlsinfo.ti_module].pointer.val
++			    != TLS_DTV_UNALLOCATED),
++			1))
++    return dtv[td->tlsinfo.ti_module].pointer.val + td->tlsinfo.ti_offset
++      - __thread_pointer;
++
++  return __tls_get_addr_internal (&td->tlsinfo) - __thread_pointer;
++}
++*/
++	cfi_startproc
++	.align 16
++_dl_tlsdesc_dynamic:
++	_CET_ENDBR
++	/* Preserve call-clobbered registers that we modify.
++	   We need two scratch regs anyway.  */
++	movq	%rsi, -16(%rsp)
++	mov	%fs:DTV_OFFSET, %RSI_LP
++	movq	%rdi, -8(%rsp)
++	movq	TLSDESC_ARG(%rax), %rdi
++	movq	(%rsi), %rax
++	cmpq	%rax, TLSDESC_GEN_COUNT(%rdi)
++	ja	2f
++	movq	TLSDESC_MODID(%rdi), %rax
++	salq	$4, %rax
++	movq	(%rax,%rsi), %rax
++	cmpq	$-1, %rax
++	je	2f
++	addq	TLSDESC_MODOFF(%rdi), %rax
++1:
++	movq	-16(%rsp), %rsi
++	sub	%fs:0, %RAX_LP
++	movq	-8(%rsp), %rdi
++	ret
++2:
++#if DL_RUNTIME_RESOLVE_REALIGN_STACK
++	movq	%rbx, -24(%rsp)
++	mov	%RSP_LP, %RBX_LP
++	cfi_def_cfa_register(%rbx)
++	and	$-STATE_SAVE_ALIGNMENT, %RSP_LP
++#endif
++#ifdef REGISTER_SAVE_AREA
++# if DL_RUNTIME_RESOLVE_REALIGN_STACK
++	/* STATE_SAVE_OFFSET has space for 8 integer registers.  But we
++	   need space for RCX, RDX, RSI, RDI, R8, R9, R10 and R11, plus
++	   RBX above.  */
++	sub	$(REGISTER_SAVE_AREA + STATE_SAVE_ALIGNMENT), %RSP_LP
++# else
++	sub	$REGISTER_SAVE_AREA, %RSP_LP
++	cfi_adjust_cfa_offset(REGISTER_SAVE_AREA)
++# endif
++#else
++	/* Allocate stack space of the required size to save the state.  */
++	sub	_rtld_local_ro+RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET+XSAVE_STATE_SIZE_OFFSET(%rip), %RSP_LP
++#endif
++	/* Besides rdi and rsi, saved above, save rcx, rdx, r8, r9,
++	   r10 and r11.  */
++	movq	%rcx, REGISTER_SAVE_RCX(%rsp)
++	movq	%rdx, REGISTER_SAVE_RDX(%rsp)
++	movq	%r8, REGISTER_SAVE_R8(%rsp)
++	movq	%r9, REGISTER_SAVE_R9(%rsp)
++	movq	%r10, REGISTER_SAVE_R10(%rsp)
++	movq	%r11, REGISTER_SAVE_R11(%rsp)
++#ifdef USE_FXSAVE
++	fxsave	STATE_SAVE_OFFSET(%rsp)
++#else
++	movl	$TLSDESC_CALL_STATE_SAVE_MASK, %eax
++	xorl	%edx, %edx
++	/* Clear the XSAVE Header.  */
++# ifdef USE_XSAVE
++	movq	%rdx, (STATE_SAVE_OFFSET + 512)(%rsp)
++	movq	%rdx, (STATE_SAVE_OFFSET + 512 + 8)(%rsp)
++# endif
++	movq	%rdx, (STATE_SAVE_OFFSET + 512 + 8 * 2)(%rsp)
++	movq	%rdx, (STATE_SAVE_OFFSET + 512 + 8 * 3)(%rsp)
++	movq	%rdx, (STATE_SAVE_OFFSET + 512 + 8 * 4)(%rsp)
++	movq	%rdx, (STATE_SAVE_OFFSET + 512 + 8 * 5)(%rsp)
++	movq	%rdx, (STATE_SAVE_OFFSET + 512 + 8 * 6)(%rsp)
++	movq	%rdx, (STATE_SAVE_OFFSET + 512 + 8 * 7)(%rsp)
++# ifdef USE_XSAVE
++	xsave	STATE_SAVE_OFFSET(%rsp)
++# else
++	xsavec	STATE_SAVE_OFFSET(%rsp)
++# endif
++#endif
++	/* %rdi already points to the tlsinfo data structure.  */
++	call	HIDDEN_JUMPTARGET (__tls_get_addr)
++	# Get register content back.
++#ifdef USE_FXSAVE
++	fxrstor	STATE_SAVE_OFFSET(%rsp)
++#else
++	/* Save and retore __tls_get_addr return value stored in RAX.  */
++	mov	%RAX_LP, %RCX_LP
++	movl	$TLSDESC_CALL_STATE_SAVE_MASK, %eax
++	xorl	%edx, %edx
++	xrstor	STATE_SAVE_OFFSET(%rsp)
++	mov	%RCX_LP, %RAX_LP
++#endif
++	movq	REGISTER_SAVE_R11(%rsp), %r11
++	movq	REGISTER_SAVE_R10(%rsp), %r10
++	movq	REGISTER_SAVE_R9(%rsp), %r9
++	movq	REGISTER_SAVE_R8(%rsp), %r8
++	movq	REGISTER_SAVE_RDX(%rsp), %rdx
++	movq	REGISTER_SAVE_RCX(%rsp), %rcx
++#if DL_RUNTIME_RESOLVE_REALIGN_STACK
++	mov	%RBX_LP, %RSP_LP
++	cfi_def_cfa_register(%rsp)
++	movq	-24(%rsp), %rbx
++	cfi_restore(%rbx)
++#else
++	add	$REGISTER_SAVE_AREA, %RSP_LP
++	cfi_adjust_cfa_offset(-REGISTER_SAVE_AREA)
++#endif
++	jmp	1b
++	cfi_endproc
++	.size	_dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
++
++#undef STATE_SAVE_ALIGNMENT
+diff --git a/sysdeps/x86_64/dl-tlsdesc.S b/sysdeps/x86_64/dl-tlsdesc.S
+index f748af2ece8de09a..ea69f5223a77e0c0 100644
+--- a/sysdeps/x86_64/dl-tlsdesc.S
++++ b/sysdeps/x86_64/dl-tlsdesc.S
+@@ -18,7 +18,19 @@
+ 
+ #include <sysdep.h>
+ #include <tls.h>
++#include <cpu-features-offsets.h>
++#include <features-offsets.h>
+ #include "tlsdesc.h"
++#include "dl-trampoline-save.h"
++
++/* Area on stack to save and restore registers used for parameter
++   passing when calling _dl_tlsdesc_dynamic.  */
++#define REGISTER_SAVE_RCX	0
++#define REGISTER_SAVE_RDX	(REGISTER_SAVE_RCX + 8)
++#define REGISTER_SAVE_R8	(REGISTER_SAVE_RDX + 8)
++#define REGISTER_SAVE_R9	(REGISTER_SAVE_R8 + 8)
++#define REGISTER_SAVE_R10	(REGISTER_SAVE_R9 + 8)
++#define REGISTER_SAVE_R11	(REGISTER_SAVE_R10 + 8)
+ 
+ 	.text
+ 
+@@ -67,80 +79,24 @@ _dl_tlsdesc_undefweak:
+ 	.size	_dl_tlsdesc_undefweak, .-_dl_tlsdesc_undefweak
+ 
+ #ifdef SHARED
+-	.hidden _dl_tlsdesc_dynamic
+-	.global	_dl_tlsdesc_dynamic
+-	.type	_dl_tlsdesc_dynamic,@function
+-
+-     /* %rax points to the TLS descriptor, such that 0(%rax) points to
+-	_dl_tlsdesc_dynamic itself, and 8(%rax) points to a struct
+-	tlsdesc_dynamic_arg object.  It must return in %rax the offset
+-	between the thread pointer and the object denoted by the
+-	argument, without clobbering any registers.
+-
+-	The assembly code that follows is a rendition of the following
+-	C code, hand-optimized a little bit.
+-
+-ptrdiff_t
+-_dl_tlsdesc_dynamic (register struct tlsdesc *tdp asm ("%rax"))
+-{
+-  struct tlsdesc_dynamic_arg *td = tdp->arg;
+-  dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer + DTV_OFFSET);
+-  if (__builtin_expect (td->gen_count <= dtv[0].counter
+-			&& (dtv[td->tlsinfo.ti_module].pointer.val
+-			    != TLS_DTV_UNALLOCATED),
+-			1))
+-    return dtv[td->tlsinfo.ti_module].pointer.val + td->tlsinfo.ti_offset
+-      - __thread_pointer;
+-
+-  return __tls_get_addr_internal (&td->tlsinfo) - __thread_pointer;
+-}
+-*/
+-	cfi_startproc
+-	.align 16
+-_dl_tlsdesc_dynamic:
+-	_CET_ENDBR
+-	/* Preserve call-clobbered registers that we modify.
+-	   We need two scratch regs anyway.  */
+-	movq	%rsi, -16(%rsp)
+-	mov	%fs:DTV_OFFSET, %RSI_LP
+-	movq	%rdi, -8(%rsp)
+-	movq	TLSDESC_ARG(%rax), %rdi
+-	movq	(%rsi), %rax
+-	cmpq	%rax, TLSDESC_GEN_COUNT(%rdi)
+-	ja	.Lslow
+-	movq	TLSDESC_MODID(%rdi), %rax
+-	salq	$4, %rax
+-	movq	(%rax,%rsi), %rax
+-	cmpq	$-1, %rax
+-	je	.Lslow
+-	addq	TLSDESC_MODOFF(%rdi), %rax
+-.Lret:
+-	movq	-16(%rsp), %rsi
+-	sub	%fs:0, %RAX_LP
+-	movq	-8(%rsp), %rdi
+-	ret
+-.Lslow:
+-	/* Besides rdi and rsi, saved above, save rdx, rcx, r8, r9,
+-	   r10 and r11.  Also, align the stack, that's off by 8 bytes.	*/
+-	subq	$72, %rsp
+-	cfi_adjust_cfa_offset (72)
+-	movq	%rdx, 8(%rsp)
+-	movq	%rcx, 16(%rsp)
+-	movq	%r8, 24(%rsp)
+-	movq	%r9, 32(%rsp)
+-	movq	%r10, 40(%rsp)
+-	movq	%r11, 48(%rsp)
+-	/* %rdi already points to the tlsinfo data structure.  */
+-	call	HIDDEN_JUMPTARGET (__tls_get_addr)
+-	movq	8(%rsp), %rdx
+-	movq	16(%rsp), %rcx
+-	movq	24(%rsp), %r8
+-	movq	32(%rsp), %r9
+-	movq	40(%rsp), %r10
+-	movq	48(%rsp), %r11
+-	addq	$72, %rsp
+-	cfi_adjust_cfa_offset (-72)
+-	jmp	.Lret
+-	cfi_endproc
+-	.size	_dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
++# define USE_FXSAVE
++# define STATE_SAVE_ALIGNMENT	16
++# define _dl_tlsdesc_dynamic	_dl_tlsdesc_dynamic_fxsave
++# include "dl-tlsdesc-dynamic.h"
++# undef _dl_tlsdesc_dynamic
++# undef USE_FXSAVE
++
++# define USE_XSAVE
++# define STATE_SAVE_ALIGNMENT	64
++# define _dl_tlsdesc_dynamic	_dl_tlsdesc_dynamic_xsave
++# include "dl-tlsdesc-dynamic.h"
++# undef _dl_tlsdesc_dynamic
++# undef USE_XSAVE
++
++# define USE_XSAVEC
++# define STATE_SAVE_ALIGNMENT	64
++# define _dl_tlsdesc_dynamic	_dl_tlsdesc_dynamic_xsavec
++# include "dl-tlsdesc-dynamic.h"
++# undef _dl_tlsdesc_dynamic
++# undef USE_XSAVEC
+ #endif /* SHARED */
+diff --git a/sysdeps/x86_64/dl-trampoline-save.h b/sysdeps/x86_64/dl-trampoline-save.h
+new file mode 100644
+index 0000000000000000..84eac4a8ac13ad86
+--- /dev/null
++++ b/sysdeps/x86_64/dl-trampoline-save.h
+@@ -0,0 +1,34 @@
++/* x86-64 PLT trampoline register save macros.
++   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/>.  */
++
++#ifndef DL_STACK_ALIGNMENT
++/* Due to GCC bug:
++
++   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58066
++
++   __tls_get_addr may be called with 8-byte stack alignment.  Although
++   this bug has been fixed in GCC 4.9.4, 5.3 and 6, we can't assume
++   that stack will be always aligned at 16 bytes.  */
++# define DL_STACK_ALIGNMENT 8
++#endif
++
++/* True if _dl_runtime_resolve should align stack for STATE_SAVE or align
++   stack to 16 bytes before calling _dl_fixup.  */
++#define DL_RUNTIME_RESOLVE_REALIGN_STACK \
++  (STATE_SAVE_ALIGNMENT > DL_STACK_ALIGNMENT \
++   || 16 > DL_STACK_ALIGNMENT)
+diff --git a/sysdeps/x86_64/dl-trampoline-state.h b/sysdeps/x86_64/dl-trampoline-state.h
+new file mode 100644
+index 0000000000000000..575f120797860583
+--- /dev/null
++++ b/sysdeps/x86_64/dl-trampoline-state.h
+@@ -0,0 +1,51 @@
++/* x86-64 PLT dl-trampoline state macros.
++   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/>.  */
++
++#if (STATE_SAVE_ALIGNMENT % 16) != 0
++# error STATE_SAVE_ALIGNMENT must be multiple of 16
++#endif
++
++#if (STATE_SAVE_OFFSET % STATE_SAVE_ALIGNMENT) != 0
++# error STATE_SAVE_OFFSET must be multiple of STATE_SAVE_ALIGNMENT
++#endif
++
++#if DL_RUNTIME_RESOLVE_REALIGN_STACK
++/* Local stack area before jumping to function address: RBX.  */
++# define LOCAL_STORAGE_AREA	8
++# define BASE			rbx
++# ifdef USE_FXSAVE
++/* Use fxsave to save XMM registers.  */
++#  define REGISTER_SAVE_AREA	(512 + STATE_SAVE_OFFSET)
++#  if (REGISTER_SAVE_AREA % 16) != 0
++#   error REGISTER_SAVE_AREA must be multiple of 16
++#  endif
++# endif
++#else
++# ifndef USE_FXSAVE
++#  error USE_FXSAVE must be defined
++# endif
++/* Use fxsave to save XMM registers.  */
++# define REGISTER_SAVE_AREA	(512 + STATE_SAVE_OFFSET + 8)
++/* Local stack area before jumping to function address:  All saved
++   registers.  */
++# define LOCAL_STORAGE_AREA	REGISTER_SAVE_AREA
++# define BASE			rsp
++# if (REGISTER_SAVE_AREA % 16) != 8
++#  error REGISTER_SAVE_AREA must be odd multiple of 8
++# endif
++#endif
+diff --git a/sysdeps/x86_64/dl-trampoline.S b/sysdeps/x86_64/dl-trampoline.S
+index b2e7e0f69b709ffd..87c5137837f01a63 100644
+--- a/sysdeps/x86_64/dl-trampoline.S
++++ b/sysdeps/x86_64/dl-trampoline.S
+@@ -22,25 +22,7 @@
+ #include <features-offsets.h>
+ #include <link-defines.h>
+ #include <isa-level.h>
+-
+-#ifndef DL_STACK_ALIGNMENT
+-/* Due to GCC bug:
+-
+-   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58066
+-
+-   __tls_get_addr may be called with 8-byte stack alignment.  Although
+-   this bug has been fixed in GCC 4.9.4, 5.3 and 6, we can't assume
+-   that stack will be always aligned at 16 bytes.  We use unaligned
+-   16-byte move to load and store SSE registers, which has no penalty
+-   on modern processors if stack is 16-byte aligned.  */
+-# define DL_STACK_ALIGNMENT 8
+-#endif
+-
+-/* True if _dl_runtime_resolve should align stack for STATE_SAVE or align
+-   stack to 16 bytes before calling _dl_fixup.  */
+-#define DL_RUNTIME_RESOLVE_REALIGN_STACK \
+-  (STATE_SAVE_ALIGNMENT > DL_STACK_ALIGNMENT \
+-   || 16 > DL_STACK_ALIGNMENT)
++#include "dl-trampoline-save.h"
+ 
+ /* Area on stack to save and restore registers used for parameter
+    passing when calling _dl_fixup.  */
+diff --git a/sysdeps/x86_64/dl-trampoline.h b/sysdeps/x86_64/dl-trampoline.h
+index f55c6ea040b9d319..d9ccfb40d46d3312 100644
+--- a/sysdeps/x86_64/dl-trampoline.h
++++ b/sysdeps/x86_64/dl-trampoline.h
+@@ -27,39 +27,7 @@
+ # undef LOCAL_STORAGE_AREA
+ # undef BASE
+ 
+-# if (STATE_SAVE_ALIGNMENT % 16) != 0
+-#  error STATE_SAVE_ALIGNMENT must be multiple of 16
+-# endif
+-
+-# if (STATE_SAVE_OFFSET % STATE_SAVE_ALIGNMENT) != 0
+-#  error STATE_SAVE_OFFSET must be multiple of STATE_SAVE_ALIGNMENT
+-# endif
+-
+-# if DL_RUNTIME_RESOLVE_REALIGN_STACK
+-/* Local stack area before jumping to function address: RBX.  */
+-#  define LOCAL_STORAGE_AREA	8
+-#  define BASE			rbx
+-#  ifdef USE_FXSAVE
+-/* Use fxsave to save XMM registers.  */
+-#   define REGISTER_SAVE_AREA	(512 + STATE_SAVE_OFFSET)
+-#   if (REGISTER_SAVE_AREA % 16) != 0
+-#    error REGISTER_SAVE_AREA must be multiple of 16
+-#   endif
+-#  endif
+-# else
+-#  ifndef USE_FXSAVE
+-#   error USE_FXSAVE must be defined
+-#  endif
+-/* Use fxsave to save XMM registers.  */
+-#  define REGISTER_SAVE_AREA	(512 + STATE_SAVE_OFFSET + 8)
+-/* Local stack area before jumping to function address:  All saved
+-   registers.  */
+-#  define LOCAL_STORAGE_AREA	REGISTER_SAVE_AREA
+-#  define BASE			rsp
+-#  if (REGISTER_SAVE_AREA % 16) != 8
+-#   error REGISTER_SAVE_AREA must be odd multiple of 8
+-#  endif
+-# endif
++# include "dl-trampoline-state.h"
+ 
+ 	.globl _dl_runtime_resolve
+ 	.hidden _dl_runtime_resolve
diff --git a/SOURCES/glibc-upstream-2.39-13.patch b/SOURCES/glibc-upstream-2.39-13.patch
new file mode 100644
index 0000000..0a52189
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-13.patch
@@ -0,0 +1,496 @@
+commit 853e915fdd6ae6c5f1a7a68d2594ec8dbfef1286
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Wed Feb 28 12:08:03 2024 -0800
+
+    x86-64: Update _dl_tlsdesc_dynamic to preserve AMX registers
+    
+    _dl_tlsdesc_dynamic should also preserve AMX registers which are
+    caller-saved.  Add X86_XSTATE_TILECFG_ID and X86_XSTATE_TILEDATA_ID
+    to x86-64 TLSDESC_CALL_STATE_SAVE_MASK.  Compute the AMX state size
+    and save it in xsave_state_full_size which is only used by
+    _dl_tlsdesc_dynamic_xsave and _dl_tlsdesc_dynamic_xsavec.  This fixes
+    the AMX part of BZ #31372.  Tested on AMX processor.
+    
+    AMX test is enabled only for compilers with the fix for
+    
+    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114098
+    
+    GCC 14 and GCC 11/12/13 branches have the bug fix.
+    Reviewed-by: Sunil K Pandey <skpgkp2@gmail.com>
+    
+    (cherry picked from commit 9b7091415af47082664717210ac49d51551456ab)
+
+diff --git a/sysdeps/unix/sysv/linux/x86_64/Makefile b/sysdeps/unix/sysv/linux/x86_64/Makefile
+index 4223feb95f6fe2f5..9a1e7aa6461725af 100644
+--- a/sysdeps/unix/sysv/linux/x86_64/Makefile
++++ b/sysdeps/unix/sysv/linux/x86_64/Makefile
+@@ -63,6 +63,33 @@ $(objpfx)libx86-64-isa-level%.os: $(..)/sysdeps/unix/sysv/linux/x86_64/x86-64-is
+ $(objpfx)libx86-64-isa-level.so: $(objpfx)libx86-64-isa-level-1.so
+ 	cp $< $@
+ endif
++
++ifeq (yes,$(have-mamx-tile))
++tests += \
++  tst-gnu2-tls2-amx \
++# tests
++
++modules-names += \
++  tst-gnu2-tls2-amx-mod0 \
++  tst-gnu2-tls2-amx-mod1 \
++  tst-gnu2-tls2-amx-mod2 \
++# modules-names
++
++$(objpfx)tst-gnu2-tls2-amx: $(shared-thread-library)
++$(objpfx)tst-gnu2-tls2-amx.out: \
++  $(objpfx)tst-gnu2-tls2-amx-mod0.so \
++  $(objpfx)tst-gnu2-tls2-amx-mod1.so \
++  $(objpfx)tst-gnu2-tls2-amx-mod2.so
++$(objpfx)tst-gnu2-tls2-amx-mod0.so: $(libsupport)
++$(objpfx)tst-gnu2-tls2-amx-mod1.so: $(libsupport)
++$(objpfx)tst-gnu2-tls2-amx-mod2.so: $(libsupport)
++
++CFLAGS-tst-gnu2-tls2-amx.c += -mamx-tile
++CFLAGS-tst-gnu2-tls2-amx-mod0.c += -mamx-tile -mtls-dialect=gnu2
++CFLAGS-tst-gnu2-tls2-amx-mod1.c += -mamx-tile -mtls-dialect=gnu2
++CFLAGS-tst-gnu2-tls2-amx-mod2.c += -mamx-tile -mtls-dialect=gnu2
++endif
++
+ endif # $(subdir) == elf
+ 
+ ifneq ($(enable-cet),no)
+diff --git a/sysdeps/unix/sysv/linux/x86_64/include/asm/prctl.h b/sysdeps/unix/sysv/linux/x86_64/include/asm/prctl.h
+index 2f511321ad3b3ac1..ef4631bf4b2fd9aa 100644
+--- a/sysdeps/unix/sysv/linux/x86_64/include/asm/prctl.h
++++ b/sysdeps/unix/sysv/linux/x86_64/include/asm/prctl.h
+@@ -20,3 +20,8 @@
+ # define ARCH_SHSTK_SHSTK		0x1
+ # define ARCH_SHSTK_WRSS		0x2
+ #endif
++
++#ifndef ARCH_GET_XCOMP_PERM
++# define ARCH_GET_XCOMP_PERM		0x1022
++# define ARCH_REQ_XCOMP_PERM		0x1023
++#endif
+diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod0.c b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod0.c
+new file mode 100644
+index 0000000000000000..2e0c7b91b7caf3ab
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod0.c
+@@ -0,0 +1,2 @@
++#include "tst-gnu2-tls2-amx.h"
++#include <tst-gnu2-tls2mod0.c>
+diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod1.c b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod1.c
+new file mode 100644
+index 0000000000000000..b8a8ccf1c119d443
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod1.c
+@@ -0,0 +1,2 @@
++#include "tst-gnu2-tls2-amx.h"
++#include <tst-gnu2-tls2mod1.c>
+diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod2.c b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod2.c
+new file mode 100644
+index 0000000000000000..cdf4a8f3635b327c
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod2.c
+@@ -0,0 +1,2 @@
++#include "tst-gnu2-tls2-amx.h"
++#include <tst-gnu2-tls2mod2.c>
+diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.c b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.c
+new file mode 100644
+index 0000000000000000..ae4dd82556c9b2ef
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.c
+@@ -0,0 +1,83 @@
++/* Test TLSDESC relocation with AMX.
++   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
++   <http://www.gnu.org/licenses/>.  */
++
++#include <stdbool.h>
++#include <asm/prctl.h>
++#include <support/check.h>
++#include "tst-gnu2-tls2-amx.h"
++
++extern int arch_prctl (int, ...);
++
++#define X86_XSTATE_TILECFG_ID	17
++#define X86_XSTATE_TILEDATA_ID	18
++
++/* Initialize tile config.  */
++__attribute__ ((noinline, noclone))
++static void
++init_tile_config (__tilecfg *tileinfo)
++{
++  int i;
++  tileinfo->palette_id = 1;
++  tileinfo->start_row = 0;
++
++  tileinfo->colsb[0] = MAX_ROWS;
++  tileinfo->rows[0] = MAX_ROWS;
++
++  for (i = 1; i < 4; ++i)
++  {
++    tileinfo->colsb[i] = MAX_COLS;
++    tileinfo->rows[i] = MAX_ROWS;
++  }
++
++  _tile_loadconfig (tileinfo);
++}
++
++static bool
++enable_amx (void)
++{
++  uint64_t bitmask;
++  if (arch_prctl (ARCH_GET_XCOMP_PERM, &bitmask) != 0)
++    return false;
++
++  if ((bitmask & (1 << X86_XSTATE_TILECFG_ID)) == 0)
++    return false;
++
++  if (arch_prctl (ARCH_REQ_XCOMP_PERM, X86_XSTATE_TILEDATA_ID) != 0)
++    return false;
++
++  /* Load tile configuration.  */
++  __tilecfg tile_data = { 0 };
++  init_tile_config (&tile_data);
++
++  return true;
++}
++
++/* An architecture can define it to clobber caller-saved registers in
++   malloc below to verify that the implicit TLSDESC call won't change
++   caller-saved registers.  */
++static void
++clear_tile_register (void)
++{
++  _tile_zero (2);
++}
++
++#define MOD(i) "tst-gnu2-tls2-amx-mod" #i ".so"
++#define IS_SUPPORTED()	enable_amx ()
++#define PREPARE_MALLOC() clear_tile_register ()
++
++#include <elf/tst-gnu2-tls2.c>
+diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.h b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.h
+new file mode 100644
+index 0000000000000000..1845a3caba43a0f1
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.h
+@@ -0,0 +1,63 @@
++/* Test TLSDESC relocation with AMX.
++   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
++   <http://www.gnu.org/licenses/>.  */
++
++#include <stdint.h>
++#include <string.h>
++#include <x86intrin.h>
++#include <support/check.h>
++
++#define MAX_ROWS 16
++#define MAX_COLS 64
++#define MAX 1024
++#define STRIDE 64
++
++typedef struct __tile_config
++{
++  uint8_t palette_id;
++  uint8_t start_row;
++  uint8_t reserved_0[14];
++  uint16_t colsb[16];
++  uint8_t rows[16];
++} __tilecfg __attribute__ ((aligned (64)));
++
++/* Initialize int8_t buffer */
++static inline void
++init_buffer (int8_t *buf, int8_t value)
++{
++  int rows, colsb, i, j;
++  rows  = MAX_ROWS;
++  colsb = MAX_COLS;
++
++  for (i = 0; i < rows; i++)
++    for (j = 0; j < colsb; j++)
++      buf[i * colsb + j] = value;
++}
++
++#define BEFORE_TLSDESC_CALL()					\
++  int8_t src[MAX];						\
++  int8_t res[MAX];						\
++  /* Initialize src with data  */				\
++  init_buffer (src, 2);						\
++  /* Load tile rows from memory.  */				\
++  _tile_loadd (2, src, STRIDE);
++
++#define AFTER_TLSDESC_CALL()					\
++  /* Store the tile data to memory.  */				\
++  _tile_stored (2, res, STRIDE);				\
++  _tile_release ();						\
++  TEST_VERIFY_EXIT (memcmp (src, res, sizeof (res)) == 0);
+diff --git a/sysdeps/x86/cpu-features-offsets.sym b/sysdeps/x86/cpu-features-offsets.sym
+index 6a8fd298137b7f23..21fc88d6510840e6 100644
+--- a/sysdeps/x86/cpu-features-offsets.sym
++++ b/sysdeps/x86/cpu-features-offsets.sym
+@@ -3,3 +3,4 @@
+ #include <ldsodefs.h>
+ 
+ XSAVE_STATE_SIZE_OFFSET	offsetof (struct cpu_features, xsave_state_size)
++XSAVE_STATE_FULL_SIZE_OFFSET offsetof (struct cpu_features, xsave_state_full_size)
+diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
+index 835113b42f924b83..d71e8d3d2e0e49f9 100644
+--- a/sysdeps/x86/cpu-features.c
++++ b/sysdeps/x86/cpu-features.c
+@@ -307,6 +307,8 @@ update_active (struct cpu_features *cpu_features)
+ 	  __cpuid_count (0xd, 0, eax, ebx, ecx, edx);
+ 	  if (ebx != 0)
+ 	    {
++	      /* NB: On AMX capable processors, ebx always includes AMX
++		 states.  */
+ 	      unsigned int xsave_state_full_size
+ 		= ALIGN_UP (ebx + STATE_SAVE_OFFSET, 64);
+ 
+@@ -320,6 +322,11 @@ update_active (struct cpu_features *cpu_features)
+ 		{
+ 		  unsigned int xstate_comp_offsets[32];
+ 		  unsigned int xstate_comp_sizes[32];
++#ifdef __x86_64__
++		  unsigned int xstate_amx_comp_offsets[32];
++		  unsigned int xstate_amx_comp_sizes[32];
++		  unsigned int amx_ecx;
++#endif
+ 		  unsigned int i;
+ 
+ 		  xstate_comp_offsets[0] = 0;
+@@ -327,16 +334,39 @@ update_active (struct cpu_features *cpu_features)
+ 		  xstate_comp_offsets[2] = 576;
+ 		  xstate_comp_sizes[0] = 160;
+ 		  xstate_comp_sizes[1] = 256;
++#ifdef __x86_64__
++		  xstate_amx_comp_offsets[0] = 0;
++		  xstate_amx_comp_offsets[1] = 160;
++		  xstate_amx_comp_offsets[2] = 576;
++		  xstate_amx_comp_sizes[0] = 160;
++		  xstate_amx_comp_sizes[1] = 256;
++#endif
+ 
+ 		  for (i = 2; i < 32; i++)
+ 		    {
+-		      if ((STATE_SAVE_MASK & (1 << i)) != 0)
++		      if ((FULL_STATE_SAVE_MASK & (1 << i)) != 0)
+ 			{
+ 			  __cpuid_count (0xd, i, eax, ebx, ecx, edx);
+-			  xstate_comp_sizes[i] = eax;
++#ifdef __x86_64__
++			  /* Include this in xsave_state_full_size.  */
++			  amx_ecx = ecx;
++			  xstate_amx_comp_sizes[i] = eax;
++			  if ((AMX_STATE_SAVE_MASK & (1 << i)) != 0)
++			    {
++			      /* Exclude this from xsave_state_size.  */
++			      ecx = 0;
++			      xstate_comp_sizes[i] = 0;
++			    }
++			  else
++#endif
++			    xstate_comp_sizes[i] = eax;
+ 			}
+ 		      else
+ 			{
++#ifdef __x86_64__
++			  amx_ecx = 0;
++			  xstate_amx_comp_sizes[i] = 0;
++#endif
+ 			  ecx = 0;
+ 			  xstate_comp_sizes[i] = 0;
+ 			}
+@@ -349,6 +379,15 @@ update_active (struct cpu_features *cpu_features)
+ 			  if ((ecx & (1 << 1)) != 0)
+ 			    xstate_comp_offsets[i]
+ 			      = ALIGN_UP (xstate_comp_offsets[i], 64);
++#ifdef __x86_64__
++			  xstate_amx_comp_offsets[i]
++			    = (xstate_amx_comp_offsets[i - 1]
++			       + xstate_amx_comp_sizes[i - 1]);
++			  if ((amx_ecx & (1 << 1)) != 0)
++			    xstate_amx_comp_offsets[i]
++			      = ALIGN_UP (xstate_amx_comp_offsets[i],
++					  64);
++#endif
+ 			}
+ 		    }
+ 
+@@ -357,6 +396,18 @@ update_active (struct cpu_features *cpu_features)
+ 		    = xstate_comp_offsets[31] + xstate_comp_sizes[31];
+ 		  if (size)
+ 		    {
++#ifdef __x86_64__
++		      unsigned int amx_size
++			= (xstate_amx_comp_offsets[31]
++			   + xstate_amx_comp_sizes[31]);
++		      amx_size = ALIGN_UP (amx_size + STATE_SAVE_OFFSET,
++					   64);
++		      /* Set xsave_state_full_size to the compact AMX
++			 state size for XSAVEC.  NB: xsave_state_full_size
++			 is only used in _dl_tlsdesc_dynamic_xsave and
++			 _dl_tlsdesc_dynamic_xsavec.  */
++		      cpu_features->xsave_state_full_size = amx_size;
++#endif
+ 		      cpu_features->xsave_state_size
+ 			= ALIGN_UP (size + STATE_SAVE_OFFSET, 64);
+ 		      CPU_FEATURE_SET (cpu_features, XSAVEC);
+diff --git a/sysdeps/x86/include/cpu-features.h b/sysdeps/x86/include/cpu-features.h
+index b9bf3115b616f05f..cd7bd27cf35959fd 100644
+--- a/sysdeps/x86/include/cpu-features.h
++++ b/sysdeps/x86/include/cpu-features.h
+@@ -934,6 +934,8 @@ struct cpu_features
+   /* The full state size for XSAVE when XSAVEC is disabled by
+ 
+      GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVEC
++
++     and the AMX state size when XSAVEC is available.
+    */
+   unsigned int xsave_state_full_size;
+   /* Data cache size for use in memory and string routines, typically
+diff --git a/sysdeps/x86/sysdep.h b/sysdeps/x86/sysdep.h
+index 485cad9c0283b334..db8e576e91767db5 100644
+--- a/sysdeps/x86/sysdep.h
++++ b/sysdeps/x86/sysdep.h
+@@ -56,6 +56,14 @@
+    | (1 << X86_XSTATE_ZMM_H_ID) 	\
+    | (1 << X86_XSTATE_ZMM_ID)		\
+    | (1 << X86_XSTATE_APX_F_ID))
++
++/* AMX state mask.  */
++# define AMX_STATE_SAVE_MASK		\
++  ((1 << X86_XSTATE_TILECFG_ID) | (1 << X86_XSTATE_TILEDATA_ID))
++
++/* States to be included in xsave_state_full_size.  */
++# define FULL_STATE_SAVE_MASK		\
++  (STATE_SAVE_MASK | AMX_STATE_SAVE_MASK)
+ #else
+ /* Offset for fxsave/xsave area used by _dl_tlsdesc_dynamic.  Since i386
+    doesn't have red-zone, use 0 here.  */
+@@ -68,13 +76,17 @@
+    | (1 << X86_XSTATE_BNDREGS_ID)	\
+    | (1 << X86_XSTATE_K_ID)		\
+    | (1 << X86_XSTATE_ZMM_H_ID))
++
++/* States to be included in xsave_state_size.  */
++# define FULL_STATE_SAVE_MASK		STATE_SAVE_MASK
+ #endif
+ 
+ /* States which should be saved for TLSDESC_CALL and TLS_DESC_CALL.
+-   Compiler assumes that all registers, including x87 FPU stack registers,
+-   are unchanged after CALL, except for EFLAGS and RAX/EAX.  */
++   Compiler assumes that all registers, including AMX and x87 FPU
++   stack registers, are unchanged after CALL, except for EFLAGS and
++   RAX/EAX.  */
+ #define TLSDESC_CALL_STATE_SAVE_MASK	\
+-  (STATE_SAVE_MASK | (1 << X86_XSTATE_X87_ID))
++  (FULL_STATE_SAVE_MASK | (1 << X86_XSTATE_X87_ID))
+ 
+ /* Constants for bits in __x86_string_control:  */
+ 
+diff --git a/sysdeps/x86_64/configure b/sysdeps/x86_64/configure
+index 418cc4a9b862f7e0..04a534fa126a7bf7 100755
+--- a/sysdeps/x86_64/configure
++++ b/sysdeps/x86_64/configure
+@@ -134,6 +134,34 @@ fi
+ config_vars="$config_vars
+ enable-cet = $enable_cet"
+ 
++# Check if -mamx-tile works properly.
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -mamx-tile works properly" >&5
++printf %s "checking whether -mamx-tile works properly... " >&6; }
++if test ${libc_cv_x86_have_amx_tile+y}
++then :
++  printf %s "(cached) " >&6
++else $as_nop
++  cat > conftest.c <<EOF
++#include <x86intrin.h>
++EOF
++	       libc_cv_x86_have_amx_tile=no
++	       if { ac_try='${CC-cc} -E $CFLAGS -mamx-tile conftest.c > conftest.i'
++  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
++  (eval $ac_try) 2>&5
++  ac_status=$?
++  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++  test $ac_status = 0; }; }; then
++		 if grep -q __builtin_ia32_ldtilecfg conftest.i; then
++		   libc_cv_x86_have_amx_tile=yes
++	         fi
++	       fi
++	       rm -rf conftest*
++fi
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_have_amx_tile" >&5
++printf "%s\n" "$libc_cv_x86_have_amx_tile" >&6; }
++config_vars="$config_vars
++have-mamx-tile = $libc_cv_x86_have_amx_tile"
++
+ test -n "$critic_missing" && as_fn_error $? "
+ *** $critic_missing" "$LINENO" 5
+ 
+diff --git a/sysdeps/x86_64/configure.ac b/sysdeps/x86_64/configure.ac
+index d1f803c02ee67fc5..c714c47351e70390 100644
+--- a/sysdeps/x86_64/configure.ac
++++ b/sysdeps/x86_64/configure.ac
+@@ -61,5 +61,20 @@ elif test $enable_cet = permissive; then
+ fi
+ LIBC_CONFIG_VAR([enable-cet], [$enable_cet])
+ 
++# Check if -mamx-tile works properly.
++AC_CACHE_CHECK(whether -mamx-tile works properly,
++	       libc_cv_x86_have_amx_tile, [dnl
++cat > conftest.c <<EOF
++#include <x86intrin.h>
++EOF
++	       libc_cv_x86_have_amx_tile=no
++	       if AC_TRY_COMMAND(${CC-cc} -E $CFLAGS -mamx-tile conftest.c > conftest.i); then
++		 if grep -q __builtin_ia32_ldtilecfg conftest.i; then
++		   libc_cv_x86_have_amx_tile=yes
++	         fi
++	       fi
++	       rm -rf conftest*])
++LIBC_CONFIG_VAR([have-mamx-tile], [$libc_cv_x86_have_amx_tile])
++
+ test -n "$critic_missing" && AC_MSG_ERROR([
+ *** $critic_missing])
+diff --git a/sysdeps/x86_64/dl-tlsdesc-dynamic.h b/sysdeps/x86_64/dl-tlsdesc-dynamic.h
+index 0c2e8d5320d0bd26..9f02cfc3eb297ed2 100644
+--- a/sysdeps/x86_64/dl-tlsdesc-dynamic.h
++++ b/sysdeps/x86_64/dl-tlsdesc-dynamic.h
+@@ -99,7 +99,7 @@ _dl_tlsdesc_dynamic:
+ # endif
+ #else
+ 	/* Allocate stack space of the required size to save the state.  */
+-	sub	_rtld_local_ro+RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET+XSAVE_STATE_SIZE_OFFSET(%rip), %RSP_LP
++	sub	_rtld_local_ro+RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET+XSAVE_STATE_FULL_SIZE_OFFSET(%rip), %RSP_LP
+ #endif
+ 	/* Besides rdi and rsi, saved above, save rcx, rdx, r8, r9,
+ 	   r10 and r11.  */
diff --git a/SOURCES/glibc-upstream-2.39-14.patch b/SOURCES/glibc-upstream-2.39-14.patch
new file mode 100644
index 0000000..a49f788
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-14.patch
@@ -0,0 +1,250 @@
+commit 354cabcb2634abe16da7a2ba5e648aac1204b58e
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Mon Mar 18 06:40:16 2024 -0700
+
+    x86-64: Allocate state buffer space for RDI, RSI and RBX
+    
+    _dl_tlsdesc_dynamic preserves RDI, RSI and RBX before realigning stack.
+    After realigning stack, it saves RCX, RDX, R8, R9, R10 and R11.  Define
+    TLSDESC_CALL_REGISTER_SAVE_AREA to allocate space for RDI, RSI and RBX
+    to avoid clobbering saved RDI, RSI and RBX values on stack by xsave to
+    STATE_SAVE_OFFSET(%rsp).
+    
+       +==================+<- stack frame start aligned at 8 or 16 bytes
+       |                  |<- RDI saved in the red zone
+       |                  |<- RSI saved in the red zone
+       |                  |<- RBX saved in the red zone
+       |                  |<- paddings for stack realignment of 64 bytes
+       |------------------|<- xsave buffer end aligned at 64 bytes
+       |                  |<-
+       |                  |<-
+       |                  |<-
+       |------------------|<- xsave buffer start at STATE_SAVE_OFFSET(%rsp)
+       |                  |<- 8-byte padding for 64-byte alignment
+       |                  |<- 8-byte padding for 64-byte alignment
+       |                  |<- R11
+       |                  |<- R10
+       |                  |<- R9
+       |                  |<- R8
+       |                  |<- RDX
+       |                  |<- RCX
+       +==================+<- RSP aligned at 64 bytes
+    
+    Define TLSDESC_CALL_REGISTER_SAVE_AREA, the total register save area size
+    for all integer registers by adding 24 to STATE_SAVE_OFFSET since RDI, RSI
+    and RBX are saved onto stack without adjusting stack pointer first, using
+    the red-zone.  This fixes BZ #31501.
+    Reviewed-by: Sunil K Pandey <skpgkp2@gmail.com>
+    
+    (cherry picked from commit 717ebfa85c8240d32d0d19d86a484c31c55c9617)
+
+diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
+index d71e8d3d2e0e49f9..6fe1b728c607f39e 100644
+--- a/sysdeps/x86/cpu-features.c
++++ b/sysdeps/x86/cpu-features.c
+@@ -310,7 +310,7 @@ update_active (struct cpu_features *cpu_features)
+ 	      /* NB: On AMX capable processors, ebx always includes AMX
+ 		 states.  */
+ 	      unsigned int xsave_state_full_size
+-		= ALIGN_UP (ebx + STATE_SAVE_OFFSET, 64);
++		= ALIGN_UP (ebx + TLSDESC_CALL_REGISTER_SAVE_AREA, 64);
+ 
+ 	      cpu_features->xsave_state_size
+ 		= xsave_state_full_size;
+@@ -400,8 +400,10 @@ update_active (struct cpu_features *cpu_features)
+ 		      unsigned int amx_size
+ 			= (xstate_amx_comp_offsets[31]
+ 			   + xstate_amx_comp_sizes[31]);
+-		      amx_size = ALIGN_UP (amx_size + STATE_SAVE_OFFSET,
+-					   64);
++		      amx_size
++			= ALIGN_UP ((amx_size
++				     + TLSDESC_CALL_REGISTER_SAVE_AREA),
++				    64);
+ 		      /* Set xsave_state_full_size to the compact AMX
+ 			 state size for XSAVEC.  NB: xsave_state_full_size
+ 			 is only used in _dl_tlsdesc_dynamic_xsave and
+@@ -409,7 +411,8 @@ update_active (struct cpu_features *cpu_features)
+ 		      cpu_features->xsave_state_full_size = amx_size;
+ #endif
+ 		      cpu_features->xsave_state_size
+-			= ALIGN_UP (size + STATE_SAVE_OFFSET, 64);
++			= ALIGN_UP (size + TLSDESC_CALL_REGISTER_SAVE_AREA,
++				    64);
+ 		      CPU_FEATURE_SET (cpu_features, XSAVEC);
+ 		    }
+ 		}
+diff --git a/sysdeps/x86/sysdep.h b/sysdeps/x86/sysdep.h
+index db8e576e91767db5..7359149e17ccf341 100644
+--- a/sysdeps/x86/sysdep.h
++++ b/sysdeps/x86/sysdep.h
+@@ -38,14 +38,59 @@
+ #ifdef __x86_64__
+ /* Offset for fxsave/xsave area used by _dl_runtime_resolve.  Also need
+    space to preserve RCX, RDX, RSI, RDI, R8, R9 and RAX.  It must be
+-   aligned to 16 bytes for fxsave and 64 bytes for xsave.
+-
+-   NB: Is is non-zero because of the 128-byte red-zone.  Some registers
+-   are saved on stack without adjusting stack pointer first.  When we
+-   update stack pointer to allocate more space, we need to take the
+-   red-zone into account.  */
++   aligned to 16 bytes for fxsave and 64 bytes for xsave.  It is non-zero
++   because MOV, instead of PUSH, is used to save registers onto stack.
++
++   +==================+<- stack frame start aligned at 8 or 16 bytes
++   |                  |<- paddings for stack realignment of 64 bytes
++   |------------------|<- xsave buffer end aligned at 64 bytes
++   |                  |<-
++   |                  |<-
++   |                  |<-
++   |------------------|<- xsave buffer start at STATE_SAVE_OFFSET(%rsp)
++   |                  |<- 8-byte padding for 64-byte alignment
++   |                  |<- R9
++   |                  |<- R8
++   |                  |<- RDI
++   |                  |<- RSI
++   |                  |<- RDX
++   |                  |<- RCX
++   |                  |<- RAX
++   +==================+<- RSP aligned at 64 bytes
++
++ */
+ # define STATE_SAVE_OFFSET (8 * 7 + 8)
+ 
++/* _dl_tlsdesc_dynamic preserves RDI, RSI and RBX before realigning
++   stack.  After realigning stack, it saves RCX, RDX, R8, R9, R10 and
++   R11.  Allocate space for RDI, RSI and RBX to avoid clobbering saved
++   RDI, RSI and RBX values on stack by xsave.
++
++   +==================+<- stack frame start aligned at 8 or 16 bytes
++   |                  |<- RDI saved in the red zone
++   |                  |<- RSI saved in the red zone
++   |                  |<- RBX saved in the red zone
++   |                  |<- paddings for stack realignment of 64 bytes
++   |------------------|<- xsave buffer end aligned at 64 bytes
++   |                  |<-
++   |                  |<-
++   |                  |<-
++   |------------------|<- xsave buffer start at STATE_SAVE_OFFSET(%rsp)
++   |                  |<- 8-byte padding for 64-byte alignment
++   |                  |<- 8-byte padding for 64-byte alignment
++   |                  |<- R11
++   |                  |<- R10
++   |                  |<- R9
++   |                  |<- R8
++   |                  |<- RDX
++   |                  |<- RCX
++   +==================+<- RSP aligned at 64 bytes
++
++   Define the total register save area size for all integer registers by
++   adding 24 to STATE_SAVE_OFFSET since RDI, RSI and RBX are saved onto
++   stack without adjusting stack pointer first, using the red-zone.  */
++# define TLSDESC_CALL_REGISTER_SAVE_AREA (STATE_SAVE_OFFSET + 24)
++
+ /* Save SSE, AVX, AVX512, mask, bound and APX registers.  Bound and APX
+    registers are mutually exclusive.  */
+ # define STATE_SAVE_MASK		\
+@@ -66,8 +111,9 @@
+   (STATE_SAVE_MASK | AMX_STATE_SAVE_MASK)
+ #else
+ /* Offset for fxsave/xsave area used by _dl_tlsdesc_dynamic.  Since i386
+-   doesn't have red-zone, use 0 here.  */
++   uses PUSH to save registers onto stack, use 0 here.  */
+ # define STATE_SAVE_OFFSET 0
++# define TLSDESC_CALL_REGISTER_SAVE_AREA 0
+ 
+ /* Save SSE, AVX, AXV512, mask and bound registers.   */
+ # define STATE_SAVE_MASK		\
+diff --git a/sysdeps/x86_64/tst-gnu2-tls2mod1.S b/sysdeps/x86_64/tst-gnu2-tls2mod1.S
+new file mode 100644
+index 0000000000000000..1d636669ba255724
+--- /dev/null
++++ b/sysdeps/x86_64/tst-gnu2-tls2mod1.S
+@@ -0,0 +1,87 @@
++/* Check if TLSDESC relocation preserves %rdi, %rsi and %rbx.
++   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
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++/* On AVX512 machines, OFFSET == 40 caused _dl_tlsdesc_dynamic_xsavec
++   to clobber %rdi, %rsi and %rbx.  On Intel AVX CPUs, the state size
++   is 960 bytes and this test didn't fail.  It may be due to the unused
++   last 128 bytes.  On AMD AVX CPUs, the state size is 832 bytes and
++   this test might fail without the fix.  */
++#ifndef OFFSET
++# define OFFSET 40
++#endif
++
++	.text
++	.p2align 4
++	.globl	apply_tls
++	.type	apply_tls, @function
++apply_tls:
++	cfi_startproc
++	_CET_ENDBR
++	pushq	%rbp
++	cfi_def_cfa_offset (16)
++	cfi_offset (6, -16)
++	movdqu	(%RDI_LP), %xmm0
++	lea	tls_var1@TLSDESC(%rip), %RAX_LP
++	mov	%RSP_LP, %RBP_LP
++	cfi_def_cfa_register (6)
++	/* Align stack to 64 bytes.  */
++	and	$-64, %RSP_LP
++	sub	$OFFSET, %RSP_LP
++	pushq	%rbx
++	/* Set %ebx to 0xbadbeef.  */
++	movl	$0xbadbeef, %ebx
++	movl	$0xbadbeef, %esi
++	movq	%rdi, saved_rdi(%rip)
++	movq	%rsi, saved_rsi(%rip)
++	call	*tls_var1@TLSCALL(%RAX_LP)
++	/* Check if _dl_tlsdesc_dynamic preserves %rdi, %rsi and %rbx.  */
++	cmpq	saved_rdi(%rip), %rdi
++	jne	L(hlt)
++	cmpq	saved_rsi(%rip), %rsi
++	jne	L(hlt)
++	cmpl	$0xbadbeef, %ebx
++	jne	L(hlt)
++	add	%fs:0, %RAX_LP
++	movups	%xmm0, 32(%RAX_LP)
++	movdqu	16(%RDI_LP), %xmm1
++	mov	%RAX_LP, %RBX_LP
++	movups	%xmm1, 48(%RAX_LP)
++	lea	32(%RBX_LP), %RAX_LP
++	pop	%rbx
++	leave
++	cfi_def_cfa (7, 8)
++	ret
++L(hlt):
++	hlt
++	cfi_endproc
++	.size	apply_tls, .-apply_tls
++	.hidden	tls_var1
++	.globl	tls_var1
++	.section	.tbss,"awT",@nobits
++	.align 16
++	.type	tls_var1, @object
++	.size	tls_var1, 3200
++tls_var1:
++	.zero	3200
++	.local	saved_rdi
++	.comm	saved_rdi,8,8
++	.local	saved_rsi
++	.comm	saved_rsi,8,8
++	.section	.note.GNU-stack,"",@progbits
diff --git a/SOURCES/glibc-upstream-2.39-15.patch b/SOURCES/glibc-upstream-2.39-15.patch
new file mode 100644
index 0000000..037a4d3
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-15.patch
@@ -0,0 +1,38 @@
+commit 15aebdbada54098787715448c94701f17033fc92
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Tue Mar 12 13:21:18 2024 -0300
+
+    Ignore undefined symbols for -mtls-dialect=gnu2
+    
+    So it does not fail for arm config that defaults to -mtp=soft (which
+    issues a call to __aeabi_read_tp).
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    
+    (cherry picked from commit 968b0ca9440040a2b31248a572891f0e55c1ab10)
+
+diff --git a/configure b/configure
+index 59ff1e415dda4fbf..117b48a421792eda 100755
+--- a/configure
++++ b/configure
+@@ -7020,7 +7020,7 @@ void foo (void)
+ }
+ EOF
+ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=gnu2 -nostdlib -nostartfiles
+-		   conftest.c -o conftest 1>&5'
++		   -shared conftest.c -o conftest 1>&5'
+   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+   (eval $ac_try) 2>&5
+   ac_status=$?
+diff --git a/configure.ac b/configure.ac
+index 65799e56852a5356..19b88a47a52508a1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1297,7 +1297,7 @@ void foo (void)
+ }
+ EOF
+ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=gnu2 -nostdlib -nostartfiles
+-		   conftest.c -o conftest 1>&AS_MESSAGE_LOG_FD])
++		   -shared conftest.c -o conftest 1>&AS_MESSAGE_LOG_FD])
+ then
+   libc_cv_mtls_dialect_gnu2=yes
+ else
diff --git a/SOURCES/glibc-upstream-2.39-16.patch b/SOURCES/glibc-upstream-2.39-16.patch
new file mode 100644
index 0000000..e5fa640
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-16.patch
@@ -0,0 +1,446 @@
+commit a8ba52bde58c69f2b31da62ad2311f119adf6cb9
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Tue Mar 12 13:21:19 2024 -0300
+
+    arm: Update _dl_tlsdesc_dynamic to preserve caller-saved registers (BZ 31372)
+    
+    ARM _dl_tlsdesc_dynamic slow path has two issues:
+    
+      * The ip/r12 is defined by AAPCS as a scratch register, and gcc is
+        used to save the stack pointer before on some function calls.  So it
+        should also be saved/restored as well.  It fixes the tst-gnu2-tls2.
+    
+      * None of the possible VFP registers are saved/restored.  ARM has the
+        additional complexity to have different VFP bank sizes (depending of
+        VFP support by the chip).
+    
+    The tst-gnu2-tls2 test is extended to check for VFP registers, although
+    only for hardfp builds.  Different than setcontext, _dl_tlsdesc_dynamic
+    does not have  HWCAP_ARM_IWMMXT (I don't have a way to properly test
+    it and it is almost a decade since newer hardware was released).
+    
+    With this patch there is no need to mark tst-gnu2-tls2 as XFAIL.
+    
+    Checked on arm-linux-gnueabihf.
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    
+    (cherry picked from commit 64c7e344289ed085517c2227d8e3b06388242c13)
+
+diff --git a/config.h.in b/config.h.in
+index 44a34072a47aa008..4d33c63a841d3d6d 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -141,6 +141,9 @@
+ /* LOONGARCH floating-point ABI for ld.so.  */
+ #undef LOONGARCH_ABI_FRLEN
+ 
++/* Define whether ARM used hard-float and support VFPvX-D32.  */
++#undef HAVE_ARM_PCS_VFP_D32
++
+ /* Linux specific: minimum supported kernel version.  */
+ #undef	__LINUX_KERNEL_VERSION
+ 
+diff --git a/elf/Makefile b/elf/Makefile
+index c5c37a9147e69d83..030db4d207d3491e 100644
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -3056,10 +3056,6 @@ $(objpfx)tst-gnu2-tls2.out: \
+   $(objpfx)tst-gnu2-tls2mod2.so
+ 
+ ifeq (yes,$(have-mtls-dialect-gnu2))
+-# This test fails if dl_tlsdesc_dynamic doesn't preserve all caller-saved
+-# registers.  See https://sourceware.org/bugzilla/show_bug.cgi?id=31372
+-test-xfail-tst-gnu2-tls2 = yes
+-
+ CFLAGS-tst-tlsgap-mod0.c += -mtls-dialect=gnu2
+ CFLAGS-tst-tlsgap-mod1.c += -mtls-dialect=gnu2
+ CFLAGS-tst-tlsgap-mod2.c += -mtls-dialect=gnu2
+diff --git a/elf/tst-gnu2-tls2.h b/elf/tst-gnu2-tls2.h
+index 77964a57a352e6a4..1ade8151e200af68 100644
+--- a/elf/tst-gnu2-tls2.h
++++ b/elf/tst-gnu2-tls2.h
+@@ -27,6 +27,10 @@ extern struct tls *apply_tls (struct tls *);
+ 
+ /* An architecture can define them to verify that clobber caller-saved
+    registers aren't changed by the implicit TLSDESC call.  */
++#ifndef INIT_TLSDESC_CALL
++# define INIT_TLSDESC_CALL()
++#endif
++
+ #ifndef BEFORE_TLSDESC_CALL
+ # define BEFORE_TLSDESC_CALL()
+ #endif
+diff --git a/elf/tst-gnu2-tls2mod0.c b/elf/tst-gnu2-tls2mod0.c
+index 45556a0e173922cc..3fe3c142777abe04 100644
+--- a/elf/tst-gnu2-tls2mod0.c
++++ b/elf/tst-gnu2-tls2mod0.c
+@@ -16,13 +16,14 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include "tst-gnu2-tls2.h"
++#include <tst-gnu2-tls2.h>
+ 
+ __thread struct tls tls_var0 __attribute__ ((visibility ("hidden")));
+ 
+ struct tls *
+ apply_tls (struct tls *p)
+ {
++  INIT_TLSDESC_CALL ();
+   BEFORE_TLSDESC_CALL ();
+   tls_var0 = *p;
+   struct tls *ret = &tls_var0;
+diff --git a/elf/tst-gnu2-tls2mod1.c b/elf/tst-gnu2-tls2mod1.c
+index e10b9dbc0a7573c7..e2105384689e2d2e 100644
+--- a/elf/tst-gnu2-tls2mod1.c
++++ b/elf/tst-gnu2-tls2mod1.c
+@@ -16,13 +16,14 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include "tst-gnu2-tls2.h"
++#include <tst-gnu2-tls2.h>
+ 
+ __thread struct tls tls_var1[100] __attribute__ ((visibility ("hidden")));
+ 
+ struct tls *
+ apply_tls (struct tls *p)
+ {
++  INIT_TLSDESC_CALL ();
+   BEFORE_TLSDESC_CALL ();
+   tls_var1[1] = *p;
+   struct tls *ret = &tls_var1[1];
+diff --git a/elf/tst-gnu2-tls2mod2.c b/elf/tst-gnu2-tls2mod2.c
+index 141af51e55b8bf34..6d3031dc5fbc1041 100644
+--- a/elf/tst-gnu2-tls2mod2.c
++++ b/elf/tst-gnu2-tls2mod2.c
+@@ -16,13 +16,14 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include "tst-gnu2-tls2.h"
++#include <tst-gnu2-tls2.h>
+ 
+ __thread struct tls tls_var2 __attribute__ ((visibility ("hidden")));
+ 
+ struct tls *
+ apply_tls (struct tls *p)
+ {
++  INIT_TLSDESC_CALL ();
+   BEFORE_TLSDESC_CALL ();
+   tls_var2 = *p;
+   struct tls *ret = &tls_var2;
+diff --git a/sysdeps/arm/configure b/sysdeps/arm/configure
+index 35e2918922300956..4ef4d46cbd5384e9 100644
+--- a/sysdeps/arm/configure
++++ b/sysdeps/arm/configure
+@@ -187,6 +187,38 @@ else
+ default-abi = soft"
+ fi
+ 
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether VFP supports 32 registers" >&5
++printf %s "checking whether VFP supports 32 registers... " >&6; }
++if test ${libc_cv_arm_pcs_vfp_d32+y}
++then :
++  printf %s "(cached) " >&6
++else $as_nop
++
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++void foo (void)
++{
++  asm volatile ("vldr d16,=17" : : : "d16");
++}
++
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"
++then :
++  libc_cv_arm_pcs_vfp_d32=yes
++else $as_nop
++  libc_cv_arm_pcs_vfp_d32=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arm_pcs_vfp_d32" >&5
++printf "%s\n" "$libc_cv_arm_pcs_vfp_d32" >&6; }
++if test "$libc_cv_arm_pcs_vfp_d32" = yes ;
++then
++  printf "%s\n" "#define HAVE_ARM_PCS_VFP_D32 1" >>confdefs.h
++
++fi
++
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether PC-relative relocs in movw/movt work properly" >&5
+ printf %s "checking whether PC-relative relocs in movw/movt work properly... " >&6; }
+ if test ${libc_cv_arm_pcrel_movw+y}
+diff --git a/sysdeps/arm/configure.ac b/sysdeps/arm/configure.ac
+index 5172e30bbe79f995..cd00ddc9d9ade5d7 100644
+--- a/sysdeps/arm/configure.ac
++++ b/sysdeps/arm/configure.ac
+@@ -21,6 +21,21 @@ else
+   LIBC_CONFIG_VAR([default-abi], [soft])
+ fi
+ 
++AC_CACHE_CHECK([whether VFP supports 32 registers],
++		libc_cv_arm_pcs_vfp_d32, [
++AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
++void foo (void)
++{
++  asm volatile ("vldr d16,=17" : : : "d16");
++}
++]])],
++                [libc_cv_arm_pcs_vfp_d32=yes],
++                [libc_cv_arm_pcs_vfp_d32=no])])
++if test "$libc_cv_arm_pcs_vfp_d32" = yes ;
++then
++  AC_DEFINE(HAVE_ARM_PCS_VFP_D32)
++fi
++
+ AC_CACHE_CHECK([whether PC-relative relocs in movw/movt work properly],
+ 	       libc_cv_arm_pcrel_movw, [
+ cat > conftest.s <<\EOF
+diff --git a/sysdeps/arm/dl-tlsdesc.S b/sysdeps/arm/dl-tlsdesc.S
+index 764c56e70f046b03..ada106521da8971a 100644
+--- a/sysdeps/arm/dl-tlsdesc.S
++++ b/sysdeps/arm/dl-tlsdesc.S
+@@ -19,6 +19,7 @@
+ #include <sysdep.h>
+ #include <arm-features.h>
+ #include <tls.h>
++#include <rtld-global-offsets.h>
+ #include "tlsdesc.h"
+ 
+ 	.text
+@@ -83,14 +84,20 @@ _dl_tlsdesc_dynamic(struct tlsdesc *tdp)
+ 	.align 2
+ _dl_tlsdesc_dynamic:
+ 	/* Our calling convention is to clobber r0, r1 and the processor
+-	   flags.  All others that are modified must be saved */
+-	eabi_save ({r2,r3,r4,lr})
+-	push	{r2,r3,r4,lr}
+-	cfi_adjust_cfa_offset (16)
++	   flags.  All others that are modified must be saved.  r5 is
++	   used as the hwcap value to avoid reload after __tls_get_addr
++	   call.  If required we will save the vector register on the slow
++	   path.  */
++	eabi_save ({r2,r3,r4,r5,ip,lr})
++	push	{r2,r3,r4,r5,ip,lr}
++	cfi_adjust_cfa_offset (24)
+ 	cfi_rel_offset (r2,0)
+ 	cfi_rel_offset (r3,4)
+ 	cfi_rel_offset (r4,8)
+-	cfi_rel_offset (lr,12)
++	cfi_rel_offset (r5,12)
++	cfi_rel_offset (ip,16)
++	cfi_rel_offset (lr,20)
++
+ 	ldr	r1, [r0] /* td */
+ 	GET_TLS (lr)
+ 	mov	r4, r0 /* r4 = tp */
+@@ -113,22 +120,69 @@ _dl_tlsdesc_dynamic:
+ 	rsbne	r0, r4, r3
+ 	bne	2f
+ 1:	mov	r0, r1
++
++	/* Load the hwcap to check for vector support.  */
++	ldr     r2, 3f
++	ldr     r1, .Lrtld_global_ro
++0:	add     r2, pc, r2
++	ldr     r2, [r2, r1]
++	ldr     r5, [r2, #RTLD_GLOBAL_RO_DL_HWCAP_OFFSET]
++
++#ifdef __SOFTFP__
++	tst     r5, #HWCAP_ARM_VFP
++	beq     .Lno_vfp
++#endif
++
++	/* Store the VFP registers.  Don't use VFP instructions directly
++	   because this code is used in non-VFP multilibs.  */
++#define VFP_STACK_REQ (32*8 + 8)
++	sub	sp, sp, VFP_STACK_REQ
++	cfi_adjust_cfa_offset (VFP_STACK_REQ)
++	mov	r3, sp
++	.inst	0xeca30b20	/* vstmia r3!, {d0-d15} */
++	tst	r5, #HWCAP_ARM_VFPD32
++	beq	4f
++	.inst	0xece30b20	/* vstmia r3!, {d16-d31}  */
++	/* Store the floating-point status register.  */
++4:	.inst	0xeef12a10	/* vmrs	r2, fpscr */
++	str	r2, [r3]
++.Lno_vfp:
+ 	bl	__tls_get_addr
+ 	rsb	r0, r4, r0
++#ifdef __SOFTFP__
++	tst     r5, #HWCAP_ARM_VFP
++	beq     2f
++#endif
++	mov	r3, sp
++	.inst	0xecb30b20	/* vldmia r3!, {d0-d15}  */
++	tst	r5, #HWCAP_ARM_VFPD32
++	beq	5f
++	.inst	0xecf30b20	/* vldmia r3!, {d16-d31}  */
++	ldr	r4, [r3]
++5:	.inst	0xeee14a10	/* vmsr	fpscr, r4  */
++	add	sp, sp, VFP_STACK_REQ
++	cfi_adjust_cfa_offset (-VFP_STACK_REQ)
++
+ 2:
+ #if ((defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__)) \
+      || defined (ARM_ALWAYS_BX))
+-	pop	{r2,r3,r4, lr}
+-	cfi_adjust_cfa_offset (-16)
++	pop	{r2,r3,r4,r5,ip, lr}
++	cfi_adjust_cfa_offset (-20)
+ 	cfi_restore (lr)
++	cfi_restore (ip)
++	cfi_restore (r5)
+ 	cfi_restore (r4)
+ 	cfi_restore (r3)
+ 	cfi_restore (r2)
+ 	bx	lr
+ #else
+-	pop	{r2,r3,r4, pc}
++	pop	{r2,r3,r4,r5,ip, pc}
+ #endif
+ 	eabi_fnend
+ 	cfi_endproc
+ 	.size	_dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
++
++3:      .long   _GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
++.Lrtld_global_ro:
++	.long   C_SYMBOL_NAME(_rtld_global_ro)(GOT)
+ #endif /* SHARED */
+diff --git a/sysdeps/arm/tst-gnu2-tls2.h b/sysdeps/arm/tst-gnu2-tls2.h
+new file mode 100644
+index 0000000000000000..e413ac21fb9ed9bf
+--- /dev/null
++++ b/sysdeps/arm/tst-gnu2-tls2.h
+@@ -0,0 +1,128 @@
++/* Test TLSDESC relocation.  ARM 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 <config.h>
++#include <sys/auxv.h>
++#include <string.h>
++#include <stdlib.h>
++#include <endian.h>
++
++#ifndef __SOFTFP__
++
++# ifdef HAVE_ARM_PCS_VFP_D32
++#  define SAVE_VFP_D32					\
++      asm volatile ("vldr d16,=17" : : : "d16");	\
++      asm volatile ("vldr d17,=18" : : : "d17");	\
++      asm volatile ("vldr d18,=19" : : : "d18");	\
++      asm volatile ("vldr d19,=20" : : : "d19");	\
++      asm volatile ("vldr d20,=21" : : : "d20");	\
++      asm volatile ("vldr d21,=22" : : : "d21");	\
++      asm volatile ("vldr d22,=23" : : : "d22");	\
++      asm volatile ("vldr d23,=24" : : : "d23");	\
++      asm volatile ("vldr d24,=25" : : : "d24");	\
++      asm volatile ("vldr d25,=26" : : : "d25");	\
++      asm volatile ("vldr d26,=27" : : : "d26");	\
++      asm volatile ("vldr d27,=28" : : : "d27");	\
++      asm volatile ("vldr d28,=29" : : : "d28");	\
++      asm volatile ("vldr d29,=30" : : : "d29");	\
++      asm volatile ("vldr d30,=31" : : : "d30");	\
++      asm volatile ("vldr d31,=32" : : : "d31");
++# else
++#  define SAVE_VFP_D32
++# endif
++
++# define INIT_TLSDESC_CALL()				\
++  unsigned long hwcap = getauxval (AT_HWCAP)
++
++/* Set each vector register to a value from 1 to 32 before the TLS access,
++   dump to memory after TLS access, and compare with the expected values.  */
++
++# define BEFORE_TLSDESC_CALL()				\
++  if (hwcap & HWCAP_ARM_VFP)				\
++    {							\
++      asm volatile ("vldr  d0,=1" : : : "d0");		\
++      asm volatile ("vldr  d1,=2" : : : "d1");		\
++      asm volatile ("vldr  d2,=3" : : : "d1");		\
++      asm volatile ("vldr  d3,=4" : : : "d3");		\
++      asm volatile ("vldr  d4,=5" : : : "d4");		\
++      asm volatile ("vldr  d5,=6" : : : "d5");		\
++      asm volatile ("vldr  d6,=7" : : : "d6");		\
++      asm volatile ("vldr  d7,=8" : : : "d7");		\
++      asm volatile ("vldr  d8,=9" : : : "d8");		\
++      asm volatile ("vldr  d9,=10" : : : "d9");		\
++      asm volatile ("vldr d10,=11" : : : "d10");	\
++      asm volatile ("vldr d11,=12" : : : "d11");	\
++      asm volatile ("vldr d12,=13" : : : "d12");	\
++      asm volatile ("vldr d13,=14" : : : "d13");	\
++      asm volatile ("vldr d14,=15" : : : "d14");	\
++      asm volatile ("vldr d15,=16" : : : "d15");	\
++    }							\
++  if (hwcap & HWCAP_ARM_VFPD32)				\
++    {							\
++      SAVE_VFP_D32					\
++    }
++
++# define VFP_STACK_REQ (16*8)
++# if __BYTE_ORDER == __BIG_ENDIAN
++#  define DISP 7
++# else
++#  define DISP 0
++# endif
++
++# ifdef HAVE_ARM_PCS_VFP_D32
++#  define CHECK_VFP_D32							\
++      char vfp[VFP_STACK_REQ];						\
++      asm volatile ("vstmia %0, {d16-d31}\n"				\
++		    :							\
++		    : "r" (vfp)						\
++		    : "memory");					\
++									\
++      char expected[VFP_STACK_REQ] = { 0 };				\
++      for (int i = 0; i < 16; ++i)					\
++	expected[i * 8 + DISP] = i + 17;				\
++									\
++      if (memcmp (vfp, expected, VFP_STACK_REQ) != 0)			\
++        abort ();
++# else
++#  define CHECK_VFP_D32
++# endif
++
++# define AFTER_TLSDESC_CALL()						\
++  if (hwcap & HWCAP_ARM_VFP)						\
++    {									\
++      char vfp[VFP_STACK_REQ];						\
++      asm volatile ("vstmia %0, {d0-d15}\n"				\
++		    :							\
++		    : "r" (vfp)						\
++		    : "memory");					\
++									\
++      char expected[VFP_STACK_REQ] = { 0 };				\
++      for (int i = 0; i < 16; ++i)					\
++	expected[i * 8 + DISP] = i + 1;					\
++									\
++      if (memcmp (vfp, expected, VFP_STACK_REQ) != 0)			\
++        abort ();							\
++    }									\
++  if (hwcap & HWCAP_ARM_VFPD32)						\
++    {									\
++      CHECK_VFP_D32							\
++    }
++
++#endif /* __SOFTFP__ */
++
++#include_next <tst-gnu2-tls2.h>
diff --git a/SOURCES/glibc-upstream-2.39-17.patch b/SOURCES/glibc-upstream-2.39-17.patch
new file mode 100644
index 0000000..050355c
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-17.patch
@@ -0,0 +1,221 @@
+commit aded2fc004e7ee85cf0b45b1382552d41e555a23
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Tue Mar 12 13:21:20 2024 -0300
+
+    elf: Enable TLS descriptor tests on aarch64
+    
+    The aarch64 uses 'trad' for traditional tls and 'desc' for tls
+    descriptors, but unlike other targets it defaults to 'desc'.  The
+    gnutls2 configure check does not set aarch64 as an ABI that uses
+    TLS descriptors, which then disable somes stests.
+    
+    Also rename the internal machinery fron gnu2 to tls descriptors.
+    
+    Checked on aarch64-linux-gnu.
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    
+    (cherry picked from commit 3d53d18fc71c5d9ef4773b8bce04d54b80181926)
+
+diff --git a/configure b/configure
+index 117b48a421792eda..432e40a59295cffd 100755
+--- a/configure
++++ b/configure
+@@ -653,7 +653,7 @@ LIBGD
+ libc_cv_cc_loop_to_function
+ libc_cv_cc_submachine
+ libc_cv_cc_nofma
+-libc_cv_mtls_dialect_gnu2
++libc_cv_mtls_descriptor
+ libc_cv_has_glob_dat
+ libc_cv_fpie
+ libc_cv_z_execstack
+@@ -4760,6 +4760,9 @@ libc_config_ok=no
+ # whether to use such directories.
+ with_fp_cond=1
+ 
++# A preconfigure script may define another name to TLS descriptor variant
++mtls_descriptor=gnu2
++
+ if frags=`ls -d $srcdir/sysdeps/*/preconfigure 2> /dev/null`
+ then
+   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysdeps preconfigure fragments" >&5
+@@ -7006,9 +7009,9 @@ fi
+ printf "%s\n" "$libc_cv_has_glob_dat" >&6; }
+ 
+ 
+-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -mtls-dialect=gnu2" >&5
+-printf %s "checking for -mtls-dialect=gnu2... " >&6; }
+-if test ${libc_cv_mtls_dialect_gnu2+y}
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tls descriptor support" >&5
++printf %s "checking for tls descriptor support... " >&6; }
++if test ${libc_cv_mtls_descriptor+y}
+ then :
+   printf %s "(cached) " >&6
+ else $as_nop
+@@ -7019,7 +7022,7 @@ void foo (void)
+   i = 10;
+ }
+ EOF
+-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=gnu2 -nostdlib -nostartfiles
++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=$mtls_descriptor -nostdlib -nostartfiles
+ 		   -shared conftest.c -o conftest 1>&5'
+   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+   (eval $ac_try) 2>&5
+@@ -7027,17 +7030,17 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=gnu2 -nostdlib -nost
+   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }; }
+ then
+-  libc_cv_mtls_dialect_gnu2=yes
++  libc_cv_mtls_descriptor=$mtls_descriptor
+ else
+-  libc_cv_mtls_dialect_gnu2=no
++  libc_cv_mtls_descriptor=no
+ fi
+ rm -f conftest*
+ fi
+-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mtls_dialect_gnu2" >&5
+-printf "%s\n" "$libc_cv_mtls_dialect_gnu2" >&6; }
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mtls_descriptor" >&5
++printf "%s\n" "$libc_cv_mtls_descriptor" >&6; }
+ 
+ config_vars="$config_vars
+-have-mtls-dialect-gnu2 = $libc_cv_mtls_dialect_gnu2"
++have-mtls-descriptor = $libc_cv_mtls_descriptor"
+ 
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if -Wno-ignored-attributes is required for aliases" >&5
+ printf %s "checking if -Wno-ignored-attributes is required for aliases... " >&6; }
+diff --git a/configure.ac b/configure.ac
+index 19b88a47a52508a1..bdc385d03c3dc7f5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -442,6 +442,9 @@ libc_config_ok=no
+ # whether to use such directories.
+ with_fp_cond=1
+ 
++# A preconfigure script may define another name to TLS descriptor variant
++mtls_descriptor=gnu2
++
+ dnl Let sysdeps/*/preconfigure act here.
+ LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
+ 
+@@ -1287,7 +1290,7 @@ fi
+ rm -f conftest*])
+ AC_SUBST(libc_cv_has_glob_dat)
+ 
+-AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
++AC_CACHE_CHECK([for tls descriptor support], libc_cv_mtls_descriptor,
+ [dnl
+ cat > conftest.c <<EOF
+ __thread int i;
+@@ -1296,16 +1299,16 @@ void foo (void)
+   i = 10;
+ }
+ EOF
+-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=gnu2 -nostdlib -nostartfiles
++if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=$mtls_descriptor -nostdlib -nostartfiles
+ 		   -shared conftest.c -o conftest 1>&AS_MESSAGE_LOG_FD])
+ then
+-  libc_cv_mtls_dialect_gnu2=yes
++  libc_cv_mtls_descriptor=$mtls_descriptor
+ else
+-  libc_cv_mtls_dialect_gnu2=no
++  libc_cv_mtls_descriptor=no
+ fi
+ rm -f conftest*])
+-AC_SUBST(libc_cv_mtls_dialect_gnu2)
+-LIBC_CONFIG_VAR([have-mtls-dialect-gnu2], [$libc_cv_mtls_dialect_gnu2])
++AC_SUBST(libc_cv_mtls_descriptor)
++LIBC_CONFIG_VAR([have-mtls-descriptor], [$libc_cv_mtls_descriptor])
+ 
+ dnl clang emits an warning for a double alias redirection, to warn the
+ dnl original symbol is sed even when weak definition overrides it.
+diff --git a/elf/Makefile b/elf/Makefile
+index 030db4d207d3491e..69aa423c4b90127d 100644
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -999,13 +999,13 @@ modules-names-tests = $(filter-out ifuncmod% tst-tlsmod%,\
+ # For +depfiles in Makerules.
+ extra-test-objs += tst-auditmod17.os
+ 
+-ifeq (yes,$(have-mtls-dialect-gnu2))
++ifneq (no,$(have-mtls-descriptor))
+ tests += tst-gnu2-tls1
+ modules-names += tst-gnu2-tls1mod
+ $(objpfx)tst-gnu2-tls1: $(objpfx)tst-gnu2-tls1mod.so
+ tst-gnu2-tls1mod.so-no-z-defs = yes
+-CFLAGS-tst-gnu2-tls1mod.c += -mtls-dialect=gnu2
+-endif # $(have-mtls-dialect-gnu2)
++CFLAGS-tst-gnu2-tls1mod.c += -mtls-dialect=$(have-mtls-descriptor)
++endif # $(have-mtls-descriptor)
+ 
+ ifeq (yes,$(have-protected-data))
+ modules-names += tst-protected1moda tst-protected1modb
+@@ -2972,11 +2972,11 @@ $(objpfx)tst-tls-allocation-failure-static-patched.out: \
+ $(objpfx)tst-audit-tlsdesc: $(objpfx)tst-audit-tlsdesc-mod1.so \
+ 			    $(objpfx)tst-audit-tlsdesc-mod2.so \
+ 			    $(shared-thread-library)
+-ifeq (yes,$(have-mtls-dialect-gnu2))
++ifneq (no,$(have-mtls-descriptor))
+ # The test is valid for all TLS types, but we want to exercise GNU2
+ # TLS if possible.
+-CFLAGS-tst-audit-tlsdesc-mod1.c += -mtls-dialect=gnu2
+-CFLAGS-tst-audit-tlsdesc-mod2.c += -mtls-dialect=gnu2
++CFLAGS-tst-audit-tlsdesc-mod1.c += -mtls-dialect=$(have-mtls-descriptor)
++CFLAGS-tst-audit-tlsdesc-mod2.c += -mtls-dialect=$(have-mtls-descriptor)
+ endif
+ $(objpfx)tst-audit-tlsdesc-dlopen: $(shared-thread-library)
+ $(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-audit-tlsdesc-mod1.so \
+@@ -3055,11 +3055,11 @@ $(objpfx)tst-gnu2-tls2.out: \
+   $(objpfx)tst-gnu2-tls2mod1.so \
+   $(objpfx)tst-gnu2-tls2mod2.so
+ 
+-ifeq (yes,$(have-mtls-dialect-gnu2))
+-CFLAGS-tst-tlsgap-mod0.c += -mtls-dialect=gnu2
+-CFLAGS-tst-tlsgap-mod1.c += -mtls-dialect=gnu2
+-CFLAGS-tst-tlsgap-mod2.c += -mtls-dialect=gnu2
+-CFLAGS-tst-gnu2-tls2mod0.c += -mtls-dialect=gnu2
+-CFLAGS-tst-gnu2-tls2mod1.c += -mtls-dialect=gnu2
+-CFLAGS-tst-gnu2-tls2mod2.c += -mtls-dialect=gnu2
++ifneq (no,$(have-mtls-descriptor))
++CFLAGS-tst-tlsgap-mod0.c += -mtls-dialect=$(have-mtls-descriptor)
++CFLAGS-tst-tlsgap-mod1.c += -mtls-dialect=$(have-mtls-descriptor)
++CFLAGS-tst-tlsgap-mod2.c += -mtls-dialect=$(have-mtls-descriptor)
++CFLAGS-tst-gnu2-tls2mod0.c += -mtls-dialect=$(have-mtls-descriptor)
++CFLAGS-tst-gnu2-tls2mod1.c += -mtls-dialect=$(have-mtls-descriptor)
++CFLAGS-tst-gnu2-tls2mod2.c += -mtls-dialect=$(have-mtls-descriptor)
+ endif
+diff --git a/sysdeps/aarch64/preconfigure b/sysdeps/aarch64/preconfigure
+index d9bd1f8558a079cb..19657b627bc84c4e 100644
+--- a/sysdeps/aarch64/preconfigure
++++ b/sysdeps/aarch64/preconfigure
+@@ -2,5 +2,6 @@ case "$machine" in
+ aarch64*)
+ 	base_machine=aarch64
+ 	machine=aarch64
++	mtls_descriptor=desc
+ 	;;
+ esac
+diff --git a/sysdeps/arm/Makefile b/sysdeps/arm/Makefile
+index d5cea717a9c201aa..619474eca94fe8e4 100644
+--- a/sysdeps/arm/Makefile
++++ b/sysdeps/arm/Makefile
+@@ -13,15 +13,15 @@ $(objpfx)libgcc-stubs.a: $(objpfx)aeabi_unwind_cpp_pr1.os
+ lib-noranlib: $(objpfx)libgcc-stubs.a
+ 
+ ifeq ($(build-shared),yes)
+-ifeq (yes,$(have-mtls-dialect-gnu2))
++ifneq (no,$(have-mtls-descriptor))
+ tests += tst-armtlsdescloc tst-armtlsdescextnow tst-armtlsdescextlazy
+ modules-names += tst-armtlsdesclocmod
+ modules-names += tst-armtlsdescextlazymod tst-armtlsdescextnowmod
+ CPPFLAGS-tst-armtlsdescextnowmod.c += -Dstatic=
+ CPPFLAGS-tst-armtlsdescextlazymod.c += -Dstatic=
+-CFLAGS-tst-armtlsdesclocmod.c += -mtls-dialect=gnu2
+-CFLAGS-tst-armtlsdescextnowmod.c += -mtls-dialect=gnu2
+-CFLAGS-tst-armtlsdescextlazymod.c += -mtls-dialect=gnu2
++CFLAGS-tst-armtlsdesclocmod.c += -mtls-dialect=$(have-mtls-descriptor)
++CFLAGS-tst-armtlsdescextnowmod.c += -mtls-dialect=$(have-mtls-descriptor)
++CFLAGS-tst-armtlsdescextlazymod.c += -mtls-dialect=$(have-mtls-descriptor)
+ LDFLAGS-tst-armtlsdescextnowmod.so += -Wl,-z,now
+ tst-armtlsdescloc-ENV = LD_BIND_NOW=1
+ tst-armtlsdescextnow-ENV = LD_BIND_NOW=1
diff --git a/SOURCES/glibc-upstream-2.39-18.patch b/SOURCES/glibc-upstream-2.39-18.patch
new file mode 100644
index 0000000..60a31ff
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-18.patch
@@ -0,0 +1,24 @@
+commit 5a461f2949ded98d8211939f84988bc464c7b4fe
+Author: Andreas Schwab <schwab@suse.de>
+Date:   Tue Mar 19 13:49:50 2024 +0100
+
+    Add tst-gnu2-tls2mod1 to test-internal-extras
+    
+    That allows sysdeps/x86_64/tst-gnu2-tls2mod1.S to use internal headers.
+    
+    Fixes: 717ebfa85c ("x86-64: Allocate state buffer space for RDI, RSI and RBX")
+    (cherry picked from commit fd7ee2e6c5eb49e4a630a9978b4d668bff6354ee)
+
+diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile
+index e8babc9a4edbf90b..9d374a329916fc45 100644
+--- a/sysdeps/x86_64/Makefile
++++ b/sysdeps/x86_64/Makefile
+@@ -210,6 +210,8 @@ tst-plt-rewrite2-ENV = GLIBC_TUNABLES=glibc.cpu.plt_rewrite=2
+ $(objpfx)tst-plt-rewrite2: $(objpfx)tst-plt-rewritemod2.so
+ endif
+ 
++test-internal-extras += tst-gnu2-tls2mod1
++
+ endif # $(subdir) == elf
+ 
+ ifeq ($(subdir),csu)
diff --git a/SOURCES/glibc-upstream-2.39-19.patch b/SOURCES/glibc-upstream-2.39-19.patch
new file mode 100644
index 0000000..fa9220e
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-19.patch
@@ -0,0 +1,146 @@
+commit aa4249266e9906c4bc833e4847f4d8feef59504f
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Thu Feb 8 10:08:38 2024 -0300
+
+    x86: Fix Zen3/Zen4 ERMS selection (BZ 30994)
+    
+    The REP MOVSB usage on memcpy/memmove does not show much performance
+    improvement on Zen3/Zen4 cores compared to the vectorized loops.  Also,
+    as from BZ 30994, if the source is aligned and the destination is not
+    the performance can be 20x slower.
+    
+    The performance difference is noticeable with small buffer sizes, closer
+    to the lower bounds limits when memcpy/memmove starts to use ERMS.  The
+    performance of REP MOVSB is similar to vectorized instruction on the
+    size limit (the L2 cache).  Also, there is no drawback to multiple cores
+    sharing the cache.
+    
+    Checked on x86_64-linux-gnu on Zen3.
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    
+    (cherry picked from commit 0c0d39fe4aeb0f69b26e76337c5dfd5530d5d44e)
+
+diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h
+index d5101615e348e5c2..f34d12846caf9422 100644
+--- a/sysdeps/x86/dl-cacheinfo.h
++++ b/sysdeps/x86/dl-cacheinfo.h
+@@ -791,7 +791,6 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+   long int data = -1;
+   long int shared = -1;
+   long int shared_per_thread = -1;
+-  long int core = -1;
+   unsigned int threads = 0;
+   unsigned long int level1_icache_size = -1;
+   unsigned long int level1_icache_linesize = -1;
+@@ -809,7 +808,6 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+   if (cpu_features->basic.kind == arch_kind_intel)
+     {
+       data = handle_intel (_SC_LEVEL1_DCACHE_SIZE, cpu_features);
+-      core = handle_intel (_SC_LEVEL2_CACHE_SIZE, cpu_features);
+       shared = handle_intel (_SC_LEVEL3_CACHE_SIZE, cpu_features);
+       shared_per_thread = shared;
+ 
+@@ -822,7 +820,8 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+ 	= handle_intel (_SC_LEVEL1_DCACHE_ASSOC, cpu_features);
+       level1_dcache_linesize
+ 	= handle_intel (_SC_LEVEL1_DCACHE_LINESIZE, cpu_features);
+-      level2_cache_size = core;
++      level2_cache_size
++	= handle_intel (_SC_LEVEL2_CACHE_SIZE, cpu_features);
+       level2_cache_assoc
+ 	= handle_intel (_SC_LEVEL2_CACHE_ASSOC, cpu_features);
+       level2_cache_linesize
+@@ -835,12 +834,12 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+       level4_cache_size
+ 	= handle_intel (_SC_LEVEL4_CACHE_SIZE, cpu_features);
+ 
+-      get_common_cache_info (&shared, &shared_per_thread, &threads, core);
++      get_common_cache_info (&shared, &shared_per_thread, &threads,
++			     level2_cache_size);
+     }
+   else if (cpu_features->basic.kind == arch_kind_zhaoxin)
+     {
+       data = handle_zhaoxin (_SC_LEVEL1_DCACHE_SIZE);
+-      core = handle_zhaoxin (_SC_LEVEL2_CACHE_SIZE);
+       shared = handle_zhaoxin (_SC_LEVEL3_CACHE_SIZE);
+       shared_per_thread = shared;
+ 
+@@ -849,19 +848,19 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+       level1_dcache_size = data;
+       level1_dcache_assoc = handle_zhaoxin (_SC_LEVEL1_DCACHE_ASSOC);
+       level1_dcache_linesize = handle_zhaoxin (_SC_LEVEL1_DCACHE_LINESIZE);
+-      level2_cache_size = core;
++      level2_cache_size = handle_zhaoxin (_SC_LEVEL2_CACHE_SIZE);
+       level2_cache_assoc = handle_zhaoxin (_SC_LEVEL2_CACHE_ASSOC);
+       level2_cache_linesize = handle_zhaoxin (_SC_LEVEL2_CACHE_LINESIZE);
+       level3_cache_size = shared;
+       level3_cache_assoc = handle_zhaoxin (_SC_LEVEL3_CACHE_ASSOC);
+       level3_cache_linesize = handle_zhaoxin (_SC_LEVEL3_CACHE_LINESIZE);
+ 
+-      get_common_cache_info (&shared, &shared_per_thread, &threads, core);
++      get_common_cache_info (&shared, &shared_per_thread, &threads,
++			     level2_cache_size);
+     }
+   else if (cpu_features->basic.kind == arch_kind_amd)
+     {
+       data = handle_amd (_SC_LEVEL1_DCACHE_SIZE);
+-      core = handle_amd (_SC_LEVEL2_CACHE_SIZE);
+       shared = handle_amd (_SC_LEVEL3_CACHE_SIZE);
+ 
+       level1_icache_size = handle_amd (_SC_LEVEL1_ICACHE_SIZE);
+@@ -869,7 +868,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+       level1_dcache_size = data;
+       level1_dcache_assoc = handle_amd (_SC_LEVEL1_DCACHE_ASSOC);
+       level1_dcache_linesize = handle_amd (_SC_LEVEL1_DCACHE_LINESIZE);
+-      level2_cache_size = core;
++      level2_cache_size = handle_amd (_SC_LEVEL2_CACHE_SIZE);;
+       level2_cache_assoc = handle_amd (_SC_LEVEL2_CACHE_ASSOC);
+       level2_cache_linesize = handle_amd (_SC_LEVEL2_CACHE_LINESIZE);
+       level3_cache_size = shared;
+@@ -880,12 +879,12 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+       if (shared <= 0)
+         {
+            /* No shared L3 cache.  All we have is the L2 cache.  */
+-           shared = core;
++           shared = level2_cache_size;
+         }
+       else if (cpu_features->basic.family < 0x17)
+         {
+            /* Account for exclusive L2 and L3 caches.  */
+-           shared += core;
++           shared += level2_cache_size;
+         }
+ 
+       shared_per_thread = shared;
+@@ -987,6 +986,12 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+   if (CPU_FEATURE_USABLE_P (cpu_features, FSRM))
+     rep_movsb_threshold = 2112;
+ 
++   /* For AMD CPUs that support ERMS (Zen3+), REP MOVSB is in a lot of
++      cases slower than the vectorized path (and for some alignments,
++      it is really slow, check BZ #30994).  */
++  if (cpu_features->basic.kind == arch_kind_amd)
++    rep_movsb_threshold = non_temporal_threshold;
++
+   /* The default threshold to use Enhanced REP STOSB.  */
+   unsigned long int rep_stosb_threshold = 2048;
+ 
+@@ -1028,16 +1033,9 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+ 			   SIZE_MAX);
+ 
+   unsigned long int rep_movsb_stop_threshold;
+-  /* ERMS feature is implemented from AMD Zen3 architecture and it is
+-     performing poorly for data above L2 cache size. Henceforth, adding
+-     an upper bound threshold parameter to limit the usage of Enhanced
+-     REP MOVSB operations and setting its value to L2 cache size.  */
+-  if (cpu_features->basic.kind == arch_kind_amd)
+-    rep_movsb_stop_threshold = core;
+   /* Setting the upper bound of ERMS to the computed value of
+-     non-temporal threshold for architectures other than AMD.  */
+-  else
+-    rep_movsb_stop_threshold = non_temporal_threshold;
++     non-temporal threshold for all architectures.  */
++  rep_movsb_stop_threshold = non_temporal_threshold;
+ 
+   cpu_features->data_cache_size = data;
+   cpu_features->shared_cache_size = shared;
diff --git a/SOURCES/glibc-upstream-2.39-2.patch b/SOURCES/glibc-upstream-2.39-2.patch
new file mode 100644
index 0000000..77deb04
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-2.patch
@@ -0,0 +1,35 @@
+commit 63295e4fda1f6dab4bf7442706fe303bf283036c
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Mon Feb 5 16:10:24 2024 +0000
+
+    arm: Remove wrong ldr from _dl_start_user (BZ 31339)
+    
+    The commit 49d877a80b29d3002887b084eec6676d9f5fec18 (arm: Remove
+    _dl_skip_args usage) removed the _SKIP_ARGS literal, which was
+    previously loader to r4 on loader _start.  However, the cleanup did not
+    remove the following 'ldr r4, [sl, r4]' on _dl_start_user, used to check
+    to skip the arguments after ld self-relocations.
+    
+    In my testing, the kernel initially set r4 to 0, which makes the
+    ldr instruction just read the _GLOBAL_OFFSET_TABLE_.  However, since r4
+    is a callee-saved register; a different runtime might not zero
+    initialize it and thus trigger an invalid memory access.
+    
+    Checked on arm-linux-gnu.
+    
+    Reported-by: Adrian Ratiu <adrian.ratiu@collabora.com>
+    Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
+    (cherry picked from commit 1e25112dc0cb2515d27d8d178b1ecce778a9d37a)
+
+diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h
+index b857bbc868ea2ce4..dd1a0f6b6e7a5ea8 100644
+--- a/sysdeps/arm/dl-machine.h
++++ b/sysdeps/arm/dl-machine.h
+@@ -139,7 +139,6 @@ _start:\n\
+ _dl_start_user:\n\
+ 	adr	r6, .L_GET_GOT\n\
+ 	add	sl, sl, r6\n\
+-	ldr	r4, [sl, r4]\n\
+ 	@ save the entry point in another register\n\
+ 	mov	r6, r0\n\
+ 	@ get the original arg count\n\
diff --git a/SOURCES/glibc-upstream-2.39-20.patch b/SOURCES/glibc-upstream-2.39-20.patch
new file mode 100644
index 0000000..3aac665
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-20.patch
@@ -0,0 +1,30 @@
+commit 6484a92698039c4a7a510f0214e22d067b0d78b3
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Thu Feb 8 10:08:39 2024 -0300
+
+    x86: Do not prefer ERMS for memset on Zen3+
+    
+    For AMD Zen3+ architecture, the performance of the vectorized loop is
+    slightly better than ERMS.
+    
+    Checked on x86_64-linux-gnu on Zen3.
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    
+    (cherry picked from commit 272708884cb750f12f5c74a00e6620c19dc6d567)
+
+diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h
+index f34d12846caf9422..5a98f70364220da4 100644
+--- a/sysdeps/x86/dl-cacheinfo.h
++++ b/sysdeps/x86/dl-cacheinfo.h
+@@ -1021,6 +1021,11 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+      minimum value is fixed.  */
+   rep_stosb_threshold = TUNABLE_GET (x86_rep_stosb_threshold,
+ 				     long int, NULL);
++  if (cpu_features->basic.kind == arch_kind_amd
++      && !TUNABLE_IS_INITIALIZED (x86_rep_stosb_threshold))
++    /* For AMD Zen3+ architecture, the performance of the vectorized loop is
++       slightly better than ERMS.  */
++    rep_stosb_threshold = SIZE_MAX;
+ 
+   TUNABLE_SET_WITH_BOUNDS (x86_data_cache_size, data, 0, SIZE_MAX);
+   TUNABLE_SET_WITH_BOUNDS (x86_shared_cache_size, shared, 0, SIZE_MAX);
diff --git a/SOURCES/glibc-upstream-2.39-21.patch b/SOURCES/glibc-upstream-2.39-21.patch
new file mode 100644
index 0000000..6ceb90c
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-21.patch
@@ -0,0 +1,24 @@
+commit 5d070d12b3a52bc44dd1b71743abc4b6243862ae
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Thu Feb 8 10:08:40 2024 -0300
+
+    x86: Expand the comment on when REP STOSB is used on memset
+    
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    (cherry picked from commit 491e55beab7457ed310a4a47496f4a333c5d1032)
+
+diff --git a/sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S b/sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S
+index 9984c3ca0fafab6a..97839a22483b0613 100644
+--- a/sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S
++++ b/sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S
+@@ -21,7 +21,9 @@
+    2. If size is less than VEC, use integer register stores.
+    3. If size is from VEC_SIZE to 2 * VEC_SIZE, use 2 VEC stores.
+    4. If size is from 2 * VEC_SIZE to 4 * VEC_SIZE, use 4 VEC stores.
+-   5. If size is more to 4 * VEC_SIZE, align to 4 * VEC_SIZE with
++   5. On machines ERMS feature, if size is greater or equal than
++      __x86_rep_stosb_threshold then REP STOSB will be used.
++   6. If size is more to 4 * VEC_SIZE, align to 4 * VEC_SIZE with
+       4 VEC stores and store 4 * VEC at a time until done.  */
+ 
+ #include <sysdep.h>
diff --git a/SOURCES/glibc-upstream-2.39-22.patch b/SOURCES/glibc-upstream-2.39-22.patch
new file mode 100644
index 0000000..fb7281f
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-22.patch
@@ -0,0 +1,32 @@
+commit 31c7d69af59da0da80caa74b2ec6ae149013384d
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Fri Feb 16 07:40:37 2024 +0100
+
+    i386: Use generic memrchr in libc (bug 31316)
+    
+    Before this change, we incorrectly used the SSE2 variant in the
+    implementation, without checking that the system actually supports
+    SSE2.
+    
+    Tested-by: Sam James <sam@gentoo.org>
+    (cherry picked from commit 0d9166c2245cad4ac520b337dee40c9a583872b6)
+
+diff --git a/sysdeps/i386/i686/multiarch/memrchr-c.c b/sysdeps/i386/i686/multiarch/memrchr-c.c
+index ef7bbbe792afc78e..20bfdf3af35b66e4 100644
+--- a/sysdeps/i386/i686/multiarch/memrchr-c.c
++++ b/sysdeps/i386/i686/multiarch/memrchr-c.c
+@@ -5,3 +5,4 @@ extern void *__memrchr_ia32 (const void *, int, size_t);
+ #endif
+ 
+ #include "string/memrchr.c"
++strong_alias (__memrchr_ia32, __GI___memrchr)
+diff --git a/sysdeps/i386/i686/multiarch/memrchr-sse2.S b/sysdeps/i386/i686/multiarch/memrchr-sse2.S
+index d9dae04171bfedff..e123f87435b3c6a6 100644
+--- a/sysdeps/i386/i686/multiarch/memrchr-sse2.S
++++ b/sysdeps/i386/i686/multiarch/memrchr-sse2.S
+@@ -720,5 +720,4 @@ L(ret_null):
+ 	ret
+ 
+ END (__memrchr_sse2)
+-strong_alias (__memrchr_sse2, __GI___memrchr)
+ #endif
diff --git a/SOURCES/glibc-upstream-2.39-23.patch b/SOURCES/glibc-upstream-2.39-23.patch
new file mode 100644
index 0000000..11773cf
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-23.patch
@@ -0,0 +1,669 @@
+commit b0e0a07018098c2c5927796be5681a298c312626
+Author: Joe Ramsay <Joe.Ramsay@arm.com>
+Date:   Tue Feb 20 16:44:13 2024 +0000
+
+    aarch64/fpu: Sync libmvec routines from 2.39 and before with AOR
+    
+    This includes a fix for big-endian in AdvSIMD log, some cosmetic
+    changes, and numerous small optimisations mainly around inlining and
+    using indexed variants of MLA intrinsics.
+    Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+    
+    (cherry picked from commit e302e1021391d13a9611ba3a910df128830bd19e)
+
+diff --git a/sysdeps/aarch64/fpu/acos_advsimd.c b/sysdeps/aarch64/fpu/acos_advsimd.c
+index a8eabb5e7155360f..0a86c9823a279766 100644
+--- a/sysdeps/aarch64/fpu/acos_advsimd.c
++++ b/sysdeps/aarch64/fpu/acos_advsimd.c
+@@ -40,8 +40,8 @@ static const struct data
+ };
+ 
+ #define AllMask v_u64 (0xffffffffffffffff)
+-#define Oneu (0x3ff0000000000000)
+-#define Small (0x3e50000000000000) /* 2^-53.  */
++#define Oneu 0x3ff0000000000000
++#define Small 0x3e50000000000000 /* 2^-53.  */
+ 
+ #if WANT_SIMD_EXCEPT
+ static float64x2_t VPCS_ATTR NOINLINE
+diff --git a/sysdeps/aarch64/fpu/asin_advsimd.c b/sysdeps/aarch64/fpu/asin_advsimd.c
+index 141646e954aa8ba1..2de6eff40782bc79 100644
+--- a/sysdeps/aarch64/fpu/asin_advsimd.c
++++ b/sysdeps/aarch64/fpu/asin_advsimd.c
+@@ -39,8 +39,8 @@ static const struct data
+ };
+ 
+ #define AllMask v_u64 (0xffffffffffffffff)
+-#define One (0x3ff0000000000000)
+-#define Small (0x3e50000000000000) /* 2^-12.  */
++#define One 0x3ff0000000000000
++#define Small 0x3e50000000000000 /* 2^-12.  */
+ 
+ #if WANT_SIMD_EXCEPT
+ static float64x2_t VPCS_ATTR NOINLINE
+diff --git a/sysdeps/aarch64/fpu/atan2_sve.c b/sysdeps/aarch64/fpu/atan2_sve.c
+index 09a4c559b8afbe95..04fa71fa37c3de29 100644
+--- a/sysdeps/aarch64/fpu/atan2_sve.c
++++ b/sysdeps/aarch64/fpu/atan2_sve.c
+@@ -37,9 +37,6 @@ static const struct data
+   .pi_over_2 = 0x1.921fb54442d18p+0,
+ };
+ 
+-/* Useful constants.  */
+-#define SignMask sv_u64 (0x8000000000000000)
+-
+ /* Special cases i.e. 0, infinity, nan (fall back to scalar calls).  */
+ static svfloat64_t NOINLINE
+ special_case (svfloat64_t y, svfloat64_t x, svfloat64_t ret,
+@@ -72,14 +69,15 @@ svfloat64_t SV_NAME_D2 (atan2) (svfloat64_t y, svfloat64_t x, const svbool_t pg)
+   svbool_t cmp_y = zeroinfnan (iy, pg);
+   svbool_t cmp_xy = svorr_z (pg, cmp_x, cmp_y);
+ 
+-  svuint64_t sign_x = svand_x (pg, ix, SignMask);
+-  svuint64_t sign_y = svand_x (pg, iy, SignMask);
+-  svuint64_t sign_xy = sveor_x (pg, sign_x, sign_y);
+-
+   svfloat64_t ax = svabs_x (pg, x);
+   svfloat64_t ay = svabs_x (pg, y);
++  svuint64_t iax = svreinterpret_u64 (ax);
++  svuint64_t iay = svreinterpret_u64 (ay);
++
++  svuint64_t sign_x = sveor_x (pg, ix, iax);
++  svuint64_t sign_y = sveor_x (pg, iy, iay);
++  svuint64_t sign_xy = sveor_x (pg, sign_x, sign_y);
+ 
+-  svbool_t pred_xlt0 = svcmplt (pg, x, 0.0);
+   svbool_t pred_aygtax = svcmpgt (pg, ay, ax);
+ 
+   /* Set up z for call to atan.  */
+@@ -88,8 +86,9 @@ svfloat64_t SV_NAME_D2 (atan2) (svfloat64_t y, svfloat64_t x, const svbool_t pg)
+   svfloat64_t z = svdiv_x (pg, n, d);
+ 
+   /* Work out the correct shift.  */
+-  svfloat64_t shift = svsel (pred_xlt0, sv_f64 (-2.0), sv_f64 (0.0));
+-  shift = svsel (pred_aygtax, svadd_x (pg, shift, 1.0), shift);
++  svfloat64_t shift = svreinterpret_f64 (svlsr_x (pg, sign_x, 1));
++  shift = svsel (pred_aygtax, sv_f64 (1.0), shift);
++  shift = svreinterpret_f64 (svorr_x (pg, sign_x, svreinterpret_u64 (shift)));
+   shift = svmul_x (pg, shift, data_ptr->pi_over_2);
+ 
+   /* Use split Estrin scheme for P(z^2) with deg(P)=19.  */
+@@ -109,10 +108,10 @@ svfloat64_t SV_NAME_D2 (atan2) (svfloat64_t y, svfloat64_t x, const svbool_t pg)
+   ret = svadd_m (pg, ret, shift);
+ 
+   /* Account for the sign of x and y.  */
+-  ret = svreinterpret_f64 (sveor_x (pg, svreinterpret_u64 (ret), sign_xy));
+-
+   if (__glibc_unlikely (svptest_any (pg, cmp_xy)))
+-    return special_case (y, x, ret, cmp_xy);
+-
+-  return ret;
++    return special_case (
++	y, x,
++	svreinterpret_f64 (sveor_x (pg, svreinterpret_u64 (ret), sign_xy)),
++	cmp_xy);
++  return svreinterpret_f64 (sveor_x (pg, svreinterpret_u64 (ret), sign_xy));
+ }
+diff --git a/sysdeps/aarch64/fpu/atan2f_sve.c b/sysdeps/aarch64/fpu/atan2f_sve.c
+index b92f83cdea4fb2da..9ea197147ccca0ac 100644
+--- a/sysdeps/aarch64/fpu/atan2f_sve.c
++++ b/sysdeps/aarch64/fpu/atan2f_sve.c
+@@ -32,10 +32,8 @@ static const struct data
+   .pi_over_2 = 0x1.921fb6p+0f,
+ };
+ 
+-#define SignMask sv_u32 (0x80000000)
+-
+ /* Special cases i.e. 0, infinity, nan (fall back to scalar calls).  */
+-static inline svfloat32_t
++static svfloat32_t NOINLINE
+ special_case (svfloat32_t y, svfloat32_t x, svfloat32_t ret,
+ 	      const svbool_t cmp)
+ {
+@@ -67,14 +65,15 @@ svfloat32_t SV_NAME_F2 (atan2) (svfloat32_t y, svfloat32_t x, const svbool_t pg)
+   svbool_t cmp_y = zeroinfnan (iy, pg);
+   svbool_t cmp_xy = svorr_z (pg, cmp_x, cmp_y);
+ 
+-  svuint32_t sign_x = svand_x (pg, ix, SignMask);
+-  svuint32_t sign_y = svand_x (pg, iy, SignMask);
+-  svuint32_t sign_xy = sveor_x (pg, sign_x, sign_y);
+-
+   svfloat32_t ax = svabs_x (pg, x);
+   svfloat32_t ay = svabs_x (pg, y);
++  svuint32_t iax = svreinterpret_u32 (ax);
++  svuint32_t iay = svreinterpret_u32 (ay);
++
++  svuint32_t sign_x = sveor_x (pg, ix, iax);
++  svuint32_t sign_y = sveor_x (pg, iy, iay);
++  svuint32_t sign_xy = sveor_x (pg, sign_x, sign_y);
+ 
+-  svbool_t pred_xlt0 = svcmplt (pg, x, 0.0);
+   svbool_t pred_aygtax = svcmpgt (pg, ay, ax);
+ 
+   /* Set up z for call to atan.  */
+@@ -83,11 +82,12 @@ svfloat32_t SV_NAME_F2 (atan2) (svfloat32_t y, svfloat32_t x, const svbool_t pg)
+   svfloat32_t z = svdiv_x (pg, n, d);
+ 
+   /* Work out the correct shift.  */
+-  svfloat32_t shift = svsel (pred_xlt0, sv_f32 (-2.0), sv_f32 (0.0));
+-  shift = svsel (pred_aygtax, svadd_x (pg, shift, 1.0), shift);
++  svfloat32_t shift = svreinterpret_f32 (svlsr_x (pg, sign_x, 1));
++  shift = svsel (pred_aygtax, sv_f32 (1.0), shift);
++  shift = svreinterpret_f32 (svorr_x (pg, sign_x, svreinterpret_u32 (shift)));
+   shift = svmul_x (pg, shift, sv_f32 (data_ptr->pi_over_2));
+ 
+-  /* Use split Estrin scheme for P(z^2) with deg(P)=7.  */
++  /* Use pure Estrin scheme for P(z^2) with deg(P)=7.  */
+   svfloat32_t z2 = svmul_x (pg, z, z);
+   svfloat32_t z4 = svmul_x (pg, z2, z2);
+   svfloat32_t z8 = svmul_x (pg, z4, z4);
+@@ -101,10 +101,12 @@ svfloat32_t SV_NAME_F2 (atan2) (svfloat32_t y, svfloat32_t x, const svbool_t pg)
+   ret = svadd_m (pg, ret, shift);
+ 
+   /* Account for the sign of x and y.  */
+-  ret = svreinterpret_f32 (sveor_x (pg, svreinterpret_u32 (ret), sign_xy));
+ 
+   if (__glibc_unlikely (svptest_any (pg, cmp_xy)))
+-    return special_case (y, x, ret, cmp_xy);
++    return special_case (
++	y, x,
++	svreinterpret_f32 (sveor_x (pg, svreinterpret_u32 (ret), sign_xy)),
++	cmp_xy);
+ 
+-  return ret;
++  return svreinterpret_f32 (sveor_x (pg, svreinterpret_u32 (ret), sign_xy));
+ }
+diff --git a/sysdeps/aarch64/fpu/cos_advsimd.c b/sysdeps/aarch64/fpu/cos_advsimd.c
+index 2897e8b909bbcb66..3924c9ce44c30d4d 100644
+--- a/sysdeps/aarch64/fpu/cos_advsimd.c
++++ b/sysdeps/aarch64/fpu/cos_advsimd.c
+@@ -63,8 +63,7 @@ float64x2_t VPCS_ATTR V_NAME_D1 (cos) (float64x2_t x)
+        special-case handler later.  */
+     r = vbslq_f64 (cmp, v_f64 (1.0), r);
+ #else
+-  cmp = vcageq_f64 (d->range_val, x);
+-  cmp = vceqzq_u64 (cmp); /* cmp = ~cmp.  */
++  cmp = vcageq_f64 (x, d->range_val);
+   r = x;
+ #endif
+ 
+diff --git a/sysdeps/aarch64/fpu/cosf_advsimd.c b/sysdeps/aarch64/fpu/cosf_advsimd.c
+index 60abc8dfcfff9ed4..d0c285b03a8bfe22 100644
+--- a/sysdeps/aarch64/fpu/cosf_advsimd.c
++++ b/sysdeps/aarch64/fpu/cosf_advsimd.c
+@@ -64,8 +64,7 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (cos) (float32x4_t x)
+        special-case handler later.  */
+     r = vbslq_f32 (cmp, v_f32 (1.0f), r);
+ #else
+-  cmp = vcageq_f32 (d->range_val, x);
+-  cmp = vceqzq_u32 (cmp); /* cmp = ~cmp.  */
++  cmp = vcageq_f32 (x, d->range_val);
+   r = x;
+ #endif
+ 
+diff --git a/sysdeps/aarch64/fpu/exp10_advsimd.c b/sysdeps/aarch64/fpu/exp10_advsimd.c
+index fe7149b19176da21..eeb31ca839c1f671 100644
+--- a/sysdeps/aarch64/fpu/exp10_advsimd.c
++++ b/sysdeps/aarch64/fpu/exp10_advsimd.c
+@@ -57,7 +57,7 @@ const static struct data
+ # define BigBound v_u64 (0x4070000000000000)  /* asuint64 (0x1p8).  */
+ # define Thres v_u64 (0x2070000000000000)     /* BigBound - TinyBound.  */
+ 
+-static inline float64x2_t VPCS_ATTR
++static float64x2_t VPCS_ATTR NOINLINE
+ special_case (float64x2_t x, float64x2_t y, uint64x2_t cmp)
+ {
+   /* If fenv exceptions are to be triggered correctly, fall back to the scalar
+@@ -72,7 +72,7 @@ special_case (float64x2_t x, float64x2_t y, uint64x2_t cmp)
+ # define SpecialBias1 v_u64 (0x7000000000000000)  /* 0x1p769.  */
+ # define SpecialBias2 v_u64 (0x3010000000000000)  /* 0x1p-254.  */
+ 
+-static float64x2_t VPCS_ATTR NOINLINE
++static inline float64x2_t VPCS_ATTR
+ special_case (float64x2_t s, float64x2_t y, float64x2_t n,
+ 	      const struct data *d)
+ {
+diff --git a/sysdeps/aarch64/fpu/exp10f_advsimd.c b/sysdeps/aarch64/fpu/exp10f_advsimd.c
+index 7ee0c909487c32b7..ab117b69da23e5f3 100644
+--- a/sysdeps/aarch64/fpu/exp10f_advsimd.c
++++ b/sysdeps/aarch64/fpu/exp10f_advsimd.c
+@@ -25,7 +25,8 @@
+ static const struct data
+ {
+   float32x4_t poly[5];
+-  float32x4_t shift, log10_2, log2_10_hi, log2_10_lo;
++  float32x4_t log10_2_and_inv, shift;
++
+ #if !WANT_SIMD_EXCEPT
+   float32x4_t scale_thresh;
+ #endif
+@@ -38,9 +39,9 @@ static const struct data
+   .poly = { V4 (0x1.26bb16p+1f), V4 (0x1.5350d2p+1f), V4 (0x1.04744ap+1f),
+ 	    V4 (0x1.2d8176p+0f), V4 (0x1.12b41ap-1f) },
+   .shift = V4 (0x1.8p23f),
+-  .log10_2 = V4 (0x1.a934fp+1),
+-  .log2_10_hi = V4 (0x1.344136p-2),
+-  .log2_10_lo = V4 (-0x1.ec10cp-27),
++
++  /* Stores constants 1/log10(2), log10(2)_high, log10(2)_low, 0.  */
++  .log10_2_and_inv = { 0x1.a934fp+1, 0x1.344136p-2, -0x1.ec10cp-27, 0 },
+ #if !WANT_SIMD_EXCEPT
+   .scale_thresh = V4 (ScaleBound)
+ #endif
+@@ -98,24 +99,22 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (exp10) (float32x4_t x)
+ #if WANT_SIMD_EXCEPT
+   /* asuint(x) - TinyBound >= BigBound - TinyBound.  */
+   uint32x4_t cmp = vcgeq_u32 (
+-      vsubq_u32 (vandq_u32 (vreinterpretq_u32_f32 (x), v_u32 (0x7fffffff)),
+-		 TinyBound),
+-      Thres);
++      vsubq_u32 (vreinterpretq_u32_f32 (vabsq_f32 (x)), TinyBound), Thres);
+   float32x4_t xm = x;
+   /* If any lanes are special, mask them with 1 and retain a copy of x to allow
+      special case handler to fix special lanes later. This is only necessary if
+      fenv exceptions are to be triggered correctly.  */
+   if (__glibc_unlikely (v_any_u32 (cmp)))
+-    x = vbslq_f32 (cmp, v_f32 (1), x);
++    x = v_zerofy_f32 (x, cmp);
+ #endif
+ 
+   /* exp10(x) = 2^n * 10^r = 2^n * (1 + poly (r)),
+      with poly(r) in [1/sqrt(2), sqrt(2)] and
+      x = r + n * log10 (2), with r in [-log10(2)/2, log10(2)/2].  */
+-  float32x4_t z = vfmaq_f32 (d->shift, x, d->log10_2);
++  float32x4_t z = vfmaq_laneq_f32 (d->shift, x, d->log10_2_and_inv, 0);
+   float32x4_t n = vsubq_f32 (z, d->shift);
+-  float32x4_t r = vfmsq_f32 (x, n, d->log2_10_hi);
+-  r = vfmsq_f32 (r, n, d->log2_10_lo);
++  float32x4_t r = vfmsq_laneq_f32 (x, n, d->log10_2_and_inv, 1);
++  r = vfmsq_laneq_f32 (r, n, d->log10_2_and_inv, 2);
+   uint32x4_t e = vshlq_n_u32 (vreinterpretq_u32_f32 (z), 23);
+ 
+   float32x4_t scale = vreinterpretq_f32_u32 (vaddq_u32 (e, ExponentBias));
+diff --git a/sysdeps/aarch64/fpu/exp2_advsimd.c b/sysdeps/aarch64/fpu/exp2_advsimd.c
+index 391a93180c93427d..ae1e63d5030633d5 100644
+--- a/sysdeps/aarch64/fpu/exp2_advsimd.c
++++ b/sysdeps/aarch64/fpu/exp2_advsimd.c
+@@ -24,6 +24,7 @@
+ #define IndexMask (N - 1)
+ #define BigBound 1022.0
+ #define UOFlowBound 1280.0
++#define TinyBound 0x2000000000000000 /* asuint64(0x1p-511).  */
+ 
+ static const struct data
+ {
+@@ -48,14 +49,13 @@ lookup_sbits (uint64x2_t i)
+ 
+ #if WANT_SIMD_EXCEPT
+ 
+-# define TinyBound 0x2000000000000000 /* asuint64(0x1p-511).  */
+ # define Thres 0x2080000000000000     /* asuint64(512.0) - TinyBound.  */
+ 
+ /* Call scalar exp2 as a fallback.  */
+ static float64x2_t VPCS_ATTR NOINLINE
+-special_case (float64x2_t x)
++special_case (float64x2_t x, float64x2_t y, uint64x2_t is_special)
+ {
+-  return v_call_f64 (exp2, x, x, v_u64 (0xffffffffffffffff));
++  return v_call_f64 (exp2, x, y, is_special);
+ }
+ 
+ #else
+@@ -65,7 +65,7 @@ special_case (float64x2_t x)
+ # define SpecialBias1 0x7000000000000000 /* 0x1p769.  */
+ # define SpecialBias2 0x3010000000000000 /* 0x1p-254.  */
+ 
+-static float64x2_t VPCS_ATTR
++static inline float64x2_t VPCS_ATTR
+ special_case (float64x2_t s, float64x2_t y, float64x2_t n,
+ 	      const struct data *d)
+ {
+@@ -94,10 +94,10 @@ float64x2_t V_NAME_D1 (exp2) (float64x2_t x)
+ #if WANT_SIMD_EXCEPT
+   uint64x2_t ia = vreinterpretq_u64_f64 (vabsq_f64 (x));
+   cmp = vcgeq_u64 (vsubq_u64 (ia, v_u64 (TinyBound)), v_u64 (Thres));
+-  /* If any special case (inf, nan, small and large x) is detected,
+-     fall back to scalar for all lanes.  */
+-  if (__glibc_unlikely (v_any_u64 (cmp)))
+-    return special_case (x);
++  /* Mask special lanes and retain a copy of x for passing to special-case
++     handler.  */
++  float64x2_t xc = x;
++  x = v_zerofy_f64 (x, cmp);
+ #else
+   cmp = vcagtq_f64 (x, d->scale_big_bound);
+ #endif
+@@ -120,9 +120,11 @@ float64x2_t V_NAME_D1 (exp2) (float64x2_t x)
+   float64x2_t y = v_pairwise_poly_3_f64 (r, r2, d->poly);
+   y = vmulq_f64 (r, y);
+ 
+-#if !WANT_SIMD_EXCEPT
+   if (__glibc_unlikely (v_any_u64 (cmp)))
++#if !WANT_SIMD_EXCEPT
+     return special_case (s, y, n, d);
++#else
++    return special_case (xc, vfmaq_f64 (s, s, y), cmp);
+ #endif
+   return vfmaq_f64 (s, s, y);
+ }
+diff --git a/sysdeps/aarch64/fpu/exp2f_sve.c b/sysdeps/aarch64/fpu/exp2f_sve.c
+index 9a5a523a10280d1d..8a686e3e054cb7f5 100644
+--- a/sysdeps/aarch64/fpu/exp2f_sve.c
++++ b/sysdeps/aarch64/fpu/exp2f_sve.c
+@@ -20,6 +20,8 @@
+ #include "sv_math.h"
+ #include "poly_sve_f32.h"
+ 
++#define Thres 0x1.5d5e2ap+6f
++
+ static const struct data
+ {
+   float poly[5];
+@@ -33,7 +35,7 @@ static const struct data
+   .shift = 0x1.903f8p17f,
+   /* Roughly 87.3. For x < -Thres, the result is subnormal and not handled
+      correctly by FEXPA.  */
+-  .thres = 0x1.5d5e2ap+6f,
++  .thres = Thres,
+ };
+ 
+ static svfloat32_t NOINLINE
+diff --git a/sysdeps/aarch64/fpu/exp_advsimd.c b/sysdeps/aarch64/fpu/exp_advsimd.c
+index fd215f1d2c5e9eea..5e3a9a0d44a43656 100644
+--- a/sysdeps/aarch64/fpu/exp_advsimd.c
++++ b/sysdeps/aarch64/fpu/exp_advsimd.c
+@@ -54,7 +54,7 @@ const static volatile struct
+ # define BigBound v_u64 (0x4080000000000000) /* asuint64 (0x1p9).  */
+ # define SpecialBound v_u64 (0x2080000000000000) /* BigBound - TinyBound.  */
+ 
+-static inline float64x2_t VPCS_ATTR
++static float64x2_t VPCS_ATTR NOINLINE
+ special_case (float64x2_t x, float64x2_t y, uint64x2_t cmp)
+ {
+   /* If fenv exceptions are to be triggered correctly, fall back to the scalar
+@@ -69,7 +69,7 @@ special_case (float64x2_t x, float64x2_t y, uint64x2_t cmp)
+ # define SpecialBias1 v_u64 (0x7000000000000000) /* 0x1p769.  */
+ # define SpecialBias2 v_u64 (0x3010000000000000) /* 0x1p-254.  */
+ 
+-static float64x2_t VPCS_ATTR NOINLINE
++static inline float64x2_t VPCS_ATTR
+ special_case (float64x2_t s, float64x2_t y, float64x2_t n)
+ {
+   /* 2^(n/N) may overflow, break it up into s1*s2.  */
+diff --git a/sysdeps/aarch64/fpu/expm1_advsimd.c b/sysdeps/aarch64/fpu/expm1_advsimd.c
+index 0b85bd06f3c10068..3628398674468131 100644
+--- a/sysdeps/aarch64/fpu/expm1_advsimd.c
++++ b/sysdeps/aarch64/fpu/expm1_advsimd.c
+@@ -23,7 +23,7 @@
+ static const struct data
+ {
+   float64x2_t poly[11];
+-  float64x2_t invln2, ln2_lo, ln2_hi, shift;
++  float64x2_t invln2, ln2, shift;
+   int64x2_t exponent_bias;
+ #if WANT_SIMD_EXCEPT
+   uint64x2_t thresh, tiny_bound;
+@@ -38,8 +38,7 @@ static const struct data
+ 	    V2 (0x1.71ddf82db5bb4p-19), V2 (0x1.27e517fc0d54bp-22),
+ 	    V2 (0x1.af5eedae67435p-26), V2 (0x1.1f143d060a28ap-29) },
+   .invln2 = V2 (0x1.71547652b82fep0),
+-  .ln2_hi = V2 (0x1.62e42fefa39efp-1),
+-  .ln2_lo = V2 (0x1.abc9e3b39803fp-56),
++  .ln2 = { 0x1.62e42fefa39efp-1, 0x1.abc9e3b39803fp-56 },
+   .shift = V2 (0x1.8p52),
+   .exponent_bias = V2 (0x3ff0000000000000),
+ #if WANT_SIMD_EXCEPT
+@@ -83,7 +82,7 @@ float64x2_t VPCS_ATTR V_NAME_D1 (expm1) (float64x2_t x)
+     x = v_zerofy_f64 (x, special);
+ #else
+   /* Large input, NaNs and Infs.  */
+-  uint64x2_t special = vceqzq_u64 (vcaltq_f64 (x, d->oflow_bound));
++  uint64x2_t special = vcageq_f64 (x, d->oflow_bound);
+ #endif
+ 
+   /* Reduce argument to smaller range:
+@@ -93,8 +92,8 @@ float64x2_t VPCS_ATTR V_NAME_D1 (expm1) (float64x2_t x)
+      where 2^i is exact because i is an integer.  */
+   float64x2_t n = vsubq_f64 (vfmaq_f64 (d->shift, d->invln2, x), d->shift);
+   int64x2_t i = vcvtq_s64_f64 (n);
+-  float64x2_t f = vfmsq_f64 (x, n, d->ln2_hi);
+-  f = vfmsq_f64 (f, n, d->ln2_lo);
++  float64x2_t f = vfmsq_laneq_f64 (x, n, d->ln2, 0);
++  f = vfmsq_laneq_f64 (f, n, d->ln2, 1);
+ 
+   /* Approximate expm1(f) using polynomial.
+      Taylor expansion for expm1(x) has the form:
+diff --git a/sysdeps/aarch64/fpu/expm1f_advsimd.c b/sysdeps/aarch64/fpu/expm1f_advsimd.c
+index 8d4c9a21936d31dd..93db200f618379be 100644
+--- a/sysdeps/aarch64/fpu/expm1f_advsimd.c
++++ b/sysdeps/aarch64/fpu/expm1f_advsimd.c
+@@ -23,7 +23,8 @@
+ static const struct data
+ {
+   float32x4_t poly[5];
+-  float32x4_t invln2, ln2_lo, ln2_hi, shift;
++  float32x4_t invln2_and_ln2;
++  float32x4_t shift;
+   int32x4_t exponent_bias;
+ #if WANT_SIMD_EXCEPT
+   uint32x4_t thresh;
+@@ -34,9 +35,8 @@ static const struct data
+   /* Generated using fpminimax with degree=5 in [-log(2)/2, log(2)/2].  */
+   .poly = { V4 (0x1.fffffep-2), V4 (0x1.5554aep-3), V4 (0x1.555736p-5),
+ 	    V4 (0x1.12287cp-7), V4 (0x1.6b55a2p-10) },
+-  .invln2 = V4 (0x1.715476p+0f),
+-  .ln2_hi = V4 (0x1.62e4p-1f),
+-  .ln2_lo = V4 (0x1.7f7d1cp-20f),
++  /* Stores constants: invln2, ln2_hi, ln2_lo, 0.  */
++  .invln2_and_ln2 = { 0x1.715476p+0f, 0x1.62e4p-1f, 0x1.7f7d1cp-20f, 0 },
+   .shift = V4 (0x1.8p23f),
+   .exponent_bias = V4 (0x3f800000),
+ #if !WANT_SIMD_EXCEPT
+@@ -80,7 +80,7 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (expm1) (float32x4_t x)
+     x = v_zerofy_f32 (x, special);
+ #else
+   /* Handles very large values (+ve and -ve), +/-NaN, +/-Inf.  */
+-  uint32x4_t special = vceqzq_u32 (vcaltq_f32 (x, d->oflow_bound));
++  uint32x4_t special = vcagtq_f32 (x, d->oflow_bound);
+ #endif
+ 
+   /* Reduce argument to smaller range:
+@@ -88,10 +88,11 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (expm1) (float32x4_t x)
+      and f = x - i * ln2, then f is in [-ln2/2, ln2/2].
+      exp(x) - 1 = 2^i * (expm1(f) + 1) - 1
+      where 2^i is exact because i is an integer.  */
+-  float32x4_t j = vsubq_f32 (vfmaq_f32 (d->shift, d->invln2, x), d->shift);
++  float32x4_t j = vsubq_f32 (
++      vfmaq_laneq_f32 (d->shift, x, d->invln2_and_ln2, 0), d->shift);
+   int32x4_t i = vcvtq_s32_f32 (j);
+-  float32x4_t f = vfmsq_f32 (x, j, d->ln2_hi);
+-  f = vfmsq_f32 (f, j, d->ln2_lo);
++  float32x4_t f = vfmsq_laneq_f32 (x, j, d->invln2_and_ln2, 1);
++  f = vfmsq_laneq_f32 (f, j, d->invln2_and_ln2, 2);
+ 
+   /* Approximate expm1(f) using polynomial.
+      Taylor expansion for expm1(x) has the form:
+diff --git a/sysdeps/aarch64/fpu/log_advsimd.c b/sysdeps/aarch64/fpu/log_advsimd.c
+index 067ae7961300c66b..21df61728ca87374 100644
+--- a/sysdeps/aarch64/fpu/log_advsimd.c
++++ b/sysdeps/aarch64/fpu/log_advsimd.c
+@@ -58,8 +58,13 @@ lookup (uint64x2_t i)
+   uint64_t i1 = (i[1] >> (52 - V_LOG_TABLE_BITS)) & IndexMask;
+   float64x2_t e0 = vld1q_f64 (&__v_log_data.table[i0].invc);
+   float64x2_t e1 = vld1q_f64 (&__v_log_data.table[i1].invc);
++#if __BYTE_ORDER == __LITTLE_ENDIAN
+   e.invc = vuzp1q_f64 (e0, e1);
+   e.logc = vuzp2q_f64 (e0, e1);
++#else
++  e.invc = vuzp1q_f64 (e1, e0);
++  e.logc = vuzp2q_f64 (e1, e0);
++#endif
+   return e;
+ }
+ 
+diff --git a/sysdeps/aarch64/fpu/sin_advsimd.c b/sysdeps/aarch64/fpu/sin_advsimd.c
+index efce183e86e319f1..a0d9d3b81965db76 100644
+--- a/sysdeps/aarch64/fpu/sin_advsimd.c
++++ b/sysdeps/aarch64/fpu/sin_advsimd.c
+@@ -75,8 +75,7 @@ float64x2_t VPCS_ATTR V_NAME_D1 (sin) (float64x2_t x)
+   r = vbslq_f64 (cmp, vreinterpretq_f64_u64 (cmp), x);
+ #else
+   r = x;
+-  cmp = vcageq_f64 (d->range_val, x);
+-  cmp = vceqzq_u64 (cmp); /* cmp = ~cmp.  */
++  cmp = vcageq_f64 (x, d->range_val);
+ #endif
+ 
+   /* n = rint(|x|/pi).  */
+diff --git a/sysdeps/aarch64/fpu/sinf_advsimd.c b/sysdeps/aarch64/fpu/sinf_advsimd.c
+index 60cf3f2ca102619c..375dfc3331fa6a9c 100644
+--- a/sysdeps/aarch64/fpu/sinf_advsimd.c
++++ b/sysdeps/aarch64/fpu/sinf_advsimd.c
+@@ -67,8 +67,7 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (sin) (float32x4_t x)
+   r = vbslq_f32 (cmp, vreinterpretq_f32_u32 (cmp), x);
+ #else
+   r = x;
+-  cmp = vcageq_f32 (d->range_val, x);
+-  cmp = vceqzq_u32 (cmp); /* cmp = ~cmp.  */
++  cmp = vcageq_f32 (x, d->range_val);
+ #endif
+ 
+   /* n = rint(|x|/pi) */
+diff --git a/sysdeps/aarch64/fpu/tan_advsimd.c b/sysdeps/aarch64/fpu/tan_advsimd.c
+index d7e5ba7b1ab941e8..0459821ab25487a8 100644
+--- a/sysdeps/aarch64/fpu/tan_advsimd.c
++++ b/sysdeps/aarch64/fpu/tan_advsimd.c
+@@ -23,7 +23,7 @@
+ static const struct data
+ {
+   float64x2_t poly[9];
+-  float64x2_t half_pi_hi, half_pi_lo, two_over_pi, shift;
++  float64x2_t half_pi, two_over_pi, shift;
+ #if !WANT_SIMD_EXCEPT
+   float64x2_t range_val;
+ #endif
+@@ -34,8 +34,7 @@ static const struct data
+ 	    V2 (0x1.226e5e5ecdfa3p-7), V2 (0x1.d6c7ddbf87047p-9),
+ 	    V2 (0x1.7ea75d05b583ep-10), V2 (0x1.289f22964a03cp-11),
+ 	    V2 (0x1.4e4fd14147622p-12) },
+-  .half_pi_hi = V2 (0x1.921fb54442d18p0),
+-  .half_pi_lo = V2 (0x1.1a62633145c07p-54),
++  .half_pi = { 0x1.921fb54442d18p0, 0x1.1a62633145c07p-54 },
+   .two_over_pi = V2 (0x1.45f306dc9c883p-1),
+   .shift = V2 (0x1.8p52),
+ #if !WANT_SIMD_EXCEPT
+@@ -56,15 +55,15 @@ special_case (float64x2_t x)
+ 
+ /* Vector approximation for double-precision tan.
+    Maximum measured error is 3.48 ULP:
+-   __v_tan(0x1.4457047ef78d8p+20) got -0x1.f6ccd8ecf7dedp+37
+-				 want -0x1.f6ccd8ecf7deap+37.   */
++   _ZGVnN2v_tan(0x1.4457047ef78d8p+20) got -0x1.f6ccd8ecf7dedp+37
++				      want -0x1.f6ccd8ecf7deap+37.  */
+ float64x2_t VPCS_ATTR V_NAME_D1 (tan) (float64x2_t x)
+ {
+   const struct data *dat = ptr_barrier (&data);
+-  /* Our argument reduction cannot calculate q with sufficient accuracy for very
+-     large inputs. Fall back to scalar routine for all lanes if any are too
+-     large, or Inf/NaN. If fenv exceptions are expected, also fall back for tiny
+-     input to avoid underflow.  */
++  /* Our argument reduction cannot calculate q with sufficient accuracy for
++     very large inputs. Fall back to scalar routine for all lanes if any are
++     too large, or Inf/NaN. If fenv exceptions are expected, also fall back for
++     tiny input to avoid underflow.  */
+ #if WANT_SIMD_EXCEPT
+   uint64x2_t iax = vreinterpretq_u64_f64 (vabsq_f64 (x));
+   /* iax - tiny_bound > range_val - tiny_bound.  */
+@@ -82,8 +81,8 @@ float64x2_t VPCS_ATTR V_NAME_D1 (tan) (float64x2_t x)
+   /* Use q to reduce x to r in [-pi/4, pi/4], by:
+      r = x - q * pi/2, in extended precision.  */
+   float64x2_t r = x;
+-  r = vfmsq_f64 (r, q, dat->half_pi_hi);
+-  r = vfmsq_f64 (r, q, dat->half_pi_lo);
++  r = vfmsq_laneq_f64 (r, q, dat->half_pi, 0);
++  r = vfmsq_laneq_f64 (r, q, dat->half_pi, 1);
+   /* Further reduce r to [-pi/8, pi/8], to be reconstructed using double angle
+      formula.  */
+   r = vmulq_n_f64 (r, 0.5);
+@@ -106,14 +105,15 @@ float64x2_t VPCS_ATTR V_NAME_D1 (tan) (float64x2_t x)
+      and reciprocity around pi/2:
+      tan(x) = 1 / (tan(pi/2 - x))
+      to assemble result using change-of-sign and conditional selection of
+-     numerator/denominator, dependent on odd/even-ness of q (hence quadrant). */
++     numerator/denominator, dependent on odd/even-ness of q (hence quadrant).
++   */
+   float64x2_t n = vfmaq_f64 (v_f64 (-1), p, p);
+   float64x2_t d = vaddq_f64 (p, p);
+ 
+   uint64x2_t no_recip = vtstq_u64 (vreinterpretq_u64_s64 (qi), v_u64 (1));
+ 
+ #if !WANT_SIMD_EXCEPT
+-  uint64x2_t special = vceqzq_u64 (vcaleq_f64 (x, dat->range_val));
++  uint64x2_t special = vcageq_f64 (x, dat->range_val);
+   if (__glibc_unlikely (v_any_u64 (special)))
+     return special_case (x);
+ #endif
+diff --git a/sysdeps/aarch64/fpu/tanf_advsimd.c b/sysdeps/aarch64/fpu/tanf_advsimd.c
+index 1f16103f8a7668f8..5a7489390a9692c6 100644
+--- a/sysdeps/aarch64/fpu/tanf_advsimd.c
++++ b/sysdeps/aarch64/fpu/tanf_advsimd.c
+@@ -23,7 +23,8 @@
+ static const struct data
+ {
+   float32x4_t poly[6];
+-  float32x4_t neg_half_pi_1, neg_half_pi_2, neg_half_pi_3, two_over_pi, shift;
++  float32x4_t pi_consts;
++  float32x4_t shift;
+ #if !WANT_SIMD_EXCEPT
+   float32x4_t range_val;
+ #endif
+@@ -31,10 +32,9 @@ static const struct data
+   /* Coefficients generated using FPMinimax.  */
+   .poly = { V4 (0x1.55555p-2f), V4 (0x1.11166p-3f), V4 (0x1.b88a78p-5f),
+ 	    V4 (0x1.7b5756p-6f), V4 (0x1.4ef4cep-8f), V4 (0x1.0e1e74p-7f) },
+-  .neg_half_pi_1 = V4 (-0x1.921fb6p+0f),
+-  .neg_half_pi_2 = V4 (0x1.777a5cp-25f),
+-  .neg_half_pi_3 = V4 (0x1.ee59dap-50f),
+-  .two_over_pi = V4 (0x1.45f306p-1f),
++  /* Stores constants: (-pi/2)_high, (-pi/2)_mid, (-pi/2)_low, and 2/pi.  */
++  .pi_consts
++  = { -0x1.921fb6p+0f, 0x1.777a5cp-25f, 0x1.ee59dap-50f, 0x1.45f306p-1f },
+   .shift = V4 (0x1.8p+23f),
+ #if !WANT_SIMD_EXCEPT
+   .range_val = V4 (0x1p15f),
+@@ -58,10 +58,11 @@ eval_poly (float32x4_t z, const struct data *d)
+ {
+   float32x4_t z2 = vmulq_f32 (z, z);
+ #if WANT_SIMD_EXCEPT
+-  /* Tiny z (<= 0x1p-31) will underflow when calculating z^4. If fp exceptions
+-     are to be triggered correctly, sidestep this by fixing such lanes to 0.  */
++  /* Tiny z (<= 0x1p-31) will underflow when calculating z^4.
++     If fp exceptions are to be triggered correctly,
++     sidestep this by fixing such lanes to 0.  */
+   uint32x4_t will_uflow
+-    = vcleq_u32 (vreinterpretq_u32_f32 (vabsq_f32 (z)), TinyBound);
++      = vcleq_u32 (vreinterpretq_u32_f32 (vabsq_f32 (z)), TinyBound);
+   if (__glibc_unlikely (v_any_u32 (will_uflow)))
+     z2 = vbslq_f32 (will_uflow, v_f32 (0), z2);
+ #endif
+@@ -94,16 +95,16 @@ float32x4_t VPCS_ATTR NOINLINE V_NAME_F1 (tan) (float32x4_t x)
+ #endif
+ 
+   /* n = rint(x/(pi/2)).  */
+-  float32x4_t q = vfmaq_f32 (d->shift, d->two_over_pi, x);
++  float32x4_t q = vfmaq_laneq_f32 (d->shift, x, d->pi_consts, 3);
+   float32x4_t n = vsubq_f32 (q, d->shift);
+   /* Determine if x lives in an interval, where |tan(x)| grows to infinity.  */
+   uint32x4_t pred_alt = vtstq_u32 (vreinterpretq_u32_f32 (q), v_u32 (1));
+ 
+   /* r = x - n * (pi/2)  (range reduction into -pi./4 .. pi/4).  */
+   float32x4_t r;
+-  r = vfmaq_f32 (x, d->neg_half_pi_1, n);
+-  r = vfmaq_f32 (r, d->neg_half_pi_2, n);
+-  r = vfmaq_f32 (r, d->neg_half_pi_3, n);
++  r = vfmaq_laneq_f32 (x, n, d->pi_consts, 0);
++  r = vfmaq_laneq_f32 (r, n, d->pi_consts, 1);
++  r = vfmaq_laneq_f32 (r, n, d->pi_consts, 2);
+ 
+   /* If x lives in an interval, where |tan(x)|
+      - is finite, then use a polynomial approximation of the form
diff --git a/SOURCES/glibc-upstream-2.39-24.patch b/SOURCES/glibc-upstream-2.39-24.patch
new file mode 100644
index 0000000..61d3f48
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-24.patch
@@ -0,0 +1,54 @@
+commit 395a89f61e19fa916ae4cc93fc10d81a28ce3039
+Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
+Date:   Wed Mar 13 14:34:14 2024 +0000
+
+    aarch64: fix check for SVE support in assembler
+    
+    Due to GCC bug 110901 -mcpu can override -march setting when compiling
+    asm code and thus a compiler targetting a specific cpu can fail the
+    configure check even when binutils gas supports SVE.
+    
+    The workaround is that explicit .arch directive overrides both -mcpu
+    and -march, and since that's what the actual SVE memcpy uses the
+    configure check should use that too even if the GCC issue is fixed
+    independently.
+    
+    Reviewed-by: Florian Weimer <fweimer@redhat.com>
+    (cherry picked from commit 73c26018ed0ecd9c807bb363cc2c2ab4aca66a82)
+
+diff --git a/sysdeps/aarch64/configure b/sysdeps/aarch64/configure
+old mode 100644
+new mode 100755
+index ca57edce472e4507..9606137e8ddae545
+--- a/sysdeps/aarch64/configure
++++ b/sysdeps/aarch64/configure
+@@ -325,9 +325,10 @@ then :
+   printf %s "(cached) " >&6
+ else $as_nop
+   cat > conftest.s <<\EOF
+-        ptrue p0.b
++	.arch armv8.2-a+sve
++	ptrue p0.b
+ EOF
+-if { ac_try='${CC-cc} -c -march=armv8.2-a+sve conftest.s 1>&5'
++if { ac_try='${CC-cc} -c conftest.s 1>&5'
+   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+   (eval $ac_try) 2>&5
+   ac_status=$?
+diff --git a/sysdeps/aarch64/configure.ac b/sysdeps/aarch64/configure.ac
+index 27874eceb44911e4..56d12d661d726892 100644
+--- a/sysdeps/aarch64/configure.ac
++++ b/sysdeps/aarch64/configure.ac
+@@ -90,9 +90,10 @@ LIBC_CONFIG_VAR([aarch64-variant-pcs], [$libc_cv_aarch64_variant_pcs])
+ # Check if asm support armv8.2-a+sve
+ AC_CACHE_CHECK([for SVE support in assembler], [libc_cv_aarch64_sve_asm], [dnl
+ cat > conftest.s <<\EOF
+-        ptrue p0.b
++	.arch armv8.2-a+sve
++	ptrue p0.b
+ EOF
+-if AC_TRY_COMMAND(${CC-cc} -c -march=armv8.2-a+sve conftest.s 1>&AS_MESSAGE_LOG_FD); then
++if AC_TRY_COMMAND(${CC-cc} -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
+   libc_cv_aarch64_sve_asm=yes
+ else
+   libc_cv_aarch64_sve_asm=no
diff --git a/SOURCES/glibc-upstream-2.39-25.patch b/SOURCES/glibc-upstream-2.39-25.patch
new file mode 100644
index 0000000..f168f15
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-25.patch
@@ -0,0 +1,144 @@
+commit 9d92452c70805a2e2dbbdb2b1ffc34bd86e1c8df
+Author: Wilco Dijkstra <wilco.dijkstra@arm.com>
+Date:   Thu Mar 21 16:48:33 2024 +0000
+
+    AArch64: Check kernel version for SVE ifuncs
+    
+    Old Linux kernels disable SVE after every system call.  Calling the
+    SVE-optimized memcpy afterwards will then cause a trap to reenable SVE.
+    As a result, applications with a high use of syscalls may run slower with
+    the SVE memcpy.  This is true for kernels between 4.15.0 and before 6.2.0,
+    except for 5.14.0 which was patched.  Avoid this by checking the kernel
+    version and selecting the SVE ifunc on modern kernels.
+    
+    Parse the kernel version reported by uname() into a 24-bit kernel.major.minor
+    value without calling any library functions.  If uname() is not supported or
+    if the version format is not recognized, assume the kernel is modern.
+    
+    Tested-by: Florian Weimer <fweimer@redhat.com>
+    Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
+    (cherry picked from commit 2e94e2f5d2bf2de124c8ad7da85463355e54ccb2)
+
+diff --git a/sysdeps/aarch64/cpu-features.h b/sysdeps/aarch64/cpu-features.h
+index 77a782422af1b6e4..5f2da91ebbd0adaf 100644
+--- a/sysdeps/aarch64/cpu-features.h
++++ b/sysdeps/aarch64/cpu-features.h
+@@ -71,6 +71,7 @@ struct cpu_features
+   /* Currently, the GLIBC memory tagging tunable only defines 8 bits.  */
+   uint8_t mte_state;
+   bool sve;
++  bool prefer_sve_ifuncs;
+   bool mops;
+ };
+ 
+diff --git a/sysdeps/aarch64/multiarch/init-arch.h b/sysdeps/aarch64/multiarch/init-arch.h
+index c52860efb22d70eb..61dc40088f4d9e5e 100644
+--- a/sysdeps/aarch64/multiarch/init-arch.h
++++ b/sysdeps/aarch64/multiarch/init-arch.h
+@@ -36,5 +36,7 @@
+     MTE_ENABLED ();							      \
+   bool __attribute__((unused)) sve =					      \
+     GLRO(dl_aarch64_cpu_features).sve;					      \
++  bool __attribute__((unused)) prefer_sve_ifuncs =			      \
++    GLRO(dl_aarch64_cpu_features).prefer_sve_ifuncs;			      \
+   bool __attribute__((unused)) mops =					      \
+     GLRO(dl_aarch64_cpu_features).mops;
+diff --git a/sysdeps/aarch64/multiarch/memcpy.c b/sysdeps/aarch64/multiarch/memcpy.c
+index d12eccfca51f4bcf..ce53567dab33c2f0 100644
+--- a/sysdeps/aarch64/multiarch/memcpy.c
++++ b/sysdeps/aarch64/multiarch/memcpy.c
+@@ -47,7 +47,7 @@ select_memcpy_ifunc (void)
+     {
+       if (IS_A64FX (midr))
+ 	return __memcpy_a64fx;
+-      return __memcpy_sve;
++      return prefer_sve_ifuncs ? __memcpy_sve : __memcpy_generic;
+     }
+ 
+   if (IS_THUNDERX (midr))
+diff --git a/sysdeps/aarch64/multiarch/memmove.c b/sysdeps/aarch64/multiarch/memmove.c
+index 2081eeb4d40e0240..fe95037be391896c 100644
+--- a/sysdeps/aarch64/multiarch/memmove.c
++++ b/sysdeps/aarch64/multiarch/memmove.c
+@@ -47,7 +47,7 @@ select_memmove_ifunc (void)
+     {
+       if (IS_A64FX (midr))
+ 	return __memmove_a64fx;
+-      return __memmove_sve;
++      return prefer_sve_ifuncs ? __memmove_sve : __memmove_generic;
+     }
+ 
+   if (IS_THUNDERX (midr))
+diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
+index b1a3f673f067280b..c0b047bc0dbeae42 100644
+--- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
++++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
+@@ -21,6 +21,7 @@
+ #include <sys/auxv.h>
+ #include <elf/dl-hwcaps.h>
+ #include <sys/prctl.h>
++#include <sys/utsname.h>
+ #include <dl-tunables-parse.h>
+ 
+ #define DCZID_DZP_MASK (1 << 4)
+@@ -62,6 +63,46 @@ get_midr_from_mcpu (const struct tunable_str_t *mcpu)
+   return UINT64_MAX;
+ }
+ 
++#if __LINUX_KERNEL_VERSION < 0x060200
++
++/* Return true if we prefer using SVE in string ifuncs.  Old kernels disable
++   SVE after every system call which results in unnecessary traps if memcpy
++   uses SVE.  This is true for kernels between 4.15.0 and before 6.2.0, except
++   for 5.14.0 which was patched.  For these versions return false to avoid using
++   SVE ifuncs.
++   Parse the kernel version into a 24-bit kernel.major.minor value without
++   calling any library functions.  If uname() is not supported or if the version
++   format is not recognized, assume the kernel is modern and return true.  */
++
++static inline bool
++prefer_sve_ifuncs (void)
++{
++  struct utsname buf;
++  const char *p = &buf.release[0];
++  int kernel = 0;
++  int val;
++
++  if (__uname (&buf) < 0)
++    return true;
++
++  for (int shift = 16; shift >= 0; shift -= 8)
++    {
++      for (val = 0; *p >= '0' && *p <= '9'; p++)
++	val = val * 10 + *p - '0';
++      kernel |= (val & 255) << shift;
++      if (*p++ != '.')
++	break;
++    }
++
++  if (kernel >= 0x060200 || kernel == 0x050e00)
++    return true;
++  if (kernel >= 0x040f00)
++    return false;
++  return true;
++}
++
++#endif
++
+ static inline void
+ init_cpu_features (struct cpu_features *cpu_features)
+ {
+@@ -126,6 +167,13 @@ init_cpu_features (struct cpu_features *cpu_features)
+   /* Check if SVE is supported.  */
+   cpu_features->sve = GLRO (dl_hwcap) & HWCAP_SVE;
+ 
++  cpu_features->prefer_sve_ifuncs = cpu_features->sve;
++
++#if __LINUX_KERNEL_VERSION < 0x060200
++  if (cpu_features->sve)
++    cpu_features->prefer_sve_ifuncs = prefer_sve_ifuncs ();
++#endif
++
+   /* Check if MOPS is supported.  */
+   cpu_features->mops = GLRO (dl_hwcap2) & HWCAP2_MOPS;
+ }
diff --git a/SOURCES/glibc-upstream-2.39-26.patch b/SOURCES/glibc-upstream-2.39-26.patch
new file mode 100644
index 0000000..278d238
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-26.patch
@@ -0,0 +1,108 @@
+commit 9883f4304cfb1558d0f1e6d9f48c4ab0a35355fe
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Wed Feb 28 09:51:14 2024 -0800
+
+    x86-64: Don't use SSE resolvers for ISA level 3 or above
+    
+    When glibc is built with ISA level 3 or above enabled, SSE resolvers
+    aren't available and glibc fails to build:
+    
+    ld: .../elf/librtld.os: in function `init_cpu_features':
+    .../elf/../sysdeps/x86/cpu-features.c:1200:(.text+0x1445f): undefined reference to `_dl_runtime_resolve_fxsave'
+    ld: .../elf/librtld.os: relocation R_X86_64_PC32 against undefined hidden symbol `_dl_runtime_resolve_fxsave' can not be used when making a shared object
+    /usr/local/bin/ld: final link failed: bad value
+    
+    For ISA level 3 or above, don't use _dl_runtime_resolve_fxsave nor
+    _dl_tlsdesc_dynamic_fxsave.
+    
+    This fixes BZ #31429.
+    Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
+    
+    (cherry picked from commit befe2d3c4dec8be2cdd01a47132e47bdb7020922)
+
+diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
+index 6fe1b728c607f39e..b8abe733abe54fc4 100644
+--- a/sysdeps/x86/cpu-features.c
++++ b/sysdeps/x86/cpu-features.c
+@@ -18,6 +18,7 @@
+ 
+ #include <dl-hwcap.h>
+ #include <libc-pointer-arith.h>
++#include <isa-level.h>
+ #include <get-isa-level.h>
+ #include <cacheinfo.h>
+ #include <dl-cacheinfo.h>
+@@ -1198,7 +1199,9 @@ no_cpuid:
+ 	       TUNABLE_CALLBACK (set_x86_shstk));
+ #endif
+ 
++#if MINIMUM_X86_ISA_LEVEL < AVX_X86_ISA_LEVEL
+   if (GLRO(dl_x86_cpu_features).xsave_state_size != 0)
++#endif
+     {
+       if (CPU_FEATURE_USABLE_P (cpu_features, XSAVEC))
+ 	{
+@@ -1219,22 +1222,24 @@ no_cpuid:
+ #endif
+ 	}
+     }
++#if MINIMUM_X86_ISA_LEVEL < AVX_X86_ISA_LEVEL
+   else
+     {
+-#ifdef __x86_64__
++# ifdef __x86_64__
+       GLRO(dl_x86_64_runtime_resolve) = _dl_runtime_resolve_fxsave;
+-# ifdef SHARED
++#  ifdef SHARED
+       GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fxsave;
+-# endif
+-#else
+-# ifdef SHARED
++#  endif
++# else
++#  ifdef SHARED
+       if (CPU_FEATURE_USABLE_P (cpu_features, FXSR))
+ 	GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fxsave;
+       else
+ 	GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fnsave;
++#  endif
+ # endif
+-#endif
+     }
++#endif
+ 
+ #ifdef SHARED
+ # ifdef __x86_64__
+diff --git a/sysdeps/x86_64/dl-tlsdesc.S b/sysdeps/x86_64/dl-tlsdesc.S
+index ea69f5223a77e0c0..057a10862afd6208 100644
+--- a/sysdeps/x86_64/dl-tlsdesc.S
++++ b/sysdeps/x86_64/dl-tlsdesc.S
+@@ -20,6 +20,7 @@
+ #include <tls.h>
+ #include <cpu-features-offsets.h>
+ #include <features-offsets.h>
++#include <isa-level.h>
+ #include "tlsdesc.h"
+ #include "dl-trampoline-save.h"
+ 
+@@ -79,12 +80,14 @@ _dl_tlsdesc_undefweak:
+ 	.size	_dl_tlsdesc_undefweak, .-_dl_tlsdesc_undefweak
+ 
+ #ifdef SHARED
+-# define USE_FXSAVE
+-# define STATE_SAVE_ALIGNMENT	16
+-# define _dl_tlsdesc_dynamic	_dl_tlsdesc_dynamic_fxsave
+-# include "dl-tlsdesc-dynamic.h"
+-# undef _dl_tlsdesc_dynamic
+-# undef USE_FXSAVE
++# if MINIMUM_X86_ISA_LEVEL < AVX_X86_ISA_LEVEL
++#  define USE_FXSAVE
++#  define STATE_SAVE_ALIGNMENT	16
++#  define _dl_tlsdesc_dynamic	_dl_tlsdesc_dynamic_fxsave
++#  include "dl-tlsdesc-dynamic.h"
++#  undef _dl_tlsdesc_dynamic
++#  undef USE_FXSAVE
++# endif
+ 
+ # define USE_XSAVE
+ # define STATE_SAVE_ALIGNMENT	64
diff --git a/SOURCES/glibc-upstream-2.39-27.patch b/SOURCES/glibc-upstream-2.39-27.patch
new file mode 100644
index 0000000..8f136ce
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-27.patch
@@ -0,0 +1,61 @@
+commit 7b92f46f04c6cbce19d19ae1099628431858996c
+Author: Sunil K Pandey <skpgkp2@gmail.com>
+Date:   Thu Feb 29 17:57:02 2024 -0800
+
+    x86-64: Simplify minimum ISA check ifdef conditional with if
+    
+    Replace minimum ISA check ifdef conditional with if.  Since
+    MINIMUM_X86_ISA_LEVEL and AVX_X86_ISA_LEVEL are compile time constants,
+    compiler will perform constant folding optimization, getting same
+    results.
+    
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    (cherry picked from commit b6e3898194bbae78910bbe9cd086937014961e45)
+
+diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
+index b8abe733abe54fc4..3d7c2819d7cc6643 100644
+--- a/sysdeps/x86/cpu-features.c
++++ b/sysdeps/x86/cpu-features.c
+@@ -1199,9 +1199,8 @@ no_cpuid:
+ 	       TUNABLE_CALLBACK (set_x86_shstk));
+ #endif
+ 
+-#if MINIMUM_X86_ISA_LEVEL < AVX_X86_ISA_LEVEL
+-  if (GLRO(dl_x86_cpu_features).xsave_state_size != 0)
+-#endif
++  if (MINIMUM_X86_ISA_LEVEL >= AVX_X86_ISA_LEVEL
++      || (GLRO(dl_x86_cpu_features).xsave_state_size != 0))
+     {
+       if (CPU_FEATURE_USABLE_P (cpu_features, XSAVEC))
+ 	{
+@@ -1222,24 +1221,22 @@ no_cpuid:
+ #endif
+ 	}
+     }
+-#if MINIMUM_X86_ISA_LEVEL < AVX_X86_ISA_LEVEL
+   else
+     {
+-# ifdef __x86_64__
++#ifdef __x86_64__
+       GLRO(dl_x86_64_runtime_resolve) = _dl_runtime_resolve_fxsave;
+-#  ifdef SHARED
++# ifdef SHARED
+       GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fxsave;
+-#  endif
+-# else
+-#  ifdef SHARED
++# endif
++#else
++# ifdef SHARED
+       if (CPU_FEATURE_USABLE_P (cpu_features, FXSR))
+ 	GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fxsave;
+       else
+ 	GLRO(dl_x86_tlsdesc_dynamic) = _dl_tlsdesc_dynamic_fnsave;
+-#  endif
+ # endif
+-    }
+ #endif
++    }
+ 
+ #ifdef SHARED
+ # ifdef __x86_64__
diff --git a/SOURCES/glibc-upstream-2.39-28.patch b/SOURCES/glibc-upstream-2.39-28.patch
new file mode 100644
index 0000000..b5546e0
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-28.patch
@@ -0,0 +1,50 @@
+commit edb9a76e3008725e9dc035d38a58e849a3bde0f1
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Sun Apr 14 08:24:51 2024 +0200
+
+    powerpc: Fix ld.so address determination for PCREL mode (bug 31640)
+    
+    This seems to have stopped working with some GCC 14 versions,
+    which clobber r2.  With other compilers, the kernel-provided
+    r2 value is still available at this point.
+    
+    Reviewed-by: Peter Bergner <bergner@linux.ibm.com>
+    (cherry picked from commit 14e56bd4ce15ac2d1cc43f762eb2e6b83fec1afe)
+
+diff --git a/sysdeps/powerpc/powerpc64/dl-machine.h b/sysdeps/powerpc/powerpc64/dl-machine.h
+index c6682f3445615636..2b6f5d2b08cb10b8 100644
+--- a/sysdeps/powerpc/powerpc64/dl-machine.h
++++ b/sysdeps/powerpc/powerpc64/dl-machine.h
+@@ -78,6 +78,7 @@ elf_host_tolerates_class (const Elf64_Ehdr *ehdr)
+ static inline Elf64_Addr
+ elf_machine_load_address (void) __attribute__ ((const));
+ 
++#ifndef __PCREL__
+ static inline Elf64_Addr
+ elf_machine_load_address (void)
+ {
+@@ -105,6 +106,24 @@ elf_machine_dynamic (void)
+   /* Then subtract off the load address offset.  */
+   return runtime_dynamic - elf_machine_load_address() ;
+ }
++#else /* __PCREL__ */
++/* In PCREL mode, r2 may have been clobbered.  Rely on relative
++   relocations instead.  */
++
++static inline ElfW(Addr)
++elf_machine_load_address (void)
++{
++  extern const ElfW(Ehdr) __ehdr_start attribute_hidden;
++  return (ElfW(Addr)) &__ehdr_start;
++}
++
++static inline ElfW(Addr)
++elf_machine_dynamic (void)
++{
++  extern ElfW(Dyn) _DYNAMIC[] attribute_hidden;
++  return (ElfW(Addr)) _DYNAMIC - elf_machine_load_address ();
++}
++#endif /* __PCREL__ */
+ 
+ /* The PLT uses Elf64_Rela relocs.  */
+ #define elf_machine_relplt elf_machine_rela
diff --git a/SOURCES/glibc-upstream-2.39-29.patch b/SOURCES/glibc-upstream-2.39-29.patch
new file mode 100644
index 0000000..41a85b1
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-29.patch
@@ -0,0 +1,246 @@
+commit 04df8652eb1919da18d54b3dcd6db1675993d45d
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Thu Feb 15 11:19:56 2024 -0800
+
+    Apply the Makefile sorting fix
+    
+    Apply the Makefile sorting fix generated by sort-makefile-lines.py.
+    
+    (cherry picked from commit ef7f4b1fef67430a8f3cfc77fa6aada2add851d7)
+
+diff --git a/sysdeps/loongarch/lp64/multiarch/Makefile b/sysdeps/loongarch/lp64/multiarch/Makefile
+index fe863e1ba411cc4b..01762ef526854d54 100644
+--- a/sysdeps/loongarch/lp64/multiarch/Makefile
++++ b/sysdeps/loongarch/lp64/multiarch/Makefile
+@@ -1,52 +1,52 @@
+ ifeq ($(subdir),string)
+ sysdep_routines += \
+-  strlen-aligned \
+-  strlen-lsx \
+-  strlen-lasx \
+-  strnlen-aligned \
+-  strnlen-lsx \
+-  strnlen-lasx \
++  memchr-aligned \
++  memchr-lasx \
++  memchr-lsx \
++  memcmp-aligned \
++  memcmp-lasx \
++  memcmp-lsx \
++  memcpy-aligned \
++  memcpy-unaligned \
++  memmove-lasx \
++  memmove-lsx \
++  memmove-unaligned \
++  memrchr-generic \
++  memrchr-lasx \
++  memrchr-lsx \
++  memset-aligned \
++  memset-lasx \
++  memset-lsx \
++  memset-unaligned \
++  rawmemchr-aligned \
++  rawmemchr-lasx \
++  rawmemchr-lsx \
++  stpcpy-aligned \
++  stpcpy-lasx \
++  stpcpy-lsx \
++  stpcpy-unaligned \
+   strchr-aligned \
+-  strchr-lsx \
+   strchr-lasx \
+-  strrchr-aligned \
+-  strrchr-lsx \
+-  strrchr-lasx \
++  strchr-lsx \
+   strchrnul-aligned \
+-  strchrnul-lsx \
+   strchrnul-lasx \
++  strchrnul-lsx \
+   strcmp-aligned \
+   strcmp-lsx \
+-  strncmp-aligned \
+-  strncmp-lsx \
+   strcpy-aligned \
+-  strcpy-unaligned \
+-  strcpy-lsx \
+   strcpy-lasx \
+-  stpcpy-aligned \
+-  stpcpy-unaligned \
+-  stpcpy-lsx \
+-  stpcpy-lasx \
+-  memcpy-aligned \
+-  memcpy-unaligned \
+-  memmove-unaligned \
+-  memmove-lsx \
+-  memmove-lasx \
+-  rawmemchr-aligned \
+-  rawmemchr-lsx \
+-  rawmemchr-lasx \
+-  memchr-aligned \
+-  memchr-lsx \
+-  memchr-lasx \
+-  memrchr-generic \
+-  memrchr-lsx \
+-  memrchr-lasx \
+-  memset-aligned \
+-  memset-unaligned \
+-  memset-lsx \
+-  memset-lasx \
+-  memcmp-aligned \
+-  memcmp-lsx \
+-  memcmp-lasx \
++  strcpy-lsx \
++  strcpy-unaligned \
++  strlen-aligned \
++  strlen-lasx \
++  strlen-lsx \
++  strncmp-aligned \
++  strncmp-lsx \
++  strnlen-aligned \
++  strnlen-lasx \
++  strnlen-lsx \
++  strrchr-aligned \
++  strrchr-lasx \
++  strrchr-lsx \
+ # sysdep_routines
+ endif
+diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
+index 992aabe43ec60abf..5311b594aff62f7c 100644
+--- a/sysdeps/x86/Makefile
++++ b/sysdeps/x86/Makefile
+@@ -15,18 +15,18 @@ CFLAGS-dl-get-cpu-features.os += $(rtld-early-cflags)
+ CFLAGS-get-cpuid-feature-leaf.o += $(no-stack-protector)
+ 
+ tests += \
+-  tst-get-cpu-features \
+-  tst-get-cpu-features-static \
+   tst-cpu-features-cpuinfo \
+   tst-cpu-features-cpuinfo-static \
+   tst-cpu-features-supports \
+   tst-cpu-features-supports-static \
++  tst-get-cpu-features \
++  tst-get-cpu-features-static \
+   tst-hwcap-tunables \
+ # tests
+ tests-static += \
+-  tst-get-cpu-features-static \
+   tst-cpu-features-cpuinfo-static \
+   tst-cpu-features-supports-static \
++  tst-get-cpu-features-static \
+ # tests-static
+ ifeq (yes,$(have-ifunc))
+ ifeq (yes,$(have-gcc-ifunc))
+diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile
+index 9d374a329916fc45..0ede447405d549b5 100644
+--- a/sysdeps/x86_64/Makefile
++++ b/sysdeps/x86_64/Makefile
+@@ -252,6 +252,10 @@ sysdep-dl-routines += dl-cet
+ 
+ tests += \
+   tst-cet-legacy-1 \
++  tst-cet-legacy-10 \
++  tst-cet-legacy-10-static \
++  tst-cet-legacy-10a \
++  tst-cet-legacy-10a-static \
+   tst-cet-legacy-1a \
+   tst-cet-legacy-2 \
+   tst-cet-legacy-2a \
+@@ -263,15 +267,11 @@ tests += \
+   tst-cet-legacy-8 \
+   tst-cet-legacy-9 \
+   tst-cet-legacy-9-static \
+-  tst-cet-legacy-10 \
+-  tst-cet-legacy-10-static \
+-  tst-cet-legacy-10a \
+-  tst-cet-legacy-10a-static \
+ # tests
+ tests-static += \
+-  tst-cet-legacy-9-static \
+   tst-cet-legacy-10-static \
+   tst-cet-legacy-10a-static \
++  tst-cet-legacy-9-static \
+ # tests-static
+ tst-cet-legacy-1a-ARGS = -- $(host-test-program-cmd)
+ 
+diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile
+index ea81753b708fcb8d..e1a490dd98b4be07 100644
+--- a/sysdeps/x86_64/fpu/multiarch/Makefile
++++ b/sysdeps/x86_64/fpu/multiarch/Makefile
+@@ -4,10 +4,10 @@ libm-sysdep_routines += \
+   s_ceilf-c \
+   s_floor-c \
+   s_floorf-c \
+-  s_rint-c \
+-  s_rintf-c \
+   s_nearbyint-c \
+   s_nearbyintf-c \
++  s_rint-c \
++  s_rintf-c \
+   s_roundeven-c \
+   s_roundevenf-c \
+   s_trunc-c \
+@@ -21,10 +21,10 @@ libm-sysdep_routines += \
+   s_floorf-sse4_1 \
+   s_nearbyint-sse4_1 \
+   s_nearbyintf-sse4_1 \
+-  s_roundeven-sse4_1 \
+-  s_roundevenf-sse4_1 \
+   s_rint-sse4_1 \
+   s_rintf-sse4_1 \
++  s_roundeven-sse4_1 \
++  s_roundevenf-sse4_1 \
+   s_trunc-sse4_1 \
+   s_truncf-sse4_1 \
+ # libm-sysdep_routines
+@@ -84,12 +84,12 @@ CFLAGS-s_cosf-fma.c = -mfma -mavx2
+ CFLAGS-s_sincosf-fma.c = -mfma -mavx2
+ 
+ libm-sysdep_routines += \
++  e_asin-fma4 \
++  e_atan2-fma4 \
+   e_exp-fma4 \
+   e_log-fma4 \
+   e_pow-fma4 \
+-  e_asin-fma4 \
+   s_atan-fma4 \
+-  e_atan2-fma4 \
+   s_sin-fma4 \
+   s_sincos-fma4 \
+   s_tan-fma4 \
+@@ -106,10 +106,10 @@ CFLAGS-s_tan-fma4.c = -mfma4
+ CFLAGS-s_sincos-fma4.c = -mfma4
+ 
+ libm-sysdep_routines += \
++  e_atan2-avx \
+   e_exp-avx \
+   e_log-avx \
+   s_atan-avx \
+-  e_atan2-avx \
+   s_sin-avx \
+   s_sincos-avx \
+   s_tan-avx \
+diff --git a/sysdeps/x86_64/multiarch/Makefile b/sysdeps/x86_64/multiarch/Makefile
+index e1e894c963afb8b1..d3d2270394bd635d 100644
+--- a/sysdeps/x86_64/multiarch/Makefile
++++ b/sysdeps/x86_64/multiarch/Makefile
+@@ -4,8 +4,8 @@ sysdep_routines += \
+   memchr-avx2 \
+   memchr-avx2-rtm \
+   memchr-evex \
+-  memchr-evex512 \
+   memchr-evex-rtm \
++  memchr-evex512 \
+   memchr-sse2 \
+   memcmp-avx2-movbe \
+   memcmp-avx2-movbe-rtm \
+@@ -37,8 +37,8 @@ sysdep_routines += \
+   rawmemchr-avx2 \
+   rawmemchr-avx2-rtm \
+   rawmemchr-evex \
+-  rawmemchr-evex512 \
+   rawmemchr-evex-rtm \
++  rawmemchr-evex512 \
+   rawmemchr-sse2 \
+   stpcpy-avx2 \
+   stpcpy-avx2-rtm \
diff --git a/SOURCES/glibc-upstream-2.39-3.patch b/SOURCES/glibc-upstream-2.39-3.patch
new file mode 100644
index 0000000..c98c21c
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-3.patch
@@ -0,0 +1,78 @@
+commit 312e159626b67fe11f39e83e222cf4348a3962f3
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Thu Feb 1 14:29:53 2024 -0300
+
+    mips: FIx clone3 implementation (BZ 31325)
+    
+    For o32 we need to setup a minimal stack frame to allow cprestore
+    on __thread_start_clone3 (which instruct the linker to save the
+    gp for PIC).  Also, there is no guarantee by kABI that $8 will be
+    preserved after syscall execution, so we need to save it on the
+    provided stack.
+    
+    Checked on mipsel-linux-gnu.
+    
+    Reported-by: Khem Raj <raj.khem@gmail.com>
+    Tested-by: Khem Raj <raj.khem@gmail.com>
+    (cherry picked from commit bbd248ac0d75efdef8fe61ea69b1fb25fb95b6e7)
+
+diff --git a/sysdeps/unix/sysv/linux/mips/clone3.S b/sysdeps/unix/sysv/linux/mips/clone3.S
+index e9fec2fa471b99ba..481b8ae96366fc70 100644
+--- a/sysdeps/unix/sysv/linux/mips/clone3.S
++++ b/sysdeps/unix/sysv/linux/mips/clone3.S
+@@ -37,11 +37,6 @@
+ 
+ 	.text
+ 	.set		nomips16
+-#if _MIPS_SIM == _ABIO32
+-# define EXTRA_LOCALS 1
+-#else
+-# define EXTRA_LOCALS 0
+-#endif
+ #define FRAMESZ ((NARGSAVE*SZREG)+ALSZ)&ALMASK
+ GPOFF= FRAMESZ-(1*SZREG)
+ NESTED(__clone3, SZREG, sp)
+@@ -68,8 +63,31 @@ NESTED(__clone3, SZREG, sp)
+ 	beqz	a0, L(error)	/* No NULL cl_args pointer.  */
+ 	beqz	a2, L(error)	/* No NULL function pointer.  */
+ 
++#if _MIPS_SIM == _ABIO32
++	/* Both stack and stack_size on clone_args are defined as uint64_t, and
++	   there is no need to handle values larger than to 32 bits for o32.  */
++# if __BYTE_ORDER == __BIG_ENDIAN
++#  define CL_STACKPOINTER_OFFSET  44
++#  define CL_STACKSIZE_OFFSET     52
++# else
++#  define CL_STACKPOINTER_OFFSET  40
++#  define CL_STACKSIZE_OFFSET     48
++# endif
++
++	/* For o32 we need to setup a minimal stack frame to allow cprestore
++	   on __thread_start_clone3.  Also there is no guarantee by kABI that
++	   $8 will be preserved after syscall execution (so we need to save it
++	   on the provided stack).  */
++	lw	t0, CL_STACKPOINTER_OFFSET(a0)	/* Load the stack pointer.  */
++	lw	t1, CL_STACKSIZE_OFFSET(a0)	/* Load the stack_size.  */
++	addiu	t1, -32				/* Update the stack size.  */
++	addu	t2, t1, t0			/* Calculate the thread stack.  */
++	sw	a3, 0(t2)			/* Save argument pointer.  */
++	sw	t1, CL_STACKSIZE_OFFSET(a0)	/* Save the new stack size.  */
++#else
+ 	move	$8, a3		/* a3 is set to 0/1 for syscall success/error
+ 				   while a4/$8 is returned unmodified.  */
++#endif
+ 
+ 	/* Do the system call, the kernel expects:
+ 	   v0: system call number
+@@ -125,7 +143,11 @@ L(thread_start_clone3):
+ 
+ 	/* Restore the arg for user's function.  */
+ 	move		t9, a2		/* Function pointer.  */
++#if _MIPS_SIM == _ABIO32
++	PTR_L		a0, 0(sp)
++#else
+ 	move		a0, $8		/* Argument pointer.  */
++#endif
+ 
+ 	/* Call the user's function.  */
+ 	jal		t9
diff --git a/SOURCES/glibc-upstream-2.39-30.patch b/SOURCES/glibc-upstream-2.39-30.patch
new file mode 100644
index 0000000..3796da6
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-30.patch
@@ -0,0 +1,2143 @@
+commit 423099a03264ea28298f47355d7811b8efe03c97
+Author: Sunil K Pandey <skpgkp2@gmail.com>
+Date:   Tue Feb 13 12:23:14 2024 -0800
+
+    x86_64: Exclude SSE, AVX and FMA4 variants in libm multiarch
+    
+    When glibc is built with ISA level 3 or higher by default, the resulting
+    glibc binaries won't run on SSE or FMA4 processors.  Exclude SSE, AVX and
+    FMA4 variants in libm multiarch when ISA level 3 or higher is enabled by
+    default.
+    
+    When glibc is built with ISA level 2 enabled by default, only keep SSE4.1
+    variant.
+    
+    Fixes BZ 31335.
+    
+    NB: elf/tst-valgrind-smoke test fails with ISA level 4, because valgrind
+    doesn't support AVX512 instructions:
+    
+    https://bugs.kde.org/show_bug.cgi?id=383010
+    
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    (cherry picked from commit 9f78a7c1d0963282608da836b840f0d5ae1c478e)
+
+diff --git a/sysdeps/x86/configure b/sysdeps/x86/configure
+index 1f4c2d67fd2693ed..2a5421bb31e9efe4 100644
+--- a/sysdeps/x86/configure
++++ b/sysdeps/x86/configure
+@@ -98,6 +98,7 @@ printf "%s\n" "$libc_cv_have_x86_lahf_sahf" >&6; }
+   if test $libc_cv_have_x86_lahf_sahf = yes; then
+     printf "%s\n" "#define HAVE_X86_LAHF_SAHF 1" >>confdefs.h
+ 
++    ISAFLAG="-DHAVE_X86_LAHF_SAHF"
+   fi
+   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MOVBE instruction support" >&5
+ printf %s "checking for MOVBE instruction support... " >&6; }
+@@ -120,9 +121,41 @@ printf "%s\n" "$libc_cv_have_x86_movbe" >&6; }
+   if test $libc_cv_have_x86_movbe = yes; then
+     printf "%s\n" "#define HAVE_X86_MOVBE 1" >>confdefs.h
+ 
++    ISAFLAG="$ISAFLAG -DHAVE_X86_MOVBE"
+   fi
++
++  # Check for ISA level support.
++  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ISA level support" >&5
++printf %s "checking for ISA level support... " >&6; }
++if test ${libc_cv_have_x86_isa_level+y}
++then :
++  printf %s "(cached) " >&6
++else $as_nop
++  cat > conftest.c <<EOF
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL >= 4
++libc_cv_have_x86_isa_level=4
++#elif MINIMUM_X86_ISA_LEVEL == 3
++libc_cv_have_x86_isa_level=3
++#elif MINIMUM_X86_ISA_LEVEL == 2
++libc_cv_have_x86_isa_level=2
++#else
++libc_cv_have_x86_isa_level=baseline
++#endif
++EOF
++		 eval `${CC-cc} $CFLAGS $CPPFLAGS $ISAFLAG -I$srcdir -E conftest.c | grep libc_cv_have_x86_isa_level`
++		 rm -rf conftest*
++fi
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_x86_isa_level" >&5
++printf "%s\n" "$libc_cv_have_x86_isa_level" >&6; }
++else
++  libc_cv_have_x86_isa_level=baseline
+ fi
+ config_vars="$config_vars
++have-x86-isa-level = $libc_cv_have_x86_isa_level"
++config_vars="$config_vars
++x86-isa-level-3-or-above = 3 4"
++config_vars="$config_vars
+ enable-x86-isa-level = $libc_cv_include_x86_isa_level"
+ 
+ printf "%s\n" "#define SUPPORT_STATIC_PIE 1" >>confdefs.h
+diff --git a/sysdeps/x86/configure.ac b/sysdeps/x86/configure.ac
+index 437a50623b35163a..78ff7c8f41c552bc 100644
+--- a/sysdeps/x86/configure.ac
++++ b/sysdeps/x86/configure.ac
+@@ -72,6 +72,7 @@ if test $libc_cv_include_x86_isa_level = yes; then
+     fi])
+   if test $libc_cv_have_x86_lahf_sahf = yes; then
+     AC_DEFINE(HAVE_X86_LAHF_SAHF)
++    ISAFLAG="-DHAVE_X86_LAHF_SAHF"
+   fi
+   AC_CACHE_CHECK([for MOVBE instruction support],
+ 		 libc_cv_have_x86_movbe, [dnl
+@@ -81,8 +82,31 @@ if test $libc_cv_include_x86_isa_level = yes; then
+     fi])
+   if test $libc_cv_have_x86_movbe = yes; then
+     AC_DEFINE(HAVE_X86_MOVBE)
++    ISAFLAG="$ISAFLAG -DHAVE_X86_MOVBE"
+   fi
++
++  # Check for ISA level support.
++  AC_CACHE_CHECK([for ISA level support],
++		 libc_cv_have_x86_isa_level, [dnl
++cat > conftest.c <<EOF
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL >= 4
++libc_cv_have_x86_isa_level=4
++#elif MINIMUM_X86_ISA_LEVEL == 3
++libc_cv_have_x86_isa_level=3
++#elif MINIMUM_X86_ISA_LEVEL == 2
++libc_cv_have_x86_isa_level=2
++#else
++libc_cv_have_x86_isa_level=baseline
++#endif
++EOF
++		 eval `${CC-cc} $CFLAGS $CPPFLAGS $ISAFLAG -I$srcdir -E conftest.c | grep libc_cv_have_x86_isa_level`
++		 rm -rf conftest*])
++else
++  libc_cv_have_x86_isa_level=baseline
+ fi
++LIBC_CONFIG_VAR([have-x86-isa-level], [$libc_cv_have_x86_isa_level])
++LIBC_CONFIG_VAR([x86-isa-level-3-or-above], [3 4])
+ LIBC_CONFIG_VAR([enable-x86-isa-level], [$libc_cv_include_x86_isa_level])
+ 
+ dnl Static PIE is supported.
+diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile
+index e1a490dd98b4be07..6ddd50240ce33d22 100644
+--- a/sysdeps/x86_64/fpu/multiarch/Makefile
++++ b/sysdeps/x86_64/fpu/multiarch/Makefile
+@@ -1,49 +1,4 @@
+ ifeq ($(subdir),math)
+-libm-sysdep_routines += \
+-  s_ceil-c \
+-  s_ceilf-c \
+-  s_floor-c \
+-  s_floorf-c \
+-  s_nearbyint-c \
+-  s_nearbyintf-c \
+-  s_rint-c \
+-  s_rintf-c \
+-  s_roundeven-c \
+-  s_roundevenf-c \
+-  s_trunc-c \
+-  s_truncf-c \
+-# libm-sysdep_routines
+-
+-libm-sysdep_routines += \
+-  s_ceil-sse4_1 \
+-  s_ceilf-sse4_1 \
+-  s_floor-sse4_1 \
+-  s_floorf-sse4_1 \
+-  s_nearbyint-sse4_1 \
+-  s_nearbyintf-sse4_1 \
+-  s_rint-sse4_1 \
+-  s_rintf-sse4_1 \
+-  s_roundeven-sse4_1 \
+-  s_roundevenf-sse4_1 \
+-  s_trunc-sse4_1 \
+-  s_truncf-sse4_1 \
+-# libm-sysdep_routines
+-
+-libm-sysdep_routines += \
+-  e_asin-fma \
+-  e_atan2-fma \
+-  e_exp-fma \
+-  e_log-fma \
+-  e_log2-fma \
+-  e_pow-fma \
+-  s_atan-fma \
+-  s_expm1-fma \
+-  s_log1p-fma \
+-  s_sin-fma \
+-  s_sincos-fma \
+-  s_tan-fma \
+-# libm-sysdep_routines
+-
+ CFLAGS-e_asin-fma.c = -mfma -mavx2
+ CFLAGS-e_atan2-fma.c = -mfma -mavx2
+ CFLAGS-e_exp-fma.c = -mfma -mavx2
+@@ -57,23 +12,6 @@ CFLAGS-s_sin-fma.c = -mfma -mavx2
+ CFLAGS-s_tan-fma.c = -mfma -mavx2
+ CFLAGS-s_sincos-fma.c = -mfma -mavx2
+ 
+-libm-sysdep_routines += \
+-  s_cosf-sse2 \
+-  s_sincosf-sse2 \
+-  s_sinf-sse2 \
+-# libm-sysdep_routines
+-
+-libm-sysdep_routines += \
+-  e_exp2f-fma \
+-  e_expf-fma \
+-  e_log2f-fma \
+-  e_logf-fma \
+-  e_powf-fma \
+-  s_cosf-fma \
+-  s_sincosf-fma \
+-  s_sinf-fma \
+-# libm-sysdep_routines
+-
+ CFLAGS-e_exp2f-fma.c = -mfma -mavx2
+ CFLAGS-e_expf-fma.c = -mfma -mavx2
+ CFLAGS-e_log2f-fma.c = -mfma -mavx2
+@@ -83,17 +21,93 @@ CFLAGS-s_sinf-fma.c = -mfma -mavx2
+ CFLAGS-s_cosf-fma.c = -mfma -mavx2
+ CFLAGS-s_sincosf-fma.c = -mfma -mavx2
+ 
++# Check if ISA level is 3 or above.
++ifneq (,$(filter $(have-x86-isa-level),$(x86-isa-level-3-or-above)))
+ libm-sysdep_routines += \
++  s_ceil-avx \
++  s_ceilf-avx \
++  s_floor-avx \
++  s_floorf-avx \
++  s_nearbyint-avx \
++  s_nearbyintf-avx \
++  s_rint-avx \
++  s_rintf-avx \
++  s_roundeven-avx \
++  s_roundevenf-avx \
++  s_trunc-avx \
++  s_truncf-avx \
++# libm-sysdep_routines
++else
++libm-sysdep_routines += \
++  e_asin-fma \
+   e_asin-fma4 \
++  e_atan2-avx \
++  e_atan2-fma \
+   e_atan2-fma4 \
++  e_exp-avx \
++  e_exp-fma \
+   e_exp-fma4 \
++  e_exp2f-fma \
++  e_expf-fma \
++  e_log-avx \
++  e_log-fma \
+   e_log-fma4 \
++  e_log2-fma \
++  e_log2f-fma \
++  e_logf-fma \
++  e_pow-fma \
+   e_pow-fma4 \
++  e_powf-fma \
++  s_atan-avx \
++  s_atan-fma \
+   s_atan-fma4 \
++  s_ceil-sse4_1 \
++  s_ceilf-sse4_1 \
++  s_cosf-fma \
++  s_cosf-sse2 \
++  s_expm1-fma \
++  s_floor-sse4_1 \
++  s_floorf-sse4_1 \
++  s_log1p-fma \
++  s_nearbyint-sse4_1 \
++  s_nearbyintf-sse4_1 \
++  s_rint-sse4_1 \
++  s_rintf-sse4_1 \
++  s_roundeven-sse4_1 \
++  s_roundevenf-sse4_1 \
++  s_sin-avx \
++  s_sin-fma \
+   s_sin-fma4 \
++  s_sincos-avx \
++  s_sincos-fma \
+   s_sincos-fma4 \
++  s_sincosf-fma \
++  s_sincosf-sse2 \
++  s_sinf-fma \
++  s_sinf-sse2 \
++  s_tan-avx \
++  s_tan-fma \
+   s_tan-fma4 \
++  s_trunc-sse4_1 \
++  s_truncf-sse4_1 \
+ # libm-sysdep_routines
++ifeq ($(have-x86-isa-level),baseline)
++libm-sysdep_routines += \
++  s_ceil-c \
++  s_ceilf-c \
++  s_floor-c \
++  s_floorf-c \
++  s_nearbyint-c \
++  s_nearbyintf-c \
++  s_rint-c \
++  s_rintf-c \
++  s_roundeven-c \
++  s_roundevenf-c \
++  s_trunc-c \
++  s_truncf-c \
++# libm-sysdep_routines
++endif
++endif
+ 
+ CFLAGS-e_asin-fma4.c = -mfma4
+ CFLAGS-e_atan2-fma4.c = -mfma4
+@@ -105,16 +119,6 @@ CFLAGS-s_sin-fma4.c = -mfma4
+ CFLAGS-s_tan-fma4.c = -mfma4
+ CFLAGS-s_sincos-fma4.c = -mfma4
+ 
+-libm-sysdep_routines += \
+-  e_atan2-avx \
+-  e_exp-avx \
+-  e_log-avx \
+-  s_atan-avx \
+-  s_sin-avx \
+-  s_sincos-avx \
+-  s_tan-avx \
+-# libm-sysdep_routines
+-
+ CFLAGS-e_atan2-avx.c = -msse2avx -DSSE2AVX
+ CFLAGS-e_exp-avx.c = -msse2avx -DSSE2AVX
+ CFLAGS-e_log-avx.c = -msse2avx -DSSE2AVX
+diff --git a/sysdeps/x86_64/fpu/multiarch/e_asin.c b/sysdeps/x86_64/fpu/multiarch/e_asin.c
+index 2eaa6c2c0490d8fc..d64fca2586d43f03 100644
+--- a/sysdeps/x86_64/fpu/multiarch/e_asin.c
++++ b/sysdeps/x86_64/fpu/multiarch/e_asin.c
+@@ -16,26 +16,29 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-finite.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-finite.h>
+ 
+ extern double __redirect_ieee754_asin (double);
+ extern double __redirect_ieee754_acos (double);
+ 
+-#define SYMBOL_NAME ieee754_asin
+-#include "ifunc-fma4.h"
++# define SYMBOL_NAME ieee754_asin
++# include "ifunc-fma4.h"
+ 
+ libc_ifunc_redirected (__redirect_ieee754_asin, __ieee754_asin,
+ 		       IFUNC_SELECTOR ());
+ libm_alias_finite (__ieee754_asin, __asin)
+ 
+-#undef SYMBOL_NAME
+-#define SYMBOL_NAME ieee754_acos
+-#include "ifunc-fma4.h"
++# undef SYMBOL_NAME
++# define SYMBOL_NAME ieee754_acos
++# include "ifunc-fma4.h"
+ 
+ libc_ifunc_redirected (__redirect_ieee754_acos, __ieee754_acos,
+ 		       IFUNC_SELECTOR ());
+ libm_alias_finite (__ieee754_acos, __acos)
+ 
+-#define __ieee754_acos __ieee754_acos_sse2
+-#define __ieee754_asin __ieee754_asin_sse2
++# define __ieee754_acos __ieee754_acos_sse2
++# define __ieee754_asin __ieee754_asin_sse2
++#endif
+ #include <sysdeps/ieee754/dbl-64/e_asin.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/e_atan2.c b/sysdeps/x86_64/fpu/multiarch/e_atan2.c
+index 17ee4f3c366b57c4..8a86c14ded1784dd 100644
+--- a/sysdeps/x86_64/fpu/multiarch/e_atan2.c
++++ b/sysdeps/x86_64/fpu/multiarch/e_atan2.c
+@@ -16,16 +16,19 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-finite.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-finite.h>
+ 
+ extern double __redirect_ieee754_atan2 (double, double);
+ 
+-#define SYMBOL_NAME ieee754_atan2
+-#include "ifunc-avx-fma4.h"
++# define SYMBOL_NAME ieee754_atan2
++# include "ifunc-avx-fma4.h"
+ 
+ libc_ifunc_redirected (__redirect_ieee754_atan2,
+ 		       __ieee754_atan2, IFUNC_SELECTOR ());
+ libm_alias_finite (__ieee754_atan2, __atan2)
+ 
+-#define __ieee754_atan2 __ieee754_atan2_sse2
++# define __ieee754_atan2 __ieee754_atan2_sse2
++#endif
+ #include <sysdeps/ieee754/dbl-64/e_atan2.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp.c b/sysdeps/x86_64/fpu/multiarch/e_exp.c
+index 406b7ebd44d8eba1..d56329291a204ecf 100644
+--- a/sysdeps/x86_64/fpu/multiarch/e_exp.c
++++ b/sysdeps/x86_64/fpu/multiarch/e_exp.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <math.h>
+-#include <libm-alias-finite.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <math.h>
++# include <libm-alias-finite.h>
+ 
+ extern double __redirect_ieee754_exp (double);
+ 
+-#define SYMBOL_NAME ieee754_exp
+-#include "ifunc-avx-fma4.h"
++# define SYMBOL_NAME ieee754_exp
++# include "ifunc-avx-fma4.h"
+ 
+ libc_ifunc_redirected (__redirect_ieee754_exp, __ieee754_exp,
+ 		       IFUNC_SELECTOR ());
+ libm_alias_finite (__ieee754_exp, __exp)
+ 
+-#define __exp __ieee754_exp_sse2
++# define __exp __ieee754_exp_sse2
++#endif
+ #include <sysdeps/ieee754/dbl-64/e_exp.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp2f.c b/sysdeps/x86_64/fpu/multiarch/e_exp2f.c
+index 804fd6be850926b3..06fe5028d6e72122 100644
+--- a/sysdeps/x86_64/fpu/multiarch/e_exp2f.c
++++ b/sysdeps/x86_64/fpu/multiarch/e_exp2f.c
+@@ -16,25 +16,28 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-float.h>
+-#include <libm-alias-finite.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-float.h>
++# include <libm-alias-finite.h>
+ 
+ extern float __redirect_exp2f (float);
+ 
+-#define SYMBOL_NAME exp2f
+-#include "ifunc-fma.h"
++# define SYMBOL_NAME exp2f
++# include "ifunc-fma.h"
+ 
+ libc_ifunc_redirected (__redirect_exp2f, __exp2f, IFUNC_SELECTOR ());
+ 
+-#ifdef SHARED
++# ifdef SHARED
+ versioned_symbol (libm, __ieee754_exp2f, exp2f, GLIBC_2_27);
+ libm_alias_float_other (__exp2, exp2)
+-#else
++# else
+ libm_alias_float (__exp2, exp2)
+-#endif
++# endif
+ 
+ strong_alias (__exp2f, __ieee754_exp2f)
+ libm_alias_finite (__exp2f, __exp2f)
+ 
+-#define __exp2f __exp2f_sse2
++# define __exp2f __exp2f_sse2
++#endif
+ #include <sysdeps/ieee754/flt-32/e_exp2f.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/e_expf.c b/sysdeps/x86_64/fpu/multiarch/e_expf.c
+index 4a7e2a5bce697d60..19d767f636126c8d 100644
+--- a/sysdeps/x86_64/fpu/multiarch/e_expf.c
++++ b/sysdeps/x86_64/fpu/multiarch/e_expf.c
+@@ -16,28 +16,31 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-float.h>
+-#include <libm-alias-finite.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-float.h>
++# include <libm-alias-finite.h>
+ 
+ extern float __redirect_expf (float);
+ 
+-#define SYMBOL_NAME expf
+-#include "ifunc-fma.h"
++# define SYMBOL_NAME expf
++# include "ifunc-fma.h"
+ 
+ libc_ifunc_redirected (__redirect_expf, __expf, IFUNC_SELECTOR ());
+ 
+-#ifdef SHARED
++# ifdef SHARED
+ __hidden_ver1 (__expf, __GI___expf, __redirect_expf)
+   __attribute__ ((visibility ("hidden")));
+ 
+ versioned_symbol (libm, __ieee754_expf, expf, GLIBC_2_27);
+ libm_alias_float_other (__exp, exp)
+-#else
++# else
+ libm_alias_float (__exp, exp)
+-#endif
++# endif
+ 
+ strong_alias (__expf, __ieee754_expf)
+ libm_alias_finite (__expf, __expf)
+ 
+-#define __expf __expf_sse2
++# define __expf __expf_sse2
++#endif
+ #include <sysdeps/ieee754/flt-32/e_expf.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/e_log.c b/sysdeps/x86_64/fpu/multiarch/e_log.c
+index 067fbf58c3f8e0f5..d80c1b1463954af8 100644
+--- a/sysdeps/x86_64/fpu/multiarch/e_log.c
++++ b/sysdeps/x86_64/fpu/multiarch/e_log.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <math.h>
+-#include <libm-alias-finite.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <math.h>
++# include <libm-alias-finite.h>
+ 
+ extern double __redirect_ieee754_log (double);
+ 
+-#define SYMBOL_NAME ieee754_log
+-#include "ifunc-avx-fma4.h"
++# define SYMBOL_NAME ieee754_log
++# include "ifunc-avx-fma4.h"
+ 
+ libc_ifunc_redirected (__redirect_ieee754_log, __ieee754_log,
+ 		       IFUNC_SELECTOR ());
+ libm_alias_finite (__ieee754_log, __log)
+ 
+-#define __log __ieee754_log_sse2
++# define __log __ieee754_log_sse2
++#endif
+ #include <sysdeps/ieee754/dbl-64/e_log.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/e_log2.c b/sysdeps/x86_64/fpu/multiarch/e_log2.c
+index 9c57a2f6ccfcbdfd..9686782c09b1f343 100644
+--- a/sysdeps/x86_64/fpu/multiarch/e_log2.c
++++ b/sysdeps/x86_64/fpu/multiarch/e_log2.c
+@@ -16,28 +16,31 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-double.h>
+-#include <libm-alias-finite.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-double.h>
++# include <libm-alias-finite.h>
+ 
+ extern double __redirect_log2 (double);
+ 
+-#define SYMBOL_NAME log2
+-#include "ifunc-fma.h"
++# define SYMBOL_NAME log2
++# include "ifunc-fma.h"
+ 
+ libc_ifunc_redirected (__redirect_log2, __log2, IFUNC_SELECTOR ());
+ 
+-#ifdef SHARED
++# ifdef SHARED
+ __hidden_ver1 (__log2, __GI___log2, __redirect_log2)
+   __attribute__ ((visibility ("hidden")));
+ 
+ versioned_symbol (libm, __ieee754_log2, log2, GLIBC_2_29);
+ libm_alias_double_other (__log2, log2)
+-#else
++# else
+ libm_alias_double (__log2, log2)
+-#endif
++# endif
+ 
+ strong_alias (__log2, __ieee754_log2)
+ libm_alias_finite (__log2, __log2)
+ 
+-#define __log2 __log2_sse2
++# define __log2 __log2_sse2
++#endif
+ #include <sysdeps/ieee754/dbl-64/e_log2.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/e_log2f.c b/sysdeps/x86_64/fpu/multiarch/e_log2f.c
+index 2b45c87f38afea62..8ada46e11e62726c 100644
+--- a/sysdeps/x86_64/fpu/multiarch/e_log2f.c
++++ b/sysdeps/x86_64/fpu/multiarch/e_log2f.c
+@@ -16,28 +16,31 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-float.h>
+-#include <libm-alias-finite.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-float.h>
++# include <libm-alias-finite.h>
+ 
+ extern float __redirect_log2f (float);
+ 
+-#define SYMBOL_NAME log2f
+-#include "ifunc-fma.h"
++# define SYMBOL_NAME log2f
++# include "ifunc-fma.h"
+ 
+ libc_ifunc_redirected (__redirect_log2f, __log2f, IFUNC_SELECTOR ());
+ 
+-#ifdef SHARED
++# ifdef SHARED
+ __hidden_ver1 (__log2f, __GI___log2f, __redirect_log2f)
+   __attribute__ ((visibility ("hidden")));
+ 
+ versioned_symbol (libm, __ieee754_log2f, log2f, GLIBC_2_27);
+ libm_alias_float_other (__log2, log2)
+-#else
++# else
+ libm_alias_float (__log2, log2)
+-#endif
++# endif
+ 
+ strong_alias (__log2f, __ieee754_log2f)
+ libm_alias_finite (__log2f, __log2f)
+ 
+-#define __log2f __log2f_sse2
++# define __log2f __log2f_sse2
++#endif
+ #include <sysdeps/ieee754/flt-32/e_log2f.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/e_logf.c b/sysdeps/x86_64/fpu/multiarch/e_logf.c
+index 97e23c8fea39f37e..a3978d9a8e40c588 100644
+--- a/sysdeps/x86_64/fpu/multiarch/e_logf.c
++++ b/sysdeps/x86_64/fpu/multiarch/e_logf.c
+@@ -16,28 +16,31 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-float.h>
+-#include <libm-alias-finite.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-float.h>
++# include <libm-alias-finite.h>
+ 
+ extern float __redirect_logf (float);
+ 
+-#define SYMBOL_NAME logf
+-#include "ifunc-fma.h"
++# define SYMBOL_NAME logf
++# include "ifunc-fma.h"
+ 
+ libc_ifunc_redirected (__redirect_logf, __logf, IFUNC_SELECTOR ());
+ 
+-#ifdef SHARED
++# ifdef SHARED
+ __hidden_ver1 (__logf, __GI___logf, __redirect_logf)
+   __attribute__ ((visibility ("hidden")));
+ 
+ versioned_symbol (libm, __ieee754_logf, logf, GLIBC_2_27);
+ libm_alias_float_other (__log, log)
+-#else
++# else
+ libm_alias_float (__log, log)
+-#endif
++# endif
+ 
+ strong_alias (__logf, __ieee754_logf)
+ libm_alias_finite (__logf, __logf)
+ 
+-#define __logf __logf_sse2
++# define __logf __logf_sse2
++#endif
+ #include <sysdeps/ieee754/flt-32/e_logf.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/e_pow.c b/sysdeps/x86_64/fpu/multiarch/e_pow.c
+index 42618e7112fac769..f8f17aff9ffb9bf2 100644
+--- a/sysdeps/x86_64/fpu/multiarch/e_pow.c
++++ b/sysdeps/x86_64/fpu/multiarch/e_pow.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <math.h>
+-#include <libm-alias-finite.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <math.h>
++# include <libm-alias-finite.h>
+ 
+ extern double __redirect_ieee754_pow (double, double);
+ 
+-#define SYMBOL_NAME ieee754_pow
+-#include "ifunc-fma4.h"
++# define SYMBOL_NAME ieee754_pow
++# include "ifunc-fma4.h"
+ 
+ libc_ifunc_redirected (__redirect_ieee754_pow,
+ 		       __ieee754_pow, IFUNC_SELECTOR ());
+ libm_alias_finite (__ieee754_pow, __pow)
+ 
+-#define __pow __ieee754_pow_sse2
++# define __pow __ieee754_pow_sse2
++#endif
+ #include <sysdeps/ieee754/dbl-64/e_pow.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/e_powf.c b/sysdeps/x86_64/fpu/multiarch/e_powf.c
+index 8e6ce13cc1a2470b..8b1a4c7d047115f5 100644
+--- a/sysdeps/x86_64/fpu/multiarch/e_powf.c
++++ b/sysdeps/x86_64/fpu/multiarch/e_powf.c
+@@ -16,31 +16,34 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-float.h>
+-#include <libm-alias-finite.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-float.h>
++# include <libm-alias-finite.h>
+ 
+-#define powf __redirect_powf
+-#define __DECL_SIMD___redirect_powf
+-#include <math.h>
+-#undef powf
++# define powf __redirect_powf
++# define __DECL_SIMD___redirect_powf
++# include <math.h>
++# undef powf
+ 
+-#define SYMBOL_NAME powf
+-#include "ifunc-fma.h"
++# define SYMBOL_NAME powf
++# include "ifunc-fma.h"
+ 
+ libc_ifunc_redirected (__redirect_powf, __powf, IFUNC_SELECTOR ());
+ 
+-#ifdef SHARED
++# ifdef SHARED
+ __hidden_ver1 (__powf, __GI___powf, __redirect_powf)
+   __attribute__ ((visibility ("hidden")));
+ 
+ versioned_symbol (libm, __ieee754_powf, powf, GLIBC_2_27);
+ libm_alias_float_other (__pow, pow)
+-#else
++# else
+ libm_alias_float (__pow, pow)
+-#endif
++# endif
+ 
+ strong_alias (__powf, __ieee754_powf)
+ libm_alias_finite (__powf, __powf)
+ 
+-#define __powf __powf_sse2
++# define __powf __powf_sse2
++#endif
+ #include <sysdeps/ieee754/flt-32/e_powf.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_atan.c b/sysdeps/x86_64/fpu/multiarch/s_atan.c
+index 71bad096a9da60fe..4d2c6ce0060b6d8f 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_atan.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_atan.c
+@@ -16,15 +16,18 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-double.h>
+ 
+ extern double __redirect_atan (double);
+ 
+-#define SYMBOL_NAME atan
+-#include "ifunc-avx-fma4.h"
++# define SYMBOL_NAME atan
++# include "ifunc-avx-fma4.h"
+ 
+ libc_ifunc_redirected (__redirect_atan, __atan, IFUNC_SELECTOR ());
+ libm_alias_double (__atan, atan)
+ 
+-#define __atan __atan_sse2
++# define __atan __atan_sse2
++#endif
+ #include <sysdeps/ieee754/dbl-64/s_atan.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_ceil-avx.S b/sysdeps/x86_64/fpu/multiarch/s_ceil-avx.S
+new file mode 100644
+index 0000000000000000..e6c1106753f29600
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_ceil-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implementation of ceil function.
++   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>
++#include <libm-alias-double.h>
++
++	.text
++ENTRY(__ceil)
++	vroundsd $10, %xmm0, %xmm0, %xmm0
++	ret
++END(__ceil)
++
++libm_alias_double (__ceil, ceil)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_ceil-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_ceil-sse4_1.S
+index 64119011add00832..dba756c38f47b871 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_ceil-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_ceil-sse4_1.S
+@@ -17,8 +17,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-double.h>
++# define __ceil_sse41 __ceil
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__ceil_sse41)
+ 	roundsd	$10, %xmm0, %xmm0
+ 	ret
+ END(__ceil_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_double (__ceil, ceil)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_ceil.c b/sysdeps/x86_64/fpu/multiarch/s_ceil.c
+index cc028addee82f19c..46c8e91e199311db 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_ceil.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_ceil.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#define NO_MATH_REDIRECT
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# define NO_MATH_REDIRECT
++# include <libm-alias-double.h>
+ 
+-#define ceil __redirect_ceil
+-#define __ceil __redirect___ceil
+-#include <math.h>
+-#undef ceil
+-#undef __ceil
++# define ceil __redirect_ceil
++# define __ceil __redirect___ceil
++# include <math.h>
++# undef ceil
++# undef __ceil
+ 
+-#define SYMBOL_NAME ceil
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME ceil
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_ceil, __ceil, IFUNC_SELECTOR ());
+ libm_alias_double (__ceil, ceil)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_ceilf-avx.S b/sysdeps/x86_64/fpu/multiarch/s_ceilf-avx.S
+new file mode 100644
+index 0000000000000000..b4d8ac045569900c
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_ceilf-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implementation of ceilf function.
++   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>
++#include <libm-alias-float.h>
++
++	.text
++ENTRY(__ceilf)
++	vroundss $10, %xmm0, %xmm0, %xmm0
++	ret
++END(__ceilf)
++
++libm_alias_float (__ceil, ceil)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_ceilf-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_ceilf-sse4_1.S
+index dd9a9f6b71449fc4..9abc87b91afafcbb 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_ceilf-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_ceilf-sse4_1.S
+@@ -17,8 +17,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-float.h>
++# define __ceilf_sse41 __ceilf
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__ceilf_sse41)
+ 	roundss	$10, %xmm0, %xmm0
+ 	ret
+ END(__ceilf_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_float (__ceil, ceil)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_ceilf.c b/sysdeps/x86_64/fpu/multiarch/s_ceilf.c
+index 97a0ca7d19a0d8dd..bb53108f73c00fd0 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_ceilf.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_ceilf.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#define NO_MATH_REDIRECT
+-#include <libm-alias-float.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# define NO_MATH_REDIRECT
++# include <libm-alias-float.h>
+ 
+-#define ceilf __redirect_ceilf
+-#define __ceilf __redirect___ceilf
+-#include <math.h>
+-#undef ceilf
+-#undef __ceilf
++# define ceilf __redirect_ceilf
++# define __ceilf __redirect___ceilf
++# include <math.h>
++# undef ceilf
++# undef __ceilf
+ 
+-#define SYMBOL_NAME ceilf
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME ceilf
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_ceilf, __ceilf, IFUNC_SELECTOR ());
+ libm_alias_float (__ceil, ceil)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_cosf.c b/sysdeps/x86_64/fpu/multiarch/s_cosf.c
+index 2703c576dfa715ce..8a02e04538841602 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_cosf.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_cosf.c
+@@ -16,13 +16,18 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-float.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-float.h>
+ 
+ extern float __redirect_cosf (float);
+ 
+-#define SYMBOL_NAME cosf
+-#include "ifunc-fma.h"
++# define SYMBOL_NAME cosf
++# include "ifunc-fma.h"
+ 
+ libc_ifunc_redirected (__redirect_cosf, __cosf, IFUNC_SELECTOR ());
+ 
+ libm_alias_float (__cos, cos)
++#else
++# include <sysdeps/ieee754/flt-32/s_cosf.c>
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_expm1.c b/sysdeps/x86_64/fpu/multiarch/s_expm1.c
+index 8a2d69f9b28fb03d..d58ef3d8f5e7933f 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_expm1.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_expm1.c
+@@ -16,21 +16,24 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-double.h>
+ 
+ extern double __redirect_expm1 (double);
+ 
+-#define SYMBOL_NAME expm1
+-#include "ifunc-fma.h"
++# define SYMBOL_NAME expm1
++# include "ifunc-fma.h"
+ 
+ libc_ifunc_redirected (__redirect_expm1, __expm1, IFUNC_SELECTOR ());
+ libm_alias_double (__expm1, expm1)
+ 
+-#define __expm1 __expm1_sse2
++# define __expm1 __expm1_sse2
+ 
+ /* NB: __expm1 may be expanded to __expm1_sse2 in the following
+    prototypes.  */
+ extern long double __expm1l (long double);
+ extern long double __expm1f128 (long double);
+ 
++#endif
+ #include <sysdeps/ieee754/dbl-64/s_expm1.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_floor-avx.S b/sysdeps/x86_64/fpu/multiarch/s_floor-avx.S
+new file mode 100644
+index 0000000000000000..ff74b5a8bfe69423
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_floor-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implementation of floor function.
++   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>
++#include <libm-alias-double.h>
++
++	.text
++ENTRY(__floor)
++	vroundsd $9, %xmm0, %xmm0, %xmm0
++	ret
++END(__floor)
++
++libm_alias_double (__floor, floor)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_floor-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_floor-sse4_1.S
+index 2f7521f39f5e1c63..c9b9b0639bd24182 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_floor-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_floor-sse4_1.S
+@@ -17,8 +17,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-double.h>
++# define __floor_sse41 __floor
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__floor_sse41)
+ 	roundsd	$9, %xmm0, %xmm0
+ 	ret
+ END(__floor_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_double (__floor, floor)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_floor.c b/sysdeps/x86_64/fpu/multiarch/s_floor.c
+index 8cebd48e1008af6e..2c87dd0056419492 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_floor.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_floor.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#define NO_MATH_REDIRECT
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# define NO_MATH_REDIRECT
++# include <libm-alias-double.h>
+ 
+-#define floor __redirect_floor
+-#define __floor __redirect___floor
+-#include <math.h>
+-#undef floor
+-#undef __floor
++# define floor __redirect_floor
++# define __floor __redirect___floor
++# include <math.h>
++# undef floor
++# undef __floor
+ 
+-#define SYMBOL_NAME floor
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME floor
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_floor, __floor, IFUNC_SELECTOR ());
+ libm_alias_double (__floor, floor)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_floorf-avx.S b/sysdeps/x86_64/fpu/multiarch/s_floorf-avx.S
+new file mode 100644
+index 0000000000000000..c378baae8e9c7ac7
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_floorf-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implementation of floorf function.
++   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>
++#include <libm-alias-float.h>
++
++	.text
++ENTRY(__floorf)
++	vroundss $9, %xmm0, %xmm0, %xmm0
++	ret
++END(__floorf)
++
++libm_alias_float (__floor, floor)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_floorf-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_floorf-sse4_1.S
+index 5f6020d27daceb80..c2216899db7b71a3 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_floorf-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_floorf-sse4_1.S
+@@ -17,8 +17,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-float.h>
++# define __floorf_sse41 __floorf
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__floorf_sse41)
+ 	roundss	$9, %xmm0, %xmm0
+ 	ret
+ END(__floorf_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_float (__floor, floor)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_floorf.c b/sysdeps/x86_64/fpu/multiarch/s_floorf.c
+index a14e18b03c1a1dc9..a277802b6ddc1dfd 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_floorf.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_floorf.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#define NO_MATH_REDIRECT
+-#include <libm-alias-float.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# define NO_MATH_REDIRECT
++# include <libm-alias-float.h>
+ 
+-#define floorf __redirect_floorf
+-#define __floorf __redirect___floorf
+-#include <math.h>
+-#undef floorf
+-#undef __floorf
++# define floorf __redirect_floorf
++# define __floorf __redirect___floorf
++# include <math.h>
++# undef floorf
++# undef __floorf
+ 
+-#define SYMBOL_NAME floorf
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME floorf
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_floorf, __floorf, IFUNC_SELECTOR ());
+ libm_alias_float (__floor, floor)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_log1p.c b/sysdeps/x86_64/fpu/multiarch/s_log1p.c
+index a8e1a3f21b17236c..3fa1185d81af33e7 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_log1p.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_log1p.c
+@@ -16,14 +16,17 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-double.h>
+ 
+ extern double __redirect_log1p (double);
+ 
+-#define SYMBOL_NAME log1p
+-#include "ifunc-fma.h"
++# define SYMBOL_NAME log1p
++# include "ifunc-fma.h"
+ 
+ libc_ifunc_redirected (__redirect_log1p, __log1p, IFUNC_SELECTOR ());
+ 
+-#define __log1p __log1p_sse2
++# define __log1p __log1p_sse2
++#endif
+ #include <sysdeps/ieee754/dbl-64/s_log1p.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_nearbyint-avx.S b/sysdeps/x86_64/fpu/multiarch/s_nearbyint-avx.S
+new file mode 100644
+index 0000000000000000..5bfdf73c28b34350
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_nearbyint-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implementation of nearbyint function.
++   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>
++#include <libm-alias-double.h>
++
++	.text
++ENTRY(__nearbyint)
++	vroundsd $0xc, %xmm0, %xmm0, %xmm0
++	ret
++END(__nearbyint)
++
++libm_alias_double (__nearbyint, nearbyint)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_nearbyint-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_nearbyint-sse4_1.S
+index 674f7eb40abb33d9..9d84410a1f347b7a 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_nearbyint-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_nearbyint-sse4_1.S
+@@ -17,8 +17,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-double.h>
++# define __nearbyint_sse41 __nearbyint
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__nearbyint_sse41)
+ 	roundsd	$0xc, %xmm0, %xmm0
+ 	ret
+ END(__nearbyint_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_double (__nearbyint, nearbyint)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_nearbyint.c b/sysdeps/x86_64/fpu/multiarch/s_nearbyint.c
+index 693e42dd4edffcc1..057a7ca60f0853cf 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_nearbyint.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_nearbyint.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-double.h>
+ 
+-#define nearbyint __redirect_nearbyint
+-#define __nearbyint __redirect___nearbyint
+-#include <math.h>
+-#undef nearbyint
+-#undef __nearbyint
++# define nearbyint __redirect_nearbyint
++# define __nearbyint __redirect___nearbyint
++# include <math.h>
++# undef nearbyint
++# undef __nearbyint
+ 
+-#define SYMBOL_NAME nearbyint
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME nearbyint
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_nearbyint, __nearbyint,
+ 		       IFUNC_SELECTOR ());
+ libm_alias_double (__nearbyint, nearbyint)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_nearbyintf-avx.S b/sysdeps/x86_64/fpu/multiarch/s_nearbyintf-avx.S
+new file mode 100644
+index 0000000000000000..1dbaed0324daa024
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_nearbyintf-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implmentation of nearbyintf function.
++   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>
++#include <libm-alias-float.h>
++
++	.text
++ENTRY(__nearbyintf)
++	vroundss $0xc, %xmm0, %xmm0, %xmm0
++	ret
++END(__nearbyintf)
++
++libm_alias_float (__nearbyint, nearbyint)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_nearbyintf-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_nearbyintf-sse4_1.S
+index 5892bd756366f076..3cf35f92d6a0ea9b 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_nearbyintf-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_nearbyintf-sse4_1.S
+@@ -17,8 +17,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-float.h>
++# define __nearbyintf_sse41 __nearbyintf
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__nearbyintf_sse41)
+ 	roundss	$0xc, %xmm0, %xmm0
+ 	ret
+ END(__nearbyintf_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_float (__nearbyint, nearbyint)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_nearbyintf.c b/sysdeps/x86_64/fpu/multiarch/s_nearbyintf.c
+index a0ac009f4bd43baa..41f374ba72902bcf 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_nearbyintf.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_nearbyintf.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-float.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-float.h>
+ 
+-#define nearbyintf __redirect_nearbyintf
+-#define __nearbyintf __redirect___nearbyintf
+-#include <math.h>
+-#undef nearbyintf
+-#undef __nearbyintf
++# define nearbyintf __redirect_nearbyintf
++# define __nearbyintf __redirect___nearbyintf
++# include <math.h>
++# undef nearbyintf
++# undef __nearbyintf
+ 
+-#define SYMBOL_NAME nearbyintf
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME nearbyintf
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_nearbyintf, __nearbyintf,
+ 		       IFUNC_SELECTOR ());
+ libm_alias_float (__nearbyint, nearbyint)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_rint-avx.S b/sysdeps/x86_64/fpu/multiarch/s_rint-avx.S
+new file mode 100644
+index 0000000000000000..2b403b331f145221
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_rint-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implementation of rint function.
++   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>
++#include <libm-alias-double.h>
++
++	.text
++ENTRY(__rint)
++	vroundsd $4, %xmm0, %xmm0, %xmm0
++	ret
++END(__rint)
++
++libm_alias_double (__rint, rint)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_rint-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_rint-sse4_1.S
+index 405372991bfac3d0..8cd9cf759f3ac70c 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_rint-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_rint-sse4_1.S
+@@ -17,8 +17,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-double.h>
++# define __rint_sse41 __rint
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__rint_sse41)
+ 	roundsd	$4, %xmm0, %xmm0
+ 	ret
+ END(__rint_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_double (__rint, rint)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_rint.c b/sysdeps/x86_64/fpu/multiarch/s_rint.c
+index 754c87e004f4b006..18623b7d99d1a26e 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_rint.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_rint.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#define NO_MATH_REDIRECT
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# define NO_MATH_REDIRECT
++# include <libm-alias-double.h>
+ 
+-#define rint __redirect_rint
+-#define __rint __redirect___rint
+-#include <math.h>
+-#undef rint
+-#undef __rint
++# define rint __redirect_rint
++# define __rint __redirect___rint
++# include <math.h>
++# undef rint
++# undef __rint
+ 
+-#define SYMBOL_NAME rint
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME rint
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_rint, __rint, IFUNC_SELECTOR ());
+ libm_alias_double (__rint, rint)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_rintf-avx.S b/sysdeps/x86_64/fpu/multiarch/s_rintf-avx.S
+new file mode 100644
+index 0000000000000000..171c2867f4ab4e3c
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_rintf-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implementation of rintf function.
++   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>
++#include <libm-alias-float.h>
++
++	.text
++ENTRY(__rintf)
++	vroundss $4, %xmm0, %xmm0, %xmm0
++	ret
++END(__rintf)
++
++libm_alias_float (__rint, rint)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_rintf-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_rintf-sse4_1.S
+index 8ac67ce7673d2aca..fc1e70f0c9a068e4 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_rintf-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_rintf-sse4_1.S
+@@ -17,8 +17,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-float.h>
++# define __rintf_sse41 __rintf
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__rintf_sse41)
+ 	roundss	$4, %xmm0, %xmm0
+ 	ret
+ END(__rintf_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_float (__rint, rint)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_rintf.c b/sysdeps/x86_64/fpu/multiarch/s_rintf.c
+index e9d6b7a5f2080b8b..e275368decba8359 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_rintf.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_rintf.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#define NO_MATH_REDIRECT
+-#include <libm-alias-float.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# define NO_MATH_REDIRECT
++# include <libm-alias-float.h>
+ 
+-#define rintf __redirect_rintf
+-#define __rintf __redirect___rintf
+-#include <math.h>
+-#undef rintf
+-#undef __rintf
++# define rintf __redirect_rintf
++# define __rintf __redirect___rintf
++# include <math.h>
++# undef rintf
++# undef __rintf
+ 
+-#define SYMBOL_NAME rintf
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME rintf
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_rintf, __rintf, IFUNC_SELECTOR ());
+ libm_alias_float (__rint, rint)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundeven-avx.S b/sysdeps/x86_64/fpu/multiarch/s_roundeven-avx.S
+new file mode 100644
+index 0000000000000000..576790355c6b493f
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_roundeven-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implementation of roundeven function.
++   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>
++#include <libm-alias-double.h>
++
++	.text
++ENTRY(__roundeven)
++	vroundsd $8, %xmm0, %xmm0, %xmm0
++	ret
++END(__roundeven)
++
++libm_alias_double (__roundeven, roundeven)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S
+index 5ef102336bfa9e2b..f00be56c592a614d 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S
+@@ -17,8 +17,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-double.h>
++# define __roundeven_sse41 __roundeven
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__roundeven_sse41)
+ 	roundsd	$8, %xmm0, %xmm0
+ 	ret
+ END(__roundeven_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_double (__roundeven, roundeven)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundeven.c b/sysdeps/x86_64/fpu/multiarch/s_roundeven.c
+index 8737b32e2604290a..139aad088f59c957 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_roundeven.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_roundeven.c
+@@ -16,16 +16,19 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-double.h>
+ 
+-#define roundeven __redirect_roundeven
+-#define __roundeven __redirect___roundeven
+-#include <math.h>
+-#undef roundeven
+-#undef __roundeven
++# define roundeven __redirect_roundeven
++# define __roundeven __redirect___roundeven
++# include <math.h>
++# undef roundeven
++# undef __roundeven
+ 
+-#define SYMBOL_NAME roundeven
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME roundeven
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_roundeven, __roundeven, IFUNC_SELECTOR ());
+ libm_alias_double (__roundeven, roundeven)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundevenf-avx.S b/sysdeps/x86_64/fpu/multiarch/s_roundevenf-avx.S
+new file mode 100644
+index 0000000000000000..42c359f4cd04fc56
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_roundevenf-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implementation of roundevenf function.
++   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>
++#include <libm-alias-float.h>
++
++	.text
++ENTRY(__roundevenf)
++	vroundss $8, %xmm0, %xmm0, %xmm0
++	ret
++END(__roundevenf)
++
++libm_alias_float (__roundeven, roundeven)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundevenf-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_roundevenf-sse4_1.S
+index 792c90ba07a3f985..6b148e435316816f 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_roundevenf-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_roundevenf-sse4_1.S
+@@ -17,8 +17,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-float.h>
++# define __roundevenf_sse41 __roundevenf
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__roundevenf_sse41)
+ 	roundss	$8, %xmm0, %xmm0
+ 	ret
+ END(__roundevenf_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_float (__roundeven, roundeven)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_roundevenf.c b/sysdeps/x86_64/fpu/multiarch/s_roundevenf.c
+index e96016a4d5ba7b39..2fb090075d328ae8 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_roundevenf.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_roundevenf.c
+@@ -16,16 +16,19 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-float.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-float.h>
+ 
+-#define roundevenf __redirect_roundevenf
+-#define __roundevenf __redirect___roundevenf
+-#include <math.h>
+-#undef roundevenf
+-#undef __roundevenf
++# define roundevenf __redirect_roundevenf
++# define __roundevenf __redirect___roundevenf
++# include <math.h>
++# undef roundevenf
++# undef __roundevenf
+ 
+-#define SYMBOL_NAME roundevenf
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME roundevenf
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_roundevenf, __roundevenf, IFUNC_SELECTOR ());
+ libm_alias_float (__roundeven, roundeven)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_sin.c b/sysdeps/x86_64/fpu/multiarch/s_sin.c
+index 355cc0092eda46a6..21e77943a3662cd6 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_sin.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_sin.c
+@@ -16,24 +16,27 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-double.h>
+ 
+ extern double __redirect_sin (double);
+ extern double __redirect_cos (double);
+ 
+-#define SYMBOL_NAME sin
+-#include "ifunc-avx-fma4.h"
++# define SYMBOL_NAME sin
++# include "ifunc-avx-fma4.h"
+ 
+ libc_ifunc_redirected (__redirect_sin, __sin, IFUNC_SELECTOR ());
+ libm_alias_double (__sin, sin)
+ 
+-#undef SYMBOL_NAME
+-#define SYMBOL_NAME cos
+-#include "ifunc-avx-fma4.h"
++# undef SYMBOL_NAME
++# define SYMBOL_NAME cos
++# include "ifunc-avx-fma4.h"
+ 
+ libc_ifunc_redirected (__redirect_cos, __cos, IFUNC_SELECTOR ());
+ libm_alias_double (__cos, cos)
+ 
+-#define __cos __cos_sse2
+-#define __sin __sin_sse2
++# define __cos __cos_sse2
++# define __sin __sin_sse2
++#endif
+ #include <sysdeps/ieee754/dbl-64/s_sin.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_sincos.c b/sysdeps/x86_64/fpu/multiarch/s_sincos.c
+index 70107e999c39da91..b35757f8de4f9d2d 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_sincos.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_sincos.c
+@@ -16,15 +16,18 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-double.h>
+ 
+ extern void __redirect_sincos (double, double *, double *);
+ 
+-#define SYMBOL_NAME sincos
+-#include "ifunc-fma4.h"
++# define SYMBOL_NAME sincos
++# include "ifunc-fma4.h"
+ 
+ libc_ifunc_redirected (__redirect_sincos, __sincos, IFUNC_SELECTOR ());
+ libm_alias_double (__sincos, sincos)
+ 
+-#define __sincos __sincos_sse2
++# define __sincos __sincos_sse2
++#endif
+ #include <sysdeps/ieee754/dbl-64/s_sincos.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_sincosf.c b/sysdeps/x86_64/fpu/multiarch/s_sincosf.c
+index 80bc028451e5153c..0ea9b40e844a2b22 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_sincosf.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_sincosf.c
+@@ -16,13 +16,18 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-float.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-float.h>
+ 
+ extern void __redirect_sincosf (float, float *, float *);
+ 
+-#define SYMBOL_NAME sincosf
+-#include "ifunc-fma.h"
++# define SYMBOL_NAME sincosf
++# include "ifunc-fma.h"
+ 
+ libc_ifunc_redirected (__redirect_sincosf, __sincosf, IFUNC_SELECTOR ());
+ 
+ libm_alias_float (__sincos, sincos)
++#else
++# include <sysdeps/ieee754/flt-32/s_sincosf.c>
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_sinf.c b/sysdeps/x86_64/fpu/multiarch/s_sinf.c
+index a32b9e955052c296..c61624e3eed441dd 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_sinf.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_sinf.c
+@@ -16,13 +16,18 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-float.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-float.h>
+ 
+ extern float __redirect_sinf (float);
+ 
+-#define SYMBOL_NAME sinf
+-#include "ifunc-fma.h"
++# define SYMBOL_NAME sinf
++# include "ifunc-fma.h"
+ 
+ libc_ifunc_redirected (__redirect_sinf, __sinf, IFUNC_SELECTOR ());
+ 
+ libm_alias_float (__sin, sin)
++#else
++# include <sysdeps/ieee754/flt-32/s_sinf.c>
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_tan.c b/sysdeps/x86_64/fpu/multiarch/s_tan.c
+index f9a2474a139b0807..125d992ba1fb01ea 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_tan.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_tan.c
+@@ -16,15 +16,18 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL
++# include <libm-alias-double.h>
+ 
+ extern double __redirect_tan (double);
+ 
+-#define SYMBOL_NAME tan
+-#include "ifunc-avx-fma4.h"
++# define SYMBOL_NAME tan
++# include "ifunc-avx-fma4.h"
+ 
+ libc_ifunc_redirected (__redirect_tan, __tan, IFUNC_SELECTOR ());
+ libm_alias_double (__tan, tan)
+ 
+-#define __tan __tan_sse2
++# define __tan __tan_sse2
++#endif
+ #include <sysdeps/ieee754/dbl-64/s_tan.c>
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_trunc-avx.S b/sysdeps/x86_64/fpu/multiarch/s_trunc-avx.S
+new file mode 100644
+index 0000000000000000..b3e87e96068e5404
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_trunc-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implementation of trunc function.
++   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>
++#include <libm-alias-double.h>
++
++	.text
++ENTRY(__trunc)
++	vroundsd $11, %xmm0, %xmm0, %xmm0
++	ret
++END(__trunc)
++
++libm_alias_double (__trunc, trunc)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_trunc-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_trunc-sse4_1.S
+index b496a6ef49ac5d1c..2b79174eeda798f8 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_trunc-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_trunc-sse4_1.S
+@@ -18,8 +18,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-double.h>
++# define __trunc_sse41 __trunc
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__trunc_sse41)
+ 	roundsd	$11, %xmm0, %xmm0
+ 	ret
+ END(__trunc_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_double (__trunc, trunc)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_trunc.c b/sysdeps/x86_64/fpu/multiarch/s_trunc.c
+index 9bc9df8744dd56b0..ea89c4f85d9c9dbd 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_trunc.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_trunc.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#define NO_MATH_REDIRECT
+-#include <libm-alias-double.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# define NO_MATH_REDIRECT
++# include <libm-alias-double.h>
+ 
+-#define trunc __redirect_trunc
+-#define __trunc __redirect___trunc
+-#include <math.h>
+-#undef trunc
+-#undef __trunc
++# define trunc __redirect_trunc
++# define __trunc __redirect___trunc
++# include <math.h>
++# undef trunc
++# undef __trunc
+ 
+-#define SYMBOL_NAME trunc
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME trunc
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_trunc, __trunc, IFUNC_SELECTOR ());
+ libm_alias_double (__trunc, trunc)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_truncf-avx.S b/sysdeps/x86_64/fpu/multiarch/s_truncf-avx.S
+new file mode 100644
+index 0000000000000000..f31ac7d7f7980f2e
+--- /dev/null
++++ b/sysdeps/x86_64/fpu/multiarch/s_truncf-avx.S
+@@ -0,0 +1,28 @@
++/* AVX implementation of truncf function.
++   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>
++#include <libm-alias-float.h>
++
++	.text
++ENTRY(__truncf)
++	vroundss $11, %xmm0, %xmm0, %xmm0
++	ret
++END(__truncf)
++
++libm_alias_float (__trunc, trunc)
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_truncf-sse4_1.S b/sysdeps/x86_64/fpu/multiarch/s_truncf-sse4_1.S
+index 22e9a8330746da2f..60498b2cb21a97fa 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_truncf-sse4_1.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_truncf-sse4_1.S
+@@ -18,8 +18,20 @@
+ 
+ #include <sysdep.h>
+ 
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++# include <libm-alias-float.h>
++# define __truncf_sse41 __truncf
++	.text
++#else
+ 	.section .text.sse4.1,"ax",@progbits
++#endif
++
+ ENTRY(__truncf_sse41)
+ 	roundss	$11, %xmm0, %xmm0
+ 	ret
+ END(__truncf_sse41)
++
++#if MINIMUM_X86_ISA_LEVEL == SSE4_1_X86_ISA_LEVEL
++libm_alias_float (__trunc, trunc)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_truncf.c b/sysdeps/x86_64/fpu/multiarch/s_truncf.c
+index dae01d166a0dfa13..92435ce39dbd7cca 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_truncf.c
++++ b/sysdeps/x86_64/fpu/multiarch/s_truncf.c
+@@ -16,17 +16,20 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#define NO_MATH_REDIRECT
+-#include <libm-alias-float.h>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL
++# define NO_MATH_REDIRECT
++# include <libm-alias-float.h>
+ 
+-#define truncf __redirect_truncf
+-#define __truncf __redirect___truncf
+-#include <math.h>
+-#undef truncf
+-#undef __truncf
++# define truncf __redirect_truncf
++# define __truncf __redirect___truncf
++# include <math.h>
++# undef truncf
++# undef __truncf
+ 
+-#define SYMBOL_NAME truncf
+-#include "ifunc-sse4_1.h"
++# define SYMBOL_NAME truncf
++# include "ifunc-sse4_1.h"
+ 
+ libc_ifunc_redirected (__redirect_truncf, __truncf, IFUNC_SELECTOR ());
+ libm_alias_float (__trunc, trunc)
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/w_exp.c b/sysdeps/x86_64/fpu/multiarch/w_exp.c
+index 27eee98a0a3e16f0..3584187e0e223195 100644
+--- a/sysdeps/x86_64/fpu/multiarch/w_exp.c
++++ b/sysdeps/x86_64/fpu/multiarch/w_exp.c
+@@ -1 +1,6 @@
+-#include <sysdeps/../math/w_exp.c>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL >= AVX2_X86_ISA_LEVEL
++# include <sysdeps/ieee754/dbl-64/w_exp.c>
++#else
++# include <sysdeps/../math/w_exp.c>
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/w_log.c b/sysdeps/x86_64/fpu/multiarch/w_log.c
+index 9b2b0187116bc48e..414ca3ca3ddf530a 100644
+--- a/sysdeps/x86_64/fpu/multiarch/w_log.c
++++ b/sysdeps/x86_64/fpu/multiarch/w_log.c
+@@ -1 +1,6 @@
+-#include <sysdeps/../math/w_log.c>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL >= AVX2_X86_ISA_LEVEL
++# include <sysdeps/ieee754/dbl-64/w_log.c>
++#else
++# include <sysdeps/../math/w_log.c>
++#endif
+diff --git a/sysdeps/x86_64/fpu/multiarch/w_pow.c b/sysdeps/x86_64/fpu/multiarch/w_pow.c
+index b50c1988de597731..d5fcc4f871bd7eea 100644
+--- a/sysdeps/x86_64/fpu/multiarch/w_pow.c
++++ b/sysdeps/x86_64/fpu/multiarch/w_pow.c
+@@ -1 +1,6 @@
+-#include <sysdeps/../math/w_pow.c>
++#include <sysdeps/x86/isa-level.h>
++#if MINIMUM_X86_ISA_LEVEL >= AVX2_X86_ISA_LEVEL
++# include <sysdeps/ieee754/dbl-64/w_pow.c>
++#else
++# include <sysdeps/../math/w_pow.c>
++#endif
diff --git a/SOURCES/glibc-upstream-2.39-31.patch b/SOURCES/glibc-upstream-2.39-31.patch
new file mode 100644
index 0000000..bf21203
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-31.patch
@@ -0,0 +1,207 @@
+commit 31da30f23cddd36db29d5b6a1c7619361b271fb4
+Author: Charles Fol <folcharles@gmail.com>
+Date:   Thu Mar 28 12:25:38 2024 -0300
+
+    iconv: ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence (CVE-2024-2961)
+    
+    ISO-2022-CN-EXT uses escape sequences to indicate character set changes
+    (as specified by RFC 1922).  While the SOdesignation has the expected
+    bounds checks, neither SS2designation nor SS3designation have its;
+    allowing a write overflow of 1, 2, or 3 bytes with fixed values:
+    '$+I', '$+J', '$+K', '$+L', '$+M', or '$*H'.
+    
+    Checked on aarch64-linux-gnu.
+    
+    Co-authored-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+    Tested-by: Carlos O'Donell <carlos@redhat.com>
+    
+    (cherry picked from commit f9dc609e06b1136bb0408be9605ce7973a767ada)
+
+diff --git a/iconvdata/Makefile b/iconvdata/Makefile
+index ea019ce5c0e67e98..7196a8744bb66e8c 100644
+--- a/iconvdata/Makefile
++++ b/iconvdata/Makefile
+@@ -75,7 +75,8 @@ ifeq (yes,$(build-shared))
+ tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4 \
+ 	tst-iconv6 bug-iconv5 bug-iconv6 tst-iconv7 bug-iconv8 bug-iconv9 \
+ 	bug-iconv10 bug-iconv11 bug-iconv12 tst-iconv-big5-hkscs-to-2ucs4 \
+-	bug-iconv13 bug-iconv14 bug-iconv15
++	bug-iconv13 bug-iconv14 bug-iconv15 \
++	tst-iconv-iso-2022-cn-ext
+ ifeq ($(have-thread-library),yes)
+ tests += bug-iconv3
+ endif
+@@ -330,6 +331,8 @@ $(objpfx)bug-iconv14.out: $(addprefix $(objpfx), $(gconv-modules)) \
+ 			  $(addprefix $(objpfx),$(modules.so))
+ $(objpfx)bug-iconv15.out: $(addprefix $(objpfx), $(gconv-modules)) \
+ 			  $(addprefix $(objpfx),$(modules.so))
++$(objpfx)tst-iconv-iso-2022-cn-ext.out: $(addprefix $(objpfx), $(gconv-modules)) \
++					$(addprefix $(objpfx),$(modules.so))
+ 
+ $(objpfx)iconv-test.out: run-iconv-test.sh \
+ 			 $(addprefix $(objpfx), $(gconv-modules)) \
+diff --git a/iconvdata/iso-2022-cn-ext.c b/iconvdata/iso-2022-cn-ext.c
+index b34c8a36f4564c11..cce29b19692263d6 100644
+--- a/iconvdata/iso-2022-cn-ext.c
++++ b/iconvdata/iso-2022-cn-ext.c
+@@ -574,6 +574,12 @@ DIAG_IGNORE_Os_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
+ 	      {								      \
+ 		const char *escseq;					      \
+ 									      \
++		if (outptr + 4 > outend)				      \
++		  {							      \
++		    result = __GCONV_FULL_OUTPUT;			      \
++		    break;						      \
++		  }							      \
++									      \
+ 		assert (used == CNS11643_2_set); /* XXX */		      \
+ 		escseq = "*H";						      \
+ 		*outptr++ = ESC;					      \
+@@ -587,6 +593,12 @@ DIAG_IGNORE_Os_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
+ 	      {								      \
+ 		const char *escseq;					      \
+ 									      \
++		if (outptr + 4 > outend)				      \
++		  {							      \
++		    result = __GCONV_FULL_OUTPUT;			      \
++		    break;						      \
++		  }							      \
++									      \
+ 		assert ((used >> 5) >= 3 && (used >> 5) <= 7);		      \
+ 		escseq = "+I+J+K+L+M" + ((used >> 5) - 3) * 2;		      \
+ 		*outptr++ = ESC;					      \
+diff --git a/iconvdata/tst-iconv-iso-2022-cn-ext.c b/iconvdata/tst-iconv-iso-2022-cn-ext.c
+new file mode 100644
+index 0000000000000000..96a8765fd5369681
+--- /dev/null
++++ b/iconvdata/tst-iconv-iso-2022-cn-ext.c
+@@ -0,0 +1,128 @@
++/* Verify ISO-2022-CN-EXT does not write out of the bounds.
++   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 <stdio.h>
++#include <string.h>
++
++#include <errno.h>
++#include <iconv.h>
++#include <sys/mman.h>
++
++#include <support/xunistd.h>
++#include <support/check.h>
++#include <support/support.h>
++
++/* The test sets up a two memory page buffer with the second page marked
++   PROT_NONE to trigger a fault if the conversion writes beyond the exact
++   expected amount.  Then we carry out various conversions and precisely
++   place the start of the output buffer in order to trigger a SIGSEGV if the
++   process writes anywhere between 1 and page sized bytes more (only one
++   PROT_NONE page is setup as a canary) than expected.  These tests exercise
++   all three of the cases in ISO-2022-CN-EXT where the converter must switch
++   character sets and may run out of buffer space while doing the
++   operation.  */
++
++static int
++do_test (void)
++{
++  iconv_t cd = iconv_open ("ISO-2022-CN-EXT", "UTF-8");
++  TEST_VERIFY_EXIT (cd != (iconv_t) -1);
++
++  char *ntf;
++  size_t ntfsize;
++  char *outbufbase;
++  {
++    int pgz = getpagesize ();
++    TEST_VERIFY_EXIT (pgz > 0);
++    ntfsize = 2 * pgz;
++
++    ntf = xmmap (NULL, ntfsize, PROT_READ | PROT_WRITE, MAP_PRIVATE
++		 | MAP_ANONYMOUS, -1);
++    xmprotect (ntf + pgz, pgz, PROT_NONE);
++
++    outbufbase = ntf + pgz;
++  }
++
++  /* Check if SOdesignation escape sequence does not trigger an OOB write.  */
++  {
++    char inbuf[] = "\xe4\xba\xa4\xe6\x8d\xa2";
++
++    for (int i = 0; i < 9; i++)
++      {
++	char *inp = inbuf;
++	size_t inleft = sizeof (inbuf) - 1;
++
++	char *outp = outbufbase - i;
++	size_t outleft = i;
++
++	TEST_VERIFY_EXIT (iconv (cd, &inp, &inleft, &outp, &outleft)
++			  == (size_t) -1);
++	TEST_COMPARE (errno, E2BIG);
++
++	TEST_VERIFY_EXIT (iconv (cd, NULL, NULL, NULL, NULL) == 0);
++      }
++  }
++
++  /* Same as before for SS2designation.  */
++  {
++    char inbuf[] = "㴽 \xe3\xb4\xbd";
++
++    for (int i = 0; i < 14; i++)
++      {
++	char *inp = inbuf;
++	size_t inleft = sizeof (inbuf) - 1;
++
++	char *outp = outbufbase - i;
++	size_t outleft = i;
++
++	TEST_VERIFY_EXIT (iconv (cd, &inp, &inleft, &outp, &outleft)
++			  == (size_t) -1);
++	TEST_COMPARE (errno, E2BIG);
++
++	TEST_VERIFY_EXIT (iconv (cd, NULL, NULL, NULL, NULL) == 0);
++      }
++  }
++
++  /* Same as before for SS3designation.  */
++  {
++    char inbuf[] = "劄 \xe5\x8a\x84";
++
++    for (int i = 0; i < 14; i++)
++      {
++	char *inp = inbuf;
++	size_t inleft = sizeof (inbuf) - 1;
++
++	char *outp = outbufbase - i;
++	size_t outleft = i;
++
++	TEST_VERIFY_EXIT (iconv (cd, &inp, &inleft, &outp, &outleft)
++			  == (size_t) -1);
++	TEST_COMPARE (errno, E2BIG);
++
++	TEST_VERIFY_EXIT (iconv (cd, NULL, NULL, NULL, NULL) == 0);
++      }
++  }
++
++  TEST_VERIFY_EXIT (iconv_close (cd) != -1);
++
++  xmunmap (ntf, ntfsize);
++
++  return 0;
++}
++
++#include <support/test-driver.c>
diff --git a/SOURCES/glibc-upstream-2.39-32.patch b/SOURCES/glibc-upstream-2.39-32.patch
new file mode 100644
index 0000000..f5cf970
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-32.patch
@@ -0,0 +1,49 @@
+commit e828914cf9f2fc2caa5bced0fc6a03cb78324979
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Tue Apr 23 21:16:32 2024 +0200
+
+    nptl: Fix tst-cancel30 on kernels without ppoll_time64 support
+    
+    Fall back to ppoll if ppoll_time64 fails with ENOSYS.
+    Fixes commit 370da8a121c3ba9eeb2f13da15fc0f21f4136b25 ("nptl: Fix
+    tst-cancel30 on sparc64").
+    
+    Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+    (cherry picked from commit f4724843ada64a51d66f65d3199fe431f9d4c254)
+
+diff --git a/sysdeps/pthread/tst-cancel30.c b/sysdeps/pthread/tst-cancel30.c
+index 3030660e5fd93e2c..94ad6281bcf080f4 100644
+--- a/sysdeps/pthread/tst-cancel30.c
++++ b/sysdeps/pthread/tst-cancel30.c
+@@ -18,6 +18,7 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
++#include <errno.h>
+ #include <support/check.h>
+ #include <support/xstdio.h>
+ #include <support/xthread.h>
+@@ -46,13 +47,19 @@ tf (void *arg)
+ 
+   /* Wait indefinitely for cancellation, which only works if asynchronous
+      cancellation is enabled.  */
+-#if defined SYS_ppoll || defined SYS_ppoll_time64
+-# ifndef SYS_ppoll_time64
+-#  define SYS_ppoll_time64 SYS_ppoll
++#ifdef SYS_ppoll_time64
++  long int ret = syscall (SYS_ppoll_time64, NULL, 0, NULL, NULL);
++  (void) ret;
++# ifdef SYS_ppoll
++  if (ret == -1 && errno == ENOSYS)
++    syscall (SYS_ppoll, NULL, 0, NULL, NULL);
+ # endif
+-  syscall (SYS_ppoll_time64, NULL, 0, NULL, NULL);
+ #else
++# ifdef SYS_ppoll
++  syscall (SYS_ppoll, NULL, 0, NULL, NULL);
++# else
+   for (;;);
++# endif
+ #endif
+ 
+   return 0;
diff --git a/SOURCES/glibc-upstream-2.39-33.patch b/SOURCES/glibc-upstream-2.39-33.patch
new file mode 100644
index 0000000..a13dbfa
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-33.patch
@@ -0,0 +1,20 @@
+commit e701c7d761f6e5c48d8e9dd5da88cbe2e94943f4
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Thu Apr 25 12:56:48 2024 +0200
+
+    i386: ulp update for SSE2 --disable-multi-arch configurations
+    
+    (cherry picked from commit 3a3a4497421422aa854c855cbe5110ca7d598ffc)
+
+diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
+index 84e6686eba5fe79a..f2139fc172ceef7b 100644
+--- a/sysdeps/i386/fpu/libm-test-ulps
++++ b/sysdeps/i386/fpu/libm-test-ulps
+@@ -1232,6 +1232,7 @@ ldouble: 6
+ 
+ Function: "hypot":
+ double: 1
++float: 1
+ float128: 1
+ ldouble: 1
+ 
diff --git a/SOURCES/glibc-upstream-2.39-34.patch b/SOURCES/glibc-upstream-2.39-34.patch
new file mode 100644
index 0000000..961fedd
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-34.patch
@@ -0,0 +1,89 @@
+commit 2f8f157eb0cc7f1d8d9a3fcaa8c55bed53b092a8
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Tue Apr 23 13:59:50 2024 -0700
+
+    x86: Define MINIMUM_X86_ISA_LEVEL in config.h [BZ #31676]
+    
+    Define MINIMUM_X86_ISA_LEVEL at configure time to avoid
+    
+    /usr/bin/ld: …/build/elf/librtld.os: in function `init_cpu_features':
+    …/git/elf/../sysdeps/x86/cpu-features.c:1202: undefined reference to `_dl_runtime_resolve_fxsave'
+    /usr/bin/ld: …/build/elf/librtld.os: relocation R_X86_64_PC32 against undefined hidden symbol `_dl_runtime_resolve_fxsave' can not be used when making a shared object
+    /usr/bin/ld: final link failed: bad value
+    collect2: error: ld returned 1 exit status
+    
+    when glibc is built with -march=x86-64-v3 and configured with
+    --with-rtld-early-cflags=-march=x86-64, which is used to allow ld.so to
+    print an error message on unsupported CPUs:
+    
+    Fatal glibc error: CPU does not support x86-64-v3
+    
+    This fixes BZ #31676.
+    Reviewed-by: Sunil K Pandey <skpgkp2@gmail.com>
+    
+    (cherry picked from commit 46c999741340ea559784c20a45077955b50aca43)
+
+diff --git a/config.h.in b/config.h.in
+index 4d33c63a841d3d6d..1e647de58580bc2d 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -286,6 +286,9 @@
+ /* Define if x86 ISA level should be included in shared libraries.  */
+ #undef INCLUDE_X86_ISA_LEVEL
+ 
++/* The x86 ISA level.  1 for baseline.  Undefined on non-x86.  */
++#undef MINIMUM_X86_ISA_LEVEL
++
+ /* Define if -msahf is enabled by default on x86.  */
+ #undef HAVE_X86_LAHF_SAHF
+ 
+diff --git a/sysdeps/x86/configure b/sysdeps/x86/configure
+index 2a5421bb31e9efe4..d28d9bcb296c6380 100644
+--- a/sysdeps/x86/configure
++++ b/sysdeps/x86/configure
+@@ -151,6 +151,13 @@ printf "%s\n" "$libc_cv_have_x86_isa_level" >&6; }
+ else
+   libc_cv_have_x86_isa_level=baseline
+ fi
++if test $libc_cv_have_x86_isa_level = baseline; then
++  printf "%s\n" "#define MINIMUM_X86_ISA_LEVEL 1" >>confdefs.h
++
++else
++  printf "%s\n" "#define MINIMUM_X86_ISA_LEVEL $libc_cv_have_x86_isa_level" >>confdefs.h
++
++fi
+ config_vars="$config_vars
+ have-x86-isa-level = $libc_cv_have_x86_isa_level"
+ config_vars="$config_vars
+diff --git a/sysdeps/x86/configure.ac b/sysdeps/x86/configure.ac
+index 78ff7c8f41c552bc..5b0acd03d2a30c9b 100644
+--- a/sysdeps/x86/configure.ac
++++ b/sysdeps/x86/configure.ac
+@@ -105,6 +105,11 @@ EOF
+ else
+   libc_cv_have_x86_isa_level=baseline
+ fi
++if test $libc_cv_have_x86_isa_level = baseline; then
++  AC_DEFINE_UNQUOTED(MINIMUM_X86_ISA_LEVEL, 1)
++else
++  AC_DEFINE_UNQUOTED(MINIMUM_X86_ISA_LEVEL, $libc_cv_have_x86_isa_level)
++fi
+ LIBC_CONFIG_VAR([have-x86-isa-level], [$libc_cv_have_x86_isa_level])
+ LIBC_CONFIG_VAR([x86-isa-level-3-or-above], [3 4])
+ LIBC_CONFIG_VAR([enable-x86-isa-level], [$libc_cv_include_x86_isa_level])
+diff --git a/sysdeps/x86/isa-level.h b/sysdeps/x86/isa-level.h
+index 11fe1ca90c5bfedf..2c7f74212b9a27e5 100644
+--- a/sysdeps/x86/isa-level.h
++++ b/sysdeps/x86/isa-level.h
+@@ -61,8 +61,10 @@
+ # define __X86_ISA_V4 0
+ #endif
+ 
+-#define MINIMUM_X86_ISA_LEVEL                                                 \
++#ifndef MINIMUM_X86_ISA_LEVEL
++# define MINIMUM_X86_ISA_LEVEL                                                 \
+   (__X86_ISA_V1 + __X86_ISA_V2 + __X86_ISA_V3 + __X86_ISA_V4)
++#endif
+ 
+ /* Depending on the minimum ISA level, a feature check result can be a
+    compile-time constant.. */
diff --git a/SOURCES/glibc-upstream-2.39-35.patch b/SOURCES/glibc-upstream-2.39-35.patch
new file mode 100644
index 0000000..41555b4
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-35.patch
@@ -0,0 +1,32 @@
+commit 1263d583d2e28afb8be53f8d6922f0842036f35d
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Thu Apr 25 15:00:45 2024 +0200
+
+    CVE-2024-33599: nscd: Stack-based buffer overflow in netgroup cache (bug 31677)
+    
+    Using alloca matches what other caches do.  The request length is
+    bounded by MAXKEYLEN.
+    
+    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+    (cherry picked from commit 87801a8fd06db1d654eea3e4f7626ff476a9bdaa)
+
+diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c
+index 0c6e46f15c5d7139..f227dc7fa2856e38 100644
+--- a/nscd/netgroupcache.c
++++ b/nscd/netgroupcache.c
+@@ -502,12 +502,13 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req,
+       = (struct indataset *) mempool_alloc (db,
+ 					    sizeof (*dataset) + req->key_len,
+ 					    1);
+-  struct indataset dataset_mem;
+   bool cacheable = true;
+   if (__glibc_unlikely (dataset == NULL))
+     {
+       cacheable = false;
+-      dataset = &dataset_mem;
++      /* The alloca is safe because nscd_run_worker verfies that
++	 key_len is not larger than MAXKEYLEN.  */
++      dataset = alloca (sizeof (*dataset) + req->key_len);
+     }
+ 
+   datahead_init_pos (&dataset->head, sizeof (*dataset) + req->key_len,
diff --git a/SOURCES/glibc-upstream-2.39-36.patch b/SOURCES/glibc-upstream-2.39-36.patch
new file mode 100644
index 0000000..2851845
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-36.patch
@@ -0,0 +1,53 @@
+commit 5a508e0b508c8ad53bd0d2fb48fd71b242626341
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Thu Apr 25 15:01:07 2024 +0200
+
+    CVE-2024-33600: nscd: Do not send missing not-found response in addgetnetgrentX (bug 31678)
+    
+    If we failed to add a not-found response to the cache, the dataset
+    point can be null, resulting in a null pointer dereference.
+    
+    Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
+    (cherry picked from commit 7835b00dbce53c3c87bbbb1754a95fb5e58187aa)
+
+diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c
+index f227dc7fa2856e38..c18fe111f37496d7 100644
+--- a/nscd/netgroupcache.c
++++ b/nscd/netgroupcache.c
+@@ -147,7 +147,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+       /* No such service.  */
+       cacheable = do_notfound (db, fd, req, key, &dataset, &total, &timeout,
+ 			       &key_copy);
+-      goto writeout;
++      goto maybe_cache_add;
+     }
+ 
+   memset (&data, '\0', sizeof (data));
+@@ -348,7 +348,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+     {
+       cacheable = do_notfound (db, fd, req, key, &dataset, &total, &timeout,
+ 			       &key_copy);
+-      goto writeout;
++      goto maybe_cache_add;
+     }
+ 
+   total = buffilled;
+@@ -410,14 +410,12 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+   }
+ 
+   if (he == NULL && fd != -1)
+-    {
+-      /* We write the dataset before inserting it to the database
+-	 since while inserting this thread might block and so would
+-	 unnecessarily let the receiver wait.  */
+-    writeout:
++    /* We write the dataset before inserting it to the database since
++       while inserting this thread might block and so would
++       unnecessarily let the receiver wait.  */
+       writeall (fd, &dataset->resp, dataset->head.recsize);
+-    }
+ 
++ maybe_cache_add:
+   if (cacheable)
+     {
+       /* If necessary, we also propagate the data to disk.  */
diff --git a/SOURCES/glibc-upstream-2.39-37.patch b/SOURCES/glibc-upstream-2.39-37.patch
new file mode 100644
index 0000000..b0a31a8
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-37.patch
@@ -0,0 +1,54 @@
+commit c99f886de54446cd4447db6b44be93dabbdc2f8b
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Thu Apr 25 15:01:07 2024 +0200
+
+    CVE-2024-33600: nscd: Avoid null pointer crashes after notfound response (bug 31678)
+    
+    The addgetnetgrentX call in addinnetgrX may have failed to produce
+    a result, so the result variable in addinnetgrX can be NULL.
+    Use db->negtimeout as the fallback value if there is no result data;
+    the timeout is also overwritten below.
+    
+    Also avoid sending a second not-found response.  (The client
+    disconnects after receiving the first response, so the data stream did
+    not go out of sync even without this fix.)  It is still beneficial to
+    add the negative response to the mapping, so that the client can get
+    it from there in the future, instead of going through the socket.
+    
+    Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
+    (cherry picked from commit b048a482f088e53144d26a61c390bed0210f49f2)
+
+diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c
+index c18fe111f37496d7..e22ffa5884e36260 100644
+--- a/nscd/netgroupcache.c
++++ b/nscd/netgroupcache.c
+@@ -511,14 +511,15 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req,
+ 
+   datahead_init_pos (&dataset->head, sizeof (*dataset) + req->key_len,
+ 		     sizeof (innetgroup_response_header),
+-		     he == NULL ? 0 : dh->nreloads + 1, result->head.ttl);
++		     he == NULL ? 0 : dh->nreloads + 1,
++		     result == NULL ? db->negtimeout : result->head.ttl);
+   /* Set the notfound status and timeout based on the result from
+      getnetgrent.  */
+-  dataset->head.notfound = result->head.notfound;
++  dataset->head.notfound = result == NULL || result->head.notfound;
+   dataset->head.timeout = timeout;
+ 
+   dataset->resp.version = NSCD_VERSION;
+-  dataset->resp.found = result->resp.found;
++  dataset->resp.found = result != NULL && result->resp.found;
+   /* Until we find a matching entry the result is 0.  */
+   dataset->resp.result = 0;
+ 
+@@ -566,7 +567,9 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req,
+       goto out;
+     }
+ 
+-  if (he == NULL)
++  /* addgetnetgrentX may have already sent a notfound response.  Do
++     not send another one.  */
++  if (he == NULL && dataset->resp.found)
+     {
+       /* We write the dataset before inserting it to the database
+ 	 since while inserting this thread might block and so would
diff --git a/SOURCES/glibc-upstream-2.39-38.patch b/SOURCES/glibc-upstream-2.39-38.patch
new file mode 100644
index 0000000..5bda08b
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-38.patch
@@ -0,0 +1,384 @@
+commit a9a8d3eebb145779a18d90e3966009a1daa63cd8
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Thu Apr 25 15:01:07 2024 +0200
+
+    CVE-2024-33601, CVE-2024-33602: nscd: netgroup: Use two buffers in addgetnetgrentX (bug 31680)
+    
+    This avoids potential memory corruption when the underlying NSS
+    callback function does not use the buffer space to store all strings
+    (e.g., for constant strings).
+    
+    Instead of custom buffer management, two scratch buffers are used.
+    This increases stack usage somewhat.
+    
+    Scratch buffer allocation failure is handled by return -1
+    (an invalid timeout value) instead of terminating the process.
+    This fixes bug 31679.
+    
+    Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
+    (cherry picked from commit c04a21e050d64a1193a6daab872bca2528bda44b)
+
+diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c
+index e22ffa5884e36260..e8fe041846b75cb9 100644
+--- a/nscd/netgroupcache.c
++++ b/nscd/netgroupcache.c
+@@ -23,6 +23,7 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/mman.h>
++#include <scratch_buffer.h>
+ 
+ #include "../nss/netgroup.h"
+ #include "nscd.h"
+@@ -65,6 +66,16 @@ struct dataset
+   char strdata[0];
+ };
+ 
++/* Send a notfound response to FD.  Always returns -1 to indicate an
++   ephemeral error.  */
++static time_t
++send_notfound (int fd)
++{
++  if (fd != -1)
++    TEMP_FAILURE_RETRY (send (fd, &notfound, sizeof (notfound), MSG_NOSIGNAL));
++  return -1;
++}
++
+ /* Sends a notfound message and prepares a notfound dataset to write to the
+    cache.  Returns true if there was enough memory to allocate the dataset and
+    returns the dataset in DATASETP, total bytes to write in TOTALP and the
+@@ -83,8 +94,7 @@ do_notfound (struct database_dyn *db, int fd, request_header *req,
+   total = sizeof (notfound);
+   timeout = time (NULL) + db->negtimeout;
+ 
+-  if (fd != -1)
+-    TEMP_FAILURE_RETRY (send (fd, &notfound, total, MSG_NOSIGNAL));
++  send_notfound (fd);
+ 
+   dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1);
+   /* If we cannot permanently store the result, so be it.  */
+@@ -109,11 +119,78 @@ do_notfound (struct database_dyn *db, int fd, request_header *req,
+   return cacheable;
+ }
+ 
++struct addgetnetgrentX_scratch
++{
++  /* This is the result that the caller should use.  It can be NULL,
++     point into buffer, or it can be in the cache.  */
++  struct dataset *dataset;
++
++  struct scratch_buffer buffer;
++
++  /* Used internally in addgetnetgrentX as a staging area.  */
++  struct scratch_buffer tmp;
++
++  /* Number of bytes in buffer that are actually used.  */
++  size_t buffer_used;
++};
++
++static void
++addgetnetgrentX_scratch_init (struct addgetnetgrentX_scratch *scratch)
++{
++  scratch->dataset = NULL;
++  scratch_buffer_init (&scratch->buffer);
++  scratch_buffer_init (&scratch->tmp);
++
++  /* Reserve space for the header.  */
++  scratch->buffer_used = sizeof (struct dataset);
++  static_assert (sizeof (struct dataset) < sizeof (scratch->tmp.__space),
++		 "initial buffer space");
++  memset (scratch->tmp.data, 0, sizeof (struct dataset));
++}
++
++static void
++addgetnetgrentX_scratch_free (struct addgetnetgrentX_scratch *scratch)
++{
++  scratch_buffer_free (&scratch->buffer);
++  scratch_buffer_free (&scratch->tmp);
++}
++
++/* Copy LENGTH bytes from S into SCRATCH.  Returns NULL if SCRATCH
++   could not be resized, otherwise a pointer to the copy.  */
++static char *
++addgetnetgrentX_append_n (struct addgetnetgrentX_scratch *scratch,
++			  const char *s, size_t length)
++{
++  while (true)
++    {
++      size_t remaining = scratch->buffer.length - scratch->buffer_used;
++      if (remaining >= length)
++	break;
++      if (!scratch_buffer_grow_preserve (&scratch->buffer))
++	return NULL;
++    }
++  char *copy = scratch->buffer.data + scratch->buffer_used;
++  memcpy (copy, s, length);
++  scratch->buffer_used += length;
++  return copy;
++}
++
++/* Copy S into SCRATCH, including its null terminator.  Returns false
++   if SCRATCH could not be resized.  */
++static bool
++addgetnetgrentX_append (struct addgetnetgrentX_scratch *scratch, const char *s)
++{
++  if (s == NULL)
++    s = "";
++  return addgetnetgrentX_append_n (scratch, s, strlen (s) + 1) != NULL;
++}
++
++/* Caller must initialize and free *SCRATCH.  If the return value is
++   negative, this function has sent a notfound response.  */
+ static time_t
+ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+ 		 const char *key, uid_t uid, struct hashentry *he,
+-		 struct datahead *dh, struct dataset **resultp,
+-		 void **tofreep)
++		 struct datahead *dh, struct addgetnetgrentX_scratch *scratch)
+ {
+   if (__glibc_unlikely (debug_level > 0))
+     {
+@@ -132,14 +209,10 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+ 
+   char *key_copy = NULL;
+   struct __netgrent data;
+-  size_t buflen = MAX (1024, sizeof (*dataset) + req->key_len);
+-  size_t buffilled = sizeof (*dataset);
+-  char *buffer = NULL;
+   size_t nentries = 0;
+   size_t group_len = strlen (key) + 1;
+   struct name_list *first_needed
+     = alloca (sizeof (struct name_list) + group_len);
+-  *tofreep = NULL;
+ 
+   if (netgroup_database == NULL
+       && !__nss_database_get (nss_database_netgroup, &netgroup_database))
+@@ -151,8 +224,6 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+     }
+ 
+   memset (&data, '\0', sizeof (data));
+-  buffer = xmalloc (buflen);
+-  *tofreep = buffer;
+   first_needed->next = first_needed;
+   memcpy (first_needed->name, key, group_len);
+   data.needed_groups = first_needed;
+@@ -195,8 +266,8 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+ 		while (1)
+ 		  {
+ 		    int e;
+-		    status = getfct.f (&data, buffer + buffilled,
+-				       buflen - buffilled - req->key_len, &e);
++		    status = getfct.f (&data, scratch->tmp.data,
++				       scratch->tmp.length, &e);
+ 		    if (status == NSS_STATUS_SUCCESS)
+ 		      {
+ 			if (data.type == triple_val)
+@@ -204,68 +275,10 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+ 			    const char *nhost = data.val.triple.host;
+ 			    const char *nuser = data.val.triple.user;
+ 			    const char *ndomain = data.val.triple.domain;
+-
+-			    size_t hostlen = strlen (nhost ?: "") + 1;
+-			    size_t userlen = strlen (nuser ?: "") + 1;
+-			    size_t domainlen = strlen (ndomain ?: "") + 1;
+-
+-			    if (nhost == NULL || nuser == NULL || ndomain == NULL
+-				|| nhost > nuser || nuser > ndomain)
+-			      {
+-				const char *last = nhost;
+-				if (last == NULL
+-				    || (nuser != NULL && nuser > last))
+-				  last = nuser;
+-				if (last == NULL
+-				    || (ndomain != NULL && ndomain > last))
+-				  last = ndomain;
+-
+-				size_t bufused
+-				  = (last == NULL
+-				     ? buffilled
+-				     : last + strlen (last) + 1 - buffer);
+-
+-				/* We have to make temporary copies.  */
+-				size_t needed = hostlen + userlen + domainlen;
+-
+-				if (buflen - req->key_len - bufused < needed)
+-				  {
+-				    buflen += MAX (buflen, 2 * needed);
+-				    /* Save offset in the old buffer.  We don't
+-				       bother with the NULL check here since
+-				       we'll do that later anyway.  */
+-				    size_t nhostdiff = nhost - buffer;
+-				    size_t nuserdiff = nuser - buffer;
+-				    size_t ndomaindiff = ndomain - buffer;
+-
+-				    char *newbuf = xrealloc (buffer, buflen);
+-				    /* Fix up the triplet pointers into the new
+-				       buffer.  */
+-				    nhost = (nhost ? newbuf + nhostdiff
+-					     : NULL);
+-				    nuser = (nuser ? newbuf + nuserdiff
+-					     : NULL);
+-				    ndomain = (ndomain ? newbuf + ndomaindiff
+-					       : NULL);
+-				    *tofreep = buffer = newbuf;
+-				  }
+-
+-				nhost = memcpy (buffer + bufused,
+-						nhost ?: "", hostlen);
+-				nuser = memcpy ((char *) nhost + hostlen,
+-						nuser ?: "", userlen);
+-				ndomain = memcpy ((char *) nuser + userlen,
+-						  ndomain ?: "", domainlen);
+-			      }
+-
+-			    char *wp = buffer + buffilled;
+-			    wp = memmove (wp, nhost ?: "", hostlen);
+-			    wp += hostlen;
+-			    wp = memmove (wp, nuser ?: "", userlen);
+-			    wp += userlen;
+-			    wp = memmove (wp, ndomain ?: "", domainlen);
+-			    wp += domainlen;
+-			    buffilled = wp - buffer;
++			    if (!(addgetnetgrentX_append (scratch, nhost)
++				  && addgetnetgrentX_append (scratch, nuser)
++				  && addgetnetgrentX_append (scratch, ndomain)))
++			      return send_notfound (fd);
+ 			    ++nentries;
+ 			  }
+ 			else
+@@ -317,8 +330,8 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+ 		      }
+ 		    else if (status == NSS_STATUS_TRYAGAIN && e == ERANGE)
+ 		      {
+-			buflen *= 2;
+-			*tofreep = buffer = xrealloc (buffer, buflen);
++			if (!scratch_buffer_grow (&scratch->tmp))
++			  return send_notfound (fd);
+ 		      }
+ 		    else if (status == NSS_STATUS_RETURN
+ 			     || status == NSS_STATUS_NOTFOUND
+@@ -351,10 +364,17 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+       goto maybe_cache_add;
+     }
+ 
+-  total = buffilled;
++  /* Capture the result size without the key appended.   */
++  total = scratch->buffer_used;
++
++  /* Make a copy of the key.  The scratch buffer must not move after
++     this point.  */
++  key_copy = addgetnetgrentX_append_n (scratch, key, req->key_len);
++  if (key_copy == NULL)
++    return send_notfound (fd);
+ 
+   /* Fill in the dataset.  */
+-  dataset = (struct dataset *) buffer;
++  dataset = scratch->buffer.data;
+   timeout = datahead_init_pos (&dataset->head, total + req->key_len,
+ 			       total - offsetof (struct dataset, resp),
+ 			       he == NULL ? 0 : dh->nreloads + 1,
+@@ -363,11 +383,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+   dataset->resp.version = NSCD_VERSION;
+   dataset->resp.found = 1;
+   dataset->resp.nresults = nentries;
+-  dataset->resp.result_len = buffilled - sizeof (*dataset);
+-
+-  assert (buflen - buffilled >= req->key_len);
+-  key_copy = memcpy (buffer + buffilled, key, req->key_len);
+-  buffilled += req->key_len;
++  dataset->resp.result_len = total - sizeof (*dataset);
+ 
+   /* Now we can determine whether on refill we have to create a new
+      record or not.  */
+@@ -398,7 +414,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+     if (__glibc_likely (newp != NULL))
+       {
+ 	/* Adjust pointer into the memory block.  */
+-	key_copy = (char *) newp + (key_copy - buffer);
++	key_copy = (char *) newp + (key_copy - (char *) dataset);
+ 
+ 	dataset = memcpy (newp, dataset, total + req->key_len);
+ 	cacheable = true;
+@@ -439,7 +455,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+     }
+ 
+  out:
+-  *resultp = dataset;
++  scratch->dataset = dataset;
+ 
+   return timeout;
+ }
+@@ -460,6 +476,9 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req,
+   if (user != NULL)
+     key = strchr (key, '\0') + 1;
+   const char *domain = *key++ ? key : NULL;
++  struct addgetnetgrentX_scratch scratch;
++
++  addgetnetgrentX_scratch_init (&scratch);
+ 
+   if (__glibc_unlikely (debug_level > 0))
+     {
+@@ -475,12 +494,8 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req,
+ 							    group, group_len,
+ 							    db, uid);
+   time_t timeout;
+-  void *tofree;
+   if (result != NULL)
+-    {
+-      timeout = result->head.timeout;
+-      tofree = NULL;
+-    }
++    timeout = result->head.timeout;
+   else
+     {
+       request_header req_get =
+@@ -489,7 +504,10 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req,
+ 	  .key_len = group_len
+ 	};
+       timeout = addgetnetgrentX (db, -1, &req_get, group, uid, NULL, NULL,
+-				 &result, &tofree);
++				 &scratch);
++      result = scratch.dataset;
++      if (timeout < 0)
++	goto out;
+     }
+ 
+   struct indataset
+@@ -603,7 +621,7 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req,
+     }
+ 
+  out:
+-  free (tofree);
++  addgetnetgrentX_scratch_free (&scratch);
+   return timeout;
+ }
+ 
+@@ -613,11 +631,12 @@ addgetnetgrentX_ignore (struct database_dyn *db, int fd, request_header *req,
+ 			const char *key, uid_t uid, struct hashentry *he,
+ 			struct datahead *dh)
+ {
+-  struct dataset *ignore;
+-  void *tofree;
+-  time_t timeout = addgetnetgrentX (db, fd, req, key, uid, he, dh,
+-				    &ignore, &tofree);
+-  free (tofree);
++  struct addgetnetgrentX_scratch scratch;
++  addgetnetgrentX_scratch_init (&scratch);
++  time_t timeout = addgetnetgrentX (db, fd, req, key, uid, he, dh, &scratch);
++  addgetnetgrentX_scratch_free (&scratch);
++  if (timeout < 0)
++    timeout = 0;
+   return timeout;
+ }
+ 
+@@ -661,5 +680,9 @@ readdinnetgr (struct database_dyn *db, struct hashentry *he,
+       .key_len = he->len
+     };
+ 
+-  return addinnetgrX (db, -1, &req, db->data + he->key, he->owner, he, dh);
++  int timeout = addinnetgrX (db, -1, &req, db->data + he->key, he->owner,
++			     he, dh);
++  if (timeout < 0)
++    timeout = 0;
++  return timeout;
+ }
diff --git a/SOURCES/glibc-upstream-2.39-39.patch b/SOURCES/glibc-upstream-2.39-39.patch
new file mode 100644
index 0000000..4dee6ea
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-39.patch
@@ -0,0 +1,49 @@
+commit fd658f026f25cf59e8db243bc3b3e09cd5a20ba0
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Thu Apr 25 08:06:52 2024 -0700
+
+    elf: Also compile dl-misc.os with $(rtld-early-cflags)
+    
+    Also compile dl-misc.os with $(rtld-early-cflags) to avoid
+    
+    Program received signal SIGILL, Illegal instruction.
+    0x00007ffff7fd36ea in _dl_strtoul (nptr=nptr@entry=0x7fffffffe2c9 "2",
+        endptr=endptr@entry=0x7fffffffd728) at dl-misc.c:156
+    156       bool positive = true;
+    (gdb) bt
+     #0  0x00007ffff7fd36ea in _dl_strtoul (nptr=nptr@entry=0x7fffffffe2c9 "2",
+        endptr=endptr@entry=0x7fffffffd728) at dl-misc.c:156
+     #1  0x00007ffff7fdb1a9 in tunable_initialize (
+        cur=cur@entry=0x7ffff7ffbc00 <tunable_list+2176>,
+        strval=strval@entry=0x7fffffffe2c9 "2", len=len@entry=1)
+        at dl-tunables.c:131
+     #2  0x00007ffff7fdb3a2 in parse_tunables (valstring=<optimized out>)
+        at dl-tunables.c:258
+     #3  0x00007ffff7fdb5d9 in __GI___tunables_init (envp=0x7fffffffdd58)
+        at dl-tunables.c:288
+     #4  0x00007ffff7fe44c3 in _dl_sysdep_start (
+        start_argptr=start_argptr@entry=0x7fffffffdcb0,
+        dl_main=dl_main@entry=0x7ffff7fe5f80 <dl_main>)
+        at ../sysdeps/unix/sysv/linux/dl-sysdep.c:110
+     #5  0x00007ffff7fe5cae in _dl_start_final (arg=0x7fffffffdcb0) at rtld.c:494
+     #6  _dl_start (arg=0x7fffffffdcb0) at rtld.c:581
+     #7  0x00007ffff7fe4b38 in _start ()
+    (gdb)
+    
+    when setting GLIBC_TUNABLES in glibc compiled with APX.
+    Reviewed-by: Florian Weimer <fweimer@redhat.com>
+    
+    (cherry picked from commit 049b7684c912dd32b67b1b15b0f43bf07d5f512e)
+
+diff --git a/elf/Makefile b/elf/Makefile
+index 69aa423c4b90127d..a50a988e7362cf3b 100644
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -170,6 +170,7 @@ CFLAGS-.op += $(call elide-stack-protector,.op,$(elide-routines.os))
+ CFLAGS-.os += $(call elide-stack-protector,.os,$(all-rtld-routines))
+ 
+ # Add the requested compiler flags to the early startup code.
++CFLAGS-dl-misc.os += $(rtld-early-cflags)
+ CFLAGS-dl-printf.os += $(rtld-early-cflags)
+ CFLAGS-dl-setup_hash.os += $(rtld-early-cflags)
+ CFLAGS-dl-sysdep.os += $(rtld-early-cflags)
diff --git a/SOURCES/glibc-upstream-2.39-4.patch b/SOURCES/glibc-upstream-2.39-4.patch
new file mode 100644
index 0000000..cc3350f
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-4.patch
@@ -0,0 +1,42 @@
+commit d0724994de40934c552f1f68de89053848a44927
+Author: Xi Ruoyao <xry111@xry111.site>
+Date:   Thu Feb 22 21:26:55 2024 +0100
+
+    math: Update mips64 ulps
+    
+    Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
+    (cherry picked from commit e2a65ecc4b30a797df7dc6529f09b712aa256029)
+
+diff --git a/sysdeps/mips/mips64/libm-test-ulps b/sysdeps/mips/mips64/libm-test-ulps
+index 78969745b245d094..933aba47350b777d 100644
+--- a/sysdeps/mips/mips64/libm-test-ulps
++++ b/sysdeps/mips/mips64/libm-test-ulps
+@@ -1066,17 +1066,17 @@ double: 1
+ ldouble: 1
+ 
+ Function: "j0":
+-double: 2
++double: 3
+ float: 9
+ ldouble: 2
+ 
+ Function: "j0_downward":
+-double: 5
++double: 6
+ float: 9
+ ldouble: 9
+ 
+ Function: "j0_towardzero":
+-double: 6
++double: 7
+ float: 9
+ ldouble: 9
+ 
+@@ -1146,6 +1146,7 @@ float: 6
+ ldouble: 8
+ 
+ Function: "log":
++double: 1
+ float: 1
+ ldouble: 1
+ 
diff --git a/SOURCES/glibc-upstream-2.39-40.patch b/SOURCES/glibc-upstream-2.39-40.patch
new file mode 100644
index 0000000..c3070ad
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-40.patch
@@ -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
diff --git a/SOURCES/glibc-upstream-2.39-41.patch b/SOURCES/glibc-upstream-2.39-41.patch
new file mode 100644
index 0000000..659acb3
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-41.patch
@@ -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
diff --git a/SOURCES/glibc-upstream-2.39-42.patch b/SOURCES/glibc-upstream-2.39-42.patch
new file mode 100644
index 0000000..6be162f
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-42.patch
@@ -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;
diff --git a/SOURCES/glibc-upstream-2.39-43.patch b/SOURCES/glibc-upstream-2.39-43.patch
new file mode 100644
index 0000000..093670f
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-43.patch
@@ -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
diff --git a/SOURCES/glibc-upstream-2.39-44.patch b/SOURCES/glibc-upstream-2.39-44.patch
new file mode 100644
index 0000000..92b587a
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-44.patch
@@ -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)
diff --git a/SOURCES/glibc-upstream-2.39-45.patch b/SOURCES/glibc-upstream-2.39-45.patch
new file mode 100644
index 0000000..208555e
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-45.patch
@@ -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)
diff --git a/SOURCES/glibc-upstream-2.39-46.patch b/SOURCES/glibc-upstream-2.39-46.patch
new file mode 100644
index 0000000..d2f28d5
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-46.patch
@@ -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.
diff --git a/SOURCES/glibc-upstream-2.39-47.patch b/SOURCES/glibc-upstream-2.39-47.patch
new file mode 100644
index 0000000..0ab4156
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-47.patch
@@ -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.
diff --git a/SOURCES/glibc-upstream-2.39-48.patch b/SOURCES/glibc-upstream-2.39-48.patch
new file mode 100644
index 0000000..133d6a0
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-48.patch
@@ -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)
diff --git a/SOURCES/glibc-upstream-2.39-49.patch b/SOURCES/glibc-upstream-2.39-49.patch
new file mode 100644
index 0000000..a3c6b88
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-49.patch
@@ -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)
diff --git a/SOURCES/glibc-upstream-2.39-5.patch b/SOURCES/glibc-upstream-2.39-5.patch
new file mode 100644
index 0000000..92661f6
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-5.patch
@@ -0,0 +1,143 @@
+commit e0910f1d3278f05439fb434ee528fc9be1b6bd5e
+Author: Stefan Liebler <stli@linux.ibm.com>
+Date:   Thu Feb 22 15:03:27 2024 +0100
+
+    S390: Do not clobber r7 in clone [BZ #31402]
+    
+    Starting with commit e57d8fc97b90127de4ed3e3a9cdf663667580935
+    "S390: Always use svc 0"
+    clone clobbers the call-saved register r7 in error case:
+    function or stack is NULL.
+    
+    This patch restores the saved registers also in the error case.
+    Furthermore the existing test misc/tst-clone is extended to check
+    all error cases and that clone does not clobber registers in this
+    error case.
+    
+    (cherry picked from commit 02782fd12849b6673cb5c2728cb750e8ec295aa3)
+
+diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/clone.S b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S
+index 4c882ef2ee3f5b81..a7a863242c4ebd84 100644
+--- a/sysdeps/unix/sysv/linux/s390/s390-32/clone.S
++++ b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S
+@@ -53,6 +53,7 @@ ENTRY(__clone)
+ 	br	%r14
+ error:
+ 	lhi	%r2,-EINVAL
++	lm	%r6,%r7,24(%r15)	/* Load registers.  */
+ 	j	SYSCALL_ERROR_LABEL
+ PSEUDO_END (__clone)
+ 
+diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/clone.S b/sysdeps/unix/sysv/linux/s390/s390-64/clone.S
+index 4eb104be71ee565a..c552a6b8decb63de 100644
+--- a/sysdeps/unix/sysv/linux/s390/s390-64/clone.S
++++ b/sysdeps/unix/sysv/linux/s390/s390-64/clone.S
+@@ -54,6 +54,7 @@ ENTRY(__clone)
+ 	br	%r14
+ error:
+ 	lghi	%r2,-EINVAL
++	lmg	%r6,%r7,48(%r15)	/* Restore registers.  */
+ 	jg	SYSCALL_ERROR_LABEL
+ PSEUDO_END (__clone)
+ 
+diff --git a/sysdeps/unix/sysv/linux/tst-clone.c b/sysdeps/unix/sysv/linux/tst-clone.c
+index 470676ab2bb3fc31..2bc71249837fbb66 100644
+--- a/sysdeps/unix/sysv/linux/tst-clone.c
++++ b/sysdeps/unix/sysv/linux/tst-clone.c
+@@ -16,12 +16,16 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-/* BZ #2386 */
++/* BZ #2386, BZ #31402 */
+ #include <errno.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sched.h>
++#include <stackinfo.h>  /* For _STACK_GROWS_{UP,DOWN}.  */
++#include <support/check.h>
++
++volatile unsigned v = 0xdeadbeef;
+ 
+ int child_fn(void *arg)
+ {
+@@ -30,22 +34,67 @@ int child_fn(void *arg)
+ }
+ 
+ static int
+-do_test (void)
++__attribute__((noinline))
++do_clone (int (*fn)(void *), void *stack)
+ {
+   int result;
++  unsigned int a = v;
++  unsigned int b = v;
++  unsigned int c = v;
++  unsigned int d = v;
++  unsigned int e = v;
++  unsigned int f = v;
++  unsigned int g = v;
++  unsigned int h = v;
++  unsigned int i = v;
++  unsigned int j = v;
++  unsigned int k = v;
++  unsigned int l = v;
++  unsigned int m = v;
++  unsigned int n = v;
++  unsigned int o = v;
++
++  result = clone (fn, stack, 0, NULL);
++
++  /* Check that clone does not clobber call-saved registers.  */
++  TEST_VERIFY (a == v && b == v && c == v && d == v && e == v && f == v
++	       && g == v && h == v && i == v && j == v && k == v && l == v
++	       && m == v && n == v && o == v);
++
++  return result;
++}
++
++static void
++__attribute__((noinline))
++do_test_single (int (*fn)(void *), void *stack)
++{
++  printf ("%s (fn=%p, stack=%p)\n", __FUNCTION__, fn, stack);
++  errno = 0;
++
++  int result = do_clone (fn, stack);
++
++  TEST_COMPARE (errno, EINVAL);
++  TEST_COMPARE (result, -1);
++}
+ 
+-  result = clone (child_fn, NULL, 0, NULL);
++static int
++do_test (void)
++{
++  char st[128 * 1024] __attribute__ ((aligned));
++  void *stack = NULL;
++#if _STACK_GROWS_DOWN
++  stack = st + sizeof (st);
++#elif _STACK_GROWS_UP
++  stack = st;
++#else
++# error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP"
++#endif
+ 
+-  if (errno != EINVAL || result != -1)
+-    {
+-      printf ("FAIL: clone()=%d (wanted -1) errno=%d (wanted %d)\n",
+-              result, errno, EINVAL);
+-      return 1;
+-    }
++  do_test_single (child_fn, NULL);
++  do_test_single (NULL, stack);
++  do_test_single (NULL, NULL);
+ 
+-  puts ("All OK");
+   return 0;
+ }
+ 
+-#define TEST_FUNCTION do_test ()
+-#include "../test-skeleton.c"
++#include <support/test-driver.c>
diff --git a/SOURCES/glibc-upstream-2.39-50.patch b/SOURCES/glibc-upstream-2.39-50.patch
new file mode 100644
index 0000000..d79e2db
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-50.patch
@@ -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)
diff --git a/SOURCES/glibc-upstream-2.39-51.patch b/SOURCES/glibc-upstream-2.39-51.patch
new file mode 100644
index 0000000..4c9718c
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-51.patch
@@ -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)
diff --git a/SOURCES/glibc-upstream-2.39-52.patch b/SOURCES/glibc-upstream-2.39-52.patch
new file mode 100644
index 0000000..c03d7cc
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-52.patch
@@ -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.
diff --git a/SOURCES/glibc-upstream-2.39-53.patch b/SOURCES/glibc-upstream-2.39-53.patch
new file mode 100644
index 0000000..94ec662
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-53.patch
@@ -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
diff --git a/SOURCES/glibc-upstream-2.39-54.patch b/SOURCES/glibc-upstream-2.39-54.patch
new file mode 100644
index 0000000..7ed1911
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-54.patch
@@ -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 =
diff --git a/SOURCES/glibc-upstream-2.39-55.patch b/SOURCES/glibc-upstream-2.39-55.patch
new file mode 100644
index 0000000..0bb52db
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-55.patch
@@ -0,0 +1,38 @@
+commit ab4ef4421f85ea7afeb482ded51003658b08de7e
+Author: Gabi Falk <gabifalk@gmx.com>
+Date:   Tue May 7 18:25:00 2024 +0000
+
+    x86_64: Fix missing wcsncat function definition without multiarch (x86-64-v4)
+    
+    This code expects the WCSCAT preprocessor macro to be predefined in case
+    the evex implementation of the function should be defined with a name
+    different from __wcsncat_evex.  However, when glibc is built for
+    x86-64-v4 without multiarch support, sysdeps/x86_64/wcsncat.S defines
+    WCSNCAT variable instead of WCSCAT to build it as wcsncat.  Rename the
+    variable to WCSNCAT, as it is actually a better naming choice for the
+    variable in this case.
+    
+    Reported-by: Kenton Groombridge
+    Link: https://bugs.gentoo.org/921945
+    Fixes: 64b8b6516b ("x86: Add evex optimized functions for the wchar_t strcpy family")
+    Signed-off-by: Gabi Falk <gabifalk@gmx.com>
+    Reviewed-by: Sunil K Pandey <skpgkp2@gmail.com>
+    (cherry picked from commit dd5f891c1ad9f1b43b9db93afe2a55cbb7a6194e)
+
+diff --git a/sysdeps/x86_64/multiarch/wcsncat-evex.S b/sysdeps/x86_64/multiarch/wcsncat-evex.S
+index 392215950afd56be..10bfb0a5314130cf 100644
+--- a/sysdeps/x86_64/multiarch/wcsncat-evex.S
++++ b/sysdeps/x86_64/multiarch/wcsncat-evex.S
+@@ -1,9 +1,9 @@
+-#ifndef WCSCAT
+-# define WCSCAT	__wcsncat_evex
++#ifndef WCSNCAT
++# define WCSNCAT	__wcsncat_evex
+ #endif
+ 
+ #define USE_AS_WCSCPY
+ #define USE_AS_STRCAT
+ 
+-#define STRNCAT	WCSCAT
++#define STRNCAT	WCSNCAT
+ #include "strncat-evex.S"
diff --git a/SOURCES/glibc-upstream-2.39-56.patch b/SOURCES/glibc-upstream-2.39-56.patch
new file mode 100644
index 0000000..1acf952
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-56.patch
@@ -0,0 +1,71 @@
+commit 2db79c96baa1256b8fc2656596143da92fabd074
+Author: Sergey Kolosov <skolosov@redhat.com>
+Date:   Wed Apr 10 17:58:04 2024 +0200
+
+    libsupport: Add xgetpeername
+    
+    The patch adds redirections for getpeername.
+    
+    Reviewed-by: Arjun Shankar <arjun@redhat.com>
+    (cherry picked from commit 6687a6e3f962759536a8019d31c68c1009ccd6eb)
+
+diff --git a/support/Makefile b/support/Makefile
+index 362a51f882787f2b..aa57207bdccc852d 100644
+--- a/support/Makefile
++++ b/support/Makefile
+@@ -131,6 +131,7 @@ libsupport-routines = \
+   xfreopen \
+   xftruncate \
+   xgetline \
++  xgetpeername \
+   xgetsockname \
+   xlisten \
+   xlseek \
+diff --git a/support/xgetpeername.c b/support/xgetpeername.c
+new file mode 100644
+index 0000000000000000..6f448e456a1d9e1e
+--- /dev/null
++++ b/support/xgetpeername.c
+@@ -0,0 +1,30 @@
++/* getpeername with error checking.
++   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/xsocket.h>
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <support/check.h>
++
++void
++xgetpeername (int fd, struct sockaddr *sa, socklen_t *plen)
++{
++  if (getpeername (fd, sa, plen) != 0)
++    FAIL_EXIT1 ("getpeername (%d): %m", fd);
++}
+diff --git a/support/xsocket.h b/support/xsocket.h
+index 3e4410354676cb2a..4ac0e1f5ffe35dc2 100644
+--- a/support/xsocket.h
++++ b/support/xsocket.h
+@@ -26,6 +26,7 @@
+ int xsocket (int, int, int);
+ void xsetsockopt (int, int, int, const void *, socklen_t);
+ void xgetsockname (int, struct sockaddr *, socklen_t *);
++void xgetpeername (int, struct sockaddr *, socklen_t *);
+ void xconnect (int, const struct sockaddr *, socklen_t);
+ void xbind (int, const struct sockaddr *, socklen_t);
+ void xlisten (int, int);
diff --git a/SOURCES/glibc-upstream-2.39-57.patch b/SOURCES/glibc-upstream-2.39-57.patch
new file mode 100644
index 0000000..aee72fa
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-57.patch
@@ -0,0 +1,143 @@
+commit 32969a2b36b8cc74343182b768b3babe6f81c3aa
+Author: Sergey Kolosov <skolosov@redhat.com>
+Date:   Wed Apr 10 17:58:05 2024 +0200
+
+    socket: Add new test for connect
+    
+    This commit adds a simple bind/accept/connect test for an IPv4 TCP
+    connection to a local process via the loopback interface.
+    
+    Reviewed-by: Arjun Shankar <arjun@redhat.com>
+    (cherry picked from commit 3a83f79024cc023a74c3892a1673542e8e972485)
+
+diff --git a/socket/Makefile b/socket/Makefile
+index 74ca5b8452cd15d3..fc1bd0a2608f04bc 100644
+--- a/socket/Makefile
++++ b/socket/Makefile
+@@ -70,6 +70,7 @@ tests := \
+   tst-accept4 \
+   tst-cmsg_cloexec \
+   tst-cmsghdr \
++  tst-connect \
+   tst-sockopt \
+   # tests
+ 
+diff --git a/socket/tst-connect.c b/socket/tst-connect.c
+new file mode 100644
+index 0000000000000000..ec2fdd92c0a6f1be
+--- /dev/null
++++ b/socket/tst-connect.c
+@@ -0,0 +1,113 @@
++/* Test the connect function.
++   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 <arpa/inet.h>
++#include <errno.h>
++#include <fcntl.h>
++#include <signal.h>
++#include <stdbool.h>
++#include <support/check.h>
++#include <support/xsocket.h>
++#include <support/xunistd.h>
++#include <sys/socket.h>
++#include <stdio.h>
++
++static struct sockaddr_in server_address;
++
++int
++open_socket_inet_tcp (void)
++{
++  int fd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
++  if (fd < 0)
++    {
++      if (errno == EAFNOSUPPORT)
++        FAIL_UNSUPPORTED ("The host does not support IPv4");
++      else
++        FAIL_EXIT1 ("socket (AF_INET, SOCK_STREAM, IPPROTO_TCP): %m\n");
++    }
++  return fd;
++}
++
++static pid_t
++start_server (void)
++{
++  server_address.sin_family = AF_INET;
++  server_address.sin_port = 0;
++  server_address.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
++
++  int server_sock = open_socket_inet_tcp ();
++
++  xbind (server_sock, (struct sockaddr *) &server_address,
++         sizeof (server_address));
++
++  socklen_t sa_len = sizeof (server_address);
++  xgetsockname (server_sock, (struct sockaddr *) &server_address, &sa_len);
++  xlisten (server_sock, 5);
++
++  pid_t my_pid = xfork ();
++  if (my_pid > 0)
++    {
++      xclose (server_sock);
++      return my_pid;
++    }
++
++  struct sockaddr_in client_address;
++  socklen_t ca_len = sizeof (server_address);
++  int client_sock = xaccept (server_sock, (struct sockaddr *) &client_address,
++                             &ca_len);
++  printf ("socket accepted %d\n", client_sock);
++
++  _exit (0);
++}
++
++static int
++do_test (void)
++{
++  pid_t serv_pid;
++  struct sockaddr_in peer;
++  socklen_t peer_len;
++
++  serv_pid = start_server ();
++  int client_sock = open_socket_inet_tcp ();
++  xconnect (client_sock, (const struct sockaddr *) &server_address,
++            sizeof (server_address));
++
++  /* A second connect with same arguments should fail with EISCONN.  */
++  int result = connect (client_sock,
++                        (const struct sockaddr *) &server_address,
++                        sizeof (server_address));
++  if (result == 0 || errno != EISCONN)
++    FAIL_EXIT1 ("Second connect (%d), should fail with EISCONN: %m",
++                client_sock);
++
++  peer_len = sizeof (peer);
++  xgetpeername (client_sock, (struct sockaddr *) &peer, &peer_len);
++  TEST_COMPARE (peer_len, sizeof (peer));
++  TEST_COMPARE (peer.sin_port, server_address.sin_port);
++  TEST_COMPARE_BLOB (&peer.sin_addr, sizeof (peer.sin_addr),
++                     &server_address.sin_addr,
++                     sizeof (server_address.sin_addr));
++
++  int status;
++  xwaitpid (serv_pid, &status, 0);
++  TEST_COMPARE (status, 0);
++
++  return 0;
++}
++
++#include <support/test-driver.c>
diff --git a/SOURCES/glibc-upstream-2.39-58.patch b/SOURCES/glibc-upstream-2.39-58.patch
new file mode 100644
index 0000000..cbe201a
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-58.patch
@@ -0,0 +1,23 @@
+commit c7c3f5bf80ae86b34501f473f1a9fc545c911b7f
+Author: caiyinyu <caiyinyu@loongson.cn>
+Date:   Sat May 11 10:25:54 2024 +0800
+
+    LoongArch: Fix undefined `__memset_aligned` reference in ld.so linking.
+    
+    This patch from 095067efdf68c8061d6f99a21a0300841bede999 (LoongArch: Add
+    glibc.cpu.hwcap support.)
+
+diff --git a/sysdeps/loongarch/lp64/multiarch/dl-symbol-redir-ifunc.h b/sysdeps/loongarch/lp64/multiarch/dl-symbol-redir-ifunc.h
+index cb640d77b7695b93..a73390b12f67a3fc 100644
+--- a/sysdeps/loongarch/lp64/multiarch/dl-symbol-redir-ifunc.h
++++ b/sysdeps/loongarch/lp64/multiarch/dl-symbol-redir-ifunc.h
+@@ -19,6 +19,9 @@
+ #ifndef _DL_IFUNC_GENERIC_H
+ #define _DL_IFUNC_GENERIC_H
+ 
++#ifndef SHARED
+ asm ("memset = __memset_aligned");
++asm ("memcmp = __memcmp_aligned");
++#endif
+ 
+ #endif
diff --git a/SOURCES/glibc-upstream-2.39-59.patch b/SOURCES/glibc-upstream-2.39-59.patch
new file mode 100644
index 0000000..0f4fb1c
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-59.patch
@@ -0,0 +1,40 @@
+commit 9f2b100d6705b9bbb25206b53e80d7759644e06e
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Sat May 25 05:13:41 2024 -0700
+
+    parse_fdinfo: Don't advance pointer twice [BZ #31798]
+    
+    pidfd_getpid.c has
+    
+          /* Ignore invalid large values.  */
+          if (INT_MULTIPLY_WRAPV (10, n, &n)
+              || INT_ADD_WRAPV (n, *l++ - '0', &n))
+            return -1;
+    
+    For GCC older than GCC 7, INT_ADD_WRAPV(a, b, r) is defined as
+    
+       _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW)
+    
+    and *l++ - '0' is evaluated twice.  Fix BZ #31798 by moving "l++" out of
+    the if statement.  Tested with GCC 6.4 and GCC 14.1.
+    
+    Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+    Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+    (cherry picked from commit f981bf6b9db87e0732b46bfe92fdad4d363225e8)
+
+diff --git a/sysdeps/unix/sysv/linux/pidfd_getpid.c b/sysdeps/unix/sysv/linux/pidfd_getpid.c
+index 8567b413dd2c210b..30025e5863f7b956 100644
+--- a/sysdeps/unix/sysv/linux/pidfd_getpid.c
++++ b/sysdeps/unix/sysv/linux/pidfd_getpid.c
+@@ -74,8 +74,10 @@ parse_fdinfo (const char *l, void *arg)
+ 
+       /* Ignore invalid large values.  */
+       if (INT_MULTIPLY_WRAPV (10, n, &n)
+-          || INT_ADD_WRAPV (n, *l++ - '0', &n))
++          || INT_ADD_WRAPV (n, *l - '0', &n))
+         return -1;
++
++      l++;
+     }
+ 
+   /* -1 indicates that the process is terminated.  */
diff --git a/SOURCES/glibc-upstream-2.39-6.patch b/SOURCES/glibc-upstream-2.39-6.patch
new file mode 100644
index 0000000..61f4133
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-6.patch
@@ -0,0 +1,1052 @@
+commit 1b9c1a0047fb26a65a9b2a7b8cd977243f7d353c
+Author: Jakub Jelinek <jakub@redhat.com>
+Date:   Wed Jan 31 19:17:27 2024 +0100
+
+    Use gcc __builtin_stdc_* builtins in stdbit.h if possible
+    
+    The following patch uses the GCC 14 __builtin_stdc_* builtins in stdbit.h
+    for the type-generic macros, so that when compiled with GCC 14 or later,
+    it supports not just 8/16/32/64-bit unsigned integers, but also 128-bit
+    (if target supports them) and unsigned _BitInt (any supported precision).
+    And so that the macros don't expand arguments multiple times and can be
+    evaluated in constant expressions.
+    
+    The new testcase is gcc's gcc/testsuite/gcc.dg/builtin-stdc-bit-1.c
+    adjusted to test stdbit.h and the type-generic macros in there instead
+    of the builtins and adjusted to use glibc test framework rather than
+    gcc style tests with __builtin_abort ().
+    
+    Signed-off-by: Jakub Jelinek <jakub@redhat.com>
+    Reviewed-by: Joseph Myers <josmyers@redhat.com>
+    (cherry picked from commit da89496337b97e6a2aaf1e81d55cf998f6db1070)
+
+diff --git a/manual/stdbit.texi b/manual/stdbit.texi
+index fe41c671d8f8f7d9..6c75ed9a20444132 100644
+--- a/manual/stdbit.texi
++++ b/manual/stdbit.texi
+@@ -32,7 +32,13 @@ and @code{unsigned long long int}.  In addition, there is a
+ corresponding type-generic macro (not listed below), named the same as
+ the functions but without any suffix such as @samp{_uc}.  The
+ type-generic macro can only be used with an argument of an unsigned
+-integer type with a width of 8, 16, 32 or 64 bits.
++integer type with a width of 8, 16, 32 or 64 bits, or when using
++a compiler with support for
++@uref{https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html,@code{__builtin_stdc_bit_ceil}},
++etc.@:, built-in functions such as GCC 14.1 or later
++any unsigned integer type those built-in functions support.
++In GCC 14.1 that includes support for @code{unsigned __int128} and
++@code{unsigned _BitInt(@var{n})} if supported by the target.
+ 
+ @deftypefun {unsigned int} stdc_leading_zeros_uc (unsigned char @var{x})
+ @deftypefunx {unsigned int} stdc_leading_zeros_us (unsigned short @var{x})
+diff --git a/stdlib/Makefile b/stdlib/Makefile
+index d587f054d198a173..9898cc5d8a560625 100644
+--- a/stdlib/Makefile
++++ b/stdlib/Makefile
+@@ -308,6 +308,7 @@ tests := \
+   tst-setcontext10 \
+   tst-setcontext11 \
+   tst-stdbit-Wconversion \
++  tst-stdbit-builtins \
+   tst-stdc_bit_ceil \
+   tst-stdc_bit_floor \
+   tst-stdc_bit_width \
+diff --git a/stdlib/stdbit.h b/stdlib/stdbit.h
+index f334eb174d209c82..2801590c63006ad2 100644
+--- a/stdlib/stdbit.h
++++ b/stdlib/stdbit.h
+@@ -64,9 +64,13 @@ extern unsigned int stdc_leading_zeros_ul (unsigned long int __x)
+ __extension__
+ extern unsigned int stdc_leading_zeros_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_leading_zeros(x)				\
++#if __glibc_has_builtin (__builtin_stdc_leading_zeros)
++# define stdc_leading_zeros(x) (__builtin_stdc_leading_zeros (x))
++#else
++# define stdc_leading_zeros(x)				\
+   (stdc_leading_zeros_ull (x)				\
+    - (unsigned int) (8 * (sizeof (0ULL) - sizeof (x))))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_clzll)
+ static __always_inline unsigned int
+@@ -116,9 +120,13 @@ extern unsigned int stdc_leading_ones_ul (unsigned long int __x)
+ __extension__
+ extern unsigned int stdc_leading_ones_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_leading_ones(x)					\
++#if __glibc_has_builtin (__builtin_stdc_leading_ones)
++# define stdc_leading_ones(x) (__builtin_stdc_leading_ones (x))
++#else
++# define stdc_leading_ones(x)					\
+   (stdc_leading_ones_ull ((unsigned long long int) (x)		\
+ 			  << 8 * (sizeof (0ULL) - sizeof (x))))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_clzll)
+ static __always_inline unsigned int
+@@ -168,11 +176,15 @@ extern unsigned int stdc_trailing_zeros_ul (unsigned long int __x)
+ __extension__
+ extern unsigned int stdc_trailing_zeros_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_trailing_zeros(x)				\
++#if __glibc_has_builtin (__builtin_stdc_trailing_zeros)
++# define stdc_trailing_zeros(x) (__builtin_stdc_trailing_zeros (x))
++#else
++# define stdc_trailing_zeros(x)				\
+   (sizeof (x) == 8 ? stdc_trailing_zeros_ull (x)	\
+    : sizeof (x) == 4 ? stdc_trailing_zeros_ui (x)	\
+    : sizeof (x) == 2 ? stdc_trailing_zeros_us (__pacify_uint16 (x))	\
+    : stdc_trailing_zeros_uc (__pacify_uint8 (x)))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_ctzll)
+ static __always_inline unsigned int
+@@ -222,7 +234,11 @@ extern unsigned int stdc_trailing_ones_ul (unsigned long int __x)
+ __extension__
+ extern unsigned int stdc_trailing_ones_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_trailing_ones(x) (stdc_trailing_ones_ull (x))
++#if __glibc_has_builtin (__builtin_stdc_trailing_ones)
++# define stdc_trailing_ones(x) (__builtin_stdc_trailing_ones (x))
++#else
++# define stdc_trailing_ones(x) (stdc_trailing_ones_ull (x))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_ctzll)
+ static __always_inline unsigned int
+@@ -272,11 +288,15 @@ extern unsigned int stdc_first_leading_zero_ul (unsigned long int __x)
+ __extension__
+ extern unsigned int stdc_first_leading_zero_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_first_leading_zero(x)			\
++#if __glibc_has_builtin (__builtin_stdc_first_leading_zero)
++# define stdc_first_leading_zero(x) (__builtin_stdc_first_leading_zero (x))
++#else
++# define stdc_first_leading_zero(x)			\
+   (sizeof (x) == 8 ? stdc_first_leading_zero_ull (x)	\
+    : sizeof (x) == 4 ? stdc_first_leading_zero_ui (x)	\
+    : sizeof (x) == 2 ? stdc_first_leading_zero_us (__pacify_uint16 (x))	\
+    : stdc_first_leading_zero_uc (__pacify_uint8 (x)))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_clzll)
+ static __always_inline unsigned int
+@@ -326,11 +346,15 @@ extern unsigned int stdc_first_leading_one_ul (unsigned long int __x)
+ __extension__
+ extern unsigned int stdc_first_leading_one_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_first_leading_one(x)			\
++#if __glibc_has_builtin (__builtin_stdc_first_leading_one)
++# define stdc_first_leading_one(x) (__builtin_stdc_first_leading_one (x))
++#else
++# define stdc_first_leading_one(x)			\
+   (sizeof (x) == 8 ? stdc_first_leading_one_ull (x)	\
+    : sizeof (x) == 4 ? stdc_first_leading_one_ui (x)	\
+    : sizeof (x) == 2 ? stdc_first_leading_one_us (__pacify_uint16 (x))	\
+    : stdc_first_leading_one_uc (__pacify_uint8 (x)))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_clzll)
+ static __always_inline unsigned int
+@@ -380,11 +404,15 @@ extern unsigned int stdc_first_trailing_zero_ul (unsigned long int __x)
+ __extension__
+ extern unsigned int stdc_first_trailing_zero_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_first_trailing_zero(x)			\
++#if __glibc_has_builtin (__builtin_stdc_first_trailing_zero)
++# define stdc_first_trailing_zero(x) (__builtin_stdc_first_trailing_zero (x))
++#else
++# define stdc_first_trailing_zero(x)			\
+   (sizeof (x) == 8 ? stdc_first_trailing_zero_ull (x)	\
+    : sizeof (x) == 4 ? stdc_first_trailing_zero_ui (x)	\
+    : sizeof (x) == 2 ? stdc_first_trailing_zero_us (__pacify_uint16 (x)) \
+    : stdc_first_trailing_zero_uc (__pacify_uint8 (x)))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_ctzll)
+ static __always_inline unsigned int
+@@ -434,11 +462,15 @@ extern unsigned int stdc_first_trailing_one_ul (unsigned long int __x)
+ __extension__
+ extern unsigned int stdc_first_trailing_one_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_first_trailing_one(x)			\
++#if __glibc_has_builtin (__builtin_stdc_first_trailing_one)
++# define stdc_first_trailing_one(x) (__builtin_stdc_first_trailing_one (x))
++#else
++# define stdc_first_trailing_one(x)			\
+   (sizeof (x) == 8 ? stdc_first_trailing_one_ull (x)	\
+    : sizeof (x) == 4 ? stdc_first_trailing_one_ui (x)	\
+    : sizeof (x) == 2 ? stdc_first_trailing_one_us (__pacify_uint16 (x))	\
+    : stdc_first_trailing_one_uc (__pacify_uint8 (x)))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_ctzll)
+ static __always_inline unsigned int
+@@ -488,9 +520,13 @@ extern unsigned int stdc_count_zeros_ul (unsigned long int __x)
+ __extension__
+ extern unsigned int stdc_count_zeros_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_count_zeros(x)				\
++#if __glibc_has_builtin (__builtin_stdc_count_zeros)
++# define stdc_count_zeros(x) (__builtin_stdc_count_zeros (x))
++#else
++# define stdc_count_zeros(x)				\
+   (stdc_count_zeros_ull (x)				\
+    - (unsigned int) (8 * (sizeof (0ULL) - sizeof (x))))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_popcountll)
+ static __always_inline unsigned int
+@@ -540,7 +576,11 @@ extern unsigned int stdc_count_ones_ul (unsigned long int __x)
+ __extension__
+ extern unsigned int stdc_count_ones_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_count_ones(x) (stdc_count_ones_ull (x))
++#if __glibc_has_builtin (__builtin_stdc_count_ones)
++# define stdc_count_ones(x) (__builtin_stdc_count_ones (x))
++#else
++# define stdc_count_ones(x) (stdc_count_ones_ull (x))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_popcountll)
+ static __always_inline unsigned int
+@@ -590,10 +630,14 @@ extern bool stdc_has_single_bit_ul (unsigned long int __x)
+ __extension__
+ extern bool stdc_has_single_bit_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_has_single_bit(x)				\
++#if __glibc_has_builtin (__builtin_stdc_has_single_bit)
++# define stdc_has_single_bit(x) (__builtin_stdc_has_single_bit (x))
++#else
++# define stdc_has_single_bit(x)				\
+   ((bool) (sizeof (x) <= sizeof (unsigned int)		\
+ 	   ? stdc_has_single_bit_ui (x)			\
+ 	   : stdc_has_single_bit_ull (x)))
++#endif
+ 
+ static __always_inline bool
+ __hsb64_inline (uint64_t __x)
+@@ -641,7 +685,11 @@ extern unsigned int stdc_bit_width_ul (unsigned long int __x)
+ __extension__
+ extern unsigned int stdc_bit_width_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_bit_width(x) (stdc_bit_width_ull (x))
++#if __glibc_has_builtin (__builtin_stdc_bit_width)
++# define stdc_bit_width(x) (__builtin_stdc_bit_width (x))
++#else
++# define stdc_bit_width(x) (stdc_bit_width_ull (x))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_clzll)
+ static __always_inline unsigned int
+@@ -691,7 +739,11 @@ extern unsigned long int stdc_bit_floor_ul (unsigned long int __x)
+ __extension__
+ extern unsigned long long int stdc_bit_floor_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_bit_floor(x) ((__typeof (x)) stdc_bit_floor_ull (x))
++#if __glibc_has_builtin (__builtin_stdc_bit_floor)
++# define stdc_bit_floor(x) (__builtin_stdc_bit_floor (x))
++#else
++# define stdc_bit_floor(x) ((__typeof (x)) stdc_bit_floor_ull (x))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_clzll)
+ static __always_inline uint64_t
+@@ -743,7 +795,11 @@ extern unsigned long int stdc_bit_ceil_ul (unsigned long int __x)
+ __extension__
+ extern unsigned long long int stdc_bit_ceil_ull (unsigned long long int __x)
+      __THROW __attribute_const__;
+-#define stdc_bit_ceil(x) ((__typeof (x)) stdc_bit_ceil_ull (x))
++#if __glibc_has_builtin (__builtin_stdc_bit_ceil)
++# define stdc_bit_ceil(x) (__builtin_stdc_bit_ceil (x))
++#else
++# define stdc_bit_ceil(x) ((__typeof (x)) stdc_bit_ceil_ull (x))
++#endif
+ 
+ #if __GNUC_PREREQ (3, 4) || __glibc_has_builtin (__builtin_clzll)
+ static __always_inline uint64_t
+diff --git a/stdlib/tst-stdbit-builtins.c b/stdlib/tst-stdbit-builtins.c
+new file mode 100644
+index 0000000000000000..536841ca8ac3425b
+--- /dev/null
++++ b/stdlib/tst-stdbit-builtins.c
+@@ -0,0 +1,778 @@
++/* Test <stdbit.h> type-generic macros with compiler __builtin_stdc_* support.
++   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 <stdbit.h>
++#include <limits.h>
++#include <support/check.h>
++
++#if __glibc_has_builtin (__builtin_stdc_leading_zeros) \
++    && __glibc_has_builtin (__builtin_stdc_leading_ones) \
++    && __glibc_has_builtin (__builtin_stdc_trailing_zeros) \
++    && __glibc_has_builtin (__builtin_stdc_trailing_ones) \
++    && __glibc_has_builtin (__builtin_stdc_first_leading_zero) \
++    && __glibc_has_builtin (__builtin_stdc_first_leading_one) \
++    && __glibc_has_builtin (__builtin_stdc_first_trailing_zero) \
++    && __glibc_has_builtin (__builtin_stdc_first_trailing_one) \
++    && __glibc_has_builtin (__builtin_stdc_count_zeros) \
++    && __glibc_has_builtin (__builtin_stdc_count_ones) \
++    && __glibc_has_builtin (__builtin_stdc_has_single_bit) \
++    && __glibc_has_builtin (__builtin_stdc_bit_width) \
++    && __glibc_has_builtin (__builtin_stdc_bit_floor) \
++    && __glibc_has_builtin (__builtin_stdc_bit_ceil)
++
++# if !defined (BITINT_MAXWIDTH) && defined (__BITINT_MAXWIDTH__)
++#  define BITINT_MAXWIDTH __BITINT_MAXWIDTH__
++# endif
++
++typedef unsigned char uc;
++typedef unsigned short us;
++typedef unsigned int ui;
++typedef unsigned long int ul;
++typedef unsigned long long int ull;
++
++# define expr_has_type(e, t) _Generic (e, default : 0, t : 1)
++
++static int
++do_test (void)
++{
++  TEST_COMPARE (stdc_leading_zeros ((uc) 0), CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_leading_zeros ((uc) 0), ui), 1);
++  TEST_COMPARE (stdc_leading_zeros ((us) 0), sizeof (short) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_leading_zeros ((us) 0), ui), 1);
++  TEST_COMPARE (stdc_leading_zeros (0U), sizeof (int) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_leading_zeros (0U), ui), 1);
++  TEST_COMPARE (stdc_leading_zeros (0UL), sizeof (long int) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_leading_zeros (0UL), ui), 1);
++  TEST_COMPARE (stdc_leading_zeros (0ULL), sizeof (long long int) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_leading_zeros (0ULL), ui), 1);
++  TEST_COMPARE (stdc_leading_zeros ((uc) ~0U), 0);
++  TEST_COMPARE (stdc_leading_zeros ((us) ~0U), 0);
++  TEST_COMPARE (stdc_leading_zeros (~0U), 0);
++  TEST_COMPARE (stdc_leading_zeros (~0UL), 0);
++  TEST_COMPARE (stdc_leading_zeros (~0ULL), 0);
++  TEST_COMPARE (stdc_leading_zeros ((uc) 3), CHAR_BIT - 2);
++  TEST_COMPARE (stdc_leading_zeros ((us) 9), sizeof (short) * CHAR_BIT - 4);
++  TEST_COMPARE (stdc_leading_zeros (34U), sizeof (int) * CHAR_BIT - 6);
++  TEST_COMPARE (stdc_leading_zeros (130UL), sizeof (long int) * CHAR_BIT - 8);
++  TEST_COMPARE (stdc_leading_zeros (512ULL),
++		sizeof (long long int) * CHAR_BIT - 10);
++  TEST_COMPARE (stdc_leading_ones ((uc) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_leading_ones ((uc) 0), ui), 1);
++  TEST_COMPARE (stdc_leading_ones ((us) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_leading_ones ((us) 0), ui), 1);
++  TEST_COMPARE (stdc_leading_ones (0U), 0);
++  TEST_COMPARE (expr_has_type (stdc_leading_ones (0U), ui), 1);
++  TEST_COMPARE (stdc_leading_ones (0UL), 0);
++  TEST_COMPARE (expr_has_type (stdc_leading_ones (0UL), ui), 1);
++  TEST_COMPARE (stdc_leading_ones (0ULL), 0);
++  TEST_COMPARE (expr_has_type (stdc_leading_ones (0ULL), ui), 1);
++  TEST_COMPARE (stdc_leading_ones ((uc) ~0U), CHAR_BIT);
++  TEST_COMPARE (stdc_leading_ones ((us) ~0U), sizeof (short) * CHAR_BIT);
++  TEST_COMPARE (stdc_leading_ones (~0U), sizeof (int) * CHAR_BIT);
++  TEST_COMPARE (stdc_leading_ones (~0UL), sizeof (long int) * CHAR_BIT);
++  TEST_COMPARE (stdc_leading_ones (~0ULL), sizeof (long long int) * CHAR_BIT);
++  TEST_COMPARE (stdc_leading_ones ((uc) ~3), CHAR_BIT - 2);
++  TEST_COMPARE (stdc_leading_ones ((us) ~9), sizeof (short) * CHAR_BIT - 4);
++  TEST_COMPARE (stdc_leading_ones (~34U), sizeof (int) * CHAR_BIT - 6);
++  TEST_COMPARE (stdc_leading_ones (~130UL), sizeof (long int) * CHAR_BIT - 8);
++  TEST_COMPARE (stdc_leading_ones (~512ULL),
++		sizeof (long long int) * CHAR_BIT - 10);
++  TEST_COMPARE (stdc_trailing_zeros ((uc) 0), CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_trailing_zeros ((uc) 0), ui), 1);
++  TEST_COMPARE (stdc_trailing_zeros ((us) 0), sizeof (short) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_trailing_zeros ((us) 0), ui), 1);
++  TEST_COMPARE (stdc_trailing_zeros (0U), sizeof (int) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_trailing_zeros (0U), ui), 1);
++  TEST_COMPARE (stdc_trailing_zeros (0UL), sizeof (long int) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_trailing_zeros (0UL), ui), 1);
++  TEST_COMPARE (stdc_trailing_zeros (0ULL), sizeof (long long int) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_trailing_zeros (0ULL), ui), 1);
++  TEST_COMPARE (stdc_trailing_zeros ((uc) ~0U), 0);
++  TEST_COMPARE (stdc_trailing_zeros ((us) ~0U), 0);
++  TEST_COMPARE (stdc_trailing_zeros (~0U), 0);
++  TEST_COMPARE (stdc_trailing_zeros (~0UL), 0);
++  TEST_COMPARE (stdc_trailing_zeros (~0ULL), 0);
++  TEST_COMPARE (stdc_trailing_zeros ((uc) 2), 1);
++  TEST_COMPARE (stdc_trailing_zeros ((us) 24), 3);
++  TEST_COMPARE (stdc_trailing_zeros (32U), 5);
++  TEST_COMPARE (stdc_trailing_zeros (128UL), 7);
++  TEST_COMPARE (stdc_trailing_zeros (512ULL), 9);
++  TEST_COMPARE (stdc_trailing_ones ((uc) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_trailing_ones ((uc) 0), ui), 1);
++  TEST_COMPARE (stdc_trailing_ones ((us) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_trailing_ones ((us) 0), ui), 1);
++  TEST_COMPARE (stdc_trailing_ones (0U), 0);
++  TEST_COMPARE (expr_has_type (stdc_trailing_ones (0U), ui), 1);
++  TEST_COMPARE (stdc_trailing_ones (0UL), 0);
++  TEST_COMPARE (expr_has_type (stdc_trailing_ones (0UL), ui), 1);
++  TEST_COMPARE (stdc_trailing_ones (0ULL), 0);
++  TEST_COMPARE (expr_has_type (stdc_trailing_ones (0ULL), ui), 1);
++  TEST_COMPARE (stdc_trailing_ones ((uc) ~0U), CHAR_BIT);
++  TEST_COMPARE (stdc_trailing_ones ((us) ~0U), sizeof (short) * CHAR_BIT);
++  TEST_COMPARE (stdc_trailing_ones (~0U), sizeof (int) * CHAR_BIT);
++  TEST_COMPARE (stdc_trailing_ones (~0UL), sizeof (long int) * CHAR_BIT);
++  TEST_COMPARE (stdc_trailing_ones (~0ULL), sizeof (long long int) * CHAR_BIT);
++  TEST_COMPARE (stdc_trailing_ones ((uc) 5), 1);
++  TEST_COMPARE (stdc_trailing_ones ((us) 15), 4);
++  TEST_COMPARE (stdc_trailing_ones (127U), 7);
++  TEST_COMPARE (stdc_trailing_ones (511UL), 9);
++  TEST_COMPARE (stdc_trailing_ones (~0ULL >> 2),
++		sizeof (long long int) * CHAR_BIT - 2);
++  TEST_COMPARE (stdc_first_leading_zero ((uc) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_zero ((uc) 0), ui), 1);
++  TEST_COMPARE (stdc_first_leading_zero ((us) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_zero ((us) 0), ui), 1);
++  TEST_COMPARE (stdc_first_leading_zero (0U), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_zero (0U), ui), 1);
++  TEST_COMPARE (stdc_first_leading_zero (0UL), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_zero (0UL), ui), 1);
++  TEST_COMPARE (stdc_first_leading_zero (0ULL), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_zero (0ULL), ui), 1);
++  TEST_COMPARE (stdc_first_leading_zero ((uc) ~0U), 0);
++  TEST_COMPARE (stdc_first_leading_zero ((us) ~0U), 0);
++  TEST_COMPARE (stdc_first_leading_zero (~0U), 0);
++  TEST_COMPARE (stdc_first_leading_zero (~0UL), 0);
++  TEST_COMPARE (stdc_first_leading_zero (~0ULL), 0);
++  TEST_COMPARE (stdc_first_leading_zero ((uc) ~3U), CHAR_BIT - 1);
++  TEST_COMPARE (stdc_first_leading_zero ((us) ~15U),
++		sizeof (short) * CHAR_BIT - 3);
++  TEST_COMPARE (stdc_first_leading_zero (~63U), sizeof (int) * CHAR_BIT - 5);
++  TEST_COMPARE (stdc_first_leading_zero (~255UL),
++		sizeof (long int) * CHAR_BIT - 7);
++  TEST_COMPARE (stdc_first_leading_zero (~1023ULL),
++		sizeof (long long int) * CHAR_BIT - 9);
++  TEST_COMPARE (stdc_first_leading_one ((uc) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_one ((uc) 0), ui), 1);
++  TEST_COMPARE (stdc_first_leading_one ((us) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_one ((us) 0), ui), 1);
++  TEST_COMPARE (stdc_first_leading_one (0U), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_one (0U), ui), 1);
++  TEST_COMPARE (stdc_first_leading_one (0UL), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_one (0UL), ui), 1);
++  TEST_COMPARE (stdc_first_leading_one (0ULL), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_one (0ULL), ui), 1);
++  TEST_COMPARE (stdc_first_leading_one ((uc) ~0U), 1);
++  TEST_COMPARE (stdc_first_leading_one ((us) ~0U), 1);
++  TEST_COMPARE (stdc_first_leading_one (~0U), 1);
++  TEST_COMPARE (stdc_first_leading_one (~0UL), 1);
++  TEST_COMPARE (stdc_first_leading_one (~0ULL), 1);
++  TEST_COMPARE (stdc_first_leading_one ((uc) 3), CHAR_BIT - 1);
++  TEST_COMPARE (stdc_first_leading_one ((us) 9),
++		sizeof (short) * CHAR_BIT - 3);
++  TEST_COMPARE (stdc_first_leading_one (34U), sizeof (int) * CHAR_BIT - 5);
++  TEST_COMPARE (stdc_first_leading_one (130UL),
++		sizeof (long int) * CHAR_BIT - 7);
++  TEST_COMPARE (stdc_first_leading_one (512ULL),
++		sizeof (long long int) * CHAR_BIT - 9);
++  TEST_COMPARE (stdc_first_trailing_zero ((uc) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_zero ((uc) 0), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_zero ((us) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_zero ((us) 0), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_zero (0U), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_zero (0U), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_zero (0UL), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_zero (0UL), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_zero (0ULL), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_zero (0ULL), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_zero ((uc) ~0U), 0);
++  TEST_COMPARE (stdc_first_trailing_zero ((us) ~0U), 0);
++  TEST_COMPARE (stdc_first_trailing_zero (~0U), 0);
++  TEST_COMPARE (stdc_first_trailing_zero (~0UL), 0);
++  TEST_COMPARE (stdc_first_trailing_zero (~0ULL), 0);
++  TEST_COMPARE (stdc_first_trailing_zero ((uc) 2), 1);
++  TEST_COMPARE (stdc_first_trailing_zero ((us) 15), 5);
++  TEST_COMPARE (stdc_first_trailing_zero (63U), 7);
++  TEST_COMPARE (stdc_first_trailing_zero (128UL), 1);
++  TEST_COMPARE (stdc_first_trailing_zero (511ULL), 10);
++  TEST_COMPARE (stdc_first_trailing_one ((uc) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_one ((uc) 0), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_one ((us) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_one ((us) 0), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_one (0U), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_one (0U), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_one (0UL), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_one (0UL), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_one (0ULL), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_one (0ULL), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_one ((uc) ~0U), 1);
++  TEST_COMPARE (stdc_first_trailing_one ((us) ~0U), 1);
++  TEST_COMPARE (stdc_first_trailing_one (~0U), 1);
++  TEST_COMPARE (stdc_first_trailing_one (~0UL), 1);
++  TEST_COMPARE (stdc_first_trailing_one (~0ULL), 1);
++  TEST_COMPARE (stdc_first_trailing_one ((uc) 4), 3);
++  TEST_COMPARE (stdc_first_trailing_one ((us) 96), 6);
++  TEST_COMPARE (stdc_first_trailing_one (127U), 1);
++  TEST_COMPARE (stdc_first_trailing_one (511UL), 1);
++  TEST_COMPARE (stdc_first_trailing_one (~0ULL << 12), 13);
++  TEST_COMPARE (stdc_count_zeros ((uc) 0), CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_count_zeros ((uc) 0), ui), 1);
++  TEST_COMPARE (stdc_count_zeros ((us) 0), sizeof (short) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_count_zeros ((us) 0), ui), 1);
++  TEST_COMPARE (stdc_count_zeros (0U), sizeof (int) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_count_zeros (0U), ui), 1);
++  TEST_COMPARE (stdc_count_zeros (0UL), sizeof (long int) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_count_zeros (0UL), ui), 1);
++  TEST_COMPARE (stdc_count_zeros (0ULL), sizeof (long long int) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_count_zeros (0ULL), ui), 1);
++  TEST_COMPARE (stdc_count_zeros ((uc) ~0U), 0);
++  TEST_COMPARE (stdc_count_zeros ((us) ~0U), 0);
++  TEST_COMPARE (stdc_count_zeros (~0U), 0);
++  TEST_COMPARE (stdc_count_zeros (~0UL), 0);
++  TEST_COMPARE (stdc_count_zeros (~0ULL), 0);
++  TEST_COMPARE (stdc_count_zeros ((uc) 1U), CHAR_BIT - 1);
++  TEST_COMPARE (stdc_count_zeros ((us) 42), sizeof (short) * CHAR_BIT - 3);
++  TEST_COMPARE (stdc_count_zeros (291U), sizeof (int) * CHAR_BIT - 4);
++  TEST_COMPARE (stdc_count_zeros (~1315UL), 5);
++  TEST_COMPARE (stdc_count_zeros (3363ULL),
++		sizeof (long long int) * CHAR_BIT - 6);
++  TEST_COMPARE (stdc_count_ones ((uc) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_count_ones ((uc) 0), ui), 1);
++  TEST_COMPARE (stdc_count_ones ((us) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_count_ones ((us) 0), ui), 1);
++  TEST_COMPARE (stdc_count_ones (0U), 0);
++  TEST_COMPARE (expr_has_type (stdc_count_ones (0U), ui), 1);
++  TEST_COMPARE (stdc_count_ones (0UL), 0);
++  TEST_COMPARE (expr_has_type (stdc_count_ones (0UL), ui), 1);
++  TEST_COMPARE (stdc_count_ones (0ULL), 0);
++  TEST_COMPARE (expr_has_type (stdc_count_ones (0ULL), ui), 1);
++  TEST_COMPARE (stdc_count_ones ((uc) ~0U), CHAR_BIT);
++  TEST_COMPARE (stdc_count_ones ((us) ~0U), sizeof (short) * CHAR_BIT);
++  TEST_COMPARE (stdc_count_ones (~0U), sizeof (int) * CHAR_BIT);
++  TEST_COMPARE (stdc_count_ones (~0UL), sizeof (long int) * CHAR_BIT);
++  TEST_COMPARE (stdc_count_ones (~0ULL), sizeof (long long int) * CHAR_BIT);
++  TEST_COMPARE (stdc_count_ones ((uc) ~1U), CHAR_BIT - 1);
++  TEST_COMPARE (stdc_count_ones ((us) ~42), sizeof (short) * CHAR_BIT - 3);
++  TEST_COMPARE (stdc_count_ones (~291U), sizeof (int) * CHAR_BIT - 4);
++  TEST_COMPARE (stdc_count_ones (1315UL), 5);
++  TEST_COMPARE (stdc_count_ones (~3363ULL),
++		sizeof (long long int) * CHAR_BIT - 6);
++  TEST_COMPARE (stdc_has_single_bit ((uc) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_has_single_bit ((uc) 0), _Bool), 1);
++  TEST_COMPARE (stdc_has_single_bit ((us) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_has_single_bit ((us) 0), _Bool), 1);
++  TEST_COMPARE (stdc_has_single_bit (0U), 0);
++  TEST_COMPARE (expr_has_type (stdc_has_single_bit (0U), _Bool), 1);
++  TEST_COMPARE (stdc_has_single_bit (0UL), 0);
++  TEST_COMPARE (expr_has_type (stdc_has_single_bit (0UL), _Bool), 1);
++  TEST_COMPARE (stdc_has_single_bit (0ULL), 0);
++  TEST_COMPARE (expr_has_type (stdc_has_single_bit (0ULL), _Bool), 1);
++  TEST_COMPARE (stdc_has_single_bit ((uc) 2), 1);
++  TEST_COMPARE (stdc_has_single_bit ((us) 8), 1);
++  TEST_COMPARE (stdc_has_single_bit (32U), 1);
++  TEST_COMPARE (stdc_has_single_bit (128UL), 1);
++  TEST_COMPARE (stdc_has_single_bit (512ULL), 1);
++  TEST_COMPARE (stdc_has_single_bit ((uc) 7), 0);
++  TEST_COMPARE (stdc_has_single_bit ((us) 96), 0);
++  TEST_COMPARE (stdc_has_single_bit (513U), 0);
++  TEST_COMPARE (stdc_has_single_bit (1022UL), 0);
++  TEST_COMPARE (stdc_has_single_bit (12ULL), 0);
++  TEST_COMPARE (stdc_bit_width ((uc) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_width ((uc) 0), ui), 1);
++  TEST_COMPARE (stdc_bit_width ((us) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_width ((us) 0), ui), 1);
++  TEST_COMPARE (stdc_bit_width (0U), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_width (0U), ui), 1);
++  TEST_COMPARE (stdc_bit_width (0UL), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_width (0UL), ui), 1);
++  TEST_COMPARE (stdc_bit_width (0ULL), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_width (0ULL), ui), 1);
++  TEST_COMPARE (stdc_bit_width ((uc) ~0U), CHAR_BIT);
++  TEST_COMPARE (stdc_bit_width ((us) ~0U), sizeof (short) * CHAR_BIT);
++  TEST_COMPARE (stdc_bit_width (~0U), sizeof (int) * CHAR_BIT);
++  TEST_COMPARE (stdc_bit_width (~0UL), sizeof (long int) * CHAR_BIT);
++  TEST_COMPARE (stdc_bit_width (~0ULL), sizeof (long long int) * CHAR_BIT);
++  TEST_COMPARE (stdc_bit_width ((uc) ((uc) ~0U >> 1)), CHAR_BIT - 1);
++  TEST_COMPARE (stdc_bit_width ((uc) 6), 3);
++  TEST_COMPARE (stdc_bit_width ((us) 12U), 4);
++  TEST_COMPARE (stdc_bit_width ((us) ((us) ~0U >> 5)),
++		sizeof (short) * CHAR_BIT - 5);
++  TEST_COMPARE (stdc_bit_width (137U), 8);
++  TEST_COMPARE (stdc_bit_width (269U), 9);
++  TEST_COMPARE (stdc_bit_width (39UL), 6);
++  TEST_COMPARE (stdc_bit_width (~0UL >> 2), sizeof (long int) * CHAR_BIT - 2);
++  TEST_COMPARE (stdc_bit_width (1023ULL), 10);
++  TEST_COMPARE (stdc_bit_width (1024ULL), 11);
++  TEST_COMPARE (stdc_bit_floor ((uc) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_floor ((uc) 0), uc), 1);
++  TEST_COMPARE (stdc_bit_floor ((us) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_floor ((us) 0), us), 1);
++  TEST_COMPARE (stdc_bit_floor (0U), 0U);
++  TEST_COMPARE (expr_has_type (stdc_bit_floor (0U), ui), 1);
++  TEST_COMPARE (stdc_bit_floor (0UL), 0UL);
++  TEST_COMPARE (expr_has_type (stdc_bit_floor (0UL), ul), 1);
++  TEST_COMPARE (stdc_bit_floor (0ULL), 0ULL);
++  TEST_COMPARE (expr_has_type (stdc_bit_floor (0ULL), ull), 1);
++  TEST_COMPARE (stdc_bit_floor ((uc) ~0U), (1U << (CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_floor ((us) ~0U),
++		(1U << (sizeof (short) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_floor (~0U), (1U << (sizeof (int) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_floor (~0UL),
++		(1UL << (sizeof (long int) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_floor (~0ULL),
++		(1ULL << (sizeof (long long int) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_floor ((uc) 4), 4);
++  TEST_COMPARE (stdc_bit_floor ((uc) 7), 4);
++  TEST_COMPARE (stdc_bit_floor ((us) 8U), 8);
++  TEST_COMPARE (stdc_bit_floor ((us) 31U), 16);
++  TEST_COMPARE (stdc_bit_floor (137U), 128U);
++  TEST_COMPARE (stdc_bit_floor (269U), 256U);
++  TEST_COMPARE (stdc_bit_floor (511UL), 256UL);
++  TEST_COMPARE (stdc_bit_floor (512UL), 512UL);
++  TEST_COMPARE (stdc_bit_floor (513UL), 512ULL);
++  TEST_COMPARE (stdc_bit_floor (1024ULL), 1024ULL);
++  TEST_COMPARE (stdc_bit_ceil ((uc) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_bit_ceil ((uc) 0), uc), 1);
++  TEST_COMPARE (stdc_bit_ceil ((us) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_bit_ceil ((us) 0), us), 1);
++  TEST_COMPARE (stdc_bit_ceil (0U), 1U);
++  TEST_COMPARE (expr_has_type (stdc_bit_ceil (0U), ui), 1);
++  TEST_COMPARE (stdc_bit_ceil (0UL), 1UL);
++  TEST_COMPARE (expr_has_type (stdc_bit_ceil (0UL), ul), 1);
++  TEST_COMPARE (stdc_bit_ceil (0ULL), 1ULL);
++  TEST_COMPARE (expr_has_type (stdc_bit_ceil (0ULL), ull), 1);
++  TEST_COMPARE (stdc_bit_ceil ((uc) ~0U), 0);
++  TEST_COMPARE (stdc_bit_ceil ((us) ~0U), 0);
++  TEST_COMPARE (stdc_bit_ceil (~0U), 0U);
++  TEST_COMPARE (stdc_bit_ceil (~0UL), 0UL);
++  TEST_COMPARE (stdc_bit_ceil (~0ULL), 0ULL);
++  TEST_COMPARE (stdc_bit_ceil ((uc) ((uc) ~0U >> 1)), (1U << (CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_ceil ((uc) ((uc) ~0U >> 1)), (1U << (CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_ceil ((us) ((us) ~0U >> 1)),
++		(1U << (sizeof (short) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_ceil ((us) ((us) ~0U >> 1)),
++		(1U << (sizeof (short) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_ceil (~0U >> 1),
++		(1U << (sizeof (int) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_ceil (1U << (sizeof (int) * CHAR_BIT - 1)),
++		(1U << (sizeof (int) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_ceil (~0UL >> 1),
++		(1UL << (sizeof (long int) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_ceil (~0UL >> 1),
++		(1UL << (sizeof (long int) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_ceil (1ULL
++			       << (sizeof (long long int) * CHAR_BIT - 1)),
++		(1ULL << (sizeof (long long int) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_ceil (~0ULL >> 1),
++		(1ULL << (sizeof (long long int) * CHAR_BIT - 1)));
++  TEST_COMPARE (stdc_bit_ceil ((uc) 1), 1);
++  TEST_COMPARE (stdc_bit_ceil ((uc) 2), 2);
++  TEST_COMPARE (stdc_bit_ceil ((us) 3U), 4);
++  TEST_COMPARE (stdc_bit_ceil ((us) 4U), 4);
++  TEST_COMPARE (stdc_bit_ceil (5U), 8U);
++  TEST_COMPARE (stdc_bit_ceil (269U), 512U);
++  TEST_COMPARE (stdc_bit_ceil (511UL), 512UL);
++  TEST_COMPARE (stdc_bit_ceil (512UL), 512UL);
++  TEST_COMPARE (stdc_bit_ceil (513ULL), 1024ULL);
++  TEST_COMPARE (stdc_bit_ceil (1025ULL), 2048ULL);
++# ifdef __SIZEOF_INT128__
++  TEST_COMPARE (stdc_leading_zeros ((unsigned __int128) 0),
++		sizeof (__int128) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_leading_zeros ((unsigned __int128) 0), ui),
++		1);
++  TEST_COMPARE (stdc_leading_zeros (~(unsigned __int128) 0), 0);
++  TEST_COMPARE (stdc_leading_ones ((unsigned __int128) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_leading_ones ((unsigned __int128) 0), ui),
++		1);
++  TEST_COMPARE (stdc_leading_ones (~(unsigned __int128) 0),
++		sizeof (__int128) * CHAR_BIT);
++  TEST_COMPARE (stdc_trailing_zeros ((unsigned __int128) 0),
++		sizeof (__int128) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_trailing_zeros ((unsigned __int128) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_trailing_zeros (~(unsigned __int128) 0), 0);
++  TEST_COMPARE (stdc_trailing_ones ((unsigned __int128) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_trailing_ones ((unsigned __int128) 0), ui),
++		1);
++  TEST_COMPARE (stdc_trailing_ones (~(unsigned __int128) 0),
++		sizeof (__int128) * CHAR_BIT);
++  TEST_COMPARE (stdc_first_leading_zero ((unsigned __int128) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_zero ((unsigned __int128) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_first_leading_zero (~(unsigned __int128) 0), 0);
++  TEST_COMPARE (stdc_first_leading_one ((unsigned __int128) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_one ((unsigned __int128) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_first_leading_one (~(unsigned __int128) 0), 1);
++  TEST_COMPARE (stdc_first_trailing_zero ((unsigned __int128) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_zero ((unsigned __int128)
++							 0), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_zero (~(unsigned __int128) 0), 0);
++  TEST_COMPARE (stdc_first_trailing_one ((unsigned __int128) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_one ((unsigned __int128) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_first_trailing_one (~(unsigned __int128) 0), 1);
++  TEST_COMPARE (stdc_count_zeros ((unsigned __int128) 0),
++		sizeof (__int128) * CHAR_BIT);
++  TEST_COMPARE (expr_has_type (stdc_count_zeros ((unsigned __int128) 0), ui),
++		1);
++  TEST_COMPARE (stdc_count_zeros (~(unsigned __int128) 0), 0);
++  TEST_COMPARE (stdc_count_ones ((unsigned __int128) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_count_ones ((unsigned __int128) 0), ui),
++		1);
++  TEST_COMPARE (stdc_count_ones (~(unsigned __int128) 0),
++		sizeof (__int128) * CHAR_BIT);
++  TEST_COMPARE (stdc_has_single_bit ((unsigned __int128) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_has_single_bit ((unsigned __int128) 0),
++		_Bool), 1);
++  TEST_COMPARE (stdc_has_single_bit (~(unsigned __int128) 0), 0);
++  TEST_COMPARE (stdc_bit_width ((unsigned __int128) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_width ((unsigned __int128) 0), ui), 1);
++  TEST_COMPARE (stdc_bit_width (~(unsigned __int128) 0),
++		sizeof (__int128) * CHAR_BIT);
++  TEST_COMPARE (stdc_bit_floor ((unsigned __int128) 0) != 0, 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_floor ((unsigned __int128) 0),
++			       unsigned __int128), 1);
++  TEST_COMPARE (stdc_bit_floor (~(unsigned __int128) 0)
++		!= ((unsigned __int128) 1) << (sizeof (__int128)
++					       * CHAR_BIT - 1), 0);
++  TEST_COMPARE (stdc_bit_ceil ((unsigned __int128) 0) != 1, 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_ceil ((unsigned __int128) 0),
++			       unsigned __int128), 1);
++  TEST_COMPARE (stdc_bit_ceil ((unsigned __int128) 1) != 1, 0);
++  TEST_COMPARE (stdc_bit_ceil ((~(unsigned __int128) 0) >> 1)
++		!= ((unsigned __int128) 1) << (sizeof (__int128)
++					       * CHAR_BIT - 1), 0);
++  TEST_COMPARE (stdc_bit_ceil (~(unsigned __int128) 0) != 0, 0);
++# endif
++  uc a = 0;
++  TEST_COMPARE (stdc_bit_width (a++), 0);
++  TEST_COMPARE (a, 1);
++  ull b = 0;
++  TEST_COMPARE (stdc_bit_width (b++), 0);
++  TEST_COMPARE (b, 1);
++  TEST_COMPARE (stdc_bit_floor (a++), 1);
++  TEST_COMPARE (a, 2);
++  TEST_COMPARE (stdc_bit_floor (b++), 1);
++  TEST_COMPARE (b, 2);
++  TEST_COMPARE (stdc_bit_ceil (a++), 2);
++  TEST_COMPARE (a, 3);
++  TEST_COMPARE (stdc_bit_ceil (b++), 2);
++  TEST_COMPARE (b, 3);
++  TEST_COMPARE (stdc_leading_zeros (a++), CHAR_BIT - 2);
++  TEST_COMPARE (a, 4);
++  TEST_COMPARE (stdc_leading_zeros (b++),
++		sizeof (long long int) * CHAR_BIT - 2);
++  TEST_COMPARE (b, 4);
++  TEST_COMPARE (stdc_leading_ones (a++), 0);
++  TEST_COMPARE (a, 5);
++  TEST_COMPARE (stdc_leading_ones (b++), 0);
++  TEST_COMPARE (b, 5);
++  TEST_COMPARE (stdc_trailing_zeros (a++), 0);
++  TEST_COMPARE (a, 6);
++  TEST_COMPARE (stdc_trailing_zeros (b++), 0);
++  TEST_COMPARE (b, 6);
++  TEST_COMPARE (stdc_trailing_ones (a++), 0);
++  TEST_COMPARE (a, 7);
++  TEST_COMPARE (stdc_trailing_ones (b++), 0);
++  TEST_COMPARE (b, 7);
++  TEST_COMPARE (stdc_first_leading_zero (a++), 1);
++  TEST_COMPARE (a, 8);
++  TEST_COMPARE (stdc_first_leading_zero (b++), 1);
++  TEST_COMPARE (b, 8);
++  TEST_COMPARE (stdc_first_leading_one (a++), CHAR_BIT - 3);
++  TEST_COMPARE (a, 9);
++  TEST_COMPARE (stdc_first_leading_one (b++),
++		sizeof (long long int) * CHAR_BIT - 3);
++  TEST_COMPARE (b, 9);
++  TEST_COMPARE (stdc_first_trailing_zero (a++), 2);
++  TEST_COMPARE (a, 10);
++  TEST_COMPARE (stdc_first_trailing_zero (b++), 2);
++  TEST_COMPARE (b, 10);
++  TEST_COMPARE (stdc_first_trailing_one (a++), 2);
++  TEST_COMPARE (a, 11);
++  TEST_COMPARE (stdc_first_trailing_one (b++), 2);
++  TEST_COMPARE (b, 11);
++  TEST_COMPARE (stdc_count_zeros (a++), CHAR_BIT - 3);
++  TEST_COMPARE (a, 12);
++  TEST_COMPARE (stdc_count_zeros (b++),
++		sizeof (long long int) * CHAR_BIT - 3);
++  TEST_COMPARE (b, 12);
++  TEST_COMPARE (stdc_count_ones (a++), 2);
++  TEST_COMPARE (a, 13);
++  TEST_COMPARE (stdc_count_ones (b++), 2);
++  TEST_COMPARE (b, 13);
++  TEST_COMPARE (stdc_has_single_bit (a++), 0);
++  TEST_COMPARE (a, 14);
++  TEST_COMPARE (stdc_has_single_bit (b++), 0);
++  TEST_COMPARE (b, 14);
++# ifdef BITINT_MAXWIDTH
++#  if BITINT_MAXWIDTH >= 64
++  TEST_COMPARE (stdc_leading_zeros (0uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_leading_zeros (0uwb), ui), 1);
++  TEST_COMPARE (stdc_leading_zeros (1uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_leading_zeros (1uwb), ui), 1);
++  TEST_COMPARE (stdc_leading_ones (0uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_leading_ones (0uwb), ui), 1);
++  TEST_COMPARE (stdc_leading_ones (1uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_leading_ones (1uwb), ui), 1);
++  TEST_COMPARE (stdc_trailing_zeros (0uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_trailing_zeros (0uwb), ui), 1);
++  TEST_COMPARE (stdc_trailing_zeros (1uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_trailing_zeros (1uwb), ui), 1);
++  TEST_COMPARE (stdc_trailing_ones (0uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_trailing_ones (0uwb), ui), 1);
++  TEST_COMPARE (stdc_trailing_ones (1uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_trailing_ones (1uwb), ui), 1);
++  TEST_COMPARE (stdc_first_leading_zero (0uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_zero (0uwb), ui), 1);
++  TEST_COMPARE (stdc_first_leading_zero (1uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_zero (1uwb), ui), 1);
++  TEST_COMPARE (stdc_first_leading_one (0uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_one (0uwb), ui), 1);
++  TEST_COMPARE (stdc_first_leading_one (1uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_one (1uwb), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_zero (0uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_zero (0uwb), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_zero (1uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_zero (1uwb), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_one (0uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_one (0uwb), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_one (1uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_one (1uwb), ui), 1);
++  TEST_COMPARE (stdc_count_zeros (0uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_count_zeros (0uwb), ui), 1);
++  TEST_COMPARE (stdc_count_zeros (1uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_count_zeros (1uwb), ui), 1);
++  TEST_COMPARE (stdc_count_ones (0uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_count_ones (0uwb), ui), 1);
++  TEST_COMPARE (stdc_count_ones (1uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_count_ones (1uwb), ui), 1);
++  TEST_COMPARE (stdc_has_single_bit (0uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_has_single_bit (0uwb), _Bool), 1);
++  TEST_COMPARE (stdc_has_single_bit (1uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_has_single_bit (1uwb), _Bool), 1);
++  TEST_COMPARE (stdc_bit_width (0uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_width (0uwb), ui), 1);
++  TEST_COMPARE (stdc_bit_width (1uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_bit_width (1uwb), ui), 1);
++  TEST_COMPARE (stdc_bit_floor (0uwb), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_floor (0uwb), unsigned _BitInt(1)), 1);
++  TEST_COMPARE (stdc_bit_floor (1uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_bit_floor (1uwb), unsigned _BitInt(1)), 1);
++  TEST_COMPARE (stdc_bit_ceil (0uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_bit_ceil (0uwb), unsigned _BitInt(1)), 1);
++  TEST_COMPARE (stdc_bit_ceil (1uwb), 1);
++  TEST_COMPARE (expr_has_type (stdc_bit_ceil (1uwb), unsigned _BitInt(1)), 1);
++  unsigned _BitInt(1) c = 0;
++  TEST_COMPARE (stdc_bit_floor (c++), 0);
++  TEST_COMPARE (c, 1);
++  TEST_COMPARE (stdc_bit_floor (c++), 1);
++  TEST_COMPARE (c, 0);
++  TEST_COMPARE (stdc_bit_ceil (c++), 1);
++  TEST_COMPARE (c, 1);
++  TEST_COMPARE (stdc_bit_ceil (c++), 1);
++  TEST_COMPARE (c, 0);
++#  endif
++#  if BITINT_MAXWIDTH >= 512
++  TEST_COMPARE (stdc_leading_zeros ((unsigned _BitInt(512)) 0), 512);
++  TEST_COMPARE (expr_has_type (stdc_leading_zeros ((unsigned _BitInt(512)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_leading_zeros ((unsigned _BitInt(373)) 0), 373);
++  TEST_COMPARE (expr_has_type (stdc_leading_zeros ((unsigned _BitInt(373)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_leading_zeros (~(unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (stdc_leading_zeros (~(unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (stdc_leading_zeros ((unsigned _BitInt(512)) 275), 512 - 9);
++  TEST_COMPARE (stdc_leading_zeros ((unsigned _BitInt(373)) 512), 373 - 10);
++  TEST_COMPARE (stdc_leading_ones ((unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_leading_ones ((unsigned _BitInt(512)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_leading_ones ((unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_leading_ones ((unsigned _BitInt(373)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_leading_ones (~(unsigned _BitInt(512)) 0), 512);
++  TEST_COMPARE (stdc_leading_ones (~(unsigned _BitInt(373)) 0), 373);
++  TEST_COMPARE (stdc_leading_ones (~(unsigned _BitInt(512)) 275), 512 - 9);
++  TEST_COMPARE (stdc_leading_ones (~(unsigned _BitInt(373)) 512), 373 - 10);
++  TEST_COMPARE (stdc_trailing_zeros ((unsigned _BitInt(512)) 0), 512);
++  TEST_COMPARE (expr_has_type (stdc_trailing_zeros ((unsigned _BitInt(512)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_trailing_zeros ((unsigned _BitInt(373)) 0), 373);
++  TEST_COMPARE (expr_has_type (stdc_trailing_zeros ((unsigned _BitInt(373)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_trailing_zeros (~(unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (stdc_trailing_zeros (~(unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (stdc_trailing_zeros ((unsigned _BitInt(512)) 256), 8);
++  TEST_COMPARE (stdc_trailing_zeros ((unsigned _BitInt(373)) 512), 9);
++  TEST_COMPARE (stdc_trailing_ones ((unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_trailing_ones ((unsigned _BitInt(512)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_trailing_ones ((unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_trailing_ones ((unsigned _BitInt(373)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_trailing_ones (~(unsigned _BitInt(512)) 0), 512);
++  TEST_COMPARE (stdc_trailing_ones (~(unsigned _BitInt(373)) 0), 373);
++  TEST_COMPARE (stdc_trailing_ones ((unsigned _BitInt(512)) 255), 8);
++  TEST_COMPARE (stdc_trailing_ones ((~(unsigned _BitInt(373)) 0) >> 2),
++		373 - 2);
++  TEST_COMPARE (stdc_first_leading_zero ((unsigned _BitInt(512)) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_zero ((unsigned _BitInt(512))
++							0), ui), 1);
++  TEST_COMPARE (stdc_first_leading_zero ((unsigned _BitInt(373)) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_zero ((unsigned _BitInt(373))
++							0), ui), 1);
++  TEST_COMPARE (stdc_first_leading_zero (~(unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (stdc_first_leading_zero (~(unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (stdc_first_leading_zero (~(unsigned _BitInt(512)) 511),
++		512 - 8);
++  TEST_COMPARE (stdc_first_leading_zero (~(unsigned _BitInt(373)) 1023),
++		373 - 9);
++  TEST_COMPARE (stdc_first_leading_one ((unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_one ((unsigned _BitInt(512))
++						       0), ui), 1);
++  TEST_COMPARE (stdc_first_leading_one ((unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_leading_one ((unsigned _BitInt(373))
++						       0), ui), 1);
++  TEST_COMPARE (stdc_first_leading_one (~(unsigned _BitInt(512)) 0), 1);
++  TEST_COMPARE (stdc_first_leading_one (~(unsigned _BitInt(373)) 0), 1);
++  TEST_COMPARE (stdc_first_leading_one ((unsigned _BitInt(512)) 275), 512 - 8);
++  TEST_COMPARE (stdc_first_leading_one ((unsigned _BitInt(373)) 512), 373 - 9);
++  TEST_COMPARE (stdc_first_trailing_zero ((unsigned _BitInt(512)) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_zero ((unsigned
++							  _BitInt(512)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_first_trailing_zero ((unsigned _BitInt(373)) 0), 1);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_zero ((unsigned
++							  _BitInt(373)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_first_trailing_zero (~(unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (stdc_first_trailing_zero (~(unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (stdc_first_trailing_zero ((unsigned _BitInt(512)) 255), 9);
++  TEST_COMPARE (stdc_first_trailing_zero ((unsigned _BitInt(373)) 511), 10);
++  TEST_COMPARE (stdc_first_trailing_one ((unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_one ((unsigned _BitInt(512))
++							0), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_one ((unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_first_trailing_one ((unsigned _BitInt(373))
++							0), ui), 1);
++  TEST_COMPARE (stdc_first_trailing_one (~(unsigned _BitInt(512)) 0), 1);
++  TEST_COMPARE (stdc_first_trailing_one (~(unsigned _BitInt(373)) 0), 1);
++  TEST_COMPARE (stdc_first_trailing_one (((unsigned _BitInt(512)) 255) << 175),
++		176);
++  TEST_COMPARE (stdc_first_trailing_one ((~(unsigned _BitInt(373)) 0) << 311),
++		312);
++  TEST_COMPARE (stdc_count_zeros ((unsigned _BitInt(512)) 0), 512);
++  TEST_COMPARE (expr_has_type (stdc_count_zeros ((unsigned _BitInt(512)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_count_zeros ((unsigned _BitInt(373)) 0), 373);
++  TEST_COMPARE (expr_has_type (stdc_count_zeros ((unsigned _BitInt(373)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_count_zeros (~(unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (stdc_count_zeros (~(unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (stdc_count_zeros ((unsigned _BitInt(512)) 1315), 512 - 5);
++  TEST_COMPARE (stdc_count_zeros ((unsigned _BitInt(373)) 3363), 373 - 6);
++  TEST_COMPARE (stdc_count_ones ((unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_count_ones ((unsigned _BitInt(512)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_count_ones ((unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_count_ones ((unsigned _BitInt(373)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_count_ones (~(unsigned _BitInt(512)) 0), 512);
++  TEST_COMPARE (stdc_count_ones (~(unsigned _BitInt(373)) 0), 373);
++  TEST_COMPARE (stdc_count_ones (~(unsigned _BitInt(512)) 1315), 512 - 5);
++  TEST_COMPARE (stdc_count_ones (~(unsigned _BitInt(373)) 3363), 373 - 6);
++  TEST_COMPARE (stdc_has_single_bit ((unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_has_single_bit ((unsigned _BitInt(512)) 0),
++			       _Bool), 1);
++  TEST_COMPARE (stdc_has_single_bit ((unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_has_single_bit ((unsigned _BitInt(373)) 0),
++			       _Bool), 1);
++  TEST_COMPARE (stdc_has_single_bit (~(unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (stdc_has_single_bit (~(unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (stdc_has_single_bit (((unsigned _BitInt(512)) 1022) << 279),
++		0);
++  TEST_COMPARE (stdc_has_single_bit (((unsigned _BitInt(373)) 12) << 305), 0);
++  TEST_COMPARE (stdc_bit_width ((unsigned _BitInt(512)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_width ((unsigned _BitInt(512)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_bit_width ((unsigned _BitInt(373)) 0), 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_width ((unsigned _BitInt(373)) 0),
++			       ui), 1);
++  TEST_COMPARE (stdc_bit_width (~(unsigned _BitInt(512)) 0), 512);
++  TEST_COMPARE (stdc_bit_width (~(unsigned _BitInt(373)) 0), 373);
++  TEST_COMPARE (stdc_bit_width (((unsigned _BitInt(512)) 1023) << 405),
++		405 + 10);
++  TEST_COMPARE (stdc_bit_width (((unsigned _BitInt(373)) 1024) << 242),
++		242 + 11);
++  TEST_COMPARE (stdc_bit_floor ((unsigned _BitInt(512)) 0) != 0, 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_floor ((unsigned _BitInt(512)) 0),
++			       unsigned _BitInt(512)), 1);
++  TEST_COMPARE (stdc_bit_floor ((unsigned _BitInt(373)) 0) != 0, 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_floor ((unsigned _BitInt(373)) 0),
++			       unsigned _BitInt(373)), 1);
++  TEST_COMPARE (stdc_bit_floor (~(unsigned _BitInt(512)) 0)
++		!= ((unsigned _BitInt(512)) 1) << (512 - 1), 0);
++  TEST_COMPARE (stdc_bit_floor (~(unsigned _BitInt(373)) 0)
++		!= ((unsigned _BitInt(373)) 1) << (373 - 1), 0);
++  TEST_COMPARE (stdc_bit_floor (((unsigned _BitInt(512)) 511) << 405)
++		!= (((unsigned _BitInt(512)) 256) << 405), 0);
++  TEST_COMPARE (stdc_bit_floor (((unsigned _BitInt(373)) 512) << 242)
++		!= (((unsigned _BitInt(512)) 512) << 242), 0);
++  TEST_COMPARE (stdc_bit_ceil ((unsigned _BitInt(512)) 0) != 1, 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_ceil ((unsigned _BitInt(512)) 0),
++			       unsigned _BitInt(512)), 1);
++  TEST_COMPARE (stdc_bit_ceil ((unsigned _BitInt(373)) 0) != 1, 0);
++  TEST_COMPARE (expr_has_type (stdc_bit_ceil ((unsigned _BitInt(373)) 0),
++			       unsigned _BitInt(373)), 1);
++  TEST_COMPARE (stdc_bit_ceil (~(unsigned _BitInt(512)) 0) != 0, 0);
++  TEST_COMPARE (stdc_bit_ceil (~(unsigned _BitInt(373)) 0) != 0, 0);
++  TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(512)) 1) << (512 - 1))
++		!= ((unsigned _BitInt(512)) 1) << (512 - 1), 0);
++  TEST_COMPARE (stdc_bit_ceil ((~(unsigned _BitInt(373)) 0) >> 1)
++		!= ((unsigned _BitInt(373)) 1) << (373 - 1), 0);
++  TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(512)) 512) << 405)
++		!= (((unsigned _BitInt(512)) 512) << 405), 0);
++  TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(373)) 513) << 242)
++		!= (((unsigned _BitInt(512)) 1024) << 242), 0);
++  TEST_COMPARE (stdc_bit_floor ((unsigned _BitInt(BITINT_MAXWIDTH)) 0) != 0,
++		0);
++  TEST_COMPARE (stdc_bit_floor (~(unsigned _BitInt(BITINT_MAXWIDTH)) 0)
++		!= ((unsigned _BitInt(BITINT_MAXWIDTH)) 1) << (BITINT_MAXWIDTH
++							       - 1), 0);
++  TEST_COMPARE (stdc_bit_floor (((unsigned _BitInt(BITINT_MAXWIDTH)) 511)
++				<< 405)
++		!= (((unsigned _BitInt(BITINT_MAXWIDTH)) 256) << 405), 0);
++  TEST_COMPARE (stdc_bit_floor (((unsigned _BitInt(BITINT_MAXWIDTH)) 512)
++				<< 405)
++		!= (((unsigned _BitInt(BITINT_MAXWIDTH)) 512) << 405), 0);
++  TEST_COMPARE (stdc_bit_ceil ((unsigned _BitInt(BITINT_MAXWIDTH)) 0) != 1, 0);
++  TEST_COMPARE (stdc_bit_ceil (~(unsigned _BitInt(BITINT_MAXWIDTH)) 0) != 0,
++		0);
++  TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(BITINT_MAXWIDTH)) 1)
++			       << (BITINT_MAXWIDTH - 1))
++		!= ((unsigned _BitInt(BITINT_MAXWIDTH)) 1) << (BITINT_MAXWIDTH
++							       - 1), 0);
++  TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(BITINT_MAXWIDTH)) 512)
++			       << 405)
++		!= (((unsigned _BitInt(BITINT_MAXWIDTH)) 512) << 405), 0);
++  TEST_COMPARE (stdc_bit_ceil (((unsigned _BitInt(BITINT_MAXWIDTH)) 513)
++			       << 405)
++		!= (((unsigned _BitInt(BITINT_MAXWIDTH)) 1024) << 405), 0);
++#  endif
++# endif
++  return 0;
++}
++#else
++static int
++do_test (void)
++{
++  return 0;
++}
++#endif
++
++#include <support/test-driver.c>
diff --git a/SOURCES/glibc-upstream-2.39-60.patch b/SOURCES/glibc-upstream-2.39-60.patch
new file mode 100644
index 0000000..8765056
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-60.patch
@@ -0,0 +1,195 @@
+commit 26e7005728f0eea2972474e6be2905c467661237
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Sat May 18 09:33:19 2024 +0200
+
+    socket: Use may_alias on sockaddr structs (bug 19622)
+    
+    This supports common coding patterns.  The GCC C front end before
+    version 7 rejects the may_alias attribute on a struct definition
+    if it was not present in a previous forward declaration, so this
+    attribute can only be conditionally applied.
+    
+    This implements the spirit of the change in Austin Group issue 1641.
+    
+    Suggested-by: Marek Polacek <polacek@redhat.com>
+    Suggested-by: Jakub Jelinek <jakub@redhat.com>
+    Reviewed-by: Sam James <sam@gentoo.org>
+    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+    (cherry picked from commit 8d7b6b4cb27d4dec1dd5f7960298c1699275f962)
+
+diff --git a/bits/socket.h b/bits/socket.h
+index 13de124bac67c217..772074d52ab957df 100644
+--- a/bits/socket.h
++++ b/bits/socket.h
+@@ -149,7 +149,7 @@ enum __socket_type
+ #include <bits/sockaddr.h>
+ 
+ /* Structure describing a generic socket address.  */
+-struct sockaddr
++struct __attribute_struct_may_alias__ sockaddr
+   {
+     __SOCKADDR_COMMON (sa_);	/* Common data: address family and length.  */
+     char sa_data[14];		/* Address data.  */
+@@ -166,7 +166,7 @@ struct sockaddr
+ #define _SS_PADSIZE \
+   (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype))
+ 
+-struct sockaddr_storage
++struct __attribute_struct_may_alias__ sockaddr_storage
+   {
+     __SOCKADDR_COMMON (ss_);	/* Address family, etc.  */
+     char __ss_padding[_SS_PADSIZE];
+diff --git a/inet/netinet/in.h b/inet/netinet/in.h
+index fa57b6107908590c..f684be5beb26fc62 100644
+--- a/inet/netinet/in.h
++++ b/inet/netinet/in.h
+@@ -244,7 +244,7 @@ extern const struct in6_addr in6addr_loopback;   /* ::1 */
+ 
+ 
+ /* Structure describing an Internet socket address.  */
+-struct sockaddr_in
++struct __attribute_struct_may_alias__ sockaddr_in
+   {
+     __SOCKADDR_COMMON (sin_);
+     in_port_t sin_port;			/* Port number.  */
+@@ -257,9 +257,11 @@ struct sockaddr_in
+ 			   - sizeof (struct in_addr)];
+   };
+ 
+-#if !__USE_KERNEL_IPV6_DEFS
++#if __USE_KERNEL_IPV6_DEFS
++struct __attribute_struct_may_alias__ sockaddr_in6;
++#else
+ /* Ditto, for IPv6.  */
+-struct sockaddr_in6
++struct __attribute_struct_may_alias__ sockaddr_in6
+   {
+     __SOCKADDR_COMMON (sin6_);
+     in_port_t sin6_port;	/* Transport layer port # */
+diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
+index 520231dbea3a4e24..399ee7d24cae9446 100644
+--- a/misc/sys/cdefs.h
++++ b/misc/sys/cdefs.h
+@@ -720,4 +720,13 @@ _Static_assert (0, "IEEE 128-bits long double requires redirection on this platf
+ # define __attribute_returns_twice__ /* Ignore.  */
+ #endif
+ 
++/* Mark struct types as aliasable.  Restricted to compilers that
++   support forward declarations of structs in the presence of the
++   attribute.  */
++#if __GNUC_PREREQ (7, 1) || defined __clang__
++# define __attribute_struct_may_alias__ __attribute__ ((__may_alias__))
++#else
++# define __attribute_struct_may_alias__
++#endif
++
+ #endif	 /* sys/cdefs.h */
+diff --git a/socket/sys/un.h b/socket/sys/un.h
+index bf03b7d6ce959065..ff9cbd6efa7693d5 100644
+--- a/socket/sys/un.h
++++ b/socket/sys/un.h
+@@ -26,7 +26,7 @@
+ __BEGIN_DECLS
+ 
+ /* Structure describing the address of an AF_LOCAL (aka AF_UNIX) socket.  */
+-struct sockaddr_un
++struct __attribute_struct_may_alias__ sockaddr_un
+   {
+     __SOCKADDR_COMMON (sun_);
+     char sun_path[108];		/* Path name.  */
+diff --git a/sysdeps/mach/hurd/bits/socket.h b/sysdeps/mach/hurd/bits/socket.h
+index 3e72f9fa93add888..b5eeac373111e694 100644
+--- a/sysdeps/mach/hurd/bits/socket.h
++++ b/sysdeps/mach/hurd/bits/socket.h
+@@ -153,7 +153,7 @@ enum __socket_type
+ #include <bits/sockaddr.h>
+ 
+ /* Structure describing a generic socket address.  */
+-struct sockaddr
++struct __attribute_struct_may_alias__ sockaddr
+   {
+     __SOCKADDR_COMMON (sa_);	/* Common data: address family and length.  */
+     char sa_data[14];		/* Address data.  */
+@@ -170,7 +170,7 @@ struct sockaddr
+ #define _SS_PADSIZE \
+   (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype))
+ 
+-struct sockaddr_storage
++struct __attribute_struct_may_alias__ sockaddr_storage
+   {
+     __SOCKADDR_COMMON (ss_);	/* Address family, etc.  */
+     char __ss_padding[_SS_PADSIZE];
+diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
+index 0d86feb4cadc13e3..6dab283a2ebeaed1 100644
+--- a/sysdeps/unix/sysv/linux/bits/socket.h
++++ b/sysdeps/unix/sysv/linux/bits/socket.h
+@@ -180,7 +180,7 @@ typedef __socklen_t socklen_t;
+ #include <bits/sockaddr.h>
+ 
+ /* Structure describing a generic socket address.  */
+-struct sockaddr
++struct __attribute_struct_may_alias__ sockaddr
+   {
+     __SOCKADDR_COMMON (sa_);	/* Common data: address family and length.  */
+     char sa_data[14];		/* Address data.  */
+@@ -193,7 +193,7 @@ struct sockaddr
+ #define _SS_PADSIZE \
+   (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype))
+ 
+-struct sockaddr_storage
++struct __attribute_struct_may_alias__ sockaddr_storage
+   {
+     __SOCKADDR_COMMON (ss_);	/* Address family, etc.  */
+     char __ss_padding[_SS_PADSIZE];
+diff --git a/sysdeps/unix/sysv/linux/net/if_packet.h b/sysdeps/unix/sysv/linux/net/if_packet.h
+index 9ffb69b508cc8ca7..c17e1c23c5cf9169 100644
+--- a/sysdeps/unix/sysv/linux/net/if_packet.h
++++ b/sysdeps/unix/sysv/linux/net/if_packet.h
+@@ -26,7 +26,7 @@
+    From Linux 2.1 the AF_PACKET interface is preferred and you should
+    consider using it in place of this one.  */
+ 
+-struct sockaddr_pkt
++struct __attribute_struct_may_alias__ sockaddr_pkt
+   {
+     __SOCKADDR_COMMON (spkt_);
+     unsigned char spkt_device[14];
+diff --git a/sysdeps/unix/sysv/linux/netash/ash.h b/sysdeps/unix/sysv/linux/netash/ash.h
+index 7d885d17cc9ec313..7a6ff50b17b370c4 100644
+--- a/sysdeps/unix/sysv/linux/netash/ash.h
++++ b/sysdeps/unix/sysv/linux/netash/ash.h
+@@ -22,7 +22,7 @@
+ #include <features.h>
+ #include <bits/sockaddr.h>
+ 
+-struct sockaddr_ash
++struct __attribute_struct_may_alias__ sockaddr_ash
+   {
+     __SOCKADDR_COMMON (sash_);		/* Common data: address family etc.  */
+     int sash_ifindex;			/* Interface to use.  */
+diff --git a/sysdeps/unix/sysv/linux/neteconet/ec.h b/sysdeps/unix/sysv/linux/neteconet/ec.h
+index b07a10796196e28e..f3132f06ff9f8dee 100644
+--- a/sysdeps/unix/sysv/linux/neteconet/ec.h
++++ b/sysdeps/unix/sysv/linux/neteconet/ec.h
+@@ -28,7 +28,7 @@ struct ec_addr
+     unsigned char net;			/* Network number.  */
+   };
+ 
+-struct sockaddr_ec
++struct __attribute_struct_may_alias__ sockaddr_ec
+   {
+     __SOCKADDR_COMMON (sec_);
+     unsigned char port;			/* Port number.  */
+diff --git a/sysdeps/unix/sysv/linux/netiucv/iucv.h b/sysdeps/unix/sysv/linux/netiucv/iucv.h
+index f5fad817513f3c46..27151e8bbe1e7fa2 100644
+--- a/sysdeps/unix/sysv/linux/netiucv/iucv.h
++++ b/sysdeps/unix/sysv/linux/netiucv/iucv.h
+@@ -23,7 +23,7 @@
+ 
+ __BEGIN_DECLS
+ 
+-struct sockaddr_iucv
++struct __attribute_struct_may_alias__ sockaddr_iucv
+   {
+     __SOCKADDR_COMMON (siucv_);
+     unsigned short	siucv_port;		/* Reserved */
diff --git a/SOURCES/glibc-upstream-2.39-61.patch b/SOURCES/glibc-upstream-2.39-61.patch
new file mode 100644
index 0000000..8c4aa98
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-61.patch
@@ -0,0 +1,1824 @@
+commit dd535f4f19ef2b5c367a362af445ecadcf45401e
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Thu Jan 18 10:18:01 2024 -0300
+
+    Always define __USE_TIME_BITS64 when 64 bit time_t is used
+    
+    It was raised on libc-help [1] that some Linux kernel interfaces expect
+    the libc to define __USE_TIME_BITS64 to indicate the time_t size for the
+    kABI.  Different than defined by the initial y2038 design document [2],
+    the __USE_TIME_BITS64 is only defined for ABIs that support more than
+    one time_t size (by defining the _TIME_BITS for each module).
+    
+    The 64 bit time_t redirects are now enabled using a different internal
+    define (__USE_TIME64_REDIRECTS). There is no expected change in semantic
+    or code generation.
+    
+    Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu, and
+    arm-linux-gnueabi
+    
+    [1] https://sourceware.org/pipermail/libc-help/2024-January/006557.html
+    [2] https://sourceware.org/glibc/wiki/Y2038ProofnessDesign
+    
+    Reviewed-by: DJ Delorie <dj@redhat.com>
+    (cherry picked from commit a4ed0471d71739928a0d0fa3258b3ff3b158e9b9)
+
+diff --git a/io/bits/poll2.h b/io/bits/poll2.h
+index 6152a8c5e4536d68..efc8b85403e91ba2 100644
+--- a/io/bits/poll2.h
++++ b/io/bits/poll2.h
+@@ -43,7 +43,7 @@ poll (struct pollfd *__fds, nfds_t __nfds, int __timeout)
+ 
+ 
+ #ifdef __USE_GNU
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ extern int __REDIRECT (__ppoll64_alias, (struct pollfd *__fds, nfds_t __nfds,
+ 				       const struct timespec *__timeout,
+ 				       const __sigset_t *__ss), __ppoll64);
+diff --git a/io/fcntl.h b/io/fcntl.h
+index 9cee0b5900cb4f7c..666b7e5eb616b950 100644
+--- a/io/fcntl.h
++++ b/io/fcntl.h
+@@ -172,7 +172,7 @@ typedef __pid_t pid_t;
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ # ifndef __USE_FILE_OFFSET64
+ extern int fcntl (int __fd, int __cmd, ...);
+ # else
+@@ -185,7 +185,7 @@ extern int __REDIRECT (fcntl, (int __fd, int __cmd, ...), fcntl64);
+ # ifdef __USE_LARGEFILE64
+ extern int fcntl64 (int __fd, int __cmd, ...);
+ # endif
+-#else /* __USE_TIME_BITS64 */
++#else /* __USE_TIME64_REDIRECTS */
+ # ifdef __REDIRECT
+ extern int __REDIRECT_NTH (fcntl, (int __fd, int __request, ...),
+ 			   __fcntl_time64);
+diff --git a/io/fts.h b/io/fts.h
+index 61f95bb4415f77e2..97a031ebbd040080 100644
+--- a/io/fts.h
++++ b/io/fts.h
+@@ -187,7 +187,7 @@ FTSENT	*fts_read (FTS *);
+ int	 fts_set (FTS *, FTSENT *, int) __THROW;
+ #else
+ # ifdef __REDIRECT
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ FTSENT	*__REDIRECT (fts_children, (FTS *, int), fts64_children);
+ int	 __REDIRECT (fts_close, (FTS *), fts64_close);
+ FTS	*__REDIRECT (fts_open, (char * const *, int,
+@@ -206,7 +206,7 @@ int	 __REDIRECT_NTH (fts_set, (FTS *, FTSENT *, int),
+ 			 __fts64_set_time64);
+ #  endif
+ # else
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ #   define fts_children fts64_children
+ #   define fts_close fts64_close
+ #   define fts_open fts64_open
+@@ -217,7 +217,7 @@ int	 __REDIRECT_NTH (fts_set, (FTS *, FTSENT *, int),
+ # endif
+ #endif
+ #ifdef __USE_LARGEFILE64
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ FTSENT64 *fts64_children (FTS64 *, int);
+ int	  fts64_close (FTS64 *);
+ FTS64	 *fts64_open (char * const *, int,
+diff --git a/io/ftw.h b/io/ftw.h
+index e4d1b84d53550d26..39cf595b277a0049 100644
+--- a/io/ftw.h
++++ b/io/ftw.h
+@@ -137,7 +137,7 @@ extern int ftw (const char *__dir, __ftw_func_t __func, int __descriptors)
+      __nonnull ((1, 2));
+ #else
+ # ifdef __REDIRECT
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
+ 			     int __descriptors), ftw64) __nonnull ((1, 2));
+ #  else
+@@ -146,7 +146,7 @@ extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
+      __nonnull ((1, 2));
+ #  endif
+ # else
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ #   define ftw ftw64
+ #  else
+ #   define ftw __ftw64_time64
+@@ -154,7 +154,7 @@ extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
+ # endif
+ #endif
+ #ifdef __USE_LARGEFILE64
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int ftw64 (const char *__dir, __ftw64_func_t __func,
+ 		  int __descriptors) __nonnull ((1, 2));
+ # else
+@@ -180,7 +180,7 @@ extern int nftw (const char *__dir, __nftw_func_t __func, int __descriptors,
+ 		 int __flag) __nonnull ((1, 2));
+ # else
+ #  ifdef __REDIRECT
+-#   ifndef __USE_TIME_BITS64
++#   ifndef __USE_TIME64_REDIRECTS
+ extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
+ 			      int __descriptors, int __flag), nftw64)
+      __nonnull ((1, 2));
+@@ -190,7 +190,7 @@ extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
+      __nonnull ((1, 2));
+ #   endif
+ #  else
+-#   ifndef __USE_TIME_BITS64
++#   ifndef __USE_TIME64_REDIRECTS
+ #    define nftw nftw64
+ #   else
+ #    define nftw __nftw64_time64
+@@ -198,7 +198,7 @@ extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
+ #  endif
+ # endif
+ # ifdef __USE_LARGEFILE64
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ extern int nftw64 (const char *__dir, __nftw64_func_t __func,
+ 		   int __descriptors, int __flag) __nonnull ((1, 2));
+ #  else
+diff --git a/io/sys/poll.h b/io/sys/poll.h
+index 7858fad6b9b53725..c324ff5dad0d5a81 100644
+--- a/io/sys/poll.h
++++ b/io/sys/poll.h
+@@ -66,7 +66,7 @@ extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
+ 		  const __sigset_t *__ss)
+     __fortified_attr_access (__write_only__, 1, 2);
+ 
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  ifdef __REDIRECT
+ extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
+                                const struct timespec *__timeout,
+diff --git a/io/sys/stat.h b/io/sys/stat.h
+index 1fa6d6e62ecb2e4b..3b4ba80132d0b703 100644
+--- a/io/sys/stat.h
++++ b/io/sys/stat.h
+@@ -209,7 +209,7 @@ extern int stat (const char *__restrict __file,
+    that file descriptor FD is open on and put them in BUF.  */
+ extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
+ #else
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  ifdef __REDIRECT_NTH
+ extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
+ 				  struct stat *__restrict __buf),
+@@ -236,7 +236,7 @@ extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
+ # endif
+ #endif
+ #ifdef __USE_LARGEFILE64
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int stat64 (const char *__restrict __file,
+ 		   struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
+ extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
+@@ -265,7 +265,7 @@ extern int fstatat (int __fd, const char *__restrict __file,
+ 		    struct stat *__restrict __buf, int __flag)
+      __THROW __nonnull ((2, 3));
+ # else
+-#  ifdef __USE_TIME_BITS64
++#  ifdef __USE_TIME64_REDIRECTS
+ #   ifdef __REDIRECT_NTH
+ extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
+ 				     struct stat *__restrict __buf,
+@@ -287,7 +287,7 @@ extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
+ # endif
+ 
+ # ifdef __USE_LARGEFILE64
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ extern int fstatat64 (int __fd, const char *__restrict __file,
+ 		      struct stat64 *__restrict __buf, int __flag)
+      __THROW __nonnull ((2, 3));
+@@ -313,7 +313,7 @@ extern int __REDIRECT_NTH (fstatat64, (int __fd,
+ extern int lstat (const char *__restrict __file,
+ 		  struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
+ # else
+-#  ifdef __USE_TIME_BITS64
++#  ifdef __USE_TIME64_REDIRECTS
+ #   ifdef __REDIRECT_NTH
+ extern int __REDIRECT_NTH (lstat,
+ 			   (const char *__restrict __file,
+@@ -334,7 +334,7 @@ extern int __REDIRECT_NTH (lstat,
+ #  endif
+ # endif
+ # ifdef __USE_LARGEFILE64
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ extern int lstat64 (const char *__restrict __file,
+ 		    struct stat64 *__restrict __buf)
+      __THROW __nonnull ((1, 2));
+@@ -427,7 +427,7 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
+ #endif
+ 
+ #ifdef __USE_ATFILE
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Set file access and modification times relative to directory file
+    descriptor.  */
+ extern int utimensat (int __fd, const char *__path,
+@@ -447,7 +447,7 @@ extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
+ #endif
+ 
+ #ifdef __USE_XOPEN2K8
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Set file access and modification times of the file associated with FD.  */
+ extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
+ 
+diff --git a/io/utime.h b/io/utime.h
+index c5eacedd6a7c9925..1c7587d9c1475348 100644
+--- a/io/utime.h
++++ b/io/utime.h
+@@ -35,7 +35,7 @@ __BEGIN_DECLS
+ /* Structure describing file times.  */
+ struct utimbuf
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+     __time64_t actime;		/* Access time.  */
+     __time64_t modtime;		/* Modification time.  */
+ #else
+@@ -46,7 +46,7 @@ struct utimbuf
+ 
+ /* Set the access and modification times of FILE to those given in
+    *FILE_TIMES.  If FILE_TIMES is NULL, set them to the current time.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int utime (const char *__file,
+ 		  const struct utimbuf *__file_times)
+      __THROW __nonnull ((1));
+diff --git a/manual/creature.texi b/manual/creature.texi
+index fa5dd9d6ad9081f6..8d19e9dd73560607 100644
+--- a/manual/creature.texi
++++ b/manual/creature.texi
+@@ -192,6 +192,12 @@ Linux kernel version on which the system is running. For Linux kernel
+ version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise,
+ a fallback code is used with legacy (i.e. 32-bit) syscalls.
+ 
++On such platforms, @theglibc{} will also define @code{__USE_TIME64_REDIRECTS}
++to indicate whether the declarations are expanded to different ones
++(either by redefiniding the symbol name or using symbol aliais).
++For instance, if the symbol @code{clock_gettime} expands to
++@code{__glock_gettime64}.
++
+ @item
+ If @code{_TIME_BITS} is defined to be 32, @code{time_t} is defined to
+ be a 32-bit integer where that is supported.  This is not recommended,
+diff --git a/manual/maint.texi b/manual/maint.texi
+index 89da704f45912ecb..04faa222e2bd2fc4 100644
+--- a/manual/maint.texi
++++ b/manual/maint.texi
+@@ -491,6 +491,10 @@ derived as in the dual-time configuration case, and which expands to
+ the symbol's name.  For instance, the macro @code{__clock_gettime64}
+ expands to @code{clock_gettime}.
+ 
++When @code{__TIMESIZE} is set to 64, @theglibc{} will also define
++the@code{__USE_TIME_BITS64} macro.  It is used by the Linux kernel ABI
++to set the expected @code{time_t} size used on some syscalls.
++
+ These macros are purely internal to @theglibc{} and exist only so that
+ a single definition of the 64-bit time functions can be used on both
+ single-time and dual-time configurations, and so that glibc code can
+diff --git a/misc/sys/ioctl.h b/misc/sys/ioctl.h
+index 3f2338ddd32ee2c5..ea6583e12251266d 100644
+--- a/misc/sys/ioctl.h
++++ b/misc/sys/ioctl.h
+@@ -38,7 +38,7 @@ __BEGIN_DECLS
+ /* Perform the I/O control operation specified by REQUEST on FD.
+    One argument may follow; its presence and type depend on REQUEST.
+    Return value depends on REQUEST.  Usually -1 indicates error.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int ioctl (int __fd, unsigned long int __request, ...) __THROW;
+ #else
+ # ifdef __REDIRECT
+diff --git a/misc/sys/select.h b/misc/sys/select.h
+index e6a0c1b8b278ec22..2e45e94bc19b932e 100644
+--- a/misc/sys/select.h
++++ b/misc/sys/select.h
+@@ -98,7 +98,7 @@ __BEGIN_DECLS
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int select (int __nfds, fd_set *__restrict __readfds,
+ 		   fd_set *__restrict __writefds,
+ 		   fd_set *__restrict __exceptfds,
+@@ -123,7 +123,7 @@ extern int __REDIRECT (select,
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ 		    fd_set *__restrict __writefds,
+ 		    fd_set *__restrict __exceptfds,
+diff --git a/posix/glob.h b/posix/glob.h
+index 3406662840997c68..b6bba0fbcd0ecce8 100644
+--- a/posix/glob.h
++++ b/posix/glob.h
+@@ -150,7 +150,7 @@ extern int glob (const char *__restrict __pattern, int __flags,
+ /* Free storage allocated in PGLOB by a previous `glob' call.  */
+ extern void globfree (glob_t *__pglob) __THROW;
+ #else
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ extern int __REDIRECT_NTHNL (glob, (const char *__restrict __pattern,
+ 				    int __flags,
+ 				    int (*__errfunc) (const char *, int),
+@@ -170,7 +170,7 @@ extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
+ #endif
+ 
+ #ifdef __USE_LARGEFILE64
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ extern int __REDIRECT_NTHNL (glob64, (const char *__restrict __pattern,
+ 				      int __flags,
+ 				      int (*__errfunc) (const char *, int),
+diff --git a/posix/sched.h b/posix/sched.h
+index 3eac206f359090e9..49f504a488a08727 100644
+--- a/posix/sched.h
++++ b/posix/sched.h
+@@ -74,7 +74,7 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
+ extern int sched_get_priority_min (int __algorithm) __THROW;
+ 
+ /* Get the SCHED_RR interval for the named process.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
+ #else
+ # ifdef __REDIRECT_NTH
+diff --git a/posix/sys/wait.h b/posix/sys/wait.h
+index edbb7b43920dffe7..1f44ee114566b9c9 100644
+--- a/posix/sys/wait.h
++++ b/posix/sys/wait.h
+@@ -139,7 +139,7 @@ struct rusage;
+    nil, store information about the child's resource usage there.  If the
+    WUNTRACED bit is set in OPTIONS, return status for stopped children;
+    otherwise don't.  */
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern __pid_t wait3 (int *__stat_loc, int __options,
+ 		      struct rusage * __usage) __THROWNL;
+ # else
+@@ -154,7 +154,7 @@ extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
+ #endif
+ 
+ #ifdef __USE_MISC
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* PID is like waitpid.  Other args are like wait3.  */
+ extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
+ 		      struct rusage *__usage) __THROWNL;
+diff --git a/resolv/netdb.h b/resolv/netdb.h
+index 14228b0d952664ea..b7f473fafe801b02 100644
+--- a/resolv/netdb.h
++++ b/resolv/netdb.h
+@@ -701,7 +701,7 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
+ extern int gai_suspend (const struct gaicb *const __list[], int __ent,
+ 			const struct timespec *__timeout);
+ 
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  if defined(__REDIRECT)
+ extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
+                                      int __ent,
+diff --git a/resource/sys/resource.h b/resource/sys/resource.h
+index a5634ba7153c069c..b0bf751e929af810 100644
+--- a/resource/sys/resource.h
++++ b/resource/sys/resource.h
+@@ -88,7 +88,7 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
+    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
+ extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
+ 
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # if defined(__REDIRECT_NTH)
+ extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
+                                        struct rusage *__usage),
+diff --git a/rt/aio.h b/rt/aio.h
+index 37d19abf16ee98e3..e71435733f988f85 100644
+--- a/rt/aio.h
++++ b/rt/aio.h
+@@ -193,7 +193,7 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
+ extern int __REDIRECT_NTH (aio_cancel,
+ 			   (int __fildes, struct aiocb *__aiocbp),
+ 			   aio_cancel64);
+-#  ifdef __USE_TIME_BITS64
++#  ifdef __USE_TIME64_REDIRECTS
+ extern int __REDIRECT_NTH (aio_suspend,
+ 			   (const struct aiocb *const __list[], int __nent,
+ 			    const struct timespec *__restrict __timeout),
+@@ -215,7 +215,7 @@ extern int __REDIRECT_NTH (aio_fsync,
+ #  define aio_error aio_error64
+ #  define aio_return aio_return64
+ #  define aio_cancel aio_cancel64
+-#  ifdef __USE_TIME_BITS64
++#  ifdef __USE_TIME64_REDIRECTS
+ #   define aio_suspend __aio_suspend_time64
+ #  else
+ #   define aio_suspend aio_suspend64
+diff --git a/rt/mqueue.h b/rt/mqueue.h
+index 787cc36df2eaf9e8..fd6fff4bb2326717 100644
+--- a/rt/mqueue.h
++++ b/rt/mqueue.h
+@@ -71,7 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
+ 		    unsigned int __msg_prio) __nonnull ((2));
+ 
+ #ifdef __USE_XOPEN2K
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Receive the oldest from highest priority messages in message queue
+    MQDES, stop waiting if ABS_TIMEOUT expires.  */
+ extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
+diff --git a/signal/signal.h b/signal/signal.h
+index f37499ce607b998a..8e07b041b1c07fa9 100644
+--- a/signal/signal.h
++++ b/signal/signal.h
+@@ -269,7 +269,7 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ extern int sigtimedwait (const sigset_t *__restrict __set,
+ 			 siginfo_t *__restrict __info,
+ 			 const struct timespec *__restrict __timeout)
+diff --git a/socket/sys/socket.h b/socket/sys/socket.h
+index 366eaab845a6f326..463cf3291b714427 100644
+--- a/socket/sys/socket.h
++++ b/socket/sys/socket.h
+@@ -170,7 +170,7 @@ extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern ssize_t sendmsg (int __fd, const struct msghdr *__message,
+ 			int __flags);
+ #else
+@@ -191,7 +191,7 @@ extern ssize_t __sendmsg64 (int __fd, const struct msghdr *__message,
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int sendmmsg (int __fd, struct mmsghdr *__vmessages,
+ 		     unsigned int __vlen, int __flags);
+ # else
+@@ -204,7 +204,7 @@ extern int __sendmmsg64 (int __fd, struct mmsghdr *__vmessages,
+ 			 unsigned int __vlen, int __flags);
+ #   define sendmmsg __sendmmsg64
+ #  endif
+-# endif	 /* __USE_TIME_BITS64 */
++# endif	 /* __USE_TIME64_REDIRECTS */
+ #endif /* __USE_GNU */
+ 
+ /* Receive a message as described by MESSAGE from socket FD.
+@@ -212,7 +212,7 @@ extern int __sendmmsg64 (int __fd, struct mmsghdr *__vmessages,
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
+ #else
+ # ifdef __REDIRECT
+@@ -231,7 +231,7 @@ extern ssize_t __recvmsg64 (int __fd, struct msghdr *__message, int __flags);
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
+ 		     unsigned int __vlen, int __flags,
+ 		     struct timespec *__tmo);
+@@ -251,7 +251,7 @@ extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
+ /* Put the current value for socket FD's option OPTNAME at protocol level LEVEL
+    into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's
+    actual length.  Returns 0 on success, -1 for errors.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int getsockopt (int __fd, int __level, int __optname,
+ 		       void *__restrict __optval,
+ 		       socklen_t *__restrict __optlen) __THROW;
+@@ -273,7 +273,7 @@ extern int __getsockopt64 (int __fd, int __level, int __optname,
+ /* Set socket FD's option OPTNAME at protocol level LEVEL
+    to *OPTVAL (which is OPTLEN bytes long).
+    Returns 0 on success, -1 for errors.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int setsockopt (int __fd, int __level, int __optname,
+ 		       const void *__optval, socklen_t __optlen) __THROW;
+ #else
+diff --git a/support/timespec.h b/support/timespec.h
+index 42f32bcc2c30eaac..5ccc7163a50198a5 100644
+--- a/support/timespec.h
++++ b/support/timespec.h
+@@ -35,7 +35,7 @@ make_timespec (time_t s, long int ns)
+ 
+ enum { TIMESPEC_HZ = 1000000000 };
+ 
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ struct timespec timespec_add (struct timespec, struct timespec)
+   __attribute__((const));
+ struct timespec timespec_sub (struct timespec, struct timespec)
+diff --git a/support/xtime.h b/support/xtime.h
+index 5200eef2e017d380..9961899634e47a1b 100644
+--- a/support/xtime.h
++++ b/support/xtime.h
+@@ -30,7 +30,7 @@ __BEGIN_DECLS
+ /* The following functions call the corresponding libc functions and
+    terminate the process on error.  */
+ 
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ void xclock_gettime (clockid_t clock, struct timespec *ts);
+ void xclock_settime (clockid_t clock, const struct timespec *ts);
+ #else
+diff --git a/support/xunistd.h b/support/xunistd.h
+index b5e8c2f420021c42..13be9a46a3e6b07b 100644
+--- a/support/xunistd.h
++++ b/support/xunistd.h
+@@ -36,7 +36,7 @@ pid_t xwaitpid (pid_t, int *status, int flags);
+ void xpipe (int[2]);
+ void xdup2 (int, int);
+ int xopen (const char *path, int flags, mode_t);
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ # ifdef __USE_FILE_OFFSET64
+ void xstat (const char *path, struct stat *);
+ void xlstat (const char *path, struct stat *);
+diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
+deleted file mode 100644
+index 4d38b8ba766b34f5..0000000000000000
+--- a/sysdeps/generic/features-time64.h
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* Features part to handle 64-bit time_t support.  Generic version.
+-   Copyright (C) 2021-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/>.  */
+-
+-/* The generic configuration only support _TIME_BITS=32.  */
+diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
+index 1607fdf29a5ed964..3d4f4a756c66750d 100644
+--- a/sysdeps/nptl/pthread.h
++++ b/sysdeps/nptl/pthread.h
+@@ -223,7 +223,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
+    the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL.  */
+ extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
+ 
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Make calling thread wait for termination of the thread TH, but only
+    until TIMEOUT.  The exit status of the thread is stored in
+    *THREAD_RETURN, if THREAD_RETURN is not NULL.
+@@ -796,7 +796,7 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
+ 
+ #ifdef __USE_XOPEN2K
+ /* Wait until lock becomes available, or specified time passes. */
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
+ 				    const struct timespec *__restrict
+ 				    __abstime) __THROWNL __nonnull ((1, 2));
+@@ -813,7 +813,7 @@ extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
+ #endif
+ 
+ #ifdef __USE_GNU
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
+ 				    clockid_t __clockid,
+ 				    const struct timespec *__restrict
+@@ -982,7 +982,7 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
+ 
+ # ifdef __USE_XOPEN2K
+ /* Try to acquire read lock for RWLOCK or return after specified time.  */
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
+ 				       const struct timespec *__restrict
+ 				       __abstime) __THROWNL __nonnull ((1, 2));
+@@ -1000,7 +1000,7 @@ extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
+ # endif
+ 
+ # ifdef __USE_GNU
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
+ 				       clockid_t __clockid,
+ 				       const struct timespec *__restrict
+@@ -1029,7 +1029,7 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
+ 
+ # ifdef __USE_XOPEN2K
+ /* Try to acquire write lock for RWLOCK or return after specified time.  */
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
+ 				       const struct timespec *__restrict
+ 				       __abstime) __THROWNL __nonnull ((1, 2));
+@@ -1047,7 +1047,7 @@ extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
+ # endif
+ 
+ # ifdef __USE_GNU
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
+ 				       clockid_t __clockid,
+ 				       const struct timespec *__restrict
+@@ -1141,7 +1141,7 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
+ 				   pthread_mutex_t *__restrict __mutex,
+ 				   const struct timespec *__restrict __abstime)
+@@ -1167,7 +1167,7 @@ extern int __REDIRECT (pthread_cond_timedwait,
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW. */
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
+ 				   pthread_mutex_t *__restrict __mutex,
+ 				   __clockid_t __clock_id,
+diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
+index c75ca4ce6d12e081..8a096336991730a8 100644
+--- a/sysdeps/pthread/semaphore.h
++++ b/sysdeps/pthread/semaphore.h
+@@ -59,7 +59,7 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int sem_timedwait (sem_t *__restrict __sem,
+ 			  const struct timespec *__restrict __abstime)
+   __nonnull ((1, 2));
+@@ -77,7 +77,7 @@ extern int __REDIRECT (sem_timedwait,
+ #endif
+ 
+ #ifdef __USE_GNU
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int sem_clockwait (sem_t *__restrict __sem,
+ 			  clockid_t clock,
+ 			  const struct timespec *__restrict __abstime)
+diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
+index c5410b5c3af84883..7cade24e1f4b9e7a 100644
+--- a/sysdeps/pthread/threads.h
++++ b/sysdeps/pthread/threads.h
+@@ -90,7 +90,7 @@ extern thrd_t thrd_current (void);
+    __TIME_POINT.  The current thread may resume if receives a signal.  In
+    that case, if __REMAINING is not NULL, the remaining time is stored in
+    the object pointed by it.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int thrd_sleep (const struct timespec *__time_point,
+ 		       struct timespec *__remaining);
+ #else
+@@ -143,7 +143,7 @@ extern int mtx_lock (mtx_t *__mutex);
+ /* Block the current thread until the mutex pointed by __MUTEX is unlocked
+    or time pointed by __TIME_POINT is reached.  In case the mutex is unlock,
+    the current thread will not be blocked.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int mtx_timedlock (mtx_t *__restrict __mutex,
+ 			  const struct timespec *__restrict __time_point);
+ #else
+@@ -194,7 +194,7 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
+ /* Block current thread on the condition variable until condition variable
+    pointed by __COND is signaled or time pointed by __TIME_POINT is
+    reached.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int cnd_timedwait (cnd_t *__restrict __cond,
+ 			  mtx_t *__restrict __mutex,
+ 			  const struct timespec *__restrict __time_point);
+diff --git a/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h b/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
+index 255feaa8cbf048b5..89534fea85100202 100644
+--- a/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
+@@ -28,7 +28,7 @@
+ 
+ struct stat
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/struct_stat_time64_helper.h>
+ #else
+     __dev_t st_dev;			/* Device.  */
+@@ -83,13 +83,13 @@ struct stat
+ # else
+     __ino64_t st_ino;			/* File serial number.	*/
+ # endif
+-#endif /* __USE_TIME_BITS64  */
++#endif /* __USE_TIME64_REDIRECTS  */
+   };
+ 
+ #ifdef __USE_LARGEFILE64
+ struct stat64
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;			/* Device.  */
+@@ -125,7 +125,7 @@ struct stat64
+     unsigned long int st_ctimensec;	/* Nsecs of last status change.  */
+ #  endif
+     __ino64_t st_ino;			/* File serial number.		*/
+-# endif /* __USE_TIME_BITS64  */
++# endif /* __USE_TIME64_REDIRECTS  */
+   };
+ #endif
+ 
+diff --git a/sysdeps/unix/sysv/linux/bits/socket-constants.h b/sysdeps/unix/sysv/linux/bits/socket-constants.h
+index d997dbf5943aa90f..b2102d3abfe5a386 100644
+--- a/sysdeps/unix/sysv/linux/bits/socket-constants.h
++++ b/sysdeps/unix/sysv/linux/bits/socket-constants.h
+@@ -64,7 +64,7 @@
+ #  define SO_TIMESTAMPNS_NEW 64
+ #  define SO_TIMESTAMPING_NEW 65
+ 
+-#  ifdef __USE_TIME_BITS64
++#  ifdef __USE_TIME64_REDIRECTS
+ #   define SO_RCVTIMEO SO_RCVTIMEO_NEW
+ #   define SO_SNDTIMEO SO_SNDTIMEO_NEW
+ #   define SO_TIMESTAMP SO_TIMESTAMP_NEW
+diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
+index b70ba58a7dd58f72..cab405797130387d 100644
+--- a/sysdeps/unix/sysv/linux/bits/time.h
++++ b/sysdeps/unix/sysv/linux/bits/time.h
+@@ -77,7 +77,7 @@ __BEGIN_DECLS
+ /* Tune a POSIX clock.  */
+ extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW __nonnull((2));
+ 
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # if defined(__REDIRECT_NTH)
+ extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+                                            struct timex *__utx),
+diff --git a/sysdeps/unix/sysv/linux/bits/timex.h b/sysdeps/unix/sysv/linux/bits/timex.h
+index 398d8094f23f0b5d..03ccde6d0a0d086c 100644
+--- a/sysdeps/unix/sysv/linux/bits/timex.h
++++ b/sysdeps/unix/sysv/linux/bits/timex.h
+@@ -25,7 +25,7 @@
+ 
+ struct timex
+ {
+-# if defined __USE_TIME_BITS64 || (__TIMESIZE == 64 && __WORDSIZE == 32)
++# if defined __USE_TIME64_REDIRECTS || (__TIMESIZE == 64 && __WORDSIZE == 32)
+   unsigned int modes;          /* mode selector */
+   int :32;                     /* pad */
+   long long offset;            /* time offset (usec) */
+diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
+index fae50281c7fccdfc..86296ca92299c114 100644
+--- a/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
++++ b/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
+@@ -26,7 +26,7 @@
+    The type `struct msg' is opaque.  */
+ struct msqid_ds
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_msqid64_ds_helper.h>
+ #else
+   struct ipc_perm msg_perm;	/* structure describing operation permission */
+diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
+index 3c277ed1d8a3a956..2ac89b3ce456fd39 100644
+--- a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
++++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
+@@ -23,7 +23,7 @@
+ /* Data structure describing a set of semaphores.  */
+ struct semid_ds
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_semid64_ds_helper.h>
+ #else
+   struct ipc_perm sem_perm;        /* operation permission struct */
+diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
+index 09de0b4e3a587c52..1012ed031702df04 100644
+--- a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
++++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
+@@ -23,7 +23,7 @@
+ /* Data structure describing a shared memory segment.  */
+ struct shmid_ds
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_shmid64_ds_helper.h>
+ #else
+     struct ipc_perm shm_perm;		/* operation permission struct */
+diff --git a/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h b/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
+index 4b4822d6d0c00081..47a9f0aaff8fce00 100644
+--- a/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
+@@ -43,7 +43,7 @@
+ 
+ struct stat
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/struct_stat_time64_helper.h>
+ #else
+     __dev_t st_dev;		/* Device.  */
+@@ -88,7 +88,7 @@ struct stat
+ #ifdef __USE_LARGEFILE64
+ struct stat64
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;		/* Device.  */
+diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
+index dd3442c2eab58cbe..8d573cd23e48c0f7 100644
+--- a/sysdeps/unix/sysv/linux/features-time64.h
++++ b/sysdeps/unix/sysv/linux/features-time64.h
+@@ -24,9 +24,8 @@
+ # if _TIME_BITS == 64
+ #  if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+ #   error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
+-#  elif __TIMESIZE == 32
+-#   define __USE_TIME_BITS64	1
+ #  endif
++#  define __USE_TIME_BITS64	1
+ # elif _TIME_BITS == 32
+ #  if __TIMESIZE > 32
+ #   error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
+@@ -34,4 +33,10 @@
+ # else
+ #  error Invalid _TIME_BITS value (can only be 32 or 64-bit)
+ # endif
++#elif __TIMESIZE == 64
++# define __USE_TIME_BITS64      1
++#endif
++
++#if defined __USE_TIME_BITS64 && __TIMESIZE == 32
++# define __USE_TIME64_REDIRECTS 1
+ #endif
+diff --git a/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h b/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
+index 58b523d03a234a76..80a76a17dc0d75c9 100644
+--- a/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
++++ b/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
+@@ -54,7 +54,7 @@
+ # define SO_TIMESTAMPNS_NEW 0x4039
+ # define SO_TIMESTAMPING_NEW 0x403A
+ 
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  define SO_RCVTIMEO SO_RCVTIMEO_NEW
+ #  define SO_SNDTIMEO SO_SNDTIMEO_NEW
+ #  define SO_TIMESTAMP SO_TIMESTAMP_NEW
+diff --git a/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h b/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
+index 069efdbc5579bfde..09ea40054bcd12da 100644
+--- a/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
+@@ -28,7 +28,7 @@
+ 
+ struct stat
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/struct_stat_time64_helper.h>
+ #else
+     __dev_t st_dev;			/* Device.  */
+@@ -83,13 +83,13 @@ struct stat
+ # else
+     __ino64_t st_ino;			/* File serial number.	*/
+ # endif
+-#endif /* __USE_TIME_BITS64  */
++#endif /* __USE_TIME64_REDIRECTS  */
+   };
+ 
+ #ifdef __USE_LARGEFILE64
+ struct stat64
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;			/* Device.  */
+@@ -125,7 +125,7 @@ struct stat64
+     unsigned long int st_ctimensec;	/* Nsecs of last status change.  */
+ #  endif
+     __ino64_t st_ino;			/* File serial number.		*/
+-# endif /* __USE_TIME_BITS64  */
++# endif /* __USE_TIME64_REDIRECTS  */
+   };
+ #endif
+ 
+diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
+index 2bc7cac06da36e27..4995e0a4a5017f1a 100644
+--- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
++++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
+@@ -26,7 +26,7 @@
+    The type `struct msg' is opaque.  */
+ struct msqid_ds
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_msqid64_ds_helper.h>
+ #else
+   struct ipc_perm msg_perm;	/* structure describing operation permission */
+diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
+index dd8fbebcf48891f9..df88949dc20c9821 100644
+--- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
++++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
+@@ -23,7 +23,7 @@
+ /* Data structure describing a set of semaphores.  */
+ struct semid_ds
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_semid64_ds_helper.h>
+ #else
+   struct ipc_perm sem_perm;   /* operation permission struct */
+diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
+index 58ac572b6e9b13f9..cb3b0303aa28d192 100644
+--- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
++++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
+@@ -23,7 +23,7 @@
+ /* Data structure describing a shared memory segment.  */
+ struct shmid_ds
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_shmid64_ds_helper.h>
+ #else
+     struct ipc_perm shm_perm;		/* operation permission struct */
+diff --git a/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
+index 3b1db157bc0a76a7..b7f20189b1600585 100644
+--- a/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
+@@ -25,7 +25,7 @@
+ 
+ struct stat
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/struct_stat_time64_helper.h>
+ #else
+     __dev_t st_dev;			/* Device.  */
+@@ -80,13 +80,13 @@ struct stat
+ # else
+     __ino64_t st_ino;			/* File serial number.	*/
+ # endif
+-#endif /* __USE_TIME_BITS64  */
++#endif /* __USE_TIME64_REDIRECTS  */
+   };
+ 
+ #ifdef __USE_LARGEFILE64
+ struct stat64
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;			/* Device.  */
+@@ -122,7 +122,7 @@ struct stat64
+     unsigned long int st_ctimensec;	/* Nsecs of last status change.  */
+ #  endif
+     __ino64_t st_ino;			/* File serial number.		*/
+-# endif /* __USE_TIME_BITS64 */
++# endif /* __USE_TIME64_REDIRECTS */
+   };
+ #endif
+ 
+diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
+index 0f4693fb1fa6750e..ff1e269f1461a50e 100644
+--- a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
+@@ -26,7 +26,7 @@
+ #ifndef __USE_FILE_OFFSET64
+ struct stat
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/struct_stat_time64_helper.h>
+ #else
+         __dev_t         st_dev;     /* Device.  */
+@@ -64,7 +64,7 @@ struct stat
+ # endif
+         unsigned int            __glibc_reserved4;
+         unsigned int            __glibc_reserved5;
+-#endif /* __USE_TIME_BITS64  */
++#endif /* __USE_TIME64_REDIRECTS  */
+ };
+ #else /* __USE_FILE_OFFSET64 */
+ /* MS: If __USE_FILE_OFFSET64 is setup then struct stat should match stat64
+@@ -74,7 +74,7 @@ struct stat
+  * create one ifdef to separate stats structures.  */
+ struct stat
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/struct_stat_time64_helper.h>
+ #else
+         unsigned long long      st_dev;     /* Device.  */
+@@ -112,14 +112,14 @@ struct stat
+ # endif
+         unsigned int            __glibc_reserved4;
+         unsigned int            __glibc_reserved5;
+-# endif /* __USE_TIME_BITS64 */
++# endif /* __USE_TIME64_REDIRECTS */
+ };
+ #endif /* __USE_FILE_OFFSET64 */
+ 
+ #ifdef __USE_LARGEFILE64
+ struct stat64
+ {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+         unsigned long long      st_dev;     /* Device.  */
+@@ -157,7 +157,7 @@ struct stat64
+ #  endif
+         unsigned int            __glibc_reserved4;
+         unsigned int            __glibc_reserved5;
+-# endif /* __USE_TIME_BITS64 */
++# endif /* __USE_TIME64_REDIRECTS */
+ };
+ #endif
+ 
+diff --git a/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h b/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
+index c6908a2793db1e6f..77ffc8b890311c23 100644
+--- a/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
++++ b/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
+@@ -54,7 +54,7 @@
+ # define SO_TIMESTAMPNS_NEW 64
+ # define SO_TIMESTAMPING_NEW 65
+ 
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  define SO_RCVTIMEO SO_RCVTIMEO_NEW
+ #  define SO_SNDTIMEO SO_SNDTIMEO_NEW
+ #  define SO_TIMESTAMP SO_TIMESTAMP_NEW
+diff --git a/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
+index 277ebad9b6e66e42..50a4b367f6d8d8da 100644
+--- a/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
+@@ -29,7 +29,7 @@
+ /* Structure describing file characteristics.  */
+ struct stat
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     unsigned long int st_dev;
+@@ -82,13 +82,13 @@ struct stat
+     __blkcnt64_t st_blocks;	/* Number of 512-byte blocks allocated.  */
+ #  endif
+     long int st_pad5[14];
+-# endif /* __USE_TIME_BITS64  */
++# endif /* __USE_TIME64_REDIRECTS  */
+   };
+ 
+ # ifdef __USE_LARGEFILE64
+ struct stat64
+   {
+-#  ifdef __USE_TIME_BITS64
++#  ifdef __USE_TIME64_REDIRECTS
+ #   include <bits/struct_stat_time64_helper.h>
+ #  else
+     unsigned long int st_dev;
+@@ -123,7 +123,7 @@ struct stat64
+     long int st_pad3;
+     __blkcnt64_t st_blocks;	/* Number of 512-byte blocks allocated.  */
+     long int st_pad4[14];
+-#  endif /* __USE_TIME_BITS64  */
++#  endif /* __USE_TIME64_REDIRECTS  */
+   };
+ # endif /* __USE_LARGEFILE64  */
+ 
+@@ -131,7 +131,7 @@ struct stat64
+ 
+ struct stat
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;
+@@ -189,7 +189,7 @@ struct stat
+ #ifdef __USE_LARGEFILE64
+ struct stat64
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;
+@@ -224,7 +224,7 @@ struct stat64
+     unsigned int st_pad3;
+     __blkcnt64_t st_blocks;
+     int st_pad4[14];
+-# endif /* __USE_TIME_BITS64  */
++# endif /* __USE_TIME64_REDIRECTS  */
+ };
+ #endif
+ 
+diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
+index 4e8bd51b0aa59929..09c53648b7451ac4 100644
+--- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
++++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
+@@ -26,7 +26,7 @@
+    The type `struct msg' is opaque.  */
+ struct msqid_ds
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_msqid64_ds_helper.h>
+ #else
+   struct ipc_perm msg_perm;	/* structure describing operation permission */
+diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
+index d1a30e31645ee2a4..0746684a7d4c0dc4 100644
+--- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
++++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
+@@ -23,7 +23,7 @@
+ /* Data structure describing a set of semaphores.  */
+ struct semid_ds
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_semid64_ds_helper.h>
+ #else
+   struct ipc_perm sem_perm;		/* operation permission struct */
+diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
+index 8771164b5762c48f..c665af187489c675 100644
+--- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
++++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
+@@ -23,7 +23,7 @@
+ /* Data structure describing a shared memory segment.  */
+ struct shmid_ds
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_shmid64_ds_helper.h>
+ #else
+     struct ipc_perm shm_perm;		/* operation permission struct */
+diff --git a/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h b/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
+index 672c7c6bb8f20314..dab466d881c94b61 100644
+--- a/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
+@@ -43,7 +43,7 @@
+ 
+ struct stat
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/struct_stat_time64_helper.h>
+ #else
+     __dev_t st_dev;		/* Device.  */
+@@ -88,7 +88,7 @@ struct stat
+ #ifdef __USE_LARGEFILE64
+ struct stat64
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;		/* Device.  */
+diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
+index 6be5055e65ab0b88..0d3e095c5d4bb94c 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
++++ b/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
+@@ -54,7 +54,7 @@
+ # define SO_TIMESTAMPNS_NEW 64
+ # define SO_TIMESTAMPING_NEW 65
+ 
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  define SO_RCVTIMEO SO_RCVTIMEO_NEW
+ #  define SO_SNDTIMEO SO_SNDTIMEO_NEW
+ #  define SO_TIMESTAMP SO_TIMESTAMP_NEW
+diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
+index f6328399cd1f2985..2cf331544a805f06 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
+@@ -28,7 +28,7 @@
+ #if __WORDSIZE == 32
+ struct stat
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;			/* Device.  */
+@@ -79,13 +79,13 @@ struct stat
+ #  endif
+     unsigned long int __glibc_reserved4;
+     unsigned long int __glibc_reserved5;
+-# endif /* __USE_TIME_BITS64 */
++# endif /* __USE_TIME64_REDIRECTS */
+   };
+ 
+ # ifdef __USE_LARGEFILE64
+ struct stat64
+   {
+-#  ifdef __USE_TIME_BITS64
++#  ifdef __USE_TIME64_REDIRECTS
+ #   include <bits/struct_stat_time64_helper.h>
+ #  else
+     __dev_t st_dev;			/* Device.  */
+@@ -122,7 +122,7 @@ struct stat64
+ #   endif
+     unsigned long int __glibc_reserved4;
+     unsigned long int __glibc_reserved5;
+-#  endif /* __USE_TIME_BITS64 */
++#  endif /* __USE_TIME64_REDIRECTS */
+   };
+ # endif /* __USE_LARGEFILE64 */
+ 
+diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
+index 830629cd37e4fccf..44ae08265d41502c 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
++++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
+@@ -26,7 +26,7 @@
+    The type `struct msg' is opaque.  */
+ struct msqid_ds
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_msqid64_ds_helper.h>
+ #else
+   struct ipc_perm msg_perm;	/* structure describing operation permission */
+diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
+index 43702575570a7d54..ccee57c28bf70729 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
++++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
+@@ -23,7 +23,7 @@
+ /* Data structure describing a set of semaphores.  */
+ struct semid_ds
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_semid64_ds_helper.h>
+ #else
+   struct ipc_perm sem_perm;   /* operation permission struct */
+diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
+index da1b4b3c56383000..58145d0a5d2e8203 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
++++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
+@@ -23,7 +23,7 @@
+ /* Data structure describing a shared memory segment.  */
+ struct shmid_ds
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_shmid64_ds_helper.h>
+ #else
+     struct ipc_perm shm_perm;		/* operation permission struct */
+diff --git a/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
+index 9911c47bb268e207..e5c9024fb241fad9 100644
+--- a/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
+@@ -65,7 +65,7 @@ struct stat
+ #else
+ struct stat
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;			/* Device.  */
+@@ -166,7 +166,7 @@ struct stat64
+ # else
+ struct stat64
+   {
+-#  ifdef __USE_TIME_BITS64
++#  ifdef __USE_TIME64_REDIRECTS
+ #   include <bits/struct_stat_time64_helper.h>
+ #  else
+     __dev_t st_dev;			/* Device.  */
+diff --git a/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h b/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
+index cbd4bc0f31ac0c97..d47cd7be1eeb9f17 100644
+--- a/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
+@@ -28,7 +28,7 @@
+ 
+ struct stat
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/struct_stat_time64_helper.h>
+ #else
+     __dev_t st_dev;			/* Device.  */
+@@ -83,13 +83,13 @@ struct stat
+ # else
+     __ino64_t st_ino;			/* File serial number.	*/
+ # endif
+-#endif /* __USE_TIME_BITS64  */
++#endif /* __USE_TIME64_REDIRECTS  */
+   };
+ 
+ #ifdef __USE_LARGEFILE64
+ struct stat64
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;			/* Device.  */
+@@ -125,7 +125,7 @@ struct stat64
+     unsigned long int st_ctimensec;	/* Nsecs of last status change.  */
+ #  endif
+     __ino64_t st_ino;			/* File serial number.		*/
+-# endif /* __USE_TIME_BITS64  */
++# endif /* __USE_TIME64_REDIRECTS  */
+   };
+ #endif
+ 
+diff --git a/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
+index 59958611c42ed1f6..e7a6b684ccc51a1e 100644
+--- a/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
++++ b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
+@@ -54,7 +54,7 @@
+ # define SO_TIMESTAMPNS_NEW 0x0042
+ # define SO_TIMESTAMPING_NEW 0x0043
+ 
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  define SO_RCVTIMEO SO_RCVTIMEO_NEW
+ #  define SO_SNDTIMEO SO_SNDTIMEO_NEW
+ #  define SO_TIMESTAMP SO_TIMESTAMP_NEW
+diff --git a/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
+index 4e48634edc7f16f6..fcab5f480478768b 100644
+--- a/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
+@@ -28,7 +28,7 @@
+ 
+ struct stat
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/struct_stat_time64_helper.h>
+ #else
+     __dev_t st_dev;			/* Device.  */
+@@ -79,13 +79,13 @@ struct stat
+ # endif
+     unsigned long int __glibc_reserved4;
+     unsigned long int __glibc_reserved5;
+-#endif /* __USE_TIME_BITS64  */
++#endif /* __USE_TIME64_REDIRECTS  */
+   };
+ 
+ #ifdef __USE_LARGEFILE64
+ struct stat64
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;			/* Device.  */
+@@ -126,7 +126,7 @@ struct stat64
+ #  endif
+     unsigned long int __glibc_reserved4;
+     unsigned long int __glibc_reserved5;
+-# endif /* __USE_TIME_BITS64  */
++# endif /* __USE_TIME64_REDIRECTS  */
+   };
+ #endif
+ 
+diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
+index db783c28d414000f..ed8d47c9b61f182b 100644
+--- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
++++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
+@@ -26,7 +26,7 @@
+    The type `struct msg' is opaque.  */
+ struct msqid_ds
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_msqid64_ds_helper.h>
+ #else
+   struct ipc_perm msg_perm;	/* structure describing operation permission */
+diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
+index 1c8a3693dbd6977f..b9e729b8b46a232e 100644
+--- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
++++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
+@@ -23,7 +23,7 @@
+ /* Data structure describing a set of semaphores.  */
+ struct semid_ds
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_semid64_ds_helper.h>
+ #else
+   struct ipc_perm sem_perm;   /* operation permission struct */
+diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
+index 35a0cc36ab764e52..7885d2ab25d9c679 100644
+--- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
++++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
+@@ -23,7 +23,7 @@
+ /* Data structure describing a shared memory segment.  */
+ struct shmid_ds
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_shmid64_ds_helper.h>
+ #else
+     struct ipc_perm shm_perm;		/* operation permission struct */
+diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h
+index 9b51e3bd1471c25c..fc8dce45c8947a03 100644
+--- a/sysdeps/unix/sysv/linux/sys/epoll.h
++++ b/sysdeps/unix/sysv/linux/sys/epoll.h
+@@ -140,7 +140,7 @@ extern int epoll_pwait (int __epfd, struct epoll_event *__events,
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int epoll_pwait2 (int __epfd, struct epoll_event *__events,
+ 			 int __maxevents, const struct timespec *__timeout,
+ 			 const __sigset_t *__ss)
+diff --git a/sysdeps/unix/sysv/linux/sys/prctl.h b/sysdeps/unix/sysv/linux/sys/prctl.h
+index b13b84626149450e..79a9b31273b33bca 100644
+--- a/sysdeps/unix/sysv/linux/sys/prctl.h
++++ b/sysdeps/unix/sysv/linux/sys/prctl.h
+@@ -38,7 +38,7 @@
+ __BEGIN_DECLS
+ 
+ /* Control process execution.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int prctl (int __option, ...) __THROW;
+ #else
+ # ifdef __REDIRECT
+diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
+index 19d0cbfae020d7a6..f66ece306ade51dd 100644
+--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
++++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
+@@ -47,7 +47,7 @@ extern int timerfd_settime (int __ufd, int __flags,
+ 			    const struct itimerspec *__utmr,
+ 			    struct itimerspec *__otmr) __THROW;
+ 
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # if defined(__REDIRECT_NTH)
+ extern int __REDIRECT_NTH (timerfd_settime,
+                            (int __ufd, int __flags,
+@@ -62,7 +62,7 @@ extern int __REDIRECT_NTH (timerfd_settime,
+ /* Return the next expiration time of UFD.  */
+ extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
+ 
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # if defined(__REDIRECT_NTH)
+ extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+                                              struct itimerspec *__otmr),
+diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
+index 28ce022253e057ce..568748d7679211fd 100644
+--- a/sysdeps/unix/sysv/linux/sys/timex.h
++++ b/sysdeps/unix/sysv/linux/sys/timex.h
+@@ -54,7 +54,7 @@ struct ntptimeval
+ 
+ __BEGIN_DECLS
+ 
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int adjtimex (struct timex *__ntx) __THROW __nonnull ((1));
+ extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW __nonnull ((1));
+ 
+diff --git a/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
+index 21aa315d8dc15681..810d6566f05683f3 100644
+--- a/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
++++ b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
+@@ -25,7 +25,7 @@
+ 
+ struct stat
+   {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/struct_stat_time64_helper.h>
+ #else
+     __dev_t st_dev;		/* Device.  */
+@@ -95,14 +95,14 @@ struct stat
+     __ino64_t st_ino;			/* File serial number.	*/
+ #  endif
+ # endif
+-#endif /* __USE_TIME_BITS64  */
++#endif /* __USE_TIME64_REDIRECTS  */
+   };
+ 
+ #ifdef __USE_LARGEFILE64
+ /* Note stat64 has the same shape as stat for x86-64.  */
+ struct stat64
+   {
+-# ifdef __USE_TIME_BITS64
++# ifdef __USE_TIME64_REDIRECTS
+ #  include <bits/struct_stat_time64_helper.h>
+ # else
+     __dev_t st_dev;		/* Device.  */
+@@ -152,7 +152,7 @@ struct stat64
+ #  else
+     __ino64_t st_ino;			/* File serial number.		*/
+ #  endif
+-# endif /* __USE_TIME_BITS64  */
++# endif /* __USE_TIME64_REDIRECTS  */
+   };
+ #endif
+ 
+diff --git a/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
+index 9f3d170b65269927..81867c0316080913 100644
+--- a/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
++++ b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
+@@ -23,7 +23,7 @@
+ /* Data structure describing a set of semaphores.  */
+ struct semid_ds
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ # include <bits/types/struct_semid64_ds_helper.h>
+ #else
+   struct ipc_perm sem_perm;   /* operation permission struct */
+diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
+index d0388b0522fb4183..4178ad99550e8b12 100644
+--- a/sysvipc/sys/msg.h
++++ b/sysvipc/sys/msg.h
+@@ -58,7 +58,7 @@ struct msgbuf
+ __BEGIN_DECLS
+ 
+ /* Message queue control operation.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
+ #else
+ # ifdef __REDIRECT_NTH
+diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
+index 5d9ec39296af6db9..812f1303b3d93360 100644
+--- a/sysvipc/sys/sem.h
++++ b/sysvipc/sys/sem.h
+@@ -48,7 +48,7 @@ struct sembuf
+ __BEGIN_DECLS
+ 
+ /* Semaphore control operation.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
+ #else
+ # ifdef __REDIRECT_NTH
+@@ -68,7 +68,7 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
+ 
+ #ifdef __USE_GNU
+ /* Operate on semaphore with timeout.  */
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
+ 		       const struct timespec *__timeout) __THROW;
+ # else
+diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
+index 04191656d54d3c89..496e57ef4528af2e 100644
+--- a/sysvipc/sys/shm.h
++++ b/sysvipc/sys/shm.h
+@@ -46,7 +46,7 @@ __BEGIN_DECLS
+    facility.  The definition is found in XPG4.2.  */
+ 
+ /* Shared memory control operation.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
+ #else
+ # ifdef __REDIRECT_NTH
+diff --git a/time/bits/types/struct_timespec.h b/time/bits/types/struct_timespec.h
+index 489e81136d7f4ad5..1141015f276cb330 100644
+--- a/time/bits/types/struct_timespec.h
++++ b/time/bits/types/struct_timespec.h
+@@ -10,14 +10,14 @@
+    has nanoseconds instead of microseconds.  */
+ struct timespec
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+   __time64_t tv_sec;		/* Seconds.  */
+ #else
+   __time_t tv_sec;		/* Seconds.  */
+ #endif
+ #if __WORDSIZE == 64 \
+   || (defined __SYSCALL_WORDSIZE && __SYSCALL_WORDSIZE == 64) \
+-  || (__TIMESIZE == 32 && !defined __USE_TIME_BITS64)
++  || (__TIMESIZE == 32 && !defined __USE_TIME64_REDIRECTS)
+   __syscall_slong_t tv_nsec;	/* Nanoseconds.  */
+ #else
+ # if __BYTE_ORDER == __BIG_ENDIAN
+diff --git a/time/bits/types/struct_timeval.h b/time/bits/types/struct_timeval.h
+index 3466137c35fb5d0e..0c8e88c82c400d68 100644
+--- a/time/bits/types/struct_timeval.h
++++ b/time/bits/types/struct_timeval.h
+@@ -7,7 +7,7 @@
+    microsecond but also has a range of years.  */
+ struct timeval
+ {
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+   __time64_t tv_sec;		/* Seconds.  */
+   __suseconds64_t tv_usec;	/* Microseconds.  */
+ #else
+diff --git a/time/bits/types/time_t.h b/time/bits/types/time_t.h
+index 84d67f6ac346e249..00cde92c623375f3 100644
+--- a/time/bits/types/time_t.h
++++ b/time/bits/types/time_t.h
+@@ -4,7 +4,7 @@
+ #include <bits/types.h>
+ 
+ /* Returned by `time'.  */
+-#ifdef __USE_TIME_BITS64
++#ifdef __USE_TIME64_REDIRECTS
+ typedef __time64_t time_t;
+ #else
+ typedef __time_t time_t;
+diff --git a/time/sys/time.h b/time/sys/time.h
+index c8708198a5fa2e58..8c3d0c30222d15d1 100644
+--- a/time/sys/time.h
++++ b/time/sys/time.h
+@@ -63,7 +63,7 @@ struct timezone
+    use localtime etc. instead.
+    This function itself is semi-obsolete;
+    most callers should use time or clock_gettime instead. */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern int gettimeofday (struct timeval *__restrict __tv,
+ 			 void *__restrict __tz) __THROW __nonnull ((1));
+ #else
+@@ -77,7 +77,7 @@ extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
+ #endif
+ 
+ #ifdef __USE_MISC
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Set the current time of day and timezone information.
+    This call is restricted to the super-user.
+    Setting the timezone in this way is obsolete, but we don't yet
+@@ -143,7 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
+ typedef int __itimer_which_t;
+ #endif
+ 
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ /* Set *VALUE to the current setting of timer WHICH.
+    Return 0 on success, -1 on errors.  */
+ extern int getitimer (__itimer_which_t __which,
+@@ -184,7 +184,7 @@ extern int __REDIRECT_NTH (utimes, (const char *__file,
+ #endif
+ 
+ #ifdef __USE_MISC
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Same as `utimes', but does not follow symbolic links.  */
+ extern int lutimes (const char *__file, const struct timeval __tvp[2])
+      __THROW __nonnull ((1));
+@@ -207,7 +207,7 @@ extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
+ #endif
+ 
+ #ifdef __USE_GNU
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Change the access time of FILE relative to FD to TVP[0] and the
+    modification time of FILE to TVP[1].  If TVP is a null pointer, use
+    the current time instead.  Returns 0 on success, -1 on errors.  */
+diff --git a/time/time.h b/time/time.h
+index 1609aaeffaac5713..3785dc608f6c6ed6 100644
+--- a/time/time.h
++++ b/time/time.h
+@@ -71,7 +71,7 @@ __BEGIN_DECLS
+    The result / CLOCKS_PER_SEC is program time in seconds.  */
+ extern clock_t clock (void) __THROW;
+ 
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
+ extern time_t time (time_t *__timer) __THROW;
+ 
+@@ -127,7 +127,7 @@ extern char *strptime_l (const char *__restrict __s,
+ #endif
+ 
+ 
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ /* Return the `struct tm' representation of *TIMER
+    in Universal Coordinated Time (aka Greenwich Mean Time).  */
+ extern struct tm *gmtime (const time_t *__timer) __THROW;
+@@ -149,7 +149,7 @@ extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
+ 
+ 
+ #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Return the `struct tm' representation of *TIMER in UTC,
+    using *TP to store the result.  */
+ extern struct tm *gmtime_r (const time_t *__restrict __timer,
+@@ -180,7 +180,7 @@ extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
+ extern char *asctime (const struct tm *__tp) __THROW;
+ 
+ /* Equivalent to `asctime (localtime (timer))'.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern char *ctime (const time_t *__timer) __THROW;
+ #else
+ # ifdef __REDIRECT_NTH
+@@ -199,7 +199,7 @@ extern char *asctime_r (const struct tm *__restrict __tp,
+ 			char *__restrict __buf) __THROW;
+ 
+ /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ extern char *ctime_r (const time_t *__restrict __timer,
+ 		      char *__restrict __buf) __THROW;
+ #else
+@@ -242,7 +242,7 @@ extern long int timezone;
+ 
+ 
+ #if defined __USE_MISC || __GLIBC_USE (ISOC2X)
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Like `mktime', but for TP represents Universal Time, not local time.  */
+ extern time_t timegm (struct tm *__tp) __THROW;
+ # else
+@@ -259,7 +259,7 @@ extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
+ /* Miscellaneous functions many Unices inherited from the public domain
+    localtime package.  These are included only for compatibility.  */
+ 
+-#ifndef __USE_TIME_BITS64
++#ifndef __USE_TIME64_REDIRECTS
+ /* Another name for `mktime'.  */
+ extern time_t timelocal (struct tm *__tp) __THROW;
+ #else
+@@ -274,7 +274,7 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
+ 
+ 
+ #ifdef __USE_POSIX199309
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Pause execution for a number of nanoseconds.
+ 
+    This function is a cancellation point and therefore not marked with
+@@ -320,7 +320,7 @@ extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
+ 
+    This function is a cancellation point and therefore not marked with
+    __THROW.  */
+-#  ifndef __USE_TIME_BITS64
++#  ifndef __USE_TIME64_REDIRECTS
+ extern int clock_nanosleep (clockid_t __clock_id, int __flags,
+ 			    const struct timespec *__req,
+ 			    struct timespec *__rem);
+@@ -349,7 +349,7 @@ extern int timer_create (clockid_t __clock_id,
+ extern int timer_delete (timer_t __timerid) __THROW;
+ 
+ /* Set timer TIMERID to VALUE, returning old value in OVALUE.  */
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ extern int timer_settime (timer_t __timerid, int __flags,
+ 			  const struct itimerspec *__restrict __value,
+ 			  struct itimerspec *__restrict __ovalue) __THROW;
+@@ -379,7 +379,7 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
+ 
+ 
+ #ifdef __USE_ISOC11
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Set TS to calendar time based in time base BASE.  */
+ extern int timespec_get (struct timespec *__ts, int __base)
+      __THROW __nonnull ((1));
+@@ -395,7 +395,7 @@ extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
+ 
+ 
+ #if __GLIBC_USE (ISOC2X)
+-# ifndef __USE_TIME_BITS64
++# ifndef __USE_TIME64_REDIRECTS
+ /* Set TS to resolution of time base BASE.  */
+ extern int timespec_getres (struct timespec *__ts, int __base)
+      __THROW;
diff --git a/SOURCES/glibc-upstream-2.39-62.patch b/SOURCES/glibc-upstream-2.39-62.patch
new file mode 100644
index 0000000..e928935
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-62.patch
@@ -0,0 +1,38 @@
+commit aee37de299af95007a1f00f2cdf6c1452f39e682
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Fri Apr 5 09:02:36 2024 -0300
+
+    Reinstate generic features-time64.h
+    
+    The a4ed0471d7 removed the generic version which is included by
+    features.h and used by Hurd.
+    
+    Checked by building i686-gnu and x86_64-gnu with build-many-glibc.py.
+    
+    (cherry picked from commit c27f8763cffbb7db9b3f1f5e09ef24d26cbb63f4)
+
+diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
+new file mode 100644
+index 0000000000000000..4d38b8ba766b34f5
+--- /dev/null
++++ b/sysdeps/generic/features-time64.h
+@@ -0,0 +1,19 @@
++/* Features part to handle 64-bit time_t support.  Generic version.
++   Copyright (C) 2021-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/>.  */
++
++/* The generic configuration only support _TIME_BITS=32.  */
diff --git a/SOURCES/glibc-upstream-2.39-63.patch b/SOURCES/glibc-upstream-2.39-63.patch
new file mode 100644
index 0000000..4db9709
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-63.patch
@@ -0,0 +1,62 @@
+commit c9d8534406ab69b9bc1fd3fdfb9e88c9580d3f24
+Author: Sunil K Pandey <skpgkp2@gmail.com>
+Date:   Mon May 27 10:08:18 2024 -0700
+
+    i386: Disable Intel Xeon Phi tests for GCC 15 and above (BZ 31782)
+    
+    This patch disables Intel Xeon Phi tests for GCC 15 and above.
+    
+    GCC 15 removed Intel Xeon Phi ISA support.
+    commit e1a7e2c54d52d0ba374735e285b617af44841ace
+    Author: Haochen Jiang <haochen.jiang@intel.com>
+    Date:   Mon May 20 10:43:44 2024 +0800
+    
+        i386: Remove Xeon Phi ISA support
+    
+    Fixes BZ 31782.
+    
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    (cherry picked from commit 1b713c9a5349ef3cd1a8ccf9de017c7865713c67)
+
+diff --git a/sysdeps/x86/tst-cpu-features-supports.c b/sysdeps/x86/tst-cpu-features-supports.c
+index 93008dac703e762f..0f43ef2b2da0d3db 100644
+--- a/sysdeps/x86/tst-cpu-features-supports.c
++++ b/sysdeps/x86/tst-cpu-features-supports.c
+@@ -65,7 +65,7 @@ do_test (int argc, char **argv)
+ #endif
+   fails += CHECK_FEATURE_ACTIVE (avx, AVX);
+   fails += CHECK_FEATURE_ACTIVE (avx2, AVX2);
+-#if __GNUC_PREREQ (7, 0)
++#if __GNUC_PREREQ (7, 0) && !__GNUC_PREREQ (15, 0)
+   fails += CHECK_FEATURE_ACTIVE (avx5124fmaps, AVX512_4FMAPS);
+   fails += CHECK_FEATURE_ACTIVE (avx5124vnniw, AVX512_4VNNIW);
+ #endif
+@@ -92,14 +92,18 @@ do_test (int argc, char **argv)
+ #if __GNUC_PREREQ (6, 0)
+   fails += CHECK_FEATURE_ACTIVE (avx512bw, AVX512BW);
+   fails += CHECK_FEATURE_ACTIVE (avx512cd, AVX512CD);
++# if !__GNUC_PREREQ (15, 0)
+   fails += CHECK_FEATURE_ACTIVE (avx512er, AVX512ER);
++# endif
+   fails += CHECK_FEATURE_ACTIVE (avx512dq, AVX512DQ);
+ #endif
+ #if __GNUC_PREREQ (5, 0)
+   fails += CHECK_FEATURE_ACTIVE (avx512f, AVX512F);
+ #endif
+ #if __GNUC_PREREQ (6, 0)
++# if !__GNUC_PREREQ (15, 0)
+   fails += CHECK_FEATURE_ACTIVE (avx512pf, AVX512PF);
++# endif
+   fails += CHECK_FEATURE_ACTIVE (avx512vl, AVX512VL);
+ #endif
+ #if __GNUC_PREREQ (5, 0)
+@@ -148,7 +152,9 @@ do_test (int argc, char **argv)
+ #endif
+   fails += CHECK_FEATURE_ACTIVE (popcnt, POPCNT);
+ #if __GNUC_PREREQ (11, 0)
++# if !__GNUC_PREREQ (15, 0)
+   fails += CHECK_FEATURE_ACTIVE (prefetchwt1, PREFETCHWT1);
++# endif
+   fails += CHECK_FEATURE_ACTIVE (ptwrite, PTWRITE);
+   fails += CHECK_FEATURE_ACTIVE (rdpid, RDPID);
+   fails += CHECK_FEATURE_ACTIVE (rdrnd, RDRAND);
diff --git a/SOURCES/glibc-upstream-2.39-64.patch b/SOURCES/glibc-upstream-2.39-64.patch
new file mode 100644
index 0000000..bbba766
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-64.patch
@@ -0,0 +1,68 @@
+commit 70f560fc22212f733647c9121c26bbb2307f2e10
+Author: Stafford Horne <shorne@gmail.com>
+Date:   Wed Apr 3 06:40:37 2024 +0100
+
+    misc: Add support for Linux uio.h RWF_NOAPPEND flag
+    
+    In Linux 6.9 a new flag is added to allow for Per-io operations to
+    disable append mode even if a file was opened with the flag O_APPEND.
+    This is done with the new RWF_NOAPPEND flag.
+    
+    This caused two test failures as these tests expected the flag 0x00000020
+    to be unused.  Adding the flag definition now fixes these tests on Linux
+    6.9 (v6.9-rc1).
+    
+      FAIL: misc/tst-preadvwritev2
+      FAIL: misc/tst-preadvwritev64v2
+    
+    This patch adds the flag, adjusts the test and adds details to
+    documentation.
+    
+    Link: https://lore.kernel.org/all/20200831153207.GO3265@brightrain.aerifal.cx/
+    Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+    (cherry picked from commit 3db9d208dd5f30b12900989c6d2214782b8e2011)
+
+diff --git a/manual/llio.texi b/manual/llio.texi
+index 0b61d491f50b763a..fae49d14332db675 100644
+--- a/manual/llio.texi
++++ b/manual/llio.texi
+@@ -1339,6 +1339,10 @@ will fail and set @code{errno} to @code{EAGAIN} if the operation would block.
+ 
+ @item RWF_APPEND
+ Per-IO synchronization as if the file was opened with @code{O_APPEND} flag.
++
++@item RWF_NOAPPEND
++This flag allows an offset to be honored, even if the file was opened with
++@code{O_APPEND} flag.
+ @end vtable
+ 
+ When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
+diff --git a/misc/tst-preadvwritev2-common.c b/misc/tst-preadvwritev2-common.c
+index b5f19f002cd1653e..8e04ff7282e727b6 100644
+--- a/misc/tst-preadvwritev2-common.c
++++ b/misc/tst-preadvwritev2-common.c
+@@ -34,8 +34,11 @@
+ #ifndef RWF_APPEND
+ # define RWF_APPEND 0
+ #endif
++#ifndef RWF_NOAPPEND
++# define RWF_NOAPPEND 0
++#endif
+ #define RWF_SUPPORTED	(RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT \
+-			 | RWF_APPEND)
++			 | RWF_APPEND | RWF_NOAPPEND)
+ 
+ /* Generic uio_lim.h does not define IOV_MAX.  */
+ #ifndef IOV_MAX
+diff --git a/sysdeps/unix/sysv/linux/bits/uio-ext.h b/sysdeps/unix/sysv/linux/bits/uio-ext.h
+index 7854cccef3e0a618..ead7a091566aa295 100644
+--- a/sysdeps/unix/sysv/linux/bits/uio-ext.h
++++ b/sysdeps/unix/sysv/linux/bits/uio-ext.h
+@@ -47,6 +47,7 @@ extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec,
+ #define RWF_SYNC	0x00000004 /* per-IO O_SYNC.  */
+ #define RWF_NOWAIT	0x00000008 /* per-IO nonblocking mode.  */
+ #define RWF_APPEND	0x00000010 /* per-IO O_APPEND.  */
++#define RWF_NOAPPEND	0x00000020 /* per-IO negation of O_APPEND */
+ 
+ __END_DECLS
+ 
diff --git a/SOURCES/glibc-upstream-2.39-65.patch b/SOURCES/glibc-upstream-2.39-65.patch
new file mode 100644
index 0000000..60b9efb
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-65.patch
@@ -0,0 +1,44 @@
+commit 6ade91c21140d8c803c289932dbfc74537f65a1f
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Mon Jun 3 10:49:40 2024 +0200
+
+    elf: Avoid some free (NULL) calls in _dl_update_slotinfo
+    
+    This has been confirmed to work around some interposed mallocs.  Here
+    is a discussion of the impact test ust/libc-wrapper/test_libc-wrapper
+    in lttng-tools:
+    
+      New TLS usage in libgcc_s.so.1, compatibility impact
+      <https://inbox.sourceware.org/libc-alpha/8734v1ieke.fsf@oldenburg.str.redhat.com/>
+    
+    Reportedly, this patch also papers over a similar issue when tcmalloc
+    2.9.1 is not compiled with -ftls-model=initial-exec.  Of course the
+    goal really should be to compile mallocs with the initial-exec TLS
+    model, but this commit appears to be a useful interim workaround.
+    
+    Fixes commit d2123d68275acc0f061e73d5f86ca504e0d5a344 ("elf: Fix slow
+    tls access after dlopen [BZ #19924]").
+    
+    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+    (cherry picked from commit afe42e935b3ee97bac9a7064157587777259c60e)
+
+diff --git a/elf/dl-tls.c b/elf/dl-tls.c
+index 7b3dd9ab60e89ae9..670dbc42fc2e3334 100644
+--- a/elf/dl-tls.c
++++ b/elf/dl-tls.c
+@@ -819,7 +819,14 @@ _dl_update_slotinfo (unsigned long int req_modid, size_t new_gen)
+ 		 dtv entry free it.  Note: this is not AS-safe.  */
+ 	      /* XXX Ideally we will at some point create a memory
+ 		 pool.  */
+-	      free (dtv[modid].pointer.to_free);
++	      /* Avoid calling free on a null pointer.  Some mallocs
++		 incorrectly use dynamic TLS, and depending on how the
++		 free function was compiled, it could call
++		 __tls_get_addr before the null pointer check in the
++		 free implementation.  Checking here papers over at
++		 least some dynamic TLS usage by interposed mallocs.  */
++	      if (dtv[modid].pointer.to_free != NULL)
++		free (dtv[modid].pointer.to_free);
+ 	      dtv[modid].pointer.val = TLS_DTV_UNALLOCATED;
+ 	      dtv[modid].pointer.to_free = NULL;
+ 
diff --git a/SOURCES/glibc-upstream-2.39-66.patch b/SOURCES/glibc-upstream-2.39-66.patch
new file mode 100644
index 0000000..5c83c5b
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-66.patch
@@ -0,0 +1,57 @@
+commit 00899eba260ff3edb62bc6f45c1860bc64fd59e0
+Author: Michael Jeanson <mjeanson@efficios.com>
+Date:   Mon Feb 5 15:22:39 2024 -0500
+
+    x86/cet: fix shadow stack test scripts
+    
+    Some shadow stack test scripts use the '==' operator with the 'test'
+    command to validate exit codes resulting in the following error:
+    
+      sysdeps/x86_64/tst-shstk-legacy-1e.sh: 31: test: 139: unexpected operator
+    
+    The '==' operator is invalid for the 'test' command, use '-eq' like the
+    previous call to 'test'.
+    
+    Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    (cherry picked from commit 155bb9d036646138348fee0ac045de601811e0c5)
+
+diff --git a/sysdeps/x86_64/tst-shstk-legacy-1e-static.sh b/sysdeps/x86_64/tst-shstk-legacy-1e-static.sh
+index 46f12337571127c6..0a9a164a3e8f4610 100755
+--- a/sysdeps/x86_64/tst-shstk-legacy-1e-static.sh
++++ b/sysdeps/x86_64/tst-shstk-legacy-1e-static.sh
+@@ -26,7 +26,7 @@ ${common_objpfx}elf/tst-shstk-legacy-1e-static
+ status=$?
+ if test $status -eq 77; then
+   exit 77
+-elif test $status == 139; then
++elif test $status -eq 139; then
+   exit 0
+ else
+   exit 1
+diff --git a/sysdeps/x86_64/tst-shstk-legacy-1e.sh b/sysdeps/x86_64/tst-shstk-legacy-1e.sh
+index 31212453d9374013..3dec5623e41dc3c8 100755
+--- a/sysdeps/x86_64/tst-shstk-legacy-1e.sh
++++ b/sysdeps/x86_64/tst-shstk-legacy-1e.sh
+@@ -28,7 +28,7 @@ ${test_program_prefix} \
+ status=$?
+ if test $status -eq 77; then
+   exit 77
+-elif test $status == 139; then
++elif test $status -eq 139; then
+   exit 0
+ else
+   exit 1
+diff --git a/sysdeps/x86_64/tst-shstk-legacy-1g.sh b/sysdeps/x86_64/tst-shstk-legacy-1g.sh
+index e84087068e6b7b15..249831e816f6589c 100755
+--- a/sysdeps/x86_64/tst-shstk-legacy-1g.sh
++++ b/sysdeps/x86_64/tst-shstk-legacy-1g.sh
+@@ -28,7 +28,7 @@ ${test_program_prefix} \
+ status=$?
+ if test $status -eq 77; then
+   exit 77
+-elif test $status == 139; then
++elif test $status -eq 139; then
+   exit 0
+ else
+   exit 1
diff --git a/SOURCES/glibc-upstream-2.39-67.patch b/SOURCES/glibc-upstream-2.39-67.patch
new file mode 100644
index 0000000..30bd3b2
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-67.patch
@@ -0,0 +1,232 @@
+commit 305ee48826961b9b2ad2b2fb36ec19622d8e1d77
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Thu May 9 20:27:39 2024 -0700
+
+    malloc/Makefile: Split and sort tests
+    
+    Put each test on a separate line and sort tests.
+    
+    Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+    (cherry picked from commit d49cd6a1913da9744b9a0ffbefb3f7958322382e)
+
+diff --git a/malloc/Makefile b/malloc/Makefile
+index c83ade5f10063113..77ba1a91093ebc55 100644
+--- a/malloc/Makefile
++++ b/malloc/Makefile
+@@ -24,60 +24,92 @@ include ../Makeconfig
+ 
+ dist-headers := malloc.h
+ headers := $(dist-headers) obstack.h mcheck.h
+-tests := mallocbug tst-malloc tst-valloc tst-calloc tst-obstack \
+-	 tst-malloc-check tst-mallocfork tst-trim1 \
+-	 tst-malloc-usable tst-realloc tst-reallocarray tst-posix_memalign \
+-	 tst-pvalloc tst-pvalloc-fortify tst-memalign tst-mallopt \
+-	 tst-malloc-backtrace tst-malloc-thread-exit \
+-	 tst-malloc-thread-fail tst-malloc-fork-deadlock \
+-	 tst-mallocfork2 \
+-	 tst-mallocfork3 \
+-	 tst-interpose-nothread \
+-	 tst-interpose-thread \
+-	 tst-alloc_buffer \
+-	 tst-free-errno \
+-	 tst-malloc-tcache-leak \
+-	 tst-malloc_info tst-mallinfo2 \
+-	 tst-malloc-too-large \
+-	 tst-malloc-stats-cancellation \
+-	 tst-tcfree1 tst-tcfree2 tst-tcfree3 \
+-	 tst-safe-linking \
+-	 tst-mallocalign1 \
+-	 tst-memalign-2 \
+-	 tst-memalign-3 \
+-	 tst-aligned-alloc
++tests := \
++  mallocbug \
++  tst-aligned-alloc \
++  tst-alloc_buffer \
++  tst-calloc \
++  tst-free-errno \
++  tst-interpose-nothread \
++  tst-interpose-thread \
++  tst-malloc \
++  tst-malloc-backtrace \
++  tst-malloc-check \
++  tst-malloc-fork-deadlock \
++  tst-malloc-stats-cancellation \
++  tst-malloc-tcache-leak \
++  tst-malloc-thread-exit \
++  tst-malloc-thread-fail \
++  tst-malloc-too-large \
++  tst-malloc-usable \
++  tst-malloc_info tst-mallinfo2 \
++  tst-mallocalign1 \
++  tst-mallocfork \
++  tst-mallocfork2 \
++  tst-mallocfork3 \
++  tst-mallopt \
++  tst-memalign \
++  tst-memalign-2 \
++  tst-memalign-3 \
++  tst-obstack \
++  tst-posix_memalign \
++  tst-pvalloc \
++  tst-pvalloc-fortify \
++  tst-realloc \
++  tst-reallocarray \
++  tst-safe-linking \
++  tst-tcfree1 tst-tcfree2 tst-tcfree3 \
++  tst-trim1 \
++  tst-valloc \
++# tests
+ 
+ tests-static := \
+-	 tst-interpose-static-nothread \
+-	 tst-interpose-static-thread \
+-	 tst-aligned-alloc-static
++  tst-aligned-alloc-static \
++  tst-interpose-static-nothread \
++  tst-interpose-static-thread \
++# tests-static
+ 
+ # Test for the malloc_set_state symbol removed in glibc 2.25.
+ ifeq ($(have-GLIBC_2.23)$(build-shared),yesyes)
+-tests += tst-mallocstate tst-compathooks-off tst-compathooks-on
++tests += \
++  tst-compathooks-off \
++  tst-compathooks-on \
++  tst-mallocstate \
++# tests
+ endif
+ 
+ tests-internal := tst-scratch_buffer
+ 
+ # The dynarray framework is only available inside glibc.
+ tests-internal += \
+-	 tst-dynarray \
+-	 tst-dynarray-fail \
+-	 tst-dynarray-at-fail \
++  tst-dynarray \
++  tst-dynarray-at-fail \
++  tst-dynarray-fail \
++# tests-internal
+ 
+-tests += tst-malloc-usable-tunables tst-mxfast
++tests += \
++  tst-malloc-usable-tunables \
++  tst-mxfast \
++# tests
+ 
+ tests += $(tests-static)
+ test-srcs = tst-mtrace
+ 
+ # These tests either are run with MALLOC_CHECK_=3 by default or do not work
+ # with MALLOC_CHECK_=3 because they expect a specific failure.
+-tests-exclude-malloc-check = tst-malloc-check tst-malloc-usable \
+-	tst-mxfast tst-safe-linking \
+-	tst-compathooks-off tst-compathooks-on tst-memalign-2 tst-memalign-3 \
+-	tst-mallocfork2 \
+-	tst-mallocfork3 \
+-	tst-malloc-tcache-leak
++tests-exclude-malloc-check = \
++  tst-compathooks-off \
++  tst-compathooks-on \
++  tst-malloc-check \
++  tst-malloc-tcache-leak \
++  tst-malloc-usable \
++  tst-mallocfork2 \
++  tst-mallocfork3 \
++  tst-memalign-2 \
++  tst-memalign-3 \
++  tst-mxfast \
++  tst-safe-linking \
++# tests-exclude-malloc-check
+ 
+ # Run all tests with MALLOC_CHECK_=3
+ tests-malloc-check = $(filter-out $(tests-exclude-malloc-check) \
+@@ -87,18 +119,19 @@ tests-malloc-check = $(filter-out $(tests-exclude-malloc-check) \
+ # the Transparent Huge Pages support (1) or automatic huge page support (2).
+ # We need exclude some tests that define the ENV vars.
+ tests-exclude-hugetlb1 = \
+-	tst-compathooks-off \
+-	tst-compathooks-on \
+-	tst-interpose-nothread \
+-	tst-interpose-thread \
+-	tst-interpose-static-nothread \
+-	tst-interpose-static-thread \
+-	tst-malloc-usable \
+-	tst-malloc-usable-tunables \
+-	tst-mallocstate \
+-	tst-malloc-tcache-leak \
+-	tst-mallocfork2 \
+-	tst-mallocfork3
++  tst-compathooks-off \
++  tst-compathooks-on \
++  tst-interpose-nothread \
++  tst-interpose-static-nothread \
++  tst-interpose-static-thread \
++  tst-interpose-thread \
++  tst-malloc-tcache-leak \
++  tst-malloc-usable \
++  tst-malloc-usable-tunables \
++  tst-mallocfork2 \
++  tst-mallocfork3 \
++  tst-mallocstate \
++# tests-exclude-hugetlb1
+ # The tst-free-errno relies on the used malloc page size to mmap an
+ # overlapping region.
+ tests-exclude-hugetlb2 = \
+@@ -114,22 +147,25 @@ ifeq ($(have-GLIBC_2.23)$(build-shared),yesyes)
+ # Tests that don't play well with mcheck.  They are either bugs in mcheck or
+ # the tests expect specific internal behavior that is changed due to linking to
+ # libmcheck.a.
+-tests-exclude-mcheck = tst-mallocstate \
+-	tst-safe-linking \
+-	tst-malloc-backtrace \
+-	tst-malloc-fork-deadlock \
+-	tst-malloc-stats-cancellation \
+-	tst-malloc-tcache-leak \
+-	tst-malloc-thread-exit \
+-	tst-malloc-thread-fail \
+-	tst-malloc-usable-tunables \
+-	tst-malloc_info \
+-	tst-compathooks-off tst-compathooks-on \
+-	tst-memalign-2 \
+-	tst-memalign-3 \
+-	tst-mxfast \
+-	tst-mallocfork2 \
+-	tst-mallocfork3
++tests-exclude-mcheck = \
++  tst-compathooks-off \
++  tst-compathooks-on \
++  tst-malloc-backtrace \
++  tst-malloc-fork-deadlock \
++  tst-malloc-stats-cancellation \
++  tst-malloc-tcache-leak \
++  tst-malloc-thread-exit \
++  tst-malloc-thread-fail \
++  tst-malloc-usable-tunables \
++  tst-malloc_info \
++  tst-mallocfork2 \
++  tst-mallocfork3 \
++  tst-mallocstate \
++  tst-memalign-2 \
++  tst-memalign-3 \
++  tst-mxfast \
++  tst-safe-linking \
++# tests-exclude-mcheck
+ 
+ tests-mcheck = $(filter-out $(tests-exclude-mcheck) $(tests-static), $(tests))
+ endif
+@@ -159,10 +195,12 @@ extra-libs-others = $(extra-libs)
+ extra-test-objs += \
+   tst-interpose-aux-nothread.o \
+   tst-interpose-aux-thread.o \
++# extra-test-objs
+ 
+ test-extras = \
+   tst-interpose-aux-nothread \
+   tst-interpose-aux-thread \
++# test-extras
+ 
+ libmemusage-routines = memusage
+ libmemusage-inhibit-o = $(filter-out .os,$(object-suffixes))
diff --git a/SOURCES/glibc-upstream-2.39-68.patch b/SOURCES/glibc-upstream-2.39-68.patch
new file mode 100644
index 0000000..979f9e0
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-68.patch
@@ -0,0 +1,244 @@
+commit a2da98aa2a13b1bde7fd3a98f31b04ddecfafa8f
+Author: Joe Simmons-Talbott <josimmon@redhat.com>
+Date:   Tue May 14 14:36:50 2024 +0000
+
+    malloc: Improve aligned_alloc and calloc test coverage.
+    
+    Add a DSO (malloc/tst-aligned_alloc-lib.so) that can be used during
+    testing to interpose malloc with a call that randomly uses either
+    aligned_alloc, __libc_malloc, or __libc_calloc in the place of malloc.
+    Use LD_PRELOAD with the DSO to mirror malloc/tst-malloc.c testing as an
+    example in malloc/tst-malloc-random.c.  Add malloc/tst-aligned-alloc-random.c
+    as another example that does a number of malloc calls with randomly sized,
+    but limited to 0xffff, requests.
+    
+    The intention is to be able to utilize existing malloc testing to ensure
+    that similar allocation APIs are also exposed to the same rigors.
+    
+    Reviewed-by: DJ Delorie <dj@redhat.com>
+    (cherry picked from commit 3395157ff2b0657d70c36169156f67440205c8bf)
+
+diff --git a/malloc/Makefile b/malloc/Makefile
+index 77ba1a91093ebc55..c1a03f3cb02c464d 100644
+--- a/malloc/Makefile
++++ b/malloc/Makefile
+@@ -27,6 +27,7 @@ headers := $(dist-headers) obstack.h mcheck.h
+ tests := \
+   mallocbug \
+   tst-aligned-alloc \
++  tst-aligned-alloc-random \
+   tst-alloc_buffer \
+   tst-calloc \
+   tst-free-errno \
+@@ -36,6 +37,7 @@ tests := \
+   tst-malloc-backtrace \
+   tst-malloc-check \
+   tst-malloc-fork-deadlock \
++  tst-malloc-random \
+   tst-malloc-stats-cancellation \
+   tst-malloc-tcache-leak \
+   tst-malloc-thread-exit \
+@@ -193,6 +195,7 @@ extra-libs-others = $(extra-libs)
+ 
+ # Helper objects for some tests.
+ extra-test-objs += \
++  tst-aligned_alloc-lib.so \
+   tst-interpose-aux-nothread.o \
+   tst-interpose-aux-thread.o \
+ # extra-test-objs
+@@ -202,6 +205,9 @@ test-extras = \
+   tst-interpose-aux-thread \
+ # test-extras
+ 
++modules-names = \
++  tst-aligned_alloc-lib
++
+ libmemusage-routines = memusage
+ libmemusage-inhibit-o = $(filter-out .os,$(object-suffixes))
+ 
+@@ -408,3 +414,9 @@ tst-mallocstate-malloc-check-ENV = LD_PRELOAD=$(objpfx)libc_malloc_debug.so
+ # libc_malloc_debug.so.
+ $(objpfx)tst-mallocstate: $(objpfx)libc_malloc_debug.so
+ $(objpfx)tst-mallocstate-malloc-check: $(objpfx)libc_malloc_debug.so
++
++$(objpfx)tst-aligned-alloc-random.out: $(objpfx)tst-aligned_alloc-lib.so
++$(objpfx)tst-malloc-random.out: $(objpfx)tst-aligned_alloc-lib.so
++
++tst-aligned-alloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
++tst-malloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
+diff --git a/malloc/tst-aligned-alloc-random.c b/malloc/tst-aligned-alloc-random.c
+new file mode 100644
+index 0000000000000000..f2825ce38f04e04e
+--- /dev/null
++++ b/malloc/tst-aligned-alloc-random.c
+@@ -0,0 +1,43 @@
++/* Test for randomized malloc that calls aligned_alloc
++   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 <stdlib.h>
++#include <support/check.h>
++#include <time.h>
++
++static int
++do_test (void)
++{
++  void *p1;
++  int i;
++
++  srandom (time (NULL));
++
++  for (i = 0; i < 1024; i++)
++  {
++    size_t size = random () & 0xffff;
++
++    p1 = malloc (size);
++    TEST_VERIFY (p1 != NULL);
++  }
++
++  return 0;
++}
++
++
++#include <support/test-driver.c>
+diff --git a/malloc/tst-aligned_alloc-lib.c b/malloc/tst-aligned_alloc-lib.c
+new file mode 100644
+index 0000000000000000..0205df5acf6297a5
+--- /dev/null
++++ b/malloc/tst-aligned_alloc-lib.c
+@@ -0,0 +1,72 @@
++/* Module used for improved aligned_alloc testing.
++   Copyright (C) 2024 Free Software Foundation, Inc.
++   Copyright The GNU Toolchain Authors.
++   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; see the file COPYING.LIB.  If
++   not, see <https://www.gnu.org/licenses/>.  */
++
++#include <array_length.h>
++#include <libc-symbols.h>
++#include <stdlib.h>
++
++extern void *__libc_malloc (size_t size);
++extern void *__libc_calloc (size_t n, size_t size);
++
++int aligned_alloc_count = 0;
++int libc_malloc_count = 0;
++int libc_calloc_count = 0;
++
++/* Get a random alignment value.  Biased towards the smaller values.  Must be
++   a power of 2. */
++static size_t get_random_alignment (void)
++{
++  size_t aligns[] = {
++    1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384
++  };
++
++  return aligns[random () % array_length (aligns)];
++}
++
++static void *get_random_alloc (size_t size)
++{
++  void *retval;
++  size_t align;
++
++  switch (random() % 3)
++  {
++    case 1:
++      align = get_random_alignment ();
++      retval = aligned_alloc (align, size);
++      aligned_alloc_count++;
++      break;
++    case 2:
++      retval = __libc_calloc (1, size);
++      libc_calloc_count++;
++      break;
++    default:
++      retval = __libc_malloc (size);
++      libc_malloc_count++;
++      break;
++  }
++
++  return retval;
++}
++
++
++void * __random_malloc (size_t size)
++{
++  return get_random_alloc (size);
++}
++strong_alias (__random_malloc, malloc)
+diff --git a/malloc/tst-malloc-random.c b/malloc/tst-malloc-random.c
+new file mode 100644
+index 0000000000000000..762b70c918cc6004
+--- /dev/null
++++ b/malloc/tst-malloc-random.c
+@@ -0,0 +1,20 @@
++/* Test malloc with random calls to aligned_alloc and calloc.
++
++   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 "tst-malloc.c"
+diff --git a/malloc/tst-malloc.c b/malloc/tst-malloc.c
+index a7491d3d00f9525f..f7a6e4654c374d01 100644
+--- a/malloc/tst-malloc.c
++++ b/malloc/tst-malloc.c
+@@ -18,7 +18,9 @@
+ #include <errno.h>
+ #include <malloc.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <libc-diag.h>
++#include <time.h>
+ 
+ static int errors = 0;
+ 
+@@ -35,6 +37,8 @@ do_test (void)
+   void *p, *q;
+   int save;
+ 
++  srandom (time (NULL));
++
+   errno = 0;
+ 
+   DIAG_PUSH_NEEDS_COMMENT;
diff --git a/SOURCES/glibc-upstream-2.39-69.patch b/SOURCES/glibc-upstream-2.39-69.patch
new file mode 100644
index 0000000..34018ce
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-69.patch
@@ -0,0 +1,107 @@
+commit 9de9cd17e73db0ba9af9ef11dc12d490fb59720c
+Author: sayan paul <saypaul@redhat.com>
+Date:   Wed May 29 15:31:04 2024 +0530
+
+    malloc: New test to check malloc alternate path using memory obstruction
+    
+    The test aims to ensure that malloc uses the alternate path to
+    allocate memory when sbrk() or brk() fails.To achieve this,
+    the test first creates an obstruction at current program break,
+    tests that obstruction with a failing sbrk(), then checks if malloc
+    is still returning a valid ptr thus inferring that malloc() used
+    mmap() instead of brk() or sbrk() to allocate the memory.
+    Reviewed-by: Arjun Shankar <arjun@redhat.com>
+    Reviewed-by: Zack Weinberg <zack@owlfolio.org>
+    
+    (cherry picked from commit 127fc56152347d73cb7c1c283e60e1cb1f15e9f9)
+
+diff --git a/malloc/Makefile b/malloc/Makefile
+index c1a03f3cb02c464d..cc14cf66c9661f99 100644
+--- a/malloc/Makefile
++++ b/malloc/Makefile
+@@ -34,6 +34,7 @@ tests := \
+   tst-interpose-nothread \
+   tst-interpose-thread \
+   tst-malloc \
++  tst-malloc-alternate-path \
+   tst-malloc-backtrace \
+   tst-malloc-check \
+   tst-malloc-fork-deadlock \
+diff --git a/malloc/tst-malloc-alternate-path.c b/malloc/tst-malloc-alternate-path.c
+new file mode 100644
+index 0000000000000000..43ae916815d6ff47
+--- /dev/null
++++ b/malloc/tst-malloc-alternate-path.c
+@@ -0,0 +1,72 @@
++/* Test that malloc uses mmap when sbrk or brk fails.
++   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/>.  */
++
++/* This test sets up an obstruction to ensure that brk/sbrk fails to
++   grow the heap, then verifies that malloc uses mmap for allocations
++   instead.  */
++
++#include <unistd.h>
++#include <sys/mman.h>
++#include <stdlib.h>
++#include <libc-pointer-arith.h>
++#include <support/check.h>
++#include <stddef.h>
++#include <stdalign.h>
++
++#define LARGE_SIZE (10 * (1 << 20)) // 10 MB
++static long page_size;
++
++static int
++do_test (void)
++{
++  /* Get current program break.  */
++  void *current_brk = sbrk (0);
++
++  page_size = sysconf (_SC_PAGESIZE);
++
++  /* Round up to the next page boundary.  */
++  void *next_page_boundary = PTR_ALIGN_UP (current_brk, page_size);
++
++  /* Place a mapping using mmap at the next page boundary.  */
++  void *obstruction_addr
++  = mmap (next_page_boundary, page_size, PROT_READ,
++    MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
++
++  /* Check if memory obstruction is set up correctly.  */
++  TEST_VERIFY_EXIT (obstruction_addr == next_page_boundary);
++
++  /* Try to extend the heap beyond the obstruction using sbrk */
++  int *ptr = sbrk (page_size);
++  TEST_VERIFY_EXIT (ptr == (void *) -1);
++
++  /* Attempt multiple small allocations using malloc.  */
++  for (size_t i = 0; i < page_size / alignof (max_align_t); i++)
++    {
++      TEST_VERIFY (malloc (alignof (max_align_t)));
++    }
++
++  /* Attempt to allocate a large block of memory using malloc.  */
++  TEST_VERIFY_EXIT (malloc (LARGE_SIZE) != NULL);
++
++  /* Check if malloc changed current program break.  */
++  TEST_VERIFY_EXIT (current_brk == sbrk (0));
++
++  return 0;
++}
++
++#include <support/test-driver.c>
diff --git a/SOURCES/glibc-upstream-2.39-7.patch b/SOURCES/glibc-upstream-2.39-7.patch
new file mode 100644
index 0000000..5932145
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-7.patch
@@ -0,0 +1,46 @@
+commit 71fcdba577884627c3ee4e43beb915da752efb1f
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Fri Mar 15 19:08:24 2024 +0100
+
+    linux: Use rseq area unconditionally in sched_getcpu (bug 31479)
+    
+    Originally, nptl/descr.h included <sys/rseq.h>, but we removed that
+    in commit 2c6b4b272e6b4d07303af25709051c3e96288f2d ("nptl:
+    Unconditionally use a 32-byte rseq area").  After that, it was
+    not ensured that the RSEQ_SIG macro was defined during sched_getcpu.c
+    compilation that provided a definition.  This commit always checks
+    the rseq area for CPU number information before using the other
+    approaches.
+    
+    This adds an unnecessary (but well-predictable) branch on
+    architectures which do not define RSEQ_SIG, but its cost is small
+    compared to the system call.  Most architectures that have vDSO
+    acceleration for getcpu also have rseq support.
+    
+    Fixes: 2c6b4b272e6b4d07303af25709051c3e96288f2d
+    Fixes: 1d350aa06091211863e41169729cee1bca39f72f
+    Reviewed-by: Arjun Shankar <arjun@redhat.com>
+    (cherry picked from commit 7a76f218677d149d8b7875b336722108239f7ee9)
+
+diff --git a/sysdeps/unix/sysv/linux/sched_getcpu.c b/sysdeps/unix/sysv/linux/sched_getcpu.c
+index dfb884568d154537..72a3360550b8667a 100644
+--- a/sysdeps/unix/sysv/linux/sched_getcpu.c
++++ b/sysdeps/unix/sysv/linux/sched_getcpu.c
+@@ -33,17 +33,9 @@ vsyscall_sched_getcpu (void)
+   return r == -1 ? r : cpu;
+ }
+ 
+-#ifdef RSEQ_SIG
+ int
+ sched_getcpu (void)
+ {
+   int cpu_id = THREAD_GETMEM_VOLATILE (THREAD_SELF, rseq_area.cpu_id);
+   return __glibc_likely (cpu_id >= 0) ? cpu_id : vsyscall_sched_getcpu ();
+ }
+-#else /* RSEQ_SIG */
+-int
+-sched_getcpu (void)
+-{
+-  return vsyscall_sched_getcpu ();
+-}
+-#endif /* RSEQ_SIG */
diff --git a/SOURCES/glibc-upstream-2.39-70.patch b/SOURCES/glibc-upstream-2.39-70.patch
new file mode 100644
index 0000000..78fef11
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-70.patch
@@ -0,0 +1,21 @@
+commit e1d0040a6d1b0714e1ad14abeb7b90bfbd86a8dc
+Author: Mike FABIAN <mfabian@redhat.com>
+Date:   Wed Feb 7 18:41:02 2024 +0100
+
+    localedata: ssy_ER: Fix syntax error
+    
+    (cherry picked from commit 07fd072caff50bca2a7e9f5737a5b38280d2ffda)
+
+diff --git a/localedata/locales/ssy_ER b/localedata/locales/ssy_ER
+index 05d94c9f10398c45..43a16e0f5452ad6a 100644
+--- a/localedata/locales/ssy_ER
++++ b/localedata/locales/ssy_ER
+@@ -106,7 +106,7 @@ country_ab3   "ERI"
+ country_num   232
+ country_car   "ER"
+ % country_isbn  unknown, Need ISO 2108
+-# https://en.wikipedia.org/wiki/Saho_language has "Saaho" as the endonym but CLDR has "Saho"
++% https://en.wikipedia.org/wiki/Saho_language has "Saaho" as the endonym but CLDR has "Saho"
+ lang_name     "Saho"
+ lang_ab       ""
+ lang_term     "ssy"
diff --git a/SOURCES/glibc-upstream-2.39-71.patch b/SOURCES/glibc-upstream-2.39-71.patch
new file mode 100644
index 0000000..6e73e1a
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-71.patch
@@ -0,0 +1,69 @@
+commit b7f5b0a7114e29577daf64e68970673b61e5fcba
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Mon Jun 10 13:02:06 2024 -0700
+
+    x86: Properly set MINIMUM_X86_ISA_LEVEL for i386 [BZ #31867]
+    
+    On i386, set the default minimum ISA level to 0, not 1 (baseline which
+    includes SSE2).  There are no changes in config.h nor in config.make on
+    x86-64.  This fixes BZ #31867.
+    
+    Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+    Tested-by: Ian Jordan <immoloism@gmail.com>
+    Reviewed-by: Sam James <sam@gentoo.org>
+    Reviewed-by: Florian Weimer <fweimer@redhat.com>
+    (cherry picked from commit 09bc68b0ac26331a0109f0578c9368e09176da18)
+
+diff --git a/sysdeps/x86/configure b/sysdeps/x86/configure
+index d28d9bcb296c6380..1e2325d0d7212d67 100644
+--- a/sysdeps/x86/configure
++++ b/sysdeps/x86/configure
+@@ -139,8 +139,10 @@ libc_cv_have_x86_isa_level=4
+ libc_cv_have_x86_isa_level=3
+ #elif MINIMUM_X86_ISA_LEVEL == 2
+ libc_cv_have_x86_isa_level=2
+-#else
++#elif defined __x86_64__
+ libc_cv_have_x86_isa_level=baseline
++#else
++libc_cv_have_x86_isa_level=MINIMUM_X86_ISA_LEVEL
+ #endif
+ EOF
+ 		 eval `${CC-cc} $CFLAGS $CPPFLAGS $ISAFLAG -I$srcdir -E conftest.c | grep libc_cv_have_x86_isa_level`
+@@ -148,8 +150,10 @@ EOF
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_x86_isa_level" >&5
+ printf "%s\n" "$libc_cv_have_x86_isa_level" >&6; }
+-else
++elif test $base_machine = x86_64; then
+   libc_cv_have_x86_isa_level=baseline
++else
++  libc_cv_have_x86_isa_level=0
+ fi
+ if test $libc_cv_have_x86_isa_level = baseline; then
+   printf "%s\n" "#define MINIMUM_X86_ISA_LEVEL 1" >>confdefs.h
+diff --git a/sysdeps/x86/configure.ac b/sysdeps/x86/configure.ac
+index 5b0acd03d2a30c9b..0b32fdfd4f1bb115 100644
+--- a/sysdeps/x86/configure.ac
++++ b/sysdeps/x86/configure.ac
+@@ -96,14 +96,18 @@ libc_cv_have_x86_isa_level=4
+ libc_cv_have_x86_isa_level=3
+ #elif MINIMUM_X86_ISA_LEVEL == 2
+ libc_cv_have_x86_isa_level=2
+-#else
++#elif defined __x86_64__
+ libc_cv_have_x86_isa_level=baseline
++#else
++libc_cv_have_x86_isa_level=MINIMUM_X86_ISA_LEVEL
+ #endif
+ EOF
+ 		 eval `${CC-cc} $CFLAGS $CPPFLAGS $ISAFLAG -I$srcdir -E conftest.c | grep libc_cv_have_x86_isa_level`
+ 		 rm -rf conftest*])
+-else
++elif test $base_machine = x86_64; then
+   libc_cv_have_x86_isa_level=baseline
++else
++  libc_cv_have_x86_isa_level=0
+ fi
+ if test $libc_cv_have_x86_isa_level = baseline; then
+   AC_DEFINE_UNQUOTED(MINIMUM_X86_ISA_LEVEL, 1)
diff --git a/SOURCES/glibc-upstream-2.39-72.patch b/SOURCES/glibc-upstream-2.39-72.patch
new file mode 100644
index 0000000..0f06f29
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-72.patch
@@ -0,0 +1,82 @@
+commit f05638731eeaae70c53b4fb30bfc58bc3c52a6d5
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Tue Jun 11 20:14:56 2024 -0700
+
+    x86: Properly set x86 minimum ISA level [BZ #31883]
+    
+    Properly set libc_cv_have_x86_isa_level in shell for MINIMUM_X86_ISA_LEVEL
+    defined as
+    
+    (__X86_ISA_V1 + __X86_ISA_V2 + __X86_ISA_V3 + __X86_ISA_V4)
+    
+    Also set __X86_ISA_V2 to 1 for i386 if __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
+    is defined.  There are no changes in config.h nor in config.make on x86-64.
+    On i386, -march=x86-64-v2 with GCC generates
+    
+     #define MINIMUM_X86_ISA_LEVEL 2
+    
+    in config.h and
+    
+    have-x86-isa-level = 2
+    
+    in config.make.  This fixes BZ #31883.
+    
+    Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+    Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
+    (cherry picked from commit 29807a271edca3e47195bda0c69ae45e245551a9)
+
+diff --git a/sysdeps/x86/configure b/sysdeps/x86/configure
+index 1e2325d0d7212d67..04c6ba3e6ca53fb6 100644
+--- a/sysdeps/x86/configure
++++ b/sysdeps/x86/configure
+@@ -141,8 +141,10 @@ libc_cv_have_x86_isa_level=3
+ libc_cv_have_x86_isa_level=2
+ #elif defined __x86_64__
+ libc_cv_have_x86_isa_level=baseline
++#elif MINIMUM_X86_ISA_LEVEL == 1
++libc_cv_have_x86_isa_level=1
+ #else
+-libc_cv_have_x86_isa_level=MINIMUM_X86_ISA_LEVEL
++libc_cv_have_x86_isa_level=0
+ #endif
+ EOF
+ 		 eval `${CC-cc} $CFLAGS $CPPFLAGS $ISAFLAG -I$srcdir -E conftest.c | grep libc_cv_have_x86_isa_level`
+diff --git a/sysdeps/x86/configure.ac b/sysdeps/x86/configure.ac
+index 0b32fdfd4f1bb115..8a259d3971488e4b 100644
+--- a/sysdeps/x86/configure.ac
++++ b/sysdeps/x86/configure.ac
+@@ -98,8 +98,10 @@ libc_cv_have_x86_isa_level=3
+ libc_cv_have_x86_isa_level=2
+ #elif defined __x86_64__
+ libc_cv_have_x86_isa_level=baseline
++#elif MINIMUM_X86_ISA_LEVEL == 1
++libc_cv_have_x86_isa_level=1
+ #else
+-libc_cv_have_x86_isa_level=MINIMUM_X86_ISA_LEVEL
++libc_cv_have_x86_isa_level=0
+ #endif
+ EOF
+ 		 eval `${CC-cc} $CFLAGS $CPPFLAGS $ISAFLAG -I$srcdir -E conftest.c | grep libc_cv_have_x86_isa_level`
+diff --git a/sysdeps/x86/isa-level.h b/sysdeps/x86/isa-level.h
+index 2c7f74212b9a27e5..03c1fe2bf54e0673 100644
+--- a/sysdeps/x86/isa-level.h
++++ b/sysdeps/x86/isa-level.h
+@@ -35,7 +35,17 @@
+ # define __X86_ISA_V1 0
+ #endif
+ 
+-#if __X86_ISA_V1 && defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16               \
++#ifdef __x86_64__
++# ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
++#  define __GCC_HAVE_SYNC_COMPARE_AND_SWAP
++# endif
++#else
++# ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
++#  define __GCC_HAVE_SYNC_COMPARE_AND_SWAP
++# endif
++#endif
++
++#if __X86_ISA_V1 && defined __GCC_HAVE_SYNC_COMPARE_AND_SWAP		      \
+     && defined HAVE_X86_LAHF_SAHF && defined __POPCNT__ && defined __SSE3__   \
+     && defined __SSSE3__ && defined __SSE4_1__ && defined __SSE4_2__
+ /* NB: ISAs in x86-64 ISA level v2 are used.  */
diff --git a/SOURCES/glibc-upstream-2.39-75.patch b/SOURCES/glibc-upstream-2.39-75.patch
new file mode 100644
index 0000000..49b5c42
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-75.patch
@@ -0,0 +1,28 @@
+commit 7f9f25f255ee2c00178779fbce502f4b94b848b9
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Tue Jun 18 10:56:34 2024 +0200
+
+    Linux: Include <dl-symbol-redir-ifunc.h> in dl-sysdep.c
+    
+    The _dl_sysdep_parse_arguments function contains initalization
+    of a large on-stack variable:
+    
+      dl_parse_auxv_t auxv_values = { 0, };
+    
+    This uses a non-inline version of memset on powerpc64le-linux-gnu,
+    so it must use the baseline memset.
+    
+    (cherry picked from commit f6ea5d1291cf3f264514d03872ebae84e0293b69)
+
+diff --git a/sysdeps/unix/sysv/linux/dl-sysdep.c b/sysdeps/unix/sysv/linux/dl-sysdep.c
+index e1b14e9eb34ff5cb..a8ec2d7c18cc423e 100644
+--- a/sysdeps/unix/sysv/linux/dl-sysdep.c
++++ b/sysdeps/unix/sysv/linux/dl-sysdep.c
+@@ -40,6 +40,7 @@
+ #include <sys/utsname.h>
+ #include <tls.h>
+ #include <unistd.h>
++#include <dl-symbol-redir-ifunc.h>
+ 
+ #include <dl-machine.h>
+ #include <dl-hwcap-check.h>
diff --git a/SOURCES/glibc-upstream-2.39-76.patch b/SOURCES/glibc-upstream-2.39-76.patch
new file mode 100644
index 0000000..6203daa
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-76.patch
@@ -0,0 +1,155 @@
+commit 74630b1bb717fb98f4692261f2be8d5c84851fa3
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Mon May 6 13:20:56 2024 -0300
+
+    posix: Fix pidfd_spawn/pidfd_spawnp leak if execve fails (BZ 31695)
+    
+    If the pidfd_spawn/pidfd_spawnp helper process succeeds, but evecve
+    fails for some reason (either with an invalid/non-existent, memory
+    allocation, etc.) the resulting pidfd is never closed, nor returned
+    to caller (so it can call close).
+    
+    Since the process creation failed, it should be up to posix_spawn to
+    also, close the file descriptor in this case (similar to what it
+    does to reap the process).
+    
+    This patch also changes the waitpid with waitid (P_PIDFD) for pidfd
+    case, to avoid a possible pid re-use.
+    
+    Checked on x86_64-linux-gnu.
+    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+    
+    (cherry picked from commit c90cfce849d010474e8cccf3e5bff49a2c8b141f)
+
+diff --git a/posix/tst-spawn2.c b/posix/tst-spawn2.c
+index bb507204a2b25271..b2bad3f1f7e026fd 100644
+--- a/posix/tst-spawn2.c
++++ b/posix/tst-spawn2.c
+@@ -26,6 +26,7 @@
+ #include <stdio.h>
+ 
+ #include <support/check.h>
++#include <support/descriptors.h>
+ #include <tst-spawn.h>
+ 
+ int
+@@ -38,38 +39,53 @@ do_test (void)
+   char * const args[] = { 0 };
+   PID_T_TYPE pid = -1;
+ 
+-  int ret = POSIX_SPAWN (&pid, program, 0, 0, args, environ);
+-  if (ret != ENOENT)
+-    {
+-      errno = ret;
+-      FAIL_EXIT1 ("posix_spawn: %m");
+-    }
+-
+-  /* POSIX states the value returned on pid variable in case of an error
+-     is not specified.  GLIBC will update the value iff the child
+-     execution is successful.  */
+-  if (pid != -1)
+-    FAIL_EXIT1 ("posix_spawn returned pid != -1 (%i)", (int) pid);
+-
+-  /* Check if no child is actually created.  */
+-  TEST_COMPARE (WAITID (P_ALL, 0, NULL, WEXITED), -1);
+-  TEST_COMPARE (errno, ECHILD);
+-
+-  /* Same as before, but with posix_spawnp.  */
+-  char *args2[] = { (char*) program, 0 };
+-
+-  ret = POSIX_SPAWNP (&pid, args2[0], 0, 0, args2, environ);
+-  if (ret != ENOENT)
+-    {
+-      errno = ret;
+-      FAIL_EXIT1 ("posix_spawnp: %m");
+-    }
+-
+-  if (pid != -1)
+-    FAIL_EXIT1 ("posix_spawnp returned pid != -1 (%i)", (int) pid);
+-
+-  TEST_COMPARE (WAITID (P_ALL, 0, NULL, WEXITED), -1);
+-  TEST_COMPARE (errno, ECHILD);
++  {
++    struct support_descriptors *descrs = support_descriptors_list ();
++
++    int ret = POSIX_SPAWN (&pid, program, 0, 0, args, environ);
++    if (ret != ENOENT)
++      {
++	errno = ret;
++	FAIL_EXIT1 ("posix_spawn: %m");
++      }
++
++    /* POSIX states the value returned on pid variable in case of an error
++       is not specified.  GLIBC will update the value iff the child
++       execution is successful.  */
++    if (pid != -1)
++      FAIL_EXIT1 ("posix_spawn returned pid != -1 (%i)", (int) pid);
++
++    /* Check if no child is actually created.  */
++    TEST_COMPARE (WAITID (P_ALL, 0, NULL, WEXITED), -1);
++    TEST_COMPARE (errno, ECHILD);
++
++    /* Also check if there is no leak descriptors.  */
++    support_descriptors_check (descrs);
++    support_descriptors_free (descrs);
++  }
++
++  {
++    /* Same as before, but with posix_spawnp.  */
++    char *args2[] = { (char*) program, 0 };
++
++    struct support_descriptors *descrs = support_descriptors_list ();
++
++    int ret = POSIX_SPAWNP (&pid, args2[0], 0, 0, args2, environ);
++    if (ret != ENOENT)
++      {
++	errno = ret;
++	FAIL_EXIT1 ("posix_spawnp: %m");
++      }
++
++    if (pid != -1)
++      FAIL_EXIT1 ("posix_spawnp returned pid != -1 (%i)", (int) pid);
++
++    TEST_COMPARE (WAITID (P_ALL, 0, NULL, WEXITED), -1);
++    TEST_COMPARE (errno, ECHILD);
++
++    support_descriptors_check (descrs);
++    support_descriptors_free (descrs);
++  }
+ 
+   return 0;
+ }
+diff --git a/sysdeps/unix/sysv/linux/spawni.c b/sysdeps/unix/sysv/linux/spawni.c
+index e8ed2babb9b13969..f57e92815eaf3c7b 100644
+--- a/sysdeps/unix/sysv/linux/spawni.c
++++ b/sysdeps/unix/sysv/linux/spawni.c
+@@ -449,13 +449,22 @@ __spawnix (int *pid, const char *file,
+ 	 caller to actually collect it.  */
+       ec = args.err;
+       if (ec > 0)
+-	/* There still an unlikely case where the child is cancelled after
+-	   setting args.err, due to a positive error value.  Also there is
+-	   possible pid reuse race (where the kernel allocated the same pid
+-	   to an unrelated process).  Unfortunately due synchronization
+-	   issues where the kernel might not have the process collected
+-	   the waitpid below can not use WNOHANG.  */
+-	__waitpid (new_pid, NULL, 0);
++	{
++	  /* There still an unlikely case where the child is cancelled after
++	     setting args.err, due to a positive error value.  Also there is
++	     possible pid reuse race (where the kernel allocated the same pid
++	     to an unrelated process).  Unfortunately due synchronization
++	     issues where the kernel might not have the process collected
++	     the waitpid below can not use WNOHANG.  */
++	  __waitid (use_pidfd ? P_PIDFD : P_PID,
++		    use_pidfd ? args.pidfd : new_pid,
++		    NULL,
++		    WEXITED);
++	  /* For pidfd we need to also close the file descriptor for the case
++	     where execve fails.  */
++	  if (use_pidfd)
++	    __close_nocancel_nostatus (args.pidfd);
++	}
+     }
+   else
+     ec = errno;
diff --git a/SOURCES/glibc-upstream-2.39-77.patch b/SOURCES/glibc-upstream-2.39-77.patch
new file mode 100644
index 0000000..f4c45e7
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-77.patch
@@ -0,0 +1,107 @@
+commit 6cb25aff8583421cf7a55ddd40abd7bd49176c60
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Thu Mar 14 14:59:35 2024 -0300
+
+    math: Fix i386 and m68k fmod/fmodf on static build (BZ 31488)
+    
+    The commit 16439f419b removed the static fmod/fmodf on i386 and m68k
+    with and empty w_fmod.c (required for the ABIs that uses the newly
+    implementation).  This patch fixes by adding the required symbols on
+    the arch-specific w_fmod{f}_compat.c implementation.
+    
+    To statically build fmod fails on some ABI (alpha, s390, sparc) because
+    it does not export the ldexpf128, this is also fixed by this patch.
+    
+    Checked on i686-linux-gnu and with a build for m68k-linux-gnu.
+    
+    Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
+    Tested-by: Aurelien Jarno <aurelien@aurel32.net>
+    (cherry picked from commit 0b716305dfb48c2d13ed4f7d06c082b90c1d226f)
+
+diff --git a/sysdeps/i386/fpu/w_fmod_compat.c b/sysdeps/i386/fpu/w_fmod_compat.c
+index 5ac9995ffd862a7f..528bfc2a135b5251 100644
+--- a/sysdeps/i386/fpu/w_fmod_compat.c
++++ b/sysdeps/i386/fpu/w_fmod_compat.c
+@@ -7,8 +7,9 @@
+ # define LIBM_SVID_COMPAT 1
+ # undef compat_symbol
+ # define compat_symbol(a, b, c, d)
+-#endif
+-#include <math/w_fmod_compat.c>
+-#ifdef SHARED
++# include <math/w_fmod_compat.c>
+ libm_alias_double (__fmod_compat, fmod)
++#else
++#include <math-type-macros-double.h>
++#include <w_fmod_template.c>
+ #endif
+diff --git a/sysdeps/i386/fpu/w_fmodf_compat.c b/sysdeps/i386/fpu/w_fmodf_compat.c
+index cc417e07d39b271d..5a61693e51f98f8f 100644
+--- a/sysdeps/i386/fpu/w_fmodf_compat.c
++++ b/sysdeps/i386/fpu/w_fmodf_compat.c
+@@ -7,8 +7,9 @@
+ # define LIBM_SVID_COMPAT 1
+ # undef compat_symbol
+ # define compat_symbol(a, b, c, d)
+-#endif
+-#include <math/w_fmodf_compat.c>
+-#ifdef SHARED
++# include <math/w_fmodf_compat.c>
+ libm_alias_float (__fmod_compat, fmod)
++#else
++#include <math-type-macros-float.h>
++#include <w_fmod_template.c>
+ #endif
+diff --git a/sysdeps/ieee754/ldbl-opt/s_ldexpl.c b/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
+index 1afbe7d8adbb00ae..932cc4341c53dec3 100644
+--- a/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
++++ b/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
+@@ -17,13 +17,13 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#if IS_IN (libc)
++#if IS_IN (libc) && defined SHARED
+ # define declare_mgen_alias(f,t)
+ #endif
+ #include <math-type-macros-ldouble.h>
+ #include <s_ldexp_template.c>
+ 
+-#if IS_IN (libc)
++#if IS_IN (libc) && defined SHARED
+ long_double_symbol (libc, __ldexpl, ldexpl);
+ long_double_symbol (libc, __wrap_scalbnl, scalbnl);
+ #endif
+diff --git a/sysdeps/m68k/m680x0/fpu/w_fmod_compat.c b/sysdeps/m68k/m680x0/fpu/w_fmod_compat.c
+index 527d4fbed201d4b4..57f38091e6724848 100644
+--- a/sysdeps/m68k/m680x0/fpu/w_fmod_compat.c
++++ b/sysdeps/m68k/m680x0/fpu/w_fmod_compat.c
+@@ -7,8 +7,9 @@
+ # define LIBM_SVID_COMPAT 1
+ # undef compat_symbol
+ # define compat_symbol(a, b, c, d)
+-#endif
+ #include <math/w_fmod_compat.c>
+-#ifdef SHARED
+ libm_alias_double (__fmod_compat, fmod)
++#else
++#include <math-type-macros-double.h>
++#include <w_fmod_template.c>
+ #endif
+diff --git a/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c b/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c
+index 5043586b910e765f..88db07f443b0c339 100644
+--- a/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c
++++ b/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c
+@@ -7,8 +7,9 @@
+ # define LIBM_SVID_COMPAT 1
+ # undef compat_symbol
+ # define compat_symbol(a, b, c, d)
+-#endif
+-#include <math/w_fmodf_compat.c>
+-#ifdef SHARED
++# include <math/w_fmodf_compat.c>
+ libm_alias_float (__fmod_compat, fmod)
++#else
++#include <math-type-macros-float.h>
++#include <w_fmod_template.c>
+ #endif
diff --git a/SOURCES/glibc-upstream-2.39-78.patch b/SOURCES/glibc-upstream-2.39-78.patch
new file mode 100644
index 0000000..2f3022c
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-78.patch
@@ -0,0 +1,46 @@
+commit 3950cbd7a18b48c0f272ca41fa60cc135ff3175a
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Wed Mar 20 11:31:54 2024 -0300
+
+    math: Fix i386 and m68k exp10 on static build (BZ 31775)
+    
+    The commit 08ddd26814 removed the static exp10 on i386 and m68k with an
+    empty w_exp10.c (required for the ABIs that uses the newly
+    implementation).  This patch fixes by adding the required symbols on the
+    arch-specific w_exp{f}_compat.c implementation.
+    
+    Checked on i686-linux-gnu and with a build for m68k-linux-gnu.
+    
+    Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
+    (cherry picked from commit 1f09aae36aa185b8b1100dfa6b776442279bf580)
+
+diff --git a/sysdeps/i386/fpu/w_exp10_compat.c b/sysdeps/i386/fpu/w_exp10_compat.c
+index b53455386ed8e189..49a0e03385e4bfe3 100644
+--- a/sysdeps/i386/fpu/w_exp10_compat.c
++++ b/sysdeps/i386/fpu/w_exp10_compat.c
+@@ -1,3 +1,8 @@
+ /* i386 provides an optimized __ieee754_exp10.  */
+-#define NO_COMPAT_NEEDED 1
+-#include <math/w_exp10_compat.c>
++#ifdef SHARED
++# define NO_COMPAT_NEEDED 1
++# include <math/w_exp10_compat.c>
++#else
++# include <math-type-macros-double.h>
++# include <w_exp10_template.c>
++#endif
+diff --git a/sysdeps/m68k/m680x0/fpu/w_exp10_compat.c b/sysdeps/m68k/m680x0/fpu/w_exp10_compat.c
+index 0d3e7186261041e3..350f2e4b4d37e569 100644
+--- a/sysdeps/m68k/m680x0/fpu/w_exp10_compat.c
++++ b/sysdeps/m68k/m680x0/fpu/w_exp10_compat.c
+@@ -1,3 +1,8 @@
+ /* m68k provides an optimized __ieee754_exp10.  */
+-#define NO_COMPAT_NEEDED 1
+-#include <math/w_exp10_compat.c>
++#ifdef SHARED
++# define NO_COMPAT_NEEDED 1
++# include <math/w_exp10_compat.c>
++#else
++# include <math-type-macros-double.h>
++# include <w_exp10_template.c>
++#endif
diff --git a/SOURCES/glibc-upstream-2.39-79.patch b/SOURCES/glibc-upstream-2.39-79.patch
new file mode 100644
index 0000000..fe3ef5c
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-79.patch
@@ -0,0 +1,30 @@
+commit d473c9bb3b6b0448985cd195c558de2a49fd2dc2
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Tue May 21 13:52:54 2024 -0300
+
+    math: Fix isnanf128 static build (BZ 31774)
+    
+    Some static implementation of float128 routines might call __isnanf128,
+    which is not provided by the static object.
+    
+    Checked on x86_64-linux-gnu.
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    
+    (cherry picked from commit 5d4999e519ec77e75bef920e2540e8605015680a)
+
+diff --git a/sysdeps/ieee754/float128/s_isnanf128.c b/sysdeps/ieee754/float128/s_isnanf128.c
+index 59f71533cedc752e..b73a4e80d707eeb8 100644
+--- a/sysdeps/ieee754/float128/s_isnanf128.c
++++ b/sysdeps/ieee754/float128/s_isnanf128.c
+@@ -11,7 +11,11 @@
+ #include "../ldbl-128/s_isnanl.c"
+ #if !IS_IN (libm)
+ #include <float128-abi.h>
++#ifdef SHARED
+ hidden_ver (__isnanf128_impl, __isnanf128)
++#else
++strong_alias (__isnanf128_impl, __isnanf128)
++#endif
+ _weak_alias (__isnanf128_impl, isnanl)
+ versioned_symbol (libc, __isnanf128_impl, __isnanf128, GLIBC_2_34);
+ #if (SHLIB_COMPAT (libc, FLOAT128_VERSION_M, GLIBC_2_34))
diff --git a/SOURCES/glibc-upstream-2.39-8.patch b/SOURCES/glibc-upstream-2.39-8.patch
new file mode 100644
index 0000000..653d5a1
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-8.patch
@@ -0,0 +1,284 @@
+commit ee7f4c54e19738c2c27d3846e1e9b3595c89221f
+Author: Manjunath Matti <mmatti@linux.ibm.com>
+Date:   Tue Mar 19 15:29:48 2024 -0500
+
+    powerpc: Add HWCAP3/HWCAP4 data to TCB for Power Architecture.
+    
+    This patch adds a new feature for powerpc.  In order to get faster
+    access to the HWCAP3/HWCAP4 masks, similar to HWCAP/HWCAP2 (i.e. for
+    implementing __builtin_cpu_supports() in GCC) without the overhead of
+    reading them from the auxiliary vector, we now reserve space for them
+    in the TCB.
+    
+    Suggested-by: Peter Bergner <bergner@linux.ibm.com>
+    Reviewed-by: Peter Bergner <bergner@linux.ibm.com>
+    (cherry picked from commit 3ab9b88e2ac91062b6d493fe32bd101a55006c6a)
+
+diff --git a/elf/dl-diagnostics.c b/elf/dl-diagnostics.c
+index 7345ebc4e586883f..aaf67b87e81b04c8 100644
+--- a/elf/dl-diagnostics.c
++++ b/elf/dl-diagnostics.c
+@@ -235,6 +235,8 @@ _dl_print_diagnostics (char **environ)
+   _dl_diagnostics_print_labeled_value ("dl_hwcap", GLRO (dl_hwcap));
+   _dl_diagnostics_print_labeled_value ("dl_hwcap_important", HWCAP_IMPORTANT);
+   _dl_diagnostics_print_labeled_value ("dl_hwcap2", GLRO (dl_hwcap2));
++  _dl_diagnostics_print_labeled_value ("dl_hwcap3", GLRO (dl_hwcap3));
++  _dl_diagnostics_print_labeled_value ("dl_hwcap4", GLRO (dl_hwcap4));
+   _dl_diagnostics_print_labeled_string
+     ("dl_hwcaps_subdirs", _dl_hwcaps_subdirs);
+   _dl_diagnostics_print_labeled_value
+diff --git a/elf/dl-support.c b/elf/dl-support.c
+index 2f502c8b0d27b784..451932dd03e971b8 100644
+--- a/elf/dl-support.c
++++ b/elf/dl-support.c
+@@ -158,6 +158,8 @@ const ElfW(Phdr) *_dl_phdr;
+ size_t _dl_phnum;
+ uint64_t _dl_hwcap;
+ uint64_t _dl_hwcap2;
++uint64_t _dl_hwcap3;
++uint64_t _dl_hwcap4;
+ 
+ enum dso_sort_algorithm _dl_dso_sort_algo;
+ 
+diff --git a/elf/elf.h b/elf/elf.h
+index 455731663c6ed339..1c394c64cd5c66ed 100644
+--- a/elf/elf.h
++++ b/elf/elf.h
+@@ -1234,6 +1234,10 @@ typedef struct
+ #define AT_RSEQ_FEATURE_SIZE	27	/* rseq supported feature size.  */
+ #define AT_RSEQ_ALIGN	28		/* rseq allocation alignment.  */
+ 
++/* More machine-dependent hints about processor capabilities.  */
++#define AT_HWCAP3	29		/* extension of AT_HWCAP.  */
++#define AT_HWCAP4	30		/* extension of AT_HWCAP.  */
++
+ #define AT_EXECFN	31		/* Filename of executable.  */
+ 
+ /* Pointer to the global system page used for system calls and other
+diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
+index 117c901ccc5c5f0b..50f58a60e3f02330 100644
+--- a/sysdeps/generic/ldsodefs.h
++++ b/sysdeps/generic/ldsodefs.h
+@@ -646,6 +646,8 @@ struct rtld_global_ro
+   /* Mask for more hardware capabilities that are available on some
+      platforms.  */
+   EXTERN uint64_t _dl_hwcap2;
++  EXTERN uint64_t _dl_hwcap3;
++  EXTERN uint64_t _dl_hwcap4;
+ 
+   EXTERN enum dso_sort_algorithm _dl_dso_sort_algo;
+ 
+diff --git a/sysdeps/powerpc/dl-procinfo.c b/sysdeps/powerpc/dl-procinfo.c
+index a76bb6e5b0895e3f..8cf00aa7e359bb6a 100644
+--- a/sysdeps/powerpc/dl-procinfo.c
++++ b/sysdeps/powerpc/dl-procinfo.c
+@@ -38,6 +38,10 @@
+        needed.
+   */
+ 
++/* The total number of available bits (including those prior to
++   _DL_HWCAP_FIRST).  Some of these bits might not be used.  */
++#define _DL_HWCAP_COUNT         128
++
+ #ifndef PROCINFO_CLASS
+ # define PROCINFO_CLASS
+ #endif
+@@ -61,7 +65,7 @@ PROCINFO_CLASS struct cpu_features _dl_powerpc_cpu_features
+ #if !defined PROCINFO_DECL && defined SHARED
+   ._dl_powerpc_cap_flags
+ #else
+-PROCINFO_CLASS const char _dl_powerpc_cap_flags[64][15]
++PROCINFO_CLASS const char _dl_powerpc_cap_flags[_DL_HWCAP_COUNT][15]
+ #endif
+ #ifndef PROCINFO_DECL
+ = {
+diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
+index 68f424109501aaef..f8cb343877386402 100644
+--- a/sysdeps/powerpc/dl-procinfo.h
++++ b/sysdeps/powerpc/dl-procinfo.h
+@@ -22,16 +22,17 @@
+ #include <ldsodefs.h>
+ #include <sysdep.h>	/* This defines the PPC_FEATURE[2]_* macros.  */
+ 
+-/* The total number of available bits (including those prior to
+-   _DL_HWCAP_FIRST).  Some of these bits might not be used.  */
+-#define _DL_HWCAP_COUNT		64
++/* Feature masks are all 32-bits in size.  */
++#define _DL_HWCAP_SIZE		32
+ 
+-/* Features started at bit 31 and decremented as new features were added.  */
+-#define _DL_HWCAP_LAST		31
++/* AT_HWCAP2 feature strings follow the AT_HWCAP feature strings.  */
++#define _DL_HWCAP2_OFFSET	_DL_HWCAP_SIZE
+ 
+-/* AT_HWCAP2 features started at bit 31 and decremented as new features were
+-   added.  HWCAP2 feature bits start at bit 0.  */
+-#define _DL_HWCAP2_LAST		31
++/* AT_HWCAP3 feature strings follow the AT_HWCAP2 feature strings.  */
++#define _DL_HWCAP3_OFFSET	(_DL_HWCAP2_OFFSET + _DL_HWCAP_SIZE)
++
++/* AT_HWCAP4 feature strings follow the AT_HWCAP3 feature strings.  */
++#define _DL_HWCAP4_OFFSET	(_DL_HWCAP3_OFFSET + _DL_HWCAP_SIZE)
+ 
+ /* These bits influence library search.  */
+ #define HWCAP_IMPORTANT		(PPC_FEATURE_HAS_ALTIVEC \
+@@ -187,21 +188,42 @@ _dl_procinfo (unsigned int type, unsigned long int word)
+     case AT_HWCAP:
+       _dl_printf ("AT_HWCAP:            ");
+ 
+-      for (int i = 0; i <= _DL_HWCAP_LAST; ++i)
++      for (int i = 0; i < _DL_HWCAP_SIZE; ++i)
+        if (word & (1 << i))
+          _dl_printf (" %s", _dl_hwcap_string (i));
+       break;
+     case AT_HWCAP2:
+       {
+-       unsigned int offset = _DL_HWCAP_LAST + 1;
+ 
+        _dl_printf ("AT_HWCAP2:           ");
+ 
+-        /* We have to go through them all because the kernel added the
+-          AT_HWCAP2 features starting with the high bits.  */
+-       for (int i = 0; i <= _DL_HWCAP2_LAST; ++i)
+-         if (word & (1 << i))
+-           _dl_printf (" %s", _dl_hwcap_string (offset + i));
++       /* We have to go through them all because the kernel added the
++	  AT_HWCAP2 features starting with the high bits.  */
++       for (int i = 0; i < _DL_HWCAP_SIZE; ++i)
++	 if (word & (1 << i))
++	   _dl_printf (" %s", _dl_hwcap_string (_DL_HWCAP2_OFFSET + i));
++       break;
++      }
++    case AT_HWCAP3:
++      {
++       _dl_printf ("AT_HWCAP3:           ");
++
++       /* We have to go through them all because the kernel added the
++	  AT_HWCAP3 features starting with the high bits.  */
++       for (int i = 0; i < _DL_HWCAP_SIZE; ++i)
++	 if (word & (1 << i))
++	   _dl_printf (" %s", _dl_hwcap_string (_DL_HWCAP3_OFFSET + i));
++       break;
++      }
++    case AT_HWCAP4:
++      {
++       _dl_printf ("AT_HWCAP4:           ");
++
++       /* We have to go through them all because the kernel added the
++	  AT_HWCAP4 features starting with the high bits.  */
++       for (int i = 0; i <= _DL_HWCAP_SIZE; ++i)
++	 if (word & (1 << i))
++	   _dl_printf (" %s", _dl_hwcap_string (_DL_HWCAP4_OFFSET + i));
+        break;
+       }
+     case AT_L1I_CACHEGEOMETRY:
+diff --git a/sysdeps/powerpc/hwcapinfo.c b/sysdeps/powerpc/hwcapinfo.c
+index 76344f285a903858..f6fede15a7dfbf6c 100644
+--- a/sysdeps/powerpc/hwcapinfo.c
++++ b/sysdeps/powerpc/hwcapinfo.c
+@@ -31,7 +31,7 @@ void
+ __tcb_parse_hwcap_and_convert_at_platform (void)
+ {
+ 
+-  uint64_t h1, h2;
++  uint64_t h1, h2, h3, h4;
+ 
+   /* Read AT_PLATFORM string from auxv and convert it to a number.  */
+   __tcb.at_platform = _dl_string_platform (GLRO (dl_platform));
+@@ -39,6 +39,8 @@ __tcb_parse_hwcap_and_convert_at_platform (void)
+   /* Read HWCAP and HWCAP2 from auxv.  */
+   h1 = GLRO (dl_hwcap);
+   h2 = GLRO (dl_hwcap2);
++  h3 = GLRO (dl_hwcap3);
++  h4 = GLRO (dl_hwcap4);
+ 
+   /* hwcap contains only the latest supported ISA, the code checks which is
+      and fills the previous supported ones.  */
+@@ -64,13 +66,16 @@ __tcb_parse_hwcap_and_convert_at_platform (void)
+   else if (h1 & PPC_FEATURE_POWER5)
+     h1 |= PPC_FEATURE_POWER4;
+ 
+-  uint64_t array_hwcaps[] = { h1, h2 };
++  uint64_t array_hwcaps[] = { h1, h2, h3, h4 };
+   init_cpu_features (&GLRO(dl_powerpc_cpu_features), array_hwcaps);
+ 
+   /* Consolidate both HWCAP and HWCAP2 into a single doubleword so that
+      we can read both in a single load later.  */
+   __tcb.hwcap = (h1 << 32) | (h2 & 0xffffffff);
+-  __tcb.hwcap_extn = 0x0;
++
++  /* Consolidate both HWCAP3 and HWCAP4 into a single doubleword so that
++     we can read both in a single load later.  */
++  __tcb.hwcap_extn = (h3 << 32) | (h4 & 0xffffffff);
+ 
+ }
+ #if IS_IN (rtld)
+diff --git a/sysdeps/unix/sysv/linux/dl-parse_auxv.h b/sysdeps/unix/sysv/linux/dl-parse_auxv.h
+index e3d758b163c619df..ea2a58ecb1668774 100644
+--- a/sysdeps/unix/sysv/linux/dl-parse_auxv.h
++++ b/sysdeps/unix/sysv/linux/dl-parse_auxv.h
+@@ -47,6 +47,8 @@ void _dl_parse_auxv (ElfW(auxv_t) *av, dl_parse_auxv_t auxv_values)
+   GLRO(dl_platform) = (void *) auxv_values[AT_PLATFORM];
+   GLRO(dl_hwcap) = auxv_values[AT_HWCAP];
+   GLRO(dl_hwcap2) = auxv_values[AT_HWCAP2];
++  GLRO(dl_hwcap3) = auxv_values[AT_HWCAP3];
++  GLRO(dl_hwcap4) = auxv_values[AT_HWCAP4];
+   GLRO(dl_clktck) = auxv_values[AT_CLKTCK];
+   GLRO(dl_fpu_control) = auxv_values[AT_FPUCW];
+   _dl_random = (void *) auxv_values[AT_RANDOM];
+diff --git a/sysdeps/unix/sysv/linux/dl-sysdep.c b/sysdeps/unix/sysv/linux/dl-sysdep.c
+index ad3692d73839d7a3..e1b14e9eb34ff5cb 100644
+--- a/sysdeps/unix/sysv/linux/dl-sysdep.c
++++ b/sysdeps/unix/sysv/linux/dl-sysdep.c
+@@ -197,6 +197,8 @@ _dl_show_auxv (void)
+ 	  [AT_SYSINFO_EHDR - 2] =	{ "SYSINFO_EHDR:      0x", hex },
+ 	  [AT_RANDOM - 2] =		{ "RANDOM:            0x", hex },
+ 	  [AT_HWCAP2 - 2] =		{ "HWCAP2:            0x", hex },
++	  [AT_HWCAP3 - 2] =		{ "HWCAP3:            0x", hex },
++	  [AT_HWCAP4 - 2] =		{ "HWCAP4:            0x", hex },
+ 	  [AT_MINSIGSTKSZ - 2] =	{ "MINSIGSTKSZ:       ", dec },
+ 	  [AT_L1I_CACHESIZE - 2] =	{ "L1I_CACHESIZE:     ", dec },
+ 	  [AT_L1I_CACHEGEOMETRY - 2] =	{ "L1I_CACHEGEOMETRY: 0x", hex },
+diff --git a/sysdeps/unix/sysv/linux/powerpc/cpu-features.c b/sysdeps/unix/sysv/linux/powerpc/cpu-features.c
+index 8e8a5ec2eab7e8c6..a947d62db63965b1 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/cpu-features.c
++++ b/sysdeps/unix/sysv/linux/powerpc/cpu-features.c
+@@ -94,6 +94,8 @@ init_cpu_features (struct cpu_features *cpu_features, uint64_t hwcaps[])
+      which are set by __tcb_parse_hwcap_and_convert_at_platform.  */
+   cpu_features->hwcap = hwcaps[0];
+   cpu_features->hwcap2 = hwcaps[1];
++  cpu_features->hwcap3 = hwcaps[2];
++  cpu_features->hwcap4 = hwcaps[3];
+   /* Default is to use aligned memory access on optimized function unless
+      tunables is enable, since for this case user can explicit disable
+      unaligned optimizations.  */
+diff --git a/sysdeps/unix/sysv/linux/powerpc/cpu-features.h b/sysdeps/unix/sysv/linux/powerpc/cpu-features.h
+index 1294f0b601ebf54f..e9eb6a13c8ab11d7 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/cpu-features.h
++++ b/sysdeps/unix/sysv/linux/powerpc/cpu-features.h
+@@ -26,6 +26,8 @@ struct cpu_features
+   bool use_cached_memopt;
+   unsigned long int hwcap;
+   unsigned long int hwcap2;
++  unsigned long int hwcap3;
++  unsigned long int hwcap4;
+ };
+ 
+ static const char hwcap_names[] = {
+diff --git a/sysdeps/unix/sysv/linux/powerpc/libc-start.c b/sysdeps/unix/sysv/linux/powerpc/libc-start.c
+index a4705daf1cdea4de..6a00cd88cd64b992 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/libc-start.c
++++ b/sysdeps/unix/sysv/linux/powerpc/libc-start.c
+@@ -87,6 +87,12 @@ __libc_start_main_impl (int argc, char **argv,
+       case AT_HWCAP2:
+ 	_dl_hwcap2 = (unsigned long int) av->a_un.a_val;
+ 	break;
++      case AT_HWCAP3:
++	_dl_hwcap3 = (unsigned long int) av->a_un.a_val;
++	break;
++      case AT_HWCAP4:
++	_dl_hwcap4 = (unsigned long int) av->a_un.a_val;
++	break;
+       case AT_PLATFORM:
+ 	_dl_platform = (void *) av->a_un.a_val;
+ 	break;
diff --git a/SOURCES/glibc-upstream-2.39-80.patch b/SOURCES/glibc-upstream-2.39-80.patch
new file mode 100644
index 0000000..793f597
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-80.patch
@@ -0,0 +1,66 @@
+commit d2cbfcf1d9a4b539007fe04d33e0bdb82d02a2f2
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Wed May 22 15:07:12 2024 -0300
+
+    math: Provide missing math symbols on libc.a (BZ 31781)
+    
+    The libc.a for alpha, s390, and sparcv9 does not provide
+    copysignf64x, copysignf128, frexpf64x, frexpf128, modff64x, and
+    modff128.
+    
+    Checked with a static build for the affected ABIs.
+    Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
+    
+    (cherry picked from commit eaa8113bf0eb599025e3efdbe1bb214ee8dc645a)
+
+diff --git a/sysdeps/ieee754/ldbl-64-128/s_copysignl.c b/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
+index 11b42d04ba61b446..80137847d32c7c08 100644
+--- a/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
++++ b/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
+@@ -1,10 +1,10 @@
+ #include <math_ldbl_opt.h>
+ #include <libm-alias-ldouble.h>
+-#if IS_IN (libc)
++#if IS_IN (libc) && defined SHARED
+ # undef libm_alias_ldouble
+ # define libm_alias_ldouble(from, to)
+ #endif
+ #include <sysdeps/ieee754/ldbl-128/s_copysignl.c>
+-#if IS_IN (libc)
++#if IS_IN (libc) && defined SHARED
+ long_double_symbol (libc, __copysignl, copysignl);
+ #endif
+diff --git a/sysdeps/ieee754/ldbl-64-128/s_frexpl.c b/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
+index 73ac41e40c214394..f5f7d349f78ab64e 100644
+--- a/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
++++ b/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
+@@ -1,10 +1,10 @@
+ #include <math_ldbl_opt.h>
+ #include <libm-alias-ldouble.h>
+-#if IS_IN (libc)
++#if IS_IN (libc) && defined SHARED
+ # undef libm_alias_ldouble
+ # define libm_alias_ldouble(from, to)
+ #endif
+ #include <sysdeps/ieee754/ldbl-128/s_frexpl.c>
+-#if IS_IN (libc)
++#if IS_IN (libc) && defined SHARED
+ long_double_symbol (libc, __frexpl, frexpl);
+ #endif
+diff --git a/sysdeps/ieee754/ldbl-64-128/s_modfl.c b/sysdeps/ieee754/ldbl-64-128/s_modfl.c
+index 7d7aeae111fc6e7a..ba3d31334a0fefa0 100644
+--- a/sysdeps/ieee754/ldbl-64-128/s_modfl.c
++++ b/sysdeps/ieee754/ldbl-64-128/s_modfl.c
+@@ -1,10 +1,10 @@
+ #include <math_ldbl_opt.h>
+ #include <libm-alias-ldouble.h>
+-#if IS_IN (libc)
++#if IS_IN (libc) && defined SHARED
+ # undef libm_alias_ldouble
+ # define libm_alias_ldouble(from, to)
+ #endif
+ #include <sysdeps/ieee754/ldbl-128/s_modfl.c>
+-#if IS_IN (libc)
++#if IS_IN (libc) && defined SHARED
+ long_double_symbol (libc, __modfl, modfl);
+ #endif
diff --git a/SOURCES/glibc-upstream-2.39-81.patch b/SOURCES/glibc-upstream-2.39-81.patch
new file mode 100644
index 0000000..9f070f2
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-81.patch
@@ -0,0 +1,32 @@
+commit a03631124602f2dcef40d46660b96d2e51c44bfd
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Fri Apr 5 10:27:29 2024 -0300
+
+    stdlib: fix arc4random fallback to /dev/urandom (BZ 31612)
+    
+    The __getrandom_nocancel used by __arc4random_buf uses
+    INLINE_SYSCALL_CALL (which returns -1/errno) and the loop checks for
+    the return value instead of errno to fallback to /dev/urandom.
+    
+    The malloc code now uses __getrandom_nocancel_nostatus, which uses
+    INTERNAL_SYSCALL_CALL, so there is no need to use the variant that does
+    not set errno (BZ#29624).
+    
+    Checked on x86_64-linux-gnu.
+    
+    Reviewed-by: Xi Ruoyao <xry111@xry111.site>
+    (cherry picked from commit 184b9e530e6326e668709826903b6d30dc6cac3f)
+
+diff --git a/stdlib/arc4random.c b/stdlib/arc4random.c
+index 3ae8fc130234b04d..7818cb9cf66e0f3b 100644
+--- a/stdlib/arc4random.c
++++ b/stdlib/arc4random.c
+@@ -51,7 +51,7 @@ __arc4random_buf (void *p, size_t n)
+ 	  n -= l;
+ 	  continue; /* Interrupted by a signal; keep going.  */
+ 	}
+-      else if (l == -ENOSYS)
++      else if (l < 0 && errno == ENOSYS)
+ 	break; /* No syscall, so fallback to /dev/urandom.  */
+       arc4random_getrandom_failure ();
+     }
diff --git a/SOURCES/glibc-upstream-2.39-82.patch b/SOURCES/glibc-upstream-2.39-82.patch
new file mode 100644
index 0000000..26e6b1a
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-82.patch
@@ -0,0 +1,53 @@
+commit 5c46e6b66636be0010e9a732d5ba1e65ebd54687
+Author: Stefan Liebler <stli@linux.ibm.com>
+Date:   Thu Jul 11 11:28:53 2024 +0200
+
+    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)
+
+diff --git a/sysdeps/s390/wcsncmp-vx.S b/sysdeps/s390/wcsncmp-vx.S
+index bf6dfa6bc2b904b5..8b081567a2a5732c 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
diff --git a/SOURCES/glibc-upstream-2.39-83.patch b/SOURCES/glibc-upstream-2.39-83.patch
new file mode 100644
index 0000000..6b531df
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-83.patch
@@ -0,0 +1,153 @@
+commit 1062ebbd1911ec9efe909765ca3ee3809ec3fd67
+Author: Michael Jeanson <mjeanson@efficios.com>
+Date:   Wed Jul 3 12:35:34 2024 -0400
+
+    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)
+
+diff --git a/elf/Makefile b/elf/Makefile
+index a50a988e7362cf3b..0049ffa13c8d3e51 100644
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -73,6 +73,7 @@ dl-routines = \
+   dl-origin \
+   dl-printf \
+   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 0000000000000000..b4bba06a99b0a486
+--- /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 092c274f369dd046..7eb35fb13384f6ac 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
+   }
+ 
diff --git a/SOURCES/glibc-upstream-2.39-84.patch b/SOURCES/glibc-upstream-2.39-84.patch
new file mode 100644
index 0000000..1e5251c
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-84.patch
@@ -0,0 +1,43 @@
+commit 143a7a06235cf091b63f58a739c8367ffe54a722
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Thu Jul 4 10:09:07 2024 -0300
+
+    elf: Make dl-rseq-symbols Linux only
+    
+    And avoid a Hurd build failures.
+    
+    Checked on x86_64-linux-gnu.
+    
+    (cherry picked from commit 9fc639f654dc004736836613be703e6bed0c36a8)
+
+diff --git a/elf/Makefile b/elf/Makefile
+index 0049ffa13c8d3e51..a50a988e7362cf3b 100644
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -73,7 +73,6 @@ dl-routines = \
+   dl-origin \
+   dl-printf \
+   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 415aa1f14dd20ba6..6ab9b901234dc72e 100644
+--- a/sysdeps/unix/sysv/linux/Makefile
++++ b/sysdeps/unix/sysv/linux/Makefile
+@@ -615,6 +615,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
diff --git a/SOURCES/glibc-upstream-2.39-85.patch b/SOURCES/glibc-upstream-2.39-85.patch
new file mode 100644
index 0000000..eb2394a
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-85.patch
@@ -0,0 +1,137 @@
+commit e8f521709731ce3ae8d6f1eca30135d5c0606f02
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Mon Jul 8 21:14:00 2024 +0200
+
+    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)
+
+diff --git a/manual/threads.texi b/manual/threads.texi
+index e5544ff3da8733f4..25e99c9606dcad77 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 7eb35fb13384f6ac..7803e19fd16ad803 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 48eebc1e168fad1e..7ea935b4adab8c20 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 2c90409ba02182e7..08a95331306b2a12 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 */
diff --git a/SOURCES/glibc-upstream-2.39-86.patch b/SOURCES/glibc-upstream-2.39-86.patch
new file mode 100644
index 0000000..b15d1ac
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-86.patch
@@ -0,0 +1,58 @@
+commit f6a75fddf4e71545c63dfcad99cc2df9bac38093
+Author: John David Anglin <danglin@gcc.gnu.org>
+Date:   Fri Jul 19 10:10:17 2024 -0400
+
+    Fix usage of _STACK_GROWS_DOWN and _STACK_GROWS_UP defines [BZ 31989]
+    
+    Signed-off-by: John David Anglin <dave.anglin@bell.net>
+    Reviewed-By: Andreas K. Hüttel <dilfridge@gentoo.org>
+    (cherry picked from commit 8cfa4ecff21adf226984f135aa576dd8063bbba3)
+
+diff --git a/malloc/memusage.c b/malloc/memusage.c
+index e8ae80dc74af4585..f80225b95a36707b 100644
+--- a/malloc/memusage.c
++++ b/malloc/memusage.c
+@@ -172,7 +172,7 @@ update_data (struct header *result, size_t len, size_t old_len)
+     start_sp = __thread_stack_pointer ();
+ 
+   uintptr_t sp = __thread_stack_pointer ();
+-#ifdef _STACK_GROWS_UP
++#if _STACK_GROWS_UP
+   /* This can happen in threads where we didn't catch the thread's
+      stack early enough.  */
+   if (__glibc_unlikely (sp < start_sp))
+diff --git a/stdlib/tst-swapcontext2.c b/stdlib/tst-swapcontext2.c
+index f679755649809653..a9c1dc827cb897f3 100644
+--- a/stdlib/tst-swapcontext2.c
++++ b/stdlib/tst-swapcontext2.c
+@@ -85,7 +85,7 @@ do_test (void)
+ {
+   /* ____longjmp_chk has  */
+ #if 0
+-#ifdef _STACK_GROWS_DOWN
++#if _STACK_GROWS_DOWN
+ #define called_from(this, saved) ((this) < (saved))
+ #else
+ #define called_from(this, saved) ((this) > (saved))
+@@ -98,7 +98,7 @@ do_test (void)
+   /* Arrange stacks for uctx_func1 and uctx_func2 so that called_from
+      is true when setjmp is called from uctx_func1 and longjmp is called
+      from uctx_func2.  */
+-#ifdef _STACK_GROWS_DOWN
++#if _STACK_GROWS_DOWN
+ # define UCTX_FUNC1_STACK	1
+ # define UCTX_FUNC2_STACK	0
+ #else
+diff --git a/sysdeps/unix/sysv/linux/____longjmp_chk.c b/sysdeps/unix/sysv/linux/____longjmp_chk.c
+index 0896dc5755dfa1db..3c66a4638eedbbea 100644
+--- a/sysdeps/unix/sysv/linux/____longjmp_chk.c
++++ b/sysdeps/unix/sysv/linux/____longjmp_chk.c
+@@ -23,7 +23,7 @@
+ #include <stdio.h>
+ #include <stackinfo.h>
+ 
+-#ifdef _STACK_GROWS_DOWN
++#if _STACK_GROWS_DOWN
+ #define called_from(this, saved) ((this) < (saved))
+ #else
+ #define called_from(this, saved) ((this) > (saved))
diff --git a/SOURCES/glibc-upstream-2.39-87.patch b/SOURCES/glibc-upstream-2.39-87.patch
new file mode 100644
index 0000000..311203b
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-87.patch
@@ -0,0 +1,81 @@
+commit cb19cef087eaa551568739aa5b59cf97b8d5da1e
+Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Date:   Tue Jul 16 07:57:45 2024 -0300
+
+    elf: Fix localplt.awk for DT_RELR-enabled builds (BZ 31978)
+    
+    For each input readelf output, localplt.awk parses each 'Relocation
+    section' entry, checks its offset against the dynamic section entry, and
+    saves each DT_JMPREL, DT_RELA, and DT_REL offset value it finds. After
+    all lines are read, the script checks if any segment offset differed
+    from 0, meaning at least one 'Relocation section' was matched.
+    
+    However, if the shared object was built with RELR support and the static
+    linker could place all the relocation on DT_RELR, there would be no
+    DT_JMPREL, DT_RELA, and DT_REL entries; only a DT_RELR.
+    
+    For the current three ABIs that support (aarch64, x86, and powerpc64),
+    the powerpc64 ld.so shows the behavior above. Both x86_64 and aarch64
+    show extra relocations on '.rela.dyn', which makes the script check to
+    succeed.
+    
+    This patch fixes by handling DT_RELR, where the offset is checked
+    against the dynamic section entries and if the shared object contains an
+    entry it means that there are no extra PLT entries (since all
+    relocations are relative).
+    
+    It fixes the elf/check-localplt failure on powerpc.
+    
+    Checked with a build/check for aarch64-linux-gnu, x86_64-linux-gnu,
+    i686-linux-gnu, arm-linux-gnueabihf, s390x-linux-gnu, powerpc-linux-gnu,
+    powerpc64-linux-gnu, and powerpc64le-linux-gnu.
+    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+    
+    (cherry picked from commit 4f047d9edecb1a9b796a9a904dcd42bd3cc3d3b6)
+
+diff --git a/scripts/localplt.awk b/scripts/localplt.awk
+index fe79ca01abcb1a75..621ae7d8e815a4e5 100644
+--- a/scripts/localplt.awk
++++ b/scripts/localplt.awk
+@@ -10,7 +10,8 @@ BEGIN {
+ }
+ 
+ FILENAME != lastfile {
+-  if (lastfile && jmprel_offset == 0 && rela_offset == 0 && rel_offset == 0) {
++  if (lastfile && jmprel_offset == 0 && rela_offset == 0 && rel_offset == 0 \
++      && relr_offset == 0) {
+     print FILENAME ": *** failed to find expected output (readelf -WSdr)";
+     result = 2;
+   }
+@@ -22,6 +23,7 @@ FILENAME != lastfile {
+   jmprel_offset = 0;
+   rela_offset = 0;
+   rel_offset = 0;
++  relr_offset = 0;
+   pltrelsz = -1;
+   delete section_offset_by_address;
+ }
+@@ -77,6 +79,8 @@ in_relocs && relocs_offset == rel_offset && NF >= 5 {
+   }
+ }
+ 
++# No need to handle DT_RELR (all packed relocations are relative).
++
+ in_relocs { next }
+ 
+ $1 == "Relocation" && $2 == "section" && $5 == "offset" {
+@@ -121,4 +125,14 @@ $2 == "(REL)" {
+   }
+   next
+ }
++
++$2 == "(RELR)" {
++  relr_addr = strtonum($3);
++  if (relr_addr in section_offset_by_address) {
++    relr_offset = section_offset_by_address[relr_addr];
++  } else {
++    print FILENAME ": *** DT_RELR does not match any section's address";
++    result = 2;
++  }
++}
+ END { exit(result) }
diff --git a/SOURCES/glibc-upstream-2.39-88.patch b/SOURCES/glibc-upstream-2.39-88.patch
new file mode 100644
index 0000000..1afdee1
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-88.patch
@@ -0,0 +1,201 @@
+commit fc1dc399841051862a93ed458897e3d8ea9d4ff4
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Wed Jul 24 12:06:47 2024 +0200
+
+    resolv: Allow short error responses to match any query (bug 31890)
+    
+    Reviewed-by: DJ Delorie <dj@redhat.com>
+    (cherry picked from commit 691a3b2e9bfaba842e46a5ccb7f5e6ea144c3ade)
+
+diff --git a/resolv/Makefile b/resolv/Makefile
+index 5f44f5896bde9958..d927e337d9e2b496 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 fb0217204a6c913f..cef606a6b1523224 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 0000000000000000..cf1e39876f8fb470
+--- /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>
diff --git a/SOURCES/glibc-upstream-2.39-89.patch b/SOURCES/glibc-upstream-2.39-89.patch
new file mode 100644
index 0000000..a6c7115
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-89.patch
@@ -0,0 +1,209 @@
+commit 8c9fbc6651b992e759f6f0b4af21c1a8769bbb2c
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Wed Jul 24 12:06:47 2024 +0200
+
+    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)
+
+diff --git a/resolv/Makefile b/resolv/Makefile
+index d927e337d9e2b496..abff7fc0074e893b 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 cef606a6b1523224..3a4a20684fcb9a63 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 0000000000000000..aa9798b5a7dfaa88
+--- /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 cf1e39876f8fb470..be354ae1c7f2a81a 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);
+     }
+ }
+ 
diff --git a/SOURCES/glibc-upstream-2.39-9.patch b/SOURCES/glibc-upstream-2.39-9.patch
new file mode 100644
index 0000000..4289fa2
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-9.patch
@@ -0,0 +1,172 @@
+commit aad45c8ac30aa1072e54903ce6aead22702f244a
+Author: Amrita H S <amritahs@linux.ibm.com>
+Date:   Tue Mar 19 19:08:47 2024 -0500
+
+    powerpc: Placeholder and infrastructure/build support to add Power11 related changes.
+    
+    The following three changes have been added to provide initial Power11 support.
+        1. Add the directories to hold Power11 files.
+        2. Add support to select Power11 libraries based on AT_PLATFORM.
+        3. Let submachine=power11 be set automatically.
+    
+    Reviewed-by: Florian Weimer <fweimer@redhat.com>
+    Reviewed-by: Peter Bergner <bergner@linux.ibm.com>
+    (cherry picked from commit 1ea051145612f199d8716ecdf78b084b00b5a727)
+
+diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
+index f8cb343877386402..b36697ba440654be 100644
+--- a/sysdeps/powerpc/dl-procinfo.h
++++ b/sysdeps/powerpc/dl-procinfo.h
+@@ -38,7 +38,7 @@
+ #define HWCAP_IMPORTANT		(PPC_FEATURE_HAS_ALTIVEC \
+ 				+ PPC_FEATURE_HAS_DFP)
+ 
+-#define _DL_PLATFORMS_COUNT	16
++#define _DL_PLATFORMS_COUNT	17
+ 
+ #define _DL_FIRST_PLATFORM	32
+ /* Mask to filter out platforms.  */
+@@ -62,6 +62,7 @@
+ #define PPC_PLATFORM_POWER8		13
+ #define PPC_PLATFORM_POWER9		14
+ #define PPC_PLATFORM_POWER10		15
++#define PPC_PLATFORM_POWER11		16
+ 
+ static inline const char *
+ __attribute__ ((unused))
+@@ -89,6 +90,11 @@ _dl_string_platform (const char *str)
+ 	      ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER10;
+ 	      str++;
+ 	    }
++	  else if (str[1] == '1')
++	    {
++	      ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER11;
++	      str++;
++	    }
+ 	  else
+ 	    return -1;
+ 	  break;
+diff --git a/sysdeps/powerpc/powerpc32/power11/Implies b/sysdeps/powerpc/powerpc32/power11/Implies
+new file mode 100644
+index 0000000000000000..051cbe0f7911c93c
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc32/power11/Implies
+@@ -0,0 +1,2 @@
++powerpc/powerpc32/power10/fpu
++powerpc/powerpc32/power10
+diff --git a/sysdeps/powerpc/powerpc32/power11/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc32/power11/fpu/multiarch/Implies
+new file mode 100644
+index 0000000000000000..58edb2861d17f504
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc32/power11/fpu/multiarch/Implies
+@@ -0,0 +1 @@
++powerpc/powerpc32/power10/fpu/multiarch
+diff --git a/sysdeps/powerpc/powerpc32/power11/multiarch/Implies b/sysdeps/powerpc/powerpc32/power11/multiarch/Implies
+new file mode 100644
+index 0000000000000000..c70f0428badbaf14
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc32/power11/multiarch/Implies
+@@ -0,0 +1 @@
++powerpc/powerpc32/power10/multiarch
+diff --git a/sysdeps/powerpc/powerpc64/be/power11/Implies b/sysdeps/powerpc/powerpc64/be/power11/Implies
+new file mode 100644
+index 0000000000000000..de481d1c13db695e
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/be/power11/Implies
+@@ -0,0 +1,2 @@
++powerpc/powerpc64/be/power10/fpu
++powerpc/powerpc64/be/power10
+diff --git a/sysdeps/powerpc/powerpc64/be/power11/fpu/Implies b/sysdeps/powerpc/powerpc64/be/power11/fpu/Implies
+new file mode 100644
+index 0000000000000000..dff0e13064ce8238
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/be/power11/fpu/Implies
+@@ -0,0 +1 @@
++powerpc/powerpc64/be/power10/fpu
+diff --git a/sysdeps/powerpc/powerpc64/be/power11/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/be/power11/fpu/multiarch/Implies
+new file mode 100644
+index 0000000000000000..c3f259e0097386a5
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/be/power11/fpu/multiarch/Implies
+@@ -0,0 +1 @@
++powerpc/powerpc64/be/power10/fpu/multiarch
+diff --git a/sysdeps/powerpc/powerpc64/be/power11/multiarch/Implies b/sysdeps/powerpc/powerpc64/be/power11/multiarch/Implies
+new file mode 100644
+index 0000000000000000..9491a394c9519d01
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/be/power11/multiarch/Implies
+@@ -0,0 +1 @@
++powerpc/powerpc64/be/power10/multiarch
+diff --git a/sysdeps/powerpc/powerpc64/le/power11/Implies b/sysdeps/powerpc/powerpc64/le/power11/Implies
+new file mode 100644
+index 0000000000000000..e18182dcc1f4c25f
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/le/power11/Implies
+@@ -0,0 +1,2 @@
++powerpc/powerpc64/le/power10/fpu
++powerpc/powerpc64/le/power10
+diff --git a/sysdeps/powerpc/powerpc64/le/power11/fpu/Implies b/sysdeps/powerpc/powerpc64/le/power11/fpu/Implies
+new file mode 100644
+index 0000000000000000..e41bd55684dbb5b8
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/le/power11/fpu/Implies
+@@ -0,0 +1 @@
++powerpc/powerpc64/le/power10/fpu
+diff --git a/sysdeps/powerpc/powerpc64/le/power11/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/le/power11/fpu/multiarch/Implies
+new file mode 100644
+index 0000000000000000..c838d5093140eae3
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/le/power11/fpu/multiarch/Implies
+@@ -0,0 +1 @@
++powerpc/powerpc64/le/power10/fpu/multiarch
+diff --git a/sysdeps/powerpc/powerpc64/le/power11/multiarch/Implies b/sysdeps/powerpc/powerpc64/le/power11/multiarch/Implies
+new file mode 100644
+index 0000000000000000..687248c3c267cd8c
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/le/power11/multiarch/Implies
+@@ -0,0 +1 @@
++powerpc/powerpc64/le/power10/multiarch
+diff --git a/sysdeps/powerpc/powerpc64/le/tst-glibc-hwcaps.c b/sysdeps/powerpc/powerpc64/le/tst-glibc-hwcaps.c
+index 77465d9133410267..65d3e69303a1c963 100644
+--- a/sysdeps/powerpc/powerpc64/le/tst-glibc-hwcaps.c
++++ b/sysdeps/powerpc/powerpc64/le/tst-glibc-hwcaps.c
+@@ -36,9 +36,11 @@ compute_level (void)
+     return 9;
+   if (strcmp (platform, "power10") == 0)
+     return 10;
++  if (strcmp (platform, "power11") == 0)
++    return 11;
+   printf ("warning: unrecognized AT_PLATFORM value: %s\n", platform);
+-  /* Assume that the new platform supports POWER10.  */
+-  return 10;
++  /* Assume that the new platform supports POWER11.  */
++  return 11;
+ }
+ 
+ static int
+diff --git a/sysdeps/powerpc/preconfigure b/sysdeps/powerpc/preconfigure
+index 4de94089a3f68532..9e5a07ab6d6767cd 100644
+--- a/sysdeps/powerpc/preconfigure
++++ b/sysdeps/powerpc/preconfigure
+@@ -58,7 +58,7 @@ fi
+ 
+     ;;
+ 
+-  a2|970|power[4-9]|power5x|power6+|power10)
++  a2|970|power[4-9]|power5x|power6+|power10|power11)
+     submachine=${archcpu}
+     if test ${libc_cv_cc_submachine+y}
+ then :
+diff --git a/sysdeps/powerpc/preconfigure.ac b/sysdeps/powerpc/preconfigure.ac
+index 6c63bd8257b7e40a..14b6dafd4a895c3b 100644
+--- a/sysdeps/powerpc/preconfigure.ac
++++ b/sysdeps/powerpc/preconfigure.ac
+@@ -46,7 +46,7 @@ case "${machine}:${submachine}" in
+     AC_CACHE_VAL(libc_cv_cc_submachine,libc_cv_cc_submachine="")
+     ;;
+ 
+-  a2|970|power[[4-9]]|power5x|power6+|power10)
++  a2|970|power[[4-9]]|power5x|power6+|power10|power11)
+     submachine=${archcpu}
+     AC_CACHE_VAL(libc_cv_cc_submachine,libc_cv_cc_submachine="")
+     ;;
diff --git a/SOURCES/glibc-upstream-2.39-90.patch b/SOURCES/glibc-upstream-2.39-90.patch
new file mode 100644
index 0000000..2c61b36
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-90.patch
@@ -0,0 +1,61 @@
+commit 51db012c9408d0ae08ea5f6dd8e663fb3a5a5dfd
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Thu Jun 13 18:56:30 2024 +0200
+
+    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)
+
+diff --git a/resolv/res_send.c b/resolv/res_send.c
+index 3a4a20684fcb9a63..9c77613f374e5469 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 24b164f6b5df4c99..944af3ee7613b3c4 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
diff --git a/SOURCES/glibc-upstream-2.39-91.patch b/SOURCES/glibc-upstream-2.39-91.patch
new file mode 100644
index 0000000..bc0c1a3
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-91.patch
@@ -0,0 +1,88 @@
+commit f11b7178a12be4f26fef157cdee7bf6a944693d9
+Author: Miguel Martín <mmartinv@redhat.com>
+Date:   Tue Jul 16 17:14:56 2024 +0200
+
+    malloc: avoid global locks in tst-aligned_alloc-lib.c
+    
+    Make sure the DSO used by aligned_alloc/calloc/malloc tests does not get
+    a global lock on multithreaded tests.
+    Reviewed-by: Arjun Shankar <arjun@redhat.com>
+    
+    (cherry picked from commit 9a27b566b2048f599048f2f4afe1cce06c4ef43d)
+
+diff --git a/malloc/tst-aligned_alloc-lib.c b/malloc/tst-aligned_alloc-lib.c
+index 0205df5acf6297a5..9ef1f839c101a6ae 100644
+--- a/malloc/tst-aligned_alloc-lib.c
++++ b/malloc/tst-aligned_alloc-lib.c
+@@ -17,37 +17,38 @@
+    License along with the GNU C Library; see the file COPYING.LIB.  If
+    not, see <https://www.gnu.org/licenses/>.  */
+ 
+-#include <array_length.h>
+ #include <libc-symbols.h>
+ #include <stdlib.h>
++#include <time.h>
+ 
+ extern void *__libc_malloc (size_t size);
+ extern void *__libc_calloc (size_t n, size_t size);
+ 
++__thread unsigned int seed = 0;
++
+ int aligned_alloc_count = 0;
+ int libc_malloc_count = 0;
+ int libc_calloc_count = 0;
+ 
+-/* Get a random alignment value.  Biased towards the smaller values.  Must be
+-   a power of 2. */
+-static size_t get_random_alignment (void)
+-{
+-  size_t aligns[] = {
+-    1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384
+-  };
+-
+-  return aligns[random () % array_length (aligns)];
+-}
+-
+-static void *get_random_alloc (size_t size)
++static void *
++get_random_alloc (size_t size)
+ {
+   void *retval;
+   size_t align;
++  struct timespec tp;
++
++  if (seed == 0)
++    {
++      clock_gettime (CLOCK_REALTIME, &tp);
++      seed = tp.tv_nsec;
++    }
+ 
+-  switch (random() % 3)
+-  {
++  switch (rand_r (&seed) % 3)
++    {
+     case 1:
+-      align = get_random_alignment ();
++      /* Get a random alignment value.  Biased towards the smaller
++       * values up to 16384. Must be a power of 2. */
++      align = 1 << rand_r (&seed) % 15;
+       retval = aligned_alloc (align, size);
+       aligned_alloc_count++;
+       break;
+@@ -59,13 +60,13 @@ static void *get_random_alloc (size_t size)
+       retval = __libc_malloc (size);
+       libc_malloc_count++;
+       break;
+-  }
++    }
+ 
+   return retval;
+ }
+ 
+-
+-void * __random_malloc (size_t size)
++void *
++__random_malloc (size_t size)
+ {
+   return get_random_alloc (size);
+ }
diff --git a/SOURCES/glibc-upstream-2.39-92.patch b/SOURCES/glibc-upstream-2.39-92.patch
new file mode 100644
index 0000000..1847f4f
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-92.patch
@@ -0,0 +1,247 @@
+commit 946006d37cfc66c162877fc678405525a50f20df
+Author: Miguel Martín <mmartinv@redhat.com>
+Date:   Tue Jul 16 17:14:57 2024 +0200
+
+    malloc: add multi-threaded tests for aligned_alloc/calloc/malloc
+    
+    Improve aligned_alloc/calloc/malloc test coverage by adding
+    multi-threaded tests with random memory allocations and with/without
+    cross-thread memory deallocations.
+    
+    Perform a number of memory allocation calls with random sizes limited
+    to 0xffff.
+    
+    Use the existing DSO ('malloc/tst-aligned_alloc-lib.c') to randomize
+    allocator selection.
+    
+    The multi-threaded allocation/deallocation is staged as described below:
+    
+    - Stage 1: Half of the threads will be allocating memory and the
+      other half will be waiting for them to finish the allocation.
+    - Stage 2: Half of the threads will be allocating memory and the
+      other half will be deallocating memory.
+    - Stage 3: Half of the threads will be deallocating memory and the
+      second half waiting on them to finish.
+    
+    Add 'malloc/tst-aligned-alloc-random-thread.c' where each thread will
+    deallocate only the memory that was previously allocated by itself.
+    
+    Add 'malloc/tst-aligned-alloc-random-thread-cross.c' where each thread
+    will deallocate memory that was previously allocated by another thread.
+    
+    The intention is to be able to utilize existing malloc testing to ensure
+    that similar allocation APIs are also exposed to the same rigors.
+    Reviewed-by: Arjun Shankar <arjun@redhat.com>
+    
+    (cherry picked from commit b0fbcb7d0051a68baf26b2aed51a8a31c34d68e5)
+
+diff --git a/malloc/Makefile b/malloc/Makefile
+index 02aff1bd1dc664c3..98d507a6eb61f4fe 100644
+--- a/malloc/Makefile
++++ b/malloc/Makefile
+@@ -28,6 +28,8 @@ tests := \
+   mallocbug \
+   tst-aligned-alloc \
+   tst-aligned-alloc-random \
++  tst-aligned-alloc-random-thread \
++  tst-aligned-alloc-random-thread-cross \
+   tst-alloc_buffer \
+   tst-calloc \
+   tst-free-errno \
+@@ -151,6 +153,8 @@ ifeq ($(have-GLIBC_2.23)$(build-shared),yesyes)
+ # the tests expect specific internal behavior that is changed due to linking to
+ # libmcheck.a.
+ tests-exclude-mcheck = \
++  tst-aligned-alloc-random-thread \
++  tst-aligned-alloc-random-thread-cross \
+   tst-compathooks-off \
+   tst-compathooks-on \
+   tst-malloc-backtrace \
+@@ -415,7 +419,11 @@ $(objpfx)tst-mallocstate: $(objpfx)libc_malloc_debug.so
+ $(objpfx)tst-mallocstate-malloc-check: $(objpfx)libc_malloc_debug.so
+ 
+ $(objpfx)tst-aligned-alloc-random.out: $(objpfx)tst-aligned_alloc-lib.so
++$(objpfx)tst-aligned-alloc-random-thread.out: $(objpfx)tst-aligned_alloc-lib.so
++$(objpfx)tst-aligned-alloc-random-thread-cross.out: $(objpfx)tst-aligned_alloc-lib.so
+ $(objpfx)tst-malloc-random.out: $(objpfx)tst-aligned_alloc-lib.so
+ 
+ tst-aligned-alloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
++tst-aligned-alloc-random-thread-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
++tst-aligned-alloc-random-thread-cross-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
+ tst-malloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
+diff --git a/malloc/tst-aligned-alloc-random-thread-cross.c b/malloc/tst-aligned-alloc-random-thread-cross.c
+new file mode 100644
+index 0000000000000000..360ecc56ee7c8c06
+--- /dev/null
++++ b/malloc/tst-aligned-alloc-random-thread-cross.c
+@@ -0,0 +1,19 @@
++/* multi-threaded memory allocation and cross-thread deallocation test.
++   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; see the file COPYING.LIB.  If
++   not, see <https://www.gnu.org/licenses/>.  */
++#define CROSS_THREAD_DEALLOC
++#include "tst-aligned-alloc-random-thread.c"
+diff --git a/malloc/tst-aligned-alloc-random-thread.c b/malloc/tst-aligned-alloc-random-thread.c
+new file mode 100644
+index 0000000000000000..e95f79250abec85e
+--- /dev/null
++++ b/malloc/tst-aligned-alloc-random-thread.c
+@@ -0,0 +1,145 @@
++/* multi-threaded memory allocation/deallocation test.
++   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; see the file COPYING.LIB.  If
++   not, see <https://www.gnu.org/licenses/>.  */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <support/check.h>
++#include <support/support.h>
++#include <support/xthread.h>
++#include <support/test-driver.h>
++#include <sys/sysinfo.h>
++#include <unistd.h>
++
++#ifndef ITERATIONS
++#  define ITERATIONS 16
++#endif
++
++#ifndef NUM_THREADS
++#  define NUM_THREADS 8
++#endif
++
++#ifndef NUM_ALLOCATIONS
++#  define NUM_ALLOCATIONS 2048
++#endif
++
++static pthread_barrier_t barrier;
++
++__thread unsigned int seed;
++
++typedef struct
++{
++  int id;
++  pthread_t thread;
++} thread;
++
++thread threads[NUM_THREADS];
++
++void *allocations[NUM_THREADS][NUM_ALLOCATIONS];
++
++void
++run_thread_dealloc (int id)
++{
++  for (int i = 0; i < NUM_ALLOCATIONS; i++)
++    {
++      free (allocations[id][i]);
++      allocations[id][i] = NULL;
++    }
++}
++
++void
++run_thread_alloc (int id)
++{
++  size_t msb, size;
++  for (int i = 0; i < NUM_ALLOCATIONS; i++)
++    {
++      msb = 1 << rand_r (&seed) % 16;
++      size = msb + rand_r (&seed) % msb;
++      allocations[id][i] = malloc (size);
++      TEST_VERIFY_EXIT (allocations[id][i] != NULL);
++    }
++}
++
++void *
++run_allocations (void *arg)
++{
++  int id = *((int *) arg);
++  seed = time (NULL) + id;
++
++  /* Stage 1: First half o the threads allocating memory and the second
++   * half waiting for them to finish
++   */
++  if (id < NUM_THREADS / 2)
++    run_thread_alloc (id);
++
++  xpthread_barrier_wait (&barrier);
++
++  /* Stage 2: Half of the threads allocationg memory and the other
++   * half deallocating:
++   * - In the non cross-thread dealloc scenario the first half will be
++   *   deallocating the memory allocated by themselves in stage 1 and the
++   *   second half will be allocating memory.
++   * - In the cross-thread dealloc scenario the first half will continue
++   *   to allocate memory and the second half will deallocate the memory
++   *   allocated by the first half in stage 1.
++   */
++  if (id < NUM_THREADS / 2)
++#ifndef CROSS_THREAD_DEALLOC
++    run_thread_dealloc (id);
++#else
++    run_thread_alloc (id + NUM_THREADS / 2);
++#endif
++  else
++#ifndef CROSS_THREAD_DEALLOC
++    run_thread_alloc (id);
++#else
++    run_thread_dealloc (id - NUM_THREADS / 2);
++#endif
++
++  xpthread_barrier_wait (&barrier);
++
++  // Stage 3: Second half of the threads deallocating and the first half
++  // waiting for them to finish.
++  if (id >= NUM_THREADS / 2)
++    run_thread_dealloc (id);
++
++  return NULL;
++}
++
++static int
++do_test (void)
++{
++  xpthread_barrier_init (&barrier, NULL, NUM_THREADS);
++
++  for (int i = 0; i < ITERATIONS; i++)
++    {
++      for (int t = 0; t < NUM_THREADS; t++)
++	{
++	  threads[t].id = t;
++	  threads[t].thread
++	      = xpthread_create (NULL, run_allocations, &threads[t].id);
++	}
++
++      for (int t = 0; t < NUM_THREADS; t++)
++	xpthread_join (threads[t].thread);
++    }
++
++  return 0;
++}
++
++#include <support/test-driver.c>
diff --git a/SOURCES/glibc-upstream-2.39-93.patch b/SOURCES/glibc-upstream-2.39-93.patch
new file mode 100644
index 0000000..b78c675
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-93.patch
@@ -0,0 +1,52 @@
+commit b71a51189d3e1a2f515d93c0444916293bd5221f
+Author: Arjun Shankar <arjun@redhat.com>
+Date:   Mon Jul 29 14:30:59 2024 +0200
+
+    manual/stdio: Clarify putc and putwc
+    
+    The manual entry for `putc' described what "most systems" do instead of
+    describing the glibc implementation and its guarantees.  This commit
+    fixes that by warning that putc may be implemented as a macro that
+    double-evaluates `stream', and removing the performance claim.
+    
+    Even though the current `putc' implementation does not double-evaluate
+    `stream', offering this obscure guarantee as an extension to what
+    POSIX allows does not seem very useful.
+    
+    The entry for `putwc' is also edited to bring it in line with `putc'.
+    Reviewed-by: Florian Weimer <fweimer@redhat.com>
+    
+    (cherry picked from commit 10de4a47ef3f481592e3c62eb07bcda23e9fde4d)
+
+diff --git a/manual/stdio.texi b/manual/stdio.texi
+index 002fce7a10e97107..c11d37b363385531 100644
+--- a/manual/stdio.texi
++++ b/manual/stdio.texi
+@@ -903,21 +903,21 @@ This function is a GNU extension.
+ @deftypefun int putc (int @var{c}, FILE *@var{stream})
+ @standards{ISO, stdio.h}
+ @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}}
+-This is just like @code{fputc}, except that most systems implement it as
++This is just like @code{fputc}, except that it may be implemented as
+ a macro, making it faster.  One consequence is that it may evaluate the
+ @var{stream} argument more than once, which is an exception to the
+-general rule for macros.  @code{putc} is usually the best function to
+-use for writing a single character.
++general rule for macros.  Therefore, @var{stream} should never be an
++expression with side-effects.
+ @end deftypefun
+ 
+ @deftypefun wint_t putwc (wchar_t @var{wc}, FILE *@var{stream})
+ @standards{ISO, wchar.h}
+ @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}}
+-This is just like @code{fputwc}, except that it can be implement as
++This is just like @code{fputwc}, except that it may be implemented as
+ a macro, making it faster.  One consequence is that it may evaluate the
+ @var{stream} argument more than once, which is an exception to the
+-general rule for macros.  @code{putwc} is usually the best function to
+-use for writing a single wide character.
++general rule for macros.  Therefore, @var{stream} should never be an
++expression with side-effects.
+ @end deftypefun
+ 
+ @deftypefun int putc_unlocked (int @var{c}, FILE *@var{stream})
diff --git a/SOURCES/glibc-upstream-2.39-94.patch b/SOURCES/glibc-upstream-2.39-94.patch
new file mode 100644
index 0000000..22cf29d
--- /dev/null
+++ b/SOURCES/glibc-upstream-2.39-94.patch
@@ -0,0 +1,31 @@
+commit 4bdcc1963bc2b5ba5f8e319e402d9eb2cb6096c1
+Author: Lukas Bulwahn <lukas.bulwahn@redhat.com>
+Date:   Mon Jul 29 11:08:17 2024 +0200
+
+    manual: make setrlimit() description less ambiguous
+    
+    The existing description for setrlimit() has some ambiguity. It could be
+    understood to have the semantics of getrlimit(), i.e., the limits from the
+    process are stored in the provided rlp pointer.
+    
+    Make the description more explicit that rlp are the input values, and that
+    the limits of the process is changed with this function.
+    
+    Reviewed-by: Florian Weimer <fweimer@redhat.com>
+    (cherry picked from commit aedbf08891069fc029ed021e4dba933eb877b394)
+
+diff --git a/manual/resource.texi b/manual/resource.texi
+index 37462abc9e467690..743cc9439665b9d5 100644
+--- a/manual/resource.texi
++++ b/manual/resource.texi
+@@ -192,8 +192,8 @@ If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
+ @standards{BSD, sys/resource.h}
+ @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+ @c Direct syscall on most systems; lock-taking critical section on HURD.
+-Store the current and maximum limits for the resource @var{resource}
+-in @code{*@var{rlp}}.
++Change the current and maximum limits of the process for the resource
++@var{resource} to the values provided in @code{*@var{rlp}}.
+ 
+ The return value is @code{0} on success and @code{-1} on failure.  The
+ following @code{errno} error condition is possible:
diff --git a/SOURCES/glibc.attr b/SOURCES/glibc.attr
new file mode 100644
index 0000000..fddfd91
--- /dev/null
+++ b/SOURCES/glibc.attr
@@ -0,0 +1,3 @@
+%__glibc_requires %{_rpmconfigdir}/glibc.req
+%__glibc_magic ELF
+%__glibc_flags exeonly
diff --git a/SOURCES/glibc.req.in b/SOURCES/glibc.req.in
new file mode 100644
index 0000000..b82c5a1
--- /dev/null
+++ b/SOURCES/glibc.req.in
@@ -0,0 +1,42 @@
+#!/bin/bash
+# Auto-generating dependencies for glibc development snapshots.
+#
+# A glibc development snapshot (say version 2.33.9000) may define
+# symbols in its under-development symbol version (GLIBC_2.34).  RPM
+# automatically derives RPM dependencies such as
+# libc.so.6(GLIBC_2.34)(64bit) from that.  While the GLIBC_2.34
+# version is under development, these dependencies may be inaccurate
+# and could be satisfied by glibc RPM package versions that lack the
+# symbols because they were created from an earlier development
+# snapshot that had some other GLIBC_2.34 symbols.  Therefore, if the
+# latest, under-development ELF symbol version is detected, this
+# dependency generator adds an explicit RPM dependencies on the glibc
+# packaging version against which an RPM package is built.
+#
+# This script runs for the glibc build itself.  In this case, it may
+# produce a >= dependency on the build-time glibc, but there will also
+# be an (potentially indirect) = dependency, which takes precedence.
+
+set -e
+set -o pipefail
+
+searching=true
+# Pre-filter using eu-elfclassify, to skip kernel modules.
+eu-elfclassify --loadable --file --stdin --print | while read path; do
+    # Assume that all dynamically linked objects depend on glibc in
+    # some way.
+    if $searching; then
+	# Undefined symbols within latest, under-development
+	# (changing) symbol versions trigger the versioned RPM
+	# dependency.  Do not use "grep -Eq" to keep reading from the
+	# pipe, avoiding a spurious EPIPE error in eu-readelf.
+	if eu-readelf -s "$path" \
+		| grep -E '\sUNDEF\s.*@''@SYMVER@(\s|$)' >/dev/null
+	then
+	    echo 'glibc >= @VERSION@-@RELEASE@'
+	    # Stop searching after the first match, but keep reading from
+	    # the pipe.
+	    searching=false
+	fi
+    fi
+done
diff --git a/SOURCES/parse-SUPPORTED.py b/SOURCES/parse-SUPPORTED.py
new file mode 100644
index 0000000..cf512de
--- /dev/null
+++ b/SOURCES/parse-SUPPORTED.py
@@ -0,0 +1,40 @@
+#!/usr/bin/python3
+#
+# This script turns localedata/SUPPORTED (whose path is passed as the
+# first argument) into a normalized list of LANGUAGE "_" REGION pairs.
+# (If there is no REGION defined, only LANGUAGE is used.)  The list
+# is written to standard output, with one element per line.
+
+import sys
+
+supported, = sys.argv[1:]
+
+# Pairs seen so far.  Used to suppress duplicates.
+seen = set()
+with open(supported) as inp:
+    for line in inp:
+        if line.startswith("#") or line == "SUPPORTED-LOCALES=\\\n":
+            # Comment or prefix.
+            continue
+        if not line.endswith(" \\\n"):
+            raise IOError("line without continuation: " + repr(line))
+        try:
+            slash = line.index("/")
+        except ValueError:
+            raise IOError("line without slash: " + repr(line))
+        spec = line[:slash]
+        for separator in ".@":
+            try:
+                # Strip charset, variant specifiers.
+                spec = spec[:spec.index(separator)]
+            except ValueError:
+                pass
+        seen.add(spec)
+
+# The C locale does not correspond to a language.
+seen.remove("C")
+
+# The glibc source file is not sorted.
+for spec in sorted(seen):
+    print(spec)
+print() # The Lua generator produces a trailing newline.
diff --git a/SOURCES/wrap-find-debuginfo.sh b/SOURCES/wrap-find-debuginfo.sh
new file mode 100644
index 0000000..5257de7
--- /dev/null
+++ b/SOURCES/wrap-find-debuginfo.sh
@@ -0,0 +1,147 @@
+#!/bin/bash
+# Wrapper script for find-debuginfo.sh
+#
+# Usage:
+#  wrap-find-debuginfo.sh SYSROOT-PATH SCRIPT-PATH SCRIPT-ARGS...
+#
+# The wrapper saves the original version of ld.so found in SYSROOT-PATH,
+# invokes SCRIPT-PATH with SCRIPT-ARGS, and then restores the
+# LDSO-PATH file, followed by note merging and DWZ compression.
+# As a result, ld.so has (mostly) unchanged debuginfo even
+# after debuginfo extraction.
+#
+# For libc.so.6, a set of strategic symbols is preserved in .symtab
+# that are frequently used in valgrind suppressions and elsewhere.
+
+set -ex
+
+workdir="$(mktemp -d -t find_debuginfo.XXXXXX)"
+
+ldso_tmp="$workdir/ld.so"
+libc_tmp_dir="$workdir/"
+
+# Return the path where a libc should be saved temporarily. This path is
+# based on its original path received in $1.
+libc_tmp_path() {
+    echo "$libc_tmp_dir"`dirname "$1"`"/libc.so"
+}
+
+# Prefer a separately installed debugedit over the RPM-integrated one.
+if command -v debugedit >/dev/null ; then
+    debugedit=debugedit
+else
+    debugedit=/usr/lib/rpm/debugedit
+fi
+
+cleanup () {
+    rm -rf "$workdir"
+}
+trap cleanup 0
+
+sysroot_path="$1"
+shift
+# Resolve symbolic link, so that the activities below only alter the
+# file it points to.
+ldso_path="$(readlink -f "$sysroot_path/$1")"
+shift
+script_path="$1"
+shift
+
+# libc.so.6 always uses this name, so it is simpler to locate.
+# This can result in multiple paths, hence the loop below.
+libc_path=`find "$sysroot_path" -name libc.so.6`
+
+
+# Preserve the original files.
+cp "$ldso_path" "$ldso_tmp"
+for lib in $libc_path ; do
+    libtmp=`libc_tmp_path $lib`
+    mkdir -p `dirname "$libtmp"`
+    cp "$lib" "$libtmp"
+done
+
+# Run the debuginfo extraction.
+"$script_path" "$@"
+
+for lib in $libc_path ; do
+    libtmp=`libc_tmp_path "$lib"`
+    # libc.so.6: Extract the .gnu_debuglink section
+    objcopy -j.gnu_debuglink --set-section-flags .gnu_debuglink=alloc \
+        -O binary "$lib" "$libtmp.debuglink"
+    # Restore the original files.
+    cp "$libtmp" "$lib"
+
+    # Reduce the size of libc notes.  Primarily for annobin.
+    objcopy --merge-notes "$lib"
+
+    # libc.so.6: Restore the .gnu_debuglink section
+    objcopy --add-section .gnu_debuglink="$libtmp.debuglink" "$lib"
+
+    # libc.so.6: Reduce to valuable symbols.  Eliminate file symbols,
+    # annobin symbols, and symbols used by the glibc build to implement
+    # hidden aliases (__EI_*).  We would also like to remove __GI_*
+    # symbols, but even listing them explicitly (as in -K __GI_strlen)
+    # still causes strip to remove them, so there is no filtering of
+    # __GI_* here.  (Debuginfo is gone after this, so no need to optimize
+    # it.)
+    strip -w \
+          -K '*' \
+          -K '!*.c' \
+          -K '!*.os' \
+          -K '!.annobin_*' \
+          -K '!__EI_*' \
+          -K '!__PRETTY_FUNCTION__*' \
+          "$lib"
+done
+
+# Restore the original ld.so.
+cp "$ldso_tmp" "$ldso_path"
+
+# Reduce the size of notes.  Primarily for annobin.
+objcopy --merge-notes "$ldso_path"
+
+# ld.so does not have separated debuginfo and so the debuginfo file
+# generated by find-debuginfo is redundant.  Therefore, remove it.
+ldso_debug=
+for ldso_debug_candidate in `find "$sysroot_path" -maxdepth 2 \
+    -regextype posix-extended \
+  -regex '.*/ld(-.*|64|)\.so\.[0-9]+.*debug$' -type f` ; do
+    if test -z "$ldso_debug" ; then
+	ldso_debug="$ldso_debug_candidate"
+    else
+	echo "error: multiple ld.so debug candidates: $ldso_debug, $ldso_debug_candidate"
+	exit 1
+    fi
+done
+rm -f "$ldso_debug"
+
+# ld.so: Rewrite the source file paths to match the extracted
+# locations.  First compute the arguments for invoking debugedit.
+# See find-debuginfo.sh.
+debug_dest_name="/usr/src/debug"
+last_arg=
+while true ; do
+    arg="$1"
+    shift || break
+    case "$arg" in
+	(--unique-debug-src-base)
+	    debug_dest_name="/usr/src/debug/$1"
+	    shift
+	    ;;
+	(-*)
+	    ;;
+	(*)
+	    last_arg="$arg"
+	    ;;
+    esac
+done
+debug_base_name=${last_arg:-$RPM_BUILD_ROOT}
+$debugedit -b "$debug_base_name" -d "$debug_dest_name" -n $ldso_path
+# Remove the .annobin* symbols (and only them).
+if nm --format=posix "$ldso_path" | cut -d' ' -f1 \
+	| grep '^\.annobin' > "$ldso_tmp.annobin-symbols"; then
+    objcopy --strip-symbols="$ldso_tmp.annobin-symbols" "$ldso_path"
+fi
+
+# Apply single-file DWARF optimization.
+dwz $ldso_path
diff --git a/SPECS/glibc.spec b/SPECS/glibc.spec
new file mode 100644
index 0000000..af659c1
--- /dev/null
+++ b/SPECS/glibc.spec
@@ -0,0 +1,4765 @@
+%global glibcsrcdir glibc-2.39
+%global glibcversion 2.39
+# Pre-release tarballs are pulled in from git using a command that is
+# effectively:
+#
+# git archive HEAD --format=tar --prefix=$(git describe --match 'glibc-*')/ \
+#	> $(git describe --match 'glibc-*').tar
+# gzip -9 $(git describe --match 'glibc-*').tar
+#
+# glibc_release_url is only defined when we have a release tarball.
+# Conversly, glibc_autorequires is set for development snapshots, where
+# dependencies based on symbol versions are inaccurate.
+%{lua: if string.match(rpm.expand("%glibcsrcdir"), "^glibc%-[0-9.]+$") then
+    rpm.define("glibc_release_url https://ftp.gnu.org/gnu/glibc/")
+  end
+  local major, minor = string.match(rpm.expand("%glibcversion"),
+                                    "^([0-9]+)%.([0-9]+)%.9000$")
+  if major and minor then
+    rpm.define("glibc_autorequires 1")
+    -- The minor version in a .9000 development version lags the actual
+    -- symbol version by one.
+    local symver = "GLIBC_" .. major .. "." .. (minor + 1)
+    rpm.define("glibc_autorequires_symver " .. symver)
+  else
+    rpm.define("glibc_autorequires 0")
+  end}
+##############################################################################
+# We support the following options:
+# --with/--without,
+# * testsuite - Running the testsuite.
+# * benchtests - Running and building benchmark subpackage.
+# * bootstrap - Bootstrapping the package.
+# * werror - Build with -Werror
+# * docs - Build with documentation and the required dependencies.
+# * valgrind - Run smoke tests with valgrind to verify dynamic loader.
+#
+# You must always run the testsuite for production builds.
+# Default: Always run the testsuite.
+%bcond_without testsuite
+# Default: Always build the benchtests.
+%bcond_without benchtests
+# Default: Not bootstrapping.
+%bcond_with bootstrap
+# Default: Enable using -Werror
+%bcond_without werror
+# Default: Always build documentation.
+%bcond_without docs
+
+# Default: Always run valgrind tests if there is architecture support.
+%ifarch %{valgrind_arches}
+%bcond_without valgrind
+%else
+%bcond_with valgrind
+%endif
+# Restrict %%{valgrind_arches} further in case there are problems with
+# the smoke test.
+%if %{with valgrind}
+%ifarch ppc64 ppc64p7
+# The valgrind smoke test does not work on ppc64, ppc64p7 (bug 1273103).
+%undefine with_valgrind
+%endif
+%endif
+
+# Build the POWER10 multilib.
+%ifarch ppc64le
+%define buildpower10 1
+%else
+%define buildpower10 0
+%endif
+
+%if %{with bootstrap}
+# Disable benchtests, -Werror, docs, and valgrind if we're bootstrapping
+%undefine with_benchtests
+%undefine with_werror
+%undefine with_docs
+%undefine with_valgrind
+%endif
+
+# We do our own build flags management.  In particular, see
+# glibc_shell_* below.
+%undefine _auto_set_build_flags
+
+##############################################################################
+# Any architecture/kernel combination that supports running 32-bit and 64-bit
+# code in userspace is considered a biarch arch.
+%global biarcharches %{ix86} x86_64 s390 s390x
+
+# Avoid generating a glibc-headers package on architectures which are
+# not biarch.
+%ifarch %{biarcharches}
+%global need_headers_package 1
+%if 0%{?rhel} > 0
+%global headers_package_name glibc-headers
+%else
+%ifarch %{ix86} x86_64
+%global headers_package_name glibc-headers-x86
+%endif
+%ifarch s390 s390x
+%global headers_package_name glibc-headers-s390
+%endif
+%dnl !rhel
+%endif
+%else
+%global need_headers_package 0
+%dnl !biarcharches
+%endif
+
+##############################################################################
+# Utility functions for pre/post scripts.  Stick them at the beginning of
+# any lua %pre, %post, %postun, etc. sections to have them expand into
+# those scripts.  It only works in lua sections and not anywhere else.
+%global glibc_post_funcs %{expand:
+-- We use lua because there may be no shell that we can run during
+-- glibc upgrade. We used to implement much of %%post as a C program,
+-- but from an overall maintenance perspective the lua in the spec
+-- file was simpler and safer given the operations required.
+-- All lua code will be ignored by rpm-ostree; see:
+-- https://github.com/projectatomic/rpm-ostree/pull/1869
+-- If we add new lua actions to the %%post code we should coordinate
+-- with rpm-ostree and ensure that their glibc install is functional.
+-- We must not use rpm.execute because this is a RPM 4.15 features and
+-- we must still support downstream bootstrap with RPM 4.14 and missing
+-- containerized boostrap.
+
+-- Open-code rpm.execute with error message handling.
+function post_exec (msg, program, ...)
+  local pid = posix.fork ()
+  if pid == 0 then
+    posix.exec (program, ...)
+    io.stdout:write (msg)
+    assert (nil)
+  elseif pid > 0 then
+    posix.wait (pid)
+  end
+end
+
+-- Note: We use _prefix because Fedora's UsrMove says so.
+function call_ldconfig ()
+  post_exec("Error: call to %{_prefix}/sbin/ldconfig failed.\n",
+	    "%{_prefix}/sbin/ldconfig")
+end
+
+function update_gconv_modules_cache ()
+  local iconv_dir = "%{_libdir}/gconv"
+  local iconv_cache = iconv_dir .. "/gconv-modules.cache"
+  local iconv_modules = iconv_dir .. "/gconv-modules"
+  if posix.utime(iconv_modules) == 0 then
+    if posix.utime (iconv_cache) == 0 then
+      post_exec ("Error: call to %{_prefix}/sbin/iconvconfig failed.\n",
+		 "%{_prefix}/sbin/iconvconfig",
+		 "-o", iconv_cache,
+		 "--nostdlib",
+		 iconv_dir)
+    else
+      io.stdout:write ("Error: Missing " .. iconv_cache .. " file.\n")
+    end
+  end
+end}
+
+##############################################################################
+# %%package glibc - The GNU C Library (glibc) core package.
+##############################################################################
+Summary: The GNU libc libraries
+Name: glibc
+Version: %{glibcversion}
+
+# We'll use baserelease here for two reasons:
+# - It is known to rpmdev-bumpspec, so it will be properly handled for mass-
+#   rebuilds
+# - 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 22
+Release: %{baserelease}%{?dist}
+
+# Licenses:
+#
+# High level license status of the glibc source tree:
+#
+# * In general, GPLv2+ is used by programs, LGPLv2+ is used for
+#   libraries.
+#
+# * LGPLv2+ with exceptions is used for things that are linked directly
+#   into dynamically linked programs and shared libraries (e.g. crt
+#   files, lib*_nonshared.a).  Historically, this exception also applies
+#   to parts of libio.
+#
+# * LGPLv2 is used in a couple of places (e.g. time/timespec_get.c, by
+#   mistake).
+#
+# * GPLv2+ with exceptions is used for parts of the Arm unwinder.
+#
+# * GFDL is used for the documentation.
+#
+# * Some other licenses are used in various places (BSD, Inner-Net,
+#   ISC, Public Domain, etc.).
+#
+# Licenses that make an appearance in the source tree but are not used:
+#
+# * HSRL and FSFAP are only used in test cases, which currently do not
+#   ship in binary RPMs, so they are not listed here.
+#
+# * GPLv3+ is used by manual/texinfo.tex, which we do not use and a test and
+#   some scripts that we do not ship, and so it is not listed here.
+#
+# * LGPLv3+ is used by some Hurd code, which we do not build.
+#
+# * A copyleft license is used in posix/runtests.c, but it is only a test
+#   case and so the license is not listed here.
+#
+# * A "PCRE License" is used by PCRE.tests, but it is only a test case and
+#   so the license is not listed here.
+#
+# * BSL-1.0 is only used by a test from boost and so the license is not
+#   listed here.
+#
+# * Unlicense is used in an OpenRISC 1000 file which we don't support.
+#
+# SPDX references:
+# https://spdx.org/licenses
+# https://docs.fedoraproject.org/en-US/legal/allowed-licenses
+# https://gitlab.com/fedora/legal/fedora-license-data
+#
+# SPDX license string based on evaluation of glibc-2.39 sources by
+# ScanCode toolkit (https://github.com/nexB/scancode-toolkit),
+# and accounting for exceptions listed above:
+License: LGPL-2.1-or-later AND SunPro AND LGPL-2.1-or-later WITH GCC-exception-2.0 AND BSD-3-Clause AND GPL-2.0-or-later AND LGPL-2.1-or-later WITH GNU-compiler-exception AND GPL-2.0-only AND ISC AND LicenseRef-Fedora-Public-Domain AND HPND AND CMU-Mach AND LGPL-2.1-only AND LGPL-2.0-or-later AND Unicode-DFS-2015 AND GFDL-1.1-or-later AND GPL-1.0-or-later AND FSFUL AND MIT AND Inner-Net-2.0 AND X11 AND GPL-2.0-or-later WITH GCC-exception-2.0 AND GFDL-1.3-only AND GFDL-1.1-only
+
+URL: http://www.gnu.org/software/glibc/
+Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.xz
+Source1: bench.mk
+Source2: glibc-bench-compare
+Source3: glibc.req.in
+Source4: glibc.attr
+Source10: wrap-find-debuginfo.sh
+Source11: parse-SUPPORTED.py
+# Include in the source RPM for reference.
+Source12: ChangeLog.old
+
+# glibc_ldso: ABI-specific program interpreter name.  Used for debuginfo
+# extraction (wrap-find-debuginfo.sh) and smoke testing ($run_ldso below).
+#
+# glibc_rtld_early_cflags: The ABI baseline for architectures with
+# potentially a later baseline.  The --with-rtld-early-cflags=
+# configure option is passed to the main glibc build if this macro is
+# defined.
+%ifarch %{ix86}
+%global glibc_ldso /lib/ld-linux.so.2
+%endif
+%ifarch aarch64
+%global glibc_ldso /lib/ld-linux-aarch64.so.1
+%endif
+%ifarch ppc
+%global glibc_ldso /lib/ld.so.1
+%endif
+%ifarch ppc64
+%global glibc_ldso /lib64/ld64.so.1
+%endif
+%ifarch ppc64le
+%global glibc_ldso /lib64/ld64.so.2
+%define glibc_rtld_early_cflags -mcpu=power8
+%endif
+%ifarch riscv64
+%global glibc_ldso /lib/ld-linux-riscv64-lp64d.so.1
+%endif
+%ifarch s390
+%global glibc_ldso /lib/ld.so.1
+%define glibc_rtld_early_cflags -march=z13
+%endif
+%ifarch s390x
+%global glibc_ldso /lib/ld64.so.1
+%define glibc_rtld_early_cflags -march=z13
+%endif
+%ifarch x86_64 x86_64_v2 x86_64_v3 x86_64_v4
+%global glibc_ldso /lib64/ld-linux-x86-64.so.2
+%define glibc_rtld_early_cflags -march=x86-64
+%endif
+
+######################################################################
+# Activate the wrapper script for debuginfo generation, by rewriting
+# the definition of __debug_install_post.
+%{lua:
+local wrapper = rpm.expand("%{SOURCE10}")
+local sysroot = rpm.expand("%{glibc_sysroot}")
+local original = rpm.expand("%{macrobody:__debug_install_post}")
+-- Strip leading newline.  It confuses the macro redefinition.
+-- Avoid embedded newlines that confuse the macro definition.
+original = original:match("^%s*(.-)%s*$"):gsub("\\\n", "")
+rpm.define("__debug_install_post bash " .. wrapper
+  .. " " .. sysroot .. " %{glibc_ldso} " .. original)
+}
+
+# sysroot package support.  These contain arch-specific packages, so
+# turn off the rpmbuild check.
+%global _binaries_in_noarch_packages_terminate_build 0
+# Variant of %%dist that contains just the distribution release, no affixes.
+%{?fedora:%global sysroot_dist fc%{fedora}}
+%{?rhel:%global sysroot_dist el%{rhel}}
+%{?!sysroot_dist:%global sysroot_dist root}
+# The name of the sysroot package.
+%global sysroot_package_arch sysroot-%{_arch}-%{sysroot_dist}-%{name}
+# Installed path for the sysroot tree.  Must contain /sys-root/, which
+# triggers filtering.
+%global sysroot_prefix /usr/%{_arch}-redhat-linux/sys-root/%{sysroot_dist}
+
+# The wrapper script relies on the fact that debugedit does not change
+# build IDs.
+%global _no_recompute_build_ids 1
+%undefine _unique_build_ids
+
+%ifarch %{ix86}
+# The memory tracing tools (like mtrace, memusage) in glibc-utils only work
+# when the corresponding memory tracing libraries are preloaded.  So we ship
+# memory allocation tracing/checking libraries in glibc-utils, except on
+# i686 where we need to ship them in glibc.i686.  This is because
+# glibc-utils.x86_64 will contain only the 64-bit version of these
+# libraries.
+%global glibc_ship_tracelibs_in_utils 0
+%else
+%global glibc_ship_tracelibs_in_utils 1
+%endif
+
+##############################################################################
+# Patches:
+# - See each individual patch file for origin and upstream status.
+# - For new patches follow template.patch format.
+##############################################################################
+Patch4: glibc-fedora-linux-tcsetattr.patch
+Patch8: glibc-fedora-manual-dircategory.patch
+Patch9: glibc-rh827510.patch
+Patch13: glibc-fedora-localedata-rh61908.patch
+Patch17: glibc-cs-path.patch
+Patch23: glibc-python3.patch
+Patch24: glibc-upstream-2.39-1.patch
+Patch25: glibc-upstream-2.39-2.patch
+Patch26: glibc-upstream-2.39-3.patch
+Patch27: glibc-upstream-2.39-4.patch
+Patch28: glibc-upstream-2.39-5.patch
+Patch29: glibc-upstream-2.39-6.patch
+Patch30: glibc-upstream-2.39-7.patch
+Patch31: glibc-upstream-2.39-8.patch
+Patch32: glibc-upstream-2.39-9.patch
+Patch33: glibc-upstream-2.39-10.patch
+Patch34: glibc-upstream-2.39-11.patch
+Patch35: glibc-upstream-2.39-12.patch
+Patch36: glibc-upstream-2.39-13.patch
+Patch37: glibc-upstream-2.39-14.patch
+Patch38: glibc-upstream-2.39-15.patch
+Patch39: glibc-upstream-2.39-16.patch
+Patch40: glibc-upstream-2.39-17.patch
+Patch41: glibc-upstream-2.39-18.patch
+Patch42: glibc-upstream-2.39-19.patch
+Patch43: glibc-upstream-2.39-20.patch
+Patch44: glibc-upstream-2.39-21.patch
+Patch45: glibc-upstream-2.39-22.patch
+Patch46: glibc-upstream-2.39-23.patch
+Patch47: glibc-upstream-2.39-24.patch
+Patch48: glibc-upstream-2.39-25.patch
+Patch49: glibc-upstream-2.39-26.patch
+Patch50: glibc-upstream-2.39-27.patch
+Patch51: glibc-upstream-2.39-28.patch
+Patch52: glibc-upstream-2.39-29.patch
+Patch53: glibc-upstream-2.39-30.patch
+Patch54: glibc-upstream-2.39-31.patch
+Patch55: glibc-upstream-2.39-32.patch
+Patch56: glibc-upstream-2.39-33.patch
+Patch57: glibc-upstream-2.39-34.patch
+Patch58: glibc-upstream-2.39-35.patch
+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
+Patch78: glibc-RHEL-22226.patch
+Patch79: glibc-upstream-2.39-55.patch
+Patch80: glibc-upstream-2.39-56.patch
+Patch81: glibc-upstream-2.39-57.patch
+Patch82: glibc-upstream-2.39-58.patch
+Patch83: glibc-upstream-2.39-59.patch
+Patch84: glibc-upstream-2.39-60.patch
+Patch85: glibc-upstream-2.39-61.patch
+Patch86: glibc-upstream-2.39-62.patch
+Patch87: glibc-upstream-2.39-63.patch
+Patch88: glibc-upstream-2.39-64.patch
+Patch89: glibc-upstream-2.39-65.patch
+Patch90: glibc-upstream-2.39-66.patch
+Patch91: glibc-upstream-2.39-67.patch
+Patch92: glibc-upstream-2.39-68.patch
+Patch93: glibc-upstream-2.39-69.patch
+Patch94: glibc-upstream-2.39-70.patch
+Patch95: glibc-upstream-2.39-71.patch
+Patch96: glibc-upstream-2.39-72.patch
+# NEWS update: glibc-upstream-2.39-73.patch
+# NEWS update: glibc-upstream-2.39-74.patch
+Patch97: glibc-upstream-2.39-75.patch
+Patch98: glibc-rh2292195-1.patch
+Patch99: glibc-rh2292195-2.patch
+Patch100: glibc-rh2292195-3.patch
+Patch101: glibc-upstream-2.39-76.patch
+Patch102: glibc-upstream-2.39-77.patch
+Patch103: glibc-upstream-2.39-78.patch
+Patch104: glibc-upstream-2.39-79.patch
+Patch105: glibc-upstream-2.39-80.patch
+Patch106: glibc-upstream-2.39-81.patch
+Patch107: glibc-upstream-2.39-82.patch
+Patch108: glibc-upstream-2.39-83.patch
+Patch109: glibc-upstream-2.39-84.patch
+Patch110: glibc-upstream-2.39-85.patch
+Patch111: glibc-upstream-2.39-86.patch
+Patch112: glibc-upstream-2.39-87.patch
+Patch113: glibc-upstream-2.39-88.patch
+Patch114: glibc-upstream-2.39-89.patch
+Patch115: glibc-upstream-2.39-90.patch
+Patch116: glibc-upstream-2.39-91.patch
+Patch117: glibc-upstream-2.39-92.patch
+Patch118: glibc-upstream-2.39-93.patch
+Patch119: glibc-upstream-2.39-94.patch
+Patch120: RHEL-18039-1.patch
+Patch121: RHEL-18039-2.patch
+
+##############################################################################
+# Continued list of core "glibc" package information:
+##############################################################################
+Obsoletes: glibc-profile < 2.4
+Obsoletes: nscd < 2.35
+Provides: ldconfig
+Provides: /sbin/ldconfig
+Provides: /usr/sbin/ldconfig
+
+# The dynamic linker supports DT_GNU_HASH
+Provides: rtld(GNU_HASH)
+
+# We need libgcc for cancellation support in POSIX threads.
+Requires: libgcc%{_isa}
+
+Requires: glibc-common = %{version}-%{release}
+
+# Various components (regex, glob) have been imported from gnulib.
+Provides: bundled(gnulib)
+
+Requires(pre): basesystem
+Requires: basesystem
+
+%ifarch %{ix86}
+# Automatically install the 32-bit variant if the 64-bit variant has
+# been installed.  This covers the case when glibc.i686 is installed
+# after nss_*.x86_64.  (See below for the other ordering.)
+Recommends: (nss_db(x86-32) if nss_db(x86-64))
+Recommends: (nss_hesiod(x86-32) if nss_hesiod(x86-64))
+# Deinstall the glibc32 package if present.  This helps tests that do
+# not run against the compose.
+Conflicts: glibc32 <= %{version}-%{release}
+Obsoletes: glibc32 <= %{version}-%{release}
+%endif
+
+# This is for building auxiliary programs like memusage
+# For initial glibc bootstraps it can be commented out
+%if %{without bootstrap}
+BuildRequires: gd-devel libpng-devel zlib-devel
+%endif
+%if %{with docs}
+%endif
+%if %{without bootstrap}
+BuildRequires: libselinux-devel >= 1.33.4-3
+%endif
+BuildRequires: audit-libs-devel >= 1.1.3, sed >= 3.95, libcap-devel, gettext
+# We need procps-ng (/bin/ps), util-linux (/bin/kill), and gawk (/bin/awk),
+# but it is more flexible to require the actual programs and let rpm infer
+# the packages. However, until bug 1259054 is widely fixed we avoid the
+# following:
+# BuildRequires: /bin/ps, /bin/kill, /bin/awk
+# And use instead (which should be reverted some time in the future):
+BuildRequires: procps-ng, util-linux, gawk
+BuildRequires: systemtap-sdt-devel
+
+%if %{with valgrind}
+# Require valgrind for smoke testing the dynamic loader to make sure we
+# have not broken valgrind.
+BuildRequires: valgrind
+%endif
+
+# We use python for the microbenchmarks and locale data regeneration
+# from unicode sources (carried out manually). We choose python3
+# explicitly because it supports both use cases.  On some
+# distributions, python3 does not actually install /usr/bin/python3,
+# so we also depend on python3-devel.
+BuildRequires: python3 python3-devel
+
+# This GCC version is needed for -fstack-clash-protection support.
+BuildRequires: gcc >= 7.2.1-6
+%global enablekernel 3.2
+Conflicts: kernel < %{enablekernel}
+%define target %{_target_cpu}-redhat-linux
+%ifarch ppc64le
+%global target ppc64le-redhat-linux
+%endif
+
+# GNU make 4.0 introduced the -O option.
+BuildRequires: make >= 4.0
+
+# The intl subsystem generates a parser using bison.
+BuildRequires: bison >= 2.7
+
+# binutils 2.30-17 is needed for --generate-missing-build-notes.
+BuildRequires: binutils >= 2.30-17
+
+# Earlier releases have broken support for IRELATIVE relocations
+Conflicts: prelink < 0.4.2
+
+%if %{without bootstrap}
+%if %{with testsuite}
+BuildRequires: diffutils
+# The testsuite builds static C++ binaries that require a C++ compiler,
+# static C++ runtime from libstdc++-static, and lastly static glibc.
+BuildRequires: gcc-c++
+BuildRequires: libstdc++-static
+# A configure check tests for the ability to create static C++ binaries
+# before glibc is built and therefore we need a glibc-static for that
+# check to pass even if we aren't going to use any of those objects to
+# build the tests.
+BuildRequires: glibc-static
+
+# libidn2 (but not libidn2-devel) is needed for testing AI_IDN/NI_IDN.
+BuildRequires: libidn2
+
+# The testsuite runs mtrace, which is a perl script
+BuildRequires: perl-interpreter
+%endif
+%endif
+
+# Filter out all GLIBC_PRIVATE symbols since they are internal to
+# the package and should not be examined by any other tool.
+%global __filter_GLIBC_PRIVATE 1
+%global __provides_exclude ^libc_malloc_debug\\.so.*$
+
+# For language packs we have glibc require a virtual dependency
+# "glibc-langpack" wich gives us at least one installed langpack.
+# If no langpack providing 'glibc-langpack' was installed you'd
+# get language-neutral support e.g. C, POSIX, and C.UTF-8 locales.
+# In the past we used to install the glibc-all-langpacks by default
+# but we no longer do this to minimize container and VM sizes.
+# Today you must actively use the language packs infrastructure to
+# install language support.
+Requires: glibc-langpack = %{version}-%{release}
+Suggests: glibc-minimal-langpack = %{version}-%{release}
+
+# Suggest extra gconv modules so that they are installed by default but can be
+# removed if needed to build a minimal OS image.
+Recommends: glibc-gconv-extra%{_isa} = %{version}-%{release}
+# Use redhat-rpm-config as a marker for a buildroot configuration, and
+# unconditionally pull in glibc-gconv-extra in that case.
+Requires: (glibc-gconv-extra%{_isa} = %{version}-%{release} if redhat-rpm-config)
+
+%description
+The glibc package contains standard libraries which are used by
+multiple programs on the system. In order to save disk space and
+memory, as well as to make upgrading easier, common system code is
+kept in one place and shared between programs. This particular package
+contains the most important sets of shared libraries: the standard C
+library and the standard math library. Without these two libraries, a
+Linux system will not function.
+
+######################################################################
+# libnsl subpackage
+######################################################################
+
+%package -n libnsl
+Summary: Legacy support library for NIS
+Requires: %{name}%{_isa} = %{version}-%{release}
+
+%description -n libnsl
+This package provides the legacy version of libnsl library, for
+accessing NIS services.
+
+This library is provided for backwards compatibility only;
+applications should use libnsl2 instead to gain IPv6 support.
+
+##############################################################################
+# glibc "devel" sub-package
+##############################################################################
+%package devel
+Summary: Object files for development using standard C libraries.
+Requires: %{name} = %{version}-%{release}
+Requires: libxcrypt-devel%{_isa} >= 4.0.0
+Requires: kernel-headers >= 3.2
+BuildRequires: kernel-headers >= 3.2
+%if %{need_headers_package}
+Requires: %{headers_package_name} = %{version}-%{release}
+%endif
+%if !(0%{?rhel} > 0 && %{need_headers_package})
+# For backwards compatibility, when the glibc-headers package existed.
+Provides: glibc-headers = %{version}-%{release}
+Provides: glibc-headers(%{_target_cpu})
+Obsoletes: glibc-headers < %{version}-%{release}
+%endif
+
+%description devel
+The glibc-devel package contains the object files necessary
+for developing programs which use the standard C libraries (which are
+used by nearly all programs).  If you are developing programs which
+will use the standard C libraries, your system needs to have these
+standard object files available in order to create the
+executables.
+
+Install glibc-devel if you are going to develop programs which will
+use the standard C libraries.
+
+##############################################################################
+# glibc "doc" sub-package
+##############################################################################
+%if %{with docs}
+%package doc
+Summary: Documentation for GNU libc
+BuildArch: noarch
+Requires: %{name} = %{version}-%{release}
+
+# Removing texinfo will cause check-safety.sh test to fail because it seems to
+# trigger documentation generation based on dependencies.  We need to fix this
+# upstream in some way that doesn't depend on generating docs to validate the
+# texinfo.  I expect it's simply the wrong dependency for that target.
+BuildRequires: texinfo >= 5.0
+
+%description doc
+The glibc-doc package contains The GNU C Library Reference Manual in info
+format.  Additional package documentation is also provided.
+%endif
+
+##############################################################################
+# glibc "static" sub-package
+##############################################################################
+%package static
+Summary: C library static libraries for -static linking.
+Requires: %{name}-devel = %{version}-%{release}
+Requires: libxcrypt-static%{?_isa} >= 4.0.0
+
+%description static
+The glibc-static package contains the C library static libraries
+for -static linking.  You don't need these, unless you link statically,
+which is highly discouraged.
+
+##############################################################################
+# glibc "headers" sub-package
+# - The headers package includes all common headers that are shared amongst
+#   the multilib builds. It avoids file conflicts between the architecture-
+#   specific glibc-devel variants.
+#   Files like gnu/stubs.h which have gnu/stubs-32.h (i686) and gnu/stubs-64.h
+#   are included in glibc-headers, but the -32 and -64 files are in their
+#   respective i686 and x86_64 devel packages.
+##############################################################################
+%if %{need_headers_package}
+%package -n %{headers_package_name}
+Summary: Additional internal header files for glibc-devel.
+Requires: %{name} = %{version}-%{release}
+%if 0%{?rhel} > 0
+Provides: %{name}-headers(%{_target_cpu})
+Obsoletes: glibc-headers-x86 < %{version}-%{release}
+Obsoletes: glibc-headers-s390 < %{version}-%{release}
+%else
+BuildArch: noarch
+%endif
+
+%description -n %{headers_package_name}
+The %{headers_package_name} package contains the architecture-specific
+header files which cannot be included in glibc-devel package.
+%endif
+
+##############################################################################
+# glibc "common" sub-package
+##############################################################################
+%package common
+Summary: Common binaries and locale data for glibc
+Requires: %{name} = %{version}-%{release}
+Recommends: tzdata >= 2003a
+
+%description common
+The glibc-common package includes common binaries for the GNU libc
+libraries, as well as national language (locale) support.
+
+######################################################################
+# File triggers to do ldconfig calls automatically (see rhbz#1380878)
+######################################################################
+
+# File triggers for when libraries are added or removed in standard
+# paths.
+%transfiletriggerin common -P 2000000 -p <lua> -- /lib /usr/lib /lib64 /usr/lib64
+%glibc_post_funcs
+call_ldconfig()
+%end
+
+%transfiletriggerpostun common -P 2000000 -p <lua> -- /lib /usr/lib /lib64 /usr/lib64
+%glibc_post_funcs
+call_ldconfig()
+%end
+
+# We need to run ldconfig manually because __brp_ldconfig assumes that
+# glibc itself is always installed in $RPM_BUILD_ROOT, but with sysroots
+# we may be installed into a subdirectory of that path.  Therefore we
+# unset __brp_ldconfig and run ldconfig by hand with the sysroots path
+# passed to -r.
+%undefine __brp_ldconfig
+
+######################################################################
+
+%package locale-source
+Summary: The sources for the locales
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
+
+%description locale-source
+The sources for all locales provided in the language packs.
+If you are building custom locales you will most likely use
+these sources as the basis for your new locale.
+
+# We define a global regular expression to capture all of the locale
+# sources. We use it later when constructing the various packages.
+%global locale_rx eo syr tok *_*
+
+%{lua:
+-- To make lua-mode happy: '
+
+-- List of supported locales.  This is used to generate the langpack
+-- subpackages below.  This table needs adjustments if the set of
+-- glibc locales changes.  "code" is the glibc code for the language
+-- (before the "_".  "name" is the English translation of the language
+-- name (for use in subpackage descriptions).  "regions" is a table of
+-- variant specifiers (after the "_", excluding "@" and "."
+-- variants/charset specifiers).  The table must be sorted by the code
+-- field, and the regions table must be sorted as well.
+--
+-- English translations of language names can be obtained using (for
+-- the "aa" language in this example):
+--
+-- python3 -c 'import langtable; print(langtable.language_name("aa", languageIdQuery="en"))'
+
+local locales =  {
+  { code="aa", name="Afar", regions={ "DJ", "ER", "ET" } },
+  { code="af", name="Afrikaans", regions={ "ZA" } },
+  { code="agr", name="Aguaruna", regions={ "PE" } },
+  { code="ak", name="Akan", regions={ "GH" } },
+  { code="am", name="Amharic", regions={ "ET" } },
+  { code="an", name="Aragonese", regions={ "ES" } },
+  { code="anp", name="Angika", regions={ "IN" } },
+  {
+    code="ar",
+    name="Arabic",
+    regions={
+      "AE",
+      "BH",
+      "DZ",
+      "EG",
+      "IN",
+      "IQ",
+      "JO",
+      "KW",
+      "LB",
+      "LY",
+      "MA",
+      "OM",
+      "QA",
+      "SA",
+      "SD",
+      "SS",
+      "SY",
+      "TN",
+      "YE" 
+    } 
+  },
+  { code="as", name="Assamese", regions={ "IN" } },
+  { code="ast", name="Asturian", regions={ "ES" } },
+  { code="ayc", name="Southern Aymara", regions={ "PE" } },
+  { code="az", name="Azerbaijani", regions={ "AZ", "IR" } },
+  { code="be", name="Belarusian", regions={ "BY" } },
+  { code="bem", name="Bemba", regions={ "ZM" } },
+  { code="ber", name="Berber", regions={ "DZ", "MA" } },
+  { code="bg", name="Bulgarian", regions={ "BG" } },
+  { code="bhb", name="Bhili", regions={ "IN" } },
+  { code="bho", name="Bhojpuri", regions={ "IN", "NP" } },
+  { code="bi", name="Bislama", regions={ "VU" } },
+  { code="bn", name="Bangla", regions={ "BD", "IN" } },
+  { code="bo", name="Tibetan", regions={ "CN", "IN" } },
+  { code="br", name="Breton", regions={ "FR" } },
+  { code="brx", name="Bodo", regions={ "IN" } },
+  { code="bs", name="Bosnian", regions={ "BA" } },
+  { code="byn", name="Blin", regions={ "ER" } },
+  { code="ca", name="Catalan", regions={ "AD", "ES", "FR", "IT" } },
+  { code="ce", name="Chechen", regions={ "RU" } },
+  { code="chr", name="Cherokee", regions={ "US" } },
+  { code="ckb", name="Central Kurdish", regions={ "IQ" } },
+  { code="cmn", name="Mandarin Chinese", regions={ "TW" } },
+  { code="crh", name="Crimean Turkish", regions={ "RU", "UA" } },
+  { code="cs", name="Czech", regions={ "CZ" } },
+  { code="csb", name="Kashubian", regions={ "PL" } },
+  { code="cv", name="Chuvash", regions={ "RU" } },
+  { code="cy", name="Welsh", regions={ "GB" } },
+  { code="da", name="Danish", regions={ "DK" } },
+  {
+    code="de",
+    name="German",
+    regions={ "AT", "BE", "CH", "DE", "IT", "LI", "LU" } 
+  },
+  { code="doi", name="Dogri", regions={ "IN" } },
+  { code="dsb", name="Lower Sorbian", regions={ "DE" } },
+  { code="dv", name="Divehi", regions={ "MV" } },
+  { code="dz", name="Dzongkha", regions={ "BT" } },
+  { code="el", name="Greek", regions={ "CY", "GR" } },
+  {
+    code="en",
+    name="English",
+    regions={
+      "AG",
+      "AU",
+      "BW",
+      "CA",
+      "DK",
+      "GB",
+      "HK",
+      "IE",
+      "IL",
+      "IN",
+      "NG",
+      "NZ",
+      "PH",
+      "SC",
+      "SG",
+      "US",
+      "ZA",
+      "ZM",
+      "ZW" 
+    } 
+  },
+  { code="eo", name="Esperanto", regions={} },
+  {
+    code="es",
+    name="Spanish",
+    regions={
+      "AR",
+      "BO",
+      "CL",
+      "CO",
+      "CR",
+      "CU",
+      "DO",
+      "EC",
+      "ES",
+      "GT",
+      "HN",
+      "MX",
+      "NI",
+      "PA",
+      "PE",
+      "PR",
+      "PY",
+      "SV",
+      "US",
+      "UY",
+      "VE" 
+    } 
+  },
+  { code="et", name="Estonian", regions={ "EE" } },
+  { code="eu", name="Basque", regions={ "ES" } },
+  { code="fa", name="Persian", regions={ "IR" } },
+  { code="ff", name="Fulah", regions={ "SN" } },
+  { code="fi", name="Finnish", regions={ "FI" } },
+  { code="fil", name="Filipino", regions={ "PH" } },
+  { code="fo", name="Faroese", regions={ "FO" } },
+  { code="fr", name="French", regions={ "BE", "CA", "CH", "FR", "LU" } },
+  { code="fur", name="Friulian", regions={ "IT" } },
+  { code="fy", name="Western Frisian", regions={ "DE", "NL" } },
+  { code="ga", name="Irish", regions={ "IE" } },
+  { code="gbm", name="Garhwali", regions={ "IN" } },
+  { code="gd", name="Scottish Gaelic", regions={ "GB" } },
+  { code="gez", name="Geez", regions={ "ER", "ET" } },
+  { code="gl", name="Galician", regions={ "ES" } },
+  { code="gu", name="Gujarati", regions={ "IN" } },
+  { code="gv", name="Manx", regions={ "GB" } },
+  { code="ha", name="Hausa", regions={ "NG" } },
+  { code="hak", name="Hakka Chinese", regions={ "TW" } },
+  { code="he", name="Hebrew", regions={ "IL" } },
+  { code="hi", name="Hindi", regions={ "IN" } },
+  { code="hif", name="Fiji Hindi", regions={ "FJ" } },
+  { code="hne", name="Chhattisgarhi", regions={ "IN" } },
+  { code="hr", name="Croatian", regions={ "HR" } },
+  { code="hsb", name="Upper Sorbian", regions={ "DE" } },
+  { code="ht", name="Haitian Creole", regions={ "HT" } },
+  { code="hu", name="Hungarian", regions={ "HU" } },
+  { code="hy", name="Armenian", regions={ "AM" } },
+  { code="ia", name="Interlingua", regions={ "FR" } },
+  { code="id", name="Indonesian", regions={ "ID" } },
+  { code="ig", name="Igbo", regions={ "NG" } },
+  { code="ik", name="Inupiaq", regions={ "CA" } },
+  { code="is", name="Icelandic", regions={ "IS" } },
+  { code="it", name="Italian", regions={ "CH", "IT" } },
+  { code="iu", name="Inuktitut", regions={ "CA" } },
+  { code="ja", name="Japanese", regions={ "JP" } },
+  { code="ka", name="Georgian", regions={ "GE" } },
+  { code="kab", name="Kabyle", regions={ "DZ" } },
+  { code="kk", name="Kazakh", regions={ "KZ" } },
+  { code="kl", name="Kalaallisut", regions={ "GL" } },
+  { code="km", name="Khmer", regions={ "KH" } },
+  { code="kn", name="Kannada", regions={ "IN" } },
+  { code="ko", name="Korean", regions={ "KR" } },
+  { code="kok", name="Konkani", regions={ "IN" } },
+  { code="ks", name="Kashmiri", regions={ "IN" } },
+  { code="ku", name="Kurdish", regions={ "TR" } },
+  { code="kv", name="Komi", regions={ "RU" } },
+  { code="kw", name="Cornish", regions={ "GB" } },
+  { code="ky", name="Kyrgyz", regions={ "KG" } },
+  { code="lb", name="Luxembourgish", regions={ "LU" } },
+  { code="lg", name="Ganda", regions={ "UG" } },
+  { code="li", name="Limburgish", regions={ "BE", "NL" } },
+  { code="lij", name="Ligurian", regions={ "IT" } },
+  { code="ln", name="Lingala", regions={ "CD" } },
+  { code="lo", name="Lao", regions={ "LA" } },
+  { code="lt", name="Lithuanian", regions={ "LT" } },
+  { code="lv", name="Latvian", regions={ "LV" } },
+  { code="lzh", name="Literary Chinese", regions={ "TW" } },
+  { code="mag", name="Magahi", regions={ "IN" } },
+  { code="mai", name="Maithili", regions={ "IN", "NP" } },
+  { code="mfe", name="Morisyen", regions={ "MU" } },
+  { code="mg", name="Malagasy", regions={ "MG" } },
+  { code="mhr", name="Meadow Mari", regions={ "RU" } },
+  { code="mi", name="Maori", regions={ "NZ" } },
+  { code="miq", name="Miskito", regions={ "NI" } },
+  { code="mjw", name="Karbi", regions={ "IN" } },
+  { code="mk", name="Macedonian", regions={ "MK" } },
+  { code="ml", name="Malayalam", regions={ "IN" } },
+  { code="mn", name="Mongolian", regions={ "MN" } },
+  { code="mni", name="Manipuri", regions={ "IN" } },
+  { code="mnw", name="Mon", regions={ "MM" } },
+  { code="mr", name="Marathi", regions={ "IN" } },
+  { code="ms", name="Malay", regions={ "MY" } },
+  { code="mt", name="Maltese", regions={ "MT" } },
+  { code="my", name="Burmese", regions={ "MM" } },
+  { code="nan", name="Min Nan Chinese", regions={ "TW" } },
+  { code="nb", name="Norwegian Bokmål", regions={ "NO" } },
+  { code="nds", name="Low German", regions={ "DE", "NL" } },
+  { code="ne", name="Nepali", regions={ "NP" } },
+  { code="nhn", name="Tlaxcala-Puebla Nahuatl", regions={ "MX" } },
+  { code="niu", name="Niuean", regions={ "NU", "NZ" } },
+  { code="nl", name="Dutch", regions={ "AW", "BE", "NL" } },
+  { code="nn", name="Norwegian Nynorsk", regions={ "NO" } },
+  { code="nr", name="South Ndebele", regions={ "ZA" } },
+  { code="nso", name="Northern Sotho", regions={ "ZA" } },
+  { code="oc", name="Occitan", regions={ "FR" } },
+  { code="om", name="Oromo", regions={ "ET", "KE" } },
+  { code="or", name="Odia", regions={ "IN" } },
+  { code="os", name="Ossetic", regions={ "RU" } },
+  { code="pa", name="Punjabi", regions={ "IN", "PK" } },
+  { code="pap", name="Papiamento", regions={ "AW", "CW" } },
+  { code="pl", name="Polish", regions={ "PL" } },
+  { code="ps", name="Pashto", regions={ "AF" } },
+  { code="pt", name="Portuguese", regions={ "BR", "PT" } },
+  { code="quz", name="Cusco Quechua", regions={ "PE" } },
+  { code="raj", name="Rajasthani", regions={ "IN" } },
+  { code="rif", name="Tarifit", regions={ "MA" } },
+  { code="ro", name="Romanian", regions={ "RO" } },
+  { code="ru", name="Russian", regions={ "RU", "UA" } },
+  { code="rw", name="Kinyarwanda", regions={ "RW" } },
+  { code="sa", name="Sanskrit", regions={ "IN" } },
+  { code="sah", name="Sakha", regions={ "RU" } },
+  { code="sat", name="Santali", regions={ "IN" } },
+  { code="sc", name="Sardinian", regions={ "IT" } },
+  { code="sd", name="Sindhi", regions={ "IN" } },
+  { code="se", name="Northern Sami", regions={ "NO" } },
+  { code="sgs", name="Samogitian", regions={ "LT" } },
+  { code="shn", name="Shan", regions={ "MM" } },
+  { code="shs", name="Shuswap", regions={ "CA" } },
+  { code="si", name="Sinhala", regions={ "LK" } },
+  { code="sid", name="Sidamo", regions={ "ET" } },
+  { code="sk", name="Slovak", regions={ "SK" } },
+  { code="sl", name="Slovenian", regions={ "SI" } },
+  { code="sm", name="Samoan", regions={ "WS" } },
+  { code="so", name="Somali", regions={ "DJ", "ET", "KE", "SO" } },
+  { code="sq", name="Albanian", regions={ "AL", "MK" } },
+  { code="sr", name="Serbian", regions={ "ME", "RS" } },
+  { code="ss", name="Swati", regions={ "ZA" } },
+  { code="ssy", name="Saho", regions={ "ER" } },
+  { code="st", name="Southern Sotho", regions={ "ZA" } },
+  { code="su", name="Sudanese", regions={ "ID" } },
+  { code="sv", name="Swedish", regions={ "FI", "SE" } },
+  { code="sw", name="Swahili", regions={ "KE", "TZ" } },
+  { code="syr", name="Syriac", regions={} },
+  { code="szl", name="Silesian", regions={ "PL" } },
+  { code="ta", name="Tamil", regions={ "IN", "LK" } },
+  { code="tcy", name="Tulu", regions={ "IN" } },
+  { code="te", name="Telugu", regions={ "IN" } },
+  { code="tg", name="Tajik", regions={ "TJ" } },
+  { code="th", name="Thai", regions={ "TH" } },
+  { code="the", name="Chitwania Tharu", regions={ "NP" } },
+  { code="ti", name="Tigrinya", regions={ "ER", "ET" } },
+  { code="tig", name="Tigre", regions={ "ER" } },
+  { code="tk", name="Turkmen", regions={ "TM" } },
+  { code="tl", name="Tagalog", regions={ "PH" } },
+  { code="tn", name="Tswana", regions={ "ZA" } },
+  { code="to", name="Tongan", regions={ "TO" } },
+  { code="tok", name="Toki Pona", regions={} },
+  { code="tpi", name="Tok Pisin", regions={ "PG" } },
+  { code="tr", name="Turkish", regions={ "CY", "TR" } },
+  { code="ts", name="Tsonga", regions={ "ZA" } },
+  { code="tt", name="Tatar", regions={ "RU" } },
+  { code="ug", name="Uyghur", regions={ "CN" } },
+  { code="uk", name="Ukrainian", regions={ "UA" } },
+  { code="unm", name="Unami language", regions={ "US" } },
+  { code="ur", name="Urdu", regions={ "IN", "PK" } },
+  { code="uz", name="Uzbek", regions={ "UZ" } },
+  { code="ve", name="Venda", regions={ "ZA" } },
+  { code="vi", name="Vietnamese", regions={ "VN" } },
+  { code="wa", name="Walloon", regions={ "BE" } },
+  { code="wae", name="Walser", regions={ "CH" } },
+  { code="wal", name="Wolaytta", regions={ "ET" } },
+  { code="wo", name="Wolof", regions={ "SN" } },
+  { code="xh", name="Xhosa", regions={ "ZA" } },
+  { code="yi", name="Yiddish", regions={ "US" } },
+  { code="yo", name="Yoruba", regions={ "NG" } },
+  { code="yue", name="Cantonese", regions={ "HK" } },
+  { code="yuw", name="Yau", regions={ "PG" } },
+  { code="zgh", name="Tamazight", regions={ "MA" } },
+  { code="zh", name="Mandarin Chinese", regions={ "CN", "HK", "SG", "TW" } },
+  { code="zu", name="Zulu", regions={ "ZA" } } 
+}
+
+-- Prints a list of LANGUAGE "_" REGION pairs.  The output is expected
+-- to be identical to parse-SUPPORTED.py.  Called from the %%prep section.
+function print_locale_pairs()
+   for i = 1, #locales do
+      local locale = locales[i]
+      if #locale.regions == 0 then
+	 print(locale.code .. "\n")
+      else
+	 for j = 1, #locale.regions do
+	    print(locale.code .. "_" .. locale.regions[j] .. "\n")
+	 end
+      end
+   end
+end
+
+local function compute_supplements(locale)
+   local lang = locale.code
+   local regions = locale.regions
+   result = "langpacks-core-" .. lang
+   for i = 1, #regions do
+      result = result .. " or langpacks-core-" .. lang .. "_" .. regions[i]
+   end
+   return result
+end
+
+-- Emit the definition of a language pack package.
+local function lang_package(locale)
+   local lang = locale.code
+   local langname = locale.name
+   local suppl = compute_supplements(locale)
+   print(rpm.expand([[
+
+%package langpack-]]..lang..[[
+
+Summary: Locale data for ]]..langname..[[
+
+Provides: glibc-langpack = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
+Supplements: ((glibc and (]]..suppl..[[)) unless glibc-all-langpacks)
+%description langpack-]]..lang..[[
+
+The glibc-langpack-]]..lang..[[ package includes the basic information required
+to support the ]]..langname..[[ language in your applications.
+%files -f langpack-]]..lang..[[.filelist langpack-]]..lang..[[
+]]))
+end
+
+for i = 1, #locales do
+   lang_package(locales[i])
+end
+}
+
+# The glibc-all-langpacks provides the virtual glibc-langpack,
+# and thus satisfies glibc's requirement for installed locales.
+# Users can add one more other langauge packs and then eventually
+# uninstall all-langpacks to save space.
+%package all-langpacks
+Summary: All language packs for %{name}.
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
+Provides: %{name}-langpack = %{version}-%{release}
+%description all-langpacks
+
+# No %files, this is an empty package. The C/POSIX and
+# C.UTF-8 files are already installed by glibc. We create
+# minimal-langpack because the virtual provide of
+# glibc-langpack needs at least one package installed
+# to satisfy it. Given that no-locales installed is a valid
+# use case we support it here with this package.
+%package minimal-langpack
+Summary: Minimal language packs for %{name}.
+Provides: glibc-langpack = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
+%description minimal-langpack
+This is a Meta package that is used to install minimal language packs.
+This package ensures you can use C, POSIX, or C.UTF-8 locales, but
+nothing else. It is designed for assembling a minimal system.
+%files minimal-langpack
+
+# Infrequently used iconv converter modules.
+%package gconv-extra
+Summary: All iconv converter modules for %{name}.
+Requires: %{name}%{_isa} = %{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
+
+%description gconv-extra
+This package contains all iconv converter modules built in %{name}.
+
+##############################################################################
+# Subpackages for NSS modules except nss_files, nss_compat, nss_dns
+##############################################################################
+
+# This should remain it's own subpackage or "Provides: nss_db" to allow easy
+# migration from old systems that previously had the old nss_db package
+# installed. Note that this doesn't make the migration that smooth, the
+# databases still need rebuilding because the formats were different.
+# The nss_db package was deprecated in F16 and onwards:
+# https://lists.fedoraproject.org/pipermail/devel/2011-July/153665.html
+# The different database format does cause some issues for users:
+# https://lists.fedoraproject.org/pipermail/devel/2011-December/160497.html
+%package -n nss_db
+Summary: Name Service Switch (NSS) module using hash-indexed files
+Requires: %{name}%{_isa} = %{version}-%{release}
+%ifarch x86_64
+# Automatically install the 32-bit variant if the 64-bit variant has
+# been installed.  This covers the case when glibc.i686 is installed
+# before nss_db.x86_64.  (See above for the other ordering.)
+Recommends: (nss_db(x86-32) if glibc(x86-32))
+%endif
+
+%description -n nss_db
+The nss_db Name Service Switch module uses hash-indexed files in /var/db
+to speed up user, group, service, host name, and other NSS-based lookups.
+
+%package -n nss_hesiod
+Summary: Name Service Switch (NSS) module using Hesiod
+Requires: %{name}%{_isa} = %{version}-%{release}
+%ifarch x86_64
+# Automatically install the 32-bit variant if the 64-bit variant has
+# been installed.  This covers the case when glibc.i686 is installed
+# before nss_hesiod.x86_64.  (See above for the other ordering.)
+Recommends: (nss_hesiod(x86-32) if glibc(x86-32))
+%endif
+
+%description -n nss_hesiod
+The nss_hesiod Name Service Switch module uses the Domain Name System
+(DNS) as a source for user, group, and service information, following
+the Hesiod convention of Project Athena.
+
+%package nss-devel
+Summary: Development files for directly linking NSS service modules
+Requires: %{name}%{_isa} = %{version}-%{release}
+Requires: nss_db%{_isa} = %{version}-%{release}
+Requires: nss_hesiod%{_isa} = %{version}-%{release}
+
+%description nss-devel
+The glibc-nss-devel package contains the object files necessary to
+compile applications and libraries which directly link against NSS
+modules supplied by glibc.
+
+This is a rare and special use case; regular development has to use
+the glibc-devel package instead.
+
+##############################################################################
+# glibc "utils" sub-package
+##############################################################################
+%package utils
+Summary: Development utilities from GNU C library
+Requires: %{name} = %{version}-%{release}
+Requires: /usr/bin/perl
+
+%description utils
+The glibc-utils package contains memusage, a memory usage profiler,
+mtrace, a memory leak tracer and xtrace, a function call tracer
+which can be helpful during program debugging.
+
+If unsure if you need this, don't install this package.
+
+%if %{with benchtests}
+%package benchtests
+Summary: Benchmarking binaries and scripts for %{name}
+%description benchtests
+This package provides built benchmark binaries and scripts to run
+microbenchmark tests on the system.
+%endif
+
+##############################################################################
+# compat-libpthread-nonshared
+# See: https://sourceware.org/bugzilla/show_bug.cgi?id=23500
+##############################################################################
+%package -n compat-libpthread-nonshared
+Summary: Compatibility support for linking against libpthread_nonshared.a.
+
+%description -n compat-libpthread-nonshared
+This package provides compatibility support for applications that expect
+libpthread_nonshared.a to exist. The support provided is in the form of
+an empty libpthread_nonshared.a that allows dynamic links to succeed.
+Such applications should be adjusted to avoid linking against
+libpthread_nonshared.a which is no longer used. The static library
+libpthread_nonshared.a is an internal implementation detail of the C
+runtime and should not be expected to exist.
+
+%if %{without bootstrap}
+%package -n %sysroot_package_arch
+Summary: Sysroot package for glibc, %{_arch} architecture
+BuildArch: noarch
+Provides: sysroot-%{_arch}-%{name}
+# The files are not usable for execution, so do not provide nor
+# require anything.
+AutoReqProv: no
+
+%description -n %sysroot_package_arch
+This package contains development files for the glibc package
+that can be installed across architectures.
+%dnl %%{without bootstrap}
+%endif
+
+##############################################################################
+# glibc32 (only for use in building GCC, not shipped)
+##############################################################################
+%ifarch x86_64
+%package -n glibc32
+Summary: The GNU libc libraries (32-bit)
+Conflicts: glibc(x86-32)
+%dnl The gcc package does not use ELF dependencies to install glibc32:
+%dnl BuildRequires: (glibc32 or glibc-devel(%{__isa_name}-32))
+%dnl Not generating the ELF dependencies for glibc32 makes it less likely
+%dnl that the package is selected by accident over glibc.i686.
+AutoReqProv: no
+
+%description -n glibc32
+This package is only used for internal building of multilib aware
+packages, like gcc, due to a technical limitation in the distribution
+build environment. Any package which needs both 32-bit and 64-bit
+runtimes at the same time must install glibc32 (marked as a 64-bit
+package) to access the 32-bit development files during a 64-bit build.
+
+This package is not supported or intended for use outside of the
+distribution build enviroment. Regular users can install both 32-bit and
+64-bit runtimes and development files without any problems.
+
+%endif
+
+##############################################################################
+# Prepare for the build.
+##############################################################################
+%prep
+%autosetup -n %{glibcsrcdir} -p1
+
+##############################################################################
+# %%prep - Additional prep required...
+##############################################################################
+# Make benchmark scripts executable
+chmod +x benchtests/scripts/*.py scripts/pylint
+
+# Remove all files generated from patching.
+find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \;
+
+# Ensure timestamps on configure files are current to prevent
+# regenerating them.
+touch `find . -name configure`
+
+# Ensure *-kw.h files are current to prevent regenerating them.
+touch locale/programs/*-kw.h
+
+# Verify that our locales table is compatible with the locales table
+# in the spec file.
+set +x
+echo '%{lua: print_locale_pairs()}' > localedata/SUPPORTED.spec
+set -x
+python3 %{SOURCE11} localedata/SUPPORTED > localedata/SUPPORTED.glibc
+diff -u \
+  --label "spec file" localedata/SUPPORTED.spec \
+  --label "glibc localedata/SUPPORTED" localedata/SUPPORTED.glibc
+rm localedata/SUPPORTED.spec localedata/SUPPORTED.glibc
+
+##############################################################################
+# Build glibc...
+##############################################################################
+%build
+# Log osystem information
+uname -a
+LD_SHOW_AUXV=1 /bin/true
+ld.so --list-diagnostics || true
+ld.so --list-tunables || true
+cat /proc/cpuinfo
+cat /proc/sysinfo 2>/dev/null || true
+cat /proc/meminfo
+df
+
+# Propgate select compiler flags from redhat-rpm-config.  These flags
+# are target-dependent, so we use only those which are specified in
+# redhat-rpm-config.  We keep the -m32/-m32/-m64 flags to support
+# multilib builds.
+
+%{lua:
+-- Split the string argument into keys of an associate array.
+-- The values are set to true.
+local function string_to_array(s)
+    local result = {}
+    for e in string.gmatch(s, "%S+") do
+        result[e] = true
+    end
+    return result
+end
+
+local inherit_flags = {}
+
+-- These flags are put into the CC and CXX arguments to configure.
+-- Alternate builds do not use the flags listed here, only the main build does.
+inherit_flags.cc_main = string_to_array [[
+-march=armv8-a+lse
+-march=armv8.1-a
+-march=haswell
+-march=i686
+-march=x86-64
+-march=x86-64-v2
+-march=x86-64-v3
+-march=x86-64-v4
+-march=z13
+-march=z14
+-march=z15
+-march=zEC12
+-mcpu=power10
+-mcpu=power8
+-mcpu=power9
+-mtune=generic
+-mtune=power10
+-mtune=power8
+-mtune=power9
+-mtune=z13
+-mtune=z14
+-mtune=z15
+-mtune=zEC12
+]]
+
+-- Like inherit_flags_cc_main, but also used for alternate builds.
+inherit_flags.cc = string_to_array [[
+-m31
+-m32
+-m64
+]]
+
+-- These flags are passed through CFLAGS and CXXFLAGS.
+inherit_flags.cflags = string_to_array [[
+-O2
+-O3
+-Wall
+-Wp,-D_GLIBCXX_ASSERTIONS
+-fasynchronous-unwind-tables
+-fno-omit-frame-pointer
+-fstack-clash-protection
+-funwind-tables
+-g
+-mbackchain
+-mbranch-protection=standard
+-mfpmath=sse
+-mno-omit-leaf-frame-pointer
+-msse2
+-mstackrealign
+-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1
+]]
+
+-- Iterate over the build_cflags RPM variable and emit a shell
+-- variable that contains the inherited flags of the indicated variant.
+local function shell_build_flags(variant)
+    local result = {}
+    local inherit = assert(inherit_flags[variant])
+    for f in string.gmatch(rpm.expand("%build_cflags"), "%S+") do
+        if inherit[f] then
+	    result[#result + 1] = f
+	end
+    end
+    print("glibc_flags_" .. variant .. "=\"" .. table.concat(result, " ")
+          .. "\"\n")
+end
+
+shell_build_flags('cc_main') -- Set $glibc_flags_cc_main.
+shell_build_flags('cc') -- Set $glibc_flags_cc.
+shell_build_flags('cflags') -- Set $glibc_flags_cflags.
+}
+
+%if 0%{?_annotated_build} > 0
+# libc_nonshared.a cannot be built with the default hardening flags
+# because the glibc build system is incompatible with
+# -D_FORTIFY_SOURCE.  The object files need to be marked as to be
+# skipped in annobin annotations.  (The -specs= variant of activating
+# annobin does not work here because of flag ordering issues.)
+# See <https://bugzilla.redhat.com/show_bug.cgi?id=1668822>.
+BuildFlagsNonshared="-fplugin=annobin -fplugin-arg-annobin-disable -Wa,--generate-missing-build-notes=yes"
+%endif
+
+# Special flag to enable annobin annotations for statically linked
+# assembler code.  Needs to be passed to make; not preserved by
+# configure.
+%global glibc_make_flags_as ASFLAGS="-g -Wa,--generate-missing-build-notes=yes"
+%global glibc_make_flags %{glibc_make_flags_as}
+
+##############################################################################
+# %%build - Generic options.
+##############################################################################
+EnableKernel="--enable-kernel=%{enablekernel}"
+
+##############################################################################
+# build()
+#	Build glibc in the directory $1, passing the rest of the arguments
+#	as additional configure arguments.  Several
+#	global values are used to determine build flags, kernel version,
+#	system tap support, etc.
+##############################################################################
+build()
+{
+	local builddir=$1
+	shift
+	rm -rf $builddir
+	mkdir $builddir
+	pushd $builddir
+	../configure "$@" \
+		--prefix=%{_prefix} \
+		--with-headers=%{_prefix}/include $EnableKernel \
+		--with-nonshared-cflags="$BuildFlagsNonshared" \
+		--enable-bind-now \
+		--build=%{target} \
+		--enable-stack-protector=strong \
+		--enable-systemtap \
+%ifarch %{ix86}
+		--disable-multi-arch \
+%endif
+%if %{without werror}
+		--disable-werror \
+%endif
+		--disable-profile \
+%if %{with bootstrap}
+		--without-selinux \
+%endif
+%ifarch aarch64
+		--enable-memory-tagging \
+%endif
+		--disable-crypt \
+	        --disable-build-nscd \
+	        --disable-nscd \
+		--enable-fortify-source ||
+		{ cat config.log; false; }
+
+	# We enable DT_GNU_HASH and DT_HASH for ld.so and DSOs to improve
+	# compatibility with applications that expect DT_HASH e.g. Epic Games
+	# Easy Anti-Cheat.  This is temporary as applications move to
+	# supporting only DT_GNU_HASH.  This was initially enabled in Fedora
+	# 37.  We must use 'env' because it is the only way to pass, via the
+	# environment, two variables that set the initial Makefile values for
+	# LDFLAGS used to build shared objects and the dynamic loader.
+	env LDFLAGS.so="-Wl,--hash-style=both" \
+		LDFLAGS-rtld="-Wl,--hash-style=both" \
+		%make_build -r %{glibc_make_flags}
+	popd
+}
+
+%ifarch x86_64
+# Build for the glibc32 package.
+build build-%{target}-32 \
+  CC="gcc -m32" \
+  CXX="g++ -m32" \
+  CFLAGS="${glibc_flags_cflags/-m64/-m32}" \
+  --host=i686-linux-gnu \
+#
+%endif
+
+# Default set of compiler options.
+build build-%{target} \
+  CC="gcc $glibc_flags_cc $glibc_flags_cc_main" \
+  CXX="g++ $glibc_flags_cc $glibc_flags_cc_main" \
+  CFLAGS="$glibc_flags_cflags" \
+  %{?glibc_rtld_early_cflags:--with-rtld-early-cflags=%glibc_rtld_early_cflags} \
+%ifarch x86_64
+  --enable-cet \
+%endif
+#
+
+# POWER10 build variant.
+%if %{buildpower10}
+build build-%{target}-power10 \
+  CC="gcc $glibc_flags_cc" \
+  CXX="g++ $glibc_flags_cc" \
+  CFLAGS="$glibc_flags_cflags" \
+  --with-cpu=power10 \
+#
+%endif
+
+
+##############################################################################
+# Install glibc...
+##############################################################################
+%install
+
+# The built glibc is installed into a subdirectory of $RPM_BUILD_ROOT.
+# For a system glibc that subdirectory is "/" (the root of the filesystem).
+# This is called a sysroot (system root) and can be changed if we have a
+# distribution that supports multiple installed glibc versions.
+%global glibc_sysroot $RPM_BUILD_ROOT
+
+# Remove existing file lists.
+find . -type f -name '*.filelist' -exec rm -rf {} \;
+
+%ifarch riscv64
+# RISC-V ABI wants to install everything in /lib64/lp64d or /usr/lib64/lp64d.
+# Make these be symlinks to /lib64 or /usr/lib64 respectively.  See:
+# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/DRHT5YTPK4WWVGL3GIN5BF2IKX2ODHZ3/
+for d in %{glibc_sysroot}%{_libdir} %{glibc_sysroot}/%{_lib}; do
+	mkdir -p $d
+	(cd $d && ln -sf . lp64d)
+done
+%endif
+
+%ifarch x86_64
+# Install for the glibc32 package.
+pushd build-%{target}-32
+%make_build install_root=%{glibc_sysroot} install
+popd
+pushd %{glibc_sysroot}
+rm -rf etc sbin var usr/bin usr/lib/gconv usr/libexec usr/sbin usr/share
+rm -f lib/libnss_db* lib/libnss_hesiod* lib/libnsl* usr/lib/libnsl* usr/lib/libnss*
+rm usr/lib/libc_malloc_debug.so
+strip -g usr/lib/*.o
+mv lib/{libmemusage,libpcprofile}.so usr/lib/
+popd
+%endif
+
+# Build and install:
+pushd build-%{target}
+%make_build install_root=%{glibc_sysroot} install
+%make_build install_root=%{glibc_sysroot} \
+	install-locale-files -C ../localedata objdir=`pwd`
+popd
+# Locale creation via install-locale-files does not group identical files
+# via hardlinks, so we must group them ourselves.
+hardlink -c %{glibc_sysroot}/usr/lib/locale
+
+# install_different:
+#	Install all core libraries into DESTDIR/SUBDIR. Either the file is
+#	installed as a copy or a symlink to the default install (if it is the
+#	same). The path SUBDIR_UP is the prefix used to go from
+#	DESTDIR/SUBDIR to the default installed libraries e.g.
+#	ln -s SUBDIR_UP/foo.so DESTDIR/SUBDIR/foo.so.
+#	When you call this function it is expected that you are in the root
+#	of the build directory, and that the default build directory is:
+#	"../build-%{target}" (relatively).
+#	The primary use of this function is to install alternate runtimes
+#	into the build directory and avoid duplicating this code for each
+#	runtime.
+install_different()
+{
+	local lib libbase libbaseso dlib
+	local destdir="$1"
+	local subdir="$2"
+	local subdir_up="$3"
+	local libdestdir="$destdir/$subdir"
+	# All three arguments must be non-zero paths.
+	if ! [ "$destdir" \
+	       -a "$subdir" \
+	       -a "$subdir_up" ]; then
+		echo "One of the arguments to install_different was emtpy."
+		exit 1
+	fi
+	# Create the destination directory and the multilib directory.
+	mkdir -p "$destdir"
+	mkdir -p "$libdestdir"
+	# Walk all of the libraries we installed...
+	for lib in libc math/libm
+	do
+		libbase=${lib#*/}
+		# Take care that `libbaseso' has a * that needs expanding so
+		# take care with quoting.
+		libbaseso=$(basename %{glibc_sysroot}/%{_lib}/${libbase}.so.*)
+		# Only install if different from default build library.
+		if cmp -s ${lib}.so ../build-%{target}/${lib}.so; then
+			ln -sf "$subdir_up"/$libbaseso $libdestdir/$libbaseso
+		else
+			cp -a ${lib}.so $libdestdir/$libbaseso
+		fi
+	done
+}
+
+%if %{buildpower10}
+pushd build-%{target}-power10
+install_different "$RPM_BUILD_ROOT/%{_libdir}/glibc-hwcaps" power10 ..
+popd
+%endif
+
+
+##############################################################################
+# Remove the files we don't want to distribute
+##############################################################################
+
+# Remove the libNoVersion files.
+# XXX: This looks like a bug in glibc that accidentally installed these
+#      wrong files. We probably don't need this today.
+rm -f %{glibc_sysroot}/%{_libdir}/libNoVersion*
+rm -f %{glibc_sysroot}/%{_lib}/libNoVersion*
+
+# Remove the old nss modules.
+rm -f %{glibc_sysroot}/%{_lib}/libnss1-*
+rm -f %{glibc_sysroot}/%{_lib}/libnss-*.so.1
+
+# This statically linked binary is no longer necessary in a world where
+# the default Fedora install uses an initramfs, and further we have rpm-ostree
+# which captures the whole userspace FS tree.
+# Further, see https://github.com/projectatomic/rpm-ostree/pull/1173#issuecomment-355014583
+rm -f %{glibc_sysroot}/{usr/,}sbin/sln
+
+######################################################################
+# Run ldconfig to create all the symbolic links we need
+######################################################################
+
+# Note: This has to happen before creating /etc/ld.so.conf.
+
+mkdir -p %{glibc_sysroot}/var/cache/ldconfig
+truncate -s 0 %{glibc_sysroot}/var/cache/ldconfig/aux-cache
+
+# ldconfig is statically linked, so we can use the new version.
+%{glibc_sysroot}/sbin/ldconfig -N -r %{glibc_sysroot}
+
+##############################################################################
+# Install info files
+##############################################################################
+
+%if %{with docs}
+# Move the info files if glibc installed them into the wrong location.
+if [ -d %{glibc_sysroot}%{_prefix}/info -a "%{_infodir}" != "%{_prefix}/info" ]; then
+  mkdir -p %{glibc_sysroot}%{_infodir}
+  mv -f %{glibc_sysroot}%{_prefix}/info/* %{glibc_sysroot}%{_infodir}
+  rm -rf %{glibc_sysroot}%{_prefix}/info
+fi
+
+# Compress all of the info files.
+gzip -9nvf %{glibc_sysroot}%{_infodir}/libc*
+
+# Copy the debugger interface documentation over to the right location
+mkdir -p %{glibc_sysroot}%{_docdir}/glibc
+cp elf/rtld-debugger-interface.txt %{glibc_sysroot}%{_docdir}/glibc
+cp posix/gai.conf %{glibc_sysroot}%{_docdir}/glibc
+%else
+rm -f %{glibc_sysroot}%{_infodir}/dir
+rm -f %{glibc_sysroot}%{_infodir}/libc.info*
+%endif
+
+##############################################################################
+# Create locale sub-package file lists
+##############################################################################
+
+olddir=`pwd`
+pushd %{glibc_sysroot}%{_prefix}/lib/locale
+rm -f locale-archive
+$olddir/build-%{target}/elf/ld.so \
+        --library-path $olddir/build-%{target}/ \
+        $olddir/build-%{target}/locale/localedef \
+	--alias-file=$olddir/intl/locale.alias \
+        --prefix %{glibc_sysroot} --add-to-archive \
+        %locale_rx
+# Historically, glibc-all-langpacks deleted the file on updates (sic),
+# so we need to restore it in the posttrans scriptlet (like the old
+# glibc-all-langpacks versions)
+ln locale-archive locale-archive.real
+
+# Almost half the LC_CTYPE files in langpacks are identical to the C.utf8
+# variant which is installed by default.  When we keep them as hardlinks,
+# each langpack ends up retaining a copy.  If we convert these to symbolic
+# links instead, we save ~350K each when they get installed that way.
+#
+# LC_MEASUREMENT and LC_PAPER also have several duplicates but we don't
+# bother with these because they are only ~30 bytes each.
+pushd %{glibc_sysroot}/usr/lib/locale
+for f in $(find %locale_rx -samefile C.utf8/LC_CTYPE); do
+  rm $f && ln -s '../C.utf8/LC_CTYPE' $f
+done
+popd
+
+# Create the file lists for the language specific sub-packages:
+for i in %locale_rx 
+do
+    lang=${i%%_*}
+    if [ ! -e langpack-${lang}.filelist ]; then
+        echo "%dir %{_prefix}/lib/locale" >> langpack-${lang}.filelist
+    fi
+    echo "%dir  %{_prefix}/lib/locale/$i" >> langpack-${lang}.filelist
+    echo "%{_prefix}/lib/locale/$i/*" >> langpack-${lang}.filelist
+done
+popd
+pushd %{glibc_sysroot}%{_prefix}/share/locale
+for i in */LC_MESSAGES/libc.mo
+do
+    locale=${i%%%%/*}
+    lang=${locale%%%%_*}
+    echo "%lang($lang) %{_prefix}/share/locale/${i}" \
+         >> %{glibc_sysroot}%{_prefix}/lib/locale/langpack-${lang}.filelist
+done
+popd
+mv  %{glibc_sysroot}%{_prefix}/lib/locale/*.filelist .
+
+##############################################################################
+# Install configuration files for services
+##############################################################################
+
+# Include ld.so.conf
+echo 'include ld.so.conf.d/*.conf' > %{glibc_sysroot}/etc/ld.so.conf
+truncate -s 0 %{glibc_sysroot}/etc/ld.so.cache
+chmod 644 %{glibc_sysroot}/etc/ld.so.conf
+mkdir -p %{glibc_sysroot}/etc/ld.so.conf.d
+truncate -s 0 %{glibc_sysroot}/etc/gai.conf
+
+# Include %{_libdir}/gconv/gconv-modules.cache
+truncate -s 0 %{glibc_sysroot}%{_libdir}/gconv/gconv-modules.cache
+chmod 644 %{glibc_sysroot}%{_libdir}/gconv/gconv-modules.cache
+
+# Remove any zoneinfo files; they are maintained by tzdata.
+rm -rf %{glibc_sysroot}%{_prefix}/share/zoneinfo
+
+# Make sure %config files have the same timestamp across multilib packages.
+#
+# XXX: Ideally ld.so.conf should have the timestamp of the spec file, but there
+# doesn't seem to be any macro to give us that.  So we do the next best thing,
+# which is to at least keep the timestamp consistent. The choice of using
+# SOURCE0 is arbitrary.
+touch -r %{SOURCE0} %{glibc_sysroot}/etc/ld.so.conf
+touch -r inet/etc.rpc %{glibc_sysroot}/etc/rpc
+
+%if %{with benchtests}
+# Build benchmark binaries.  Ignore the output of the benchmark runs.
+pushd build-%{target}
+make BENCH_DURATION=1 bench-build
+popd
+
+# Copy over benchmark binaries.
+mkdir -p %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests
+cp $(find build-%{target}/benchtests -type f -executable) %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
+# ... and the makefile.
+for b in %{SOURCE1} %{SOURCE2}; do
+	cp $b %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
+done
+# .. and finally, the comparison scripts.
+cp benchtests/scripts/benchout.schema.json %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
+cp benchtests/scripts/compare_bench.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
+cp benchtests/scripts/import_bench.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
+cp benchtests/scripts/validate_benchout.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
+%endif
+
+# The #line directives gperf generates do not give the proper
+# file name relative to the build directory.
+pushd locale
+ln -s programs/*.gperf .
+popd
+pushd iconv
+ln -s ../locale/programs/charmap-kw.gperf .
+popd
+
+%if %{with docs}
+# Remove the `dir' info-heirarchy file which will be maintained
+# by the system as it adds info files to the install.
+rm -f %{glibc_sysroot}%{_infodir}/dir
+%endif
+
+# Move libpcprofile.so and libmemusage.so into the proper library directory.
+# They can be moved without any real consequences because users would not use
+# them directly.
+mkdir -p %{glibc_sysroot}%{_libdir}
+mv -f %{glibc_sysroot}/%{_lib}/lib{pcprofile,memusage}.so \
+	%{glibc_sysroot}%{_libdir}
+
+# Disallow linking against libc_malloc_debug.
+rm %{glibc_sysroot}%{_libdir}/libc_malloc_debug.so
+
+# Strip all of the installed object files.
+strip -g %{glibc_sysroot}%{_libdir}/*.o
+
+# The xtrace and memusage scripts have hard-coded paths that need to be
+# translated to a correct set of paths using the $LIB token which is
+# dynamically translated by ld.so as the default lib directory.
+for i in %{glibc_sysroot}%{_prefix}/bin/{xtrace,memusage}; do
+%if %{with bootstrap}
+  test -w $i || continue
+%endif
+  sed -e 's~=/%{_lib}/libpcprofile.so~=%{_libdir}/libpcprofile.so~' \
+      -e 's~=/%{_lib}/libmemusage.so~=%{_libdir}/libmemusage.so~' \
+      -e 's~='\''/\\\$LIB/libpcprofile.so~='\''%{_prefix}/\\$LIB/libpcprofile.so~' \
+      -e 's~='\''/\\\$LIB/libmemusage.so~='\''%{_prefix}/\\$LIB/libmemusage.so~' \
+      -i $i
+done
+
+##############################################################################
+# Build an empty libpthread_nonshared.a for compatiliby with applications
+# that have old linker scripts that reference this file. We ship this only
+# in compat-libpthread-nonshared sub-package.
+##############################################################################
+ar cr %{glibc_sysroot}%{_prefix}/%{_lib}/libpthread_nonshared.a
+
+###############################################################################
+# Sysroot package creation.
+###############################################################################
+
+%if %{without bootstrap}
+mkdir -p %{glibc_sysroot}/%{sysroot_prefix}
+pushd %{glibc_sysroot}/%{sysroot_prefix}
+mkdir -p usr/lib usr/lib64
+
+cp -a %{glibc_sysroot}/%{_prefix}/include usr/.
+%ifarch x86_64
+# 32-bit headers for glibc32 don't go in the sysroot.
+rm usr/include/gnu/*-32.h
+%endif
+for lib in lib lib64;  do
+%ifarch x86_64
+    if [ "$lib" = "lib" ]; then
+	# 32-bit libraries built for glibc32 don't go in the sysroot.
+	continue
+    fi
+%endif
+    for pfx in "" %{_prefix}/; do
+	if test -d %{glibc_sysroot}/$pfx$lib ; then
+	    # Implement UsrMove: everything goes into usr/$lib.  Only
+	    # copy files directly in $lib.
+	    find %{glibc_sysroot}/$pfx$lib -maxdepth 1 -type f \
+		| xargs -I '{}' cp  '{}' usr/$lib/.
+	    # Symbolic links need to be adjusted for UsrMove: They
+	    # need to stay within the same directory.
+	    for sl in `find %{glibc_sysroot}/$pfx$lib -maxdepth 1 -type l`; do
+		set +x
+		slbase=$(basename $sl)
+		sltarget=$(basename $(readlink $sl))
+		if test "$sltarget" = . ; then
+		    # This is the lp64d symbolic link on riscv64, see above.
+		    continue
+		fi
+		if ! test -r usr/$lib/$sltarget; then
+		    echo "$sl: inferred $sltarget ($(readlink $sl)) missing"
+		    exit 1
+		fi
+		set -x
+		ln -s $sltarget usr/$lib/$slbase
+	    done
+	fi
+    done
+done
+
+# Workaround for the lack of a kernel sysroot package.  Copy the
+# kernel headers into the sysroot.
+rpm -ql kernel-headers | grep "^/usr/include" | while read f ; do
+    if test -f "$f" ; then
+        install -D "$f" "./$f"
+    fi
+done
+
+# Remove the executable bit from files in the sysroot.  This prevents
+# debuginfo extraction.
+find -type f | xargs chmod a-x
+
+# Use sysroot-relative paths in linker script.  Ignore symbolic links.
+sed -e 's,\([^0-9a-zA-Z=*]/lib\),/usr/lib,g' \
+    -e 's,\([^0-9a-zA-Z=*]\)/,\1/,g' \
+    -i $(find -type f -name 'lib[cm].so')
+
+popd
+%dnl %%{without bootstrap}
+%endif
+
+##############################################################################
+# Beyond this point in the install process we no longer modify the set of
+# installed files.
+##############################################################################
+
+##############################################################################
+# Build the file lists used for describing the package and subpackages.
+##############################################################################
+# There are several main file lists (and many more for
+# the langpack sub-packages (langpack-${lang}.filelist)):
+# * master.filelist
+#	- Master file list from which all other lists are built.
+# * glibc.filelist
+#	- Files for the glibc packages.
+# * common.filelist
+#	- Flies for the common subpackage.
+# * utils.filelist
+#	- Files for the utils subpackage.
+# * devel.filelist
+#	- Files for the devel subpackage.
+# * doc.filelist
+#	- Files for the documentation subpackage.
+# * headers.filelist
+#	- Files for the headers subpackage.
+# * static.filelist
+#	- Files for the static subpackage.
+# * libnsl.filelist
+#       - Files for the libnsl subpackage
+# * nss_db.filelist
+# * nss_hesiod.filelist
+#       - File lists for nss_* NSS module subpackages.
+# * nss-devel.filelist
+#       - File list with the .so symbolic links for NSS packages.
+# * compat-libpthread-nonshared.filelist.
+#	- File list for compat-libpthread-nonshared subpackage.
+# * glibc32.filelist
+#	- Files for the glibc32 packages.
+
+# Create the main file lists. This way we can append to any one of them later
+# wihtout having to create it. Note these are removed at the start of the
+# install phase.
+touch master.filelist
+touch glibc.filelist
+touch common.filelist
+touch utils.filelist
+touch gconv.filelist
+touch devel.filelist
+touch doc.filelist
+touch headers.filelist
+touch static.filelist
+touch libnsl.filelist
+touch nss_db.filelist
+touch nss_hesiod.filelist
+touch nss-devel.filelist
+touch compat-libpthread-nonshared.filelist
+%ifarch x86_64
+touch glibc32.filelist
+%endif
+
+###############################################################################
+# Master file list, excluding a few things.
+###############################################################################
+{
+  # List all files or links that we have created during install.
+  # Files with 'etc' are configuration files, likewise 'gconv-modules'
+  # and 'gconv-modules.cache' are caches, and we exclude them.
+  find %{glibc_sysroot} \( -type f -o -type l \) \
+       \( \
+	 -name etc -printf "%%%%config " -o \
+	 -name gconv-modules.cache \
+	 -printf "%%%%verify(not md5 size mtime) " -o \
+	 -name gconv-modules* \
+	 -printf "%%%%verify(not md5 size mtime) %%%%config(noreplace) " \
+	 , \
+	 ! -path "*/lib/debug/*" -printf "/%%P\n" \)
+  # List all directories with a %%dir prefix.  We omit the info directory and
+  # all directories in (and including) /usr/share/locale.
+  find %{glibc_sysroot} -type d \
+       \( -path '*%{_prefix}/share/locale' -prune -o \
+       \( -path '*%{_prefix}/share/*' \
+%if %{with docs}
+	! -path '*%{_infodir}' -o \
+%endif
+	  -path "*%{_prefix}/include/*" \
+       \) -printf "%%%%dir /%%P\n" \)
+} | {
+  # Also remove the *.mo entries.  We will add them to the
+  # language specific sub-packages.
+  # libnss_ files go into subpackages related to NSS modules.
+  # and .*/share/i18n/charmaps/.*), they go into the sub-package
+  # "locale-source".  /sys-root/ files are put into the sysroot package.
+  sed -e '\,.*/share/locale/\([^/_]\+\).*/LC_MESSAGES/.*\.mo,d' \
+      -e '\,.*/share/i18n/locales/.*,d' \
+      -e '\,.*/share/i18n/charmaps/.*,d' \
+      -e '\,.*/etc/\(localtime\|nsswitch.conf\|ld\.so\.conf\|ld\.so\.cache\|default\|rpc\|gai\.conf\),d' \
+      -e '\,.*/%{_libdir}/lib\(pcprofile\|memusage\)\.so,d' \
+      -e '\,.*/bin/\(memusage\|mtrace\|xtrace\|pcprofiledump\),d' \
+      -e '\,.*/sys-root,d'
+} | sort > master.filelist
+
+# The master file list is now used by each subpackage to list their own
+# files. We go through each package and subpackage now and create their lists.
+# Each subpackage picks the files from the master list that they need.
+# The order of the subpackage list generation does not matter.
+
+# Make the master file list read-only after this point to avoid accidental
+# modification.
+chmod 0444 master.filelist
+
+###############################################################################
+# glibc
+###############################################################################
+
+# Add all files with the following exceptions:
+# - The info files '%{_infodir}/dir'
+# - The partial (lib*_p.a) static libraries, include files.
+# - The static files, objects, and unversioned DSOs.
+# - The bin, locale, some sbin, and share.
+#   - We want iconvconfig in the main package and we do this by using
+#     a double negation of -v and [^i] so it removes all files in
+#     sbin *but* iconvconfig.
+# - All the libnss files (we add back the ones we want later).
+# - libc_malloc_debug.so, since it is a debugging library.
+# - All bench test binaries.
+# - The aux-cache, since it's handled specially in the files section.
+# - Extra gconv modules.  We add the required modules later.
+cat master.filelist \
+	| grep -v \
+	-e '%{_infodir}' \
+	-e '%{_libdir}/lib.*_p.a' \
+	-e '%{_prefix}/include' \
+	-e '%{_libdir}/lib.*\.a' \
+        -e '%{_libdir}/.*\.o' \
+	-e '%{_libdir}/lib.*\.so' \
+	-e '%{_libdir}/gconv/.*\.so$' \
+	-e '%{_libdir}/gconv/gconv-modules.d/gconv-modules-extra\.conf$' \
+	-e '%{_prefix}/bin' \
+	-e '%{_prefix}/lib/locale' \
+	-e '%{_prefix}/sbin/[^i]' \
+	-e '%{_prefix}/share' \
+	-e '/var/db/Makefile' \
+	-e '/libnss_.*\.so[0-9.]*$' \
+	-e '/libnsl' \
+%if %{glibc_ship_tracelibs_in_utils}
+	-e 'libc_malloc_debug\.so' \
+%endif
+	-e 'glibc-benchtests' \
+	-e 'aux-cache' \
+%ifarch x86_64
+%dnl Exclude 32-bit libraries built for glibc32.
+	-e '/lib/.*\.o' \
+	-e '/lib/.*\.a' \
+	-e '/lib/.*\.so.*' \
+%endif
+	> glibc.filelist
+
+# Add specific files:
+# - The nss_files, nss_compat, and nss_db files.
+# - The libmemusage.so and libpcprofile.so used by utils.
+for module in compat files dns; do
+    cat master.filelist \
+	| grep -E \
+	-e "/libnss_$module(\.so\.[0-9.]+|-[0-9.]+\.so)$" \
+%ifarch x86_64
+%dnl Exclude 32-bit libraries built for glibc32.
+	| grep -v -e /lib/lib \
+%endif
+	>> glibc.filelist
+done
+grep \
+%if ! %{glibc_ship_tracelibs_in_utils}
+	-e "libmemusage.so" \
+%endif
+	-e "libpcprofile.so" \
+	master.filelist \
+%ifarch x86_64
+%dnl Exclude 32-bit libraries built for glibc32.
+	| grep -v -e /lib/lib \
+%endif
+	>> glibc.filelist
+
+###############################################################################
+# glibc-gconv-extra
+###############################################################################
+
+grep -e "gconv-modules-extra.conf" master.filelist > gconv.filelist
+
+# Put the essential gconv modules into the main package.
+GconvBaseModules="ISO8859-15 ISO8859-1 CP1252"
+GconvBaseModules="$GconvBaseModules UNICODE UTF-16 UTF-32 UTF-7"
+%ifarch s390 s390x
+GconvBaseModules="$GconvBaseModules ISO-8859-1_CP037_Z900 UTF8_UTF16_Z9"
+GconvBaseModules="$GconvBaseModules UTF16_UTF32_Z9 UTF8_UTF32_Z9"
+%endif
+GconvAllModules=$(cat master.filelist |
+                 sed -n 's|%{_libdir}/gconv/\(.*\)\.so|\1|p')
+
+# Put the base modules into glibc and the rest into glibc-gconv-extra
+for conv in $GconvAllModules; do
+    if echo $GconvBaseModules | grep -q $conv; then
+	grep -E -e "%{_libdir}/gconv/$conv.so$" \
+	    master.filelist >> glibc.filelist
+    else
+	grep -E -e "%{_libdir}/gconv/$conv.so$" \
+	    master.filelist >> gconv.filelist
+    fi
+done
+
+###############################################################################
+# glibc-devel
+###############################################################################
+
+# Static libraries that land in glibc-devel, not glibc-static.
+devel_static_library_pattern='/lib\(\(c\|nldbl\|mvec\)_nonshared\|g\|ieee\|mcheck\|pthread\|dl\|rt\|util\|anl\)\.a$'
+# Static libraries neither in glibc-devel nor in glibc-static.
+other_static_library_pattern='/libpthread_nonshared\.a'
+
+grep '%{_libdir}/lib.*\.a' master.filelist \
+  | grep "$devel_static_library_pattern" \
+  | grep -v "$other_static_library_pattern" \
+%ifarch x86_64
+%dnl Exclude 32-bit libraries built for glibc32.
+  | grep -v '/lib/.*\.a' \
+%endif
+  > devel.filelist
+
+# Put all of the object files and *.so (not the versioned ones) into the
+# devel package.
+grep '%{_libdir}/.*\.o' < master.filelist >> devel.filelist
+grep '%{_libdir}/lib.*\.so' < master.filelist >> devel.filelist
+
+# The exceptions are:
+# - libmemusage.so and libpcprofile.so in glibc used by utils.
+# - libnss_*.so which are in nss-devel.
+sed -i -e '\,libmemusage.so,d' \
+	-e '\,libpcprofile.so,d' \
+	-e '\,/libnss_[a-z]*\.so$,d' \
+%ifarch x86_64
+%dnl Exclude 32-bit libraries built for glibc32.
+	-e '\,/lib/.*\.so$,d' \
+%endif
+	devel.filelist
+
+%if %{glibc_autorequires}
+mkdir -p %{glibc_sysroot}/%{_rpmconfigdir} %{glibc_sysroot}/%{_fileattrsdir}
+sed < %{SOURCE3} \
+    -e s/@VERSION@/%{version}/ \
+    -e s/@RELEASE@/%{baserelease}/ \
+    -e s/@SYMVER@/%{glibc_autorequires_symver}/ \
+    > %{glibc_sysroot}/%{_rpmconfigdir}/glibc.req
+cp %{SOURCE4} %{glibc_sysroot}/%{_fileattrsdir}/glibc.attr
+%endif
+
+###############################################################################
+# glibc-doc
+###############################################################################
+
+%if %{with docs}
+# Put the info files into the doc file list, but exclude the generated dir.
+grep '%{_infodir}' master.filelist | grep -v '%{_infodir}/dir' > doc.filelist
+grep '%{_docdir}' master.filelist >> doc.filelist
+%endif
+
+###############################################################################
+# glibc-headers
+###############################################################################
+
+%if %{need_headers_package}
+# The glibc-headers package includes only common files which are identical
+# across all multilib packages. We must keep gnu/stubs.h and gnu/lib-names.h
+# in the glibc-headers package, but the -32, -64, -64-v1, and -64-v2 versions
+# go into glibc-devel.
+%ifarch x86_64
+# Hardcode 32-bit and 64-bit header names here, so that 32-bit headers end up
+# in glibc32.
+grep '%{_prefix}/include/gnu/stubs-64\.h$' < master.filelist >> devel.filelist || :
+grep '%{_prefix}/include/gnu/lib-names-64\.h$' < master.filelist >> devel.filelist || :
+grep '%{_prefix}/include/gnu/stubs-32\.h$' < master.filelist >> glibc32.filelist || :
+grep '%{_prefix}/include/gnu/lib-names-32\.h$' < master.filelist >> glibc32.filelist || :
+%else
+grep '%{_prefix}/include/gnu/stubs-.*\.h$' < master.filelist >> devel.filelist || :
+grep '%{_prefix}/include/gnu/lib-names-.*\.h$' < master.filelist >> devel.filelist || :
+%endif
+# Put the include files into headers file list.
+grep '%{_prefix}/include' < master.filelist \
+  | grep -E -v '%{_prefix}/include/gnu/stubs-.*\.h$' \
+  | grep -E -v '%{_prefix}/include/gnu/lib-names-.*\.h$' \
+  > headers.filelist
+%else
+# If there is no glibc-headers package, all header files go into the
+# glibc-devel package.
+grep '%{_prefix}/include' < master.filelist >> devel.filelist
+%endif
+
+###############################################################################
+# glibc-static
+###############################################################################
+
+# Put the rest of the static files into the static package.
+grep '%{_libdir}/lib.*\.a' < master.filelist \
+  | grep -v "$devel_static_library_pattern" \
+  | grep -v "$other_static_library_pattern" \
+%ifarch x86_64
+%dnl Exclude 32-bit libraries built for glibc32.
+  | grep -v '/lib/.*\.a' \
+%endif
+  > static.filelist
+
+###############################################################################
+# glibc-common
+###############################################################################
+
+# All of the bin and certain sbin files go into the common package except
+# iconvconfig which needs to go in glibc.  The iconvconfig binary is kept in
+# the main glibc package because we use it in the post-install scriptlet to
+# rebuild the gconv-modules.cache.  The makedb binary is in nss_db.
+grep '%{_prefix}/bin' master.filelist \
+	| grep -v '%{_prefix}/bin/makedb' \
+	>> common.filelist
+grep '%{_prefix}/sbin' master.filelist \
+	| grep -v '%{_prefix}/sbin/iconvconfig' >> common.filelist
+# All of the files under share go into the common package since they should be
+# multilib-independent.
+# Exceptions:
+# - The actual share directory, not owned by us.
+# - The info files which go into doc, and the info directory.
+# - All documentation files, which go into doc.
+grep '%{_prefix}/share' master.filelist \
+	| grep -v \
+	-e '%{_prefix}/share/info/libc.info.*' \
+	-e '%%dir %{prefix}/share/info' \
+	-e '%%dir %{prefix}/share' \
+	-e '%{_docdir}' \
+	>> common.filelist
+
+###############################################################################
+# glibc-utils
+###############################################################################
+
+# Add the utils scripts and programs to the utils subpackage.
+cat > utils.filelist <<EOF
+%if %{without bootstrap}
+%{_prefix}/bin/memusage
+%{_prefix}/bin/memusagestat
+%endif
+%{_prefix}/bin/mtrace
+%{_prefix}/bin/pcprofiledump
+%{_prefix}/bin/xtrace
+EOF
+
+%if %{glibc_ship_tracelibs_in_utils}
+grep \
+	-e '%{_lib}/libc_malloc_debug\.so' \
+	-e '%{_lib}/libmemusage.so' \
+	< master.filelist >> utils.filelist
+%endif
+
+###############################################################################
+# nss_db, nss_hesiod
+###############################################################################
+
+# Move the NSS-related files to the NSS subpackages.  Be careful not
+# to pick up .debug files, and the -devel symbolic links.
+for module in db hesiod; do
+  grep -E "/libnss_$module\\.so\\.[0-9.]+\$" \
+    master.filelist > nss_$module.filelist
+done
+grep -E "%{_prefix}/bin/makedb$" master.filelist >> nss_db.filelist
+
+###############################################################################
+# nss-devel
+###############################################################################
+
+# Symlinks go into the nss-devel package (instead of the main devel
+# package).
+grep '/libnss_[a-z]*\.so$' master.filelist > nss-devel.filelist
+
+###############################################################################
+# libnsl
+###############################################################################
+
+# Prepare the libnsl-related file lists.
+grep -E '/libnsl\.so\.[0-9]+$' master.filelist > libnsl.filelist
+test $(wc -l < libnsl.filelist) -eq 1
+
+%if %{with benchtests}
+###############################################################################
+# glibc-benchtests
+###############################################################################
+
+# List of benchmarks.
+find build-%{target}/benchtests -type f -executable | while read b; do
+	echo "%{_prefix}/libexec/glibc-benchtests/$(basename $b)"
+done >> benchtests.filelist
+# ... and the makefile.
+for b in %{SOURCE1} %{SOURCE2}; do
+	echo "%{_prefix}/libexec/glibc-benchtests/$(basename $b)" >> benchtests.filelist
+done
+# ... and finally, the comparison scripts.
+echo "%{_prefix}/libexec/glibc-benchtests/benchout.schema.json" >> benchtests.filelist
+echo "%{_prefix}/libexec/glibc-benchtests/compare_bench.py*" >> benchtests.filelist
+echo "%{_prefix}/libexec/glibc-benchtests/import_bench.py*" >> benchtests.filelist
+echo "%{_prefix}/libexec/glibc-benchtests/validate_benchout.py*" >> benchtests.filelist
+%endif
+
+###############################################################################
+# compat-libpthread-nonshared
+###############################################################################
+echo "%{_libdir}/libpthread_nonshared.a" >> compat-libpthread-nonshared.filelist
+
+###############################################################################
+# glibc32
+###############################################################################
+%ifarch x86_64
+grep '/lib/.*\.o$' master.filelist >> glibc32.filelist
+grep '/lib/.*\.a$' master.filelist >> glibc32.filelist
+grep '/lib/.*\.so' master.filelist >> glibc32.filelist
+%endif
+
+##############################################################################
+# Run the glibc testsuite
+##############################################################################
+%check
+%if %{with testsuite}
+
+# Run the glibc tests. If any tests fail to build we exit %check with
+# an error, otherwise we print the test failure list and the failed
+# test output and continue.  Write to standard error to avoid
+# synchronization issues with make and shell tracing output if
+# standard output and standard error are different pipes.
+run_tests () {
+  # This hides a test suite build failure, which should be fatal.  We
+  # check "Summary of test results:" below to verify that all tests
+  # were built and run.
+  %make_build check |& tee rpmbuild.check.log >&2
+  test -n tests.sum
+  if ! grep -Eq '^\s+=== Summary of results ===$' rpmbuild.check.log ; then
+    echo "FAIL: test suite build of target: $(basename "$(pwd)")" >& 2
+    exit 1
+  fi
+  set +x
+  grep -v ^PASS: tests.sum > rpmbuild.tests.sum.not-passing || true
+  if test -n rpmbuild.tests.sum.not-passing ; then
+    echo ===================FAILED TESTS===================== >&2
+    echo "Target: $(basename "$(pwd)")" >& 2
+    cat rpmbuild.tests.sum.not-passing >&2
+    while read failed_code failed_test ; do
+      for suffix in out test-result ; do
+        if test -e "$failed_test.$suffix"; then
+	  echo >&2
+          echo "=====$failed_code $failed_test.$suffix=====" >&2
+          cat -- "$failed_test.$suffix" >&2
+	  echo >&2
+        fi
+      done
+    done <rpmbuild.tests.sum.not-passing
+  fi
+
+  # Unconditonally dump differences in the system call list.
+  echo "* System call consistency checks:" >&2
+  cat misc/tst-syscall-list.out >&2
+  set -x
+}
+
+# Increase timeouts
+export TIMEOUTFACTOR=16
+parent=$$
+echo ====================TESTING=========================
+
+# Default libraries.
+pushd build-%{target}
+run_tests
+popd
+
+%if %{buildpower10}
+# Run this test only if the server supports Power10 instructions.
+if LD_SHOW_AUXV=1 /bin/true | grep -E "AT_HWCAP2:[^$]*arch_3_1" > /dev/null; then
+  echo ====================TESTING -mcpu=power10=============
+  pushd build-%{target}-power10
+  run_tests
+  popd
+fi
+%endif
+
+echo ====================TESTING END=====================
+PLTCMD='/^Relocation section .*\(\.rela\?\.plt\|\.rela\.IA_64\.pltoff\)/,/^$/p'
+echo ====================PLT RELOCS LD.SO================
+readelf -Wr %{glibc_sysroot}/%{_lib}/ld-*.so | sed -n -e "$PLTCMD"
+echo ====================PLT RELOCS LIBC.SO==============
+readelf -Wr %{glibc_sysroot}/%{_lib}/libc-*.so | sed -n -e "$PLTCMD"
+echo ====================PLT RELOCS END==================
+
+run_ldso="%{glibc_sysroot}/%{glibc_ldso} --library-path %{glibc_sysroot}/%{_lib}"
+
+# Show the auxiliary vector as seen by the new library
+# (even if we do not perform the valgrind test).
+LD_SHOW_AUXV=1 $run_ldso /bin/true
+
+%if 0%{?_enable_debug_packages}
+# Finally, check if valgrind runs with the new glibc.
+# We want to fail building if valgrind is not able to run with this glibc so
+# that we can then coordinate with valgrind to get it fixed before we update
+# glibc.
+%if %{with valgrind}
+$run_ldso /usr/bin/valgrind --error-exitcode=1 \
+	$run_ldso /usr/bin/true
+# true --help performs some memory allocations.
+$run_ldso /usr/bin/valgrind --error-exitcode=1 \
+	$run_ldso /usr/bin/true --help >/dev/null
+%endif
+%endif
+
+%endif
+
+
+%pre -p <lua>
+-- Check that the running kernel is new enough
+required = '%{enablekernel}'
+rel = posix.uname("%r")
+if rpm.vercmp(rel, required) < 0 then
+  error("FATAL: kernel too old", 0)
+end
+
+-- (1) Remove multilib libraries from previous installs.
+-- In order to support in-place upgrades, we must immediately remove
+-- all platform directories before installing a new glibc
+-- version.  RPM only deletes files removed by updates near the end
+-- of the transaction.  If we did not remove all platform
+-- directories here, they may be preferred by the dynamic linker
+-- during the execution of subsequent RPM scriptlets, likely
+-- resulting in process startup failures.
+
+-- Full set of libraries glibc may install.
+install_libs = { "anl", "BrokenLocale", "c", "dl", "m", "mvec",
+		 "nss_compat", "nss_db", "nss_dns", "nss_files",
+		 "nss_hesiod", "pthread", "resolv", "rt", "SegFault",
+		 "thread_db", "util" }
+
+-- We are going to remove these libraries. Generally speaking we remove
+-- all core libraries in the multilib directory.
+-- For the versioned install names, the version are [2.0,9.9*], so we
+-- match "libc-2.0.so" and so on up to "libc-9.9*".
+-- For the unversioned install names, we match the library plus ".so."
+-- followed by digests.
+remove_regexps = {}
+for i = 1, #install_libs do
+  -- Versioned install name.
+  remove_regexps[#remove_regexps + 1] = ("lib" .. install_libs[i]
+                                         .. "%%-[2-9]%%.[0-9]+%%.so$")
+  -- Unversioned install name.
+  remove_regexps[#remove_regexps + 1] = ("lib" .. install_libs[i]
+                                         .. "%%.so%%.[0-9]+$")
+end
+
+-- Two exceptions:
+remove_regexps[#install_libs + 1] = "libthread_db%%-1%%.0%%.so"
+remove_regexps[#install_libs + 2] = "libSegFault%%.so"
+
+-- We are going to search these directories.
+local remove_dirs = { "%{_libdir}/i686",
+		      "%{_libdir}/i686/nosegneg",
+		      "%{_libdir}/power6",
+		      "%{_libdir}/power7",
+		      "%{_libdir}/power8",
+		      "%{_libdir}/power9",
+		    }
+
+-- Add all the subdirectories of the glibc-hwcaps subdirectory.
+repeat
+  local iter = posix.files("%{_libdir}/glibc-hwcaps")
+  if iter ~= nil then
+    for entry in iter do
+      if entry ~= "." and entry ~= ".." then
+        local path = "%{_libdir}/glibc-hwcaps/" .. entry
+        if posix.access(path .. "/.", "x") then
+          remove_dirs[#remove_dirs + 1] = path
+        end
+      end
+    end
+  end
+until true
+
+-- Walk all the directories with files we need to remove...
+for _, rdir in ipairs (remove_dirs) do
+  if posix.access (rdir) then
+    -- If the directory exists we look at all the files...
+    local remove_files = posix.files (rdir)
+    for rfile in remove_files do
+      for _, rregexp in ipairs (remove_regexps) do
+	-- Does it match the regexp?
+	local dso = string.match (rfile, rregexp)
+        if (dso ~= nil) then
+	  -- Removing file...
+	  os.remove (rdir .. '/' .. rfile)
+	end
+      end
+    end
+  end
+end
+
+%post -p <lua>
+%glibc_post_funcs
+-- (1) Update /etc/ld.so.conf
+-- Next we update /etc/ld.so.conf to ensure that it starts with
+-- a literal "include ld.so.conf.d/*.conf".
+
+local ldsoconf = "/etc/ld.so.conf"
+local ldsoconf_tmp = "/etc/glibc_post_upgrade.ld.so.conf"
+
+if posix.access (ldsoconf) then
+
+  -- We must have a "include ld.so.conf.d/*.conf" line.
+  local have_include = false
+  for line in io.lines (ldsoconf) do
+    -- This must match, and we don't ignore whitespace.
+    if string.match (line, "^include ld.so.conf.d/%%*%%.conf$") ~= nil then
+      have_include = true
+    end
+  end
+
+  if not have_include then
+    -- Insert "include ld.so.conf.d/*.conf" line at the start of the
+    -- file. We only support one of these post upgrades running at
+    -- a time (temporary file name is fixed).
+    local tmp_fd = io.open (ldsoconf_tmp, "w")
+    if tmp_fd ~= nil then
+      tmp_fd:write ("include ld.so.conf.d/*.conf\n")
+      for line in io.lines (ldsoconf) do
+        tmp_fd:write (line .. "\n")
+      end
+      tmp_fd:close ()
+      local res = os.rename (ldsoconf_tmp, ldsoconf)
+      if res == nil then
+        io.stdout:write ("Error: Unable to update configuration file (rename).\n")
+      end
+    else
+      io.stdout:write ("Error: Unable to update configuration file (open).\n")
+    end
+  end
+end
+
+-- (2) Rebuild ld.so.cache early.
+-- If the format of the cache changes then we need to rebuild
+-- the cache early to avoid any problems running binaries with
+-- the new glibc.
+
+call_ldconfig()
+
+-- (3) Update gconv modules cache.
+-- If the /usr/lib/gconv/gconv-modules.cache exists, then update it
+-- with the latest set of modules that were just installed.
+-- We assume that the cache is in _libdir/gconv and called
+-- "gconv-modules.cache".
+
+update_gconv_modules_cache()
+
+-- (4) On upgrades, restart systemd if installed.  "systemctl -q" does
+-- not suppress the error message (which is common in chroots), so
+-- open-code rpm.execute with standard error suppressed.
+if tonumber(arg[2]) >= 2
+   and posix.access("%{_prefix}/bin/systemctl", "x")
+then
+  local pid = posix.fork()
+  if pid == 0 then
+    posix.redirect2null(2)
+    posix.exec("%{_prefix}/bin/systemctl", "daemon-reexec")
+  elseif pid > 0 then
+    posix.wait(pid)
+  end
+end
+
+%posttrans all-langpacks -e -p <lua>
+-- The old glibc-all-langpacks postun scriptlet deleted the locale-archive
+-- file, so we may have to resurrect it on upgrades.
+local archive_path = "%{_prefix}/lib/locale/locale-archive"
+local real_path = "%{_prefix}/lib/locale/locale-archive.real"
+local stat_archive = posix.stat(archive_path)
+local stat_real = posix.stat(real_path)
+-- If the hard link was removed, restore it.
+if stat_archive ~= nil and stat_real ~= nil
+    and (stat_archive.ino ~= stat_real.ino
+         or stat_archive.dev ~= stat_real.dev) then
+  posix.unlink(archive_path)
+  stat_archive = nil
+end
+-- If the file is gone, restore it.
+if stat_archive == nil then
+  posix.link(real_path, archive_path)
+end
+-- Remove .rpmsave file potentially created due to config file change.
+local save_path = archive_path .. ".rpmsave"
+if posix.access(save_path) then
+  posix.unlink(save_path)
+end
+
+%post gconv-extra -p <lua>
+%glibc_post_funcs
+update_gconv_modules_cache ()
+
+%postun gconv-extra -p <lua>
+%glibc_post_funcs
+update_gconv_modules_cache ()
+
+%files -f glibc.filelist
+%dir %{_prefix}/%{_lib}/audit
+%if %{buildpower10}
+%dir /%{_libdir}/glibc-hwcaps/power10
+%endif
+%verify(not md5 size mtime) %config(noreplace) /etc/ld.so.conf
+%verify(not md5 size mtime) %config(noreplace) /etc/rpc
+%dir /etc/ld.so.conf.d
+%dir %{_prefix}/libexec/getconf
+%dir %{_libdir}/gconv
+%dir %{_libdir}/gconv/gconv-modules.d
+%dir %attr(0700,root,root) /var/cache/ldconfig
+%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/cache/ldconfig/aux-cache
+%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/ld.so.cache
+%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/gai.conf
+# If rpm doesn't support %license, then use %doc instead.
+%{!?_licensedir:%global license %%doc}
+%license COPYING COPYING.LIB LICENSES
+
+%files -f common.filelist common
+%dir %{_prefix}/lib/locale
+%dir %{_prefix}/lib/locale/C.utf8
+%{_prefix}/lib/locale/C.utf8/*
+
+%files all-langpacks
+%{_prefix}/lib/locale/locale-archive
+%{_prefix}/lib/locale/locale-archive.real
+%{_prefix}/share/locale/*/LC_MESSAGES/libc.mo
+
+%files locale-source
+%dir %{_prefix}/share/i18n/locales
+%{_prefix}/share/i18n/locales/*
+%dir %{_prefix}/share/i18n/charmaps
+%{_prefix}/share/i18n/charmaps/*
+
+%files -f devel.filelist devel
+%if %{glibc_autorequires}
+%attr(0755,root,root) %{_rpmconfigdir}/glibc.req
+%{_fileattrsdir}/glibc.attr
+%endif
+
+%if %{with docs}
+%files -f doc.filelist doc
+%endif
+
+%files -f static.filelist static
+
+%if  %{need_headers_package}
+%files -f headers.filelist -n %{headers_package_name}
+%endif
+
+%files -f utils.filelist utils
+
+%files -f gconv.filelist gconv-extra
+
+%files -f nss_db.filelist -n nss_db
+/var/db/Makefile
+%files -f nss_hesiod.filelist -n nss_hesiod
+%doc hesiod/README.hesiod
+%files -f nss-devel.filelist nss-devel
+
+%files -f libnsl.filelist -n libnsl
+/%{_lib}/libnsl.so.1
+
+%if %{with benchtests}
+%files benchtests -f benchtests.filelist
+%endif
+
+%files -f compat-libpthread-nonshared.filelist -n compat-libpthread-nonshared
+
+%if %{without bootstrap}
+%files -n sysroot-%{_arch}-%{sysroot_dist}-glibc
+%{sysroot_prefix}
+%endif
+
+%ifarch x86_64
+%files -f glibc32.filelist -n glibc32
+%endif
+
+%changelog
+* Fri Oct 25 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 2.39-22
+- Rebuilt for MSVSphere 10
+
+* Wed Jul 31 2024 Florian Weimer <fweimer@redhat.com> - 2.39-22
+- Support clearing options in /etc/resolv.conf, RES_OPTIONS with a - prefix
+- Introduce the strict-error/RES_STRICTERR stub resolver option (RHEL-18039)
+
+* Wed Jul 31 2024 Arjun Shankar <arjun@redhat.com> - 2.39-21
+- Sync with upstream branch release/2.39/master,
+  commit 4bdcc1963bc2b5ba5f8e319e402d9eb2cb6096c1:
+- manual: make setrlimit() description less ambiguous
+- manual/stdio: Clarify putc and putwc
+- malloc: add multi-threaded tests for aligned_alloc/calloc/malloc
+- malloc: avoid global locks in tst-aligned_alloc-lib.c
+- 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)
+- elf: Fix localplt.awk for DT_RELR-enabled builds (BZ 31978)
+- Fix usage of _STACK_GROWS_DOWN and _STACK_GROWS_UP defines [BZ 31989]
+- 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]
+- stdlib: fix arc4random fallback to /dev/urandom (BZ 31612)
+- math: Provide missing math symbols on libc.a (BZ 31781)
+- math: Fix isnanf128 static build (BZ 31774)
+- math: Fix i386 and m68k exp10 on static build (BZ 31775)
+- math: Fix i386 and m68k fmod/fmodf on static build (BZ 31488)
+- posix: Fix pidfd_spawn/pidfd_spawnp leak if execve fails (BZ 31695)
+
+* Mon Jul 22 2024 Florian Weimer <fweimer@redhat.com> - 2.39-20
+- Support --without testsuite builds without perl installed (#2292195)
+
+* Fri Jul 19 2024 Florian Weimer <fweimer@redhat.com> - 2.39-19
+- Add Conflicts:/Obsoletes: for glibc32 to glibc.i686
+
+* Thu Jul 18 2024 Arjun Shankar <arjun@redhat.com> - 2.39-18
+- ppc64le: Build early startup code with -mcpu=power8
+
+* Tue Jul 02 2024 Patsy Griffin <patsy@redhat.com> - 2.39-17
+- Move ANSI_X3.110-1983 support from main package to glibc-gconv-extra.
+
+* Fri Jun 21 2024 Arjun Shankar <arjun@redhat.com> - 2.39-16
+- Sync with upstream branch release/2.39/master,
+  commit 7f9f25f255ee2c00178779fbce502f4b94b848b9:
+- Linux: Include <dl-symbol-redir-ifunc.h> in dl-sysdep.c
+- x86: Properly set x86 minimum ISA level [BZ #31883]
+- x86: Properly set MINIMUM_X86_ISA_LEVEL for i386 [BZ #31867]
+- localedata: ssy_ER: Fix syntax error
+- malloc: New test to check malloc alternate path using memory obstruction
+- malloc: Improve aligned_alloc and calloc test coverage.
+- malloc/Makefile: Split and sort tests
+- x86/cet: fix shadow stack test scripts
+
+* Wed Jun 05 2024 Arjun Shankar <arjun@redhat.com> - 2.39-15
+- Sync with upstream branch release/2.39/master,
+  commit 6ade91c21140d8c803c289932dbfc74537f65a1f:
+- elf: Avoid some free (NULL) calls in _dl_update_slotinfo
+- misc: Add support for Linux uio.h RWF_NOAPPEND flag
+- i386: Disable Intel Xeon Phi tests for GCC 15 and above (BZ 31782)
+- Reinstate generic features-time64.h
+- Always define __USE_TIME_BITS64 when 64 bit time_t is used
+- socket: Use may_alias on sockaddr structs (bug 19622)
+- parse_fdinfo: Don't advance pointer twice [BZ #31798]
+- LoongArch: Fix undefined `__memset_aligned` reference in ld.so linking.
+- socket: Add new test for connect
+- libsupport: Add xgetpeername
+- x86_64: Fix missing wcsncat function definition without multiarch (x86-64-v4)
+
+* Fri May 31 2024 Florian Weimer <fweimer@redhat.com> - 2.39-14
+- Enable CPU compatibility diagnostics in ld.so (#2276631, RHEL-31738)
+
+* Wed May 15 2024 Arjun Shankar <arjun@redhat.com> - 2.39-13
+- Move memory tracing libraries to glibc-utils
+
+* Fri May 10 2024 Florian Weimer <fweimer@redhat.com> - 2.39-12
+- Use unsigned types in <utmp.h>/<utmpx.h> (RHEL-22226)
+
+* 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
+
+* Fri Apr 26 2024 Florian Weimer <fweimer@redhat.com> - 2.39-9
+- nscd is currently not build, so the security fixes below are not relevant.
+- Sync with upstream branch release/2.39/master,
+  commit fd658f026f25cf59e8db243bc3b3e09cd5a20ba0:
+- elf: Also compile dl-misc.os with $(rtld-early-cflags)
+- CVE-2024-33601, CVE-2024-33602: nscd: netgroup: Use two buffers in addgetnetgrentX (bug 31680)
+- CVE-2024-33600: nscd: Avoid null pointer crashes after notfound response (bug 31678)
+- CVE-2024-33600: nscd: Do not send missing not-found response in addgetnetgrentX (bug 31678)
+- CVE-2024-33599: nscd: Stack-based buffer overflow in netgroup cache (bug 31677)
+- x86: Define MINIMUM_X86_ISA_LEVEL in config.h [BZ #31676]
+- i386: ulp update for SSE2 --disable-multi-arch configurations
+- nptl: Fix tst-cancel30 on kernels without ppoll_time64 support
+
+* Thu Apr 18 2024 Florian Weimer <fweimer@redhat.com> - 2.39-8
+- Sync with upstream branch release/2.39/master,
+  commit 31da30f23cddd36db29d5b6a1c7619361b271fb4:
+- iconv: ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence (CVE-2024-2961)
+- x86_64: Exclude SSE, AVX and FMA4 variants in libm multiarch
+- Apply the Makefile sorting fix
+- powerpc: Fix ld.so address determination for PCREL mode (bug 31640)
+- x86-64: Simplify minimum ISA check ifdef conditional with if
+- x86-64: Don't use SSE resolvers for ISA level 3 or above
+- AArch64: Check kernel version for SVE ifuncs
+- aarch64: fix check for SVE support in assembler
+- aarch64/fpu: Sync libmvec routines from 2.39 and before with AOR
+- i386: Use generic memrchr in libc (bug 31316)
+
+* Thu Apr 04 2024 Arjun Shankar <arjun@redhat.com> - 2.39-7
+- Sync with upstream branch release/2.39/master,
+  commit 5d070d12b3a52bc44dd1b71743abc4b6243862ae:
+- x86: Expand the comment on when REP STOSB is used on memset
+- x86: Do not prefer ERMS for memset on Zen3+
+- x86: Fix Zen3/Zen4 ERMS selection (BZ 30994)
+- Add tst-gnu2-tls2mod1 to test-internal-extras
+- elf: Enable TLS descriptor tests on aarch64
+- arm: Update _dl_tlsdesc_dynamic to preserve caller-saved registers (BZ 31372)
+- Ignore undefined symbols for -mtls-dialect=gnu2
+- x86-64: Allocate state buffer space for RDI, RSI and RBX
+- x86-64: Update _dl_tlsdesc_dynamic to preserve AMX registers
+- x86: Update _dl_tlsdesc_dynamic to preserve caller-saved registers
+- x86-64: Save APX registers in ld.so trampoline
+- LoongArch: Correct {__ieee754, _}_scalb -> {__ieee754, _}_scalbf
+- powerpc: Placeholder and infrastructure/build support to add Power11 related changes.
+- powerpc: Add HWCAP3/HWCAP4 data to TCB for Power Architecture.
+
+* Tue Mar 26 2024 Florian Weimer <fweimer@redhat.com> - 2.39-6
+- Do not generate ELF dependency information for glibc32
+
+* Tue Mar 26 2024 Joseph Myers <josmyers@redhat.com> - 2.39-5
+- Build glibc32 binary package from glibc sources as part of x86_64 build,
+  not from glibc32 SRPM that contains binaries from i686 RPM build.
+
+* Tue Mar 19 2024 Arjun Shankar <arjun@redhat.com> - 2.39-4
+- Sync with upstream branch release/2.39/master,
+  commit: 71fcdba577884627c3ee4e43beb915da752efb1f:
+- linux: Use rseq area unconditionally in sched_getcpu (bug 31479)
+- Use gcc __builtin_stdc_* builtins in stdbit.h if possible
+- S390: Do not clobber r7 in clone [BZ #31402]
+- math: Update mips64 ulps
+- mips: FIx clone3 implementation (BZ 31325)
+- arm: Remove wrong ldr from _dl_start_user (BZ 31339)
+- Replace advisories directory
+
+* Wed Feb 28 2024 Arjun Shankar <arjun@redhat.com> - 2.39-3
+- Analyse glibc-2.39 sources for license information
+- Migrate License field to SPDX identifiers for
+  https://docs.fedoraproject.org/en-US/legal/allowed-licenses/
+  https://docs.fedoraproject.org/en-US/legal/update-existing-packages
+  (#2222074)
+
+* Wed Feb  7 2024 Florian Weimer <fweimer@redhat.com> - 2.39-2
+- Ignore symbolic links to . in sysroot construction
+
+* Fri Feb 02 2024 Carlos O'Donell <carlos@redhat.com> - 2.39-1
+- Switch to upstream 2.39 release,
+  commit ef321e23c20eebc6d6fb4044425c00e6df27b05f
+- Document CVE-2023-6246, CVE-2023-6779, and CVE-2023-6780
+- Update advisory format and introduce some automation
+- manual/io: Fix swapped reading and writing phrase.
+- Fix typo
+- S390: Fix building with --disable-mutli-arch [BZ #31196]
+- NEWS: insert advisories and fixed bugs for 2.39
+- contrib.texi: update
+- INSTALL, install.texi: minor updates, regenerate
+- libc.pot: regenerate
+- version.h, include/features.h: Bump version to 2.39
+- Create ChangeLog.old/ChangeLog.28
+
+* Wed Jan 31 2024 Florian Weimer <fweimer@redhat.com> - 2.38.9000-39
+- Add noarch sysroot subpackages
+
+* Tue Jan 30 2024 Patsy Griffin <patsy@redhat.com> - 2.38.9000-38
+- Auto-sync with upstream branch master,
+  commit ddf542da94caf97ff43cc2875c88749880b7259b:
+- syslog: Fix integer overflow in __vsyslog_internal (CVE-2023-6780)
+- syslog: Fix heap buffer overflow in __vsyslog_internal (CVE-2023-6779)
+- syslog: Fix heap buffer overflow in __vsyslog_internal (CVE-2023-6246)
+- Use binutils 2.42 branch in build-many-glibcs.py
+- elf: correct relocation statistics for !ELF_MACHINE_START_ADDRESS
+
+* Mon Jan 29 2024 Arjun Shankar <arjun@redhat.com> - 2.38.9000-37
+- Auto-sync with upstream branch master,
+  commit ae49a7b29acc184b03c2a6bd6ac01b5e08efd54f:
+- Relicense IBM portions of resolv/base64.c resolv/res_debug.c.
+- localedata: Use consistent values for grouping and mon_grouping
+- manual: fix order of arguments of memalign and aligned_alloc (Bug 27547)
+
+* Thu Jan 25 2024 Jens Petersen <petersen@redhat.com> - 2.38.9000-36
+- no longer supplement langpacks if all-langpacks installed
+
+* Wed Jan 24 2024 Florian Weimer <fweimer@redhat.com> - 2.38.9000-35
+- Add crh_RU, gbm_IN, ssy_ER locales.
+- Auto-sync with upstream branch master,
+  commit 486452affbac684db739b7fcca1e84e8a7ce33d1:
+- manual, NEWS: Document malloc side effect of dynamic TLS changes
+- NEWS: Update temporary files ignored by ldconfig
+- po: Incorporate translations (sr)
+- string: Disable stack protector for memset in early static initialization
+- qsort: Fix a typo causing unnecessary malloc/free (BZ 31276)
+- riscv: add support for static PIE
+- localedata: renamed:    aa_ER@saaho -> ssy_ER
+- Define ISO 639-3 "ssy" (Saho)
+- localedata: add crh_RU, Crimean Tartar language in the Cyrillic script as used in Russia.
+- localedata: tr_TR, ku_TR: Sync with CLDR: “Turkey” -> “Türkiye”
+- localedata: miq_NI: Shorten month names in abmon
+- Update kernel version to 6.7 in header constant tests
+- localedata: add gbm_IN locale
+- Define ISO 639-3 "gbm" (Garhwali)
+- Update syscall lists for Linux 6.7
+- stdlib: Remove unused is_aligned function from qsort.c
+
+* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.38.9000-34
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Tue Jan 16 2024 DJ Delorie <dj@redhat.com> - 2.38.9000-33
+- Auto-sync with upstream branch master,
+  commit e2803cfd8bb00b54816d1a2c381d2cf82b136da6.
+- NEWS: Mention PLT rewrite on x86-64
+- stdlib: Verify heapsort for two-element cases
+- stdlib: Fix heapsort for cases with exactly two elements
+- localedata: anp_IN: Fix abbreviated month names
+
+* Mon Jan 15 2024 DJ Delorie <dj@redhat.com> - 2.38.9000-32
+- Auto-sync with upstream branch master,
+  commit 709fbd3ec3595f2d1076b4fec09a739327459288.
+- stdlib: Reinstate stable mergesort implementation on qsort
+- x86-64: Check if mprotect works before rewriting PLT
+- aarch64: Add NEWS entry about libmvec for 2.39
+
+* Mon Jan 15 2024 Carlos O'Donell <carlos@redhat.com> - 2.38.9000-31
+- Add new locales for kv_RU, su_ID, tok, and zgh_MA.
+- Drop glibc-rh2255506.patch; fix applied upstream.
+- Enable Intel CET only on x86_64.
+- Auto-sync with upstream branch master,
+  commit 064c708c78cc2a6b5802dce73108fc0c1c6bfc80:
+- localedata/unicode-gen/utf8_gen.py: fix Hangul syllable name
+- x86_64: Optimize ffsll function code size.
+- localedata: Remove redundant comments
+- RISC-V: Enable static-pie.
+- linux: Fix fstat64 on alpha and sparc64
+- math: remove exp10 wrappers
+- Benchtests: Increase benchmark iterations
+- debug/getwd_chk.c: warning should be emitted for the __getwd_chk symbol.
+- Make __getrandom_nocancel set errno and add a _nostatus version
+- x86-64/cet: Make CET feature check specific to Linux/x86
+- Incorporate translations (zh_CN)
+- Define ISO 639-3 "glk" (Gilaki)
+- resolv: Fix endless loop in __res_context_query
+- localedata: revert all the remaining locale sources to UTF-8
+- localedata: am_ET ber_DZ en_GB en_PH en_US fil_PH kab_DZ om_ET om_KE ti_ET tl_PH: convert to UTF-8
+- localedata: resolve cyclic dependencies
+- localedata: kv_RU: convert to UTF-8
+- localedata: add new locale kv_RU
+- elf: Fix tst-nodeps2 test failure.
+- localedata: Sort Makefile variables.
+- locale: Sort Makefile variables.
+- i386: Remove CET support bits
+- x86-64/cet: Move check-cet.awk to x86_64
+- x86-64/cet: Move dl-cet.[ch] to x86_64 directories
+- x86: Move x86-64 shadow stack startup codes
+- Fix deprecated utcnow() usage in build-many-glibcs.py
+- Fix invalid escape sequence in build-many-glibcs.py
+- math: Fix test-fenv.c feupdateenv tests
+- Remove installed header rule on $(..)include/%.h
+- i386: Fail if configured with --enable-cet
+- i386: Remove CET support
+- x86: Move CET infrastructure to x86_64
+- localedata: su_ID: make lang_name agree with CLDR
+- localedata: add new locale su_ID
+- localedata: add new locale zgh_MA
+- INSTALL: regenerate
+- localedata: add tok/UTF-8 to SUPPORTED
+- localedata: tok: add yY and nN to yesexpr and noexpr
+- localedata: tok: convert to UTF-8
+- localedata: add data for tok (Toki Pona)
+- Remove ia64-linux-gnu
+- localedata: dz_BT, bo_CN: convert to UTF-8
+- localedata: dz_BT, bo_CN: Fix spelling of "phur bu" in both Tibetan and Dzongkha
+- localedata: bo_CN: Fix spelling errors in Tibetan data
+- localedata: bo_CN: Fix incomplete edit in Tibetan yesexpr
+- localedata: dz_BT: Fix spelling errors in Dzongha data
+- localedata: unicode-gen: Remove redundant \s* from regexp, fix comments
+- localedata: convert the remaining *_RU locales to UTF-8
+- Incorporate translations
+- x32: Handle displacement overflow in PLT rewrite [BZ #31218]
+- x86: Fixup some nits in longjmp asm implementation
+- stdlib: Fix stdbit.h with -Wconversion for clang
+- stdlib: Fix stdbit.h with -Wconversion for older gcc
+- elf: Add ELF_DYNAMIC_AFTER_RELOC to rewrite PLT
+- aarch64: Make cpu-features definitions not Linux-specific
+- hurd: Initializy _dl_pagesize early in static builds
+- hurd: Only init early static TLS if it's used to store stack or pointer guards
+- hurd: Make init-first.c no longer x86-specific
+- hurd: Drop x86-specific assembly from init-first.c
+- hurd: Pass the data pointer to _hurd_stack_setup explicitly
+- x86-64/cet: Check the restore token in longjmp
+- localedata: ru_RU, ru_UA: convert to UTF-8
+- localedata: es_??: convert to UTF-8
+- localedata: miq_NI: convert to UTF-8
+- i386: Ignore --enable-cet
+- mach: Drop SNARF_ARGS macro
+- mach: Drop some unnecessary vm_param.h includes
+- hurd: Declare _hurd_intr_rpc_msg* with protected visibility
+- hurd: Add some missing includes
+- localedata: fy_DE: make this "Western Frisian" to agree with the language code "fy"
+- localedata: fy_DE, fy_NL: convert to UTF-8
+- localedata: ast_ES: convert to UTF-8
+- localedata: ast_ES: Remove wrong copyright text
+- localedata: de_{AT,BE,CH,IT,LU}: convert to UTF-8
+- localedata: lv_LV, it_IT, it_CH: convert to UTF-8
+- localedata: it_IT, lv_LV: currency symbol should follow the amount
+- Implement C23 <stdbit.h>
+- localedata: ms_MY should not use 12-hour format
+- localedata: es_ES: convert to UTF-8
+- localedata: es_ES: Add am_pm strings
+- aarch64: Add longjmp test for SME
+- aarch64: Add setcontext support for SME
+- aarch64: Add longjmp support for SME
+- aarch64: Add SME runtime support
+- localedata: convert uz_UZ and uz_UZ@cyrillic to UTF-8
+- localedata: uz_UZ and uz_UZ@cyrillic: Fix decimal point and thousands separator
+- libio: Check remaining buffer size in _IO_wdo_write (bug 31183)
+- getaddrinfo: translate ENOMEM to EAI_MEMORY (bug 31163)
+- string: Add additional output in test-strchr failure
+- Add a setjmp/longjmp test between user contexts
+- x86/cet: Add -fcf-protection=none before -fcf-protection=branch
+- Regenerate libc.pot
+- Omit regex.c pragmas no longer needed
+- Update copyright dates not handled by scripts/update-copyrights
+- Update copyright in generated files by running "make"
+- Update copyright dates with scripts/update-copyrights
+- x86/cet: Run some CET tests with shadow stack
+- x86/cet: Don't set CET active by default
+- x86/cet: Check feature_1 in TCB for active IBT and SHSTK
+- x86/cet: Enable shadow stack during startup
+- elf: Always provide _dl_get_dl_main_map in libc.a
+- x86/cet: Sync with Linux kernel 6.6 shadow stack interface
+- RISC-V: Add support for dl_runtime_profile (BZ #31151)
+- debug: Add fortify wprintf tests
+- debug: Add fortify syslog tests
+- debug: Add fortify dprintf tests
+- debug: Increase tst-fortify checks for compiler without __va_arg_pack support
+- debug: Adapt fortify tests to libsupport
+- localedata: yo_NT: remove redundant comments
+- localedata: convert en_AU, en_NZ, mi_NZ, niu_NZ to UTF-8
+- localedata: First day of the week in AU is Monday, LC_TIME in en_NZ is identical to LC_TIME in en_AU then
+- localedata: convert yo_NG to UTF-8, check that language name in Yoruba agrees with CLDR
+- x86-64: Fix the tcb field load for x32 [BZ #31185]
+- x86-64: Fix the dtv field load for x32 [BZ #31184]
+
+* Wed Jan  3 2024 Florian Weimer <fweimer@redhat.com> - 2.38.9000-30
+- Infinite loop in res_mkquery with malformed domain name (#2255506)
+
+* Fri Dec 22 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-29
+- Auto-sync with upstream branch master,
+  commit 61bac1a9d2ab80ebcbc51484722e6ea43414bec7:
+- nss: Remove unused allocation from get_nscd_addresses in getaddrinfo
+- x86/cet: Don't disable CET if not single threaded
+- x86: Modularize sysdeps/x86/dl-cet.c
+- x86/cet: Update tst-cet-vfork-1
+- elf: Add TLS modid reuse test for bug 29039
+- aarch64: Add SIMD attributes to math functions with vector versions
+- aarch64: Add half-width versions of AdvSIMD f32 libmvec routines
+- Fix elf/tst-env-setuid[-static] if test needs to be rerun.
+- Fix elf: Do not duplicate the GLIBC_TUNABLES string
+- tst-setcontext10.c: Undef _FORTIFY_SOURCE
+- Fix elf: Do not duplicate the GLIBC_TUNABLES string
+- riscv: Fix feenvupdate with FE_DFL_ENV (BZ 31022)
+- manual: Clarify undefined behavior of feenableexcept (BZ 31019)
+- x86: Do not raises floating-point exception traps on fesetexceptflag (BZ 30990)
+- i686: Do not raise exception traps on fesetexcept (BZ 30989)
+- powerpc: Do not raise exception traps for fesetexcept/fesetexceptflag (BZ 30988)
+- elf: Do not set invalid tunables values
+- elf: Do not duplicate the GLIBC_TUNABLES string
+- x86/cet: Check CPU_FEATURE_ACTIVE in permissive mode
+- x86/cet: Check legacy shadow stack code in .init_array section
+- x86/cet: Add tests for GLIBC_TUNABLES=glibc.cpu.hwcaps=-SHSTK
+- x86/cet: Check CPU_FEATURE_ACTIVE when CET is disabled
+- x86/cet: Check legacy shadow stack applications
+- localedata: id_ID: change first weekday to Sunday
+- s390: Set psw addr field in getcontext and friends.
+- x86: Unifies 'strlen-evex' and 'strlen-evex512' implementations.
+- x86/cet: Don't assume that SHSTK implies IBT
+- id_ID: Update Time Locales
+- Update code to handle the new ABI for sending inlined port rights.
+- x86/cet: Check user_shstk in /proc/cpuinfo
+- Add a test for setjmp/longjmp within user context
+- Add a test for longjmp from user context
+- powerpc: Add space for HWCAP3/HWCAP4 in the TCB for future Power.
+- powerpc: Fix performance issues of strcmp power10
+- localedata: Convert el_GR and el_CY locales to UTF-8
+- localedata: el_GR: Greece now uses the 24h format for time
+- powerpc : Add optimized memchr for POWER10
+- intl: Treat C.UTF-8 locale like C locale, part 2 (BZ# 16621)
+- resolv: Fix a few unaligned accesses to fields in HEADER
+- x86: Check PT_GNU_PROPERTY early
+
+* Wed Dec 13 2023 Carlos O'Donell <carlos@redhat.com> - 2.38.9000-28
+- Depend only on RPM 4.14 features (RHEL-19045)
+
+* Fri Dec 08 2023 Carlos O'Donell <carlos@redhat.com> - 2.38.9000-27
+- Drop glibc-rh2248502.patch; fix applied upstream, and
+- Auto-sync with upstream branch master,
+  commit b3bee76c5f59498b9c189608f0a3132e2013fa1a:
+- elf: Initialize GLRO(dl_lazy) before relocating libc in dynamic startup
+- Move CVE information into advisories directory
+- powerpc: Optimized strcmp for power10
+- elf: Fix wrong break removal from 8ee878592c
+- localedata: Convert day names in nn_NO locale to UTF-8
+- localedata: Remove trailing whitespace in weekday names in nn_NO locale
+- elf: Refactor process_envvars
+- elf: Ignore LD_BIND_NOW and LD_BIND_NOT for setuid binaries
+- elf: Ignore loader debug env vars for setuid
+- Adapt the security policy for the security page
+- aarch64: correct CFI in rawmemchr (bug 31113)
+- math: Add new exp10 implementation
+- aarch64: fix tested ifunc variants
+- stdlib: Fix array bounds protection in insertion sort phase of qsort
+- Revert "Update code to handle the new ABI for sending inlined port rights."
+- Revert "hurd: Fix build"
+- hurd: Fix build
+- Update code to handle the new ABI for sending inlined port rights.
+- hurd: [!__USE_MISC] Do not #undef BSD macros in ioctls
+- linux: Make fdopendir fail with O_PATH (BZ 30373)
+- Avoid padding in _init and _fini. [BZ #31042]
+- aarch64: Improve special-case handling in AdvSIMD double-precision libmvec routines
+- malloc: Improve MAP_HUGETLB with glibc.malloc.hugetlb=2
+- elf: Add a way to check if tunable is set (BZ 27069)
+
+* Tue Nov 28 2023 Arjun Shankar <arjun@redhat.com> - 2.38.9000-26
+- Drop glibc-benchtests-aarch64.patch; fix applied upstream, and
+- Auto-sync with upstream branch master,
+  commit 9469261cf1924d350feeec64d2c80cafbbdcdd4d:
+- x86: Only align destination to 1x VEC_SIZE in memset 4x loop
+- elf: Fix TLS modid reuse generation assignment (BZ 29039)
+- Add TCP_MD5SIG_FLAG_IFINDEX from Linux 5.6 to netinet/tcp.h.
+- elf: Relocate libc.so early during startup and dlmopen (bug 31083)
+- elf: Introduce the _dl_open_relocate_one_object function
+- elf: In _dl_relocate_object, skip processing if object is relocated
+- Remove __access_noerrno
+- malloc: Use __get_nprocs on arena_get2 (BZ 30945)
+- aarch64: Fix libmvec benchmarks
+
+* Mon Nov 27 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-25
+- Fix qsort workaround (#2248502)
+
+* Thu Nov 23 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-24
+- Restore qsort workaround for 389-ds-base.  (#2248502)
+
+* Wed Nov 22 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-23
+- Apply glibc-benchtests-aarch64.patch to fix an aarch64 build failure.
+- Drop glibc-rh2244688.patch revert.  Fix applied upstream.
+- Drop glibc-rh2244992.patch, glibc-rh2248915.patch, glibc-rh2248502-3.patch.
+  All applied upstream.
+- Auto-sync with upstream branch master,
+  commit 5d7f1bce7d8eea31f4baeb68bcc3124b35acc751:
+- posix: Revert the removal of the crypt prototype from <unistd.h>
+- elf: Add comments on how LD_AUDIT and LD_PRELOAD handle __libc_enable_secure
+- elf: Ignore LD_LIBRARY_PATH and debug env var for setuid for static
+- elf: Remove any_debug from dl_main_state
+- elf: Remove LD_PROFILE for static binaries
+- elf: Ignore LD_PROFILE for setuid binaries
+- s390: Use dl-symbol-redir-ifunc.h on cpu-tunables
+- x86: Use dl-symbol-redir-ifunc.h on cpu-tunables
+- elf: Emit warning if tunable is ill-formatted
+- elf: Fix _dl_debug_vdprintf to work before self-relocation
+- elf: Do not parse ill-formatted strings
+- elf: Do not process invalid tunable format
+- elf: Add all malloc tunable to unsecvars
+- elf: Ignore GLIBC_TUNABLES for setuid/setgid binaries
+- elf: Add GLIBC_TUNABLES to unsecvars
+- elf: Remove /etc/suid-debug support
+- stdlib: The qsort implementation needs to use heapsort in more cases
+- stdlib: Handle various corner cases in the fallback heapsort for qsort
+- stdlib: Avoid another self-comparison in qsort
+- hurd: fix restarting reauth_dtable on signal
+- hurd: Prevent the final file_exec_paths call from signals
+- manual: Fix termios.c example. (Bug 31078)
+- aarch64: Add vector implementations of expm1 routines
+- linux: Use fchmodat2 on fchmod for flags different than 0 (BZ 26401)
+- intl: Add test case for bug 16621
+- resolv: free only initialized items from gai pool
+- ldconfig: Fixes for skipping temporary files.
+- nptl: Link tst-execstack-threads-mod.so with -z execstack
+- nptl: Rename tst-execstack to tst-execstack-threads
+- localedata: Convert oc_FR locale to UTF-8
+- localedata: Add information for Occitan
+- elf: Fix force_first handling in dlclose (bug 30981)
+- elf: Handle non-directory name in search path (BZ 31035)
+- New Zealand locales (en_NZ & mi_NZ) first day of week should be Monday
+- x86: Fix unchecked AVX512-VBMI2 usage in strrchr-evex-base.S
+- posix: Check pidfd_spawn with tst-spawn7-pid
+- y2038: Fix support for 64-bit time on legacy ABIs
+- AArch64: Remove Falkor memcpy
+- AArch64: Add memset_zva64
+- AArch64: Cleanup emag memset
+- test: Run the tst-tls-allocation-failure-static-patched with test-wrapper.
+- aarch64: Add vector implementations of log1p routines
+- aarch64: Add vector implementations of atan2 routines
+- aarch64: Add vector implementations of atan routines
+- aarch64: Add vector implementations of acos routines
+- aarch64: Add vector implementations of asin routines
+
+* Wed Nov 15 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-22
+- Work around another self-comparison application issue in qsort (#2248502)
+
+* Sat Nov 11 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-21
+- Fix missing entries in /etc/ld.so.cache (#2248915)
+
+* Sat Nov 11 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-20
+- Drop glibc-rh2248502-*.patch, workaround applied upstream
+- Auto-sync with upstream branch master,
+  commit d1dcb565a1fb5829f9476a1438c30eccc4027d04:
+- Fix type typo in “String/Array Conventions” doc
+- stdlib: Avoid element self-comparisons in qsort (#2248502)
+- elf: Add glibc.mem.decorate_maps tunable
+- linux: Decorate __libc_fatal error buffer
+- assert: Decorate error message buffer
+- malloc: Decorate malloc maps
+- nptl: Decorate thread stack on pthread_create
+- support: Add support_set_vma_name
+- linux: Add PR_SET_VMA_ANON_NAME support
+
+* Wed Nov  8 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-19
+- Fix force-first handling in dlclose, take two (#2244992, #2246048)
+
+* Tue Nov 07 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-18
+- Revert back to old qsort/qsort_r implementation (#2248502)
+- Adjust test build completion check to match new DejaGnu-style message.
+- Auto-sync with upstream branch master,
+  commit 5dd3bda59c2d9da138f0d98808d087cdb95cdc17:
+- sysdeps: sem_open: Clear O_CREAT when semaphore file is expected to exist [BZ #30789]
+- Add SEGV_CPERR from Linux 6.6 to bits/siginfo-consts.h
+- linux: Sync Linux 6.6 elf.h
+- linux: Add HWCAP2_HBC from Linux 6.6 to AArch64 bits/hwcap.h
+- linux: Add FSCONFIG_CMD_CREATE_EXCL from Linux 6.6 to sys/mount.h
+- linux: Add MMAP_ABOVE4G from Linux 6.6 to sys/mman.h
+- Update kernel version to 6.6 in header constant tests
+- Update syscall lists for Linux 6.6
+- Format test results closer to what DejaGnu does
+- AArch64: Cleanup ifuncs
+- Use correct subdir when building tst-rfc3484* for mach and arm
+- stdlib: Add more qsort{_r} coverage
+- stdlib: qsort: Move some macros to inline function
+- stdlib: Move insertion sort out qsort
+- stdlib: Optimization qsort{_r} swap implementation
+- string: Add internal memswap implementation
+- crypt: Remove manul entry for --enable-crypt
+- Use Linux 6.6 in build-many-glibcs.py
+- crypt: Remove libcrypt support
+- sparc: Remove optimize md5, sha256, and sha512
+- build-many-glibcs: Fix traililing whitespace
+- AArch64: Add support for MOPS memcpy/memmove/memset
+- Move getnameinfo from 'inet' to 'nss'
+- Move getaddrinfo from 'posix' into 'nss'
+- Move 'services' routines from 'inet' into 'nss'
+- Move 'rpc' routines from 'inet' into 'nss'
+- Move 'protocols' routines from 'inet' into 'nss'
+- Move 'networks' routines from 'inet' into 'nss'
+- Move 'netgroup' routines from 'inet' into 'nss'
+- Move 'hosts' routines from 'inet' into 'nss'
+- Move 'ethers' routines from 'inet' into 'nss'
+- Move 'aliases' routines from 'inet' into 'nss'
+- Remove 'shadow' and merge into 'nss'
+- Remove 'pwd' and merge into 'nss'
+- Remove 'gshadow' and merge into 'nss'
+- Remove 'grp' and merge into 'nss' and 'posix'
+- malloc: Fix tst-tcfree3 build csky-linux-gnuabiv2 with fortify source
+- test-container: disable ld.so system cache on DSO detection
+- aarch64: Add vector implementations of exp10 routines
+- aarch64: Add vector implementations of log10 routines
+- aarch64: Add vector implementations of log2 routines
+- aarch64: Add vector implementations of exp2 routines
+- aarch64: Add vector implementations of tan routines
+- elf: ldconfig should skip temporary files created by package managers
+- tst-spawn-cgroup.c: Fix argument order of UNSUPPORTED message.
+- Add NT_PPC_DEXCR and NT_PPC_HASHKEYR from Linux 6.5 to elf.h
+- s390: Fix undefined behaviour in feenableexcept, fedisableexcept [BZ #30960]
+- elf: Do not print the cache entry if --inhibit-cache is used
+
+* Thu Oct 26 2023 Carlos O'Donell <carlos@redhat.com> - 2.38.9000-17
+- Revert "Fix force-first handling in dlclose" (#2246048)
+
+* Tue Oct 24 2023 Arjun Shankar <arjun@redhat.com> - 2.38.9000-16
+- Provide template gai.conf in glibc-doc
+
+* Thu Oct 19 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-15
+- Fix force-first handling in dlclose (#2244992)
+
+* Wed Oct 18 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-14
+- Revert "x86: Prepare `strrchr-evex` and `strrchr-evex512` for AVX10" (#2244688)
+- Auto-sync with upstream branch master,
+  commit dd32e1db386c77c61850a7cbd0c126b7b3c63ece:
+- Revert "elf: Always call destructors in reverse constructor order (bug 30785)"
+- Revert "elf: Fix compile error with -DNDEBUG [BZ #18755]"
+- Add strlcat/wcslcat testcase.
+- Add strlcpy/wcslcpy testcase
+- Add LE DSCP code point from RFC-8622.
+- Add HWCAP2_MOPS from Linux 6.5 to AArch64 bits/hwcap.h
+- Add SCM_SECURITY, SCM_PIDFD to bits/socket.h
+- Add AT_HANDLE_FID from Linux 6.5 to bits/fcntl-linux.h
+- Avoid maybe-uninitialized warning in __kernel_rem_pio2
+- Fix WAIT_FOR_DEBUGGER for container tests.
+
+* Thu Oct 12 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-13
+- Drop glibc-disable-werror-tst-realloc.patch, GCC was fixed long ago.
+- Auto-sync with upstream branch master,
+  commit 69239bd7a216007692470aa9d5f3658024638742:
+- stdlib: fix grouping verification with multi-byte thousands separator (bug 30964)
+- build-many-glibcs: Check for required system tools
+- x86: Prepare `strrchr-evex` and `strrchr-evex512` for AVX10
+- aarch64: Optimise vecmath logs
+- aarch64: Cosmetic change in SVE exp routines
+- aarch64: Optimize SVE cos & cosf
+- aarch64: Improve vecmath sin routines
+- nss: Get rid of alloca usage in makedb's write_output.
+- debug: Add regression tests for BZ 30932
+- Fix FORTIFY_SOURCE false positive
+- nss: Rearrange and sort Makefile variables
+- inet: Rearrange and sort Makefile variables
+- Fix off-by-one OOB write in iconv/tst-iconv-mt
+
+* Tue Oct 03 2023 Arjun Shankar <arjun@redhat.com> - 2.38.9000-12
+- Auto-sync with upstream branch master,
+  1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa:
+- tunables: Terminate if end of input is reached (CVE-2023-4911)
+- Propagate GLIBC_TUNABLES in setxid binaries
+
+* Tue Oct 03 2023 Arjun Shankar <arjun@redhat.com> - 2.38.9000-11
+- Auto-sync with upstream branch master,
+  9e4e896f0f5a19a16c1a77567463b013a0f4952d:
+- Linux: add ST_NOSYMFOLLOW
+- resolve: Remove __res_context_query alloca usage
+- mips: dl-machine-reject-phdr: Get rid of alloca.
+- x86: Add support for AVX10 preset and vec size in cpu-features
+- resolv: Fix a comment typo in __resolv_conf_load
+- Remove unused -DRESOLVER getaddrinfo build flag
+- C2x scanf %wN, %wfN support
+- test-container: Use nftw instead of rm -rf
+
+* Thu Sep 28 2023 Patsy Griffin <patsy@redhat.com> - 2.38.9000-10
+- Auto-sync with upstream branch master,
+  commit 29d4591b07a4da53320e949557c6946c62c26bde.
+- hurd: Drop REG_GSFS and REG_ESDS from x86_64's ucontext
+- elf: Fix compile error with -DNDEBUG [BZ #18755]
+- MIPS: Add relocation types
+- MIPS: Add new section type SHT_MIPS_ABIFLAGS
+- MIPS: Add ELF file header flags
+- fegetenv_and_set_rn now uses the builtins provided by GCC.
+- io: Do not implement fstat with fstatat
+- libio: Add nonnull attribute for most FILE * arguments in stdio.h
+- AArch64: Remove -0.0 check from vector sin
+- Document CVE-2023-4806 and CVE-2023-5156 in NEWS
+- elf: Add dummy declaration of _dl_audit_objclose for !SHARED
+- Fix leak in getaddrinfo introduced by the fix for CVE-2023-4806 [BZ #30843]
+- elf: dl-lookup: Remove unused alloca.h include
+- Remove unused localedata/th_TH.in
+- Adapt collation in th_TH locale to use the iso14651_t1_common file and sync the collation with CLDR
+- Revert "LoongArch: Add glibc.cpu.hwcap support."
+- Update kernel version to 6.5 in header constant tests
+- LoongArch: Add glibc.cpu.hwcap support.
+- math: Add a no-mathvec flag for sin (-0.0)
+
+* Mon Sep 18 2023 Arjun Shankar <arjun@redhat.com> - 2.38.9000-9
+- Auto-sync with upstream branch master,
+  commit bb5bbc20702981c287aa3e44640e7d2f2b9a28cf:
+- Update to Unicode 15.1.0 [BZ #30854]
+- localedata/unicode-gen/utf8_gen.py: adapt regexp to get relevant lines from EastAsianWidth.txt
+- Fix regexp syntax warnings in localedata/unicode-gen/ctype_compatibility.py
+- getaddrinfo: Fix use after free in getcanonname (CVE-2023-4806)
+- LoongArch: Change to put magic number to .rodata section
+- LoongArch: Add ifunc support for strrchr{aligned, lsx, lasx}
+- LoongArch: Add ifunc support for strcpy, stpcpy{aligned, unaligned, lsx, lasx}
+- LoongArch: Replace deprecated $v0 with $a0 to eliminate 'as' Warnings.
+- LoongArch: Add lasx/lsx support for _dl_runtime_profile.
+- Add MOVE_MOUNT_BENEATH from Linux 6.5 to sys/mount.h
+- CVE-2023-4527: Stack read overflow with large TCP responses in no-aaaa mode
+- resolv: Fix some unaligned accesses in resolver [BZ #30750]
+- Update syscall lists for Linux 6.5
+
+* Mon Sep 11 2023 Patsy Griffin <patsy@redhat.com> - 2.38.9000-8
+- Auto-sync with upstream branch master,
+  commit 073edbdfabaad4786e974a451efe4b6b3f7a5a61.
+- ia64: Work around miscompilation and fix build on ia64's gcc-10 and later
+- stdio: Remove __libc_message alloca usage
+- htl: avoid exposing the vm_region symbol
+- libio: Fix oversized __io_vtables
+- Use Linux 6.5 in build-many-glibcs.py
+- elf: Remove unused l_text_end field from struct link_map
+
+* Fri Sep 08 2023 Florian Weimer <fweimer@redhat.com> - 2.38.9000-7
+- Auto-sync with upstream branch master,
+  commit 6985865bc3ad5b23147ee73466583dd7fdf65892:
+- elf: Always call destructors in reverse constructor order (bug 30785)
+- io: Fix record locking contants for powerpc64 with __USE_FILE_OFFSET64
+- manual: Fix ld.so diagnostics menu/section structure
+- getaddrinfo: Get rid of alloca
+- riscv: Add support for XTheadBb in string-fz[a,i].h
+- getcanonname: Fix a typo
+- linux: Add pidfd_getpid
+- posix: Add pidfd_spawn and pidfd_spawnp (BZ 30349)
+- linux: Add posix_spawnattr_{get, set}cgroup_np (BZ 26371)
+- linux: Define __ASSUME_CLONE3 to 0 for alpha, ia64, nios2, sh, and sparc
+- __call_tls_dtors: Use call_function_static_weak
+- intl: Treat C.UTF-8 locale like C locale (BZ# 16621)
+- htl: Fix stack information for main thread
+- htl: thread_local destructors support
+- elf: Fix slow tls access after dlopen [BZ #19924]
+- x86: Check the lower byte of EAX of CPUID leaf 2 [BZ #30643]
+
+* Tue Aug 29 2023 DJ Delorie <dj@redhat.com> - 2.38.9000-6
+- Auto-sync with upstream branch master,
+  commit e1d3312015e8f70344620375aedf91afe7e7e7a4.
+- add GB18030-2022 charmap and test the entire GB18030 charmap [BZ #30243]
+- Use GMP 6.3.0, MPFR 4.2.1 in build-many-glibcs.py
+- localedata: Translit common emojis to smileys [BZ #30649]
+- nscd: Skip unusable entries in first pass in prune_cache (bug 30800)
+- LoongArch: Change loongarch to LoongArch in comments
+- LoongArch: Add ifunc support for memcmp{aligned, lsx, lasx}
+- LoongArch: Add ifunc support for memset{aligned, unaligned, lsx, lasx}
+- LoongArch: Add ifunc support for memrchr{lsx, lasx}
+- LoongArch: Add ifunc support for memchr{aligned, lsx, lasx}
+- LoongArch: Add ifunc support for rawmemchr{aligned, lsx, lasx}
+- LoongArch: Micro-optimize LD_PCREL
+- LoongArch: Remove support code for old linker in start.S
+- LoongArch: Simplify the autoconf check for static PIE
+- Add F_SEAL_EXEC from Linux 6.3 to bits/fcntl-linux.h.
+- argp-parse: Get rid of alloca
+- gencat: Get rid of alloca.
+- m68k: Use M68K_SCALE_AVAILABLE on __mpn_lshift and __mpn_rshift
+- m68k: Fix build with -mcpu=68040 or higher (BZ 30740)
+- elf: Check that --list-diagnostics output has the expected syntax
+- manual: Document ld.so --list-diagnostics output
+- manual/jobs.texi: Add missing @item EPERM for getpgid
+- LoongArch: Add ifunc support for strncmp{aligned, lsx}
+- LoongArch: Add ifunc support for strcmp{aligned, lsx}
+- LoongArch: Add ifunc support for strnlen{aligned, lsx, lasx}
+- htl: move pthread_attr_setdetachstate into libc
+- htl: move pthread_attr_getdetachstate into libc
+- htl: move pthread_attr_setschedpolicy into libc
+- htl: move pthread_attr_getschedpolicy into libc
+- htl: move pthread_attr_setinheritsched into libc
+- htl: move pthread_attr_getinheritsched into libc
+- htl: move pthread_attr_getschedparam into libc
+- htl: move pthread_setschedparam into libc
+- htl: move pthread_getschedparam into libc
+- htl: move pthread_equal into libc
+- Linux: Avoid conflicting types in ld.so --list-diagnostics
+
+* Tue Aug 22 2023 Arjun Shankar <arjun@redhat.com> - 2.38.9000-5
+- Auto-sync with upstream branch master,
+  commit f6c8204fd7fabf0cf4162eaf10ccf23258e4d10e:
+- elf: Do not run constructors for proxy objects
+- x86_64: Add log1p with FMA
+- Remove references to the defunct db2 subdir
+- string: Fix tester build with fortify enable with gcc < 12
+- s390x: Fix static PIE condition for toolchain bootstrapping.
+- m68k: fix __mpn_lshift and __mpn_rshift for non-68020
+- sysdeps: tst-bz21269: fix -Wreturn-type
+- Loongarch: Add ifunc support for memcpy{aligned, unaligned, lsx, lasx} and memmove{aligned, unaligned, lsx, lasx}
+- Loongarch: Add ifunc support for strchr{aligned, lsx, lasx} and strchrnul{aligned, lsx, lasx}
+- sysdeps: tst-bz21269: handle ENOSYS & skip appropriately
+- sysdeps: tst-bz21269: fix test parameter
+- hurd: Fix strictness of <mach/thread_state.h>
+- hurd: Add prototype for and thus fix _hurdsig_abort_rpcs call
+- io/tst-statvfs: fix statfs().f_type comparison test on some arches
+- fxprintf: Get rid of alloca
+
+* Tue Aug 15 2023 Carlos O'Donell <carlos@redhat.com> - 2.38-4
+- Collect dynamic loader diagnostics from the build system.
+
+* Tue Aug 15 2023 Florian Weimer <fweimer@redhat.com> - 2.38-3
+- Auto-sync with upstream branch master,
+  commit d6fe19facc61caffb25383d9c25eff86a0e115c8:
+- configure: Add -Wall again to the default CFLAGS
+- malloc: Remove bin scanning from memalign (bug 30723)
+- resolv/nss_dns/dns-host: Get rid of alloca.
+- x86_64: Add expm1 with FMA
+- elf: Add new LoongArch reloc types (101 to 108) into elf.h
+- x86: Fix incorrect scope of setting `shared_per_thread` [BZ# 30745]
+- x86_64: Add log2 with FMA
+- malloc: Enable merging of remainders in memalign (bug 30723)
+- nscd: Do not rebuild getaddrinfo (bug 30709)
+- x86_64: Sort fpu/multiarch/Makefile
+- i686: Fix build with --disable-multiarch
+- x86_64: Fix build with --disable-multiarch (BZ 30721)
+- Add PTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG etc. from Linux 6.4 to sys/ptrace.h
+- Add PACKET_VNET_HDR_SZ from Linux 6.4 to netpacket/packet.h
+- linux: statvfs: allocate spare for f_type
+- x86: Fix for cache computation on AMD legacy cpus.
+- powerpc longjmp: Fix build after chk hidden builtin fix
+- LoongArch: Fix static PIE condition for toolchain bootstrapping.
+- chk: Add and fix hidden builtin definitions for *_chk
+- tst-realpath-toolong: return "unsupported" when PATH_MAX is undefined
+- tst-*glob*: Do not check d_name size
+- iconv: restore verbosity with unrecognized encoding names (bug 30694)
+- configure: Remove --enable-all-warnings option
+- Add IP_PROTOCOL from Linux 6.4 to bits/in.h
+- Update kernel version to 6.4 in header constant tests
+- PowerPC: Influence cpu/arch hwcap features via GLIBC_TUNABLES
+- vfprintf-internal: Get rid of alloca.
+- stdlib: Improve tst-realpath compatibility with source fortification
+- Open master branch for glibc 2.39 development
+
+* Tue Aug  1 2023 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.38-2
+- Drop downstream glibc shadow stack userspace support patches.
+
+* Tue Aug  1 2023 Florian Weimer <fweimer@redhat.com> - 2.38-1
+- Switch to upstream 2.38 release
+- <sys/platform/x86.h>: Add APX support
+- translations: update cs, nl, vi
+- string: Fix tester build with fortify enable with gcc 6
+- linux: Fix i686 with gcc6
+- i386: Remove memset_chk-nonshared.S
+- i386: Fix build with --enable-fortify=3
+- posix: Fix test-errno build with fortify enable
+- powerpc: Fix powerpc64 strchrnul build with old gcc
+- sunrpc: Fix netname build with older gcc
+- malloc: Fix set-freeres.c with gcc 6
+- nscd: cleanup obsolete _FORTIFY_SOURCE setting
+
+* Mon Jul 31 2023 Patsy Griffin <patsy@redhat.com> - 2.37.9000-20
+- Allow for the optional removal of tzdata.
+- Rebuilt for https://fedoraproject.org/wiki/Changes/AllowRemovalOfTzdata 
+
+* Tue Jul 25 2023 DJ Delorie <dj@redhat.com> - 2.37.9000-19
+- Auto-sync with upstream branch master,
+  commit 637aac2ae3980de31a6baab236a9255fe853cc76.
+- Include sys/rseq.h in tst-rseq-disable.c
+- string: Fix tester with fortify enabled
+- string: Fix bug-strncat1 with fortify enabled
+- nscd: Use errval, not errno to guide cache update (bug 30662)
+- Restore lookup of IPv4 mapped addresses in files database (bug 25457)
+- Revert "MIPS: Sync elf.h from binutils"
+- riscv: Update rvd libm test ulps
+- MIPS: Sync elf.h from binutils
+- Merge translations (bg, hr, pl, sv)
+- nptl: Unconditionally use a 32-byte rseq area
+- hurd: Fix tst-openloc
+- scripts: Fix fortify checks if compiler does not support _FORTIFY_SOURCE=3
+- configure: Disable building libcrypt by default
+- nptl: Make tst-tls3mod.so explicitly lazy
+- make ‘struct pthread’ a complete type
+- scripts: Add fortify checks on installed headers
+- Update x86_64 libm-test-ulps (x32 ABI)
+- Fix getting return address in elf/tst-audit28.c.
+- [PATCH v1] x86: Use `3/4*sizeof(per-thread-L3)` as low bound for NT threshold.
+- x86: Fix slight bug in `shared_per_thread` cache size calculation.
+- Update i686 libm-test-ulps (again)
+- Update i686 libm-test-ulps
+- Merge translations (de, ro, uk, zh_TW)
+- Regenerate libc.pot
+- configure: Use autoconf 2.71
+- Update sparc libm-test-ulps
+- s390: Add the clone3 wrapper
+- manual: Fix typos in struct dl_find_object
+- sparc: Fix la_symbind for bind-now (BZ 23734)
+- i386: make debug wrappers compatible with static PIE
+- LoongArch: Fix soft-float bug about _dl_runtime_resolve{,lsx,lasx}
+
+* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.37.9000-18
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
+* Tue Jul 11 2023 Arjun Shankar <arjun@redhat.com> - 2.37.9000-17
+- Auto-sync with upstream branch master,
+  commit 7f079fdc16e88ebb8020e17b2fd900e8924da29a:
+- LoongArch: Add vector implementation for _dl_runtime_resolve.
+- LoongArch: config: Added HAVE_LOONGARCH_VEC_ASM.
+- sysdeps: Add missing hidden definitions for i386
+- sysdeps/s390: Exclude fortified routines from being built with _FORTIFY_SOURCE
+- Translations: Add new ro support and update others.
+- elf: _dl_find_object may return 1 during early startup (bug 30515)
+- LoongArch: config: Rewrite check on static PIE.
+- Revert "hppa: Drop 16-byte pthread lock alignment"
+- realloc: Limit chunk reuse to only growing requests [BZ #30579]
+- vfscanf-internal: Remove potentially unbounded allocas
+
+* Thu Jul 06 2023 Frédéric Bérat <fberat@redhat.com> - 2.37.9000-16
+- Add "--enable-fortify-source" option to configure
+- Auto-sync with upstream branch master,
+  commit 5324d258427fd11ca0f4f595c94016e568b26d6b.
+- fileops: Don't process ,ccs= as individual mode flags (BZ#18906)
+- sysdeps/ieee754/ldbl-128ibm-compat: Fix warn unused result
+- libio/bits/stdio2-decl.h: Avoid PLT entries with _FORTIFY_SOURCE
+- libio/bits/stdio2.h: Clearly separate declaration from definitions
+- misc/bits/syslog.h: Clearly separate declaration from definition
+- misc/bits/select2.h: Clearly separate declaration from definitions
+- unistd: Avoid PLT entries with _FORTIFY_SOURCE
+- posix/bits/unistd.h: Clearly separate declaration from definitions
+- wchar: Avoid PLT entries with _FORTIFY_SOURCE
+- misc/sys/cdefs.h: Create FORTIFY redirects for internal calls
+- stdio: Ensure *_chk routines have their hidden builtin definition available
+- string: Ensure *_chk routines have their hidden builtin definition available
+- sysdeps: Ensure ieee128*_chk routines to be properly named
+- Exclude routines from fortification
+- Allow glibc to be built with _FORTIFY_SOURCE
+- manual: Update documentation of strerror and related functions
+- manual: Enhance documentation of the <ctype.h> functions
+- Always do locking when accessing streams (bug 15142, bug 14697)
+- hurd: Implement MAP_EXCL
+- hurd: Fix mapping at address 0 with MAP_FIXED
+- hurd: Fix calling vm_deallocate (NULL)
+- hurd: Map brk non-executable
+- htl: Let Mach place thread stacks
+- mach: strerror must not return NULL (bug 30555)
+- hppa: xfail debug/tst-ssp-1 when have-ssp is yes (gcc-12 and later)
+- support: Build with exceptions and asynchronous unwind tables [BZ #30587]
+- hurd: Make getrandom return ENOSYS when /dev/random is not set up
+- Stop applying a GCC-specific workaround on clang [BZ #30550]
+- ld.so: Always use MAP_COPY to map the first segment [BZ #30452]
+- setenv.c: Get rid of alloca.
+- Add checks for wday, yday and new date formats
+- aarch64: Add vector implementations of exp routines
+- aarch64: Add vector implementations of log routines
+- aarch64: Add vector implementations of sin routines
+- aarch64: Add vector implementations of cos routines
+- Switch to UTF-8 for INSTALL
+- Make sure INSTALL is ASCII plaintext
+- Update syscall lists for Linux 6.4
+
+* Wed Jun 28 2023 Carlos O'Donell <carlos@redhat.com> - 2.37.9000-15
+- Auto-sync with upstream branch master,
+  commit d35fbd3e684e6bb5e5ec452ad8dac6ada8424bdd:
+- linux: Return unsupported if procfs can not be mount on tst-ttyname-namespace
+- linux: Split tst-ttyname
+- Use Linux 6.4 in build-many-glibcs.py
+- x86: Adjust Linux x32 dl-cache inclusion path
+- elf: Update list of RISC-V relocations
+- Fix tests-clean Makefile target (bug 30545)
+- check_native: Get rid of alloca
+- ifaddrs: Get rid of alloca
+- x86: Make dl-cache.h and readelflib.c not Linux-specific
+- elf: Port ldconfig away from stack-allocated paths
+- Call "CST" a time zone abbreviation, not a name
+- benchtests: fix warn unused result
+- sysdeps/powerpc/fpu/tst-setcontext-fpscr.c: Fix warn unused result
+- rt/tst-mqueue4.c: Fix wrong number of argument for mq_open
+- debug/readlink{, at}_chk.c: Harmonize declaration and definition
+- wcsmbs/bits/wchar2{, -decl}.h: Clearly separate declaration from definitions
+- stdio-common: tests: Incorrect maxlen parameter for swprintf
+- sysdeps/{i386, x86_64}/mempcpy_chk.S: fix linknamespace for __mempcpy_chk
+- hurd: readv: Get rid of alloca
+- hurd: writev: Add back cleanup handler
+- Fix misspellings -- BZ 25337
+- C2x scanf %b support
+- C2x printf %wN, %wfN support (bug 24466)
+- tests: replace system by xsystem
+- tests: replace read by xread
+- hurd: writev: Get rid of alloca
+- grantpt: Get rid of alloca
+- string: strerror must not return NULL (bug 30555)
+- hurd: Add strlcpy, strlcat, wcslcpy, wcslcat to libc.abilist
+- manual: Manual update for strlcat, strlcpy, wcslcat, wclscpy
+- Add the wcslcpy, wcslcat functions
+- Implement strlcpy and strlcat [BZ #178]
+- tests: replace fgets by xfgets
+- tests: replace fread by xfread
+- posix: Add test case for gai_strerror()
+- posix: Handle success in gai_strerror()
+- LoongArch: Add support for dl_runtime_profile
+- malloc: Decrease resource usage for malloc tests
+- stdlib: Tune down fork arc4random tests
+- tst-getdate: Improve testcase flexibility and add test.
+- x86: Make the divisor in setting `non_temporal_threshold` cpu specific
+- x86: Refactor Intel `init_cpu_features`
+- x86: Increase `non_temporal_threshold` to roughly `sizeof_L3 / 4`
+- Remove unused DATEMSK file for tst-getdate
+- resolv_conf: release lock on allocation failure (bug 30527)
+
+* Thu Jun 08 2023 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.37.9000-14
+- Shadow stack userspace support, downstream only and disabled by default.
+
+* Wed Jun 07 2023 Arjun Shankar <arjun@redhat.com> - 2.37.9000-13
+- Auto-sync with upstream branch master,
+  commit 85e6d8b4175fcb195011a0a1bad37d6f3b2355db:
+- time: Fix use-after-free in getdate
+- Move {read,write}_all functions to a dedicated header
+- tests: Replace various function calls with their x variant
+- tests: fix warn unused result on asprintf calls
+- pthreads: Use _exit to terminate the tst-stdio1 test
+- support: Add delayed__exit (with two underscores)
+
+* Mon Jun 05 2023 Arjun Shankar <arjun@redhat.com> - 2.37.9000-12
+- Auto-sync with upstream branch master,
+  commit e3622a8f391deea3b75a577dce70d023dfa3f1c7.
+- time: Also check for EPERM while trying to clock_settime
+- linux: Fail as unsupported if personality call is filtered
+- Remove MAP_VARIABLE from hppa bits/mman.h
+- hurd: Fix x86_64 sigreturn restoring bogus reply_port
+- Add lint-makefiles Makefile linting test.
+- elf: Sort Makefile variables.
+- Fix a few more typos I missed in previous round -- BZ 25337
+- Fix all the remaining misspellings -- BZ 25337
+- Use __nonnull for the epoll_wait(2) family of syscalls
+- Fix invalid use of NULL in epoll_pwait2(2) test
+- getipv4sourcefilter: Get rid of alloca
+- getsourcefilter: Get rid of alloca.
+- tests: fix warn unused results
+- nptl_db/thread_dbP.h: fix warn unused result
+- malloc/{memusage.c, memusagestat.c}: fix warn unused result
+- catgets/gencat.c: fix warn unused result
+- tests: replace ftruncate by xftruncate
+- tests: replace write by xwrite
+- x86-64: Use YMM registers in memcmpeq-evex.S
+
+* Thu Jun 01 2023 Patsy Griffin <patsy@redhat.com> - 2.37.9000-11
+- Auto-sync with upstream branch master,
+  commit 6286cca2cb8389dcffec39238a8bf15ffea96396.
+- support: Don't fail on fchown when spawning sgid processes
+- io: Fix F_GETLK, F_SETLK, and F_SETLKW for powerpc64
+- elf: Remove spurios SHARED conditional from elf/rtld.c
+- Fix misspellings in sysdeps/ -- BZ 25337
+- io: Fix record locking contants on 32 bit arch with 64 bit default time_t (BZ#30477)
+- io: Re-flow and sort multiline Makefile definitions
+- elf: Make more functions available for binding during dlclose (bug 30425)
+- LoongArch: Fix inconsistency in SHMLBA macro values between glibc and kernel
+- Fix misspellings in elf/ -- BZ 25337
+- riscv: Add the clone3 wrapper
+- posix: Add error message for EAI_OVERFLOW
+- setsourcefilter: Replace alloca with a scratch_buffer.
+- time: strftime_l: Avoid an unbounded alloca.
+- x86: Use 64MB as nt-store threshold if no cacheinfo [BZ #30429]
+- hurd: Fix setting up signal thread stack alignment
+- mach: Fix startup with stack protector
+- Fix misspellings in manual/ -- BZ 25337
+- Fix misspellings in iconv/ and iconvdata/ -- BZ 25337
+- Add MFD_NOEXEC_SEAL, MFD_EXEC from Linux 6.3 to bits/mman-shared.h
+- Add IP_LOCAL_PORT_RANGE from Linux 6.3 to bits/in.h
+- Add AT_RSEQ_* from Linux 6.3 to elf.h
+- setipv4sourcefilter: Avoid using alloca.
+- wchar: Define va_list for POSIX (BZ #30035)
+- elf: add test for dl-printf
+- elf: fix handling of negative numbers in dl-printf
+- elf: Update comment in open_path
+- elf: Add test for locating libraries in root dir (bug 30435)
+- io: Re-flow and sort multiline Makefile definitions
+- Fix special case for C2x strtol binary constant handling (BZ# 30371)
+- rtld: properly handle root directory in load path (bug 30435)
+- sysdeps/pthread/eintr.c: fix warn unused result
+- sunrpc/netname.c: fix warn unused result
+- locale/programs/locarchive.c: fix warn unused result
+- support: Reformat Makefile.
+- Regenerate configure fragment -- BZ 25337.
+- Fix misspellings in sysdeps/powerpc -- BZ 25337
+- Fix misspellings in sysdeps/unix -- BZ 25337
+- Fix misspellings in sysdeps/x86_64 -- BZ 25337.
+- mach: Fix accessing mach_i386.h
+- Fix misspellings in sysdeps/x86_64/fpu/multiarch -- BZ 25337.
+- mach: Fix installing mach_i386.h
+- hurd: Fix making ld.so run static binaries with retry
+- Add voice-admit DSCP code point from RFC-5865
+- mach: Fix mach_setup_thread_impl with NULL stack_base
+- Remove last remnants of have-protected
+- S390: Use compile-only instead of also link-tests in configure.
+- Fix build for hurd/thread-self.c for i386.
+- io: Fix a typo
+- htl: Use __hurd_fail () instead of assigning errno
+- hurd: Use __hurd_fail () instead of assigning errno
+- powerpc:GCC(<10) doesn't allow -mlong-double-64 after -mabi=ieeelongdouble
+- hurd: Fix using interposable hurd_thread_self
+- hurd 64bit: Re-introduce gai_suspend symbol
+- hurd: Fix __TIMESIZE on x86_64
+- posix: Reformat Makefile.
+- hurd: Fix expected c++ types
+- catgets: Reformat Makefile.
+- benchtests: Reformat Makefile.
+- assert: Reformat Makefile.
+- nptl: Reformat Makefile.
+- wcsmbs: Reformat Makefile.
+- misc: Reformat Makefile.
+- stdio-common: Adjust tests in Makefile
+- elf: Adjust tests in Makefile.
+- scripts: sort-makefile-lines.py
+- Add a SECURITY.md
+- Add HWCAP2_SME* from Linux 6.3 to AArch64 bits/hwcap.h
+- hurd: Also make it possible to call strlen very early
+- hurd: Fix setting up pthreads
+- hurd: Fix x86_64 _hurd_tls_fork
+- hurd: Make sure to not use tcb->self
+- hurd: Use __mach_setup_thread_call ()
+- mach: Add __mach_setup_thread_call ()
+- hurd: Use MACHINE_THREAD_STATE_SETUP_CALL
+- mach: Define MACHINE_THREAD_STATE_SETUP_CALL
+- Use TASK_THREAD_TIMES_INFO_COUNT when calling task_info with TASK_THREAD_TIMES_INFO
+- argp: Reformat Makefile.
+- stdlib: Avoid undefined behavior in stdlib/tst-labs
+- stdlib: Use long long int in stdlib/tst-llabs
+- Update kernel version to 6.3 in header constant tests
+- i386: Use pthread_barrier for synchronization on tst-bz21269
+- stdlib: Add testcases for llabs(). (BZ #30263)
+- stdlib: Add testcases for labs(). (BZ #30263)
+- stdlib: Add testcases for abs(). (BZ #30263)
+- hurd: Fix computing user stack pointer
+- hurd: Fix sc_i386_thread_state layout
+- hurd: Align signal stack pointer after allocating stackframe
+- hurd: Fix aligning signal stack pointer
+
+* Tue May 16 2023 Carlos O'Donell <carlos@redhat.com> - 2.37.9000-10
+- Auto-sync with upstream branch master,
+  commit 40b68e8cc00ca40348bc084b651c0561d31feb46:
+- wcsmbs: Reformat Makefile.
+- linux: Reformat Makefile.
+- stdlib: Reformat Makefile.
+- stdio-common: Reformat Makefile.
+- socket: Reformat Makefile.
+- misc: Reformat Makefile.
+- debug: Reformat Makefile.
+- elf: Reformat Makefile.
+- libio: Add __nonnull for FILE * arguments of fclose and freopen
+- nss: Reconcile conditional declaration and use of `is_nscd'
+- Update syscall lists for Linux 6.3
+- hurd: rule out some mach headers when generating errno.h
+- Stop checking if MiG supports retcode.
+- Added Redirects to longdouble error functions [BZ #29033]
+- nptl: Reformat Makefile.
+- scripts: Add sort-makefile-lines.py to sort Makefile variables.
+- dlopen: skip debugger notification for DSO loaded from sprof (bug 30258)
+
+* Tue May 09 2023 Arjun Shankar <arjun@redhat.com> - 2.37.9000-9
+- Auto-sync with upstream branch master,
+  commit d1417176a35d27ffb8da0ffb1e33154163b6eeb2:
+- aligned_alloc: conform to C17
+- testsuite: stdlib/isomac.c: fix REQUIREMENTS
+- manual: Remove unsupported line breaks in waiting-with-clock section
+- Enable new device_open_new RPC in libmachuser.
+- Revert "riscv: Resolve symbols directly for symbols with STO_RISCV_VARIANT_CC."
+- Update hurd/hurdselect.c to be more portable.
+- hurd: Fix ld.so name
+- hurd: Add ioperm symbol on x86_64
+- time: Remove alloca() from getdate
+- aarch64: More configure checks for libmvec
+- aarch64: SVE ACLE configure test cleanups
+- hppa: Fix 'concurrency' typo in comment
+- Update hurd/intr-msg.c to be more portable
+- Update sysdeps/mach/hurd/ioctl.c to make it more portable
+- aarch64: fix SVE ACLE check for bootstrap glibc builds
+- Enable libmvec support for AArch64
+- hurd: Enable x86_64 build script
+- hurd 64bit: Make dev_t word type
+- malloc: Really fix tst-memalign-3 link against threads
+- malloc: Fix tst-memalign-3 link against threads
+- Use GCC 13 branch, Linux 6.3 in build-many-glibcs.py
+- Mark various cold functions as __COLD
+- Fix regex type usage
+- hurd 64bit: Fix struct msqid_ds and shmid_ds fields
+- hurd 64bit: Fix ipc_perm fields types
+- hurd 64bit: Fix flock fields types
+- hurd 64bit: Add data for check-c++-types
+- hurd 64bit: Fix pthread_t/thread_t type to long
+- socket: Fix tst-cmsghdr-skeleton.c use of cmsg_len
+- hurd 64bit: Add missing data file for check-localplt test
+- hurd 64bit: Add missing libanl
+- hurd: Also XFAIL missing SA_NOCLDWAIT on 64bit
+- hurd: Fix tst-writev test
+- nptl: move tst-x86-64-tls-1 to nptl-only tests
+- hurd: Add expected abilist files for x86_64
+- hurd: Replace reply port with a dead name on failed interruption
+- Define __mig_strlen to support dynamically sized strings in hurd RPCs
+- mach: Disable 32bit compatibility mode
+- hurd: Make it possible to call memcpy very early
+- hurd: Implement longjmp for x86_64
+- hurd: Implement sigreturn for x86_64
+- Make __mach_msg_destroy portable for x86_64
+- hurd: Mark error functions as __COLD
+- cdefs.h: Define __COLD
+- hurd: Fix FS_RETRY_MAGICAL "machtype" handling
+- hurd: Respect existing FD_CLOEXEC in S_msg_set_fd
+- hurd: Don't leak the auth port in msg* RPCs
+- hurd: Make _exit work during early boot-up
+- hurd: Mark various conditions as unlikely
+- hurd: Move libc_hidden_def's around
+- hurd: Simplify _hurd_critical_section_lock a bit
+- __check_pf: Add a cancellation cleanup handler [BZ #20975]
+- Remap __GLIBC_FLT_EVAL_METHOD to 0 if __FLT_EVAL_METHOD__ is -1
+- riscv: Resolve symbols directly for symbols with STO_RISCV_VARIANT_CC.
+- elf.h: add PT_GNU_SFRAME
+- Fix Hurd getcwd build with GCC >= 13
+- Regenerate sysdeps/mach/hurd/bits/errno.h
+- locale/programs/locarchive.c: Remove unnecessary check in add_locale_archive
+- manual: document posix_openpt (bug 17010)
+- if_index: Remove unneeded alloca.h include
+- gethostid: Do not include alloca.h
+
+* Tue Apr 25 2023 Patsy Griffin <patsy@redhat.com> - 2.37.9000-8
+- Auto-sync with upstream branch master,
+  commit 904b94c07af84b7e4c98de3bbb822ccffcaf8c40.
+- socket: Add a test for MSG_CMSG_CLOEXEC
+- hurd: Do not take any flag from the CMSG_DATA
+- hurd: Implement MSG_CMSG_CLOEXEC
+- hurd: Don't pass FD_CLOEXEC in CMSG_DATA
+- hurd: Implement prefer_map_32bit_exec tunable
+- hurd: Don't attempt to deallocate MACH_PORT_DEAD
+- hurd: Only deallocate addrport when it's valid
+- hurd: Implement MAP_32BIT
+- Use O_CLOEXEC in more places (BZ #15722)
+- misc: Convert daemon () to GNU coding style
+- wcsmbs: Add wcsdup() tests. (BZ #30266)
+- string: Add tests for strndup (BZ #30266)
+- string: Add tests for strdup (BZ #30266)
+- string: Allow use of test-string.h for non-ifunc implementations.
+- hurd: Don't migrate reply port into __init1_tcbhead
+- hurd: Make dl-sysdep's open () cope with O_IGNORE_CTTY
+- Created tunable to force small pages on stack allocation.
+- malloc: Add missing shared thread library flags
+- linux: Re-flow and sort multiline Makefile definitions
+- posix: Re-flow and sort multiline Makefile definitions
+
+* Mon Apr 24 2023 Florian Weimer <fweimer@redhat.com> - 2.37.9000-7
+- Explicitly provide ldconfig paths (#2188550)
+
+* Thu Apr 20 2023 Florian Weimer <fweimer@redhat.com> - 2.37.9000-6
+- Auto-sync with upstream branch master,
+  commit 65cbd52174f5bc211dd655727c2239e25e55bfce:
+- build-many-glibcs.py: --disable-gcov for gcc-first
+- malloc: set NON_MAIN_ARENA flag for reclaimed memalign chunk (BZ #30101)
+- rcmd.c: Fix indentation in last commit
+- inet/rcmd.c: fix warn unused result
+- wcsmbs: Re-flow and sort routines, tests variables in Makefile
+- debug: Re-flow and sort routines variable in Makefile
+- math: Improve fmod(f) performance
+- Benchtests: Adjust timing
+- malloc: Assure that THP mode read do write OOB end of stringt
+- malloc: Assure that THP mode is always null terminated
+- aio: Fix freeing memory
+- elf: Stop including tls.h in ldsodefs.h
+- manual: update AddressSanitizer discussion
+- manual: document snprintf truncation better
+- manual: improve string section wording
+- manual: fix texinfo typo
+- <stdio.h>: Make fopencookie, vasprintf, asprintf available by default
+- <string.h>: Make strchrnul, strcasestr, memmem available by default
+- <sys/platform/x86.h>: Add PREFETCHI support
+- <sys/platform/x86.h>: Add AMX-COMPLEX support
+- <sys/platform/x86.h>: Add AVX-NE-CONVERT support
+- <sys/platform/x86.h>: Add AVX-VNNI-INT8 support
+- <sys/platform/x86.h>: Add MSRLIST support
+- <sys/platform/x86.h>: Add AVX-IFMA support
+- <sys/platform/x86.h>: Add AMX-FP16 support
+- <sys/platform/x86.h>: Add WRMSRNS support
+- <sys/platform/x86.h>: Add ArchPerfmonExt support
+- <sys/platform/x86.h>: Add CMPCCXADD support
+- <sys/platform/x86.h>: Add LASS support
+- <sys/platform/x86.h>: Add RAO-INT support
+- <sys/platform/x86.h>: Add LBR support
+- <sys/platform/x86.h>: Add RTM_FORCE_ABORT support
+- <sys/platform/x86.h>: Add SGX-KEYS support
+- <sys/platform/x86.h>: Add BUS_LOCK_DETECT support
+- <sys/platform/x86.h>: Add LA57 support
+- platform.texi: Move LAM after LAHF64_SAHF64
+- <bits/platform/x86.h>: Rename to x86_cpu_INDEX_7_ECX_15
+- hppa: Update struct __pthread_rwlock_arch_t comment.
+- hppa: Revise  __TIMESIZE define to use __WORDSIZE
+- libio: Remove unused pragma weak on vtable
+- malloc: Only set pragma weak for rpc freemem if required
+- compare_strings.py : Add --gmean flag
+- x86/dl-cacheinfo: remove unsused parameter from handle_amd
+- powerpc: Disable stack protector in early static initialization
+- nptl: Fix tst-cancel30 on sparc64
+- math: Remove the error handling wrapper from fmod and fmodf
+- math: Improve fmodf
+- math: Improve fmod
+- benchtests: Add fmodf benchmark
+- benchtests: Add fmod benchmark
+- x86: Set FSGSBASE to active if enabled by kernel
+- x86_64: Fix asm constraints in feraiseexcept (bug 30305)
+- manual: Document __wur usage under _FORTIFY_SOURCE
+- x86_64: Add rtld-stpncpy & rtld-strncpy
+- stdio-common: Fix building when !IS_IN (libc)
+- time: Fix strftime(3) API regarding nullability
+- Update arm libm-tests-ulps
+- getlogin_r: fix missing fallback if loginuid is unset (bug 30235)
+- memalign: Support scanning for aligned chunks.
+- malloc: Use C11 atomics on memusage
+- Remove --enable-tunables configure option
+- Remove --disable-experimental-malloc option
+
+* Fri Mar 31 2023 Arjun Shankar <arjun@redhat.com> - 2.37.9000-5
+- Apply glibc-disable-werror-tst-realloc.patch to disable spurious GCC
+  warning; and
+- Auto-sync with upstream branch master,
+  commit 885d3cda907d0dee54b13cbbf61b040c9951d5a2:
+- Allow building with --disable-nscd again
+- system: Add "--" after "-c" for sh (BZ #28519)
+- posix: Fix some crashes in wordexp [BZ #18096]
+- LoongArch: ldconfig: Add comments for using EF_LARCH_OBJABI_V1
+- elf: Take into account ${sysconfdir} in elf/tst-ldconfig-p.sh
+- Fix tst-glibc-hwcaps-prepend-cache with custom configure prefix value
+- Fix tst-ldconfig-ld_so_conf-update with custom configure prefix value
+- support: introduce support_sysconfdir_prefix
+- Remove set-hooks.h from generic includes
+- Remove --with-default-link configure option
+- libio: Remove the usage of __libc_IO_vtables
+- libio: Do not autogenerate stdio_lim.h
+- Move libc_freeres_ptrs and libc_subfreeres to hidden/weak functions
+- benchtests: Move libmvec benchtest inputs to benchtests directory
+- stdio-common: tests: don't double-define _FORTIFY_SOURCE
+- LoongArch: ldconfig: Ignore EF_LARCH_OBJABI_V1 in shared objects
+- _dl_map_object_from_fd: Remove unnecessary debugger notification in error path
+- hppa: Drop 16-byte pthread lock alignment
+- Minor: don't call _dl_debug_update (which can have side effects) inside assert
+- x86: Don't check PREFETCHWT1 in tst-cpu-features-cpuinfo.c
+- Declare wcstofN, wcstofNx for C2x
+- Update printf %b/%B C2x support
+- ARC: run child from the separate start block in __clone
+- ARC: Add the clone3 wrapper
+
+* Mon Mar 13 2023 Florian Weimer <fweimer@redhat.com> - 2.37.9000-4
+- Auto-sync with upstream branch master,
+  commit 90233f113cc941ef88ce03b7f73221a964dcaca8:
+- LoongArch: Add get_rounding_mode.
+- LoongArch: Add support for ldconfig.
+- linux: fix ntp_gettime abi break (BZ# 30156)
+- elf: Add missing dependency between resolvfail and testobj1.so
+- elf: Add -z lazy to some more tests
+- Benchtests: Remove simple_str(r)chr
+- Benchtests: Remove simple_str(n)casecmp
+- Benchtests: Remove simple_memcmp
+- Benchtests: Remove simple_strcspn/strpbrk/strsep
+- Benchtests: Remove memchr_strnlen
+- Benchtests: Remove simple_mem(r)chr
+- Benchtests: Remove simple_strcpy_chk
+- Benchtests: Remove simple_str(n)cmp
+- malloc: Fix transposed arguments in sysmalloc_mmap_fallback call
+- rt: fix shm_open not set ENAMETOOLONG when name exceeds {_POSIX_PATH_MAX}
+- posix: Ensure the initial signal disposition for tst-spawn7
+- hurd: fix build of tst-system.c
+- x86: Fix bug about glibc.cpu.hwcaps.
+- posix: Fix system blocks SIGCHLD erroneously [BZ #30163]
+- gshadow: Matching sgetsgent, sgetsgent_r ERANGE handling (bug 30151)
+
+* Mon Mar 06 2023 DJ Delorie <dj@redhat.com> - 2.37.9000-3
+- Auto-sync with upstream branch master,
+  commit 8390014c2320f94ffd8a8f6088c10c1f64567954.
+- Update kernel version to 6.2 in header constant tests
+- arm: Remove __builtin_arm_uqsub8 usage on string-fza.h
+- alpha: Remove strncmp optimization
+- powerpc: Remove powerpc64 strncmp variants
+- powerpc: Remove strncmp variants
+- C2x scanf binary constant handling
+- Fix stringop-overflow warning in test-strncat.
+- nis: Fix stringop-truncation warning with -O3 in nis_local_host.
+- support: use 64-bit time_t (bug 30111)
+- LoongArch: Update libm-test-ulps.
+- LoongArch: Further refine the condition to enable static PIE
+- hurd: Fix some broken indentation
+- hurd: Remove the ecx kludge
+
+* Wed Mar 01 2023 Carlos O'Donell <carlos@redhat.com> - 2.37.9000-2
+- Auto-sync with upstream branch master,
+  commit 59a6d5e9477695c41d6feef7ef8636f8f744f3c5:
+- Add AArch64 HWCAP2 values from Linux 6.2 to bits/hwcap.h
+- crypt: Remove invalid end of page test badsalttest
+- S390: Fix _FPU_SETCW/GETCW when compiling with Clang [BZ #30130]
+- s390x: Regenerate ULPs.
+- Add Arm HWCAP values from Linux 6.2 to bits/hwcap.h
+- htl: Add pthreadtypes-arch.h for x86_64
+- hurd: Implement TLS for x86_64
+- htl: Make pthread_mutex_t pointer-aligned
+- x86_64: Update libm test ulps
+- localedata: de_DE should not use Fräulein
+- LoongArch: Add math-barriers.h
+- cdefs.h: fix "__clang_major" typo
+- hppa: Drop old parisc-specific MADV_* constants
+- hurd: Generalize init-first.c to support x86_64
+- hurd: Simplify init-first.c further
+- hurd: Mark some audit tests as unsupported
+- htl: Mark select loop test as unsupported
+- hurd: Mark RLIMIT_AS tests as unsupported
+- aarch64: update libm test ulps
+- powerpc:Regenerate ulps for hypot
+- Update syscall lists for Linux 6.2
+- tunables.texi: Change \code{1} to @code{1}
+- x86-64: Add glibc.cpu.prefer_map_32bit_exec [BZ #28656]
+- gmon: fix memory corruption issues [BZ# 30101]
+- gmon: improve mcount overflow handling [BZ# 27576]
+- gmon: Fix allocated buffer overflow (bug 29444)
+- malloc: remove redundant check of unsorted bin corruption
+- Use Linux 6.2 in build-many-glibcs.py
+- Ignore MAP_VARIABLE in tst-mman-consts.py
+- AArch64: Fix HP_TIMING_DIFF computation [BZ# 29329]
+
+* Mon Feb 20 2023 Arjun Shankar <arjun@redhat.com> - 2.37.9000-1
+- Drop glibc-printf-grouping-swbz30068.patch; fix applied upstream, and
+- Auto-sync with upstream branch master,
+  commit 8b014a1b1f7aee1e3348db108aeea396359d481e:
+- s390: Fix build for -march=z13
+- arm: Support gcc older than 10 for find_zero_all
+- Linux: Remove generic Implies
+- Linux: Remove unused generic Makefile
+- Linux: Assume and consolidate getpeername wire-up syscall
+- Linux: Assume and consolidate getsockname wire-up syscall
+- Linux: Move wordsize-32 Version to default
+- __glob64_time64: Fix typo for stub_warning call (BZ #30146)
+- elf: Restore ldconfig libc6 implicit soname logic [BZ #30125]
+- stdlib: Undo post review change to 16adc58e73f3 [BZ #27749]
+- Define PC, SP and SYSRETURN for hurd x86_64
+- mach: Use PAGE_SIZE
+- hurd: Simplify init-first.c a bit
+- hurd: Make timer_t pointer-sized
+- hurd: Fix xattr function return type
+- hurd: Use proper integer types
+- hurd: Move thread state manipulation into _hurd_tls_new ()
+- glob64_time64: Fix typo for stub_warning call (BZ #30146)
+- Use uintptr_t instead of performing pointer subtraction with a null pointer
+- ARC:fpu: add extra capability check before use of sqrt and fma builtins
+- ARC: align child stack in clone
+- string: Remove string_private.h
+- iconv: Remove _STRING_ARCH_unaligned usage
+- iconv: Remove _STRING_ARCH_unaligned usage for get/set macros
+- resolv: Remove _STRING_ARCH_unaligned usage
+- nscd: Remove _STRING_ARCH_unaligned usage
+- stdlib: Simplify getenv
+- crypto: Remove _STRING_ARCH_unaligned usage
+- Fix ifunc-impl-list.c build for s390
+- [hurd] Fix i686 build breakage caused by 4fedebc91108
+- C2x strtol binary constant handling
+- [hurd] Add MTU_DISCOVER values
+- hurd: Fix unwinding over INTR_MSG_TRAP in shared too
+- mach: undef ENTRY2
+- hurd: i386 TLS tweaks
+- stdio: Do not ignore posix_spawn error on popen (BZ #29016)
+- update auto-libm-test-out-hypot
+- added pair of inputs for hypotf in binary32
+- Naming the parameter of dummy_sa_handler
+- hurd: Fix tcflag_t and speed_t types on 64-bit
+- htl: Remove ./sysdeps/htl/bits/types/struct___pthread_mutex.h
+- hurd, htl: Add some x86_64-specific code
+- Fix typos in comments
+- htl: Generalize i386 pt-machdep.h to x86
+- hurd: Set up the basic tree for x86_64-gnu
+- mach: Look for mach_i386.defs on x86_64 too
+- htl: Fix semaphore reference
+- hurd: Fix xattr error value
+- mach, hurd: Cast through uintptr_t
+- hurd: Use mach_msg_type_number_t where appropriate
+- hurd: Refactor readlinkat()
+- Use __builtin_FILE instead of __FILE__ in assert in C++.
+- hurd: Fix unwinding over INTR_MSG_TRAP
+- powerpc64: Add the clone3 wrapper
+- string: Disable stack protector in early static initialization
+- string: Add libc_hidden_proto for memrchr
+- string: Add libc_hidden_proto for strchrnul
+- elf: Smoke-test ldconfig -p against system /etc/ld.so.cache
+- NEWS: Document CVE-2023-25139.
+- Use 64-bit time_t interfaces in strftime and strptime (bug 30053)
+- C-SKY: Strip hard float abi from hard float feature.
+- S390: Influence hwcaps/stfle via GLIBC_TUNABLES.
+- string: Hook up the default implementation on test-strrchr
+- string: Hook up the default implementation on test-memrchr
+- string: Hook up the default implementation on test-memchr
+- string: Hook up the default implementation on test-strcpy
+- string: Hook up the default implementation on test-stpcpy
+- string: Hook up the default implementation on test-strncmp
+- string: Hook up the default implementation on test-strcmp
+- string: Hook up the default implementation on test-strchr
+- string: Hook up the default implementation on test-strnlen
+- string: Hook up the default implementation on test-strlen
+- riscv: Add string-fza.h and string-fzi.h
+- sh: Add string-fzb.h
+- powerpc: Add string-fza.h
+- arm: Add string-fza.h
+- alpha: Add string-fza, string-fzb.h, string-fzi.h, and string-shift.h
+- hppa: Add string-fza.h, string-fzc.h, and string-fzi.h
+- hppa: Add memcopy.h
+- string: Improve generic strrchr with memrchr and strlen
+- string: Improve generic memrchr
+- string: Improve generic strnlen with memchr
+- string: Improve generic memchr
+- string: Improve generic strcpy
+- string: Improve generic stpcpy
+- string: Improve generic strncmp
+- string: Improve generic strcmp
+- string: Improve generic strchr
+- string: Improve generic strchrnul
+- string: Improve generic strlen
+- Add string vectorized find and detection functions
+- Parameterize OP_T_THRES from memcopy.h
+- Parameterize op_t from memcopy.h
+- Replace rawmemchr (s, '\0') with strchr
+- AArch64: Improve SVE memcpy and memmove
+- Account for grouping in printf width (bug 30068)
+- Move RETURN_TO to x86/sysdep.h and implement x86_64 version.
+- Remove pthread-pi-defines.sym
+- stdlib: tests: don't double-define _FORTIFY_SOURCE
+- LoongArch: Add new relocation types.
+- Remove sysdeps/mach/i386/machine-sp.h
+- cdefs: Limit definition of fortification macros
+- hurd: Move some i386 bits to x86
+- Remove support setting custom demuxers during signal handling.
+- hurd: Implement SHM_ANON
+- hurd: Implement O_TMPFILE
+- hurd: Consolidate file_name_lookup implementation
+- Linux: optimize clone3 internal usage
+- aarch64: Add the clone3 wrapper
+- linux: Add clone3 CLONE_CLEAR_SIGHAND optimization to posix_spawn
+- Linux: Do not align the stack for __clone3
+- linux: Extend internal clone3 documentation
+- linux: Do not reset signal handler in posix_spawn if it is already SIG_DFL
+- Open master branch for glibc 2.38 development
+
+* Sat Feb 04 2023 Carlos O'Donell <carlos@redhat.com> - 2.37-1
+- Drop already included glibc-dprintf-length.patch patch.
+- Apply glibc-printf-grouping-swbz30068.patch to fix swbz#30068.
+- Auto-sync with upstream branch release/2.37/master,
+  commit a704fd9a133bfb10510e18702f48a6a9c88dbbd5:
+- Create ChangeLog.old/ChangeLog.26. (tag: glibc-2.37)
+- Prepare for glibc 2.37 release.
+- x86: Fix strncat-avx2.S reading past length [BZ #30065]
+- Update install.texi, and regenerate INSTALL.
+- Update manual/contrib.texi.
+- Update NEWS file with bug fixes.
+- Regenerate configure.
+- Update all PO files in preparation for release.
+- doc: correct _FORTIFY_SOURCE doc in features.h
+- libio: Update number of written bytes in dprintf implementation
+
+* Tue Jan 31 2023 Florian Weimer <fweimer@redhat.com> - 2.36.9000-25
+- Apply glibc-dprintf-length.patch to fix dprintf return value regression.
+- Auto-sync with upstream branch master,
+  commit 2f39e44a8417b4186a7f15bfeac5d0b557e63e03:
+- Account for octal marker in %#o format (rhbz#2165869)
+- Use binutils 2.40 branch in build-many-glibcs.py
+- Use MPFR 4.2.0, MPC 1.3.1 in build-many-glibcs.py
+
+* Wed Jan 25 2023 Florian Weimer <fweimer@redhat.com> - 2.36.9000-24
+- Auto-sync with upstream branch master,
+  commit 0d50f477f47ba637b54fb03ac48d769ec4543e8d:
+- stdio-common: Handle -1 buffer size in __sprintf_chk & co (bug 30039)
+- Document '%F' format specifier
+- sparc (64bit): Regenerate ulps
+- ia64: Regenerate ulps
+- Update libc.pot for 2.37 release.
+- x86: Cache computation for AMD architecture.
+- manual: Fix typo
+- Add STATX_DIOALIGN from Linux 6.1 to bits/statx-generic.h
+- Add IPPROTO_L2TP from Linux 6.1 to netinet/in.h
+- AArch64: Improve strrchr
+- AArch64: Optimize strnlen
+- AArch64: Optimize strlen
+- AArch64: Optimize strcpy
+- AArch64: Improve strchrnul
+- AArch64: Optimize strchr
+- AArch64: Improve strlen_asimd
+- AArch64: Optimize memrchr
+- AArch64: Optimize memchr
+
+* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.36.9000-23
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
+
+* Tue Jan 17 2023 Florian Weimer <fweimer@redhat.com> - 2.36.9000-22
+- Auto-sync with upstream branch master,
+  commit 569cfcc6bf35c28112ca8d7112e9eb4a22bed5b8:
+- hurd: Fix _NOFLSH value
+- elf: Fix GL(dl_phdr) and GL(dl_phnum) for static builds [BZ #29864]
+- string: Suppress -Wmaybe-unitialized for wordcopy [BZ #19444]
+- scripts/build-many-glibcs.py: Remove unused RANLIB and STRIP option
+- configure: Move nm, objdump, and readelf to LIBC_PROG_BINUTILS
+
+* Wed Jan 11 2023 Patsy Griffin <patsy@redhat.com> - 2.36.9000-21
+- Auto-sync with upstream branch master,
+  commit 2d2d7e1a8f2e62b442ae8978f0a6c17f385575c4.
+- configure: Allow user override LD, AR, OBJCOPY, and GPROF
+- math: Suppress -O0 warnings for soft-fp fsqrt [BZ #19444]
+- sunrpc: Suppress GCC -O1 warning on user2netname [BZ #19444]
+- locale: Use correct buffer size for utf8_sequence_error [BZ #19444]
+- Add HWCAP2_SVE_EBF16 from Linux 6.1 to AArch64 bits/hwcap.h
+- Add _FORTIFY_SOURCE implementation documentation [BZ #28998]
+- Update copyright dates not handled by scripts/update-copyrights
+- Update copyright dates with scripts/update-copyrights
+- Remove trailing whitespace in gmp.h
+- Remove trailing whitespace
+- C2x semantics for <tgmath.h>
+- time: Set daylight to 1 for matching DST/offset change (bug 29951)
+- Fix ldbl-128 built-in function use
+- x86: Check minimum/maximum of non_temporal_threshold [BZ #29953]
+- i686: Regenerate ulps
+
+* Mon Jan 02 2023 Arjun Shankar <arjun@redhat.com> - 2.36.9000-20
+- Drop glibc-rh2155825.patch; fix applied upstream, and
+- Auto-sync with upstream branch master,
+  commit 5f55b22f4b3ea14c777a60f239d25dc4555eb804:
+- hurd getcwd: Fix memory leak on error
+- hurd fcntl: Make LOCKED macro more robust
+- hurd: Make dl-sysdep __sbrk check __vm_allocate call
+- htl: Drop duplicate check in __pthread_stack_alloc
+- hurd hurdstartup: Initialize remaining fields of hurd_startup_data
+- hurd _S_msg_add_auth: Initialize new arrays to 0
+- htl: Check error returned by __getrlimit
+- getdelim: ensure error indicator is set on error (bug 29917)
+- htl: Fix sem_wait race between read and gsync_wait
+- Avoid use of atoi in malloc
+- Linux: Pass size argument of epoll_create to the kernel
+- Simplify scripts/cross-test-ssh.sh configuration.
+- Define MADV_COLLAPSE from Linux 6.1
+- powerpc64: Increase SIGSTKSZ and MINSIGSTKSZ
+- Update all PO files in preparation for release.
+- Update kernel version to 6.1 in header constant tests
+- Update syscall lists for Linux 6.1
+- libio: Convert __vswprintf_internal to buffers (bug 27857)
+- libio: Convert __obstack_vprintf_internal to buffers (bug 27124)
+- libio: Convert __vdprintf_internal to buffers
+- libio: Convert __vasprintf_internal to buffers
+- libio: Convert __vsprintf_internal to buffers
+- stdio-common: Add lock optimization to vfprintf and vfwprintf
+- stdio-common: Convert vfprintf and related functions to buffers
+- stdio-common: Add __translated_number_width
+- stdio-common: Add __printf_function_invoke
+- stdio-common: Introduce buffers for implementing printf
+- locale: Implement struct grouping_iterator
+- Use Linux 6.1 in build-many-glibcs.py
+- Avoid use of atoi in some places in libc
+
+* Thu Dec 22 2022 Florian Weimer <fweimer@redhat.com> - 2.36.9000-19
+- Fix epoll_create regression (#2155825)
+
+* Mon Dec 19 2022 Florian Weimer <fweimer@redhat.com> - 2.36.9000-18
+- Auto-sync with upstream branch master,
+  commit c1c0dea38833751f36a145c322ce53c9a08332e1:
+- Linux: Remove epoll_create, inotify_init from syscalls.list (#2154747)
+- Linux: Reflow and sort some Makefile variables
+- mach: Drop remnants of old_CFLAGS
+- mach: Fix passing -ffreestanding when checking for gnumach headers
+- Force use of -ffreestanding when checking for gnumach headers
+- elf: Fix tst-relro-symbols.py argument passing
+- x86: Prevent SIGSEGV in memcmp-sse2 when data is concurrently modified [BZ #29863]
+- Allow _Qp_fgt in sparc64 localplt.data
+
+* Mon Dec 12 2022 DJ Delorie <dj@redhat.com> - 2.36.9000-17
+- Auto-sync with upstream branch master,
+  commit 5dcd2d0ad02ff12c76355ef4f40947c1857ac482.
+- stdlib: Move _IO_cleanup to call_function_static_weak
+- elf: Do not assume symbol order on tst-audit25{a,b}
+- time: Use 64 bit time on tzfile
+- nscd: Use 64 bit time_t on libc nscd routines (BZ# 29402)
+- nis: Build libnsl with 64 bit time_t
+- realloc: Return unchanged if request is within usable size
+- Linux: Consolidate typesizes.h
+- Linux: Make generic fcntl.h the default one
+- Linux: make generic xstatver.h the default one
+- Linux: Remove generic sysdep
+- Linux: Assume and consolidate shutdown wire-up syscall
+- Linux: Assume and consolidate listen wire-up syscall
+- Linux: Assume and consolidate socketpair wire-up syscall
+- Linux: Assume and consolidate socket wire-up syscall
+- Linux: Assume and consolidate bind wire-up syscall
+- Linux: consolidate ____longjmp_chk
+- Linux: consolidate sendfile implementation
+- Linux: consolidate unlink implementation
+- Linux: consolidate symlink implementation
+- Linux: consolidate rmdir implementation
+- Linux: consolidate readlink implementation
+- Linux: consolidate mkdir implementation
+- Linux: consolidate link implementation
+- Linux: consolidate lchown implementation
+- Linux: consolidate inotify_init implementation
+- Lninux: consolidate epoll_create implementation
+- Linux: consolidate dup2 implementation
+- Linux: consolidate chown implementation
+- Linux: consolidate chmod implementation
+- linux: Consolidate dl-origin.c
+- linux: Use long int for syscall return value
+- LoongArch: Use medium cmodel build libc_nonshared.a.
+- x86_64: State assembler is being tested on sysdeps/x86/configure
+- configure: Remove AS check
+- configure: Remove check if ld is GNU
+- configure: Remove check if as is GNU
+- configure: Move locale tools early
+
+* Mon Dec 05 2022 Arjun Shankar <arjun@redhat.com> - 2.36.9000-16
+- Auto-sync with upstream branch master,
+  commit 8fb923ddc38dd5f4bfac4869d70fd80483fdb87a:
+- hurd: Make getrandom cache the server port
+- powerpc64: Remove old strncmp optimization
+- x86-64 strncpy: Properly handle the length parameter [BZ# 29839]
+- x86-64 strncat: Properly handle the length parameter [BZ# 24097]
+- ARC: update definitions in elf/elf.h
+- scripts: Add "|" operator support to glibcpp's parsing
+- Apply asm redirections in syslog.h before first use [BZ #27087]
+- LoongArch: Add support for ilogb[f]
+- LoongArch: Add support for scalb[f]
+- LoongArch: Add support for scalbn[f]
+- LoongArch: Use __builtin_logb{,f} with GCC >= 13
+- Use GCC builtins for logb functions if desired.
+- LoongArch: Use __builtin_llrint{,f} with GCC >= 13
+- Use GCC builtins for llrint functions if desired.
+- LoongArch: Use __builtin_lrint{,f} with GCC >= 13
+- Use GCC builtins for lrint functions if desired.
+- LoongArch: Use __builtin_rint{,f} with GCC >= 13
+
+* Mon Nov 28 2022 Florian Weimer <fweimer@redhat.com> - 2.36.9000-15
+- Auto-sync with upstream branch master,
+  commit f704192911c6c7b65a54beab3ab369fca7609a5d:
+- x86/fpu: Factor out shared avx2/avx512 code in svml_{s|d}_wrapper_impl.h
+- x86/fpu: Cleanup code in svml_{s|d}_wrapper_impl.h
+- x86/fpu: Reformat svml_{s|d}_wrapper_impl.h
+- x86/fpu: Fix misspelled evex512 section in variety of svml files
+- x86/fpu: Add missing ISA sections to variety of svml files
+- stdio-common: Add missing dependencies (bug 29780)
+- i386: Avoid rely on linker optimization to avoid relocation
+- elf: Fix rtld-audit trampoline for aarch64
+- Define in_int32_t_range to check if the 64 bit time_t syscall should be used
+
+* Mon Nov 14 2022 Arjun Shankar <arjun@redhat.com> - 2.36.9000-14
+- Auto-sync with upstream branch master,
+  commit 94628de77888c3292fc103840731ff85f283368e:
+- elf/tst-tlsopt-powerpc fails when compiled with -mcpu=power10 (BZ# 29776)
+- LoongArch: Hard Float Support for fmaximum_mag_num{f/ }, fminimum_mag_num{f/ }.
+- LoongArch: Hard Float Support for fmaximum_mag{f/ }, fminimum_mag{f/ }.
+- LoongArch: Hard Float Support for fmaxmag{f/ }, fminmag{f/ }.
+- LoongArch: Hard Float Support for fmaximum_num{f/ }, fminimum_num{f/ }.
+- LoongArch: Hard Float Support for fmaximum{f/ }, fminimum{f/ }.
+- LoongArch: Hard Float Support for float-point classification functions.
+- LoongArch: Use __builtin_{fma, fmaf} to implement function {fma, fmaf}.
+
+* Thu Nov 10 2022 Florian Weimer <fweimer@redhat.com> - 2.36.9000-13
+- Auto-sync with upstream branch master,
+  commit 22a46dee24351fd5f4f188ad80554cad79c82524:
+- Linux: Support __IPC_64 in sysvctl *ctl command arguments (bug 29771)
+- riscv: Get level 3 cache's information
+- debug: Fix typo in tests-unsupported rule
+- iconvdata/tst-table-charmap.sh: remove handling of old, borrowed format
+- Makerules: Generate shlib.lds with -fuse-ld=bfd
+- x86: Add avx2 optimized functions for the wchar_t strcpy family
+- x86: Add evex optimized functions for the wchar_t strcpy family
+- x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions
+- x86: Optimize and shrink st{r|p}{n}{cat|cpy}-evex functions
+- benchtests: Make str{n}{cat|cpy} benchmarks output json
+- x86: Use VMM API in memcmpeq-evex.S and minor changes
+- x86: Use VMM API in memcmp-evex-movbe.S and minor changes
+- string: Add len=0 to {w}memcmp{eq} tests and benchtests
+- Linux: Add ppoll fortify symbol for 64 bit time_t (BZ# 29746)
+- hurd: Add sigtimedwait and sigwaitinfo support
+
+* Mon Nov 07 2022 DJ Delorie <dj@redhat.com> - 2.36.9000-12
+- Auto-sync with upstream branch master,
+  commit 8d291eabd541029d7ac705cc1ea112c58dfbb05f.
+- Apply asm redirection in gmp.h before first use
+- Rewrite find_cxx_header config configure.ac
+- elf/tlsdeschtab.h: Add the Malloc return value check in _dl_make_tlsdesc_dynamic()
+- elf: Disable some subtests of ifuncmain1, ifuncmain5 for !PIE
+- posix: Make posix_spawn extensions available by default
+- x86_64: Implement evex512 version of strrchr and wcsrchr
+- elf: Introduce <dl-call_tls_init_tp.h> and call_tls_init_tp (bug 29249)
+- LoongArch: Fix ABI related macros in elf.h to keep consistent with binutils[1].
+- scripts/glibcelf.py: Properly report <elf.h> parsing failures
+- elf: Rework exception handling in the dynamic loader [BZ #25486]
+- linux: Drop useless include from fstatat.c
+- Fix OOB read in stdlib thousand grouping parsing [BZ #29727]
+- linux: Fix fstatat on MIPSn64 (BZ #29730)
+- elf: Remove allocate use on _dl_debug_printf
+- nptl: Fix pthread_create.c build with clang
+- allocate_once: Apply asm redirection before first use
+- alloc_buffer: Apply asm redirection before first use
+- configure: Use -Wno-ignored-attributes if compiler warns about multiple aliases
+- Disable use of -fsignaling-nans if compiler does not support it
+- intl: Fix clang -Wunused-but-set-variable on plural.c
+- Apply asm redirection in not-cancel before first use
+- malloc: Use uintptr_t for pointer alignment
+- Use uintptr_t in fts for pointer alignment
+- Fix build with GCC 13 _FloatN, _FloatNx built-in functions
+- elf: Build tst-relr-mod[34]a.so with $(LDFLAGS-rpath-ORIGIN)
+- x86-64: Improve evex512 version of strlen functions
+- Correctly determine libc.so 'OUTPUT_FORMAT' when cross-compiling.
+- Remove unused scratch_buffer_dupfree
+- Fix elf/tst-dlmopen-twice not to exhaust static TLS
+- Use uintptr_t in string/tester for pointer alignment
+- stdlib/strfrom: Add copysign to fix NAN issue on riscv (BZ #29501)
+- Fix resource/bug-ulimit1 test
+- Fix missing NUL terminator in stdio-common/scanf13 test
+- Fix off-by-one OOB read in elf/tst-tls20
+- elf: Fix alloca size in _dl_debug_vdprintf
+- malloc: Use uintptr_t in alloc_buffer
+- Fix invalid pointer dereference in wcpcpy_chk
+- Fix invalid pointer dereference in wcscpy_chk
+- aarch64: Fix the extension header write in getcontext and swapcontext
+- aarch64: Don't build wordcopy
+- scripts: Use bool in tunables initializer
+- longlong.h: update from GCC for LoongArch clz/ctz support
+
+* Thu Oct 27 2022 Patsy Griffin <patsy@redhat.com> - 2.36.9000-11
+- Auto-sync with upstream branch master,
+  commit 6f360366f7f76b158a0f4bf20d42f2854ad56264.
+- elf: Introduce to _dl_call_fini
+- ld.so: Export tls_init_tp_called as __rtld_tls_init_tp_called
+- scripts/localplt.awk: Handle DT_JMPREL with empty PLT (for C-SKY)
+- Remove lingering libSegfault Makefile entries
+- aarch64: Use memcpy_simd as the default memcpy
+- aarch64: Cleanup memset ifunc
+- elf: Reinstate on DL_DEBUG_BINDINGS _dl_lookup_symbol_x
+- x86_64: Implement evex512 version of strchrnul, strchr and wcschr
+- linux: Fix generic struct_stat for 64 bit time (BZ# 29657)
+- manual: Add missing % in int conversion list
+- Avoid undefined behaviour in ibm128 implementation of llroundl (BZ #29488)
+- Remove all assembly optimizations for htonl and htons
+- Remove htonl.S for i386/x86_64
+- Fix BZ #29463 in the ibm128 implementation of y1l too
+- Add ADDRB from Linux 6.0 to bits/termios-c_cflag.h
+- x86: Use `testb` for FSRM check in memmove-vec-unaligned-erms
+- x86: Use `testb` for case-locale check in str{n}casecmp-sse42
+- x86: Use `testb` for case-locale check in str{n}casecmp-sse2
+- x86: Use `testb` for case-locale check in str{n}casecmp-avx2
+- x86: Add support for VEC_SIZE == 64 in strcmp-evex.S impl
+- x86: Remove AVX512-BVMI2 instruction from strrchr-evex.S
+- sysdeps: arm: Fix preconfigure script for ARMv8/v9 targets [BZ #29698]
+- nis: Fix nis_print_directory
+- linux: Avoid shifting a negative signed on POSIX timer interface
+- Bench: Improve benchtests for memchr, strchr, strnlen, strrchr
+- x86: Optimize strrchr-evex.S and implement with VMM headers
+- x86: Optimize memrchr-evex.S
+- x86: Optimize strnlen-evex.S and implement with VMM headers
+- x86: Shrink / minorly optimize strchr-evex and implement with VMM headers
+- x86: Optimize memchr-evex.S and implement with VMM headers
+- x86_64: Implement evex512 version of memchr, rawmemchr and wmemchr
+- String: Improve test coverage for memchr
+- Use PTR_MANGLE and PTR_DEMANGLE unconditionally in C sources
+- Introduce <pointer_guard.h>, extracted from <sysdep.h>
+- x86-64: Move LP_SIZE definition to its own header
+- math: Fix asin and acos invalid exception with old gcc
+- x86: Update strlen-evex-base to use new reg/vec macros.
+- x86: Remove now unused vec header macros.
+- x86: Update memset to use new VEC macros
+- x86: Update memmove to use new VEC macros
+- x86: Update memrchr to use new VEC macros
+- x86: Update VEC macros to complete API for evex/evex512 impls
+- elf: Do not completely clear reused namespace in dlmopen (bug 29600)
+- malloc: Switch global_max_fast to uint8_t
+- Add NT_S390_PV_CPU_DATA from Linux 6.0 to elf.h
+- Add AArch64 HWCAP2_EBF16 from Linux 6.0 to bits/hwcap.h
+- String: Improve test coverage for memchr
+- elf: Remove -fno-tree-loop-distribute-patterns usage on dl-support
+- socket: Use offsetof in SUN_LEN (bug 29578)
+- Expose all MAP_ constants in <sys/mman.h> unconditionally (bug 29375)
+- LoongArch: Fix the condition to use PC-relative addressing in start.S
+- arm: Enable USE_ATOMIC_COMPILER_BUILTINS (BZ #24774)
+- csu: Disable stack protector for static-reloc for static-pie
+- NEWS: Fix grammar
+- elf: Simplify output of hwcap subdirectories in ld.so help
+- elf: Remove _dl_string_hwcap
+- Add NEWS entry for legacy hwcaps removal
+- elf: Remove hwcap and bits_hwcap fields from struct cache_entry
+- elf: Remove hwcap parameter from add_to_cache signature
+- elf: Remove legacy hwcaps support from ldconfig
+- elf: Remove legacy hwcaps support from the dynamic loader
+- x86_64: Remove platform directory library loading test
+- Update to Unicode 15.0.0 [BZ #29604]
+- Update kernel version to 6.0 in header constant tests
+- x86: Fix -Os build (BZ #29576)
+- sunrpc: Suppress GCC -Os warning on user2netname
+- rt: Initialize mq_send input on tst-mqueue{5,6}
+- posix: Suppress -Os may be used uninitialized warnings on regexec
+- posix: Suppress -Os warnings on fnmatch
+- locale: prevent maybe-uninitialized errors with -Os [BZ #19444]
+- Regenerate sysdeps/mach/hurd/bits/errno.h
+- Update syscall lists for Linux 6.0
+- nscd: Drop local address tuple variable [BZ #29607]
+- Use Linux 6.0 in build-many-glibcs.py
+- x86-64: Require BMI1/BMI2 for AVX2 strrchr and wcsrchr implementations
+- x86-64: Require BMI2 and LZCNT for AVX2 memrchr implementation
+- x86-64: Require BMI2 for AVX2 (raw|w)memchr implementations
+- x86-64: Require BMI2 for AVX2 wcs(n)cmp implementations
+- x86-64: Require BMI2 for AVX2 strncmp implementation
+- x86-64: Require BMI2 for AVX2 strcmp implementation
+- x86-64: Require BMI2 for AVX2 str(n)casecmp implementations
+- x86: include BMI1 and BMI2 in x86-64-v3 level
+- x86: Cleanup pthread_spin_{try}lock.S
+- Benchtests: Add bench for pthread_spin_{try}lock and mutex_trylock
+
+* Mon Oct 17 2022 Carlos O'Donell <carlos@redhat.com> - 2.36.9000-10
+- Enable ELF DT_HASH for shared objects and the dynamic loader (#2129358)
+
+* Mon Oct 03 2022 DJ Delorie <dj@redhat.com> - 2.36.9000-9
+- Auto-sync with upstream branch master,
+  commit 114e299ca66353fa7be1ee45bb4e1307d3de1fa2.
+- x86: Remove .tfloat usage
+- nptl: Convert tst-setuid2 to test-driver
+- support: Add xpthread_cond_signal wrapper
+- hppa: Fix initialization of dp register [BZ 29635]
+- Fix iseqsig for _FloatN and _FloatNx in C++ with GCC 13
+- malloc: Do not clobber errno on __getrandom_nocancel (BZ #29624)
+- stdlib: Fix __getrandom_nocancel type and arc4random usage (BZ #29638)
+- LoongArch: Add static PIE support
+- Benchtest: Add additional benchmarks for strlen and strnlen
+- x86: Fix wcsnlen-avx2 page cross length comparison [BZ #29591]
+- Update _FloatN header support for C++ in GCC 13
+- hurd: Fix typo
+- get_nscd_addresses: Fix subscript typos [BZ #29605]
+- hurd: Increase SOMAXCONN to 4096
+- Use atomic_exchange_release/acquire
+
+* Fri Sep 23 2022 Patsy Griffin <patsy@redhat.com> - 2.36.9000-8
+- Auto-sync with upstream branch master,
+  commit c02e29a0ba47d636281e1a026444a1a0a254aa12.
+- nss: Use shared prefix in IPv4 address in tst-reload1
+- nss: Enhance tst-reload1 coverage and logging
+- Use C11 atomics instead of atomic_decrement_and_test
+- Use C11 atomics instead of atomic_increment(_val)
+- Use C11 atomics instead of atomic_and/or
+- malloc: Print error when oldsize is not equal to the current size.
+- Use '%z' instead of '%Z' on printf functions
+- elf: Extract glibcelf constants from <elf.h>
+- scripts: Enhance glibcpp to do basic macro processing
+- scripts: Extract glibcpp.py from check-obsolete-constructs.py
+- riscv: Remove RV32 floating point functions
+- riscv: Consolidate the libm-test-ulps
+- hurd: Fix SIOCADD/DELRT ioctls
+- hurd: Drop struct rtentry and in6_rtmsg
+- hurd: Add _IOT_ifrtreq to <net/route.h>
+- elf: Use C11 atomics on _dl_mcount
+- hurd: Use IF_NAMESIZE rather than IFNAMSIZ
+- hurd: Add ifrtreq structure to net/route.h
+- hppa: undef __ASSUME_SET_ROBUST_LIST
+- linux: Use same type for MMAP2_PAGE_UNIT
+- m68k: Enforce 4-byte alignment on internal locks (BZ #29537)
+- nss: Fix tst-nss-files-hosts-long on single-stack hosts (bug 24816)
+- nss: Implement --no-addrconfig option for getent
+- gconv: Use 64-bit interfaces in gconv_parseconfdir (bug 29583)
+- elf: Implement force_first handling in _dl_sort_maps_dfs (bug 28937)
+- Linux: Do not skip d_ino == 0 entries in readdir, readdir64 (bug 12165)
+- hurd: Factorize at/non-at functions
+- tst-sprintf-errno: Update Hurd message length
+- RISC-V: Allow long jumps to __syscall_error
+- hurd: Make readlink* just reopen the file used for stat
+- hurd: Fix readlink() hanging on fifo
+- Fix BRE typos in check-safety.sh
+- Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564]
+- Use relaxed atomics since there is no MO dependence
+
+* Wed Sep 14 2022 Florian Weimer <fweimer@redhat.com> - 2.36.9000-7
+- Remove .annobin* symbols from ld.so (#2126477)
+
+* Tue Sep 13 2022 Florian Weimer <fweimer@redhat.com> - 2.36.9000-6
+- Drop glibc-deprecated-selinux-makedb.patch.  Upstream has been ported
+  to new libselinux.
+- Auto-sync with upstream branch master,
+  commit f278835f594740f5913001430641cf1da4878670:
+- makedb: fix build with libselinux >= 3.1 (Bug 26233)
+- tst-sprintf-errno: Update Hurd message output
+- Use C11 atomics instead of atomic_decrement(_val)
+- Use C11 atomics instead atomic_add(_zero)
+- mktime: improve heuristic for ca-1986 Indiana DST
+- Assume HAVE_TZSET in time/mktime.c
+- elf: Fix hwcaps string size overestimation
+- errlist: add missing entry for EDEADLOCK (bug 29545)
+- Do not define static_assert or thread_local in headers for C2x
+- malloc: Use C11 atomics rather than atomic_exchange_and_add
+- Add NEWS entry for CVE-2022-39046
+- elf: Rename _dl_sort_maps parameter from skip to force_first
+- scripts/dso-ordering-test.py: Generate program run-time dependencies
+- math: x86: Use prefix for FP_INIT_ROUNDMODE
+- scripts/build-many-glibcs.py: Use https:// for sourceware.org Git clones
+- debug: test for more required cacellation points (BZ# 29274)
+- elf.h: Remove duplicate definition of VER_FLG_WEAK
+- syslog: Remove extra whitespace between timestamp and message (BZ#29544)
+- LoongArch: Add soft float support.
+- elf: Restore how vDSO dependency is printed with LD_TRACE_LOADED_OBJECTS (BZ #29539)
+- nptl: x86_64: Use same code for CURRENT_STACK_FRAME and stackinfo_get_sp
+
+* Mon Sep 05 2022 Arjun Shankar <arjun@redhat.com> - 2.36.9000-5
+- Co-Authored-By: Benjamin Herrenschmidt <benh@amazon.com>
+- Retain .gnu_debuglink section in libc.so.6 (#2090744)
+- Remove redundant ld.so debuginfo file (#2090744)
+
+* Tue Aug 30 2022 DJ Delorie <dj@redhat.com> - 2.36.9000-4
+- Auto-sync with upstream branch master,
+  commit c7509d49c4e8fa494120c5ead21338559dad16f5.
+- Apply asm redirections in wchar.h before first use
+- resolv: Fix building tst-resolv-invalid-cname for earlier C standards
+- syslog: Fix large messages (BZ#29536)
+- posix: Fix macro expansion producing 'defined' has undefined behavior
+- stdlib: Fix macro expansion producing 'defined' has undefined behavior
+- S390: Always use svc 0
+- nss_dns: Rewrite _nss_dns_gethostbyname4_r using current interfaces
+- resolv: Add new tst-resolv-invalid-cname
+- nss_dns: In gaih_getanswer_slice, skip strange aliases (bug 12154)
+- nss_dns: Rewrite getanswer_r to match getanswer_ptr (bug 12154, bug 29305)
+- nss_dns: Remove remnants of IPv6 address mapping
+- nss_dns: Rewrite _nss_dns_gethostbyaddr2_r and getanswer_ptr
+- nss_dns: Split getanswer_ptr from getanswer_r
+- resolv: Add DNS packet parsing helpers geared towards wire format
+- resolv: Add internal __ns_name_length_uncompressed function
+- resolv: Add the __ns_samebinaryname function
+- resolv: Add internal __res_binary_hnok function
+- resolv: Add tst-resolv-aliases
+- resolv: Add tst-resolv-byaddr for testing reverse lookup
+- LoongArch: Use __builtin_{fmax,fmaxf,fmin,fminf} with GCC >= 13
+- LoongArch: Fix ptr mangling/demangling features.
+- nscd: Fix netlink cache invalidation if epoll is used [BZ #29415]
+- Add test for bug 29530
+- Makeconfig: Set pie-ccflag to -fPIE by default [BZ# 29514]
+- hurd: Fix vm_size_t incoherencies
+- mach: Make xpg_strerror_r set a message on error
+- mach: Fix incoherency between perror and strerror
+- elf: Call __libc_early_init for reused namespaces (bug 29528)
+- csu: Change start code license to have link exception
+- s390: Move hwcaps/platform names out of _rtld_global_ro
+- Revert "Detect ld.so and libc.so version inconsistency during startup"
+- Add NT_LOONGARCH_* from Linux 5.19 to elf.h
+- Detect ld.so and libc.so version inconsistency during startup
+- Merge getopt patch from Gnulib
+- Merge _GL_UNUSED C23 patch from Gnulib
+- LoongArch: Fix dl-machine.h code formatting.
+- scripts/glibcelf.py: Add hashing support
+- hurd: Fix starting static binaries with stack protection enabled
+- htl: Make pthread*_cond_timedwait register wref before releasing mutex
+- htl: make __pthread_hurd_cond_timedwait_internal check mutex is held
+- Add AArch64 HWCAP2_* constants from Linux 5.19
+
+* Mon Aug 22 2022 Arjun Shankar <arjun@redhat.com> - 2.36.9000-3
+- Auto-sync with upstream branch master,
+  commit a727220b37efc9d4d558a77c5fc57f3af99a4829:
+- Add AGROUP from Linux 5.19 to sys/acct.h, remove Alpha version (bug 29502)
+- alpha: Fix generic brk system call emulation in __brk_call (bug 29490)
+- hurd: Assume non-suid during bootstrap
+
+* Thu Aug 18 2022 Patsy Griffin <patsy@redhat.com> - 2.36.9000-2
+- Auto-sync with upstream branch master,
+  commit 9125e43daf92e3d4e69044a54b9fe9ed88c861ad.
+- Use binutils 2.39 branch in build-many-glibcs.py
+- S390: Fix werror=unused-variable in ifunc-impl-list.c.
+- Ensure calculations happen with desired rounding mode in y1lf128
+- localedata: Convert French language locales (fr_*) to UTF-8
+- Linux: Fix enum fsconfig_command detection in <sys/mount.h>
+- elf: Run tst-audit-tlsdesc, tst-audit-tlsdesc-dlopen everywhere
+- Move ip_mreqn structure from Linux to generic
+- malloc: Do not use MAP_NORESERVE to allocate heap segments
+- Linux: Terminate subprocess on late failure in tst-pidfd (bug 29485)
+- non-linux: bits/in.h: Add more RFC options
+
+* Mon Aug 15 2022 Florian Weimer <fweimer@redhat.com> - 2.36.9000-1
+- Auto-sync with upstream branch master,
+  commit 453b88efe6fa79f5c7c6fccc3a520c75fdd43074:
+- arm: Remove nested functionf rom relocate_pc24
+- linux: Fix sys/mount.h usage with kernel headers
+- linux: Use compile_c_snippet to check linux/mount.h availability
+- linux: Mimic kernel defition for BLOCK_SIZE
+- linux: Use compile_c_snippet to check linux/pidfd.h availability
+- glibcextract.py: Add compile_c_snippet
+- LoongArch: Add pointer mangling support.
+- AArch64: Fix typo in sve configure check (BZ# 29394)
+- libio: Improve performance of IO locks
+- tst-process_madvise: Check process_madvise-syscall support.
+- elf.h: Add ELFCOMPRESS_ZSTD
+- inet: Turn __ivaliduser into a compatibility symbol
+- x86: Fix `#define STRCPY` guard in strcpy-sse2.S
+- elf: Replace `strcpy` call with `memcpy` [BZ #29454]
+- soft-fp: Add fixhf[uns][di|si] and float[uns][di|si]hf
+- i386: Use cmpl instead of cmp
+- i386: Use fldt instead of fld on e_logl.S
+- i386: Replace movzx with movzbl
+- dlfcn: Pass caller pointer to static dlopen implementation (bug 29446)
+- malloc: Correct the documentation of the top_pad default
+- i386: Remove RELA support
+- arm: Remove RELA support
+- Remove ldd libc4 support
+- Assume only FLAG_ELF_LIBC6 suport
+- Remove left over LD_LIBRARY_VERSION usages
+- Linux: Remove exit system call from _exit
+- LoongArch: Add vdso support for gettimeofday.
+- Update kernel version to 5.19 in header constant tests
+- assert: Do not use stderr in libc-internal assert
+- nptl: Remove uses of assert_perror
+- stdio: Clean up __libc_message after unconditional abort
+- Update syscall lists for Linux 5.19
+- Use Linux 5.19 in build-many-glibcs.py
+- socket: Check lengths before advancing pointer in CMSG_NXTHDR
+- Don't use unsupported format string in ld.so (bug 29427)
+- htl: Let pthread_self and cancellability called early
+- stdlib: Simplify arc4random_uniform
+- malloc: Use __getrandom_nocancel during tcache initiailization
+- Remove spurious references to _dl_open_hook
+- Open master branch for glibc 2.37 development
+
+* Wed Aug 03 2022 Carlos O'Donell <carlos@redhat.com> - 2.36-1
+- Auto-sync with upstream branch release/2.36/master,
+  commit 33f1b4c1452b33991e670f636ebe98b90a405e10:
+- wcsmbs: Add missing test-c8rtomb/test-mbrtoc8 dependency
+- stdlib: Suppress gcc diagnostic that char8_t is a keyword in C++20 in uchar.h.
+- Create ChangeLog.old/ChangeLog.25. (tag: glibc-2.36)
+- Prepare for glibc 2.36 release.
+- Update install.texi, and regenerate INSTALL.
+- Update NEWS bug list.
+- Update libc.pot for 2.36 release.
+- tst-pidfd.c: UNSUPPORTED if we get EPERM on valid pidfd_getfd call
+- stdlib: Tuned down tst-arc4random-thread internal parameters
+- LoongArch: Add greg_t and gregset_t.
+- LoongArch: Fix VDSO_HASH and VDSO_NAME.
+- riscv: Update rv64 libm test ulps
+- riscv: Update nofpu libm test ulps