GNU C Library NEWS -- history of user-visible changes.
-Copyright (C) 1992-2021 Free Software Foundation, Inc.
+Copyright (C) 1992-2022 Free Software Foundation, Inc.
See the end for copying conditions.
Please send GNU C library bug reports via <https://sourceware.org/bugzilla/>
* The ISO C2X macro _PRINTF_NAN_LEN_MAX has been added to <stdio.h>.
+* printf-family functions now support the %b format for output of
+ integers in binary, as specified in draft ISO C2X, and the %B variant
+ of that format recommended by draft ISO C2X.
+
* A new DSO sorting algorithm has been added in the dynamic linker that uses
topological sorting by depth-first search (DFS), solving performance issues
of the existing sorting algorithm when encountering particular circular
object dependency cases.
-* A new tunable, glibc.rtld.dynamic_sort, can be used to select between the two
- DSO sorting algorithms. The default setting of '1' uses the current existing
- algorithm, while a value of '2' selects the new DFS-based algorithm.
+* A new tunable, glibc.rtld.dynamic_sort, can be used to select between
+ the two DSO sorting algorithms. The default setting of '2' uses the
+ new DFS-based algorithm. The setting '1' switches to the old
+ algorithm used in glibc 2.33 and earlier.
+
+* ABI support for a new function '__memcmpeq'. '__memcmpeq' is meant
+ to be used by compilers for optimizing usage of 'memcmp' when its
+ return value is only used for its boolean status.
+
+* Support for automatically registering threads with the Linux rseq
+ system call has been added. This system call is implemented starting
+ from Linux 4.18. The Restartable Sequences ABI accelerates user-space
+ operations on per-cpu data. It allows user-space to perform updates
+ on per-cpu data without requiring heavy-weight atomic operations.
+ Automatically registering threads allows all libraries, including
+ libc, to make immediate use of the rseq support by using the
+ documented ABI, via the __rseq_flags, __rseq_offset, and __rseq_size
+ variables. The GNU C Library manual has details on integration of
+ Restartable Sequences.
+
+* A symbolic link to the dynamic linker is now installed under
+ /usr/bin/ld.so (or more precisely, '${bindir}/ld.so').
+
+* All programs and the testsuite in glibc are now built as position independent
+ executables (PIE) by default on toolchains and architectures that support it.
+ Further, if the toolchain and architecture supports it, even static programs
+ are built as PIE and the resultant glibc can be used to build static PIE
+ executables. A new option --disable-default-pie has been added to disable
+ this behavior and get a non-PIE build. This option replaces
+ --enable-static-pie, which no longer has any effect on the build
+ configuration.
+
+* On Linux, a new tunable, glibc.malloc.hugetlb, can be used to
+ either make malloc issue madvise plus MADV_HUGEPAGE on mmap and sbrk
+ or to use huge pages directly with mmap calls with the MAP_HUGETLB
+ flags). The former can improve performance when Transparent Huge Pages
+ is set to 'madvise' mode while the latter uses the system reserved
+ huge pages.
+
+* The printf family of functions now handles the flagged %#m conversion
+ specifier, printing errno as an error constant (similar to strerrorname_np).
+
+* The function _dl_find_object has been added. In-process unwinders
+ can use it to efficiently locate unwinding information for a code
+ address.
Deprecated and removed features, and other changes affecting compatibility:
+* On x86-64, the LD_PREFER_MAP_32BIT_EXEC environment variable support
+ has been removed since the first PT_LOAD segment is no longer executable
+ due to defaulting to -z separate-code.
+
* The r_version update in the debugger interface makes the glibc binary
incompatible with GDB binaries built without the following commits:
* Intel MPX support (lazy PLT, ld.so profile, and LD_AUDIT) has been removed.
+* The --enable-static-pie option is no longer available. The glibc build
+ configuration script now automatically detects static-pie support in the
+ toolchain and architecture and enables it if available.
+
Changes to build and runtime requirements:
[Add changes to build and runtime requirements here]
than or equal to a given integer. This function is a GNU extension,
although Solaris also provides a similar function.
+* When invoked explicitly, the dynamic linker now uses the kernel to
+ execute programs that do not have any dynamic dependency (that is,
+ they are statically linked). This feature is Linux-specific.
+
+* The audit libraries will avoid unnecessary slowdown if it is not required
+ PLT tracking (by not implementing the la_pltenter or la_pltexit callbacks).
+
Deprecated and removed features, and other changes affecting compatibility:
* The function pthread_mutex_consistent_np has been deprecated; programs