summaryrefslogtreecommitdiff
tag nameglibc-2.41 (abfcddcc4963ecada1625b199a32a18a8c051f51)
tag date2025-01-28 18:35:36 +0100
tagged byAndreas K. Hüttel <dilfridge@gentoo.org>
tagged objectcommit 74f59e9271...
downloadglibc-2.41.tar.gz
glibc-2.41.tar.bz2
glibc-2.41.zip
The GNU C Library version 2.41 is now available
The GNU C Library ================= The GNU C Library version 2.41 is now available. The GNU C Library is used as *the* C library in the GNU system and in GNU/Linux systems, as well as many other systems that use Linux as the kernel. The GNU C Library is primarily designed to be a portable and high performance C library. It follows all relevant standards including ISO C23 and POSIX.1-2024. It is also internationalized and has one of the most complete internationalization interfaces known. The GNU C Library website is at http://www.gnu.org/software/libc/ Packages for the 2.41 release may be downloaded from: http://ftpmirror.gnu.org/libc/ http://ftp.gnu.org/gnu/libc/ The mirror list is at http://www.gnu.org/order/ftp.html Distributions are encouraged to track the release/* branches corresponding to the releases they are using. The release branches will be updated with conservative bug fixes and new features while retaining backwards compatibility. NEWS for version 2.41 ===================== Major new features: * Support for testing a glibc build with a set of C and C++ compilers different from the C and C++ compilers used to build glibc has been added: $ ../configure TEST_CC="gcc-6.4.1" TEST_CXX="g++-6.4.1" This includes support for testing the glibc build with Clang, e.g., $ ../configure TEST_CC="clang" TEST_CXX="clang++" Some run-time failures with Clang are expected. * The glibc test suite has been extended again significantly, with now 6232 separate tests compared to 5408 in glibc-2.40. * In /etc/resolv.conf and the RES_OPTIONS environment variable, option flags can now be prefixed with “-” to clear previously set flags. For example, if /etc/resolv.conf contains “options no-aaaa”, a process running with the RES_OPTIONS=-no-aaaa environment variable performs AAAA DNS queries when the glibc DNS stub resolver is used. * The DNS stub resolver now supports the strict-error option. If activated, getaddrinfo for the AF_UNSPEC address family (with dual A/AAAA DNS lookups) attemps to obtain an A/AAAA response pair from another DNS server if one of the responses indicates failure. Without the strict-error option, getaddrinfo returns the A record data it has obtained even if the AAAA query failed. The new strict error mode is incompatible with some DNS environments which do not follow the RFCs, which is why this mode is not enabled by default. A future version of the library may turn it on by default, however. * On Linux, the sched_setattr and sched_getattr functions have been added, for supporting parameterized scheduling policies such as SCHED_DEADLINE. * The iconv program now supports converting files in place. The program automatically uses a temporary file if required. * Character encoding, character type info, and transliteration tables have been updated to Unicode 16.0.0. * 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>. - Trigonometric functions: acospi, asinpi, atan2pi, atanpi, cospi, sinpi, tanpi. * The GNU C Library now supports a feature test macro _ISOC2Y_SOURCE to enable features from the draft ISO C2Y standard. Only some features from this draft standard are supported by the GNU C Library, and as the draft is under active development, the set of features enabled by this macro is liable to change. Features from C2Y are also enabled by _GNU_SOURCE, or by compiling with "gcc -std=gnu2y". * Optimized and correctly rounded exp10m1f, exp2m1f, expm1f, log10f, log2p1f, log1pf, log10p1f, cbrtf, erff, erfcf, lgammaf, tgammaf, tanf, acosf, acoshf, asinf, asinhf, atanf, atan2f, atanhf, coshf, sinhf, and tanhf functions have been added from the CORE-MATH project <https://core-math.gitlabpages.inria.fr/>. * A benchtest framework is now in place to track the performance of many (mostly numerical) functions. * A new tunable, glibc.rtld.execstack, can be used to control whether an executable stack is allowed from the main program, either implicitly due to a mising GNU_STACK ELF header or explicit explicitly because of the executable bit in GNU_STACK. The default is to allow executable stacks. * Support for the extensible rseq ABI introduced in the Linux kernel version 6.3 has been added. The size and alignment of the rseq area is now determined by auxiliary vector entries when provided by the running kernel. This results in __rseq_size now exposing features past the original ABI which currently include 'node_id' and 'mm_cid' and will also allow exposing new features as they get added to future Linux kernels. * The GNU C Library now supports the Guarded Control Stack extension that allows to use shadow stacks on AArch64 systems that support this extension. Building the library with standard branch protection enabled while using a toolchain that supports GCS (binutils 2.44 and GCC 15 or later) will enable GCS support in glibc. There is no special configuration flag. GCS-enabled glibc is compatible with all existing executables and shared libraries and will run with and without GCS support in the system. GCS is opt-in and can be controlled at runtime via the glibc.cpu.aarch64_gcs tunable. By default GCS is disabled. Linux kernel supports this since 6.13. * Significant effort has been put into improving the code generation and speed of mathematical functions in the vector mathematics library on AArch64, with regard to the Scalable Vector Extension (SVE) and Advanced SIMD (Neon) intrinsics. * Support for memory protection keys on AArch64 systems with enabled Stage 1 permission overlays feature as introduced in Armv8.9 / 9.4 has been added. * On PowerPC64, support for the return-oriented programming protection instructions added in ISA 3.1 (Power10) has been added, as well as function optimizations for Power10. * A new architecture type has been introduced internally to better support Hygon x86-64 processors. Deprecated and removed features, and other changes affecting compatibility: * abort is now async-signal-safe and its implementation makes longjmp from the SIGABRT handler always abort if set up with setjmp. Use sigsetjmp to keep the old behavior, where the handler does not stop the process execution. * dlopen and dlmopen no longer make the stack executable if a shared library requires it, either implicitly because of a missing GNU_STACK ELF header (and default ABI permission having the executable bit set) or explicitly because of the executable bit in GNU_STACK, and the stack is not already executable. Instead, loading such objects will fail. * The nios2*-*-linux-gnu configurations are no longer supported. * The big-endian ARC port (arceb-linux-gnu) has been removed. Changes to build and runtime requirements: * On recent Linux kernels with vDSO getrandom support, getrandom does not act as a "shall occur" cancellation point, in which case it might not issue a syscall or trigger a deferred cancellation event. * Testing the GNU C Library requires GNU awk to be compiled with support for high precision arithmetic via the MPFR library. Security related changes: 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) The following bugs were resolved with this release: [6050] locale: iconv(1) buffers all of stdin in memory [10460] locale: iconv does not support in-place conversion [12683] nptl: Race conditions in pthread cancellation [14147] nptl: Async cancellation left active after longjmp out of signal handler [14799] network: RES_OPTIONS cannot disable options enabled in /etc/resolv.conf [17703] locale: iconv(1) EFAULTs reading the second non-mmapable input [20632] stdio: Buffer overflow in wchar IO (_IO_wfile_overflow) [23675] stdio: freopen() with "ccs=<charset>" leaves the stream unoriented [25847] nptl: pthread_cond_signal failed to wake up pthread_cond_wait due to a bug in undoing stealing [26275] libc: abort(3) is not signal-safe [27543] ports: Inconsistent behavior when handling FPSCR on SH [27821] stdio: double call to ungetc causes uninitialized memory reading. (also: ungetc causes memory leak) [29437] libc: arc4random is too slow [30009] build: unterminated options list in benchtest [30081] network: libresolv: timeout when running in single-request mode [30220] math: String to double returns incorrectly rounded value for hexadecimal subnormal [30584] libc: initstate and initstate_r crash when the state argument is unaligned [30647] stdio: scanf functions wrong on nan() [31394] libc: clone on sparc might fail with -EFAULT for no valid reason [31717] dynamic-link: TLS for library gets reallocated when loaded in two contexts. [31799] dynamic-link: -static-pie -Wl,-Ttext-segment=0x50000 doesn't work [31859] locale: Transliteration rules with two input characters like "ḌḌ" "DDH" do not work. [31890] network: DNS stub resolver ignores header-only error responses [31928] build: glibc doesn't compile if the compiler already define _FORTIFY_SOURCE [31968] libc: mremap implementation in C does not handle arguments correctly [31985] dynamic-link: la_objopen not called when ld.so is imported into a private namespace. However, la_objclose is called with an unknown cookie. [31997] libc: exit is not thread-safe, even when all atexit handlers are thread-safe [32026] libc: strerror, strsignal TLS not handled correctly for secondary namespaces (dlmopen, LD_AUDIT) [32033] locale: iconv (the program) does not truncate output file if input is empty [32040] nptl: CPU affinity test skeleton for sched_setaffinity and pthread_setaffinity_np can fail to report failure. [32042] build: Compilation issue for tst-resolv-short-response.c with older GCC [32045] math: nan() / strtod() incorrectly set errno for overflowing nan payload [32046] locale: iconv -c fails to report input encoding errors if output buffer is full [32047] libc: Tunables may incorrectly set Prefer_PMINUB_for_stringop [32050] locale: iconv - - < /dev/null fails with Bad file descriptor [32052] libc: stdlib.h's use of 'sz' identifier causes libstdc++ test failure [32065] dynamic-link: _dl_fini does not call la_objclose for proxy link maps [32066] dynamic-link: dlclose signals la_activity (LA_ACT_DELETE) after la_objclose calls [32078] string: Random __strchrnul_evex512 failures [32124] libc: readdir_r does not relay errors reported by the kernel [32125] libc: powerpc: Missing TOC stub in __syscall_cancel_arch for powerpc64le-linux-gnu [32126] libc: readdir64_r: Do not skip entries with zero d_ino values [32128] libc: Compat readdir64_r (__old_readdir64_r) does not enforce NAME_MAX limit [32134] stdio: freopen does not clear flags2 (FD_CLOEXEC etc) [32137] libc: libio/tst-stderr-compat, libio/tst-bz24228, math/test- matherr-2, nptl/tst-pthread_kill-exited fails on powerpc-unknown- linux-gnu [32140] stdio: freopen leaks memory on failure [32145] libc: New stdlib/tst-strtod1i, stdlib/tst-strtod3, stdlib/tst- strtod4, stdlib/tst-strtod5i failures on powerpc64le-linux-gnu [32148] stdio: Memory corruption with ancient i386 binaries using stdio [32168] localedata: Update locale data to Unicode 16.0.0 [32173] libc: sparc: restartable syscalls are broken [32192] build: s390: utf16-utf32-z9.c fails to build w/ -fomit-frame- pointer [32197] locale: FAIL: iconv/tst-iconv_prog-buffer failures [32212] string: x86_64/strcmp caused 25% performance drop by commit 84e7c46df [32214] libc: random_bits always returns the same value if getrandom fails [32215] libc: Signal handlers after fork may encounter missing robust mutex list [32228] libc: .preinit_array in /lib/riscv64-linux-gnu/Scrt1.o is not properly aligned [32231] dynamic-link: ldconfig auxcache format change in 2.36 [32233] libc: error calls va_end twice. [32234] hurd: missing va_end call in fcntl.c [32245] build: glibc -Wstringop-overflow= build failure on hppa [32280] localedata: Enable transliteration rules with two input characters in scn_IT [32283] libc: Compilation issue for tst-syscall-restart.c with GCC 10.2.1 [32323] localedata: eo: Incorrect first day of week and first week of year [32344] string: Assembler warnings when building strcpy-evex.S and strncpy-evex.S [32350] hurd: function __xpg_strerror_r crashes for specific arguments [32360] stdio: Compilation issue for tst-printf-format-skeleton.c with GCC 10.2.1 [32366] malloc: malloc test failures with GCC 15 [32380] locale: dcigettext can cause SIGSEGV when domain name is too long [32414] libc: [x86_64 regression] tst-strtod5i.c:124:(.text+0x47c): undefined reference to `__copysignf128' [32418] math: __XXX math functions are declared, but not provided [32420] build: GCC 6 can't build glibc 2.41 [32440] libc: getrandom() in glibc 2.41 (development) returns EINVAL as retcode instead of errno on powerpc64le [32448] libc: iconv reports failure with successful transliteration [32450] libc: system() does not return -1 if a child process can't be created [32465] nss: ./getaddrinfo.c:1884:11: error: variable 'endp' is used uninitialized whenever '||' condition is true [-Werror,-Wsometimes- uninitialized] [32470] dynamic-link: Integer truncation during x86-64 cache size computation [32488] libc: Glibc failed to build with CET enabled [32492] libc: New test failures [32494] build: Compilation issue with GCC 14.2.1 [32508] dynamic-link: ldd: /lib/ld-linux.so.2: cannot execute binary file: Exec format error [32512] dynamic-link: failure to build on loong, undefined reference to `stpcpy' [32543] build: x32 glibc is miscompiled [32588] libc: [2.41 regression] bash crashes with 'realloc(): invalid pointer' with `env -i PATH=` Release Notes ============= https://sourceware.org/glibc/wiki/Release/2.41 Contributors ============ This release was made possible by the contributions of many people. The maintainers are grateful to everyone who has contributed changes or bug reports. These include: Aaron Merey Adhemerval Zanella Alejandro Colomar Andreas K. Hüttel Andreas Schwab Andrew Pinski Arjun Shankar Aurelien Jarno Avinal Kumar Bruno Haible Carlos O'Donell Carmen Bianca BAKKER DJ Delorie Dan Luedtke Darius Rad Dmitry Chestnykh Fangrui Song Feifei Wang Flavio Cruz Florian Weimer Frank Barrus Frédéric Bérat H.J. Lu Henrik Lindström Jeevitha Palanisamy Joana Cruz Joe Ramsay John David Anglin Jonathan Wakely Joseph Myers Julian Zhu Khem Raj Kuan-Wei Chiu Lenard Mollenkopf Lukas Bulwahn Luna Lamb Maciej W. Rozycki Mahesh Bodapati Malte Skarupke Mark Wielaard Matthew Sterrett Miao Wang Michael Jeanson Michael Karcher Miguel Martín Mike FABIAN Noah Goldstein Paul Eggert Paul Pluzhnikov Paul Zimmermann Pavel Kozlov Peter Ammon Peter Bergner Pierre Blanchard Sachin Monga Sam James Samuel Thibault Sergey Bugaev Sergey Kolosov Siddhesh Poyarekar Stafford Horne Stefan Liebler Szabolcs Nagy Tulio Magno Quites Machado Filho Vincent Lefevre Wangyang Guo Wilco Dijkstra Xi Ruoyao Yannick Le Pennec Yat Long Poon Yury Khrustalev Zhaoming Luo caiyinyu gfleury jeevitha k4lizen mengqinggang mirabilos We would like to call out the following and thank them for their tireless patch review: Adhemerval Zanella Andreas K. Hüttel Andrew Pinski Arjun Shankar Carlos O'Donell DJ Delorie Florian Weimer H.J. Lu Jing Li Maciej W. Rozycki Mathieu Desnoyers Michael Jeanson Mike FABIAN Noah Goldstein Oleg Endo Palmer Dabbelt Patsy Griffin Paul Eggert Paul E. Murphy Peter Bergner Sam James Siddhesh Poyarekar Sunil K Pandey Szabolcs Nagy Wilco Dijkstra Xi Ruoyao Yury Khrustalev -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQKTBAABCgB9FiEE/Rnm0xsZLuTcY+rT3CsWIV7VQSoFAmeZFbFfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEZE MTlFNkQzMUIxOTJFRTREQzYzRUFEM0RDMkIxNjIxNUVENTQxMkEACgkQ3CsWIV7V QSqKEBAAhF2k1TZtB4g0A4pyscRLyyXMUHgSMXL3vGrV6KwS+/kAcFZvWriNGvHD 800CclDN2p/rwHuN9LgiltvmVb4dxQZQJriblxwbFlViHNSEvPGFvk/8InBVWjpa Reom6HqAcFVT3AWkXfZCk//Nj0A0tPh+0iuaVlob/n9MB79lgurqmhA9KlW1E6OB BLLLlsxyYSyUiRIHA8kX/DCmes1C/nq2twyMUEbat+SLV8bukTU5g5AhsViDTmF/ CNHo60Oi/jwIqcwpgbBW1CbMZj2VOL33OHFabnMS0ssmvwmQRSpgPadCVBYijkiQ 5RGdiT5EZ4KpGwz21CoSaiwfnXG7TBMifN77xjEcYvfO0RPYF7jn2AkiJYv+QB62 2cMfb0dOu1a7Bv00kE5bsaGTjH1kVwoBQJ2VdJ43o+PtDZQmkeOii2WnKjbk+dpA 3/TfzXsXK9pPN9JEUe03LgtZeUnHO0ReGOA0CG+nmDTP1rZfQ3yR9I1poHza1HnY lPGnyWHovNX49bZmeCMRfs5fqamVoYyQABZa6QDoe/AHfIswpIResx6/LAGiJIL1 LCLBW1s9WmeZJkO2YIJVH4iPA/uBt4ZXcUt3fvbnnUKQMadHeFH9N3BJL7g2XOuz HR4SYDbyoAiak3hBJV14NmzBX9OjntLpYIkCmiwbxLV13VSDvjM= =YO2y -----END PGP SIGNATURE-----