#5765 closed enhancement (fixed)
glibc-2.42
| Reported by: | Joe Locash | Owned by: | lfs-book |
|---|---|---|---|
| Priority: | high | Milestone: | 12.4 |
| Component: | Book | Version: | git |
| Severity: | normal | Keywords: | |
| Cc: |
Description (last modified by )
New minor version.
gcc-15.1.0 will FTBFS because the termio structure is being removed in glibc-2.42. Upstream fix for gcc:
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=d32ece49d32b00448d967e7dbc6900fb25cbc775
Change History (8)
follow-up: 5 comment:1 by , 4 months ago
comment:2 by , 4 months ago
After looking at this a bit, it also looks like we might need to update LLVM for this change too, since libsanitizer is part of llvm as well.
comment:3 by , 4 months ago
LLVM-20.1.8 already has the fix. I've not checked earlier versions but I'll update LLVM for BLFS soon.
For GCC we just need a simple sed: sed '/struct_termio_sz/d' -i libsanitizer/sanitizer_common/*
comment:4 by , 3 months ago
| Description: | modified (diff) |
|---|---|
| Summary: | Fix for building gcc with glibc-2.42 → glibc-2.42 |
We may also want to pick the https://sourceware.org/bugzilla/show_bug.cgi?id=33227 fix. We don't enable -D FORTIFY_SOURCE by the book but if a user enables it (s)he may hit a FTBFS due to this issue.
comment:5 by , 3 months ago
Replying to Bruce Dubbs:
Thanks Joe. I'll hold off with this until glibc-2.42 is actually released, but looking at the patches, I wonder if we can do the same thing by unsetting SANITIZER_GLIBC.
There are more uses of SANITIZER_GLIBC like:
sanitizer_platform_limits_posix.cpp:#if SANITIZER_GLIBC || SANITIZER_ANDROID sanitizer_platform_limits_posix.cpp-COMPILER_CHECK(sizeof(__sanitizer_struct_mallinfo) == sizeof(struct mallinfo)); sanitizer_platform_limits_posix.cpp-#endif
So disabling SANITIZER_GLIBC will disable too much things.
comment:6 by , 3 months ago
Version 2.42
Major new features:
- The following ISO C23 function families (introduced in TS 18661-4:2015) are now supported in <math.h>. Each family includes functions for float, double, long double, _FloatN and _FloatNx, and a type-generic macro in <tgmath.h>.
- Power and absolute-value functions: compoundn, pown, powr, rootn, rsqrt.
- On Linux, the pthread_gettid_np function has been added.
- The ISO C2Y family of unsigned abs functions, i.e. uabs, ulabs, ullabs, and uimaxabs, is now supported.
- On Linux, the <termios.h> interface now supports arbitrary baud rates; speed_t is redefined to simply be the baud rate specified as an unsigned int, which matches the kernel interface.
- The thread-local cache in malloc (tcache) now supports caching of large blocks. This feature can be enabled by setting the tunable glibc.malloc.tcache_max to a larger value (max 4194304). Tcache is also significantly faster for small sizes.
- A new configure option, "--enable-sframe", can be used to enable SFrame support of the GNU C Libraries. SFrame is a new stack trace information format which can be used by backtrace. It requires binutils with a minimum version of 2.45.
- Support for lightweight stack guard pages via madvise and the MADV_GUARD_INSTALL flag has been added to pthread_create.
- Additional optimized and correctly rounded mathematical functions have been imported from the CORE-MATH project, in particular acospif, asinpif, atanpif, atan2pif, cospif, sinpif, tanpif.
- The testsuite has been significantly extended, including coverage of the functionality of the printf and scanf function families in many variants.
- The manual has been significantly extended and updated, particularly the threads, terminal, filesystem, resource, and math chapters.
- Code has been added to detect the x86-64 Intel Arrow Lake, Panther Lake, Clearwater Forest, and Diamond Rapids microarchitectures.
- Regarding S390, support for the new z17 platform has been added.
Deprecated and removed features, and other changes affecting compatibility:
- The glibc.rtld.execstack tunable now supports a compatibility mode to allow programs that require an executable stack through dynamically loaded shared libraries.
- On Linux, the <termio.h> header and the definition of struct termio in <sys/ioctl.h> have been removed. The termio interface has been obsolete since the very first version of POSIX.1 in 1988, replaced with <termios.h>.
- The support for TX lock elision of pthread mutexes has been deprecated on all architectures and will be removed in the next release.
- On AArch64 Linux targets supporting the Scalable Matrix Extension (SME), setjmp and sigsetjmp will disable the ZA state of SME.
Changes to build and runtime requirements:
- GCC 12.1 or later is now required to build the GNU C Library.
- GNU Binutils 2.39 or later is now required to build the GNU C Library.
The following CVEs were fixed in this release, details of which can be found in the advisories directory of the release tarball:
GLIBC-SA-2025-0001:
assert: Buffer overflow when printing assertion failure message
(CVE-2025-0395)
GLIBC-SA-2025-0003:
power10: strcmp fails to save and restore nonvolatile vector
registers (CVE-2025-5702)
GLIBC-SA-2025-0004:
power10: strncmp fails to save and restore nonvolatile vector
registers (CVE-2025-5745)
GLIBC-SA-2025-0005:
posix: Fix double-free after allocation failure in regcomp
(CVE-2025-8058)
The following bugs were resolved with this release:
[5994] stdio: fflush after ungetc on seekable input stream
[12724] stdio: fclose violates POSIX 2008 on seekable input streams
[25263] dynamic-link: ldd and ld.so fail to resolve $ORIGIN with cross
dir symlink
[27880] nptl: Please provide a pthread pid accessor
[29190] dynamic-link: Symbols with version hash zero lead to crashes,
not matched correctly
[29459] stdio: fwrite does not return EPIPE when underlying write
fails with EPIPE.
[31791] nss: [Regression] nss: memory for >8 elements in nsswitch.conf
is not freed
[32058] libc: qsort leaks memory if C++ exception is thrown from
comparison function
[32269] dynamic-link: RISC-V IFUNC resolver cannot access gp pointer
[32369] stdio: fflush(NULL) doesn't properly flush files opened in
read mode
[32411] math: THREEp96 seems wrong
[32412] dynamic-link: Initial DTV is reallocated using main realloc in
auditing mode
[32483] locale: ctype.h macros segfault in multithreaded programs with
multiple libc.so
[32529] stdio: fseek failure on file opened with "rm" mode after
ungetc
[32535] stdio: fflush failure on file opened with "rm" mode after
ungetc
[32541] libc: getenv cannot be overridden in static builds
[32574] libc: pthread_attr_getstacksize/pthread_attr_getstack return
incorrect main stack size
[32612] dynamic-link: [aarch64 PAC] _dl_tlsdesc_dynamic can't be
unwound through with _Unwind_Backtrace
[32626] math: math: log10p1f is not correctly rounded
[32627] math: math: sinhf is not correctly rounded
[32630] math: math: tanf is not correctly rounded for all rounding
modes
[32653] dynamic-link: Review options for improving both security and
backwards compatibility of glibc 2.41 dlopen / execstack handling
[32694] math: wrong clang version 3.4 prereq checks in bits/floatn.h
for __float128 support, should be 3.9
[32708] libc: Inclusion of sys/mount.h triggers many gcc warnings
using -Wshift-overflow=2 -Wsystem-headers
[32711] math: math: remainder incorrect sign of zero result
[32717] libc: glibc tests fail when bfd is built with --enable-error-
execstack=yes
[32723] math: [2.41 Regression] /usr/include/bits/floatn.h doesn't
work with Intel SYCL compiler
[32763] dynamic-link: Static PIE with more than one PT_LOAD segments
at offset 0 segfault
[32777] crypt: The performance of the rand() function degradation
[32781] libc: Inccorect attribute access for sched_getattr
[32782] nptl: Race conditions in pthread cancellation causing crash
[32786] nptl: pthread_cond_* symbols should probably have had a
version bump in 2.41
[32795] nptl: aio_suspend_time64 confuses CLOCK_MONOTONIC and
CLOCK_REALTIME
[32810] dynamic-link: Immediate crash on x86-64 when running with
GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVEC
[32823] libc: make[2]: *** [../Rules:248:
/home/dave/gnu/glibc/objdir/elf/tst-origin] Error 1
[32897] dynamic-link: pthread_getattr_np fails when executable stack
tunable is set
[32918] math: math: atanhf triggers UB
[32919] math: math: coshf triggers UB
[32920] math: math: logf triggers UB
[32921] math: math: sinhf triggers UB
[32922] math: math: cbrtf triggers UB
[32923] math: math: cospif triggers UB
[32924] math: math: erfcf triggers UB
[32925] math: math: sinpif triggers UB
[32932] libc: riscv: __riscv_hwprobe function attributes are incorrect
[32947] libc: stdlib: wrong iovec array size on __libc_message_impl
[32980] manual: getopt_long_only does not check long options first, as
the manual claims
[32981] ports: elf/tst-execstack-prog-static-tunable fails on
sparc64-linux-gnu
[32987] libc: New tst-dlopen-sgid test FAILs
[32996] malloc: i386 TLS helper functions don't preserve XMM registers
[33035] libc: [2.27 regression] Linux: __close_nocancel_nostatus
clobbers errno
[33056] string: Power 10 strcmp clobbers nonvolatile vector registers
(CVE-2025-5702)
[33059] string: Power 10 memchr clobbers v20
[33060] string: Power 10 strncmp clobbers nonvolatile vector registers
(CVE-2025-5745)
[33088] dynamic-link: __ehdr_start may need run-time relocation
[33089] build: [2.42 Regression] GCC 14.2.1 failed to build glibc
[33134] libc: mcount_internal shouldn't use vector/r16-r31 registers
nor call memcpy/memset
[33139] stdio: %n after static dlopen is unreliable if file
descriptors are exhausted
[33165] build: [2.42 Regression] FAIL: elf/check-localplt
[33173] math: Wrong IFUNC selector is used for modf/modff
[33185] regex: Double-free after memory allocation failure in regcomp
bracket expression parsing (CVE-2025-8058)
[33224] dynamic-link: _dl_debug_state hook no longer works (since
8329939a37f483a16013dd8af8303cbcb86d92cb)

Thanks Joe. I'll hold off with this until glibc-2.42 is actually released, but looking at the patches, I wonder if we can do the same thing by unsetting SANITIZER_GLIBC.
According to https://sourceware.org/glibc/wiki/Release/2.42, the new release should be in the next week.