]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - NEWS
posix/glob.c: update from gnulib
[thirdparty/glibc.git] / NEWS
diff --git a/NEWS b/NEWS
index 6931135ab9eca9b4de8643e465995d860bf6ce79..ef8ac4acd2cec351aacd9254e771f0ff2259e873 100644 (file)
--- a/NEWS
+++ b/NEWS
 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/>
 using `glibc' in the "product" field.
+\f
+Version 2.36
+
+Major new features:
+
+* Support for DT_RELR relative relocation format has been added to
+  glibc.  This is a new ELF dynamic tag that improves the size of
+  relative relocations in shared object files and position independent
+  executables (PIE).  DT_RELR generation requires linker support for
+  -z pack-relative-relocs option, which is supported for some targets
+  in recent binutils versions.  Lazy binding doesn't apply to DT_RELR.
+
+Deprecated and removed features, and other changes affecting compatibility:
+
+* Support for prelink will be removed in the next release; this includes
+  removal of the LD_TRACE_PRELINKING, and LD_USE_LOAD_BIAS, environment
+  variables and their functionality in the dynamic loader.
+
+Changes to build and runtime requirements:
+
+  [Add changes to build and runtime requirements here]
+
+Security related changes:
+
+  [Add security related changes here]
+
+The following bugs are resolved with this release:
+
+  [The release manager will add the list generated by
+  scripts/list-fixed-bugs.py just before the release.]
+
+\f
+Version 2.35
+
+Major new features:
+
+* Unicode 14.0.0 Support: Character encoding, character type info, and
+  transliteration tables are all updated to Unicode 14.0.0, using
+  generator scripts contributed by Mike FABIAN (Red Hat).
+
+* Bump r_version in the debugger interface to 2 and add a new field,
+  r_next, support multiple namespaces.
+
+* Support for the C.UTF-8 locale has been added to glibc.  The locale
+  supports full code-point sorting for all valid Unicode code points.  A
+  limitation in the framework for fnmatch, regexec, and regcomp requires
+  a compromise to save space and only ASCII-based range expressions are
+  supported for now (see bug 28255).  The full size of the locale is
+  only ~400KiB, with 346KiB coming from LC_CTYPE information for
+  Unicode.  This locale harmonizes downstream C.UTF-8 already shipping
+  in various downstream distributions.  The locale is not built into
+  glibc, and must be installed.
+
+* <math.h> functions that round their results to a narrower type, and
+  corresponding <tgmath.h> macros, are added from TS 18661-1:2014, TS
+  18661-3:2015 and draft ISO C2X:
+
+  - fsqrt, fsqrtl, dsqrtl and corresponding fMsqrtfN, fMsqrtfNx,
+    fMxsqrtfN and fMxsqrtfNx functions.
+
+  - ffma, ffmal, dfmal and corresponding fMfmafN, fMfmafNx, fMxfmafN and
+    fMxfmafNx functions.
+
+* <math.h> functions for floating-point maximum and minimum,
+  corresponding to new operations in IEEE 754-2019, and corresponding
+  <tgmath.h> macros, are added from draft ISO C2X: fmaximum,
+  fmaximum_num, fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num,
+  fminimum_mag, fminimum_mag_num and corresponding functions for float,
+  long double, _FloatN and _FloatNx.
+
+* <math.h> macros for single-precision float constants are added as a
+  GNU extension: M_Ef, M_LOG2Ef, M_LOG10Ef, M_LN2f, M_LN10f, M_PIf,
+  M_PI_2f, M_PI_4f, M_1_PIf, M_2_PIf, M_2_SQRTPIf, M_SQRT2f and
+  M_SQRT1_2f.
+
+* The __STDC_IEC_60559_BFP__ and __STDC_IEC_60559_COMPLEX__ macros are
+  predefined as specified in TS 18661-1:2014.
+
+* The exp10 functions in <math.h> now have a corresponding type-generic
+  macro in <tgmath.h>.
+
+* 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 '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.
+
+* Support for OpenRISC running on Linux has been added.  This port requires
+  as least binutils 2.35, GCC 11, and Linux 5.4.  Currently only soft-float
+  ABI is supported:
+
+    - or1k-linux-gnu
+
+  The OpenRISC ABI is 32-bit big-endian and uses 64-bit time (y2038 safe) and
+  64-bit file offsets (LFS default).
+
+* A new configure option, --with-rtld-early-cflags, can be used to
+  specify additional compiler flags for building the early startup code
+  of the dynamic linker.  On targets which have CPU compatibility
+  checks, this can help to ensure that proper diagnostics are printed if
+  the dynamic loader runs on an incompatible CPU.
+
+* On Linux, the epoll_pwait2 function has been added.  It is similar to
+  epoll_wait with the difference the timeout has nanoseconds resolution.
+
+* The function posix_spawn_file_actions_addtcsetpgrp_np has been added,
+  enabling posix_spawn and posix_spawnp to set the controlling terminal in
+  the new process in a race free manner.  This function is a GNU extension.
+
+* Source fortification (_FORTIFY_SOURCE) level 3 is now available for
+  applications compiling with glibc and gcc 12 and later. Level 3 leverages
+  the __builtin_dynamic_object_size function to deliver additional
+  fortification balanced against additional runtime cost (checking non-constant
+  bounds).
+
+* 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:
+
+* 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:
+
+  c0154a4a21a gdb: Don't assume r_ldsomap when r_version > 1 on Linux
+  4eb629d50d4 gdbserver: Check r_version < 1 for Linux debugger interface
+
+  when audit modules or dlmopen are used.
+
+* 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.
+
+* The catchsegv script and associated libSegFault.so shared object have
+  been removed.  There are widely-deployed out-of-process alternatives for
+  catching coredumps and backtraces.
+
+* Support for prelink will be removed in the next release; this includes
+  removal of the LD_TRACE_PRELINKING, and LD_USE_LOAD_BIAS, environment
+  variables and their functionality in the dynamic loader.
+
+* The LD_TRACE_PRELINKING environment variable has been removed.  Similar
+  functionality to obtain the program mapping address can be achieved by
+  using LD_TRACE_LOADED_OBJECTS to value of 2.
+
+* The LD_USE_LOAD_BIAS has been removed.  The variable was mainly used to
+  support prelink PIE binaries.
+
+Changes to build and runtime requirements:
+
+* The audit module interface version LAV_CURRENT is increased to enable
+  proper bind-now support.  The loader now advertises via the la_symbind
+  flags that PLT trace is not possible.  New audit modules require the
+  new dynamic loader supporing the latest LAV_CURRENT version. Old audit
+  modules are still loaded for all targets except aarch64.
+
+* The audit interface on aarch64 is extended to support both the indirect
+  result location register (x8) and NEON Q register.  Old audit modules are
+  rejected by the loader.  Audit modules must be rebuilt to use the newer
+  structure sizes and the latest module interface version for LAV_CURRENT.
+
+Security related changes:
+
+  CVE-2022-23219: Passing an overlong file name to the clnt_create
+  legacy function could result in a stack-based buffer overflow when
+  using the "unix" protocol.  Reported by Martin Sebor.
+
+  CVE-2022-23218: Passing an overlong file name to the svcunix_create
+  legacy function could result in a stack-based buffer overflow.
+
+  CVE-2021-3998: Passing a path longer than PATH_MAX to the realpath
+  function could result in a memory leak and potential access of
+  uninitialized memory.  Reported by Qualys.
+
+  CVE-2021-3999: Passing a buffer of size exactly 1 byte to the getcwd
+  function may result in an off-by-one buffer underflow and overflow
+  when the current working directory is longer than PATH_MAX and also
+  corresponds to the / directory through an unprivileged mount
+  namespace.  Reported by Qualys.
+
+The following bugs are resolved with this release:
+
+  [12889] nptl: Race condition in pthread_kill
+  [14232] nptl: tst-cancel7 and tst-cancelx7 race condition
+  [14913] libc: [mips] Clean up MIPS 64-bit register-dump.h output
+  [15310] dynamic-link: _dl_sort_fini is O(n^3) causing slow exit when
+    many dsos
+  [15333] libc: Use 64-bit stat functions in installed programs
+  [15533] dynamic-link: LD_AUDIT introduces an avoidable performance
+    degradation
+  [15971] dynamic-link: No interface for debugger access to libraries
+    loaded with dlmopen
+  [17318] locale: [RFE] Provide a C.UTF-8 locale by default
+  [17645] dynamic-link: RFE: Improve performance of dynamic loader for
+    deeply nested DSO dependencies.
+  [19193] nptl: pthread_kill, pthread_cancel return ESRCH for a thread
+    ID whose lifetime has not ended
+  [22542] network: buffer overflow in sunrpc clnt_create
+    (CVE-2022-23219)
+  [22716] malloc: [PATCH] mtrace.pl: use TRACE_PRELINKING instead of
+    TRACE_LOADED_OBJECTS
+  [25947] malloc: memory leak in muntrace
+  [26045] math: fmaxf(inf, nan) does not always work
+  [26108] math: exp10() has problems with <tgmath.h>
+  [26779] build: benign use after realloc at localealias.c:329
+  [27609] dynamic-link: [2.32/2.33/2.34 Regression] In elf/dl-open.c
+    (_dl_open) we might use __LM_ID_CALLER to index GL(dl_ns)[]
+  [27945] build: build-many-glibcs.py doesn't configure GCC with
+    --enable-initfini-array
+  [27991] build: x86: sysdeps/x86/configure.ac breaks when
+    libc_cv_include_x86_isa_level is loaded from cache
+  [28036] nptl: Incorrect types for pthread_mutexattr_set/getrobust_np
+    in __REDIRECT_NTH macro
+  [28061] dynamic-link: A failing dlmopen called by an auditor crashed
+  [28062] dynamic-link: Suppress audit calls when a (new) namespace is
+    empty
+  [28126] libc: nftw aborts for paths longer than PATH_MAX
+  [28129] dynamic-link: Unnecessary check DT_DEBUG in ld.so
+  [28153] libc: [test] gmon/tst-gmon-gprof* may have a f3 line when
+    built with ld.lld
+  [28182] libc: _TIME_BITS=64 in C++ has issues with fcntl, ioctl, prctl
+  [28185] math: Inaccurate j0f function (again)
+  [28199] locale: iconvconfig prefix flag behaves differently in glibc
+    2.34
+  [28203] dynamic-link: aarch64: elf_machine_{load_address,dynamic}
+    should drop _GLOBAL_OFFSET_TABLE_[0] in favor of __ehdr_start for
+    robustness
+  [28213] librt: NULL pointer dereference in mq_notify (CVE-2021-38604)
+  [28223] libc: mips: clone does not align stack
+  [28253] dynamic-link: Missing colon in LD_SHOW_AUXV output after
+    AT_MINSIGSTKSZ
+  [28256] malloc: Conditional jump or move depends on uninitialised
+    value(s) in __GI___tunables_init
+  [28260] build: io/tst-closefrom, misc/tst-close_range, posix/tst-
+    spawn5 fail if stray fds are open
+  [28310] libc: Do not use affinity mask for sysconf
+    (_SC_NPROCESSORS_CONF)
+  [28338] time: undefined behavior in __tzfile_compute with oddball TZif
+    file
+  [28340] dynamic-link: ld.so crashes while loading a DSO with a read-
+    only dynamic section
+  [28349] libc: Segfault for ping -R on qemux86 caused by recvmsg()
+  [28350] libc: ping receives SIGABRT on lib32-qemux86-64 caused by
+    recvmsg()
+  [28353] network: Race condition on __opensock
+  [28357] dynamic-link: deadlock between pthread_create and ctors
+  [28358] math: f64xdivf128 and f64xmulf128 spurious underflows
+  [28361] nptl: Fix for bug 12889 causes setxid deadlock
+  [28368] build: -Waddress instances in stdio-common/vfprintf-internal.c
+  [28390] localedata: Update locale data to Unicode 14.0.0
+  [28397] math: tgmath.h should not define fmaxmag, fminmag macros for
+    C2X
+  [28400] libc: [2.35 Regression] string/test-strncasecmp: cannot set
+    locale "en_US.UTF-8"
+  [28407] nptl: pthread_kill assumes that kill (getpid ()) is equivalent
+    to tgkill (getpid (), gettid())
+  [28455] dynamic-link: -Wl,--enable-new-dtags doesn't work
+  [28457] dynamic-link: Missing reldepmod4.so dependency for
+    globalmod1.so
+  [28469] time: linux: struct timex is not correctly set for 32-bit
+    systems with TIMESIZE=64
+  [28470] regex: Buffer read overrun in regular expression searching
+  [28475] string: Incorrect access attribute on memfrob
+  [28524] libc: Conversion from ISO-2022-JP-3 with iconv may emit
+    spurious NUL character on state reset
+  [28532] libc: powerpc64[le]: CFI for assembly templated syscalls is
+    incorrect
+  [28550] dynamic-link: FAIL: tst-dso-
+    ordering9_112-ecbda(GLIBC_TUNABLES=glibc.rtld.dynamic_sort=1)
+    execution test
+  [28554] build: Undefined generate-md5
+  [28572] libc: Misaligned accesses in test-memcpy and test-mempcpy on
+    hppa
+  [28607] nptl: Masked signals are delivered on thread exit
+  [28624] libc: openjdk 8/9 assume uni processor and gets stuck due to
+    lack of cpu counting /proc fallback with glibc 2.34
+  [28646] string: [2.35 Regression] mock -r fedora-36-x86_64
+    /tmp/java-1.8.0-openjdk-1.8.0.312.b07-2.fc36.src.rpm& fails to build
+  [28648] dynamic-link: Running ld.so on statically linked binaries
+    crashes
+  [28656] dynamic-link: LD_PREFER_MAP_32BIT_EXEC no longer works due to
+    binutils changes
+  [28676] dynamic-link: p_align on PT_LOAD segment in DSO isn't honored
+  [28678] nptl: nptl/tst-create1 hangs sporadically
+  [28688] dynamic-link: PT_LOAD p_align check is too strict
+  [28700] nss: "dns [!UNAVAIL=return] files" default for hosts database
+    is not useful
+  [28707] time: assert in tzfile.c __tzfile_read striking with truncated
+    timezones generated by tzcode-2021d and later
+  [28713] math: GCC 12 miscompiles libm
+  [28732] dynamic-link: FAIL: elf/tst-dl_find_object
+  [28738] build: LIBC_LINKER_FEATURE doesn't work on linker -z option
+  [28745] dynamic-link: _dl_find_object miscompilation on powerpc64le
+  [28746] libc: _FORTIFY_SOURCE does not work for stpcpy
+  [28749] libc: Inconsistency detected by ld.so: rtld.c: 1632: dl_main:
+    Assertion `GL(dl_rtld_map).l_libname' failed!
+  [28755] string: overflow bug in wcsncmp_avx2 and wcsncmp_evex
+  [28757] nptl: GDB printer tests failed with new GDB
+  [28765] math: x86_64 libmvec atan2 accuracy
+  [28766] manual: Document libmvec accuracy
+  [28768] network: Buffer overflow in svcunix_create with long pathnames
+    (CVE-2022-23218)
+  [28769] libc: Off-by-one buffer overflow/underflow in getcwd()
+    (CVE-2021-3999)
+  [28770] libc: Unexpected return value from realpath() for too long
+    results (CVE-2021-3998)
+  [28771] libc: %ebx optimization macros are incompatible with .altmacro
+    in Systemtap probes
+  [28780] build: --disable-default-pie doesn't work on static programs
+  [28782] libc: x86-64 ISA level for glibc itself is always
+    x86-64-baseline
+  [28792] glob: possible wrong behaviour with patterns with double [
+    with no closing ]
+  [28837] libc: FAIL: socket/tst-socket-timestamp-compat
+  [28847] locale: Empty mon_decimal_point in LC_MONETARY results in non-
+    empty mon_decimal_point_wc
+
 \f
 Version 2.34
 
 Major new features:
 
-* Add _SC_MINSIGSTKSZ and _SC_SIGSTKSZ.  When _SC_SIGSTKSZ_SOURCE or
-  _GNU_SOURCE are defined, MINSIGSTKSZ and SIGSTKSZ are no longer
+* In order to support smoother in-place-upgrades and to simplify
+  the implementation of the runtime all functionality formerly
+  implemented in the libraries libpthread, libdl, libutil, libanl has
+  been integrated into libc.  New applications do not need to link with
+  -lpthread, -ldl, -lutil, -lanl anymore.  For backwards compatibility,
+  empty static archives libpthread.a, libdl.a, libutil.a, libanl.a are
+  provided, so that the linker options keep working.  Applications which
+  have been linked against glibc 2.33 or earlier continue to load the
+  corresponding shared objects (which are now empty).  The integration
+  of those libraries into libc means that additional symbols become
+  available by default.  This can cause applications that contain weak
+  references to take unexpected code paths that would only have been
+  used in previous glibc versions when e.g. preloading libpthread.so.0,
+  potentially exposing application bugs.
+
+* When _DYNAMIC_STACK_SIZE_SOURCE or _GNU_SOURCE are defined,
+  PTHREAD_STACK_MIN is no longer constant and is redefined to
+  sysconf(_SC_THREAD_STACK_MIN).  This supports dynamic sized register
+  sets for modern architectural features like Arm SVE.
+
+* Add _SC_MINSIGSTKSZ and _SC_SIGSTKSZ.  When _DYNAMIC_STACK_SIZE_SOURCE
+  or _GNU_SOURCE are defined, MINSIGSTKSZ and SIGSTKSZ are no longer
   constant on Linux.  MINSIGSTKSZ is redefined to sysconf(_SC_MINSIGSTKSZ)
-  and SIGSTKSZ is redefined to sysconf (_SC_SIGSTKSZ).
+  and SIGSTKSZ is redefined to sysconf (_SC_SIGSTKSZ).  This supports
+  dynamic sized register sets for modern architectural features like
+  Arm SVE.
 
 * The dynamic linker implements the --list-diagnostics option, printing
   a dump of information related to IFUNC resolver operation and
@@ -37,9 +432,10 @@ Major new features:
 * Add support for 64-bit time_t on configurations like x86 where time_t
   is traditionally 32-bit.  Although time_t still defaults to 32-bit on
   these configurations, this default may change in future versions.
-  This is enabled with the _TIME_BITS preprocessor set to 64 and only
-  supported when LFS (_FILE_OFFSET_BITS=64) is also enabled.  It is only
-  enabled for Linux and the full support requires a minimum version of 5.1.
+  This is enabled with the _TIME_BITS preprocessor macro set to 64 and is
+  only supported when LFS (_FILE_OFFSET_BITS=64) is also enabled.  It is
+  only enabled for Linux and the full support requires a minimum kernel
+  version of 5.1.
 
 * The main gconv-modules file in glibc now contains only a small set of
   essential converter modules and the rest have been moved into a supplementary
@@ -52,6 +448,30 @@ Major new features:
 * On Linux, a new tunable, glibc.pthread.stack_cache_size, can be used
   to configure the size of the thread stack cache.
 
+* The function _Fork has been added as an async-signal-safe fork replacement
+  since Austin Group issue 62 droped the async-signal-safe requirement for
+  fork (and it will be included in the future POSIX standard).  The new _Fork
+  function does not run any atfork function neither resets any internal state
+  or lock (such as the malloc one), and only sets up a minimal state required
+  to call async-signal-safe functions (such as raise or execve).  This function
+  is currently a GNU extension.
+
+* On Linux, the close_range function has been added.  It allows efficiently
+  closing a range of file descriptors on recent kernels (version 5.9).
+
+* The function closefrom has been added.  It closes all file descriptors
+  greater than or equal to a given integer.  This function is a GNU extension,
+  although it is also present in other systems.
+
+* The posix_spawn_file_actions_addclosefrom_np function has been added,
+  enabling posix_spawn and posix_spawnp to close all file descriptors greater
+  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.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
 * The function pthread_mutex_consistent_np has been deprecated; programs
@@ -69,13 +489,36 @@ Deprecated and removed features, and other changes affecting compatibility:
 * The function pthread_yield has been deprecated; programs should use
   the equivalent standard function sched_yield instead.
 
+* The function inet_neta declared in <arpa/inet.h> has been deprecated.
+
+* Various rarely-used functions declared in <resolv.h> and
+  <arpa/nameser.h> have been deprecated.  Applications are encouraged to
+  use dedicated DNS processing libraries if applicable.  For <resolv.h>,
+  this affects the functions dn_count_labels, fp_nquery, fp_query,
+  fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdname, p_cdnname,
+  p_class, p_fqname, p_fqnname, p_option, p_query, p_rcode, p_time,
+  p_type, putlong, putshort, res_hostalias, res_isourserver,
+  res_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntos,
+  sym_ston.  For <arpa/nameser.h>, the functions ns_datetosecs,
+  ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename,
+  ns_sprintrr, ns_sprintrrf, ns_subdomain have been deprecated.
+
+* Various symbols previously defined in libresolv have been moved to libc
+  in order to prepare for libresolv moving entirely into libc (see earlier
+  entry for merging libraries into libc).  The symbols __dn_comp,
+  __dn_expand, __dn_skipname, __res_dnok, __res_hnok, __res_mailok,
+  __res_mkquery, __res_nmkquery, __res_nquery, __res_nquerydomain,
+  __res_nsearch, __res_nsend, __res_ownok, __res_query, __res_querydomain,
+  __res_search, __res_send formerly in libresolv have been renamed and no
+  longer have a __ prefix.  They are now available in libc.
+
 * The pthread cancellation handler is now installed with SA_RESTART and
   pthread_cancel will always send the internal SIGCANCEL on a cancellation
-  request.  It should not be visible to application since the cancellation
+  request.  It should not be visible to applications since the cancellation
   handler should either act upon cancellation (if asynchronous cancellation
   is enabled) or ignore the cancellation internal signal.  However there are
-  buggy kernel interfaces (for instance some CIFS version) that could still
-  see spurious EINTR error when cancellation interrupts a blocking syscall.
+  buggy kernel interfaces (for instance some CIFS versions) that could still
+  see spurious EINTR error when cancellation interrupts a blocking syscall.
 
 * Previously, glibc installed its various shared objects under versioned
   file names such as libc-2.33.so.  The ABI sonames (e.g., libc.so.6)
@@ -85,6 +528,36 @@ Deprecated and removed features, and other changes affecting compatibility:
   package managers that delete removed files late during the package
   upgrade or downgrade process.
 
+* The symbols mallwatch and tr_break are now deprecated and no longer used in
+  mtrace.  Similar functionality can be achieved by using conditional
+  breakpoints within mtrace functions from within gdb.
+
+* The __morecore and __after_morecore_hook malloc hooks and the default
+  implementation __default_morecore have been removed from the API.  Existing
+  applications will continue to link against these symbols but the interfaces
+  no longer have any effect on malloc.
+
+* Debugging features in malloc such as the MALLOC_CHECK_ environment variable
+  (or the glibc.malloc.check tunable), mtrace() and mcheck() have now been
+  disabled by default in the main C library.  Users looking to use these
+  features now need to preload a new debugging DSO libc_malloc_debug.so to get
+  this functionality back.
+
+* The deprecated functions malloc_get_state and malloc_set_state have been
+  moved from the core C library into libc_malloc_debug.so.  Legacy applications
+  that still use these functions will now need to preload libc_malloc_debug.so
+  in their environment using the LD_PRELOAD environment variable.
+
+* The deprecated memory allocation hooks __malloc_hook, __realloc_hook,
+  __memalign_hook and __free_hook are now removed from the API.  Compatibility
+  symbols are present to support legacy programs but new applications can no
+  longer link to these symbols.  These hooks no longer have any effect on glibc
+  functionality.  The malloc debugging DSO libc_malloc_debug.so currently
+  supports hooks and can be preloaded to get this functionality back for older
+  programs.  However this is a transitional measure and may be removed in a
+  future release of the GNU C Library.  Users may port away from these hooks by
+  writing and preloading their own malloc interposition library.
+
 Changes to build and runtime requirements:
 
 * On Linux, the shm_open, sem_open, and related functions now expect the
@@ -103,10 +576,151 @@ Security related changes:
   issue when using a notification type of SIGEV_THREAD and a thread
   attribute with a non-default affinity mask.
 
+  CVE-2021-35942: The wordexp function may overflow the positional
+  parameter number when processing the expansion resulting in a crash.
+  Reported by Philippe Antoine.
+
 The following bugs are resolved with this release:
 
-  [The release manager will add the list generated by
-  scripts/list-fixed-bugs.py just before the release.]
+  [4737] libc: fork is not async-signal-safe
+  [5781] math: Slow dbl-64 sin/cos/sincos for special values
+  [10353] libc: Methods for deleting all file descriptors greater than
+    given integer (closefrom)
+  [14185] glob: fnmatch() fails when '*' wildcard is applied on the file
+    name containing multi-byte character(s)
+  [14469] math: Inaccurate j0f function
+  [14470] math: Inaccurate j1f function
+  [14471] math: Inaccurate y0f function
+  [14472] math: Inaccurate y1f function
+  [14744] nptl: kill -32 $pid or kill -33 $pid on a process cancels a
+    random thread
+  [15271] dynamic-link: dlmopen()ed shared library with LM_ID_NEWLM
+    crashes if it fails dlsym() twice
+  [15648] nptl: multiple definition of `__lll_lock_wait_private'
+  [16063] nptl: Provide a pthread_once variant in libc directly
+  [17144] libc: syslog is not thread-safe if NO_SIGPIPE is not defined
+  [17145] libc: syslog with LOG_CONS leaks console file descriptor
+  [17183] manual: description of ENTRY struct in <search.h> in glibc
+    manual is incorrect
+  [18435] nptl: pthread_once hangs when init routine throws an exception
+  [18524] nptl: Missing calloc error checking in
+    __cxa_thread_atexit_impl
+  [19329] dynamic-link: dl-tls.c assert failure at concurrent
+    pthread_create and dlopen
+  [19366] nptl: returning from a thread should disable cancellation
+  [19511] nptl: 8MB memory leak in pthread_create in case of failure
+    when non-root user changes priority
+  [20802] dynamic-link: getauxval NULL pointer dereference after static
+    dlopen
+  [20813] nptl: pthread_exit is inconsistent between libc and libpthread
+  [22057] malloc: malloc_usable_size is broken with mcheck
+  [22668] locale: LC_COLLATE: the last character of ellipsis is not
+    ordered correctly
+  [23323] libc: [RFE] CSU startup hardening.
+  [23328] malloc: Remove malloc hooks and ensure related APIs return no
+    data.
+  [23462] dynamic-link: Static binary with dynamic string tokens ($LIB,
+    $PLATFORM, $ORIGIN) crashes
+  [23489] libc: "gcc -lmcheck" aborts on free when using posix_memalign
+  [23554] nptl: pthread_getattr_np reports wrong stack size with
+    MULTI_PAGE_ALIASING
+  [24106] libc: Bash interpreter in ldd script is taken from host
+  [24773] dynamic-link: dlerror in an secondary namespace does not use
+    the right free implementation
+  [25036] localedata: Update collation order for Swedish
+  [25383] libc: where_is_shmfs/__shm_directory/SHM_GET_NAME may cause
+    shm_open to pick wrong directory
+  [25680] dynamic-link: ifuncmain9picstatic and ifuncmain9picstatic
+    crash in IFUNC resolver due to stack canary (--enable-stack-
+    protector=all)
+  [26874] build: -Warray-bounds in _IO_wdefault_doallocate
+  [26983] math: [x86_64] x86_64 tgamma has too large ULP error
+  [27111] dynamic-link: pthread_create and tls access use link_map
+    objects that may be concurrently freed by dlclose
+  [27132] malloc: memusagestat is linked to system librt, leading to
+    undefined symbols on major version upgrade
+  [27136] dynamic-link: dtv setup at thread creation may leave an entry
+    uninitialized
+  [27249] libc: libSegFault.so does not output signal number properly
+  [27304] nptl: pthread_cond_destroy does not pass private flag to futex
+    system calls
+  [27318] dynamic-link: glibc fails to load binaries when built with
+    -march=sandybridge:  CPU ISA level is lower than required
+  [27343] nss: initgroups() SIGSEGVs when called on a system without
+    nsswich.conf (in a chroot)
+  [27346] dynamic-link: x86: PTWRITE feature check is missing
+  [27389] network: NSS chroot hardening causes regressions in chroot
+    deployments
+  [27403] dynamic-link: aarch64: tlsdesc htab is not freed on dlclose
+  [27444] libc: sysconf reports unsupported option (-1) for
+    _SC_LEVEL1_ICACHE_LINESIZE on X86 since v2.33
+  [27462] nscd: double-free in nscd (CVE-2021-27645)
+  [27468] malloc: aarch64: realloc crash with heap tagging: FAIL:
+    malloc/tst-malloc-thread-fail
+  [27498] dynamic-link: __dl_iterate_phdr lacks unwinding information
+  [27511] libc: S390 memmove assumes Vector Facility when MIE Facility 3
+    is present
+  [27522] glob: glob, glob64 incorrectly marked as __THROW
+  [27555] dynamic-link: Static tests fail with --enable-stack-
+    protector=all
+  [27559] libc: fstat(AT_FDCWD) succeeds (it shouldn't) and returns
+    information for the current directory
+  [27577] dynamic-link: elf/ld.so --help doesn't work
+  [27605] libc: tunables can't control xsave/xsavec selection in
+    dl_runtime_resolve_*
+  [27623] libc: powerpc: Missing registers in sc[v] clobbers list
+  [27645] libc: [linux] sysconf(_SC_NPROCESSOR...) breaks down on
+    containers
+  [27646] dynamic-link: Linker error for non-existing NSS symbols (e.g.
+    _nss_files_getcanonname_r) from within a dlmopen namespace.
+  [27648] libc: FAIL: misc/tst-select
+  [27650] stdio: vfscanf returns too early if a match is longer than
+    INT_MAX
+  [27651] libc: Performance regression after updating to 2.33
+  [27655] string: Wrong size calculation in string/test-strnlen.c
+  [27706] libc: select fails to update timeout on error
+  [27709] libc: arm: FAIL: debug/tst-longjmp_chk2
+  [27721] dynamic-link: x86: ld_audit ignores bind now for TLSDESC and
+    tries resolving them lazily
+  [27744] nptl: Support different libpthread/ld.so load orders in
+    libthread_db
+  [27749] libc: Data race __run_exit_handlers
+  [27761] libc: getconf: Segmentation fault when passing '-vq' as
+    argument
+  [27832] nss: makedb.c:797:7: error: 'writev' specified size 4294967295
+    exceeds maximum object size 2147483647
+  [27870] malloc: MALLOC_CHECK_ causes realloc(valid_ptr, TOO_LARGE) to
+    not set ENOMEM
+  [27872] build: Obsolete configure option --enable-stackguard-
+    randomization
+  [27873] build: tst-cpu-features-cpuinfo fail when building on AMD cpu
+  [27882] localedata: Use U+00AF MACRON in more EBCDIC charsets
+  [27892] libc: powerpc: scv ABI error handling fails to check
+    IS_ERR_VALUE
+  [27896] nptl: mq_notify does not handle separately allocated thread
+    attributes (CVE-2021-33574)
+  [27901] libc: TEST_STACK_ALIGN doesn't work
+  [27902] libc: The x86-64 clone wrapper fails to align child stack
+  [27914] nptl: Install SIGSETXID handler with SA_ONSTACK
+  [27939] libc: aarch64: clone does not align the stack
+  [27968] libc: s390x: clone does not align the stack
+  [28011] libc: Wild read in wordexp (parse_param) (CVE-2021-35942)
+  [28024] string: s390(31bit): Wrong result of memchr (MEMCHR_Z900_G5)
+    with n >= 0x80000000
+  [28028] malloc: malloc: tcache shutdown sequence does not work if the
+    thread never allocated anything
+  [28033] libc: Need to check RTM_ALWAYS_ABORT for RTM
+  [28064] string: x86_64:wcslen implementation list has wcsnlen
+  [28067] libc: FAIL: posix/tst-spawn5
+  [28068] malloc: FAIL: malloc/tst-mallocalign1-mcheck
+  [28071] time: clock_gettime, gettimeofday, time lost vDSO acceleration
+    on older kernels
+  [28075] nis: Out-of-bounds static buffer read in nis_local_domain
+  [28089] build: tst-tls20 fails when linker defaults to --as-needed
+  [28090] build: elf/tst-cpu-features-cpuinfo-static fails on certain
+    AMD64 cpus
+  [28091] network: ns_name_skip may return 0 for domain names without
+    terminator
 
 \f
 Version 2.33