Prepare for glibc 2.33 release

System Internals / glibc - Adhemerval Zanella [] - 1 February 2021 17:15 UTC

Update version.h, features.h, and ChangeLog.old/ChangeLog.22.


Version 2.33

Major new features:

- The dynamic linker accepts the --list-tunables argument which prints all the supported tunables. This option is disable if glibc is configured with tunables disabled (--enable-tunables=no).

- The dynamic linker accepts the --argv0 argument and provides opportunity to change argv[0] string.

- The dynamic linker loads optimized implementations of shared objects from subdirectories under the glibc-hwcaps directory on the library search path if the system's capabilities meet the requirements for that subdirectory. Initially supported subdirectories include "power9" and "power10" for the powerpc64le-linux-gnu architecture, "z13", "z14", "z15" for s390x-linux-gnu, and "x86-64-v2", "x86-64-v3", "x86-64-v4" for x86_64-linux-gnu. In the x86_64-linux-gnu case, the subdirectory names correspond to the vendor-independent x86-64 microarchitecture levels defined in the x86-64 psABI supplement.

- The new --help option of the dynamic linker provides usage and information and library search path diagnostics.

- The mallinfo2 function is added to report statistics as per mallinfo, but with larger field widths to accurately report values that are larger than fit in an integer.

- Add to provide query macros for x86 CPU features.

- Support for the RISC-V ISA running on Linux has been expanded to run on 32-bit hardware. This is supported for the following ISA and ABI pairs:

- rv32imac ilp32- rv32imafdc ilp32- rv32imafdc ilp32d

The 32-bit RISC-V port requires at least Linux 5.4, GCC 7.1 and binutils 2.28.

- A new fortification level _FORTIFY_SOURCE=3 is available. At this level, glibc may use additional checks that may have an additional performance overhead. At present these checks are available only on LLVM 9 and later. The latest GCC available at this time (10.2) does not support this level of fortification.

Deprecated and removed features, and other changes affecting compatibility:

- The mallinfo function is marked deprecated. Callers should call mallinfo2 instead.

- When dlopen is used in statically linked programs, alternative library implementations from HWCAP subdirectories are no longer loaded. Instead, the default implementation is used.

- The deprecated header and the function vtimes have been removed. To support old binaries, the vtimes function continues to exist as a compatibility symbol. Applications should use the getrlimit or prlimit.

- Following a change in the tzdata 2018a release upstream, the zdump program is now installed in the /usr/bin subdirectory. Previously, the /usr/sbin subdirectory was used.

- On s390(x), the type float_t is now derived from the macro __FLT_EVAL_METHOD__ that is defined by the compiler, instead of being hardcoded to double. This does not affect the ABI of any libraries that are part of the GNU C Library, but may affect the ABI of other libraries that use this type in their interfaces. The new definition improves consistency with compiler behavior in many scenarios.

- A future version of glibc will stop loading shared objects from the "tls" subdirectories on the library search path, the subdirectory that corresponds to the AT_PLATFORM system name, and also stop employing the legacy AT_HWCAP search mechanism. Applications should switch to the new glibc-hwcaps mechanism instead; if they do not do that, only the baseline version (directly from the search path directory) will be loaded.

Changes to build and runtime requirements:

- On Linux, the system administrator needs to configure /dev/pts with the intended access modes for pseudo-terminals. glibc no longer attemps to adjust permissions of terminal devices. The previous glibc defaults ("tty" group, user read/write and group write) already corresponded to what most systems used, so that grantpt did not perform any adjustments.

- On Linux, the posix_openpt and getpt functions no longer attempt to use legacy (BSD) pseudo-terminals and assume that if /dev/ptmx exists (and pseudo-terminals are supported), a devpts file system is mounted on /dev/pts. Current systems already meet these requirements.

- s390x requires GCC 7.1 or newer. See gcc Bug 98269.

Security related changes:

CVE-2021-3326: An assertion failure during conversion from the ISO-20220-JP-3 character set using the iconv function has been fixed. This assertion was triggered by certain valid inputs in which the converted output contains a combined sequence of two wide characters crossing a buffer boundary. Reported by Tavis Ormandy.

CVE-2020-27618: An infinite loop has been fixed in the iconv program when invoked with input containing redundant shift sequences in the IBM1364, IBM1371, IBM1388, IBM1390, or IBM1399 character sets.

CVE-2020-29562: An assertion failure has been fixed in the iconv function when invoked with UCS4 input containing an invalid character.

CVE-2019-25013: A buffer overflow has been fixed in the iconv function when invoked with EUC-KR input containing invalid multibyte input sequences.

The following bugs are resolved with this release:

[10635] libc: realpath portability patches [16124] dynamic-link: should allow to change argv[0] [17924] malloc: 'free' should not set errno [18683] libc: Linux faccessat implementation can incorrectly ignore AT_EACCESS [22899] libc: Use 64-bit readdir() in generic POSIX getcwd() [23249] libc: Epyc and other current AMD CPUs do not select the "haswell" platform subdirectory [24080] dynamic-link: Definition of "haswell" platform is inconsistent with GCC [24202] libc: m68k setjmp() saves incorrect 'a5' register in --enable-stack-protector=all [24941] libc: Make grantpt usable after multi-threaded fork in more cases [24970] libc: realpath mishandles EOVERFLOW; stat not needed anyway [24973] locale: iconv encounters segmentation fault when converting 0x00 0xfe in EUC-KR to UTF-8 (CVE-2019-25013) [25399] string: undefined reference to `__warn_memset_zero_len' when changing gnuc version [25859] libc: glibc parser for /sys/devices/system/cpu/online is incorrect [25938] dynamic-link: should store meaning of hwcap mask bits [25971] libc: s390 bits/hwcap.h out of sync with kernel [26053] libc: unlockpt fails with ENOTTY for non-ptmx descriptors [26100] libc: Race in syslog(3) with regards to tag printing. [26124] libc: Export [26130] nscd: Inconsistent nscd cache during pruning [26203] libc: GLRO(dl_x86_cpu_features) may not be intialized [26224] locale: iconv hangs when converting some invalid inputs from several IBM character sets (CVE-2020-27618) [26341] libc: realpath cyclically call __alloca(path_max) to consume too much stack space [26343] manual: invalid documented return type for strerrorname_np(), strerrordesc_np(), sigdescr_np(), sigabbrev_np() [26376] libc: Namespace violation in stdio.h and sys/stat.h if build with optimization. [26383] locale: bind_textdomain_codeset doesn't accept //TRANSLIT anymore [26394] time: [2.33 Regression] FAIL: nptl/tst-join14 [26534] math: 2.32 SIGILL in pow() due to FMA4 instruction on non-FMA4 system [26552] dynamic-link: CPU_FEATURE_USABLE_P should be more conservative [26553] libc: mtx_init allows type set to "mtx_recursive" only [26555] string: strerrorname_np does not return the documented value [26592] libc: pointer arithmetic overflows in realpath [26600] network: Transaction ID collisions cause slow DNS lookups in getaddrinfo [26606] libc: [2.33 Regression] pselect is broken on x32 [26615] libc: powerpc: libc segfaults when LD_PRELOADed with libgcc [26620] glob: fnmatch with collating symbols results in segmentation fault [26625] libc: [2.33 Regression] CET is disabled [26636] libc: 32-bit shmctl(IPC_INFO) crashes when shminfo struct is at the end of a memory mapping [26637] libc: semctl SEM_STAT_ANY fails to pass the buffer specified by the caller to the kernel [26639] libc: msgctl IPC_INFO and MSG_INFO return garbage [26647] build: [-Werror=array-parameter=] due to different declarations for __sigsetjmp [26648] libc: mkstemp is likely to fail on systems with non-stricly-monotonic clocks [26649] stdio: printf should handle non-normal x86 long double numbers gracefully (CVE-2020-29573) [26686] build: -Warray-parameter instances building with GCC 11 [26687] build: -Warray-bounds instances building with GCC 11 [26690] stdio: Aliasing violation in __vfscanf_internal [26691] nptl: Use a minimum guard size of 64 KiB on aarch64 [26726] build: GCC warning calling new_composite_name with an array of one element [26736] libc: FAIL: misc/tst-sysvshm-linux [26737] libc: Random FAIL: rt/tst-shm [26791] libc: Missing O_CLOEXEC in sysconf.c [26798] dynamic-link: aarch64: variant PCS symbols may be incorrectly lazy bound [26801] nptl: pthread_mutex_clocklock with CLOCK_MONOTONIC can fail on PI mutexes [26818] string: aarch64: string tests may run ifunc variants that are not safe [26821] libc: Memory leak test failures on Fedora 33 [26824] libc: FAIL: elf/tst-cpu-features-supports with recent trunk: FSGSBASE/LM/RDRAND check failure [26833] time: adjtime() with delta == NULL segfaults on armv7 32bit platform [26853] libc: aarch64: Missing unwind information in statically linked startup code [26923] locale: Assertion failure in iconv when converting invalid UCS4 (CVE-2020-29562) [26926] dynamic-link: aarch64: library dependencies are not bti protected [26932] libc: sh: Multiple floating point functions defined as stubs only since 2.31 [26964] nptl: pthread_mutex_timedlock returning EAGAIN after futex is locked [26988] dynamic-link: aarch64: BTI mprotect address is not page aligned [27002] build: libc_freeres_fn build failure with GCC 11 [27004] dynamic-link: is miscompiled by GCC 11 [27008] dynamic-link: should have endianness markup [27042] libc: [alpha] anonymous union in struct stat confuses detection logic [27053] libc: Conformance regression in system(3) (and probably also pclose(3)) [27072] dynamic-link: static pie ifunc resolvers run before hwcap is setup [27077] network: Do not reload /etc/nsswitch.conf from chroot [27083] libc: Unsafe unbounded alloca in addmntent [27104] dynamic-link: The COMMON_CPUID_INDEX_MAX handshake does not work [27130] string: "rep movsb" performance issue [27150] libc: alpha: wait4() is unavailable in static linking [27177] dynamic-link: GLIBC_TUNABLES=glibc.cpu.x86_ibt=on:glibc.cpu.x86_shstk=on doesn't work [27222] dynamic-link: Incorrect sysdeps/x86/tst-cpu-features-cpuinfo.c [27237] malloc: deadlock in malloc/tst-malloc-stats-cancellation [27256] locale: Assertion failure in ISO-2022-JP-3 gconv module related to combining characters (CVE-2021-3326)

9826b03b74 Prepare for glibc 2.33 release
ChangeLog.old/ChangeLog.22 | 12846 +++++++++++++++++++++++++++++++++++++++++++
include/features.h | 2 +-
version.h | 4 +-
3 files changed, 12849 insertions(+), 3 deletions(-)


  • Share