string: Disable stack protector for memset in early static initialization
[glibc.git] / NEWS
blob72e9d70e1f7c770fa7efc1f24473bc270208e4bd
1 GNU C Library NEWS -- history of user-visible changes.
2 Copyright (C) 1992-2024 Free Software Foundation, Inc.
3 See the end for copying conditions.
5 Please send GNU C library bug reports via <https://sourceware.org/bugzilla/>
6 using `glibc' in the "product" field.
7 \f
8 Version 2.39
10 Major new features:
12 * A new tunable, glibc.cpu.plt_rewrite, can be used to enable PLT
13   rewrite on x86-64.  When enabled with non-lazy binding, the dynamic
14   linker will rewrite indirect branches in PLT with direct branches.
16 * Sync with Linux kernel 6.6 shadow stack interface.  The --enable-cet
17   configure option in only supported on x86-64.
19 * struct statvfs now has an f_type member, equal to the f_type statfs member;
20   on the Hurd this was always available under a reserved name,
21   and under Linux a spare has been allocated: it was always zero
22   in previous versions of glibc, and zero is not a valid result.
24 * On Linux, the functions posix_spawnattr_getcgroup_np and
25   posix_spawnattr_setcgroup_np have been added, along with the
26   POSIX_SPAWN_SETCGROUP flag.  They allow posix_spawn and posix_spawnp
27   to set the cgroupv2 in the new process in a race-free manner.  These
28   functions are GNU extensions and require a kernel with clone3 support.
30 * On Linux, the pidfd_spawn and pidfd_spawp functions have been added.
31   They have a similar prototype and semantic as posix_spawn, but instead of
32   returning a process ID, they return a file descriptor that can be used
33   along other pidfd functions (like pidfd_send_signal, poll, or waitid).
34   The pidfd functionality avoids the issue of PID reuse with the traditional
35   posix_spawn interface.
37 * On Linux, the pidfd_getpid function has been added.  It allows retrieving
38   the process ID associated with the process file descriptor created by
39   pid_spawn, fork_np, or pidfd_open.
41 * scanf-family functions now support the wN format length modifiers for
42   arguments pointing to types intN_t, int_leastN_t, uintN_t or
43   uint_leastN_t (for example, %w32d to read int32_t or int_least32_t in
44   decimal, or %w32x to read uint32_t or uint_least32_t in hexadecimal)
45   and the wfN format length modifiers for arguments pointing to types
46   int_fastN_t or uint_fastN_t, as specified in draft ISO C2X.
48 * A new tunable, glibc.mem.decorate_maps, can be used to add additional
49   information on underlying memory allocated by the glibc (for instance,
50   on thread stack created by pthread_create or memory allocated by
51   malloc).
53 * The <stdbit.h> header has been added from ISO C2X, with
54   stdc_leading_zeros, stdc_leading_ones, stdc_trailing_zeros,
55   stdc_trailing_ones, stdc_first_leading_zero, stdc_first_leading_one,
56   stdc_first_trailing_zero, stdc_first_trailing_one, stdc_count_zeros,
57   stdc_count_ones, stdc_has_single_bit, stdc_bit_width, stdc_bit_floor
58   and stdc_bit_ceil function families, each having functions for
59   unsigned char, unsigned short, unsigned int, unsigned long int and
60   unsigned long long int, and a type-generic macro.
62 * On AArch64 new symbols were added to libmvec and now math.h has
63   annotations to allow GCC 9 or newer to auto-vectorize calls to the
64   following scalar math functions when -ffast-math is specified:
65   acos, acosf, asin, asinf, atan, atanf, atan2, atan2f, cos, cosf,
66   exp, expf, exp10, exp10f, exp2, exp2f, expm1, expm1f, log, logf,
67   log10, log10f, log1p, log1pf, log2, log2f, sin, sinf, tan, tanf.
69 Deprecated and removed features, and other changes affecting compatibility:
71 * The ldconfig program now skips file names containing ';' or ending in
72   ".tmp", to avoid examining temporary files created by the RPM and dpkg
73   package managers.
75 * libcrypt has been removed from the GNU C Library.  The configure
76   options "--enable-crypt" and "--enable-nss-crypt" are no longer
77   available.  <crypt.h>, libcrypt.a, and libcrypt.so.1 will not be
78   installed.  For now <unistd.h> continues to declare the crypt
79   function by default, to avoid introducing vulnerabilities into
80   existing applications due to a missing prototype.  This declaration
81   is deprecated and may be removed in a future glibc release.
83   The replacement for libcrypt is libxcrypt, maintained separately from
84   GNU libc, but available under compatible licensing terms, and providing
85   binary backward compatibility with the former libcrypt.  It is currently
86   distributed from <https://github.com/besser82/libxcrypt/>.
88   As a consequence of this removal, GNU libc no longer makes any use of
89   the NSS cryptography library (Network Security Services; not to be
90   confused with Name Service Switch).  Distributors of binary packages
91   of GNU libc are advised to check whether their build processes can be
92   simplified.
94 * The ia64*-*-linux-gnu configurations are no longer supported.
96 Changes to build and runtime requirements:
98 * Building on LoongArch requires at a minimum binutils 2.41 for vector
99   instructions.
101 Security related changes:
103 The following CVEs were fixed in this release, details of which can be
104 found in the advisories directory of the release tarball:
106   [The release manager will add the list generated by
107   scripts/process-fixed-cves.sh just before the release.]
109 The following bugs are resolved with this release:
111   [The release manager will add the list generated by
112   scripts/list-fixed-bugs.py just before the release.]
114 Version 2.38
116 Major new features:
118 * When C2X features are enabled and the base argument is 0 or 2, the
119   following functions support binary integers prefixed by 0b or 0B as
120   input: strtol, strtoll, strtoul, strtoull, strtol_l, strtoll_l,
121   strtoul_l, strtoull_l, strtoimax, strtoumax, strtoq, strtouq, wcstol,
122   wcstoll, wcstoul, wcstoull, wcstol_l, wcstoll_l, wcstoul_l,
123   wcstoull_l, wcstoimax, wcstoumax, wcstoq, wcstouq.  Similarly, the
124   following functions support binary integers prefixed by 0b or 0B as
125   input to the %i format: fscanf, scanf, sscanf, vscanf, vsscanf,
126   vfscanf, fwscanf, wscanf, swscanf, vfwscanf, vwscanf, vswscanf; those
127   functions also support the %b format for binary integers, with or
128   without such a prefix and independent of standards mode.
130 * PRIb*, PRIB* and SCNb* macros from C2X have been added to
131   <inttypes.h>.
133 * printf-family functions now support the wN format length modifiers for
134   arguments of type intN_t, int_leastN_t, uintN_t or uint_leastN_t (for
135   example, %w32d to print int32_t or int_least32_t in decimal, or %w32x
136   to print uint32_t or uint_least32_t in hexadecimal) and the wfN format
137   length modifiers for arguments of type int_fastN_t or uint_fastN_t, as
138   specified in draft ISO C2X.
140 * A new tunable, glibc.pthread.stack_hugetlb, can be used to disable
141   Transparent Huge Pages (THP) in stack allocation at pthread_create.
143 * Support for x86_64 running on Hurd has been added.  This port requires
144   as least binutils 2.40 and GCC 13:
146     - x86_64-gnu
148 * Vector math library libmvec support has been added to AArch64.  It
149   requires GCC version >= 10.1.0.  It can be disabled via
150   "--disable-mathvec", however that is not a supported configuration as
151   it changes the ABI. The symbol names follow the AArch64 vector ABI,
152   they are declared in math.h and have to be called manually at this point.
154 * The strlcpy and strlcat functions have been added.  They are derived
155   from OpenBSD, and are expected to be added to a future POSIX version.
157 * A new configure option, "--enable-fortify-source", can be used to build the
158   GNU C Library with _FORTIFY_SOURCE. The level of fortification can either be
159   provided, or is set to the highest value supported by the compiler. If not
160   explicitly enabled, then fortify source is forcibly disabled so to keep
161   original behavior unchanged.
163 Deprecated and removed features, and other changes affecting compatibility:
165 * libcrypt is no longer built by default; one may use the "--enable-crypt"
166   option to build libcrypt.  libcrypt is likely to be removed from the
167   GNU C Library in a future release, so it is recommended that
168   applications port away from it to an alternative such as libxcrypt.
170 * In the Linux kernel for the hppa/parisc architecture some of the
171   MADV_XXX constants were changed to have the same values as the other
172   architectures.  New programs compiled with this glibc version and which
173   use the madvise call will require at least Linux kernel version 6.2,
174   alternatively stable kernels from versions 6.1.6, 5.15.87, 5.10.163,
175   5.4.228, 4.19.270 or 4.14.303.
177 * The "--disable-experimental-malloc" option is no longer available.  The
178   per-thread cache can still be disabled per-application using tunables
179   (glibc.malloc.tcache_count set to zero).
181 * The configure option "--enable-tunables" has been removed.  The tunable
182   feature is now always enabled.
184 Changes to build and runtime requirements:
186 * Building libmvec on AArch64 requires at a minimum GCC 10.1.0 for SVE
187   ACLE.
189 Security related changes:
191   CVE-2023-25139: When the printf family of functions is called with a
192   format specifier that uses an <apostrophe> (enable grouping) and a
193   minimum width specifier, the resulting output could be larger than
194   reasonably expected by a caller that computed a tight bound on the
195   buffer size.  The resulting larger than expected output could result
196   in a buffer overflow in the printf family of functions.
198 The following bugs are resolved with this release:
200   [178] string: Please add strlcpy and strlcat (attached)
201   [14697] nptl: Behavior of exit is nonconformant with respect to
202     threads and stdio
203   [15142] stdio: Missing locking in _IO_cleanup
204   [18096] glob: null deref in wordexp/parse_dollars/parse_arith
205   [18906] stdio: fopen: ccs value may affect open mode
206   [24466] stdio: Feature request: provide special printf formats for
207     intXX_t
208   [25457] nss: hosts lookup fails for ipv4mapped ipv6 addresses
209   [28519] libc: system and popen should pass "--" between /bin/sh and
210     argument
211   [29016] stdio: popen() sets errno to ENOMEM when shell does not exist
212   [29591] string: wcsnlen length can overflow in page cross case.
213   [30053] time: strftime %s returns -1 after 2038 on 32 bits systems
214   [30068] stdio: incorrect printf output for integers with thousands
215     separator and width field (CVE-2023-25139)
216   [30111] time: support_descriptors_list fails after 2038 on 32 bits
217     systems
218   [30125] dynamic-link: [regression, bisected] glibc-2.37 creates new
219     symlink for libraries without soname
220   [30130] math: [s390] The _FPU_SETCW macro yields compile error with
221     Clang
222   [30156] time: Potential ntp_gettime abi break
223   [30235] libc: Missing fallback in getlogin if loginuid is unset
224   [30258] dynamic-link: sprof cannot read and display shared object
225     profiling data correctly
226   [30263] libc: Add test coverage for abs(), labs(), and llabs().
227   [30305] math: Incorrect asm constraint in feraiseexcept on x86-64
228   [30402] libc: FAIL: elf/tst-glibcelf
229   [30425] dynamic-link: Symbol lookup during dlclose may fail
230     unnecessarily
231   [30435] dynamic-link: Root dir wrongly marked as nonexist in open_path
232   [30477] libc: [RISCV]: time64 does not work on riscv32
233   [30515] dynamic-link: _dl_find_object incorrectly returns 1 during
234     early startup
235   [30527] network: resolv_conf lock not unlocked on allocation failure
236   [30550] math: powerpc64le: GCC-specific code for isinf() is being used
237     on clang
238   [30555] string: strerror can incorrectly return NULL
239   [30579] malloc: trim_threshold in realloc lead to high memory usage
240   [30662] nscd: Group and password cache use errno in place of errval
242 Version 2.37
244 Major new features:
246 * The getent tool now supports the --no-addrconfig option. The output of
247   getent with --no-addrconfig may contain addresses of families not
248   configured on the current host i.e. as-if you had not passed
249   AI_ADDRCONFIG to getaddrinfo calls.
251 Deprecated and removed features, and other changes affecting compatibility:
253 * The dynamic linker no longer loads shared objects from the "tls"
254   subdirectories on the library search path or the subdirectory that
255   corresponds to the AT_PLATFORM system name, or employs the legacy AT_HWCAP
256   search mechanism, which was deprecated in version 2.33.
258 Security related changes:
260   CVE-2022-39046: When the syslog function is passed a crafted input
261   string larger than 1024 bytes, it reads uninitialized memory from the
262   heap and prints it to the target log file, potentially revealing a
263   portion of the contents of the heap.
265 The following bugs are resolved with this release:
267   [12154] network: Cannot resolve hosts which have wildcard aliases
268   [12165] libc: readdir: Do not skip entries with zero d_ino values
269   [19444] build: build failures with -O1 due to -Wmaybe-uninitialized
270   [24774] nptl: pthread_rwlock_timedwrlock stalls on ARM
271   [24816] nss: nss/tst-nss-files-hosts-long fails when no interface has
272     AF_INET6 address (ie docker)
273   [27087] stdio: PowerPC: Redefinition error with Clang from IEEE
274     redirection headers
275   [28846] network: CMSG_NXTHDR may trigger -Wstrict-overflow warning
276   [28937] dynamic-link: New DSO dependency sorter does not put new map
277     first if in a cycle
278   [29249] libc: csu/libc-tls.c:202: undefined reference to
279     `_startup_fatal_not_constant'
280   [29305] network: Inefficient buffer space usage in nss_dns for
281     gethostbyname and other functions
282   [29375] libc: don't hide MAP_ANONYMOUS behind _GNU_SOURCE
283   [29402] nscd: nscd: No such file or directory
284   [29415] nscd: getaddrinfo with AI_ADDRCONFIG returns addresses with
285     wrong family
286   [29427] dynamic-link: Inconsistency detected by ld.so: dl-printf.c:
287     200: _dl_debug_vdprintf: Assertion `! "invalid format specifier"'
288     failed!
289   [29463] math: math/test-float128-y1 fails on x86_64
290   [29485] build: Make hangs when the test misc/tst-pidfile returns
291     FAIL_UNSUPPORTED
292   [29490] dynamic-link: [bisected] new __brk_call causes dynamic loader
293     segfault on alpha
294   [29499] build: Check failed on misc/tst-glibcsyscalls while building
295     for RISCV64 on a unmatched hardware
296   [29501] build: Check failed on stdlib/tst-strfrom while building for
297     RISCV64 on a unmatched hardware
298   [29502] libc: alpha sys/acct.h out of date
299   [29514] build: Need to use -fPIE not -fpie
300   [29528] dynamic-link: __libc_early_init not called after dlmopen that
301     reuses namespace
302   [29536] libc: syslog fail to create large messages (CVE-2022-39046)
303   [29537] libc: [2.34 regression]: Alignment issue on m68k when using
304     futexes on qemu-user
305   [29539] libc: LD_TRACE_LOADED_OBJECTS changed how vDSO library are
306     printed
307   [29544] libc: Regression in syslog(3) calls breaks RFC due to extra
308     whitespace
309   [29564] build: Incorrect way to change MAKEFLAGS in Makerules
310   [29576] build: librtld.os: in function `_dl_start_profile':
311     (.text+0x9444): undefined reference to `strcpy'
312   [29578] libc: Definition of SUN_LEN() is wrong
313   [29583] build: iconv failures on 32bit platform due to missing large
314     file support
315   [29600] dynamic-link: dlmopen hangs after loading certain libraries
316   [29604] localedata: Update locale data to Unicode 15.0.0
317   [29605] nscd: Regression in NSCD backend of getaddrinfo
318   [29607] nscd: nscd repeatably crashes calling __strlen_avx2 when hosts
319     cache is enabled
320   [29611] string: Optimized AVX2 string functions unconditionally use
321     BMI2 instructions
322   [29624] malloc: errno is not cleared when entering main
323   [29638] libc: stdlib: arc4random fallback is never used
324   [29657] libc: Incorrect struct stat for 64-bit time on linux/generic
325     platforms
326   [29698] build: Configuring for AArch32 on ARMv8+ disables
327     optimizations
328   [29727] locale: __strtol_internal out-of-bounds read when parsing
329     thousands grouping
330   [29730] libc: broken y2038 support in fstatat on MIPS N64
331   [29746] libc: ppoll() does not switch to __ppoll64 when
332     -D_TIME_BITS=64 and -D_FORTIFY_SOURCE=2 is given on 32bit
333   [29771] libc: Restore IPC_64 support in sysvipc *ctl functions
334   [29780] build: possible parallel make issue in glibc-2.36 (siglist-
335     aux.S: No such file or directory)
336   [29864] libc: __libc_start_main() should obtain program headers
337     address (_dl_phdr) from the auxv, not the ELF header.
338   [29951] time: daylight variable not set correctly if last DST change
339     coincides with offset change
340   [30039] stdio: __vsprintf_internal does not handle unspecified buffer
341     length in fortify mode
343 Version 2.36
345 Major new features:
347 * Support for DT_RELR relative relocation format has been added to
348   glibc.  This is a new ELF dynamic tag that improves the size of
349   relative relocations in shared object files and position independent
350   executables (PIE).  DT_RELR generation requires linker support for
351   -z pack-relative-relocs option, which is supported for some targets
352   in recent binutils versions.  Lazy binding doesn't apply to DT_RELR.
354 * On Linux, the pidfd_open, pidfd_getfd, and pidfd_send_signal functions
355   have been added.  The pidfd functionality provides access to a process
356   while avoiding the issue of PID reuse on traditional Unix systems.
358 * On Linux, the process_madvise function has been added. It has the
359   same functionality as madvise but alters the target process identified
360   by the pidfd.
362 * On Linux, the process_mrelease function has been added.  It allows a
363   caller to release the memory of a dying process.  The release of the
364   memory is carried out in the context of the caller, using the caller's
365   CPU affinity, and priority with CPU usage accounted to the caller.
367 * The “no-aaaa” DNS stub resolver option has been added.  System
368   administrators can use it to suppress AAAA queries made by the stub
369   resolver, including AAAA lookups triggered by NSS-based interfaces
370   such as getaddrinfo.  Only DNS lookups are affected: IPv6 data in
371   /etc/hosts is still used, getaddrinfo with AI_PASSIVE will still
372   produce IPv6 addresses, and configured IPv6 name servers are still
373   used.  To produce correct Name Error (NXDOMAIN) results, AAAA queries
374   are translated to A queries.  The new resolver option is intended
375   primarily for diagnostic purposes, to rule out that AAAA DNS queries
376   have adverse impact.  It is incompatible with EDNS0 usage and DNSSEC
377   validation by applications.
379 * On Linux, the fsopen, fsmount, move_mount, fsconfig, fspick, open_tree,
380   and mount_setattr have been added.  They are part of the new Linux kernel
381   mount APIs that allow applications to more flexibly configure and operate
382   on filesystem mounts.  The new mount APIs are specifically designed to work
383   with namespaces.
385 * localedef now accepts locale definition files encoded in UTF-8.
386   Previously, input bytes not within the ASCII range resulted in
387   unpredictable output.
389 * Support for the mbrtoc8 and c8rtomb multibyte/UTF-8 character conversion
390   functions has been added per the ISO C2X N2653 and C++20 P0482R6 proposals.
391   Support for the char8_t typedef has been added per the ISO C2X N2653
392   proposal.  The functions are declared in uchar.h in C2X mode or when the
393   _GNU_SOURCE macro or C++20 __cpp_char8_t feature test macro is defined.
394   The char8_t typedef is declared in uchar.h in C2X mode or when the
395   _GNU_SOURCE macro is defined and the C++20 __cpp_char8_t feature test macro
396   is not defined (if __cpp_char8_t is defined, then char8_t is a builtin type).
398 * The functions arc4random, arc4random_buf, and arc4random_uniform have been
399   added.  The functions wrap getrandom and/or /dev/urandom to return high-
400   quality randomness from the kernel.
402 * Support for LoongArch running on Linux has been added.  This port requires
403   as least binutils 2.38, GCC 12, and Linux 5.19.  Currently only hard-float
404   ABI is supported:
406     - loongarch64-linux-gnu
408   The LoongArch ABI is 64-bit little-endian.
410 Deprecated and removed features, and other changes affecting compatibility:
412 * Support for prelink will be removed in the next release; this includes
413   removal of the LD_TRACE_PRELINKING, and LD_USE_LOAD_BIAS, environment
414   variables and their functionality in the dynamic loader.
416 * The Linux kernel version check has been removed along with the
417   LD_ASSUME_KERNEL environment variable.  The minimum kernel used to built
418   glibc is still provided through NT_GNU_ABI_TAG ELF note and also printed
419   when libc.so is issued directly.
421 * On Linux, The LD_LIBRARY_VERSION environment variable has been removed.
423 The following bugs are resolved with this release:
425   [14932] dynamic-link: dlsym(handle, "foo") and dlsym(RTLD_NEXT, "foo")
426     return different result with versioned "foo"
427   [16355] libc: syslog.h's SYSLOG_NAMES namespace violation and utter
428     mess
429   [23293] dynamic-link: aarch64: getauxval is broken when run as ld.so
430     ./exe and ld.so adjusts argv on the stack
431   [24595] nptl: [2.28 Regression]: Deadlock in atfork handler which
432     calls dlclose
433   [25744] locale: mbrtowc with Big5-HKSCS returns 2 instead of 1 when
434     consuming the second byte of certain double byte characters
435   [25812] stdio: Libio vtable protection is sometimes only partially
436     enforced
437   [27054] libc: pthread_atfork handlers that call pthread_atfork
438     deadlock
439   [27924] dynamic-link: ld.so: Support DT_RELR relative relocation
440     format
441   [28128] build: declare_symbol_alias doesn't work for assembly codes
442   [28566] network: getnameinfo with NI_NOFQDN is not thread safe
443   [28752] nss: Segfault in getpwuid when stat fails
444   [28815] libc: realpath should not copy to resolved buffer on error
445   [28828] stdio: fputwc crashes
446   [28838] libc: FAIL: elf/tst-p_align3
447   [28845] locale: ld-monetary.c should be updated to match ISO C and
448     other standards.
449   [28850] libc: linux: __get_nprocs_sched reads uninitialized memory
450     from the stack
451   [28852] libc: getaddrinfo leaks memory with AI_ALL
452   [28853] libc: tst-spawn6 changes current foreground process group
453     (breaks test isolation)
454   [28857] libc: FAIL: elf/tst-audit24a
455   [28860] build: --enable-kernel=5.1.0 build fails because of missing
456     __convert_scm_timestamps
457   [28865] libc: linux: _SC_NPROCESSORS_CONF and _SC_NPROCESSORS_ONLN are
458     inaccurate without /sys and /proc
459   [28868] dynamic-link: Dynamic loader DFS algorithm segfaults on
460     missing libraries
461   [28880] libc: Program crashes if date beyond 2038
462   [28883] libc: sysdeps/unix/sysv/linux/select.c: __select64
463     !__ASSUME_TIME64_SYSCALLS && !__ASSUME_PSELECT fails on Microblaze
464   [28896] string: strncmp-avx2-rtm and wcsncmp-avx2-rtm fallback on non-
465     rtm variants when avoiding overflow
466   [28922] build: The .d dependency files aren't always generated
467   [28931] libc: hosts lookup broken for SUCCESS=CONTINUE and
468     SUCCESS=MERGE
469   [28936] build: nm: No such file
470   [28950] localedata: Add locale for ISO code "tok" (Toki Pona)
471   [28953] nss: NSS lookup result can be incorrect if function lookup
472     clobbers errno
473   [28970] math: benchtest: libmvec benchmark doesn't build with make
474     bench.
475   [28991] libc: sysconf(_SC_NPROCESSORS_CONF) should read
476     /sys/devices/system/cpu/possible
477   [28993] libc: closefrom() iterates until max int if no access to
478     /proc/self/fd/
479   [28996] libc: realpath fails to copy partial result to resolved buffer
480     on ENOENT and EACCES
481   [29027] math: [ia64] fabs fails with sNAN input
482   [29029] nptl: poll() spuriously returns EINTR during thread
483     cancellation and with cancellation disabled
484   [29030] string: GLIBC 2.35 regression - Fortify crash on certain valid
485     uses of mbsrtowcs (*** buffer overflow detected ***: terminated)
486   [29062] dynamic-link: Memory leak in _dl_find_object_update if object
487     is promoted to global scope
488   [29069] libc: fstatat64_time64_statx wrapper broken on MIPS N32 with
489     -D_FILE_OFFSET_BITS=64 and -D_TIME_BITS=64
490   [29071] dynamic-link: m68k: Removal of ELF_DURING_STARTUP optimization
491     broke ld.so
492   [29097] time: fchmodat does not handle 64 bit time_t for
493     AT_SYMLINK_NOFOLLOW
494   [29109] libc: posix_spawn() always returns 1 (EPERM) on clone()
495     failure
496   [29141] libc: _FORTIFY_SOURCE=3 fail for gcc 12/glibc 2.35
497   [29162] string: [PATCH] string.h syntactic error:
498     include/bits/string_fortified.h:110: error: expected ',' or ';'
499     before '__fortified_attr_access'
500   [29165] libc: [Regression] broken argv adjustment
501   [29187] dynamic-link: [regression] broken argv adjustment for nios2
502   [29193] math: sincos produces a different output than sin/cos
503   [29197] string: __strncpy_power9() uses uninitialised register vs18
504     value for filling after \0
505   [29203] libc: daemon is not y2038 aware
506   [29204] libc: getusershell is not 2038 aware
507   [29207] libc: posix_fallocate fallback implementation is not y2038
508     aware
509   [29208] libc: fpathconf(_PC_ASYNC_IO) is not y2038 aware
510   [29209] libc: isfdtype is not y2038 aware
511   [29210] network: ruserpass is not y2038 aware
512   [29211] libc: __open_catalog is not y2038 aware
513   [29213] libc: gconv_parseconfdir is not y2038 aware
514   [29214] nptl: pthread_setcanceltype fails to set type
515   [29225] network: Mistyped define statement in socket/sys/socket.h in
516     line 184
517   [29274] nptl: __read_chk is not a cancellation point
518   [29279] libc: undefined reference to `mbstowcs_chk' after
519     464d189b9622932a75302290625de84931656ec0
520   [29304] libc: mq_timedreceive does not handle 64 bit syscall return
521     correct for !__ASSUME_TIME64_SYSCALLS
522   [29403] libc: st_atim, st_mtim, st_ctim stat struct members are
523     missing on microblaze with largefile
525 Version 2.35
527 Major new features:
529 * Unicode 14.0.0 Support: Character encoding, character type info, and
530   transliteration tables are all updated to Unicode 14.0.0, using
531   generator scripts contributed by Mike FABIAN (Red Hat).
533 * Bump r_version in the debugger interface to 2 and add a new field,
534   r_next, support multiple namespaces.
536 * Support for the C.UTF-8 locale has been added to glibc.  The locale
537   supports full code-point sorting for all valid Unicode code points.  A
538   limitation in the framework for fnmatch, regexec, and regcomp requires
539   a compromise to save space and only ASCII-based range expressions are
540   supported for now (see bug 28255).  The full size of the locale is
541   only ~400KiB, with 346KiB coming from LC_CTYPE information for
542   Unicode.  This locale harmonizes downstream C.UTF-8 already shipping
543   in various downstream distributions.  The locale is not built into
544   glibc, and must be installed.
546 * <math.h> functions that round their results to a narrower type, and
547   corresponding <tgmath.h> macros, are added from TS 18661-1:2014, TS
548   18661-3:2015 and draft ISO C2X:
550   - fsqrt, fsqrtl, dsqrtl and corresponding fMsqrtfN, fMsqrtfNx,
551     fMxsqrtfN and fMxsqrtfNx functions.
553   - ffma, ffmal, dfmal and corresponding fMfmafN, fMfmafNx, fMxfmafN and
554     fMxfmafNx functions.
556 * <math.h> functions for floating-point maximum and minimum,
557   corresponding to new operations in IEEE 754-2019, and corresponding
558   <tgmath.h> macros, are added from draft ISO C2X: fmaximum,
559   fmaximum_num, fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num,
560   fminimum_mag, fminimum_mag_num and corresponding functions for float,
561   long double, _FloatN and _FloatNx.
563 * <math.h> macros for single-precision float constants are added as a
564   GNU extension: M_Ef, M_LOG2Ef, M_LOG10Ef, M_LN2f, M_LN10f, M_PIf,
565   M_PI_2f, M_PI_4f, M_1_PIf, M_2_PIf, M_2_SQRTPIf, M_SQRT2f and
566   M_SQRT1_2f.
568 * The __STDC_IEC_60559_BFP__ and __STDC_IEC_60559_COMPLEX__ macros are
569   predefined as specified in TS 18661-1:2014.
571 * The exp10 functions in <math.h> now have a corresponding type-generic
572   macro in <tgmath.h>.
574 * The ISO C2X macro _PRINTF_NAN_LEN_MAX has been added to <stdio.h>.
576 * printf-family functions now support the %b format for output of
577   integers in binary, as specified in draft ISO C2X, and the %B variant
578   of that format recommended by draft ISO C2X.
580 * A new DSO sorting algorithm has been added in the dynamic linker that uses
581   topological sorting by depth-first search (DFS), solving performance issues
582   of the existing sorting algorithm when encountering particular circular
583   object dependency cases.
585 * A new tunable, glibc.rtld.dynamic_sort, can be used to select between
586   the two DSO sorting algorithms.  The default setting of '2' uses the
587   new DFS-based algorithm.  The setting '1' switches to the old
588   algorithm used in glibc 2.33 and earlier.
590 * ABI support for a new function '__memcmpeq'. '__memcmpeq' is meant
591   to be used by compilers for optimizing usage of 'memcmp' when its
592   return value is only used for its boolean status.
594 * Support for automatically registering threads with the Linux rseq
595   system call has been added.  This system call is implemented starting
596   from Linux 4.18.  The Restartable Sequences ABI accelerates user-space
597   operations on per-cpu data.  It allows user-space to perform updates
598   on per-cpu data without requiring heavy-weight atomic operations.
599   Automatically registering threads allows all libraries, including
600   libc, to make immediate use of the rseq support by using the
601   documented ABI, via the __rseq_flags, __rseq_offset, and __rseq_size
602   variables.  The GNU C Library manual has details on integration of
603   Restartable Sequences.
605 * A symbolic link to the dynamic linker is now installed under
606   /usr/bin/ld.so (or more precisely, '${bindir}/ld.so').
608 * All programs and the testsuite in glibc are now built as position independent
609   executables (PIE) by default on toolchains and architectures that support it.
610   Further, if the toolchain and architecture supports it, even static programs
611   are built as PIE and the resultant glibc can be used to build static PIE
612   executables.  A new option --disable-default-pie has been added to disable
613   this behavior and get a non-PIE build.  This option replaces
614   --enable-static-pie, which no longer has any effect on the build
615   configuration.
617 * On Linux, a new tunable, glibc.malloc.hugetlb, can be used to
618   either make malloc issue madvise plus MADV_HUGEPAGE on mmap and sbrk
619   or to use huge pages directly with mmap calls with the MAP_HUGETLB
620   flags).  The former can improve performance when Transparent Huge Pages
621   is set to 'madvise' mode while the latter uses the system reserved
622   huge pages.
624 * The printf family of functions now handles the flagged %#m conversion
625   specifier, printing errno as an error constant (similar to strerrorname_np).
627 * The function _dl_find_object has been added.  In-process unwinders
628   can use it to efficiently locate unwinding information for a code
629   address.
631 * Support for OpenRISC running on Linux has been added.  This port requires
632   as least binutils 2.35, GCC 11, and Linux 5.4.  Currently only soft-float
633   ABI is supported:
635     - or1k-linux-gnu
637   The OpenRISC ABI is 32-bit big-endian and uses 64-bit time (y2038 safe) and
638   64-bit file offsets (LFS default).
640 * A new configure option, --with-rtld-early-cflags, can be used to
641   specify additional compiler flags for building the early startup code
642   of the dynamic linker.  On targets which have CPU compatibility
643   checks, this can help to ensure that proper diagnostics are printed if
644   the dynamic loader runs on an incompatible CPU.
646 * On Linux, the epoll_pwait2 function has been added.  It is similar to
647   epoll_wait with the difference the timeout has nanoseconds resolution.
649 * The function posix_spawn_file_actions_addtcsetpgrp_np has been added,
650   enabling posix_spawn and posix_spawnp to set the controlling terminal in
651   the new process in a race free manner.  This function is a GNU extension.
653 * Source fortification (_FORTIFY_SOURCE) level 3 is now available for
654   applications compiling with glibc and gcc 12 and later. Level 3 leverages
655   the __builtin_dynamic_object_size function to deliver additional
656   fortification balanced against additional runtime cost (checking non-constant
657   bounds).
659 * The audit libraries will avoid unnecessary slowdown if it is not required
660   PLT tracking (by not implementing the la_pltenter or la_pltexit callbacks).
662 Deprecated and removed features, and other changes affecting compatibility:
664 * On x86-64, the LD_PREFER_MAP_32BIT_EXEC environment variable support
665   has been removed since the first PT_LOAD segment is no longer executable
666   due to defaulting to -z separate-code.
668 * The r_version update in the debugger interface makes the glibc binary
669   incompatible with GDB binaries built without the following commits:
671   c0154a4a21a gdb: Don't assume r_ldsomap when r_version > 1 on Linux
672   4eb629d50d4 gdbserver: Check r_version < 1 for Linux debugger interface
674   when audit modules or dlmopen are used.
676 * Intel MPX support (lazy PLT, ld.so profile, and LD_AUDIT) has been removed.
678 * The --enable-static-pie option is no longer available.  The glibc build
679   configuration script now automatically detects static-pie support in the
680   toolchain and architecture and enables it if available.
682 * The catchsegv script and associated libSegFault.so shared object have
683   been removed.  There are widely-deployed out-of-process alternatives for
684   catching coredumps and backtraces.
686 * Support for prelink will be removed in the next release; this includes
687   removal of the LD_TRACE_PRELINKING, and LD_USE_LOAD_BIAS, environment
688   variables and their functionality in the dynamic loader.
690 * The LD_TRACE_PRELINKING environment variable has been removed.  Similar
691   functionality to obtain the program mapping address can be achieved by
692   using LD_TRACE_LOADED_OBJECTS to value of 2.
694 * The LD_USE_LOAD_BIAS has been removed.  The variable was mainly used to
695   support prelink PIE binaries.
697 Changes to build and runtime requirements:
699 * The audit module interface version LAV_CURRENT is increased to enable
700   proper bind-now support.  The loader now advertises via the la_symbind
701   flags that PLT trace is not possible.  New audit modules require the
702   new dynamic loader supporting the latest LAV_CURRENT version. Old audit
703   modules are still loaded for all targets except aarch64.
705 * The audit interface on aarch64 is extended to support both the indirect
706   result location register (x8) and NEON Q register.  Old audit modules are
707   rejected by the loader.  Audit modules must be rebuilt to use the newer
708   structure sizes and the latest module interface version for LAV_CURRENT.
710 Security related changes:
712   CVE-2022-23219: Passing an overlong file name to the clnt_create
713   legacy function could result in a stack-based buffer overflow when
714   using the "unix" protocol.  Reported by Martin Sebor.
716   CVE-2022-23218: Passing an overlong file name to the svcunix_create
717   legacy function could result in a stack-based buffer overflow.
719   CVE-2021-3998: Passing a path longer than PATH_MAX to the realpath
720   function could result in a memory leak and potential access of
721   uninitialized memory.  Reported by Qualys.
723   CVE-2021-3999: Passing a buffer of size exactly 1 byte to the getcwd
724   function may result in an off-by-one buffer underflow and overflow
725   when the current working directory is longer than PATH_MAX and also
726   corresponds to the / directory through an unprivileged mount
727   namespace.  Reported by Qualys.
729 The following bugs are resolved with this release:
731   [12889] nptl: Race condition in pthread_kill
732   [14232] nptl: tst-cancel7 and tst-cancelx7 race condition
733   [14913] libc: [mips] Clean up MIPS 64-bit register-dump.h output
734   [15310] dynamic-link: _dl_sort_fini is O(n^3) causing slow exit when
735     many dsos
736   [15333] libc: Use 64-bit stat functions in installed programs
737   [15533] dynamic-link: LD_AUDIT introduces an avoidable performance
738     degradation
739   [15971] dynamic-link: No interface for debugger access to libraries
740     loaded with dlmopen
741   [17318] locale: [RFE] Provide a C.UTF-8 locale by default
742   [17645] dynamic-link: RFE: Improve performance of dynamic loader for
743     deeply nested DSO dependencies.
744   [19193] nptl: pthread_kill, pthread_cancel return ESRCH for a thread
745     ID whose lifetime has not ended
746   [22542] network: buffer overflow in sunrpc clnt_create
747     (CVE-2022-23219)
748   [22716] malloc: [PATCH] mtrace.pl: use TRACE_PRELINKING instead of
749     TRACE_LOADED_OBJECTS
750   [25947] malloc: memory leak in muntrace
751   [26045] math: fmaxf(inf, nan) does not always work
752   [26108] math: exp10() has problems with <tgmath.h>
753   [26779] build: benign use after realloc at localealias.c:329
754   [27609] dynamic-link: [2.32/2.33/2.34 Regression] In elf/dl-open.c
755     (_dl_open) we might use __LM_ID_CALLER to index GL(dl_ns)[]
756   [27945] build: build-many-glibcs.py doesn't configure GCC with
757     --enable-initfini-array
758   [27991] build: x86: sysdeps/x86/configure.ac breaks when
759     libc_cv_include_x86_isa_level is loaded from cache
760   [28036] nptl: Incorrect types for pthread_mutexattr_set/getrobust_np
761     in __REDIRECT_NTH macro
762   [28061] dynamic-link: A failing dlmopen called by an auditor crashed
763   [28062] dynamic-link: Suppress audit calls when a (new) namespace is
764     empty
765   [28126] libc: nftw aborts for paths longer than PATH_MAX
766   [28129] dynamic-link: Unnecessary check DT_DEBUG in ld.so
767   [28153] libc: [test] gmon/tst-gmon-gprof* may have a f3 line when
768     built with ld.lld
769   [28182] libc: _TIME_BITS=64 in C++ has issues with fcntl, ioctl, prctl
770   [28185] math: Inaccurate j0f function (again)
771   [28199] locale: iconvconfig prefix flag behaves differently in glibc
772     2.34
773   [28203] dynamic-link: aarch64: elf_machine_{load_address,dynamic}
774     should drop _GLOBAL_OFFSET_TABLE_[0] in favor of __ehdr_start for
775     robustness
776   [28213] librt: NULL pointer dereference in mq_notify (CVE-2021-38604)
777   [28223] libc: mips: clone does not align stack
778   [28253] dynamic-link: Missing colon in LD_SHOW_AUXV output after
779     AT_MINSIGSTKSZ
780   [28256] malloc: Conditional jump or move depends on uninitialised
781     value(s) in __GI___tunables_init
782   [28260] build: io/tst-closefrom, misc/tst-close_range, posix/tst-
783     spawn5 fail if stray fds are open
784   [28310] libc: Do not use affinity mask for sysconf
785     (_SC_NPROCESSORS_CONF)
786   [28338] time: undefined behavior in __tzfile_compute with oddball TZif
787     file
788   [28340] dynamic-link: ld.so crashes while loading a DSO with a read-
789     only dynamic section
790   [28349] libc: Segfault for ping -R on qemux86 caused by recvmsg()
791   [28350] libc: ping receives SIGABRT on lib32-qemux86-64 caused by
792     recvmsg()
793   [28353] network: Race condition on __opensock
794   [28357] dynamic-link: deadlock between pthread_create and ctors
795   [28358] math: f64xdivf128 and f64xmulf128 spurious underflows
796   [28361] nptl: Fix for bug 12889 causes setxid deadlock
797   [28368] build: -Waddress instances in stdio-common/vfprintf-internal.c
798   [28390] localedata: Update locale data to Unicode 14.0.0
799   [28397] math: tgmath.h should not define fmaxmag, fminmag macros for
800     C2X
801   [28400] libc: [2.35 Regression] string/test-strncasecmp: cannot set
802     locale "en_US.UTF-8"
803   [28407] nptl: pthread_kill assumes that kill (getpid ()) is equivalent
804     to tgkill (getpid (), gettid())
805   [28455] dynamic-link: -Wl,--enable-new-dtags doesn't work
806   [28457] dynamic-link: Missing reldepmod4.so dependency for
807     globalmod1.so
808   [28469] time: linux: struct timex is not correctly set for 32-bit
809     systems with TIMESIZE=64
810   [28470] regex: Buffer read overrun in regular expression searching
811   [28475] string: Incorrect access attribute on memfrob
812   [28524] libc: Conversion from ISO-2022-JP-3 with iconv may emit
813     spurious NUL character on state reset
814   [28532] libc: powerpc64[le]: CFI for assembly templated syscalls is
815     incorrect
816   [28550] dynamic-link: FAIL: tst-dso-
817     ordering9_112-ecbda(GLIBC_TUNABLES=glibc.rtld.dynamic_sort=1)
818     execution test
819   [28554] build: Undefined generate-md5
820   [28572] libc: Misaligned accesses in test-memcpy and test-mempcpy on
821     hppa
822   [28607] nptl: Masked signals are delivered on thread exit
823   [28624] libc: openjdk 8/9 assume uni processor and gets stuck due to
824     lack of cpu counting /proc fallback with glibc 2.34
825   [28646] string: [2.35 Regression] mock -r fedora-36-x86_64
826     /tmp/java-1.8.0-openjdk-1.8.0.312.b07-2.fc36.src.rpm& fails to build
827   [28648] dynamic-link: Running ld.so on statically linked binaries
828     crashes
829   [28656] dynamic-link: LD_PREFER_MAP_32BIT_EXEC no longer works due to
830     binutils changes
831   [28676] dynamic-link: p_align on PT_LOAD segment in DSO isn't honored
832   [28678] nptl: nptl/tst-create1 hangs sporadically
833   [28688] dynamic-link: PT_LOAD p_align check is too strict
834   [28700] nss: "dns [!UNAVAIL=return] files" default for hosts database
835     is not useful
836   [28707] time: assert in tzfile.c __tzfile_read striking with truncated
837     timezones generated by tzcode-2021d and later
838   [28713] math: GCC 12 miscompiles libm
839   [28732] dynamic-link: FAIL: elf/tst-dl_find_object
840   [28738] build: LIBC_LINKER_FEATURE doesn't work on linker -z option
841   [28745] dynamic-link: _dl_find_object miscompilation on powerpc64le
842   [28746] libc: _FORTIFY_SOURCE does not work for stpcpy
843   [28749] libc: Inconsistency detected by ld.so: rtld.c: 1632: dl_main:
844     Assertion `GL(dl_rtld_map).l_libname' failed!
845   [28755] string: overflow bug in wcsncmp_avx2 and wcsncmp_evex
846   [28757] nptl: GDB printer tests failed with new GDB
847   [28765] math: x86_64 libmvec atan2 accuracy
848   [28766] manual: Document libmvec accuracy
849   [28768] network: Buffer overflow in svcunix_create with long pathnames
850     (CVE-2022-23218)
851   [28769] libc: Off-by-one buffer overflow/underflow in getcwd()
852     (CVE-2021-3999)
853   [28770] libc: Unexpected return value from realpath() for too long
854     results (CVE-2021-3998)
855   [28771] libc: %ebx optimization macros are incompatible with .altmacro
856     in Systemtap probes
857   [28780] build: --disable-default-pie doesn't work on static programs
858   [28782] libc: x86-64 ISA level for glibc itself is always
859     x86-64-baseline
860   [28792] glob: possible wrong behaviour with patterns with double [
861     with no closing ]
862   [28837] libc: FAIL: socket/tst-socket-timestamp-compat
863   [28847] locale: Empty mon_decimal_point in LC_MONETARY results in non-
864     empty mon_decimal_point_wc
867 Version 2.34
869 Major new features:
871 * In order to support smoother in-place-upgrades and to simplify
872   the implementation of the runtime all functionality formerly
873   implemented in the libraries libpthread, libdl, libutil, libanl has
874   been integrated into libc.  New applications do not need to link with
875   -lpthread, -ldl, -lutil, -lanl anymore.  For backwards compatibility,
876   empty static archives libpthread.a, libdl.a, libutil.a, libanl.a are
877   provided, so that the linker options keep working.  Applications which
878   have been linked against glibc 2.33 or earlier continue to load the
879   corresponding shared objects (which are now empty).  The integration
880   of those libraries into libc means that additional symbols become
881   available by default.  This can cause applications that contain weak
882   references to take unexpected code paths that would only have been
883   used in previous glibc versions when e.g. preloading libpthread.so.0,
884   potentially exposing application bugs.
886 * When _DYNAMIC_STACK_SIZE_SOURCE or _GNU_SOURCE are defined,
887   PTHREAD_STACK_MIN is no longer constant and is redefined to
888   sysconf(_SC_THREAD_STACK_MIN).  This supports dynamic sized register
889   sets for modern architectural features like Arm SVE.
891 * Add _SC_MINSIGSTKSZ and _SC_SIGSTKSZ.  When _DYNAMIC_STACK_SIZE_SOURCE
892   or _GNU_SOURCE are defined, MINSIGSTKSZ and SIGSTKSZ are no longer
893   constant on Linux.  MINSIGSTKSZ is redefined to sysconf(_SC_MINSIGSTKSZ)
894   and SIGSTKSZ is redefined to sysconf (_SC_SIGSTKSZ).  This supports
895   dynamic sized register sets for modern architectural features like
896   Arm SVE.
898 * The dynamic linker implements the --list-diagnostics option, printing
899   a dump of information related to IFUNC resolver operation and
900   glibc-hwcaps subdirectory selection.
902 * On Linux, the function execveat has been added.  It operates similar to
903   execve and it is is already used to implement fexecve without requiring
904   /proc to be mounted.  However, different than fexecve, if the syscall is not
905   supported by the kernel an error is returned instead of trying a fallback.
907 * The ISO C2X function timespec_getres has been added.
909 * The feature test macro __STDC_WANT_IEC_60559_EXT__, from draft ISO
910   C2X, is supported to enable declarations of functions defined in Annex F
911   of C2X.  Those declarations are also enabled when
912   __STDC_WANT_IEC_60559_BFP_EXT__, as specified in TS 18661-1, is
913   defined, and when _GNU_SOURCE is defined.
915 * On powerpc64*, glibc can now be compiled without scv support using the
916   --disable-scv configure option.
918 * Add support for 64-bit time_t on configurations like x86 where time_t
919   is traditionally 32-bit.  Although time_t still defaults to 32-bit on
920   these configurations, this default may change in future versions.
921   This is enabled with the _TIME_BITS preprocessor macro set to 64 and is
922   only supported when LFS (_FILE_OFFSET_BITS=64) is also enabled.  It is
923   only enabled for Linux and the full support requires a minimum kernel
924   version of 5.1.
926 * The main gconv-modules file in glibc now contains only a small set of
927   essential converter modules and the rest have been moved into a supplementary
928   configuration file gconv-modules-extra.conf in the gconv-modules.d directory
929   in the same GCONV_PATH.  Similarly, external converter modules directories
930   may have supplementary configuration files in a gconv-modules.d directory
931   with names ending with .conf to logically classify the converter modules in
932   that directory.
934 * On Linux, a new tunable, glibc.pthread.stack_cache_size, can be used
935   to configure the size of the thread stack cache.
937 * The function _Fork has been added as an async-signal-safe fork replacement
938   since Austin Group issue 62 dropped the async-signal-safe requirement for
939   fork (and it will be included in the future POSIX standard).  The new _Fork
940   function does not run any atfork function neither resets any internal state
941   or lock (such as the malloc one), and only sets up a minimal state required
942   to call async-signal-safe functions (such as raise or execve).  This function
943   is currently a GNU extension.
945 * On Linux, the close_range function has been added.  It allows efficiently
946   closing a range of file descriptors on recent kernels (version 5.9).
948 * The function closefrom has been added.  It closes all file descriptors
949   greater than or equal to a given integer.  This function is a GNU extension,
950   although it is also present in other systems.
952 * The posix_spawn_file_actions_addclosefrom_np function has been added,
953   enabling posix_spawn and posix_spawnp to close all file descriptors greater
954   than or equal to a given integer.  This function is a GNU extension,
955   although Solaris also provides a similar function.
957 * When invoked explicitly, the dynamic linker now uses the kernel to
958   execute programs that do not have any dynamic dependency (that is,
959   they are statically linked).  This feature is Linux-specific.
961 Deprecated and removed features, and other changes affecting compatibility:
963 * The function pthread_mutex_consistent_np has been deprecated; programs
964   should use the equivalent standard function pthread_mutex_consistent
965   instead.
967 * The function pthread_mutexattr_getrobust_np has been deprecated;
968   programs should use the equivalent standard function
969   pthread_mutexattr_getrobust instead.
971 * The function pthread_mutexattr_setrobust_np has been deprecated;
972   programs should use the equivalent standard function
973   pthread_mutexattr_setrobust instead.
975 * The function pthread_yield has been deprecated; programs should use
976   the equivalent standard function sched_yield instead.
978 * The function inet_neta declared in <arpa/inet.h> has been deprecated.
980 * Various rarely-used functions declared in <resolv.h> and
981   <arpa/nameser.h> have been deprecated.  Applications are encouraged to
982   use dedicated DNS processing libraries if applicable.  For <resolv.h>,
983   this affects the functions dn_count_labels, fp_nquery, fp_query,
984   fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdname, p_cdnname,
985   p_class, p_fqname, p_fqnname, p_option, p_query, p_rcode, p_time,
986   p_type, putlong, putshort, res_hostalias, res_isourserver,
987   res_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntos,
988   sym_ston.  For <arpa/nameser.h>, the functions ns_datetosecs,
989   ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename,
990   ns_sprintrr, ns_sprintrrf, ns_subdomain have been deprecated.
992 * Various symbols previously defined in libresolv have been moved to libc
993   in order to prepare for libresolv moving entirely into libc (see earlier
994   entry for merging libraries into libc).  The symbols __dn_comp,
995   __dn_expand, __dn_skipname, __res_dnok, __res_hnok, __res_mailok,
996   __res_mkquery, __res_nmkquery, __res_nquery, __res_nquerydomain,
997   __res_nsearch, __res_nsend, __res_ownok, __res_query, __res_querydomain,
998   __res_search, __res_send formerly in libresolv have been renamed and no
999   longer have a __ prefix.  They are now available in libc.
1001 * The pthread cancellation handler is now installed with SA_RESTART and
1002   pthread_cancel will always send the internal SIGCANCEL on a cancellation
1003   request.  It should not be visible to applications since the cancellation
1004   handler should either act upon cancellation (if asynchronous cancellation
1005   is enabled) or ignore the cancellation internal signal.  However there are
1006   buggy kernel interfaces (for instance some CIFS versions) that could still
1007   see a spurious EINTR error when cancellation interrupts a blocking syscall.
1009 * Previously, glibc installed its various shared objects under versioned
1010   file names such as libc-2.33.so.  The ABI sonames (e.g., libc.so.6)
1011   were provided as symbolic links.  Starting with glibc 2.34, the shared
1012   objects are installed under their ABI sonames directly, without
1013   symbolic links.  This increases compatibility with distribution
1014   package managers that delete removed files late during the package
1015   upgrade or downgrade process.
1017 * The symbols mallwatch and tr_break are now deprecated and no longer used in
1018   mtrace.  Similar functionality can be achieved by using conditional
1019   breakpoints within mtrace functions from within gdb.
1021 * The __morecore and __after_morecore_hook malloc hooks and the default
1022   implementation __default_morecore have been removed from the API.  Existing
1023   applications will continue to link against these symbols but the interfaces
1024   no longer have any effect on malloc.
1026 * Debugging features in malloc such as the MALLOC_CHECK_ environment variable
1027   (or the glibc.malloc.check tunable), mtrace() and mcheck() have now been
1028   disabled by default in the main C library.  Users looking to use these
1029   features now need to preload a new debugging DSO libc_malloc_debug.so to get
1030   this functionality back.
1032 * The deprecated functions malloc_get_state and malloc_set_state have been
1033   moved from the core C library into libc_malloc_debug.so.  Legacy applications
1034   that still use these functions will now need to preload libc_malloc_debug.so
1035   in their environment using the LD_PRELOAD environment variable.
1037 * The deprecated memory allocation hooks __malloc_hook, __realloc_hook,
1038   __memalign_hook and __free_hook are now removed from the API.  Compatibility
1039   symbols are present to support legacy programs but new applications can no
1040   longer link to these symbols.  These hooks no longer have any effect on glibc
1041   functionality.  The malloc debugging DSO libc_malloc_debug.so currently
1042   supports hooks and can be preloaded to get this functionality back for older
1043   programs.  However this is a transitional measure and may be removed in a
1044   future release of the GNU C Library.  Users may port away from these hooks by
1045   writing and preloading their own malloc interposition library.
1047 Changes to build and runtime requirements:
1049 * On Linux, the shm_open, sem_open, and related functions now expect the
1050   file shared memory file system to be mounted at /dev/shm.  These functions
1051   no longer search among the system's mount points for a suitable
1052   replacement if /dev/shm is not available.
1054 Security related changes:
1056   CVE-2021-27645: The nameserver caching daemon (nscd), when processing
1057   a request for netgroup lookup, may crash due to a double-free,
1058   potentially resulting in degraded service or Denial of Service on the
1059   local system.  Reported by Chris Schanzle.
1061   CVE-2021-33574: The mq_notify function has a potential use-after-free
1062   issue when using a notification type of SIGEV_THREAD and a thread
1063   attribute with a non-default affinity mask.
1065   CVE-2021-35942: The wordexp function may overflow the positional
1066   parameter number when processing the expansion resulting in a crash.
1067   Reported by Philippe Antoine.
1069 The following bugs are resolved with this release:
1071   [4737] libc: fork is not async-signal-safe
1072   [5781] math: Slow dbl-64 sin/cos/sincos for special values
1073   [10353] libc: Methods for deleting all file descriptors greater than
1074     given integer (closefrom)
1075   [14185] glob: fnmatch() fails when '*' wildcard is applied on the file
1076     name containing multi-byte character(s)
1077   [14469] math: Inaccurate j0f function
1078   [14470] math: Inaccurate j1f function
1079   [14471] math: Inaccurate y0f function
1080   [14472] math: Inaccurate y1f function
1081   [14744] nptl: kill -32 $pid or kill -33 $pid on a process cancels a
1082     random thread
1083   [15271] dynamic-link: dlmopen()ed shared library with LM_ID_NEWLM
1084     crashes if it fails dlsym() twice
1085   [15648] nptl: multiple definition of `__lll_lock_wait_private'
1086   [16063] nptl: Provide a pthread_once variant in libc directly
1087   [17144] libc: syslog is not thread-safe if NO_SIGPIPE is not defined
1088   [17145] libc: syslog with LOG_CONS leaks console file descriptor
1089   [17183] manual: description of ENTRY struct in <search.h> in glibc
1090     manual is incorrect
1091   [18435] nptl: pthread_once hangs when init routine throws an exception
1092   [18524] nptl: Missing calloc error checking in
1093     __cxa_thread_atexit_impl
1094   [19329] dynamic-link: dl-tls.c assert failure at concurrent
1095     pthread_create and dlopen
1096   [19366] nptl: returning from a thread should disable cancellation
1097   [19511] nptl: 8MB memory leak in pthread_create in case of failure
1098     when non-root user changes priority
1099   [20802] dynamic-link: getauxval NULL pointer dereference after static
1100     dlopen
1101   [20813] nptl: pthread_exit is inconsistent between libc and libpthread
1102   [22057] malloc: malloc_usable_size is broken with mcheck
1103   [22668] locale: LC_COLLATE: the last character of ellipsis is not
1104     ordered correctly
1105   [23323] libc: [RFE] CSU startup hardening.
1106   [23328] malloc: Remove malloc hooks and ensure related APIs return no
1107     data.
1108   [23462] dynamic-link: Static binary with dynamic string tokens ($LIB,
1109     $PLATFORM, $ORIGIN) crashes
1110   [23489] libc: "gcc -lmcheck" aborts on free when using posix_memalign
1111   [23554] nptl: pthread_getattr_np reports wrong stack size with
1112     MULTI_PAGE_ALIASING
1113   [24106] libc: Bash interpreter in ldd script is taken from host
1114   [24773] dynamic-link: dlerror in an secondary namespace does not use
1115     the right free implementation
1116   [25036] localedata: Update collation order for Swedish
1117   [25383] libc: where_is_shmfs/__shm_directory/SHM_GET_NAME may cause
1118     shm_open to pick wrong directory
1119   [25680] dynamic-link: ifuncmain9picstatic and ifuncmain9picstatic
1120     crash in IFUNC resolver due to stack canary (--enable-stack-
1121     protector=all)
1122   [26874] build: -Warray-bounds in _IO_wdefault_doallocate
1123   [26983] math: [x86_64] x86_64 tgamma has too large ULP error
1124   [27111] dynamic-link: pthread_create and tls access use link_map
1125     objects that may be concurrently freed by dlclose
1126   [27132] malloc: memusagestat is linked to system librt, leading to
1127     undefined symbols on major version upgrade
1128   [27136] dynamic-link: dtv setup at thread creation may leave an entry
1129     uninitialized
1130   [27249] libc: libSegFault.so does not output signal number properly
1131   [27304] nptl: pthread_cond_destroy does not pass private flag to futex
1132     system calls
1133   [27318] dynamic-link: glibc fails to load binaries when built with
1134     -march=sandybridge:  CPU ISA level is lower than required
1135   [27343] nss: initgroups() SIGSEGVs when called on a system without
1136     nsswich.conf (in a chroot)
1137   [27346] dynamic-link: x86: PTWRITE feature check is missing
1138   [27389] network: NSS chroot hardening causes regressions in chroot
1139     deployments
1140   [27403] dynamic-link: aarch64: tlsdesc htab is not freed on dlclose
1141   [27444] libc: sysconf reports unsupported option (-1) for
1142     _SC_LEVEL1_ICACHE_LINESIZE on X86 since v2.33
1143   [27462] nscd: double-free in nscd (CVE-2021-27645)
1144   [27468] malloc: aarch64: realloc crash with heap tagging: FAIL:
1145     malloc/tst-malloc-thread-fail
1146   [27498] dynamic-link: __dl_iterate_phdr lacks unwinding information
1147   [27511] libc: S390 memmove assumes Vector Facility when MIE Facility 3
1148     is present
1149   [27522] glob: glob, glob64 incorrectly marked as __THROW
1150   [27555] dynamic-link: Static tests fail with --enable-stack-
1151     protector=all
1152   [27559] libc: fstat(AT_FDCWD) succeeds (it shouldn't) and returns
1153     information for the current directory
1154   [27577] dynamic-link: elf/ld.so --help doesn't work
1155   [27605] libc: tunables can't control xsave/xsavec selection in
1156     dl_runtime_resolve_*
1157   [27623] libc: powerpc: Missing registers in sc[v] clobbers list
1158   [27645] libc: [linux] sysconf(_SC_NPROCESSOR...) breaks down on
1159     containers
1160   [27646] dynamic-link: Linker error for non-existing NSS symbols (e.g.
1161     _nss_files_getcanonname_r) from within a dlmopen namespace.
1162   [27648] libc: FAIL: misc/tst-select
1163   [27650] stdio: vfscanf returns too early if a match is longer than
1164     INT_MAX
1165   [27651] libc: Performance regression after updating to 2.33
1166   [27655] string: Wrong size calculation in string/test-strnlen.c
1167   [27706] libc: select fails to update timeout on error
1168   [27709] libc: arm: FAIL: debug/tst-longjmp_chk2
1169   [27721] dynamic-link: x86: ld_audit ignores bind now for TLSDESC and
1170     tries resolving them lazily
1171   [27744] nptl: Support different libpthread/ld.so load orders in
1172     libthread_db
1173   [27749] libc: Data race __run_exit_handlers
1174   [27761] libc: getconf: Segmentation fault when passing '-vq' as
1175     argument
1176   [27832] nss: makedb.c:797:7: error: 'writev' specified size 4294967295
1177     exceeds maximum object size 2147483647
1178   [27870] malloc: MALLOC_CHECK_ causes realloc(valid_ptr, TOO_LARGE) to
1179     not set ENOMEM
1180   [27872] build: Obsolete configure option --enable-stackguard-
1181     randomization
1182   [27873] build: tst-cpu-features-cpuinfo fail when building on AMD cpu
1183   [27882] localedata: Use U+00AF MACRON in more EBCDIC charsets
1184   [27892] libc: powerpc: scv ABI error handling fails to check
1185     IS_ERR_VALUE
1186   [27896] nptl: mq_notify does not handle separately allocated thread
1187     attributes (CVE-2021-33574)
1188   [27901] libc: TEST_STACK_ALIGN doesn't work
1189   [27902] libc: The x86-64 clone wrapper fails to align child stack
1190   [27914] nptl: Install SIGSETXID handler with SA_ONSTACK
1191   [27939] libc: aarch64: clone does not align the stack
1192   [27968] libc: s390x: clone does not align the stack
1193   [28011] libc: Wild read in wordexp (parse_param) (CVE-2021-35942)
1194   [28024] string: s390(31bit): Wrong result of memchr (MEMCHR_Z900_G5)
1195     with n >= 0x80000000
1196   [28028] malloc: malloc: tcache shutdown sequence does not work if the
1197     thread never allocated anything
1198   [28033] libc: Need to check RTM_ALWAYS_ABORT for RTM
1199   [28064] string: x86_64:wcslen implementation list has wcsnlen
1200   [28067] libc: FAIL: posix/tst-spawn5
1201   [28068] malloc: FAIL: malloc/tst-mallocalign1-mcheck
1202   [28071] time: clock_gettime, gettimeofday, time lost vDSO acceleration
1203     on older kernels
1204   [28075] nis: Out-of-bounds static buffer read in nis_local_domain
1205   [28089] build: tst-tls20 fails when linker defaults to --as-needed
1206   [28090] build: elf/tst-cpu-features-cpuinfo-static fails on certain
1207     AMD64 cpus
1208   [28091] network: ns_name_skip may return 0 for domain names without
1209     terminator
1212 Version 2.33
1214 Major new features:
1216 * The dynamic linker accepts the --list-tunables argument which prints
1217   all the supported tunables.  This option is disable if glibc is
1218   configured with tunables disabled (--enable-tunables=no).
1220 * The dynamic linker accepts the --argv0 argument and provides opportunity
1221   to change argv[0] string.
1223 * The dynamic linker loads optimized implementations of shared objects
1224   from subdirectories under the glibc-hwcaps directory on the library
1225   search path if the system's capabilities meet the requirements for
1226   that subdirectory.  Initially supported subdirectories include
1227   "power9" and "power10" for the powerpc64le-linux-gnu architecture,
1228   "z13", "z14", "z15" for s390x-linux-gnu, and "x86-64-v2", "x86-64-v3",
1229   "x86-64-v4" for x86_64-linux-gnu.  In the x86_64-linux-gnu case, the
1230   subdirectory names correspond to the vendor-independent x86-64
1231   microarchitecture levels defined in the x86-64 psABI supplement.
1233 * The new --help option of the dynamic linker provides usage and
1234   information and library search path diagnostics.
1236 * The mallinfo2 function is added to report statistics as per mallinfo,
1237   but with larger field widths to accurately report values that are
1238   larger than fit in an integer.
1240 * Add <sys/platform/x86.h> to provide query macros for x86 CPU features.
1242 * Support for the RISC-V ISA running on Linux has been expanded to run on
1243   32-bit hardware.  This is supported for the following ISA and ABI pairs:
1245     - rv32imac ilp32
1246     - rv32imafdc ilp32
1247     - rv32imafdc ilp32d
1249   The 32-bit RISC-V port requires at least Linux 5.4, GCC 7.1 and binutils
1250   2.28.
1252 * A new fortification level _FORTIFY_SOURCE=3 is available.  At this level,
1253   glibc may use additional checks that may have an additional performance
1254   overhead.  At present these checks are available only on LLVM 9 and later.
1255   The latest GCC available at this time (10.2) does not support this level of
1256   fortification.
1258 Deprecated and removed features, and other changes affecting compatibility:
1260 * The mallinfo function is marked deprecated.  Callers should call
1261   mallinfo2 instead.
1263 * When dlopen is used in statically linked programs, alternative library
1264   implementations from HWCAP subdirectories are no longer loaded.
1265   Instead, the default implementation is used.
1267 * The deprecated <sys/vtimes.h> header and the function vtimes have been
1268   removed.  To support old binaries, the vtimes function continues to exist
1269   as a compatibility symbol.  Applications should use the getrlimit or
1270   prlimit.
1272 * Following a change in the tzdata 2018a release upstream, the zdump
1273   program is now installed in the /usr/bin subdirectory.  Previously,
1274   the /usr/sbin subdirectory was used.
1276 * On s390(x), the type float_t is now derived from the macro
1277   __FLT_EVAL_METHOD__ that is defined by the compiler, instead of being
1278   hardcoded to double.  This does not affect the ABI of any libraries
1279   that are part of the GNU C Library, but may affect the ABI of other
1280   libraries that use this type in their interfaces.  The new definition
1281   improves consistency with compiler behavior in many scenarios.
1283 * A future version of glibc will stop loading shared objects from the
1284   "tls" subdirectories on the library search path, the subdirectory that
1285   corresponds to the AT_PLATFORM system name, and also stop employing
1286   the legacy AT_HWCAP search mechanism.  Applications should switch to
1287   the new glibc-hwcaps mechanism instead; if they do not do that, only
1288   the baseline version (directly from the search path directory) will be
1289   loaded.
1291 Changes to build and runtime requirements:
1293 * On Linux, the system administrator needs to configure /dev/pts with
1294   the intended access modes for pseudo-terminals.  glibc no longer
1295   attempts to adjust permissions of terminal devices.  The previous glibc
1296   defaults ("tty" group, user read/write and group write) already
1297   corresponded to what most systems used, so that grantpt did not
1298   perform any adjustments.
1300 * On Linux, the posix_openpt and getpt functions no longer attempt to
1301   use legacy (BSD) pseudo-terminals and assume that if /dev/ptmx exists
1302   (and pseudo-terminals are supported), a devpts file system is mounted
1303   on /dev/pts.  Current systems already meet these requirements.
1305 * s390x requires GCC 7.1 or newer.  See gcc Bug 98269.
1307 Security related changes:
1309   CVE-2021-3326: An assertion failure during conversion from the
1310   ISO-20220-JP-3 character set using the iconv function has been fixed.
1311   This assertion was triggered by certain valid inputs in which the
1312   converted output contains a combined sequence of two wide characters
1313   crossing a buffer boundary.  Reported by Tavis Ormandy.
1315   CVE-2020-27618: An infinite loop has been fixed in the iconv program when
1316   invoked with input containing redundant shift sequences in the IBM1364,
1317   IBM1371, IBM1388, IBM1390, or IBM1399 character sets.
1319   CVE-2020-29562: An assertion failure has been fixed in the iconv function
1320   when invoked with UCS4 input containing an invalid character.
1322   CVE-2019-25013: A buffer overflow has been fixed in the iconv function when
1323   invoked with EUC-KR input containing invalid multibyte input sequences.
1325 The following bugs are resolved with this release:
1327   [10635] libc: realpath portability patches
1328   [16124] dynamic-link: ld.so should allow to change argv[0]
1329   [17924] malloc: 'free' should not set errno
1330   [18683] libc: Linux faccessat implementation can incorrectly ignore
1331     AT_EACCESS
1332   [22899] libc: Use 64-bit readdir() in generic POSIX getcwd()
1333   [23091] hurd: missing waitid support
1334   [23249] libc: Epyc and other current AMD CPUs do not select the
1335     "haswell" platform subdirectory
1336   [24080] dynamic-link: Definition of "haswell" platform is inconsistent
1337     with GCC
1338   [24202] libc: m68k setjmp() saves incorrect 'a5' register in --enable-
1339     stack-protector=all
1340   [24941] libc: Make grantpt usable after multi-threaded fork in more
1341     cases
1342   [24970] libc: realpath mishandles EOVERFLOW; stat not needed anyway
1343   [24973] locale: iconv encounters segmentation fault when converting
1344     0x00 0xfe in EUC-KR to UTF-8 (CVE-2019-25013)
1345   [25399] string: undefined reference to `__warn_memset_zero_len' when
1346     changing gnuc version
1347   [25859] libc: glibc parser for /sys/devices/system/cpu/online is
1348     incorrect
1349   [25938] dynamic-link: ld.so.cache should store meaning of hwcap mask
1350     bits
1351   [25971] libc: s390 bits/hwcap.h out of sync with kernel
1352   [26053] libc: unlockpt fails with ENOTTY for non-ptmx descriptors
1353   [26100] libc: Race in syslog(3) with regards to tag printing.
1354   [26124] libc: Export <cpu-features.h>
1355   [26130] nscd: Inconsistent nscd cache during pruning
1356   [26203] libc: GLRO(dl_x86_cpu_features) may not be initialized
1357   [26224] locale: iconv hangs when converting some invalid inputs from
1358     several IBM character sets (CVE-2020-27618)
1359   [26341] libc: realpath cyclically call __alloca(path_max) to consume
1360     too much stack space
1361   [26343] manual: invalid documented return type for strerrorname_np(),
1362     strerrordesc_np(), sigdescr_np(), sigabbrev_np()
1363   [26376] libc: Namespace violation in stdio.h and sys/stat.h if build
1364     with optimization.
1365   [26383] locale: bind_textdomain_codeset doesn't accept //TRANSLIT
1366     anymore
1367   [26394] time: [2.33 Regression] FAIL: nptl/tst-join14
1368   [26534] math: libm.so 2.32 SIGILL in pow() due to FMA4 instruction on
1369     non-FMA4 system
1370   [26552] dynamic-link: CPU_FEATURE_USABLE_P should be more conservative
1371   [26553] libc: mtx_init allows type set to "mtx_recursive" only
1372   [26555] string: strerrorname_np does not return the documented value
1373   [26592] libc: pointer arithmetic overflows in realpath
1374   [26600] network: Transaction ID collisions cause slow DNS lookups in
1375     getaddrinfo
1376   [26606] libc: [2.33 Regression] pselect is broken on x32
1377   [26615] libc: powerpc: libc segfaults when LD_PRELOADed with libgcc
1378   [26620] glob: fnmatch with collating symbols results in segmentation
1379     fault
1380   [26625] libc: [2.33 Regression] CET is disabled
1381   [26636] libc: 32-bit shmctl(IPC_INFO) crashes when shminfo struct is
1382     at the end of a memory mapping
1383   [26637] libc: semctl SEM_STAT_ANY fails to pass the buffer specified
1384     by the caller to the kernel
1385   [26639] libc: msgctl IPC_INFO and MSG_INFO return garbage
1386   [26647] build: [-Werror=array-parameter=] due to different
1387     declarations for __sigsetjmp
1388   [26648] libc: mkstemp is likely to fail on systems with non-stricly-
1389     monotonic clocks
1390   [26649] stdio: printf should handle non-normal x86 long double numbers
1391     gracefully (CVE-2020-29573)
1392   [26686] build: -Warray-parameter instances building with GCC 11
1393   [26687] build: -Warray-bounds instances building with GCC 11
1394   [26690] stdio: Aliasing violation in __vfscanf_internal
1395   [26691] nptl: Use a minimum guard size of 64 KiB on aarch64
1396   [26726] build: GCC warning calling new_composite_name with an array of
1397     one element
1398   [26736] libc: FAIL: misc/tst-sysvshm-linux
1399   [26737] libc: Random FAIL: rt/tst-shm
1400   [26791] libc: Missing O_CLOEXEC in sysconf.c
1401   [26798] dynamic-link: aarch64: variant PCS symbols may be incorrectly
1402     lazy bound
1403   [26801] nptl: pthread_mutex_clocklock with CLOCK_MONOTONIC can fail on
1404     PI mutexes
1405   [26818] string: aarch64: string tests may run ifunc variants that are
1406     not safe
1407   [26821] libc: Memory leak test failures on Fedora 33
1408   [26824] libc: FAIL: elf/tst-cpu-features-supports with recent trunk:
1409     FSGSBASE/LM/RDRAND check failure
1410   [26833] time: adjtime() with delta == NULL segfaults on armv7 32bit
1411     platform
1412   [26853] libc: aarch64: Missing unwind information in statically linked
1413     startup code
1414   [26923] locale: Assertion failure in iconv when converting invalid
1415     UCS4 (CVE-2020-29562)
1416   [26926] dynamic-link: aarch64: library dependencies are not bti
1417     protected
1418   [26932] libc: sh: Multiple floating point functions defined as stubs
1419     only since 2.31
1420   [26964] nptl: pthread_mutex_timedlock returning EAGAIN after futex is
1421     locked
1422   [26988] dynamic-link: aarch64: BTI mprotect address is not page
1423     aligned
1424   [27002] build: libc_freeres_fn build failure with GCC 11
1425   [27004] dynamic-link: ld.so is miscompiled by GCC 11
1426   [27008] dynamic-link: ld.so.cache should have endianness markup
1427   [27042] libc: [alpha] anonymous union in struct stat confuses
1428     detection logic
1429   [27053] libc: Conformance regression in system(3) (and probably also
1430     pclose(3))
1431   [27072] dynamic-link: static pie ifunc resolvers run before hwcap is
1432     setup
1433   [27077] network: Do not reload /etc/nsswitch.conf from chroot
1434   [27083] libc: Unsafe unbounded alloca in addmntent
1435   [27104] dynamic-link: The COMMON_CPUID_INDEX_MAX handshake does not
1436     work
1437   [27130] string: "rep movsb" performance issue
1438   [27150] libc: alpha: wait4() is unavailable in static linking
1439   [27177] dynamic-link:
1440     GLIBC_TUNABLES=glibc.cpu.x86_ibt=on:glibc.cpu.x86_shstk=on doesn't
1441     work
1442   [27222] dynamic-link: Incorrect sysdeps/x86/tst-cpu-features-cpuinfo.c
1443   [27237] malloc: deadlock in malloc/tst-malloc-stats-cancellation
1444   [27256] locale: Assertion failure in ISO-2022-JP-3 gconv module
1445     related to combining characters (CVE-2021-3326)
1448 Version 2.32
1450 Major new features:
1452 * Unicode 13.0.0 Support: Character encoding, character type info, and
1453   transliteration tables are all updated to Unicode 13.0.0, using
1454   generator scripts contributed by Mike FABIAN (Red Hat).
1456 * New locale added: ckb_IQ (Kurdish/Sorani spoken in Iraq)
1458 * Support for Synopsys ARC HS cores (ARCv2 ISA) running Linux has been
1459   added. This port requires at least binutils-2.32, gcc-8.3 and Linux-5.1.
1460   Three ABIs are supported:
1462      - arc-linux-gnu
1463      - arc-linux-gnuhf
1464      - arceb-linux-gnu
1466   The arc* ABIs are little-endian while arceb is big-endian.  All ABIs use
1467   64-bit time (y2038 safe) and 64-bit file offsets (LFS default).
1469 * The GNU C Library now loads audit modules listed in the DT_AUDIT and
1470   DT_DEPAUDIT dynamic section entries of the main executable.
1472 * powerpc64le supports IEEE128 long double libm/libc redirects when
1473   using -mabi=ieeelongdouble to compile C code on supported GCC
1474   toolchains.  It is recommended to use GCC 8 or newer when testing
1475   this option.
1477 * To help detect buffer overflows and other out-of-bounds accesses
1478   several APIs have been annotated with GCC 'access' attribute.  This
1479   should help GCC 10 issue better warnings.
1481 * On Linux, functions pthread_attr_setsigmask_np and
1482   pthread_attr_getsigmask_np have been added.  They allow applications
1483   to specify the signal mask of a thread created with pthread_create.
1485 * The GNU C Library now provides the header file <sys/single_threaded.h>
1486   which declares the variable __libc_single_threaded.  Applications are
1487   encouraged to use this variable for single-thread optimizations,
1488   instead of weak references to symbols historically defined in
1489   libpthread.
1491 * The functions sigabbrev_np and sigdescr_np have been added.  The
1492   sigabbrev_np function returns the abbreviated signal name (e.g. "HUP" for
1493   SIGHUP) while sigdescr_np returns a string describing the signal number
1494   (e.g "Hangup" for SIGHUP).  Different than strsignal, sigdescr_np does not
1495   attempt to translate the return description, both functions return
1496   NULL for an invalid signal number.
1498   They should be used instead of sys_siglist or sys_sigabbrev and they
1499   are both thread and async-signal safe.  These functions are GNU extensions.
1501 * The functions strerrorname_np and strerrordesc_np have been added.  The
1502   strerroname_np function returns error number name (e.g. "EINVAL" for EINVAL)
1503   while strerrordesc_np returns a string describing the error number
1504   (e.g "Invalid argument" for EINVAL).  Different than strerror,
1505   strerrordesc_np does not attempt to translate the return description, both
1506   functions return NULL for an invalid error number.
1508   They should be used instead of sys_errlist and sys_nerr, both are
1509   thread and async-signal safe.  These functions are GNU extensions.
1511 * AArch64 now supports standard branch protection security hardening
1512   in glibc when it is built with a GCC that is configured with
1513   --enable-standard-branch-protection (or if -mbranch-protection=standard
1514   flag is passed when building both GCC target libraries and glibc,
1515   in either case a custom GCC is needed).  This includes branch target
1516   identification (BTI) and pointer authentication for return addresses
1517   (PAC-RET).  They require armv8.5-a and armv8.3-a architecture
1518   extensions respectively for the protection to be effective,
1519   otherwise the used instructions are nops.  User code can use PAC-RET
1520   without libc support, but BTI requires a libc that is built with BTI
1521   support, otherwise runtime objects linked into user code will not be
1522   BTI compatible.
1524 Deprecated and removed features, and other changes affecting compatibility:
1526 * Remove configure option --enable-obsolete-rpc.  Sun RPC is removed
1527   from glibc.  This includes the rpcgen program, librpcsvc, and the Sun
1528   RPC header files.  Backward compatibility for old programs is kept
1529   only for architectures and ABIs that have been added in or before
1530   glibc 2.31.  New programs need to use TI-RPC
1531   <http://git.linux-nfs.org/?p=steved/libtirpc.git;a=summary> and
1532   rpcsvc-proto <https://github.com/thkukuk/rpcsvc-proto>.
1534 * Remove configure option --enable-obsolete-nsl.  libnsl is only built
1535   as shared library for backward compatibility and the NSS modules "nis"
1536   and "nisplus" are not built at all and libnsl's headers aren't
1537   installed.  This compatibility is kept only for architectures and ABIs
1538   that have been added in or before version 2.28.  Replacement
1539   implementations based on TI-RPC, which additionally support IPv6, are
1540   available from <https://github.com/thkukuk/>.  This change does not
1541   affect the "compat" NSS module, which does not depend on libnsl
1542   since 2.27 and thus can be used without NIS.
1544 * The deprecated <sys/sysctl.h> header and the sysctl function have been
1545   removed.  To support old binaries, the sysctl function continues to
1546   exist as a compatibility symbol (on those architectures which had it),
1547   but always fails with ENOSYS.  This reflects the removal of the system
1548   call from all architectures, starting with Linux 5.5.
1550 * The sstk function is no longer available to newly linked binaries.
1551   Its implementation always returned with a failure, and the function
1552   was not declared in any header file.
1554 * The legacy signal handling functions siginterrupt, sigpause, sighold,
1555   sigrelse, sigignore and sigset, and the sigmask macro have been
1556   deprecated.  Applications should use the sigsuspend, sigprocmask and
1557   sigaction functions instead.
1559 * ldconfig now defaults to the new format for ld.so.cache. glibc has
1560   already supported this format for almost 20 years.
1562 * The deprecated arrays sys_siglist, _sys_siglist, and sys_sigabbrev
1563   are no longer available to newly linked binaries, and their declarations
1564   have been removed from <string.h>.  They are exported solely as
1565   compatibility symbols to support old binaries.  All programs should use
1566   strsignal instead.
1568 * The deprecated symbols sys_errlist, _sys_errlist, sys_nerr, and _sys_nerr
1569   are no longer available to newly linked binaries, and their declarations
1570   have been removed from <stdio.h>.  They are exported solely as
1571   compatibility symbols to support old binaries.  All programs should use
1572   strerror or strerror_r instead.
1574 * Both strerror and strerror_l now share the same internal buffer in the
1575   calling thread, meaning that the returned string pointer may be invalided
1576   or contents might be overwritten on subsequent calls in the same thread or
1577   if the thread is terminated.  It makes strerror MT-safe.
1579 * Using weak references to libpthread functions such as pthread_create
1580   or pthread_key_create to detect the singled-threaded nature of a
1581   program is an obsolescent feature.  Future versions of glibc will
1582   define pthread_create within libc.so.6 itself, so such checks will
1583   always flag the program as multi-threaded.  Applications should check
1584   the __libc_single_threaded variable declared in
1585   <sys/single_threaded.h> instead.
1587 * The "files" NSS module no longer supports the "key" database (used for
1588   secure RPC).  The contents of the /etc/publickey file will be ignored,
1589   regardless of the settings in /etc/nsswitch.conf.  (This method of
1590   storing RPC keys only supported the obsolete and insecure AUTH_DES
1591   flavor of secure RPC.)
1593 * The __morecore and __after_morecore_hook malloc hooks and the default
1594   implementation __default_morecore have been deprecated.  Applications
1595   should use malloc interposition to change malloc behavior, and mmap to
1596   allocate anonymous memory.  A future version of glibc may require that
1597   applications which use the malloc hooks must preload a special shared
1598   object, to enable the hooks.
1600 * The hesiod NSS module has been deprecated and will be removed in a
1601   future version of glibc.  System administrators are encouraged to
1602   switch to other approaches for networked account databases, such as
1603   LDAP.
1605 Changes to build and runtime requirements:
1607 * powerpc64le requires GCC 7.4 or newer.  This is required for supporting
1608   long double redirects.
1610 Security related changes:
1612   CVE-2016-10228: An infinite loop has been fixed in the iconv program when
1613   invoked with the -c option and when processing invalid multi-byte input
1614   sequences.  Reported by Jan Engelhardt.
1616   CVE-2020-10029: Trigonometric functions on x86 targets suffered from stack
1617   corruption when they were passed a pseudo-zero argument.  Reported by Guido
1618   Vranken / ForAllSecure Mayhem.
1620   CVE-2020-1752: A use-after-free vulnerability in the glob function when
1621   expanding ~user has been fixed.
1623   CVE-2020-6096: A signed comparison vulnerability in the ARMv7 memcpy and
1624   memmove functions has been fixed.  Discovered by Jason Royes and Samual
1625   Dytrych of the Cisco Security Assessment and Penetration Team (See
1626   TALOS-2020-1019).
1628 The following bugs are resolved with this release:
1630   [9809] localedata: ckb_IQ: new Kurdish Sorani locale
1631   [10441] manual: Backtraces code example lacks error checking
1632   [10815] librt: [timer_create / SIGEV_THREAD] signalmask of
1633     timer_sigev_thread dangerous
1634   [14231] stdio: stdio-common tests memory requirements
1635   [14578] libc: /proc-based emulation for lchmod, fchmodat
1636   [16272] dynamic-link: dlopen()ing a DT_FILTER library crashes if
1637     filtee has constructor
1638   [19519] locale: iconv(1) with -c option hangs on illegal multi-byte
1639     sequences (CVE-2016-10228)
1640   [19737] admin: Doc page “20.5.2 Infinity and NaN” has incorrect HTML
1641     character entities for infinity & pi
1642   [20338] libc: Parsing of /etc/gshadow can return bad pointers causing
1643     segfaults in applications
1644   [20543] libc: Please move from .gnu.linkonce to comdat
1645   [22489] network: gcc warns about implicit conversion in
1646     ICMP6_FILTER_SETPASS with -Wsign-conversion
1647   [22525] localedata: or_IN  LC_COLLATE does not use copy "iso14651_t1"
1648   [23294] math: Complex _FloatN functions are redirected to the wrong
1649     function with -mlong-double-64
1650   [23296] libc: Data race in setting function descriptor during lazy
1651     binding
1652   [23668] dynamic-link: ldconfig: Default to the new format for
1653     ld.so.cache
1654   [23819] hurd: hurd: Add C11 thread support
1655   [23990] build: test-container error out on failure to exec child.
1656   [23991] build: shell-container typo in run_command_array
1657   [24638] manual: Error in example of parsing a template string
1658   [24654] manual: Wrong declaration of wcschr in libc manual
1659   [24943] dynamic-link: Support DT_AUDIT, DT_DEPAUDIT in the dynamic
1660     linker
1661   [25051] dynamic-link: aarch64, powerpc64 uses surplus static tls for
1662     dynamically loaded dsos
1663   [25098] nptl: nptl: ctype classification functions are not AS-Safe
1664   [25219] libc: improve out-of-bounds checking with GCC 10 attribute
1665     access
1666   [25262] libc: getcontext/setcontext/swapcontext unnecessarily save and
1667     restore EAX, ECX and EDX
1668   [25397] dynamic-link: Legacy bitmap doesn't cover jitted code
1669   [25414] glob: 'glob' use-after-free bug (CVE-2020-1752)
1670   [25420] network: Race condition in resolv_conf.c can result in caching
1671     stale configuration forever
1672   [25487] math: sinl() stack corruption from crafted input
1673     (CVE-2020-10029)
1674   [25506] build: configure: broken detection of STT_GNU_IFUNC when GCC
1675     defaults to PIE
1676   [25523] libc: MIPS/Linux inline syscall template is miscompiled
1677   [25620] libc: Signed comparison vulnerability in the ARMv7 memcpy()
1678     (CVE-2020-6096)
1679   [25623] libc: test-sysvmsg, test-sysvsem, test-sysvshm fail with 2.31
1680     on 32 bit and old kernel
1681   [25635] libc: arm: Wrong sysdep order selection for soft-fp
1682   [25639] localedata: Some names of days and months wrongly spelt in
1683     Occitan
1684   [25657] libc: sigprocmask() and sigisemptyset() manipulate different
1685     amount of sigset_t bytes
1686   [25691] stdio: printf: memory leak when printing long multibyte
1687     strings
1688   [25715] libc: system() returns wrong errors when posix_spawn fails
1689   [25733] malloc: mallopt(M_MXFAST) can set global_max_fast to 0
1690   [25734] locale: mbrtowc with Big5-HKSCS fails to reset conversion
1691     state for conversions that produce two Unicode code points
1692   [25765] nptl: Incorrect futex syscall in __pthread_disable_asynccancel
1693     for linux x86_64 leads to livelock
1694   [25788] dynamic-link: [i386] -fno-omit-frame-pointer in CFLAGS causes
1695     test failures, invalid instruction in ld.so
1696   [25790] glob: Typo in tst-fnmatch.input
1697   [25810] libc: x32: Incorrect syscall entries with pointer, off_t and
1698     size_t
1699   [25819] localedata: Update locale data to Unicode 13.0.0
1700   [25824] libc: Abnormal function of strnlen in aarch64
1701   [25887] dynamic-link: Wasted space in _dl_x86_feature_1[1]
1702   [25896] libc: Incorrect prctl
1703   [25902] libc: Bad LOADARGS_N
1704   [25905] dynamic-link: VSX registers are corrupted during PLT
1705     resolution when glibc is built with --disable-multi-arch and --with-
1706     cpu=power9
1707   [25933] string: Off by one error in __strncmp_avx2 when
1708     length=VEC_SIZE*4 and strings are at page boundaries can cause a
1709     segfault
1710   [25942] nptl: Deadlock on stack_cache_lock between __nptl_setxid and
1711     exiting detached thread
1712   [25966] libc: Incorrect access of __x86_shared_non_temporal_threshold
1713     for x32
1714   [25976] nss: internal_end*ent in nss_compat may clobber errno, hiding
1715     ERANGE
1716   [25999] nptl: Use-after-free issue in pthread_getaddr_default_np
1717   [26073] math: getpayload() has wrong return value
1718   [26076] dynamic-link: dlmopen crashes after failing to load
1719     dependencies in audit mode
1720   [26120] localedata: column width of  of some Korean
1721     JUNGSEONG/JONGSEONG characters wrong (should be 0)
1722   [26128] libc: Incorrect bit_cpu_CLFLUSHOPT
1723   [26133] libc: Incorrect need_arch_feature_F16C
1724   [26137] libc: strtod() triggers exception FE_INEXACT on reasonable
1725     input
1726   [26149] libc: PKU is usable only if OSPKE is set
1727   [26173] libc: powerpc64*: Add @notoc to calls to functions that do not
1728     preserve r2
1729   [26208] libc: Incorrect bit_cpu_CLFSH
1730   [26210] network: Incorrect use of hidden symbols for global sunrpc
1731     variables
1732   [26211] stdio: printf integer overflow calculating allocation size
1733   [26214] stdio: printf_fp double free
1734   [26215] stdio: printf_fp memory leak
1735   [26232] time: FAIL: support/tst-timespec for 32-bit targets
1736   [26258] nss: nss_compat should not read input files with mmap
1737   [26332] string: Incorrect cache line size load causes memory
1738     corruption in memset
1741 Version 2.31
1743 Major new features:
1745 * The GNU C Library now supports a feature test macro _ISOC2X_SOURCE to
1746   enable features from the draft ISO C2X standard.  Only some features from
1747   this draft standard are supported by the GNU C Library, and as the draft
1748   is under active development, the set of features enabled by this macro is
1749   liable to change.  Features from C2X are also enabled by _GNU_SOURCE, or
1750   by compiling with "gcc -std=gnu2x".
1752 * The <math.h> functions that round their results to a narrower type now
1753   have corresponding type-generic macros in <tgmath.h>, as defined in TS
1754   18661-1:2014 and TS 18661-3:2015 as amended by the resolution of
1755   Clarification Request 13 to TS 18661-3.
1757 * The function pthread_clockjoin_np has been added, enabling join with a
1758   terminated thread with a specific clock.  It allows waiting against
1759   CLOCK_MONOTONIC and CLOCK_REALTIME.  This function is a GNU extension.
1761 * New locale added: mnw_MM (Mon language spoken in Myanmar).
1763 * The DNS stub resolver will optionally send the AD (authenticated data) bit
1764   in queries if the trust-ad option is set via the options directive in
1765   /etc/resolv.conf (or if RES_TRUSTAD is set in _res.options).  In this
1766   mode, the AD bit, as provided by the name server, is available to
1767   applications which call res_search and related functions.  In the default
1768   mode, the AD bit is not set in queries, and it is automatically cleared in
1769   responses, indicating a lack of DNSSEC validation.  (Therefore, the name
1770   servers and the network path to them are treated as untrusted.)
1772 Deprecated and removed features, and other changes affecting compatibility:
1774 * The totalorder and totalordermag functions, and the corresponding
1775   functions for other floating-point types, now take pointer arguments to
1776   avoid signaling NaNs possibly being converted to quiet NaNs in argument
1777   passing.  This is in accordance with the resolution of Clarification
1778   Request 25 to TS 18661-1, as applied for C2X.  Existing binaries that pass
1779   floating-point arguments directly will continue to work.
1781 * The obsolete function stime is no longer available to newly linked
1782   binaries, and its declaration has been removed from <time.h>.
1783   Programs that set the system time should use clock_settime instead.
1785 * We plan to remove the obsolete function ftime, and the header <sys/timeb.h>,
1786   in a future version of glibc.  In this release, the header still exists
1787   but calling ftime will cause a compiler warning.  All programs should use
1788   gettimeofday or clock_gettime instead.
1790 * The gettimeofday function no longer reports information about a
1791   system-wide time zone.  This 4.2-BSD-era feature has been deprecated for
1792   many years, as it cannot handle the full complexity of the world's
1793   timezones, but hitherto we have supported it on a best-effort basis.
1794   Changes required to support 64-bit time_t on 32-bit architectures have
1795   made this no longer practical.
1797   As of this release, callers of gettimeofday with a non-null 'tzp' argument
1798   should expect to receive a 'struct timezone' whose tz_minuteswest and
1799   tz_dsttime fields are zero.  (For efficiency reasons, this does not always
1800   happen on a few Linux-based ports.  This will be corrected in a future
1801   release.)
1803   All callers should supply a null pointer for the 'tzp' argument to
1804   gettimeofday.  For accurate information about the time zone associated
1805   with the current time, use the localtime function.
1807   gettimeofday itself is obsolescent according to POSIX.  We have no plans
1808   to remove access to this function, but portable programs should consider
1809   using clock_gettime instead.
1811 * The settimeofday function can still be used to set a system-wide time
1812   zone when the operating system supports it.  This is because the Linux
1813   kernel reused the API, on some architectures, to describe a system-wide
1814   time-zone-like offset between the software clock maintained by the kernel,
1815   and the "RTC" clock that keeps time when the system is shut down.
1817   However, to reduce the odds of this offset being set by accident,
1818   settimeofday can no longer be used to set the time and the offset
1819   simultaneously.  If both of its two arguments are non-null, the call
1820   will fail (setting errno to EINVAL).
1822   Callers attempting to set this offset should also be prepared for the call
1823   to fail and set errno to ENOSYS; this already happens on the Hurd and on
1824   some Linux architectures.  The Linux kernel maintainers are discussing a
1825   more principled replacement for the reused API.  After a replacement
1826   becomes available, we will change settimeofday to fail with ENOSYS on all
1827   platforms when its 'tzp' argument is not a null pointer.
1829   settimeofday itself is obsolescent according to POSIX.  Programs that set
1830   the system time should use clock_settime and/or the adjtime family of
1831   functions instead.  We may cease to make settimeofday available to newly
1832   linked binaries after there is a replacement for Linux's time-zone-like
1833   offset API.
1835 * SPARC ISA v7 is no longer supported.  v8 is still supported, but only if
1836   the optional CAS instruction is implemented (for instance, LEON processors
1837   are still supported, but SuperSPARC processors are not).
1839   As the oldest 64-bit SPARC ISA is v9, this only affects 32-bit
1840   configurations.
1842 * If a lazy binding failure happens during dlopen, during the execution of
1843   an ELF constructor, the process is now terminated.  Previously, the
1844   dynamic loader would return NULL from dlopen, with the lazy binding error
1845   captured in a dlerror message.  In general, this is unsafe because
1846   resetting the stack in an arbitrary function call is not possible.
1848 * For MIPS hard-float ABIs, the GNU C Library will be configured to need an
1849   executable stack unless explicitly configured at build time to require
1850   minimum kernel version 4.8 or newer.  This is because executing
1851   floating-point branches on a non-executable stack on Linux kernels prior to
1852   4.8 can lead to application crashes for some MIPS configurations. While
1853   currently PT_GNU_STACK is not widely used on MIPS, future releases of GCC are
1854   expected to enable non-executable stack by default  with PT_GNU_STACK by
1855   default and is thus likely to trigger a crash on older kernels.
1857   The GNU C Library can be built with --enable-kernel=4.8.0 in order to keep a
1858   non-executable stack while dropping support for older kernels.
1860 * System call wrappers for time system calls now use the new time64 system
1861   calls when available. On 32-bit targets, these wrappers attempt to call
1862   the new system calls first and fall back to the older 32-bit time system
1863   calls if they are not present.  This may cause issues in environments
1864   that cannot handle unsupported system calls gracefully by returning
1865   -ENOSYS. Seccomp sandboxes are affected by this issue.
1867 Changes to build and runtime requirements:
1869 * It is no longer necessary to have recent Linux kernel headers to build
1870   working (non-stub) system call wrappers on all architectures except 64-bit
1871   RISC-V.  64-bit RISC-V requires a minimum kernel headers version of 5.0.
1873 * The ChangeLog file is no longer present in the toplevel directory of the
1874   source tree.  ChangeLog files are located in the ChangeLog.old directory as
1875   ChangeLog.N where the highest N has the latest entries.
1877 Security related changes:
1879   CVE-2020-1751: A defect in the PowerPC backtrace function could cause an
1880   out-of-bounds write when executed in a signal frame context.
1882   CVE-2019-19126: ld.so failed to ignore the LD_PREFER_MAP_32BIT_EXEC
1883   environment variable during program execution after a security
1884   transition, allowing local attackers to restrict the possible mapping
1885   addresses for loaded libraries and thus bypass ASLR for a setuid
1886   program.  Reported by Marcin Kościelnicki.
1888 The following bugs are resolved with this release:
1890   [12031] localedata: iconv -t ascii//translit with Greek characters
1891   [15813] libc: Multiple issues in __gen_tempname
1892   [17726] libc: [arm, sparc] profil_counter should be compat symbol
1893   [18231] libc: ipc_perm struct's mode member has wrong type in sys/ipc.h
1894   [19767] libc: vdso is not used with static linking
1895   [19903] hurd: Shared mappings not being inherited by children processes
1896   [20358] network: RES_USE_DNSSEC sets DO; should also have a way to set AD
1897   [20839] dynamic-link: Incomplete rollback of dynamic linker state on
1898     linking failure
1899   [23132] localedata: Missing transliterations in Miscellaneous Mathematical
1900     Symbols-A/B Unicode blocks
1901   [23518] libc: Eliminate __libc_utmp_jump_table
1902   [24026] malloc: malloc_info() returns wrong numbers
1903   [24054] localedata: Many locales are missing date_fmt
1904   [24214] dynamic-link: user defined ifunc resolvers may run in ldd mode
1905   [24304] dynamic-link: Lazy binding failure during ELF
1906     constructors/destructors is not fatal
1907   [24376] libc: RISC-V symbol size confusion with _start
1908   [24682] localedata: zh_CN first weekday should be Monday per GB/T
1909     7408-2005
1910   [24824] libc: test-in-container does not install charmap files compatible
1911     with localedef
1912   [24844] regex: regex bad pointer / leakage if malloc fails
1913   [24867] malloc: Unintended malloc_info formatting changes
1914   [24879] libc: login: utmp alarm timer can arrive after lock acquisition
1915   [24880] libc: login: utmp implementation uses struct flock with fcntl64
1916   [24882] libc: login: pututline uses potentially outdated cache
1917   [24899] libc: Missing nonstring attributes in <utmp.h>, <utmpx.h>
1918   [24902] libc: login: Repeating pututxline on EINTR/EAGAIN causes stale
1919     utmp entries
1920   [24916] dynamic-link: [MIPS] Highest EI_ABIVERSION value not raised to
1921     ABSOLUTE ABI
1922   [24930] dynamic-link: dlopen of PIE executable can result in
1923     _dl_allocate_tls_init assertion failure
1924   [24950] localedata: Top-of-tree glibc does not build with top-of-tree GCC
1925     (stringop-overflow error)
1926   [24959] time: librt IFUNC resolvers for clock_gettime and clock_*
1927     functions other  can lead to crashes
1928   [24967] libc: jemalloc static linking causes runtime failure
1929   [24986] libc: alpha: new getegid, geteuid and getppid syscalls used
1930     unconditionally
1931   [25035] libc: sbrk() failure handled poorly in tunables_strdup
1932   [25087] dynamic-link: ldconfig mishandles unusual .dynstr placement
1933   [25097] libc: new -Warray-bounds with GCC 10
1934   [25112] dynamic-link: dlopen must not make new objects accessible when it
1935     still can fail with an error
1936   [25139] localedata: Please add the new mnw_MM locale
1937   [25149] regex: Array bounds violation in proceed_next_node
1938   [25157] dynamic-link: Audit cookie for the dynamic loader is not
1939     initialized correctly
1940   [25189] libc: glibc's __glibc_has_include causes issues with clang
1941     -frewrite-includes
1942   [25194] malloc: malloc.c: do_set_mxfast incorrectly casts the mallopt
1943     value to an unsigned
1944   [25204] dynamic-link: LD_PREFER_MAP_32BIT_EXEC not ignored in setuid
1945     binaries (CVE-2019-19126)
1946   [25225] libc: ld.so fails to link on x86 if GCC defaults to -fcf-
1947     protection
1948   [25226] string: strstr: Invalid result if needle crosses page on s390-z15
1949     ifunc variant.
1950   [25232] string: <string.h> does not enable const correctness for strchr et
1951     al. for Clang++
1952   [25233] localedata: Consider "." as the thousands separator for sl_SI
1953     (Slovenian)
1954   [25241] nptl: __SIZEOF_PTHREAD_MUTEX_T defined twice for x86
1955   [25251] build: Failure to run tests when CFLAGS contains -DNDEBUG.
1956   [25271] libc: undeclared identifier PTHREAD_MUTEX_DEFAULT when compiling
1957     with -std=c11
1958   [25323] localedata: km_KH: d_t_fmt contains "m" instead of "%M"
1959   [25324] localedata: lv_LV: d_t_fmt contains suspicious words in the time
1960     part
1961   [25396] dynamic-link: Failing dlopen can leave behind dangling GL
1962     (dl_initfirst) link map pointer
1963   [25401] malloc: pvalloc must not have __attribute_alloc_size__
1964   [25423] libc: Array overflow in backtrace on powerpc
1965   [25425] network: Missing call to __resolv_context_put in
1966     getaddrinfo.c:gethosts
1969 Version 2.30
1971 Major new features:
1973 * Unicode 12.1.0 Support: Character encoding, character type info, and
1974   transliteration tables are all updated to Unicode 12.1.0, using
1975   generator scripts contributed by Mike FABIAN (Red Hat).
1977 * The dynamic linker accepts the --preload argument to preload shared
1978   objects, in addition to the LD_PRELOAD environment variable.
1980 * The twalk_r function has been added.  It is similar to the existing
1981   twalk function, but it passes an additional caller-supplied argument
1982   to the callback function.
1984 * On Linux, the getdents64, gettid, and tgkill functions have been added.
1986 * Minguo (Republic of China) calendar support has been added as an
1987   alternative calendar for the following locales: zh_TW, cmn_TW, hak_TW,
1988   nan_TW, lzh_TW.
1990 * The entry for the new Japanese era has been added for ja_JP locale.
1992 * Memory allocation functions malloc, calloc, realloc, reallocarray, valloc,
1993   pvalloc, memalign, and posix_memalign fail now with total object size
1994   larger than PTRDIFF_MAX.  This is to avoid potential undefined behavior with
1995   pointer subtraction within the allocated object, where results might
1996   overflow the ptrdiff_t type.
1998 * The dynamic linker no longer refuses to load objects which reference
1999   versioned symbols whose implementation has moved to a different soname
2000   since the object has been linked.  The old error message, symbol
2001   FUNCTION-NAME, version SYMBOL-VERSION not defined in file DSO-NAME with
2002   link time reference, is gone.
2004 * Add new POSIX-proposed pthread_cond_clockwait, pthread_mutex_clocklock,
2005   pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock and sem_clockwait
2006   functions.  These behave similarly to their "timed" equivalents, but also
2007   accept a clockid_t parameter to determine which clock their timeout should
2008   be measured against.  All functions allow waiting against CLOCK_MONOTONIC
2009   and CLOCK_REALTIME.  The decision of which clock to be used is made at the
2010   time of the wait (unlike with pthread_condattr_setclock, which requires
2011   the clock choice at initialization time).
2013 * On AArch64 the GNU IFUNC resolver call ABI changed: old resolvers still
2014   work, new resolvers can use a second argument which can be extended in
2015   the future, currently it contains the AT_HWCAP2 value.
2017 Deprecated and removed features, and other changes affecting compatibility:
2019 * The copy_file_range function fails with ENOSYS if the kernel does not
2020   support the system call of the same name.  Previously, user space
2021   emulation was performed, but its behavior did not match the kernel
2022   behavior, which was deemed too confusing.  Applications which use the
2023   copy_file_range function can no longer rely on glibc to provide a fallback
2024   on kernels that do not support the copy_file_range system call, and if
2025   this function returns ENOSYS, they will need to use their own fallback.
2026   Support for copy_file_range for most architectures was added in version
2027   4.5 of the mainline Linux kernel.
2029 * The functions clock_gettime, clock_getres, clock_settime,
2030   clock_getcpuclockid, clock_nanosleep were removed from the librt library
2031   for new applications (on architectures which had them).  Instead, the
2032   definitions in libc will be used automatically, which have been available
2033   since glibc 2.17.
2035 * The obsolete and never-implemented XSI STREAMS header files <stropts.h>
2036   and <sys/stropts.h> have been removed.
2038 * Support for the "inet6" option in /etc/resolv.conf and the RES_USE_INET6
2039   resolver flag (deprecated in glibc 2.25) have been removed.
2041 * The obsolete RES_INSECURE1 and RES_INSECURE2 option flags for the DNS stub
2042   resolver have been removed from <resolv.h>.
2044 * With --enable-bind-now, installed programs are now linked with the
2045   BIND_NOW flag.
2047 * Support for the PowerPC SPE ISA extension (powerpc-*-*gnuspe*
2048   configurations) has been removed, following the deprecation of this
2049   subarchitecture in version 8 of GCC, and its removal in version 9.
2051 * On 32-bit Arm, support for the port-based I/O emulation and the <sys/io.h>
2052   header have been removed.
2054 * The Linux-specific <sys/sysctl.h> header and the sysctl function have been
2055   deprecated and will be removed from a future version of glibc.
2056   Application should directly access /proc instead.  For obtaining random
2057   bits, the getentropy function can be used.
2059 Changes to build and runtime requirements:
2061 * GCC 6.2 or later is required to build the GNU C Library.
2063   Older GCC versions and non-GNU compilers are still supported when
2064   compiling programs that use the GNU C Library.
2066 Security related changes:
2068   CVE-2019-7309: x86-64 memcmp used signed Jcc instructions to check
2069   size.  For x86-64, memcmp on an object size larger than SSIZE_MAX
2070   has undefined behavior.  On x32, the size_t argument may be passed
2071   in the lower 32 bits of the 64-bit RDX register with non-zero upper
2072   32 bits.  When it happened with the sign bit of RDX register set,
2073   memcmp gave the wrong result since it treated the size argument as
2074   zero.  Reported by H.J. Lu.
2076   CVE-2019-9169: Attempted case-insensitive regular-expression match
2077   via proceed_next_node in posix/regexec.c leads to heap-based buffer
2078   over-read.  Reported by Hongxu Chen.
2080 The following bugs are resolved with this release:
2082   [2872] locale: Transliteration Cyrillic -> ASCII fails
2083   [6399] libc: gettid() should have a wrapper
2084   [16573] malloc: mtrace hangs when MALLOC_TRACE is defined
2085   [16976] glob: fnmatch unbounded stack VLA for collating symbols
2086   [17396] localedata: globbing for locale by [[.collating-element.]]
2087   [18035] dynamic-link: pldd does no longer work, enters infinite loop
2088   [18465] malloc: memusagestat is built using system C library
2089   [18830] locale: iconv -c -f ascii with >buffer size worth of input before
2090     invalid input drops valid char
2091   [20188] nptl: libpthread IFUNC resolver for vfork can lead to crash
2092   [20568] locale: Segfault with wide characters and setlocale/fgetwc/UTF-8
2093   [21897] localedata: Afar locales: Fix mon, abmon, and abday
2094   [22964] localedata: The Japanese Era name will be changed on May 1, 2019
2095   [23352] malloc: __malloc_check_init still defined in public header
2096     malloc.h.
2097   [23403] nptl: Wrong alignment of TLS variables
2098   [23501] libc: nftw() doesn't return dangling symlink's inode
2099   [23733] malloc: Check the count before calling tcache_get()
2100   [23741] malloc: Missing __attribute_alloc_size__ in many allocation
2101     functions
2102   [23831] localedata: nl_NL missing LC_NUMERIC thousands_sep
2103   [23844] nptl: pthread_rwlock_trywrlock results in hang
2104   [23983] argparse: Missing compat versions of argp_failure and argp_error
2105     for long double = double
2106   [23984] libc: Missing compat versions of err.h and error.h functions for
2107     long double = double
2108   [23996] localedata: Dutch salutations
2109   [24040] libc: riscv64: unterminated call chain in __thread_start
2110   [24047] network: libresolv should use IP_RECVERR/IPV6_RECVERR to avoid
2111     long timeouts
2112   [24051] stdio: puts and putchar output to _IO_stdout instead of stdout
2113   [24059] nss: nss_files: get_next_alias calls fgets_unlocked without
2114     checking for NULL.
2115   [24114] regex: regexec buffer read overrun in "grep -i
2116     '\(\(\)*.\)*\(\)\(\)\1'"
2117   [24122] libc: Segfaults if 0 returned from la_version
2118   [24153] stdio: Some input functions do not react to stdin assignment
2119   [24155] string: x32 memcmp can treat positive length as 0 (if sign bit in
2120     RDX is set) (CVE-2019-7309)
2121   [24161] nptl: __run_fork_handlers self-deadlocks in malloc/tst-mallocfork2
2122   [24164] libc: Systemtap probes need to use "nr" constraint on 32-bit Arm,
2123     not the default "nor"
2124   [24166] dynamic-link: Dl_serinfo.dls_serpath[1] in dlfcn.h causes UBSAN
2125     false positives, change to modern flexible array
2126   [24180] nptl: pthread_mutex_trylock does not use the correct order of
2127     instructions while maintaining the robust mutex list due to missing
2128     compiler barriers.
2129   [24194] librt: Non-compatibility symbols for clock_gettime etc. cause
2130     unnecessary librt dependencies
2131   [24200] localedata: Revert first_weekday removal in en_IE locale
2132   [24211] nptl: Use-after-free in Systemtap probe in pthread_join
2133   [24215] nptl: pthread_timedjoin_np should be a cancellation point
2134   [24216] malloc: Check for large bin list corruption when inserting
2135     unsorted chunk
2136   [24228] stdio: old x86 applications that use legacy libio crash on exit
2137   [24231] dynamic-link: [sparc64] R_SPARC_H34 implementation falls through
2138     to R_SPARC_H44
2139   [24293] localedata: Missing Minguo calendar support for TW locales
2140   [24296] localedata: Orthographic mistakes in 'day' and 'abday' sections in
2141     tt_RU (Tatar) locale
2142   [24307] localedata: Update locale data to Unicode 12.0.0
2143   [24323] dynamic-link: dlopen should not be able open PIE objects
2144   [24335] build: "Obsolete types detected" with Linux 5.0 headers
2145   [24369] localedata: Orthographic mistakes in 'mon' and 'abmon' sections in
2146     tt_RU (Tatar) locale
2147   [24370] localedata: Add lang_name for tt_RU locale
2148   [24372] locale: Binary locale files are not architecture independent
2149   [24394] time: strptime %Ey mis-parses final year of era
2150   [24476] dynamic-link: __libc_freeres triggers bad free in libdl if dlerror
2151     was not used
2152   [24506] dynamic-link: FAIL: elf/tst-pldd with --enable-hardcoded-path-in-
2153     tests
2154   [24531] malloc: Malloc tunables give tcache assertion failures
2155   [24532] libc: conform/arpa/inet.h failures due to linux kernel 64-bit
2156     time_t changes
2157   [24535] localedata: Update locale data to Unicode 12.1.0
2158   [24537] build: nptl/tst-eintr1 test case can hit task limits on some
2159     kernels and break testing
2160   [24544] build: elf/tst-pldd doesn't work if you install with a --prefix
2161   [24556] build: [GCC 9] error: ‘%s’ directive argument is null
2162     [-Werror=format-overflow=]
2163   [24570] libc: alpha: compat msgctl uses __IPC_64
2164   [24584] locale: Data race in __wcsmbs_clone_conv
2165   [24588] stdio: Remove codecvt vtables from libio
2166   [24603] math: sysdeps/ieee754/dbl-64/branred.c is slow when compiled with
2167     -O3 -march=skylake
2168   [24614] localedata: nl_NL LC_MONETARY doesn't match CLDR 35
2169   [24632] stdio: Old binaries which use freopen with default stdio handles
2170     crash
2171   [24640] libc: __ppc_get_timebase_freq() always return 0 when using static
2172     linked glibc
2173   [24652] localedata: szl_PL spelling correction
2174   [24695] nss: nss_db: calling getpwent after endpwent crashes
2175   [24696] nss: endgrent() clobbers errno=ERRNO for 'group: db files' entry
2176     in /etc/nsswitch.conf
2177   [24699] libc: mmap64 with very large offset broken on MIPS64 n32
2178   [24740] libc: getdents64 type confusion
2179   [24741] dynamic-link: ld.so should not require that a versioned symbol is
2180     always implemented in the same library
2181   [24744] libc: Remove copy_file_range emulation
2182   [24757] malloc: memusagestat is linked against system libpthread
2183   [24794] libc: Partial test suite run builds corrupt test-in-container
2184     testroot
2187 Version 2.29
2189 Major new features:
2191 * The getcpu wrapper function has been added, which returns the currently
2192   used CPU and NUMA node.  This function is Linux-specific.
2194 * A new convenience target has been added for distribution maintainers
2195   to build and install all locales as directories with files.  The new
2196   target is run by issuing the following command in your build tree:
2197   'make localedata/install-locale-files', with an optional DESTDIR
2198   to set the install root if you wish to install into a non-default
2199   configured location.
2201 * Optimized generic exp, exp2, log, log2, pow, sinf, cosf, sincosf and tanf.
2203 * The reallocarray function is now declared under _DEFAULT_SOURCE, not just
2204   for _GNU_SOURCE, to match BSD environments.
2206 * For powercp64le ABI, Transactional Lock Elision is now enabled iff kernel
2207   indicates that it will abort the transaction prior to entering the kernel
2208   (PPC_FEATURE2_HTM_NOSC on hwcap2).  On older kernels the transaction is
2209   suspended, and this caused some undefined side-effects issues by aborting
2210   transactions manually.  Glibc avoided it by abort transactions manually on
2211   each syscall, but it lead to performance issues on newer kernels where the
2212   HTM state is saved and restore lazily (the state being saved even when the
2213   process actually does not use HTM).
2215 * The functions posix_spawn_file_actions_addchdir_np and
2216   posix_spawn_file_actions_addfchdir_np have been added, enabling
2217   posix_spawn and posix_spawnp to run the new process in a different
2218   directory.  These functions are GNU extensions.  The function
2219   posix_spawn_file_actions_addchdir_np is similar to the Solaris function
2220   of the same name.
2222 * The popen and system do not run atfork handlers anymore (BZ#17490).
2223   Although it is a possible POSIX violation, the POSIX rationale in
2224   pthread_atfork documentation regarding atfork handlers is to handle
2225   inconsistent mutex state after a fork call in a multi-threaded process.
2226   In both popen and system there is no direct access to user-defined mutexes.
2228 * Support for the C-SKY ABIV2 running on Linux has been added.  This port
2229   requires at least binutils-2.32, gcc-9.0, and linux-4.20.  Two ABIs are
2230   supported:
2231     - C-SKY ABIV2 soft-float little-endian
2232     - C-SKY ABIV2 hard-float little-endian
2234 * strftime's default formatting of a locale's alternative year (%Ey)
2235   has been changed to zero-pad the year to a minimum of two digits,
2236   like "%y".  This improves the display of Japanese era years during
2237   the first nine years of a new era, and is expected to be harmless
2238   for all other locales (only Japanese locales regularly have
2239   alternative year numbers less than 10).  Zero-padding can be
2240   overridden with the '_' or '-' flags (which are GNU extensions).
2242 * As a GNU extension, the '_' and '-' flags can now be applied to
2243   "%EY" to control how the year number is formatted; they have the
2244   same effect that they would on "%Ey".
2246 Deprecated and removed features, and other changes affecting compatibility:
2248 * The glibc.tune tunable namespace has been renamed to glibc.cpu and the
2249   tunable glibc.tune.cpu has been renamed to glibc.cpu.name.
2251 * The type of the pr_uid and pr_gid members of struct elf_prpsinfo, defined
2252   in <sys/procfs.h>, has been corrected to match the type actually used by
2253   the Linux kernel.  This affects the size and layout of that structure on
2254   MicroBlaze, MIPS (n64 ABI only), Nios II and RISC-V.
2256 * For the MIPS n32 ABI, the type of the pr_sigpend and pr_sighold members of
2257   struct elf_prstatus, and the pr_flag member of struct elf_prpsinfo,
2258   defined in <sys/procfs.h>, has been corrected to match the type actually
2259   used by the Linux kernel.  This affects the size and layout of those
2260   structures.
2262 * An archaic GNU extension to scanf, under which '%as', '%aS', and '%a[...]'
2263   meant to scan a string and allocate space for it with malloc, is now
2264   restricted to programs compiled in C89 or C++98 mode with _GNU_SOURCE
2265   defined.  This extension conflicts with C99's use of '%a' to scan a
2266   hexadecimal floating-point number, which is now available to programs
2267   compiled as C99 or C++11 or higher, regardless of _GNU_SOURCE.
2269   POSIX.1-2008 includes the feature of allocating a buffer for string input
2270   with malloc, using the modifier letter 'm' instead.  Programs using
2271   '%as', '%aS', or '%a[...]' with the old GNU meaning should change to
2272   '%ms', '%mS', or '%m[...]' respectively.  Programs that wish to use the
2273   C99 '%a' no longer need to avoid _GNU_SOURCE.
2275   GCC's -Wformat warnings can detect most uses of this extension, as long
2276   as all functions that call vscanf, vfscanf, or vsscanf are annotated with
2277   __attribute__ ((format (scanf, ...))).
2279 Changes to build and runtime requirements:
2281 * Python 3.4 or later is required to build the GNU C Library.
2283 * On most architectures, GCC 5 or later is required to build the GNU C
2284   Library.  (On powerpc64le, GCC 6.2 or later is still required, as before.)
2286   Older GCC versions and non-GNU compilers are still supported when
2287   compiling programs that use the GNU C Library.
2289 Security related changes:
2291   CVE-2018-19591: A file descriptor leak in if_nametoindex can lead to a
2292   denial of service due to resource exhaustion when processing getaddrinfo
2293   calls with crafted host names.  Reported by Guido Vranken.
2295   CVE-2019-6488: On x32, the size_t parameter may be passed in the lower
2296   32 bits of a 64-bit register with with non-zero upper 32 bit.  When it
2297   happened, accessing the 32-bit size_t value as the full 64-bit register
2298   in the assembly string/memory functions would cause a buffer overflow.
2299   Reported by H.J. Lu.
2301   CVE-2016-10739: The getaddrinfo function could successfully parse IPv4
2302   addresses with arbitrary trailing characters, potentially leading to data
2303   or command injection issues in applications.
2305 The following bugs are resolved with this release:
2307   [10425] localedata: it_IT/it_CH: LC_TIME format is wrong
2308   [10496] localedata: 12h time representation in multiple locales faulty
2309   [10797] localedata: it_IT locale numeric does not have a separator for
2310     thousands
2311   [11319] libc: dprintf doesn't handle errors properly
2312   [16346] time: mktime: potentially unsafe use of localtime_offset
2313   [17248] build: glibc should not sort CFLAGS (support gcc plugins and
2314     --param options)
2315   [17405] libc: Implement posix_spawn_file_actions_addchdir_np,
2316     posix_spawn_file_actions_addfchdir_np
2317   [17426] localedata: Indian locales: set the correct date format
2318   [17490] stdio: popen should not invoke atfork handlers
2319   [17783] libc: TIOCSER_TEMT conditions inconsistent
2320   [18040] regex: use-after-free in regexec/get_subexp
2321   [18093] libc: Corrupted aux-cache causes ldconfig to segfault
2322   [20018] network: getaddrinfo should reject IP addresses with trailing
2323     characters (CVE-2016-10739)
2324   [20209] localedata: Spelling mistake for Sunday in Greenlandic kl_GL
2325   [20271] libc: Missing "\n" in __libc_fatal calls
2326   [20480] dynamic-link: Patch: ifunc not executable, crashes sudo qemu
2327   [20544] libc: RFE: atexit, __cxa_atexit, on_exit should assert function
2328     pointer argument is non-NULL
2329   [21037] stdio: open_memstream and freopen
2330   [21286] libc: bits/siginfo.h  is missing enum definition for TRAP_HWBKPT
2331   [21716] time: Crash in glibc's mktime in low-memory situations
2332   [22834] stdio: Subprocess forked by popen may crash in Linux when
2333     multithreads call popen
2334   [22927] network: crash in vn_gai_enqueue_request if requests_tail was NULL
2335     and pthread_create fails.
2336   [23032] hurd: sysdeps/htl/pt-barrier-init.c:39: bad call to memcmp ?
2337   [23125] libc: riscv64: endless loop when throwing an exception from a
2338     constructor
2339   [23275] nptl: Race in pthread_mutex_lock while promoting to
2340     PTHREAD_MUTEX_ELISION_NP.
2341   [23400] libc: stdlib/test-bz22786.c creates temporary files in glibc
2342     source tree
2343   [23479] math: [mips] bits/fenv.h should not define some macros for soft-
2344     float
2345   [23490] libc: sysdeps/unix/sysv/linux/x86/tst-cet-property-2.c:49: off by
2346     one error
2347   [23497] libc: readdir64@GLIBC_2.1 cannot parse the kernel directory stream
2348   [23509] dynamic-link: CET enabled glibc is incompatible with the older
2349     linker
2350   [23520] nscd: nscd: Use-after-free in addgetnetgrentX and its callers
2351   [23521] nss: get_next_alias nss_files file stream leak
2352   [23538] nptl: Hang in pthread_cond_broadcast
2353   [23562] libc: Wrong type for si_band in Linux-specific siginfo_t
2354   [23578] regex: Invalid memory access if regex pattern contains NUL byte
2355   [23579] libc: Errors misreported in preadv2
2356   [23597] build: support/test-container.c doesn't work with different
2357     filesystems
2358   [23603] time: mktime signed integer overflow on large timestamps
2359   [23606] libc: Missing ENDBR32 in sysdeps/i386/start.S
2360   [23614] libc: powerpc: missing CFI register information in __mpn_*
2361     functions
2362   [23637] string: Generic strstr/strcasestr fails with huge needles
2363   [23640] libc: no way to easily clear FD_CLOEXEC in
2364     posix_spawn_file_actions_adddup2()
2365   [23649] libc: [microblaze/mips/nios2/riscv] sys/procfs.h pr_uid, pr_gid
2366     have wrong type
2367   [23656] libc: [mips n32] sys/procfs.h pr_sigpend, pr_sighold, pr_flag have
2368     wrong type
2369   [23679] libc: gethostid: Missing NULL check for gethostbyname_r result
2370   [23689] libc: Bug in documentation for rusage.ru_ixrss in
2371     bits/types/struct_rusage.h
2372   [23690] dynamic-link: Segfault in _dl_profile_fixup with a high number of
2373     threads
2374   [23707] dynamic-link: Missing unwind info in sysdeps/powerpc/powerpc32/dl-
2375     start.S
2376   [23709] string: glibc 2.25 lacks sse2 optimized strstr()
2377   [23716] dynamic-link: _dl_runtime_resolve_shstk isn't selected properly
2378   [23717] libc: glibc: stdlib/tst-setcontext9 test suite failure on
2379     powerpc64le
2380   [23724] localedata: Albanian date formats are incorrect
2381   [23735] math: libnldbl_nonshared.a references internal libm symbols
2382   [23740] localedata: kl_GL: Month names and date formats need update
2383   [23744] regex: regex refactorings to remove BE, avoid duplication
2384   [23745] time: mktime fix for Gnulib + coreutils
2385   [23758] time: Improve the width of alternate representation for year in
2386     strftime
2387   [23783] libc: [mips] Missing CMSPAR bits/termios.h
2388   [23789] time: mktime does not set errno on failure
2389   [23791] localedata: Wrong monetary format for ca_ES locale
2390   [23793] locale: c32rtomb and mbrtoc32 should not alias wcrtomb and mbrtowc
2391   [23794] locale: c16rtomb does not handle surrogate pairs
2392   [23821] libc: si_band in siginfo_t has wrong type long int on sparc64
2393   [23822] math: ia64 static libm.a is missing exp2f, log2f and powf symbols
2394   [23836] time: time/tst-mktime2 test failure on Arm (32-bit)
2395   [23848] libc: [sparc] Some socket syscalls wrongly assumed to be present
2396   [23861] nptl: rdlock stalls indefinitely on an unlocked pthread rwlock
2397   [23862] libc: [sh] missing kernel-features.h undefines
2398   [23864] libc: [riscv] missing kernel-features.h undefines
2399   [23867] libc: [arm/microblaze] __ASSUME_MLOCK2 incorrect
2400   [23907] malloc: Incorrect double-free malloc tcache check disregards
2401     tcache size
2402   [23913] libc: off-by-one in function maybe_script_execute in
2403     sysdeps/posix/spawni.c
2404   [23915] libc: [arm] __ASSUME_COPY_FILE_RANGE incorrect
2405   [23923] locale: Add --no-hard-links option to localedef
2406   [23927] network: Linux if_nametoindex() does not close descriptor
2407     (CVE-2018-19591)
2408   [23961] math: powf can overflow to inf without setting errno in non-
2409     nearest rounding mode
2410   [23967] libc: [2.28 Regression]: New sigaction implementation breaks m68k
2411   [23972] libc: __old_getdents64 uses wrong d_off value on overflow
2412   [23993] libc: glibc 2.29 doesn't build with gcc 4.9
2413   [23995] localedata: Remove execution flags from localedata/locales/bi_VU
2414   [24011] localedata: Fixed small type in comment for locale bs_BA
2415   [24018] libc: gettext() may return NULL
2416   [24022] build: riscv build failure with Linux kernel 4.20-rc7
2417   [24023] build: [2.29 Regression] FAIL: elf/check-localplt
2418   [24024] string: strerror() might set errno to ENOMEM due to -fno-math-
2419     error
2420   [24027] malloc: glibc: realloc() ncopies 32-bit integer overflow
2421   [24034] libc: tst-cancel21-static fails with SIGBUS on pre-ARMv7 when
2422     using GCC 8
2423   [24046] localedata: en_US locale doesn't define date_fmt
2424   [24063] manual: @var{errno} should be @code{errno}
2425   [24066] soft-fp: Inconsistent _FP_W_TYPE_SIZE check
2426   [24088] libc: VSCR field is not being correctly read in ucontext_t on
2427     ppc64le
2428   [24096] time: Specifying '_' or '-' flag for "%EY" does not produce the
2429     expected result
2430   [24097] string: Can't use 64-bit register for size_t in assembly codes for
2431     x32 (CVE-2019-6488)
2432   [24110] hurd: SS_DISABLE never set in stack_t value returned by
2433     sigaltstack
2434   [24112] network: Do not send DNS queries for non-host names (where all
2435     answers will be rejected)
2436   [24130] libc: alpha __remqu corrupts $f3 register
2439 Version 2.28
2441 Major new features:
2443 * The localization data for ISO 14651 is updated to match the 2016
2444   Edition 4 release of the standard, this matches data provided by
2445   Unicode 9.0.0.  This update introduces significant improvements to the
2446   collation of Unicode characters.  This release deviates slightly from
2447   the standard in that the collation element ordering for lowercase and
2448   uppercase LATIN script characters is adjusted to ensure that regular
2449   expressions with ranges like [a-z] and [A-Z] don't interleave e.g. A
2450   is not matched by [a-z].  With the update many locales have been
2451   updated to take advantage of the new collation information.  The new
2452   collation information has increased the size of the compiled locale
2453   archive or binary locales.
2455 * The GNU C Library can now be compiled with support for Intel CET, AKA
2456   Intel Control-flow Enforcement Technology.  When the library is built
2457   with --enable-cet, the resulting glibc is protected with indirect
2458   branch tracking (IBT) and shadow stack (SHSTK).  CET-enabled glibc is
2459   compatible with all existing executables and shared libraries.  This
2460   feature is currently supported on i386, x86_64 and x32 with GCC 8 and
2461   binutils 2.29 or later.  Note that CET-enabled glibc requires CPUs
2462   capable of multi-byte NOPs, like x86-64 processors as well as Intel
2463   Pentium Pro or newer.  NOTE: --enable-cet has been tested for i686,
2464   x86_64 and x32 on non-CET processors.  --enable-cet has been tested
2465   for x86_64 and x32 on CET SDVs, but Intel CET support hasn't been
2466   validated for i686.
2468 * The GNU C Library now has correct support for ABSOLUTE symbols
2469   (SHN_ABS-relative symbols).  Previously such ABSOLUTE symbols were
2470   relocated incorrectly or in some cases discarded.  The GNU linker can
2471   make use of the newer semantics, but it must communicate it to the
2472   dynamic loader by setting the ELF file's identification (EI_ABIVERSION
2473   field) to indicate such support is required.
2475 * Unicode 11.0.0 Support: Character encoding, character type info, and
2476   transliteration tables are all updated to Unicode 11.0.0, using
2477   generator scripts contributed by Mike FABIAN (Red Hat).
2479 * <math.h> functions that round their results to a narrower type are added
2480   from TS 18661-1:2014 and TS 18661-3:2015:
2482   - fadd, faddl, daddl and corresponding fMaddfN, fMaddfNx, fMxaddfN and
2483     fMxaddfNx functions.
2485   - fsub, fsubl, dsubl and corresponding fMsubfN, fMsubfNx, fMxsubfN and
2486     fMxsubfNx functions.
2488   - fmul, fmull, dmull and corresponding fMmulfN, fMmulfNx, fMxmulfN and
2489     fMxmulfNx functions.
2491   - fdiv, fdivl, ddivl and corresponding fMdivfN, fMdivfNx, fMxdivfN and
2492     fMxdivfNx functions.
2494 * Two grammatical forms of month names are now supported for the following
2495   languages: Armenian, Asturian, Catalan, Czech, Kashubian, Occitan, Ossetian,
2496   Scottish Gaelic, Upper Sorbian, and Walloon.  The following languages now
2497   support two grammatical forms in abbreviated month names: Catalan, Greek,
2498   and Kashubian.
2500 * Newly added locales: Lower Sorbian (dsb_DE) and Yakut (sah_RU) also
2501   include the support for two grammatical forms of month names.
2503 * Building and running on GNU/Hurd systems now works without out-of-tree
2504   patches.
2506 * The renameat2 function has been added, a variant of the renameat function
2507   which has a flags argument.  If the flags are zero, the renameat2 function
2508   acts like renameat.  If the flag is not zero and there is no kernel
2509   support for renameat2, the function will fail with an errno value of
2510   EINVAL.  This is different from the existing gnulib function renameatu,
2511   which performs a plain rename operation in case of a RENAME_NOREPLACE
2512   flags and a non-existing destination (and therefore has a race condition
2513   that can clobber the destination inadvertently).
2515 * The statx function has been added, a variant of the fstatat64
2516   function with an additional flags argument.  If there is no direct
2517   kernel support for statx, glibc provides basic stat support based on
2518   the fstatat64 function.
2520 * IDN domain names in getaddrinfo and getnameinfo now use the system libidn2
2521   library if installed.  libidn2 version 2.0.5 or later is recommended.  If
2522   libidn2 is not available, internationalized domain names are not encoded
2523   or decoded even if the AI_IDN or NI_IDN flags are passed to getaddrinfo or
2524   getnameinfo.  (getaddrinfo calls with non-ASCII names and AI_IDN will fail
2525   with an encoding error.)  Flags which used to change the IDN encoding and
2526   decoding behavior (AI_IDN_ALLOW_UNASSIGNED, AI_IDN_USE_STD3_ASCII_RULES,
2527   NI_IDN_ALLOW_UNASSIGNED, NI_IDN_USE_STD3_ASCII_RULES) have been
2528   deprecated.  They no longer have any effect.
2530 * Parsing of dynamic string tokens in DT_RPATH, DT_RUNPATH, DT_NEEDED,
2531   DT_AUXILIARY, and DT_FILTER has been expanded to support the full
2532   range of ELF gABI expressions including such constructs as
2533   '$ORIGIN$ORIGIN' (if valid).  For SUID/GUID applications the rules
2534   have been further restricted, and where in the past a dynamic string
2535   token sequence may have been interpreted as a literal string it will
2536   now cause a load failure.  These load failures were always considered
2537   unspecified behaviour from the perspective of the dynamic loader, and
2538   for safety are now load errors e.g. /foo/${ORIGIN}.so in DT_NEEDED
2539   results in a load failure now.
2541 * Support for ISO C threads (ISO/IEC 9899:2011) has been added.  The
2542   implementation includes all the standard functions provided by
2543   <threads.h>:
2545   - thrd_current, thrd_equal, thrd_sleep, thrd_yield, thrd_create,
2546     thrd_detach, thrd_exit, and thrd_join for thread management.
2548   - mtx_init, mtx_lock, mtx_timedlock, mtx_trylock, mtx_unlock, and
2549     mtx_destroy for mutual exclusion.
2551   - call_once for function call synchronization.
2553   - cnd_broadcast, cnd_destroy, cnd_init, cnd_signal, cnd_timedwait, and
2554     cnd_wait for conditional variables.
2556   - tss_create, tss_delete, tss_get, and tss_set for thread-local storage.
2558   Application developers must link against libpthread to use ISO C threads.
2560 Deprecated and removed features, and other changes affecting compatibility:
2562 * The nonstandard header files <libio.h> and <_G_config.h> are no longer
2563   installed.  Software that was using either header should be updated to
2564   use standard <stdio.h> interfaces instead.
2566 * The stdio functions 'getc' and 'putc' are no longer defined as macros.
2567   This was never required by the C standard, and the macros just expanded
2568   to call alternative names for the same functions.  If you hoped getc and
2569   putc would provide performance improvements over fgetc and fputc, instead
2570   investigate using (f)getc_unlocked and (f)putc_unlocked, and, if
2571   necessary, flockfile and funlockfile.
2573 * All stdio functions now treat end-of-file as a sticky condition.  If you
2574   read from a file until EOF, and then the file is enlarged by another
2575   process, you must call clearerr or another function with the same effect
2576   (e.g. fseek, rewind) before you can read the additional data.  This
2577   corrects a longstanding C99 conformance bug.  It is most likely to affect
2578   programs that use stdio to read interactive input from a terminal.
2579   (Bug #1190.)
2581 * The macros 'major', 'minor', and 'makedev' are now only available from
2582   the header <sys/sysmacros.h>; not from <sys/types.h> or various other
2583   headers that happen to include <sys/types.h>.  These macros are rarely
2584   used, not part of POSIX nor XSI, and their names frequently collide with
2585   user code; see https://sourceware.org/bugzilla/show_bug.cgi?id=19239 for
2586   further explanation.
2588   <sys/sysmacros.h> is a GNU extension.  Portable programs that require
2589   these macros should first include <sys/types.h>, and then include
2590   <sys/sysmacros.h> if __GNU_LIBRARY__ is defined.
2592 * The tilegx*-*-linux-gnu configurations are no longer supported.
2594 * The obsolete function ustat is no longer available to newly linked
2595   binaries; the headers <ustat.h> and <sys/ustat.h> have been removed.  This
2596   function has been deprecated in favor of fstatfs and statfs.
2598 * The obsolete function nfsservctl is no longer available to newly linked
2599   binaries.  This function was specific to systems using the Linux kernel
2600   and could not usefully be used with the GNU C Library on systems with
2601   version 3.1 or later of the Linux kernel.
2603 * The obsolete function name llseek is no longer available to newly linked
2604   binaries.  This function was specific to systems using the Linux kernel
2605   and was not declared in a header.  Programs should use the lseek64 name
2606   for this function instead.
2608 * The AI_IDN_ALLOW_UNASSIGNED and NI_IDN_ALLOW_UNASSIGNED flags for the
2609   getaddrinfo and getnameinfo functions have been deprecated.  The behavior
2610   previously selected by them is now always enabled.
2612 * The AI_IDN_USE_STD3_ASCII_RULES and NI_IDN_USE_STD3_ASCII_RULES flags for
2613   the getaddrinfo and getnameinfo functions have been deprecated.  The STD3
2614   restriction (rejecting '_' in host names, among other things) has been
2615   removed, for increased compatibility with non-IDN name resolution.
2617 * The fcntl function now have a Long File Support variant named fcntl64.  It
2618   is added to fix some Linux Open File Description (OFD) locks usage on non
2619   LFS mode.  As for others *64 functions, fcntl64 semantics are analogous with
2620   fcntl and LFS support is handled transparently.  Also for Linux, the OFD
2621   locks act as a cancellation entrypoint.
2623 * The obsolete functions encrypt, encrypt_r, setkey, setkey_r, cbc_crypt,
2624   ecb_crypt, and des_setparity are no longer available to newly linked
2625   binaries, and the headers <rpc/des_crypt.h> and <rpc/rpc_des.h> are no
2626   longer installed.  These functions encrypted and decrypted data with the
2627   DES block cipher, which is no longer considered secure.  Software that
2628   still uses these functions should switch to a modern cryptography library,
2629   such as libgcrypt.
2631 * Reflecting the removal of the encrypt and setkey functions above, the
2632   macro _XOPEN_CRYPT is no longer defined.  As a consequence, the crypt
2633   function is no longer declared unless _DEFAULT_SOURCE or _GNU_SOURCE is
2634   enabled.
2636 * The obsolete function fcrypt is no longer available to newly linked
2637   binaries.  It was just another name for the standard function crypt,
2638   and it has not appeared in any header file in many years.
2640 * We have tentative plans to hand off maintenance of the passphrase-hashing
2641   library, libcrypt, to a separate development project that will, we hope,
2642   keep up better with new passphrase-hashing algorithms.  We will continue
2643   to declare 'crypt' in <unistd.h>, and programs that use 'crypt' or
2644   'crypt_r' should not need to change at all; however, distributions will
2645   need to install <crypt.h> and libcrypt from a separate project.
2647   In this release, if the configure option --disable-crypt is used, glibc
2648   will not install <crypt.h> or libcrypt, making room for the separate
2649   project's versions of these files.  The plan is to make this the default
2650   behavior in a future release.
2652 Changes to build and runtime requirements:
2654   GNU make 4.0 or later is now required to build glibc.
2656 Security related changes:
2658   CVE-2016-6261, CVE-2016-6263, CVE-2017-14062: Various vulnerabilities have
2659   been fixed by removing the glibc-internal IDNA implementation and using
2660   the system-provided libidn2 library instead.  Originally reported by Hanno
2661   Böck and Christian Weisgerber.
2663   CVE-2017-18269: An SSE2-based memmove implementation for the i386
2664   architecture could corrupt memory.  Reported by Max Horn.
2666   CVE-2018-11236: Very long pathname arguments to realpath function could
2667   result in an integer overflow and buffer overflow.  Reported by Alexey
2668   Izbyshev.
2670   CVE-2018-11237: The mempcpy implementation for the Intel Xeon Phi
2671   architecture could write beyond the target buffer, resulting in a buffer
2672   overflow.  Reported by Andreas Schwab.
2674 The following bugs are resolved with this release:
2676   [1190] stdio: fgetc()/fread() behaviour is not POSIX compliant
2677   [6889] manual: 'PWD' mentioned but not specified
2678   [13575] libc: SSIZE_MAX defined as LONG_MAX is inconsistent with ssize_t,
2679     when __WORDSIZE != 64
2680   [13762] regex: re_search etc. should return -2 on memory exhaustion
2681   [13888] build: /tmp usage during testing
2682   [13932] math: dbl-64 pow unexpectedly slow for some inputs
2683   [14092] nptl: Support C11 threads
2684   [14095] localedata: Review / update collation data from Unicode / ISO
2685     14651
2686   [14508] libc: -Wformat warnings
2687   [14553] libc: Namespace pollution loff_t in sys/types.h
2688   [14890] libc: Make NT_PRFPREG canonical.
2689   [15105] libc: Extra PLT references with -Os
2690   [15512] libc: __bswap_constant_16 not compiled when -Werror -Wsign-
2691     conversion is given
2692   [16335] manual: Feature test macro documentation incomplete and out of
2693     date
2694   [16552] libc: Unify umount implementations in terms of umount2
2695   [17082] libc: htons et al.: statement-expressions prevent use on global
2696     scope with -O1 and higher
2697   [17343] libc: Signed integer overflow in /stdlib/random_r.c
2698   [17438] localedata: pt_BR: wrong d_fmt delimiter
2699   [17662] libc: please implement binding for the new renameat2 syscall
2700   [17721] libc: __restrict defined as /* Ignore */ even in c11
2701   [17979] libc: inconsistency between uchar.h and stdint.h
2702   [18018] dynamic-link: Additional $ORIGIN handling issues (CVE-2011-0536)
2703   [18023] libc: extend_alloca is broken (questionable pointer comparison,
2704     horrible machine code)
2705   [18124] libc: hppa: setcontext erroneously returns -1 as exit code for
2706     last constant.
2707   [18471] libc: llseek should be a compat symbol
2708   [18473] soft-fp: [powerpc-nofpu] __sqrtsf2, __sqrtdf2 should be compat
2709     symbols
2710   [18991] nss: nss_files skips large entry in database
2711   [19239] libc: Including stdlib.h ends up with macros major and minor being
2712     defined
2713   [19463] libc: linknamespace failures when compiled with -Os
2714   [19485] localedata: csb_PL: Update month translations + add yesstr/nostr
2715   [19527] locale: Normalized charset name not recognized by setlocale
2716   [19667] string: Missing Sanity Check for malloc calls in file 'testcopy.c'
2717   [19668] libc: Missing Sanity Check for malloc() in file 'tst-setcontext-
2718     fpscr.c'
2719   [19728] network: out of bounds stack read in libidn function
2720     idna_to_ascii_4i (CVE-2016-6261)
2721   [19729] network: out of bounds heap read on invalid utf-8 inputs in
2722     stringprep_utf8_nfkc_normalize (CVE-2016-6263)
2723   [19818] dynamic-link: Absolute (SHN_ABS) symbols incorrectly relocated by
2724     the base address
2725   [20079] libc: Add SHT_X86_64_UNWIND to elf.h
2726   [20251] libc: 32bit programs pass garbage in struct flock for OFD locks
2727   [20419] dynamic-link: files with large allocated notes crash in
2728     open_verify
2729   [20530] libc: bswap_16 should use __builtin_bswap16() when available
2730   [20890] dynamic-link: ldconfig: fsync the files before atomic rename
2731   [20980] manual: CFLAGS environment variable replaces vital options
2732   [21163] regex: Assertion failure in pop_fail_stack when executing a
2733     malformed regexp (CVE-2015-8985)
2734   [21234] manual: use of CFLAGS makes glibc detect no optimization
2735   [21269] dynamic-link: i386 sigaction sa_restorer handling is wrong
2736   [21313] build: Compile Error GCC 5.4.0 MIPS with -0S
2737   [21314] build: Compile Error GCC 5.2.0 MIPS with -0s
2738   [21508] locale: intl/tst-gettext failure with latest msgfmt
2739   [21547] localedata: Tibetan script collation broken (Dzongkha and Tibetan)
2740   [21812] network: getifaddrs() returns entries with ifa_name == NULL
2741   [21895] libc: ppc64 setjmp/longjmp not fully interoperable with static
2742     dlopen
2743   [21942] dynamic-link: _dl_dst_substitute incorrectly handles $ORIGIN: with
2744     AT_SECURE=1
2745   [22241] localedata: New locale: Yakut (Sakha) locale for Russia (sah_RU)
2746   [22247] network: Integer overflow in the decode_digit function in
2747     puny_decode.c in libidn (CVE-2017-14062)
2748   [22342] nscd: NSCD not properly caching netgroup
2749   [22391] nptl: Signal function clear NPTL internal symbols inconsistently
2750   [22550] localedata: es_ES locale (and  other es_* locales):  collation
2751     should treat ñ  as a primary different character,  sync the collation
2752     for Spanish with CLDR
2753   [22638] dynamic-link: sparc: static binaries are broken if glibc is built
2754     by gcc configured with --enable-default-pie
2755   [22639] time: year 2039 bug for localtime etc. on 64-bit platforms
2756   [22644] string: memmove-sse2-unaligned on 32bit x86 produces garbage when
2757     crossing 2GB threshold (CVE-2017-18269)
2758   [22646] localedata: redundant data (LC_TIME) for es_CL, es_CU, es_EC and
2759     es_BO
2760   [22735] time: Misleading typo in time.h source comment regarding
2761     CLOCKS_PER_SECOND
2762   [22753] libc: preadv2/pwritev2 fallback code should handle offset=-1
2763   [22761] libc: No trailing `%n' conversion specifier in FMT passed from
2764     `__assert_perror_fail ()' to `__assert_fail_base ()'
2765   [22766] libc: all glibc internal dlopen should use RTLD_NOW for robust
2766     dlopen failures
2767   [22786] libc: Stack buffer overflow in realpath() if input size is close
2768     to SSIZE_MAX (CVE-2018-11236)
2769   [22787] dynamic-link: _dl_check_caller returns false when libc is linked
2770     through an absolute DT_NEEDED path
2771   [22792] build: tcb-offsets.h dependency dropped
2772   [22797] libc: pkey_get() uses non-reserved name of argument
2773   [22807] libc: PTRACE_* constants missing for powerpc
2774   [22818] glob: posix/tst-glob_lstat_compat failure on alpha
2775   [22827] dynamic-link: RISC-V ELF64 parser mis-reads flag in ldconfig
2776   [22830] malloc: malloc_stats doesn't restore cancellation state on stderr
2777   [22848] localedata: ca_ES: update date definitions from CLDR
2778   [22862] build: _DEFAULT_SOURCE is defined even when _ISOC11_SOURCE is
2779   [22884] math: RISCV fmax/fmin handle signalling NANs incorrectly
2780   [22896] localedata: Update locale data for an_ES
2781   [22902] math: float128 test failures with GCC 8
2782   [22918] libc: multiple common of `__nss_shadow_database'
2783   [22919] libc: sparc32: backtrace yields infinite backtrace with
2784     makecontext
2785   [22926] libc: FTBFS on powerpcspe
2786   [22932] localedata: lt_LT: Update of abbreviated month names from CLDR
2787     required
2788   [22937] localedata: Greek (el_GR, el_CY) locales actually need ab_alt_mon
2789   [22947] libc: FAIL: misc/tst-preadvwritev2
2790   [22963] localedata: cs_CZ: Add alternative month names
2791   [22987] math: [powerpc/sparc] fdim inlines errno, exceptions handling
2792   [22996] localedata: change LC_PAPER to en_US in es_BO locale
2793   [22998] dynamic-link: execstack tests are disabled when SELinux is
2794     disabled
2795   [23005] network: Crash in __res_context_send after memory allocation
2796     failure
2797   [23007] math: strtod cannot handle -nan
2798   [23024] nss: getlogin_r is performing NSS lookups when loginid isn't set
2799   [23036] regex: regex equivalence class regression
2800   [23037] libc: initialize msg_flags to zero for sendmmsg() calls
2801   [23069] libc: sigaction broken on riscv64-linux-gnu
2802   [23094] localedata: hr_HR: wrong thousands_sep and mon_thousands_sep
2803   [23102] dynamic-link: Incorrect parsing of multiple consecutive $variable
2804     patterns in runpath entries (e.g. $ORIGIN$ORIGIN)
2805   [23137] nptl: s390: pthread_join sometimes block indefinitely (on 31bit
2806     and libc build with -Os)
2807   [23140] localedata: More languages need two forms of month names
2808   [23145] libc: _init/_fini aren't marked as hidden
2809   [23152] localedata: gd_GB: Fix typo in "May" (abbreviated)
2810   [23171] math: C++ iseqsig for long double converts arguments to double
2811   [23178] nscd: sudo will fail when it is run in concurrent with commands
2812     that changes /etc/passwd
2813   [23196] string: __mempcpy_avx512_no_vzeroupper mishandles large copies
2814     (CVE-2018-11237)
2815   [23206] dynamic-link: static-pie + dlopen breaks debugger interaction
2816   [23208] localedata: New locale - Lower Sorbian (dsb)
2817   [23233] regex: Memory leak in build_charclass_op function in file
2818     posix/regcomp.c
2819   [23236] stdio: Harden function pointers in _IO_str_fields
2820   [23250] nptl: Offset of __private_ss differs from GCC
2821   [23253] math: tgamma test suite failures on i686 with -march=x86-64
2822     -mtune=generic -mfpmath=sse
2823   [23259] dynamic-link: Unsubstituted ${ORIGIN} remains in DT_NEEDED for
2824     AT_SECURE
2825   [23264] libc: posix_spawnp wrongly executes ENOEXEC in non compat mode
2826   [23266] nis: stringop-truncation warning with new gcc8.1 in nisplus-
2827     parser.c
2828   [23272] math: fma(INFINITY,INFIITY,0.0) should be INFINITY
2829   [23277] math: nan function should not have const attribute
2830   [23279] math: scanf and strtod wrong for some hex floating-point
2831   [23280] math: wscanf rounds wrong; wcstod is ok for negative numbers and
2832     directed rounding
2833   [23290] localedata: IBM273 is not equivalent to ISO-8859-1
2834   [23303] build: undefined reference to symbol
2835     '__parse_hwcap_and_convert_at_platform@@GLIBC_2.23'
2836   [23307] dynamic-link: Absolute symbols whose value is zero ignored in
2837     lookup
2838   [23313] stdio: libio vtables validation and standard file object
2839     interposition
2840   [23329] libc: The __libc_freeres infrastructure is not properly run across
2841     DSO boundaries.
2842   [23349] libc: Various glibc headers no longer compatible with
2843     <linux/time.h>
2844   [23351] malloc: Remove unused code related to heap dumps and malloc
2845     checking
2846   [23363] stdio: stdio-common/tst-printf.c has non-free license
2847   [23396] regex: Regex equivalence regression in single-byte locales
2848   [23422] localedata: oc_FR: More updates of locale data
2849   [23442] build: New warning with GCC 8
2850   [23448] libc: Out of bounds access in IBM-1390 converter
2851   [23456] libc: Wrong index_cpu_LZCNT
2852   [23458] build: tst-get-cpu-features-static isn't added to tests
2853   [23459] libc: COMMON_CPUID_INDEX_80000001 isn't populated for Intel
2854     processors
2855   [23467] dynamic-link: x86/CET: A property note parser bug
2858 Version 2.27
2860 Major new features:
2862 * The GNU C Library can now be compiled with support for building static
2863   PIE executables (See --enable-static-pie in INSTALL).  These static PIE
2864   executables are like static executables but can be loaded at any address
2865   and provide additional security hardening benefits at the cost of some
2866   memory and performance.  When the library is built with --enable-static-pie
2867   the resulting libc.a is usable with GCC 8 and above to create static PIE
2868   executables using the GCC option '-static-pie'.  This feature is currently
2869   supported on i386, x86_64 and x32 with binutils 2.29 or later, and on
2870   aarch64 with binutils 2.30 or later.
2872 * Optimized x86-64 asin, atan2, exp, expf, log, pow, atan, sin, cosf,
2873   sinf, sincosf and tan with FMA, contributed by Arjan van de Ven and
2874   H.J. Lu from Intel.
2876 * Optimized x86-64 trunc and truncf for processors with SSE4.1.
2878 * Optimized generic expf, exp2f, logf, log2f, powf, sinf, cosf and sincosf.
2880 * In order to support faster and safer process termination the malloc API
2881   family of functions will no longer print a failure address and stack
2882   backtrace after detecting heap corruption.  The goal is to minimize the
2883   amount of work done after corruption is detected and to avoid potential
2884   security issues in continued process execution.  Reducing shutdown time
2885   leads to lower overall process restart latency, so there is benefit both
2886   from a security and performance perspective.
2888 * The abort function terminates the process immediately, without flushing
2889   stdio streams.  Previous glibc versions used to flush streams, resulting
2890   in deadlocks and further data corruption.  This change also affects
2891   process aborts as the result of assertion failures.
2893 * On platforms where long double has the IEEE binary128 format (aarch64,
2894   alpha, mips64, riscv, s390 and sparc), the math library now implements
2895   _Float128 interfaces for that type, as defined by ISO/IEC TS 18661-3:2015.
2896   These are the same interfaces added in version 2.26 for some platforms where
2897   this format is supported but is not the format of long double.
2899 * On platforms with support for _Float64x (aarch64, alpha, i386, ia64,
2900   mips64, powerpc64le, riscv, s390, sparc and x86_64), the math library now
2901   implements interfaces for that type, as defined by ISO/IEC TS
2902   18661-3:2015.  These are corresponding interfaces to those supported for
2903   _Float128.
2905 * The math library now implements interfaces for the _Float32, _Float64 and
2906   _Float32x types, as defined by ISO/IEC TS 18661-3:2015.  These are
2907   corresponding interfaces to those supported for _Float128.
2909 * glibc now implements the memfd_create and mlock2 functions on Linux.
2911 * Support for memory protection keys was added.  The <sys/mman.h> header now
2912   declares the functions pkey_alloc, pkey_free, pkey_mprotect, pkey_set,
2913   pkey_get.
2915 * The copy_file_range function was added.
2917 * Optimized memcpy, mempcpy, memmove, and memset for sparc M7.
2919 * The ldconfig utility now processes `include' directives using the C/POSIX
2920   collation ordering.  Previous glibc versions used locale-specific
2921   ordering, the change might break systems that relied on that.
2923 * Support for two grammatical forms of month names has been added.
2924   In a call to strftime, the "%B" and "%b" format specifiers will now
2925   produce the grammatical form required when the month is used as part
2926   of a complete date.  New "%OB" and "%Ob" specifiers produce the form
2927   required when the month is named by itself.  For instance, in Greek
2928   and in many Slavic and Baltic languages, "%B" will produce the month
2929   in genitive case, and "%OB" will produce the month in nominative case.
2931   In a call to strptime, "%B", "%b", "%h", "%OB", "%Ob", and "%Oh"
2932   are all valid and will all accept any known form of month
2933   name---standalone or complete, abbreviated or full.  In a call to
2934   nl_langinfo, the query constants MON_1..12 and ABMON_1..12 return
2935   the strings used by "%B" and "%b", respectively.  New query
2936   constants ALTMON_1..12 and _NL_ABALTMON_1..12 return the strings
2937   used by "%OB" and "%Ob", respectively.
2939   In a locale definition file, use "alt_mon" and "ab_alt_mon" to
2940   define the strings for %OB and %Ob, respectively; these have the
2941   same syntax as "mon" and "abmon".  These arrays are optional; if they
2942   are not provided then they have the same content as "mon" and "abmon",
2943   respectively.
2945   These features are provided for locales which define "alt_mon" and/or
2946   "ab_alt_mon" in their locale source data.  This release includes such
2947   alternative month name data for the following languages: Belarusian,
2948   Croatian, Greek, Lithuanian, Polish, Russian, and Ukrainian.
2950   This feature is currently a GNU extension, but it is expected to
2951   be added to the next revision of POSIX, and it is also already
2952   available on some BSD-derived operating systems.
2954   This feature will cause existing statically compiled applications
2955   to fail to load locales and fall back to the builtin C/POSIX locales.
2956   See notes below for other changes affecting compatibility.
2958 * Support for the RISC-V ISA running on Linux has been added.  This port
2959   requires at least binutils-2.30, gcc-7.3.0, and linux-4.15; and is supported
2960   for the following ISA and ABI pairs:
2962     - rv64imac lp64
2963     - rv64imafdc lp64
2964     - rv64imafdc lp64d
2966 Deprecated and removed features, and other changes affecting compatibility:
2968 * Statically compiled applications attempting to load locales compiled for the
2969   GNU C Library version 2.27 will fail and fall back to the builtin C/POSIX
2970   locale.  The reason for this is that the addition of the new "%OB" and "%Ob",
2971   support for two grammatical forms of the month names, also extends the locale
2972   data binary format.  Static applications needing locale support must be
2973   recompiled to match the runtime and data they are deployed with. In some
2974   distributions there is an upgrade window where dynamically linked applications
2975   may use a new library but the old locale data and also fall back to the
2976   builtin C/POSIX locales; restarting the application process is sufficient to
2977   fix this.
2979 * Support for statically linked applications which call dlopen is deprecated
2980   and will be removed in a future version of glibc.  Applications which call
2981   dlopen need to be linked dynamically instead.
2983 * Support for old programs which use internal stdio data structures and
2984   functions is deprecated.  This includes programs which use the C++ streams
2985   provided by libstdc++ in GCC 2.95.  Programs which use the internal
2986   symbols _IO_adjust_wcolumn, _IO_default_doallocate, _IO_default_finish,
2987   _IO_default_pbackfail, _IO_default_uflow, _IO_default_xsgetn,
2988   _IO_default_xsputn, _IO_doallocbuf, _IO_do_write, _IO_file_attach,
2989   _IO_file_close, _IO_file_close_it, _IO_file_doallocate, _IO_file_fopen,
2990   _IO_file_init, _IO_file_jumps, _IO_fileno, _IO_file_open,
2991   _IO_file_overflow, _IO_file_read, _IO_file_seek, _IO_file_seekoff,
2992   _IO_file_setbuf, _IO_file_stat, _IO_file_sync, _IO_file_underflow,
2993   _IO_file_write, _IO_file_xsputn, _IO_flockfile, _IO_flush_all,
2994   _IO_flush_all_linebuffered, _IO_free_backup_area, _IO_free_wbackup_area,
2995   _IO_init, _IO_init_marker, _IO_init_wmarker, _IO_iter_begin, _IO_iter_end,
2996   _IO_iter_file, _IO_iter_next, _IO_least_wmarker, _IO_link_in,
2997   _IO_list_all, _IO_list_lock, _IO_list_resetlock, _IO_list_unlock,
2998   _IO_marker_delta, _IO_marker_difference, _IO_remove_marker, _IO_seekmark,
2999   _IO_seekwmark, _IO_str_init_readonly, _IO_str_init_static,
3000   _IO_str_overflow, _IO_str_pbackfail, _IO_str_seekoff, _IO_str_underflow,
3001   _IO_switch_to_main_wget_area, _IO_switch_to_wget_mode,
3002   _IO_unsave_wmarkers, _IO_wdefault_doallocate, _IO_wdefault_finish,
3003   _IO_wdefault_pbackfail, _IO_wdefault_setbuf, _IO_wdefault_uflow,
3004   _IO_wdefault_xsgetn, _IO_wdefault_xsputn, _IO_wdoallocbuf, _IO_wdo_write,
3005   _IO_wfile_jumps, _IO_wfile_overflow, _IO_wfile_sync, _IO_wfile_underflow,
3006   _IO_wfile_xsputn, _IO_wmarker_delta, or _IO_wsetb may stop working with a
3007   future version of glibc.  Unlike other symbol removals, these old
3008   applications will not be supported using compatibility symbols.
3010 * On GNU/Linux, the obsolete Linux constant PTRACE_SEIZE_DEVEL is no longer
3011   defined by <sys/ptrace.h>.
3013 * libm no longer supports SVID error handling (calling a user-provided
3014   matherr function on error) or the _LIB_VERSION variable to control error
3015   handling.  (SVID error handling and the _LIB_VERSION variable still work
3016   for binaries linked against older versions of the GNU C Library.)  The
3017   libieee.a library is no longer provided.  math.h no longer defines struct
3018   exception, or the macros X_TLOSS, DOMAIN, SING, OVERFLOW, UNDERFLOW,
3019   TLOSS, PLOSS and HUGE.
3021 * The libm functions pow10, pow10f and pow10l are no longer supported for
3022   new programs.  Programs should use the standard names exp10, exp10f and
3023   exp10l for these functions instead.
3025 * The mcontext_t type is no longer the same as struct sigcontext.  On
3026   platforms where it was previously the same, this changes the C++ name
3027   mangling for interfaces involving this type.
3029 * The add-ons mechanism for building additional packages at the same time as
3030   glibc has been removed.  The --enable-add-ons configure option is now
3031   ignored.
3033 * The --without-fp configure option is now ignored.  Whether hardware
3034   floating-point instructions are used is now configured based on whether
3035   the compiler used at configure time (without any options implied by a
3036   --with-cpu= configure option) uses such instructions.
3038 * The res_hnok, res_dnok, res_mailok and res_ownok functions now check that
3039   the specified string can be parsed as a domain name.
3041 * In the malloc_info output, the <heap> element may contain another <aspace>
3042   element, "subheaps", which contains the number of sub-heaps.
3044 * The libresolv function p_secstodate is no longer supported for new
3045   programs.
3047 * The tilepro-*-linux-gnu configuration is no longer supported.
3049 * The nonstandard header files <libio.h> and <_G_config.h> are deprecated
3050   and will be removed in a future release.  Software that is still using
3051   either header should be updated to use standard <stdio.h> interfaces
3052   instead.
3054   libio.h was originally the header for a set of supported GNU extensions,
3055   but they have not been maintained as such in many years, they are now
3056   standing in the way of improvements to stdio, and we don't think there are
3057   any remaining external users.  _G_config.h was never intended for public
3058   use, but predates the bits convention.
3060 Changes to build and runtime requirements:
3062 * bison version 2.7 or later is required to generate code in the 'intl'
3063   subdirectory.
3065 Security related changes:
3067   CVE-2009-5064: The ldd script would sometimes run the program under
3068   examination directly, without preventing code execution through the
3069   dynamic linker.  (The glibc project disputes that this is a security
3070   vulnerability; only trusted binaries must be examined using the ldd
3071   script.)
3073   CVE-2017-15670: The glob function, when invoked with GLOB_TILDE,
3074   suffered from a one-byte overflow during ~ operator processing (either
3075   on the stack or the heap, depending on the length of the user name).
3076   Reported by Tim Rühsen.
3078   CVE-2017-15671: The glob function, when invoked with GLOB_TILDE,
3079   would sometimes fail to free memory allocated during ~ operator
3080   processing, leading to a memory leak and, potentially, to a denial
3081   of service.
3083   CVE-2017-15804: The glob function, when invoked with GLOB_TILDE and
3084   without GLOB_NOESCAPE, could write past the end of a buffer while
3085   unescaping user names.  Reported by Tim Rühsen.
3087   CVE-2017-17426: The malloc function, when called with an object size near
3088   the value SIZE_MAX, would return a pointer to a buffer which is too small,
3089   instead of NULL.  This was a regression introduced with the new malloc
3090   thread cache in glibc 2.26.  Reported by Iain Buclaw.
3092   CVE-2017-1000408: Incorrect array size computation in _dl_init_paths leads
3093   to the allocation of too much memory.  (This is not a security bug per se,
3094   it is mentioned here only because of the CVE assignment.)  Reported by
3095   Qualys.
3097   CVE-2017-1000409: Buffer overflow in _dl_init_paths due to miscomputation
3098   of the number of search path components.  (This is not a security
3099   vulnerability per se because no trust boundary is crossed if the fix for
3100   CVE-2017-1000366 has been applied, but it is mentioned here only because
3101   of the CVE assignment.)  Reported by Qualys.
3103   CVE-2017-16997: Incorrect handling of RPATH or RUNPATH containing $ORIGIN
3104   for AT_SECURE or SUID binaries could be used to load libraries from the
3105   current directory.
3107   CVE-2018-1000001: Buffer underflow in realpath function when getcwd function
3108   succeeds without returning an absolute path due to unexpected behaviour
3109   of the Linux kernel getcwd syscall.  Reported by halfdog.
3111   CVE-2018-6485: The posix_memalign and memalign functions, when called with
3112   an object size near the value of SIZE_MAX, would return a pointer to a
3113   buffer which is too small, instead of NULL.  Reported by Jakub Wilk.
3115   CVE-2018-6551: The malloc function, when called with an object size near
3116   the value of SIZE_MAX, would return a pointer to a buffer which is too
3117   small, instead of NULL.
3119 The following bugs are resolved with this release:
3121   [866] glob: glob should match dangling symlinks
3122   [1062] glob: sysdeps/generic/glob.c merge from gnulib (part 3 of 3)
3123   [2522] localedata: ca_ES@valencia: new Valencian (meridional Catalan)
3124     locale
3125   [5997] math: Very slow execution of sinf function
3126   [10580] localedata: hr_HR: updated locale
3127   [10871] locale: 'mon' array should contain both nominative and genitive
3128     cases
3129   [12349] localedata: eu_ES: incorrect thousands separator
3130   [13605] localedata: shn_MM: new Shan locale
3131   [13805] localedata: ru_RU: currency should use ',' as radix point
3132   [13953] localedata: km_KH: locale update
3133   [13994] localedata: mjw_IN: new locale
3134   [14121] build: make writes .mo files in po directory
3135   [14333] libc: Fix the race between atexit() and exit()
3136   [14681] dynamic-link: _dl_get_origin leaks memory via executable link map.
3137   [14925] localedata: bn_*: LC_IDENTIFICATION.language key should be
3138     "Bangla"
3139   [15260] localedata: LC_MESSAGES.{yes,no}{str,expr}: various errors
3140   [15261] localedata: LC_MESSAGES.yesexpr/noexpr: inconsistent use of full-
3141     width Latin characters
3142   [15332] localedata: es_CU: locale update
3143   [15436] stdio: Don't close or flush stdio streams on abort
3144   [15537] localedata: lv_LV: invalid collation for Latvian diacritical
3145     letters
3146   [16148] localedata: ca_ES: incorrect thousands separator
3147   [16750] dynamic-link: ldd should not try to execute the binaries
3148     (CVE-2009-5064)
3149   [16777] localedata: pl_PL: incorrect thousands separator in locale
3150   [16905] localedata: hanzi: new collation
3151   [17563] localedata: cmn_TW: add hanzi collation
3152   [17750] localedata: wrong collation order of diacritics in most locales
3153   [17804] libc: scandirat fails with ENOMEM because it checks for errno even
3154     if malloc succeeded
3155   [17956] build: Build fails on missing definitions from header file
3156     nss/nss.h when Mozilla NSS is used for cryptography
3157   [18203] libc: realpath() does not handle unreachable paths correctly
3158   [18572] dynamic-link: [arm] Lazy TLSDESC relocation has data race
3159   [18812] localedata: kab_DZ: new Kabyle Algeria locale
3160   [18822] libc: Internal functions are called via PLT
3161   [18858] string: _HAVE_STRING_ARCH_xxx aren't defined for i386 nor x86_64
3162   [19170] libc: __gmon_start__ defined in hppa in crtn.S
3163   [19574] libc: glibc should support building static PIE binaries
3164   [19852] localedata: charmaps/UTF-8: incorrect wcwidth for U+3099 and
3165     U+309A
3166   [19971] glob: glob: Do not skip entries with zero d_ino values
3167   [19982] localedata: fr.po: spelling mistake for error code EXDEV
3168   [20008] localedata: km_KH: convert to translit_neutral
3169   [20009] localedata: tr_TR: convert LC_CTYPE to i18n
3170   [20142] math: [x86_64] Add SSE4.1 trunc, truncf
3171   [20204] dynamic-link: _dl_open_hook and _dlfcn_hook hardening
3172   [20482] localedata: de_CH: abbreviated weekdays should be two letters
3173   [20498] localedata: miq_NI: new Mískitu / Miskito (miq) language locale
3174     for Nicaragua
3175   [20532] nss: getaddrinfo uses errno and h_errno without guaranteeing
3176     they're set, wrong errors returned by gaih_inet when lookup functions
3177     are not found.
3178   [20756] localedata: [PATCH] Use Unicode wise thousands separator
3179   [20826] network: posix/tst-getaddrinfo5 fails on hosts without network
3180     access
3181   [20952] localedata: yuw_PG: new locale
3182   [21084] localedata: charmaps/IBM858: new codepage
3183   [21161] manual: [PATCH] fix typo in manual/arith.texi on strtoul prototype
3184   [21242] libc: assert gives pedantic warning in old gcc versions
3185   [21265] dynamic-link: _dl_runtime_resolve isn't compatible with Intel C++
3186     __regcall calling convention
3187   [21309] math: signed integer overflow in sysdeps/ieee754/dbl-64/e_pow.c
3188   [21326] libc: C99 functions are not declared for C++11 and later if
3189     _GNU_SOURCE is not predefined by g++
3190   [21457] libc: sys/ucontext.h namespace
3191   [21530] libc: tmpfile() should be implemented using O_TMPFILE
3192   [21660] math: GCC fails to compile a formula with tgmath.h
3193   [21672] nptl: sys-libs/glibc on ia64 crashes on thread exit: signal
3194     SIGSEGV, Segmentation fault: pthread_create.c:432: __madvise
3195     (pd->stackblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
3196   [21684] math: tgmath.h handling of complex integers
3197   [21685] math: tgmath.h handling of bit-fields
3198   [21686] math: tgmath.h handling of __int128
3199   [21706] localedata: yesstr and nostr  are missing for Breton [LC_MESSAGES]
3200     locale
3201   [21745] libc: [powerpc64le] Extra PLT reference with --enable-stack-
3202     protector=all
3203   [21750] localedata: column width of characters incompatible with classical
3204     wcwidth
3205   [21754] malloc: malloc: Perform as little work as possible after heap
3206     consistency check failures
3207   [21780] libc: hppa: p{read,write}v2 does not set ENOSUP on invalid flag
3208   [21790] libc: Missing __memset_zero_constant_len_parameter in libc.so
3209   [21791] string: Unused XXX_chk_XXX functions in libc.a
3210   [21815] dynamic-link: FAIL: elf/tst-prelink-cmp with GCC is defaulted to
3211     PIE
3212   [21836] localedata: Removed redundant data (LC_MONETARY) in various Indian
3213     locales
3214   [21845] localedata: Added new Locale bho_NP
3215   [21853] localedata: Fix abday Which looks same as day in zh_SG
3216   [21854] localedata: Added New Locale en_SC
3217   [21864] libc: xmalloc.o is compiled with -DMODULE_NAME=libc
3218   [21871] dynamic-link: _dl_runtime_resolve_avx_opt is slower than
3219     _dl_runtime_resolve_avx_slow
3220   [21885] network: getaddrinfo: gethosts does not release resolver context
3221     on memory allocation failure
3222   [21899] libc: XPG4.2 sigaction namespace
3223   [21908] dynamic-link: dynamic linker broke on ia64 (mmap2 consolidation is
3224     the suspect)
3225   [21913] libc: static binaries SIGSEGV in __brk when host's gcc is pie-by-
3226     default (i386)
3227   [21915] nss: nss_files can return with NSS_STATUS_SUCCESS and a clobbered
3228     errno value, causing getaddrinfo to fail
3229   [21920] localedata: Fix p_cs_precedes/n_cs_precedes for mt_MT
3230   [21922] network: getaddrinfo with AF_INET/AF_INET6 returns EAI_NONAME
3231     instead of EAI_NODATA
3232   [21928] libc: sys/ptrace.h: remove obsolete temporary development Linux
3233     constant PTRACE_SEIZE_DEVEL
3234   [21930] math: C-only gcc builtins used in <math.h> isinf
3235   [21932] network: Unpaired __resolv_context_get in generic get*_r
3236     implementation
3237   [21941] math: powerpc: Wrong register constraint for xssqrtqp in sqrtf128
3238   [21944] libc: sigval namespace
3239   [21951] localedata: Update hanzi collation by stroke
3240   [21955] math: Wrong alignment of  L(SP_RANGE)/L(SP_INF_0) in
3241     sysdeps/x86_64/fpu/e_expf.S
3242   [21956] libc: Stack allocation in MIPS syscall impl (ubounded stack
3243     allocation in syscall loops)
3244   [21959] localedata: Fix Country name for xh_ZA
3245   [21960] localedata: Fix abmon for bem_ZM
3246   [21966] math: AVX2 mathvec functions use FMA without checking
3247   [21967] math: When 512-bit AVX2 wrapper functions in mathvec are used?
3248   [21971] localedata: Added New Locale for mfe_MU
3249   [21972] libc: assert macro requires operator== (int) for its argument type
3250   [21973] math: [sparc] libm missing sqrtl compat symbol
3251   [21974] libc: Remove __bb_init_func and __bb_exit_func
3252   [21982] string: stratcliff.c: error: assuming signed overflow does not
3253     occur with -O3
3254   [21986] stdio: __guess_grouping is called incorrectly
3255   [21987] math: [sparc32] wrong bits/long-double.h installed
3256   [22019] localedata: Wrong placement of monetary symbol in el_GR (negative
3257     amounts)
3258   [22022] localedata: Missing country_name for mni_IN
3259   [22023] localedata: Removed redundant data (LC_TIME and LC_MESSAGES) for
3260     niu_NZ
3261   [22025] locale: iconv: Inconsistency between pointer mangling and NULL
3262     checks
3263   [22026] locale: iconv_open: heap overflow on gconv_init failure
3264   [22028] math: bits/math-finite.h _MSUF_ expansion namespace
3265   [22035] math: [m68k] bits/math-inline.h macro namespace
3266   [22038] localedata: Fix abbreviated weeks and months for Somali
3267   [22044] localedata: Remove redundant data for Limburgish Language
3268   [22050] malloc: Linking with -lmcheck does not hook
3269     __malloc_initialize_hook correctly
3270   [22051] libc: zero terminator in the middle of glibc's .eh_frame
3271   [22052] malloc: malloc failed to compile with GCC 7 and -O3
3272   [22070] localedata: charmaps/UTF-8: wcwidth for
3273     Prepended_Concatenation_Mark codepoints set to 0 (should be 1)
3274   [22074] localedata: charmaps/UTF-8: wcwidth for U+1160-U+11FF (Hangul
3275     Jungseong and Jongseong) should be 0
3276   [22078] nss: nss_files performance issue in multi mode
3277   [22082] math: bits/math-finite.h exp10 condition
3278   [22086] libc: pcprofiledump incorrect cross-endian condition
3279   [22093] dynamic-link: ld.so no longer searches in .../x86_64
3280   [22095] network: Name server address allocation memory leak in resolv.conf
3281     parsing after OOM
3282   [22096] network: __resolv_conf_attach can incorrectly free passed conf
3283     object
3284   [22100] localedata: om_KE: LC_TIME: copy redundant data from om_ET
3285   [22101] dynamic-link: Dynamic loader must ignore "debug" shared objects
3286     e.g. ET_GNU_DEBUG_*
3287   [22111] malloc: malloc: per thread cache is not returned when thread exits
3288   [22112] localedata: Fix LC_TELEPHONE/LC_NAME for az_AZ
3289   [22134] libc: [linux] implement fexecve with execveat
3290   [22142] libc: [powerpc] printf outputs a wrong value of DBL_MAX on ppc64 and
3291     ppc64le
3292   [22145] libc: ttyname() gives up too early in the face of namespaces
3293   [22146] math: C++ build issue with float128 on x86_64
3294   [22153] nptl: nptl: save error code before process termination
3295   [22156] libc: [hppa,ia64,microblaze] Executable stack default
3296   [22159] malloc: malloc: MALLOC_CHECK_ broken with --enable-tunables=no
3297   [22161] nscd: nscd cache prune for netgroups hangs after timeout bump
3298   [22165] libc: [hppa] Text relocations in libc.so
3299   [22180] libc: destructor registered via __cxa_atexit is called twice
3300   [22183] glob: commit 5554304f0ddd ("posix: Allow glob to match dangling
3301     symlinks") cause "make" segfaults
3302   [22189] math: [powerpc] math_private.h definitions of math_opt_barrier and
3303     math_force_eval
3304   [22207] libc: FAIL: stdlib/test-atexit-race
3305   [22225] math: nearbyint arithmetic moved before feholdexcept
3306   [22229] math: [sparc32] missing copysignl, fabsl, fmal compat symbols
3307   [22235] math: iscanonical in C++ and float128
3308   [22243] math: log2(0) and log10(0) are wrong in downward rounding without
3309     the svid compat wrapper
3310   [22244] math: ynf and yn are wrong without the svid compat wrapper
3311   [22273] libc: Improper assert in Linux posix_spawn implementation
3312   [22284] libc: -pg -pie doesn't work
3313   [22292] locale: localedef exits with error 4 when it should be error 1
3314   [22294] locale: Allow "" for int_currency_symbol definition in locales.
3315   [22295] locale: Don't warn on non-symbolic characters in locale sources in
3316     --verbose.
3317   [22296] math: glibc 2.26: signbit build issue with Gcc 5.5.0 on x86_64
3318   [22298] nptl: x32: lockups on recursive pthread_mutex_lock after upgrade
3319     to 2.26
3320   [22299] dynamic-link: Problem with $PLATFORM on x86_64 platform
3321   [22320] glob: Buffer overflow in glob with GLOB_TILDE (CVE-2017-15670)
3322   [22321] libc: sysconf(_SC_IOV_MAX) returns -1 on Linux
3323   [22322] libc: [mips64] wrong bits/long-double.h installed
3324   [22325] glob: Memory leak in glob with GLOB_TILDE (CVE-2017-15671)
3325   [22332] glob: Buffer overflow in glob with GLOB_TILDE in unescaping
3326     (CVE-2017-15804)
3327   [22336] localedata: cs_CZ LC_COLLATE does not use i18n
3328   [22343] malloc: Integer overflow in posix_memalign
3329   [22347] libc: getrandom() returns the number of bytes that were copied  to
3330     the buffer even though the comments say "Return 0 on success and -1 on
3331     failure."
3332   [22353] string: sysdeps/i386/i586/strcpy.S isn't maintainable
3333   [22362] libc: Installed crt1.o, crti,.o and crtn.o files are used with
3334     -m32
3335   [22370] dynamic-link: Incorrect note padding check
3336   [22375] libc: malloc returns pointer from tcache_get when should return
3337     NULL (CVE-2017-17426)
3338   [22377] math: iseqsig, float128 and C++
3339   [22382] localedata: Error in tpi_PG locale
3340   [22387] localedata: Replace unicode sequences <Uxxxx> for characters
3341     inside the ASCII printable range
3342   [22402] math: [powerpc64le] __MATH_TG does not support _Float128 for
3343     -mlong-double-64
3344   [22403] localedata: Slash needs escaping in some locales
3345   [22408] malloc: malloc_info access heaps without arena lock, ignores heaps
3346   [22409] network: res_hnok does not accept some host names used on the
3347     Internet
3348   [22412] network: res_dnok, res_hnok should perform syntax checks
3349   [22413] network: ns_name_pton ignores syntactically invalid trailing
3350     backslash
3351   [22415] stdio: setvbuf can lead to invalid free/segfault
3352   [22432] build: Non-deterministic build
3353   [22439] malloc: malloc_info should compute summary statistics for all sub-
3354     heaps in an arena
3355   [22442] network: if_nametoindex could report index for the wrong
3356     networking interface
3357   [22446] build: aliasing violation calling readlink in handle_request
3358   [22447] build: unsafe call to strlen with a non-string in getlogin_r.c
3359   [22457] libc: Generic preadv/pwritev incorrectly calls __posix_memalign
3360   [22459] libc: FAIL: elf/check-localplt with __stack_chk_fail related to
3361     __nscd_hash/__nss_hash
3362   [22463] network: p_secstodate overflow handling
3363   [22469] localedata: pl_PL LC_COLLATE does not use i18n
3364   [22478] libc: sigwait can fail with EINTR
3365   [22505] libc: ldconfig processes include directive in locale-specific
3366     order
3367   [22515] localedata: hsb_DE LC_COLLATE does not use copy "iso14651_t1"
3368   [22517] localedata: et_EE LC_COLLATE does not use copy "iso14651_t1"
3369   [22519] localedata: is_IS LC_COLLATE does not use copy "iso14651_t1"
3370   [22524] localedata: lt_LT  LC_COLLATE does not use copy "iso14651_t1"
3371   [22527] localedata: tr_TR  LC_COLLATE does not use copy "iso14651_t1"
3372   [22534] localedata: Collation rules for Serbian and Bosnian should be the
3373     same as for Croatian
3374   [22561] math: [DR#471] cacosh (0 + iNaN) should return NaN +/- i pi/2
3375   [22568] math: [DR#471] ctanh (0 + iNaN), ctanh (0 + i Inf)
3376   [22577] libc: missing newline after "cannot allocate TLS data structures
3377     for initial thread"
3378   [22588] manual: manual/conf.texi: missing underscore in front of
3379     SC_SSIZE_MAX
3380   [22593] math: nextafter and nexttoward are declared with const attribute
3381   [22596] manual: manual: finite(nan) wrongly described as returning nonzero
3382   [22603] string: ia64 memchr overflows internal pointer check
3383   [22605] libc: SH clone does not set the exit code correctly
3384   [22606] dynamic-link: Incorrect array size computation in _dl_init_paths
3385     (CVE-2017-1000408)
3386   [22607] dynamic-link: Buffer Overflow in _dl_init_paths (CVE-2017-1000409)
3387   [22611] malloc: malloc/tst-realloc wrongly assumes that errno must not be
3388     modified in case of success
3389   [22614] build: gcc: error: unrecognized command line option ‘-no-pie’
3390   [22615] manual: manual: ambiguous wording about errno value in case of
3391     success
3392   [22624] libc: MIPS setjmp() saves incorrect 'o0' register in --enable-
3393     stack-protector=all
3394   [22625] dynamic-link: RPATH $ORIGIN replaced by PWD for AT_SECURE/SUID
3395     binaries or if /proc is not mounted (CVE-2017-16997)
3396   [22627] dynamic-link: $ORIGIN in $LD_LIBRARY_PATH is substituted twice
3397   [22630] build: $(no-pie-ldflag) is no longer effective
3398   [22631] math: [m68k] Bad const attributes in bits/mathinline.h
3399   [22635] nptl: pthread_self returns NULL before libpthread is loaded
3400   [22636] nptl: PTHREAD_STACK_MIN is too small on x86-64
3401   [22637] nptl: guard size is subtracted from thread stack size instead of
3402     adding it on top
3403   [22648] libc: getrlimit/setrlimit with RLIM_INFINITY broken on alpha
3404   [22657] localedata: hu_HU: Avoid double space in date
3405   [22660] math: fmax, fmin sNaN handling on alpha
3406   [22664] libc: New warning of GCC8
3407   [22665] math: alpha: ceil and floor raise inexact exceptions
3408   [22666] math: alpha: trunc raise inexact exceptions
3409   [22667] libc: makecontext lacks stack alignment on i386
3410   [22678] libc: prlimit fails for RLIM_INFINITY values on 32-bit machines
3411   [22679] libc: getcwd(3) can succeed without returning an absolute path
3412     (CVE-2018-1000001)
3413   [22685] libc: PowerPC: Static AT_SECURE binaries segfault with lock-
3414     elision and tunables
3415   [22687] math: [powerpc-nofpu] complex long double functions spurious
3416     "invalid" exception
3417   [22688] math: [powerpc-nofpu] remainderl wrong sign of zero result
3418   [22690] math: [ldbl-128ibm] lrintl, lroundl missing "invalid" exceptions
3419   [22691] math: [powerpc-nofpu] fmaxmagl, fminmagl spurious "invalid"
3420     exception
3421   [22693] math: [ldbl-128ibm] log1pl (-qNaN) spurious "invalid" exception
3422   [22697] math: [powerpc] llround spurious "inexact" exceptions on 32-bit
3423     power4
3424   [22701] nis: Incomplete removal of libnsl
3425   [22702] math: [powerpc-nofpu] nearbyintl traps with trapping "inexact"
3426   [22707] libc: Missing defines in elf.h for DF_1_STUB and DF_1_PIE.
3427   [22715] dynamic-link: FAIL: elf/tst-audit10
3428   [22719] libc: Backtrace tests fail on hppa
3429   [22742] libc: [aarch64] mcontext_t __reserved field got renamed
3430   [22743] nptl: __pthread_register_cancel corrupts stack after f81ddabffd
3431   [22765] crypt: (struct crypt_data *data)->initialized is not set to zero
3432     before the first call to crypt_r () in crypt/badsalttest.c
3435 Version 2.26
3437 Major new features:
3439 * A per-thread cache has been added to malloc. Access to the cache requires
3440   no locks and therefore significantly accelerates the fast path to allocate
3441   and free small amounts of memory. Refilling an empty cache requires locking
3442   the underlying arena. Performance measurements show significant gains in a
3443   wide variety of user workloads. Workloads were captured using a special
3444   instrumented malloc and analyzed with a malloc simulator. Contributed by
3445   DJ Delorie with the help of Florian Weimer, and Carlos O'Donell.
3447 * Unicode 10.0.0 Support: Character encoding, character type info, and
3448   transliteration tables are all updated to Unicode 10.0.0, using
3449   generator scripts contributed by Mike FABIAN (Red Hat).
3450   These updates cause user visible changes, especially the changes in
3451   wcwidth for many emoji characters cause problems when emoji sequences
3452   are rendered with pango, see for example:
3453   https://bugzilla.gnome.org/show_bug.cgi?id=780669#c5
3455 * Collation of Hungarian has been overhauled and is now consistent with "The
3456   Rules of Hungarian Orthography, 12th edition" (Bug 18934).  Contributed by
3457   Egmont Koblinger.
3459 * Improvements to the DNS stub resolver, contributed by Florian Weimer:
3461   - The GNU C Library will now detect when /etc/resolv.conf has been
3462     modified and reload the changed configuration.  The new resolver option
3463     “no-reload” (RES_NORELOAD) disables this behavior.
3465   - The GNU C Library now supports an arbitrary number of search domains
3466     (configured using the “search” directive in /etc/resolv.conf);
3467     previously, there was a hard limit of six domains.  For backward
3468     compatibility, applications that directly modify the ‘_res’ global
3469     object are still limited to six search domains.
3471   - When the “rotate” (RES_ROTATE) resolver option is active, the GNU C
3472     Library will now randomly pick a name server from the configuration as a
3473     starting point.  (Previously, the second name server was always used.)
3475 * The tunables feature is now enabled by default.  This allows users to tweak
3476   behavior of the GNU C Library using the GLIBC_TUNABLES environment variable.
3478 * New function reallocarray, which resizes an allocated block (like realloc)
3479   to the product of two sizes, with a guaranteed clean failure upon integer
3480   overflow in the multiplication.  Originally from OpenBSD, contributed by
3481   Dennis Wölfing and Rüdiger Sonderfeld.
3483 * New wrappers for the Linux-specific system calls preadv2 and pwritev2.
3484   These are extended versions of preadv and pwritev, respectively, taking an
3485   additional flags argument.  The set of supported flags depends on the
3486   running kernel; full support currently requires kernel 4.7 or later.
3488 * posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to
3489   create a new session ID for the spawned process.  This feature is
3490   scheduled to be added to the next major revision of POSIX; for the time
3491   being, it is available under _GNU_SOURCE.
3493 * errno.h is now safe to use from C-preprocessed assembly language on all
3494   supported operating systems.  In this context, it will only define the
3495   Exxxx constants, as preprocessor macros expanding to integer literals.
3497 * On ia64, powerpc64le, x86-32, and x86-64, the math library now implements
3498   128-bit floating point as defined by ISO/IEC/IEEE 60559:2011 (IEEE
3499   754-2008) and ISO/IEC TS 18661-3:2015.  Contributed by Paul E. Murphy,
3500   Gabriel F. T. Gomes, Tulio Magno Quites Machado Filho, and Joseph Myers.
3502   To compile programs that use this feature, the compiler must support
3503   128-bit floating point with the type name _Float128 (as defined by TS
3504   18661-3) or __float128 (the nonstandard name used by GCC for C++, and for
3505   C prior to version 7).  _GNU_SOURCE or __STDC_WANT_IEC_60559_TYPES_EXT__
3506   must be defined to make the new interfaces visible.
3508   The new functions and macros correspond to those present for other
3509   floating-point types (except for a few obsolescent interfaces not
3510   supported for the new type), with F128 or f128 suffixes; for example,
3511   strtof128, HUGE_VAL_F128 and cosf128.  Following TS 18661-3, there are no
3512   printf or scanf formats for the new type; the strfromf128 and strtof128
3513   interfaces should be used instead.
3515 Deprecated and removed features, and other changes affecting compatibility:
3517 * The synchronization that pthread_spin_unlock performs has been changed to
3518   now be equivalent to a C11 atomic store with release memory order to the
3519   spin lock's memory location.  Previously, several (but not all)
3520   architectures used stronger synchronization (e.g., containing what is
3521   often called a full barrier).  This change can improve performance, but
3522   may affect odd fringe uses of spin locks that depend on the previous
3523   behavior (e.g., using spin locks as atomic variables to try to implement
3524   Dekker's mutual exclusion algorithm).
3526 * The port to Native Client running on ARMv7-A (--host=arm-nacl) has been
3527   removed.
3529 * Sun RPC is deprecated.  The rpcgen program, librpcsvc, and Sun RPC headers
3530   will only be built and installed when the GNU C Library is configured with
3531   --enable-obsolete-rpc.  This allows alternative RPC implementations, such
3532   as TIRPC or rpcsvc-proto, to be used.
3534 * The NIS(+) name service modules, libnss_nis, libnss_nisplus, and
3535   libnss_compat, are deprecated, and will not be built or installed by
3536   default.
3538   The NIS(+) support library, libnsl, is also deprecated.  By default, a
3539   compatibility shared library will be built and installed, but not headers
3540   or development libraries. Only a few NIS-related programs require this
3541   library.  (In particular, the GNU C Library has never required programs
3542   that use 'gethostbyname' to be linked with libnsl.)
3544   Replacement implementations based on TIRPC, which additionally support
3545   IPv6, are available from <https://github.com/thkukuk/>.  The configure
3546   option --enable-obsolete-nsl will cause libnsl's headers, and the NIS(+)
3547   name service modules, to be built and installed.
3549 * The DNS stub resolver no longer performs EDNS fallback.  If EDNS or DNSSEC
3550   support is enabled, the configured recursive resolver must support EDNS.
3551   (Responding to EDNS-enabled queries with responses which are not
3552   EDNS-enabled is fine, but FORMERR responses are not.)
3554 * res_mkquery and res_nmkquery no longer support the IQUERY opcode.  DNS
3555   servers have not supported this opcode for a long time.
3557 * The _res_opcodes variable has been removed from libresolv.  It had been
3558   exported by accident.
3560 * <string.h> no longer includes inline versions of any string functions,
3561   as this kind of optimization is better done by the compiler.  The macros
3562   __USE_STRING_INLINES and __NO_STRING_INLINES no longer have any effect.
3564 * The nonstandard header <xlocale.h> has been removed.  Most programs should
3565   use <locale.h> instead.  If you have a specific need for the definition of
3566   locale_t with no other declarations, please contact
3567   libc-alpha@sourceware.org and explain.
3569 * The obsolete header <sys/ultrasound.h> has been removed.
3571 * The obsolete signal constant SIGUNUSED is no longer defined by <signal.h>.
3573 * The obsolete function cfree has been removed.  Applications should use
3574   free instead.
3576 * The stack_t type no longer has the name struct sigaltstack.  This changes
3577   the C++ name mangling for interfaces involving this type.
3579 * The ucontext_t type no longer has the name struct ucontext.  This changes
3580   the C++ name mangling for interfaces involving this type.
3582 * On M68k GNU/Linux and MIPS GNU/Linux, the fpregset_t type no longer has
3583   the name struct fpregset.  On Nios II GNU/Linux, the mcontext_t type no
3584   longer has the name struct mcontext.  On SPARC GNU/Linux, the struct
3585   mc_fq, struct rwindow, struct fpq and struct fq types are no longer
3586   defined in sys/ucontext.h, the mc_fpu_t type no longer has the name struct
3587   mc_fpu, the gwindows_t type no longer has the name struct gwindows and the
3588   fpregset_t type no longer has the name struct fpu.  This changes the C++
3589   name mangling for interfaces involving those types.
3591 * On S/390 GNU/Linux, the constants defined by <sys/ptrace.h> have been
3592   synced with the kernel:
3594     - PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS and PTRACE_SETFPREGS
3595       are not supported on this architecture and have been removed.
3597     - PTRACE_SINGLEBLOCK, PTRACE_SECCOMP_GET_FILTER, PTRACE_PEEKUSR_AREA,
3598       PTRACE_POKEUSR_AREA, PTRACE_GET_LAST_BREAK, PTRACE_ENABLE_TE,
3599       PTRACE_DISABLE_TE and PTRACE_TE_ABORT_RAND have been added.
3601   Programs that assume the GET/SETREGS ptrace requests are universally
3602   available will now fail to build, instead of malfunctioning at runtime.
3604 Changes to build and runtime requirements:
3606 * Linux kernel 3.2 or later is required at runtime, on all architectures
3607   supported by that kernel.  (This is a change from version 2.25 only for
3608   x86-32 and x86-64.)
3610 * GNU Binutils 2.25 or later is now required to build the GNU C Library.
3612 * On most architectures, GCC 4.9 or later is required to build the GNU C
3613   Library.  On powerpc64le, GCC 6.2 or later is required.
3615   Older GCC versions and non-GNU compilers are still supported when
3616   compiling programs that use the GNU C Library.  (We do not know exactly
3617   how old, and some GNU extensions to C may be _de facto_ required.  If you
3618   are interested in helping us make this statement less vague, please
3619   contact libc-alpha@sourceware.org.)
3621 Security related changes:
3623 * The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes,
3624   to avoid fragmentation-based spoofing attacks (CVE-2017-12132).
3626 * LD_LIBRARY_PATH is now ignored in binaries running in privileged AT_SECURE
3627   mode to guard against local privilege escalation attacks (CVE-2017-1000366).
3629 * Avoid printing a backtrace from the __stack_chk_fail function since it is
3630   called on a corrupt stack and a backtrace is unreliable on a corrupt stack
3631   (CVE-2010-3192).
3633 * A use-after-free vulnerability in clntudp_call in the Sun RPC system has been
3634   fixed (CVE-2017-12133).
3636 The following bugs are resolved with this release:
3638   [984] network: Respond to changed resolv.conf in gethostbyname
3639   [5010] network: sunrpc service cleanup causes unwanted port mapper traffic
3640   [12068] localedata: sc_IT: misspelled yesexpr/day/abday/mon/abmon/date_fmt
3641     fields
3642   [12189] libc: __stack_chk_fail should not attempt a backtrace
3643     (CVE-2010-3192)
3644   [14096] time: Race condition on timezone/tst-timezone.out
3645   [14172] localedata: az_IR: new locale
3646   [14995] build: glibc fails to build if gold is the default linker, even if
3647     ld.bfd is available
3648   [15998] build: [powerpc] Set arch_minimum_kernel for powerpc LE
3649   [16637] network: inet_pton function is accepting IPv6 with bad format
3650   [16640] string: string/strtok.c: undefined behaviour inconsistent between
3651     x86 and other generic code
3652   [16875] localedata: ko_KR: fix lang_name
3653   [17225] localedata: ar_SY: localized month names for May and June are
3654     incorrect
3655   [17297] localedata: da_DK: wrong date_fmt string
3656   [18907] stdio: Incorrect order of __wur __THROW in <printf.h>
3657   [18934] localedata: hu_HU: collate: fix multiple bugs and add tests
3658   [18988] nptl: pthread wastes memory with mlockall(MCL_FUTURE)
3659   [19066] localedata: ar_SA abbreviated day and month names are in English
3660   [19569] network: resolv: Support an arbitrary number of search domains
3661   [19570] network: Implement random DNS server selection in the stub
3662     resolver
3663   [19838] locale: localedef fails on PA-RISC
3664   [19919] localedata: iso14651_t1_common: Correct the Malayalam sorting
3665     order of 0D36 and 0D37
3666   [19922] localedata: iso14651_t1_common: Define collation for Malayalam
3667     chillu characters
3668   [20098] libc: FAIL: debug/backtrace-tst on hppa
3669   [20257] network: sunrpc: clntudp_call does not enforce timeout when
3670     receiving data
3671   [20275] localedata: locale day/abday/mon/abmon should not have trailing
3672     whitespace
3673   [20313] localedata: Update locale data to Unicode 9.0
3674   [20424] manual: Document how to provide a malloc replacement
3675   [20496] localedata: agr_PE: new language locale Awajún / Aguaruna (agr)
3676     for Peru
3677   [20686] locale: Add el_GR@euro to SUPPORTED.
3678   [20831] dynamic-link: _dl_map_segments does not test for __mprotect
3679     failures consistently
3680   [21015] dynamic-link: Document and fix --enable-bind-now
3681   [21016] nptl: pthread_cond support is broken on hppa
3682   [21029] libc: glibc-2.23 (and later) fails to compile with -fno-omit-
3683     frame-pointer on i386
3684   [21049] libc: segfault in longjmp_chk() due to clobbered processor
3685     register
3686   [21075] libc: unused assignment to %g4 in sparc/sparc{64,32}/clone.S
3687   [21088] libc: Build fails with --enable-static-nss
3688   [21094] math: cosf(1.57079697) has 3 ulp error on targets where the
3689     generic c code is used
3690   [21109] libc: Tunables broken on big-endian
3691   [21112] math: powf has large ulp errors with base close to 1 and exponent
3692     around 4000
3693   [21115] network: sunrpc: Use-after-free in error path in clntudp_call
3694     (CVE-2017-12133)
3695   [21120] malloc: glibc malloc is incompatible with GCC 7
3696   [21130] math: Incorrect return from y0l (-inf) and y1l (-inf) when linking
3697     with -lieee
3698   [21134] math: Exception (divide by zero) not set for y0/y1 (0.0) and y0/y1
3699     (-0.0) when linking with -lieee
3700   [21171] math: log10, log2 and lgamma return incorrect results
3701   [21179] libc: handle R_SPARC_DISP64 and R_SPARC_REGISTER relocs
3702   [21182] libc: __memchr_sse2: regression in glibc-2.25 on i686
3703   [21207] localedata: ce_RU: update weekdays from CLDR
3704   [21209] dynamic-link: LD_HWCAP_MASK read in setuid binaries
3705   [21217] localedata: Update months from CLDR-31
3706   [21232] libc: miss posix_fadvise64 on MIPS64 when static linking
3707   [21243] libc: support_delete_temp_file should issue warning for failed
3708     remove()
3709   [21244] libc: support resolv_test_start() socket fd close should be
3710     checked for errors.
3711   [21253] libc: localedef randomly segfaults when using -fstack-check due to
3712     new posix_spawn implementation
3713   [21258] dynamic-link: Branch predication in _dl_runtime_resolve_avx512_opt
3714     leads to lower CPU frequency
3715   [21259] libc: [alpha] termios.h missing IXANY for POSIX
3716   [21261] libc: [sparc64] bits/setjmp.h namespace
3717   [21267] network: [mips] bits/socket.h IOC* namespace
3718   [21268] libc: [alpha] termios.h NL2, NL3 namespace
3719   [21270] libc: mmap64 silently truncates large offset values
3720   [21275] libc: posix_spawn always crashes on ia64 now
3721   [21277] libc: [alpha] termios.h missing IUCLC for UNIX98 and older
3722   [21280] math: [powerpc] logbl for POWER7 return incorrect results
3723   [21289] libc: Incorrect declaration for 32-bit platforms with
3724     _FILE_OFFSET_BITS=64 causes build error
3725   [21295] network: GETAI(AF_UNSPEC) drops IPv6 addresses if nss module does
3726     not support gethostbyname4_r
3727   [21298] nptl: rwlock can deadlock on frequent reader/writer phase
3728     switching
3729   [21338] malloc: mallopt M_ARENA_MAX doesn't set the maximum number of
3730     arenas
3731   [21340] libc: Support POSIX_SPAWN_SETSID
3732   [21357] libc: unwind-dw2-fde deadlock when using AddressSanitizer
3733   [21359] network: ns_name_pack needs additional byte in destination buffer
3734   [21361] network: resolv: Reduce advertised EDNS0 buffer size to guard
3735     against fragmentation attacks (CVE-2017-12132)
3736   [21369] network: resolv: Remove EDNS fallback
3737   [21371] libc: Missing timespec definition when compiled with _XOPEN_SOURCE
3738     and _POSIX_C_SOURCE
3739   [21386] nptl: Assertion in fork for distinct parent PID is incorrect
3740   [21391] dynamic-link: x86: Set dl_platform and dl_hwcap from CPU features
3741   [21393] stdio: Missing dup3 error check in freopen, freopen64
3742   [21396] libc: Use AVX2 memcpy/memset on Skylake server
3743   [21399] localedata: Bad description for U00EC in
3744     localedata/charmaps/CP1254
3745   [21411] malloc: realloc documentation error
3746   [21426] network: sys/socket.h uio.h namespace
3747   [21428] libc: [aarch64] tst-backtrace5 testsuite failure
3748   [21445] libc: signal.h bsd_signal namespace
3749   [21455] network: Network headers stdint.h namespace
3750   [21474] network: resolv: res_init does not use RES_DFLRETRY (2) but 4 for
3751     retry value
3752   [21475] network: resolv: Overlong search path is truncated mid-label
3753   [21511] libc: sigstack namespace
3754   [21512] libc: clone() ends up calling exit_group() through _exit() wrapper
3755   [21514] libc: sysdeps/unix/sysv/linux/sys/syscall.h:31:27: fatal error:
3756     bits/syscall.h: No  such file or directory
3757   [21517] libc: struct sigaltstack namespace
3758   [21528] dynamic-link: Duplicated minimal strtoul implementations in ld.so
3759   [21533] localedata: Update locale data to Unicode 10.0
3760   [21537] libc:
3761     ../sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S:44: Error:
3762     junk at end of line, first unrecognized character is `@'
3763   [21538] libc: SIG_HOLD missing for XPG4
3764   [21539] libc: S390: Mismatch between kernel and glibc ptrace.h with
3765     request 12: PTRACE_SINGLEBLOCK vs PTRACE_GETREGS.
3766   [21542] libc: Use conservative default for sysconf (_SC_NPROCESSORS_ONLN)
3767   [21543] libc: sigevent namespace
3768   [21548] libc: [mips] get/set/make/swap context for MIPS O32 assume wrong
3769     size for general purpose registers in mcontext_t structure
3770   [21550] libc: sigwait namespace
3771   [21552] libc: XPG4 bsd_signal namespace
3772   [21554] libc: sigpause namespace
3773   [21560] libc: sys/wait.h signal.h namespace
3774   [21561] libc: waitid namespace
3775   [21573] nptl: GCC 7: /usr/bin/install: cannot remove
3776     '/usr/include/stdlib.h': Permission denied
3777   [21575] libc: sys/wait.h missing struct rusage definition
3778   [21584] libc: sigaltstack etc namespace
3779   [21597] libc: siginterrupt namespace
3780   [21607] math: hppa: FAIL: math/test-tgmath
3781   [21609] dynamic-link: Incomplete workaround for GCC __tls_get_addr ABI
3782     issue on x86-64
3783   [21622] libc: [tile] missing SA_* for POSIX.1:2008
3784   [21624] dynamic-link: ld.so: Unsafe alloca allows local attackers to alias
3785     stack and heap (CVE-2017-1000366)
3786   [21625] libc: wait3 namespace
3787   [21654] nss: Incorrect pointer alignment in NSS group merge result
3788     construction
3789   [21657] network: Parse interface zone id for node-local multicast
3790   [21662] string: memcmp-avx2-movbe.S lacks saturating subtraction for
3791     between_2_3
3792   [21666] libc: .symver is used on common symbol
3793   [21668] network: resolv: res_init cross-thread broadcast introduces race
3794     conditions
3795   [21687] math: tgmath.h totalorder, totalordermag return type
3796   [21694] locale: Current Glibc Locale Does Not Support Tok-Pisin and Fiji
3797     Hindi Locale
3798   [21696] libc: Incorrect assumption of of __cpu_mask in
3799     posix/sched_cpucount.c
3800   [21697] libc: sysdeps/posix/spawni.c: 2 * suspicious condition ?
3801   [21706] localedata: yesstr and nostr  are missing for Breton [LC_MESSAGES]
3802     locale
3803   [21707] math: ppc64le: Invalid IFUNC resolver from libgcc calls getauxval,
3804     leading to relocation crash
3805   [21709] libc: resolv_conf.c:552: update_from_conf: Assertion
3806     `resolv_conf_matches (resp, conf)' failed.
3807   [21710] localedata: Added Samoan language locale for Samoa
3808   [21711] localedata: Pashto yesstr/nostr locale are missing
3809   [21715] nptl: sysdeps/nptl/bits/pthreadtypes.h: typedef guard
3810     __have_pthread_attr_t can cause redefinition of typedef ‘pthread_attr_t’
3811   [21721] localedata: Incorrect Full Weekday names for ks_IN@devanagari
3812   [21723] localedata: yesstr/nostr missing for Chinese language locale
3813   [21724] localedata: yesstr and nostr  are missing for  Xhosa [LC_MESSAGES]
3814     locale
3815   [21727] localedata: yesstr and nostr  are missing for Tsonga [LC_MESSAGES]
3816     locale
3817   [21728] localedata: New Locale for Tongan language
3818   [21729] localedata: incorrect LC_NAME fields for hi_IN
3819   [21733] localedata: yesstr and nostr  are missing for zh_HK
3820   [21734] localedata: Missing yesstr and nostr  are for kw_GB
3821   [21738] libc: misc/tst-preadvwritev2 and misc/tst-preadvwritev64v2 fail
3822   [21741] libc: Undefined __memmove_chk_XXX and __memset_chk_XXX in libc.a
3823   [21742] libc: _dl_num_cache_relocations is undefined in libc.a
3824   [21743] localedata: ks_IN@devanagari: abday strings mismatch the day
3825     strings
3826   [21744] libc: Tests failing on --enable-tunables --enable-stack-
3827     protector=all
3828   [21749] localedata: Wrong abbreviated day name (“abday”) for
3829     ar_JO/ar_LB/ar_SY
3830   [21756] localedata: missing yesstr, nostr  for nds_DE and nds_NL
3831   [21757] localedata: missing yesstr, nostr  for pap_AW and pap_CW
3832   [21759] localedata: missing yesstr and nostr for Tigrinya
3833   [21760] localedata: Fix LC_MESSAGES and LC_ADDRESS for anp_IN
3834   [21766] localedata: Wrong LC_MESSAGES for om_ET Locale
3835   [21767] localedata: Missing Bislama locales
3836   [21768] localedata: Missing yesstr and nostr for aa_ET
3837   [21770] localedata: Missing  Field in li_NL
3838   [21778] nptl: Robust mutex may deadlock
3839   [21779] libc: MicroBlaze segfaults when loading libpthread
3840   [21783] localedata: Fix int_select international_call_prefixes
3841   [21784] localedata: Inconsistency  in country_isbn
3842   [21788] localedata: Missing  Country Postal Abbreviations
3843   [21794] localedata: Added-country_isbn-for-Italy
3844   [21795] localedata: Add/Fix country_isbn for France
3845   [21796] localedata: Added country_isbn for Republic of Korea
3846   [21797] localedata: Fix inconsistency in country_isbn and missing prefixes
3847   [21799] localedata: Added int_select international_call_prefixes
3848   [21801] localedata: Added int_select international_call_prefixes
3849   [21804] nptl: Double semicolon in thread-shared-types.h
3850   [21807] localedata: LC_ADDRESS fix for pap_CW
3851   [21808] localedata: Fix LC_ADDRESS for pap_AW
3852   [21821] localedata: Added country_name in mai_IN
3853   [21822] localedata: Fix LC_TIME for mai_IN
3854   [21823] localedata: missing yesstr, nostr  for sa_IN
3855   [21825] localedata: Fix name_mrs for mag_IN
3856   [21828] localedata: 2.26 changelog should mention user visible changes
3857     with unicode 9.0
3858   [21835] localedata: Added Maithili language locale for Nepal
3859   [21838] localedata: Removed redundant data for the_NP
3860   [21839] localedata: Fix LC_MONETARY for ta_LK
3861   [21844] localedata: Fix Latin characters and Months Sequence.
3862   [21848] localedata: Fix mai_NP Title Name
3865 Version 2.25
3867 * The feature test macro __STDC_WANT_LIB_EXT2__, from ISO/IEC TR
3868   24731-2:2010, is supported to enable declarations of functions from that
3869   TR.  Note that not all functions from that TR are supported by the GNU C
3870   Library.
3872 * The feature test macro __STDC_WANT_IEC_60559_BFP_EXT__, from ISO/IEC TS
3873   18661-1:2014, is supported to enable declarations of functions and macros
3874   from that TS.  Note that not all features from that TS are supported by
3875   the GNU C Library.
3877 * The feature test macro __STDC_WANT_IEC_60559_FUNCS_EXT__, from ISO/IEC TS
3878   18661-4:2015, is supported to enable declarations of functions and macros
3879   from that TS.  Note that most features from that TS are not supported by
3880   the GNU C Library.
3882 * The nonstandard feature selection macros _REENTRANT and _THREAD_SAFE are
3883   now treated as compatibility synonyms for _POSIX_C_SOURCE=199506L.
3884   Since the GNU C Library defaults to a much newer revision of POSIX, this
3885   will only affect programs that specifically request an old conformance
3886   mode.  For instance, a program compiled with -std=c89 -D_REENTRANT will
3887   see a change in the visible declarations, but a program compiled with
3888   just -D_REENTRANT, or -std=c99 -D_POSIX_C_SOURCE=200809L -D_REENTRANT,
3889   will not.
3891   Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
3892   defined by all multithreaded code, but glibc has not required this for
3893   many years.
3895 * The inclusion of <sys/sysmacros.h> by <sys/types.h> is deprecated.  This
3896   means that in a future release, the macros “major”, “minor”, and “makedev”
3897   will only be available from <sys/sysmacros.h>.
3899   These macros are not part of POSIX nor XSI, and their names frequently
3900   collide with user code; see for instance glibc bug 19239 and Red Hat bug
3901   130601.  <stdlib.h> includes <sys/types.h> under _GNU_SOURCE, and C++ code
3902   presently cannot avoid being compiled under _GNU_SOURCE, exacerbating the
3903   problem.
3905 * New <fenv.h> features from TS 18661-1:2014 are added to libm: the
3906   fesetexcept, fetestexceptflag, fegetmode and fesetmode functions, the
3907   femode_t type and the FE_DFL_MODE and FE_SNANS_ALWAYS_SIGNAL macros.
3909 * Integer width macros from TS 18661-1:2014 are added to <limits.h>:
3910   CHAR_WIDTH, SCHAR_WIDTH, UCHAR_WIDTH, SHRT_WIDTH, USHRT_WIDTH, INT_WIDTH,
3911   UINT_WIDTH, LONG_WIDTH, ULONG_WIDTH, LLONG_WIDTH, ULLONG_WIDTH; and to
3912   <stdint.h>: INT8_WIDTH, UINT8_WIDTH, INT16_WIDTH, UINT16_WIDTH,
3913   INT32_WIDTH, UINT32_WIDTH, INT64_WIDTH, UINT64_WIDTH, INT_LEAST8_WIDTH,
3914   UINT_LEAST8_WIDTH, INT_LEAST16_WIDTH, UINT_LEAST16_WIDTH,
3915   INT_LEAST32_WIDTH, UINT_LEAST32_WIDTH, INT_LEAST64_WIDTH,
3916   UINT_LEAST64_WIDTH, INT_FAST8_WIDTH, UINT_FAST8_WIDTH, INT_FAST16_WIDTH,
3917   UINT_FAST16_WIDTH, INT_FAST32_WIDTH, UINT_FAST32_WIDTH, INT_FAST64_WIDTH,
3918   UINT_FAST64_WIDTH, INTPTR_WIDTH, UINTPTR_WIDTH, INTMAX_WIDTH,
3919   UINTMAX_WIDTH, PTRDIFF_WIDTH, SIG_ATOMIC_WIDTH, SIZE_WIDTH, WCHAR_WIDTH,
3920   WINT_WIDTH.
3922 * New <math.h> features are added from TS 18661-1:2014:
3924   - Signaling NaN macros: SNANF, SNAN, SNANL.
3926   - Nearest integer functions: roundeven, roundevenf, roundevenl, fromfp,
3927     fromfpf, fromfpl, ufromfp, ufromfpf, ufromfpl, fromfpx, fromfpxf,
3928     fromfpxl, ufromfpx, ufromfpxf, ufromfpxl.
3930   - llogb functions: the llogb, llogbf and llogbl functions, and the
3931     FP_LLOGB0 and FP_LLOGBNAN macros.
3933   - Max-min magnitude functions: fmaxmag, fmaxmagf, fmaxmagl, fminmag,
3934     fminmagf, fminmagl.
3936   - Comparison macros: iseqsig.
3938   - Classification macros: iscanonical, issubnormal, iszero.
3940   - Total order functions: totalorder, totalorderf, totalorderl,
3941     totalordermag, totalordermagf, totalordermagl.
3943   - Canonicalize functions: canonicalize, canonicalizef, canonicalizel.
3945   - NaN functions: getpayload, getpayloadf, getpayloadl, setpayload,
3946     setpayloadf, setpayloadl, setpayloadsig, setpayloadsigf, setpayloadsigl.
3948 * The functions strfromd, strfromf, and strfroml, from ISO/IEC TS 18661-1:2014,
3949   are added to libc.  They convert a floating-point number into string.
3951 * Most of glibc can now be built with the stack smashing protector enabled.
3952   It is recommended to build glibc with --enable-stack-protector=strong.
3953   Implemented by Nick Alcock (Oracle).
3955 * The function explicit_bzero, from OpenBSD, has been added to libc.  It is
3956   intended to be used instead of memset() to erase sensitive data after use;
3957   the compiler will not optimize out calls to explicit_bzero even if they
3958   are "unnecessary" (in the sense that no _correct_ program can observe the
3959   effects of the memory clear).
3961 * On ColdFire, MicroBlaze, Nios II and SH3, the float_t type is now defined
3962   to float instead of double.  This does not affect the ABI of any libraries
3963   that are part of the GNU C Library, but may affect the ABI of other
3964   libraries that use this type in their interfaces.
3966 * On x86_64, when compiling with -mfpmath=387 or -mfpmath=sse+387, the
3967   float_t and double_t types are now defined to long double instead of float
3968   and double.  These options are not the default, and this does not affect
3969   the ABI of any libraries that are part of the GNU C Library, but it may
3970   affect the ABI of other libraries that use this type in their interfaces,
3971   if they are compiled or used with those options.
3973 * The getentropy and getrandom functions, and the <sys/random.h> header file
3974   have been added.
3976 * The buffer size for byte-oriented stdio streams is now limited to 8192
3977   bytes by default.  Previously, on Linux, the default buffer size on most
3978   file systems was 4096 bytes (and thus remains unchanged), except on
3979   network file systems, where the buffer size was unpredictable and could be
3980   as large as several megabytes.
3982 * The <sys/quota.h> header now includes the <linux/quota.h> header.  Support
3983   for the Linux quota interface which predates kernel version 2.4.22 has
3984   been removed.
3986 * The malloc_get_state and malloc_set_state functions have been removed.
3987   Already-existing binaries that dynamically link to these functions will
3988   get a hidden implementation in which malloc_get_state is a stub.  As far
3989   as we know, these functions are used only by GNU Emacs and this change
3990   will not adversely affect already-built Emacs executables.  Any undumped
3991   Emacs executables, which normally exist only during an Emacs build, should
3992   be rebuilt by re-running “./configure; make” in the Emacs build tree.
3994 * The “ip6-dotint” and “no-ip6-dotint” resolver options, and the
3995   corresponding RES_NOIP6DOTINT flag from <resolv.h> have been removed.
3996   “no-ip6-dotint” had already been the default, and support for the
3997   “ip6-dotint” option was removed from the Internet in 2006.
3999 * The "ip6-bytestring" resolver option and the corresponding RES_USEBSTRING
4000   flag from <resolv.h> have been removed.  The option relied on a
4001   backwards-incompatible DNS extension which was never deployed on the
4002   Internet.
4004 * The flags RES_AAONLY, RES_PRIMARY, RES_NOCHECKNAME, RES_KEEPTSIG,
4005   RES_BLAST defined in the <resolv.h> header file have been deprecated.
4006   They were already unimplemented.
4008 * The "inet6" option in /etc/resolv.conf and the RES_USE_INET6 flag for
4009   _res.flags are deprecated.  The flag was standardized in RFC 2133, but
4010   removed again from the IETF name lookup interface specification in RFC
4011   2553.  Applications should use getaddrinfo instead.
4013 * DNSSEC-related declarations and definitions have been removed from the
4014   <arpa/nameser.h> header file, and libresolv will no longer attempt to
4015   decode the data part of DNSSEC record types.  Previous versions of glibc
4016   only implemented minimal support for the previous version of DNSSEC, which
4017   is incompatible with the currently deployed version.
4019 * The resource record type classification macros ns_t_qt_p, ns_t_mrr_p,
4020   ns_t_rr_p, ns_t_udp_p, ns_t_xfr_p have been removed from the
4021   <arpa/nameser.h> header file because the distinction between RR types and
4022   meta-RR types is not officially standardized, subject to revision, and
4023   thus not suitable for encoding in a macro.
4025 * The types res_sendhookact, res_send_qhook, re_send_rhook, and the qhook
4026   and rhook members of the res_state type in <resolv.h> have been removed.
4027   The glibc stub resolver did not support these hooks, but the header file
4028   did not reflect that.
4030 * For multi-arch support it is recommended to use a GCC which has
4031   been built with support for GNU indirect functions.  This ensures
4032   that correct debugging information is generated for functions
4033   selected by IFUNC resolvers.  This support can either be enabled by
4034   configuring GCC with '--enable-gnu-indirect-function', or by
4035   enabling it by default by setting 'default_gnu_indirect_function'
4036   variable for a particular architecture in the GCC source file
4037   'gcc/config.gcc'.
4039 * GDB pretty printers have been added for mutex and condition variable
4040   structures in POSIX Threads. When installed and loaded in gdb these pretty
4041   printers show various pthread variables in human-readable form when read
4042   using the 'print' or 'display' commands in gdb.
4044 * Tunables feature added to allow tweaking of the runtime for an application
4045   program.  This feature can be enabled with the '--enable-tunables' configure
4046   flag.  The GNU C Library manual has details on usage and README.tunables has
4047   instructions on adding new tunables to the library.
4049 * A new version of condition variables functions have been implemented in
4050   the NPTL implementation of POSIX Threads to provide stronger ordering
4051   guarantees.
4053 * A new version of pthread_rwlock functions have been implemented to use a more
4054   scalable algorithm primarily through not using a critical section anymore to
4055   make state changes.
4057 Security related changes:
4059 * On ARM EABI (32-bit), generating a backtrace for execution contexts which
4060   have been created with makecontext could fail to terminate due to a
4061   missing .cantunwind annotation.  This has been observed to lead to a hang
4062   (denial of service) in some Go applications compiled with gccgo.  Reported
4063   by Andreas Schwab.  (CVE-2016-6323)
4065 * The DNS stub resolver functions would crash due to a NULL pointer
4066   dereference when processing a query with a valid DNS question type which
4067   was used internally in the implementation.  The stub resolver now uses a
4068   question type which is outside the range of valid question type values.
4069   (CVE-2015-5180)
4071 The following bugs are resolved with this release:
4073   [4099] stdio: Overly aggressive caching by stream i/o functions.
4074   [7065] build: Support building glibc with -fstack-protector or -fstack-
4075     protector-all
4076   [9842] localedata: en_CA: incorrect date format
4077   [13165] nptl: pthread_cond_wait() can consume a signal that was sent
4078     before it started waiting
4079   [14139] manual: Do not hardcode platform names in manual/libm-err-tab.pl
4080   [15765] nptl: sem_open is wrongly a cancellation point
4081   [16421] network: IN6_IS_ADDR_UNSPECIFIED can use undefined s6_addr32
4082   [16458] libc: endian.h and netinet/in.h byte order macros return values of
4083     wrong type
4084   [16628] dynamic-link: Segfault after a binary without pthread dlopen()s a
4085     library linked with pthread
4086   [16630] nptl: Use SYSENTER for pthread_cond_broadcast/signal() (i.e. fix
4087     "FIXME: Ingo" issue)
4088   [16907] libc: <argp.h> compiled with --std=cXX disables __attribute__
4089   [17252] libc: getrandom and getentropy syscall
4090   [17730] malloc: thread-local storage is sometimes improperly free()'d
4091     after being __libc_memalign()'d
4092   [18241] stdio: failed fseek on memstream does not set errno and can fail
4093     when it shouldn't
4094   [18243] nptl: sem_wait, sem_timedwait are cancellation points shm_open is
4095     not
4096   [18463] nptl: pthread_cond_broadcast issue when surrounded by
4097     PTHREAD_PRIO_INHERIT mutex on ARM
4098   [18784] network: res_query and related function crash for special record
4099     type queries (CVE-2015-5180)
4100   [19380] math: strtod does not raise "inexact"
4101   [19387] string: Integer overflow in memchr
4102   [19390] string: Integer overflow in strncat
4103   [19398] build: linknamespace tests fail with massively parallel build
4104   [19402] nptl: Deadlock with robust shared mutex and asynchronous
4105     termination
4106   [19469] malloc: M_PERTURB in test-skeleton.c invalidates malloc tests
4107   [19473] malloc: Turn malloc_get_state etc. in compatibility symbols
4108   [19514] libc: [PATCH] Fix spelling errors in spelling
4109     "implement"/"implementation" in several places
4110   [19582] network: Deprecate RES_USE_INET6
4111   [19673] manual: clog10 docs appear to be erroneous
4112   [19810] dynamic-link: dlopen with both RTLD_NOLOAD and RTLD_NODELETE
4113     causes a segmentation fault
4114   [19826] libc: invalid pointer returned from __tls_get_addr with static
4115     linking
4116   [20016] network: resolv: Remove hooks support from the API
4117   [20019] dynamic-link: NULL pointer dereference in libc.so.6 IFUNC due to
4118     uninitialized GOT
4119   [20033] math: [x86_64] vectorized math function don't call the __finite
4120     versions
4121   [20116] nptl: use after free in pthread_create
4122   [20181] stdio: open_memstream(): writes not at end of stream corrupt data
4123   [20292] dynamic-link: Comparison in elf/dl-open.c _dl_addr_inside_object
4124     is always true.
4125   [20311] nptl: please install proc_service.h
4126   [20366] libc: Compilation errors in installed headers in strict-compliance
4127     modes
4128   [20370] malloc: malloc: Arena free list management is still racy
4129     (incorrect fix in bug 19243)
4130   [20386] libc: assert (X = 0) does not result in GCC warning
4131   [20432] malloc: malloc: Minimize interface required for interposition
4132   [20435] libc: Missing unwind info in __startcontext causes infinite loop
4133     in _Unwind_Backtrace (CVE-2016-6323)
4134   [20444] hurd: recvmsg: PF_LOCAL sockets and msg_name lead to SIGLOST
4135   [20452] nptl: Addition of sysdep.o to libpthread.a breaks relinking
4136     libpthread.a
4137   [20455] math: [powerpc] fesetexceptflag fails to clear FE_INVALID
4138   [20459] localedata: et_EE: locale has wrong {p,n}_cs_precedes value
4139   [20477] network: resolv: incorrect double-checked locking related to
4140     _res_hconf
4141   [20478] libc: libc_ifunc macro and similar usages leads to false debug-
4142     information.
4143   [20495] math: x86_64 performance degradation due to AVX/SSE transition
4144     penalty
4145   [20497] localedata: lt_LT: LC_TIME d_fmt used is obsolete
4146   [20508] dynamic-link: _dl_runtime_resolve_avx/_dl_runtime_profile_avx512
4147     cause transition penalty
4148   [20517] math: sparcv9 missing fdiml compat symbol
4149   [20524] manual: strverscmp is inconsistent
4150   [20525] libc: <sys/quota.h> should be based on kernel headers
4151   [20539] math: GCC 7 -static -lm fails to link at -O3
4152   [20554] libc: ld: bss-plt forced due to /usr/lib/libc_nonshared.a(ppc-
4153     mcount.oS)
4154   [20558] string: POSIX bcopy/bzero decls do not implement Object Size
4155     Checking
4156   [20591] network: Remove obsolete DNSSEC support
4157   [20592] network: DNS resource record type classification macros in
4158     <arpa/nameser.h> are incorrect
4159   [20593] network: Update DNS RR type definitions
4160   [20611] network: getaddrinfo accepts invalid numeric scope IDs
4161   [20615] build: glibc build fails when using --with-cpu=power9 --enable-
4162     multi-arch
4163   [20629] network: libresolv: Remove support for bitstring labels
4164     (RES_USEBSTRING)
4165   [20647] libc: GLIBC quitting every program - glibc on Pentium-S leads to
4166     assertion: "maxidx >= 2"
4167   [20660] math: [arm] Use VSQRT
4168   [20662] libc: checking whether x86_64-pc-linux-gnu-gcc implicitly enables
4169     -fstack-protector no (32bit gcc 6.2.0 pie and ssp enable)
4170   [20689] libc: Test for FMA should also check for AVX.
4171   [20707] glob: gl_pathv entries not set to NULL with GLOB_DOOFFS
4172   [20715] math: iszero macro breaks existing code
4173   [20718] math: [powerpc] copysignl raises "invalid" for sNaN
4174   [20728] libc: powerpc: Missing TOC stub in clone
4175   [20729] build: glibc-2.24 fails to build for i486 with -Os
4176   [20750] build: Build fails with default PIE enabled gcc-6.x
4177   [20768] math: [alpha] sqrt fegetenv namespace
4178   [20785] libc: binutils 2.28 fails to assemble power6/memset.S file in
4179     glibc
4180   [20787] math: float_t is defined as float incorrectly on x86_64 even if
4181     __FLT_EVAL_METHOD__ is 2
4182   [20790] network: rpcgen buffer overrun in get_prog_declaration
4183   [20822] nptl: race condition in __lll_unlock_elision on powerpc
4184   [20829] libc: crypt snprintf namespace
4185   [20847] libc: tst-vfork3 failure
4186   [20855] math: Default bits/mathdef.h has inappropriate float_t
4187   [20859] math: [sh4] FP_ILOGB0 invalid
4188   [20864] localedata: iconv: cp936 missing single-byte euro sign (0x80,
4189     U+20AC), not same as GBK
4190   [20915] dynamic-link: global-dynamic TLS broken on aarch64
4191   [20916] math: pow handling of sNaN arguments
4192   [20918] build: Building with --enable-nss-crypt fails tst-linkall-static.
4193   [20919] math: Bad pow (qNaN, 0) result with -lieee
4194   [20940] math: hypot sNaN handling
4195   [20947] math: fmax, fmin sNaN handling
4196   [20956] libc: debug/tst-backtrace3-6 don't work with -O3 anymore
4197   [20964] network: sunrpc: Stack-based buffer overflow in getrpcport with
4198     RES_USE_INET6
4199   [20971] string: powerpc64/power7 memchr overflows internal pointer check
4200   [20973] nptl: robust mutexes: Lost wake-ups
4201   [20974] locale: bs_BA: yesexpr/noexpr regexes accept any character
4202   [20978] nis: strlen on null pointer in nss_nisplus
4203   [20985] nptl: robust mutexes: lowlevelrobustlock assembly on x86 blocks on
4204     wrong condition
4205   [21014] string: i686 memchr overflows internal pointer check
4206   [21019] libc: [mips] n32 lseek incorrect on overflow
4207   [21022] libc: [microblaze] __backtrace get_frame_size namespace
4208   [21026] libc: [MIPS] readahead syscall is broken on n64
4209   [21028] math: Fallback fesetexceptflag should always succeed
4210   [21045] libc: [powerpc-nofpu] swapcontext does not restore signal mask
4211   [21047] math: arm: fpu_control.h: _FPU_GETCW/_FPU_SETCW is rejected by
4212     clang
4213   [21053] libc: [SH] Namespace pollution from sys/ucontext.h
4214   [21061] librt: [microblaze] librt lost clock_* exports
4215   [21073] libc: tunables: insecure environment variables passed to
4216     subprocesses with AT_SECURE
4217   [21081] string: Missing vzeroupper in memset-vec-unaligned-erms.S
4219 Version 2.24
4221 * The minimum Linux kernel version that this version of the GNU C Library
4222   can be used with is 3.2, except on i[4567]86 and x86_64, where Linux
4223   kernel version 2.6.32 or later suffices (on architectures that already
4224   required kernel versions more recent than 3.2, those requirements remain
4225   unchanged).  Linux 3.2 or later kernel headers are required on all
4226   architectures.
4228 * The pap_AN locale has been deleted.  This has been deprecated for a long
4229   time.  It has been replaced by pap_AW & pap_CW, both of which have long
4230   been included in previous releases.
4232 * The readdir_r and readdir64_r functions have been deprecated.  It is
4233   recommended to use readdir and readdir64 instead.
4235 * The type “union wait” has been removed.  It was deprecated in the early
4236   1990s and never part of POSIX.  Application code should use the int type
4237   instead of “union wait”.
4239 * A new NSS action is added to facilitate large distributed system
4240   administration.  The action, MERGE, allows remote user stores like LDAP
4241   to be merged into local user stores like /etc/groups in order to provide
4242   easy to use, updated, and managed sets of merged credentials.  The new
4243   action can be used by configuring it in /etc/nsswitch.conf:
4244   group: files [SUCCESS=merge] nis
4245   Implemented by Stephen Gallagher (Red Hat).
4247 * The deprecated __malloc_initialize_hook variable has been removed from the
4248   API.
4250 * The long unused localedef --old-style option has been removed.  It hasn't
4251   done anything in over 16 years.  Scripts using this option can safely
4252   drop it.
4254 * nextupl, nextup, nextupf, nextdownl, nextdown and nextdownf are added to
4255   libm.  They are defined by TS 18661 and IEEE754-2008.  The nextup functions
4256   return the next representable value in the direction of positive infinity
4257   and the nextdown functions return the next representable value in the
4258   direction of negative infinity.  These are currently enabled as GNU
4259   extensions.
4261 Security related changes:
4263 * An unnecessary stack copy in _nss_dns_getnetbyname_r was removed.  It
4264   could result in a stack overflow when getnetbyname was called with an
4265   overly long name.  (CVE-2016-3075)
4267 * Previously, getaddrinfo copied large amounts of address data to the stack,
4268   even after the fix for CVE-2013-4458 has been applied, potentially
4269   resulting in a stack overflow.  getaddrinfo now uses a heap allocation
4270   instead.  Reported by Michael Petlan.  (CVE-2016-3706)
4272 * The glob function suffered from a stack-based buffer overflow when it was
4273   called with the GLOB_ALTDIRFUNC flag and encountered a long file name.
4274   Reported by Alexander Cherepanov.  (CVE-2016-1234)
4276 * The Sun RPC UDP client could exhaust all available stack space when
4277   flooded with crafted ICMP and UDP messages.  Reported by Aldy Hernandez'
4278   alloca plugin for GCC.  (CVE-2016-4429)
4280 * The IPv6 name server management code in libresolv could result in a memory
4281   leak for each thread which is created, performs a failing naming lookup,
4282   and exits.  Over time, this could result in a denial of service due to
4283   memory exhaustion.  Reported by Matthias Schiffer.  (CVE-2016-5417)
4285 The following bugs are resolved with this release:
4287   [1170] localedata: ne_NP: update Nepali locale definition file
4288   [3629] manual: stpcpy description in string.texi refers to MS-DOG instead
4289     of MS-DOS.
4290   [6527] malloc: [powerpc] Malloc alignment insufficient for PowerPC
4291   [6796] math: fdim() does not set errno on overflow
4292   [10354] libc: posix_spawn should use vfork() in more cases than presently
4293   [11213] localedata: localedata: add copyright disclaimer to locale files
4294   [12143] localedata: chr_US: new Cherokee locale
4295   [12450] localedata: sgs_LT: new locale
4296   [12676] localedata: ln_CD: new locale
4297   [13237] localedata: LC_ADDRESS.country_name: update all locales w/latest
4298     CLDR data
4299   [13304] math: fma, fmaf, fmal produce wrong results
4300   [14259] build: --localedir arg to configure is ignored
4301   [14499] nptl: Does posix_spawn invoke atfork handlers / use vfork?
4302   [14750] libc: Race condition in posix_spawn vfork usage vs signal handlers
4303   [14934] localedata: es_CL: wrong first weekday chilean locale
4304   [15262] localedata: LC_MESSAGES.yesexpr/noexpr: inconsistent use of
4305     romanisation
4306   [15263] localedata: LC_MESSAGES.yesexpr/noexpr: inconsistent use of 1/0
4307     and +/-
4308   [15264] localedata: LC_MESSAGES.yesstr/nostr: lacking in many locales
4309   [15368] nptl: raise() is not async-signal-safe
4310   [15479] math: ceil, floor, round and trunc raise inexact exception
4311   [15578] localedata: kk_KZ: various updates
4312   [16003] localedata: pap_AN: punt old locale
4313   [16137] localedata: iw_IL: punt old locale
4314   [16190] localedata: eo: new esperanto locale
4315   [16374] localedata: lv_LV: change currency symbol in LC_MONETARY to euro
4316   [16742] malloc: race condition: pthread_atfork() called before first
4317     malloc() results in unexpected locking behaviour/deadlocks
4318   [16975] localedata: LC_MESSAGES.yesexpr/noexpr: revisit capitalization in
4319     all locales
4320   [16983] localedata: postal_fmt does not allow %l and %n modifiers
4321   [17565] localedata: pt_PT: wrong (work-)week start
4322   [17899] math: [powerpc] floorl returns negative zero with FE_DOWNWARD
4323   [17950] build: Build fails with -msse
4324   [18205] localedata: be_BY*: wrong first_weekday and first_workday
4325   [18433] libc: posix_spawn does not return correctly upon failure to
4326     execute
4327   [18453] localedata: charmaps/IBM875: incorrect codes
4328   [18712] string: bits/string2.h incompatible with -O2 -Werror=packed
4329     -Wsystem-headers
4330   [18896] localedata: he_IL: improvements for currency
4331   [18911] localedata: ro_RO: Correcting week day name for "Tuesday" in
4332     Romanian locale data
4333   [18960] locale: s390: _nl_locale_subfreeres uses larl opcode on misaligned
4334     symbol
4335   [19056] libc: Deprecate readdir_r
4336   [19133] localedata: pt_*: days & months should be lowercase in Portuguese
4337     language
4338   [19198] localedata: nl_NL: small improvements for Dutch locales
4339   [19257] network: Per-thread memory leak in __res_vinit with IPv6
4340     nameservers (CVE-2016-5417)
4341   [19269] build: tst-audit4 and tst-audit10 failures with gcc-6 on non avx
4342     machine
4343   [19400] locale: Language missing in  "iso-639.def", trivial fix in
4344     description
4345   [19431] malloc: Deadlock between fflush, getdelim, and fork
4346   [19505] libc: Incorrect file descriptor validity checks in
4347     posix_spawn_file_actions_add{open,close,dup2}
4348   [19509] dynamic-link: dlsym, dlvsym do not report errors through dlerror
4349     when using RTLD_NEXT
4350   [19512] locale: Stale `#ifndef HAVE_BUILTIN_EXPECT' in
4351     `intl/{gettextP,loadinfo}.h'
4352   [19534] libc: execle, execlp may use malloc
4353   [19568] localedata: *_CH: Swiss locales have inconsistent start of week
4354   [19573] network: res_nclose and __res_maybe_init disagree about name
4355     server initialization, breaking Hesiod
4356   [19575] localedata: Status of GB18030 tables
4357   [19581] localedata: sr_* date_fmt string contains additional newline
4358   [19583] string: SSSE3_Fast_Copy_Backward flag needs to be enabled for AMD
4359     Excavator core
4360   [19592] math: [ldbl-128ibm] ceill incorrect in non-default rounding modes
4361   [19593] math: [ldbl-128ibm] truncl incorrect in non-default rounding modes
4362   [19594] math: [ldbl-128ibm] roundl incorrect in non-default rounding modes
4363   [19595] math: [ldbl-128ibm] fmodl incorrect for results in subnormal
4364     double range
4365   [19602] math: [ldbl-128ibm] fmodl handling of equal arguments with low
4366     part zero incorrect
4367   [19603] math: [ldbl-128ibm] remainderl, remquol incorrect sign handling in
4368     equality tests
4369   [19610] dynamic-link: ldconfig -X removes stale symbolic links
4370   [19613] libc: s390x (64 bit) macro expansion WCOREDUMP and others
4371   [19633] locale: strfmon_l applies global locale to number formatting
4372   [19642] network: Memory leak in getnameinfo
4373   [19648] libc: test-skeleton.c: Do not set RLIMIT_DATA
4374   [19653] libc: Potential for NULL pointer dereference (CWE-476) in
4375     glibc-2.22
4376   [19654] math: [x86_64] Need testcase for BZ #19590 fix
4377   [19671] localedata: Missing Sanity Check for malloc() in 'tst-fmon.c' &
4378     'tst-numeric.c'
4379   [19674] math: [ldbl-128ibm] powl incorrect overflow handling
4380   [19677] math: [ldbl-128ibm] remainderl equality test incorrect for zero
4381     low part
4382   [19678] math: [ldbl-128ibm] nextafterl, nexttowardl incorrect sign of zero
4383     result
4384   [19679] dynamic-link: gcc-4.9.3 C++ exception handling broken due to
4385     unaligned stack
4386   [19726] locale: Converting UCS4LE to INTERNAL with iconv() does not update
4387     pointers and lengths in error-case.
4388   [19727] locale: Converting from/to UTF-xx with iconv() does not always
4389     report errors on UTF-16 surrogates values.
4390   [19755] nscd: nscd assertion failure in gc
4391   [19758] dynamic-link: Typo in EXTRA_LD_ENVVARS for x86-64
4392   [19759] libc: mempcpy shouldn't be inlined
4393   [19762] dynamic-link: HAS_CPU_FEATURE/HAS_ARCH_FEATURE are easy to misuse
4394   [19765] libc: s390 needs an optimized mempcpy
4395   [19779] glob: glob: buffer overflow with GLOB_ALTDIRFUNC due to incorrect
4396     NAME_MAX limit assumption (CVE-2016-1234)
4397   [19783] build: benchtests don't support --enable-hardcoded-path-in-tests
4398   [19787] network: Missing and incorrect truncation checks in getnameinfo
4399   [19790] math: [ldbl-128ibm] nearbyintl incorrect in non-default rounding
4400     modes
4401   [19791] network: Assertion failure in res_query.c with un-connectable name
4402     server addresses
4403   [19792] libc: MIPS: backtrace yields infinite backtrace with makecontext
4404   [19822] math: libm.so install clobbers old version
4405   [19825] network: resolv: send_vc can return uninitialized data in second
4406     response to getaddrinfo
4407   [19830] network: nss_dns: should check RDATA length against buffer length
4408   [19831] network: nss_dns: getaddrinfo returns uninitialized data when
4409     confronted with A/AAAA records of invalid size
4410   [19837] nss: nss_db: No retries for some long lines with a larger buffer
4411   [19848] math: powl(10,n) for n=-4,-5,-6,-7 is off by more than 1 ULP
4412   [19853] stdio: Printing IBM long double in decimal with high precision is
4413     sometimes incorrect
4414   [19860] build: x86_64: compile errors for tst-audit10 and tst-auditmod10b
4415   [19861] nptl: libpthread IFUNC resolver for fork can lead to crash
4416   [19862] network: resolv, nss_dns: Remove remaining logging of unexpected
4417     record types
4418   [19865] network: Assertion failure or memory leak in
4419     _nss_dns_getcanonname_r
4420   [19868] network: nss_dns: netent code does not skip over non-PTR records
4421   [19879] network: nss_dns: Stack overflow in getnetbyname implementation
4422     (CVE-2016-3075)
4423   [19881] string: Improve x86-64 memset
4424   [19907] string: Incorrect memcpy tests
4425   [19916] dynamic-link: S390: fprs/vrs are not saved/restored while
4426     resolving symbols
4427   [19925] libc: termios.h XCASE namespace
4428   [19928] string: memmove-vec-unaligned-erms.S is slow with large data size
4429   [19929] libc: limits.h NL_NMAX namespace
4430   [19931] stdio: Memory leak in vfprintf
4431   [19957] libc: clone(CLONE_VM) access invalid parent memory
4432   [19963] localedata: en_IL: New locale
4433   [19989] stdio: stdio.h cuserid namespace
4434   [19994] network: getaddrinfo does not restore RES_USE_INET6 flag in
4435     gethosts
4436   [19996] locale: langinfo.h nl_langinfo_l namespace
4437   [20005] stdio: fflush on a file opened with fmemopen resets position to 0
4438   [20010] network: getaddrinfo: Stack overflow in hostent translation
4439     (CVE-2016-3706)
4440   [20012] stdio: libio: fmemopen append mode failure
4441   [20014] stdio: stdio.h namespace for pre-threads POSIX
4442   [20017] network: resolv: Use gmtime_r instead of gmtime in p_secstodate
4443   [20023] libc: fcntl.h timespec namespace
4444   [20024] math: [x86_64] vectorized sincos trashes the stack
4445   [20031] network: nss_hesiod: Heap overflow in get_txt_records
4446   [20041] time: sys/time.h timespec namespace
4447   [20043] libc: unistd.h missing cuserid for UNIX98 and before
4448   [20044] libc: unistd.h missing pthread_atfork for UNIX98
4449   [20051] libc: ttyslot in wrong header under wrong conditions
4450   [20054] libc: gethostname not declared for XPG4
4451   [20055] libc: termios.h missing tcgetsid for XPG4
4452   [20072] dynamic-link: x86 init_cpu_features is called twice in static
4453     executable
4454   [20073] libc: sys/stat.h fchmod namespace
4455   [20074] libc: stdlib.h rand_r namespace
4456   [20076] libc: sys/stat.h missing S_IFSOCK, S_ISSOCK for XPG4
4457   [20094] libc: stdlib.h should not declare grantpt, ptsname, unlockpt for
4458     XPG3
4459   [20111] libc: struct sockaddr_storage cannot be aggregate-copied
4460   [20112] network: sunrpc: stack (frame) overflow in Sun RPC clntudp_call
4461     (CVE-2016-4429)
4462   [20115] string: Extra alignment in memset-vec-unaligned-erms.S
4463   [20119] libc: Wrong mask for processors level type from CPUID
4464   [20139] dynamic-link: Upper part of zmm is zeroed if Glibc is built with
4465     AS not supporting AVX512
4466   [20151] math: [ldbl-128/ldbl-128ibm] j0l, j1l, y0l, y1l return sNaN for
4467     sNaN argument
4468   [20153] math: [ldbl-128ibm] sqrtl (sNaN) returns sNaN
4469   [20156] math: [ldbl-128ibm] ceill, rintl etc. return sNaN for sNaN
4470     argument
4471   [20157] math: [powerpc] fabsl (sNaN) wrongly raises "invalid"
4472   [20160] math: [powerpc] ceil, rint etc. return sNaN for sNaN input
4473   [20178] libc: posix_spawn{p} should not call exit
4474   [20191] stdio: libio: vtables hardening
4475   [20195] string: FMA4 detection requires CPUID execution with register
4476     eax=0x80000001
4477   [20198] libc: quick_exit incorrectly destroys C++11 thread objects.
4478   [20205] math: [i386/x86_64] nextafterl incorrect incrementing negative
4479     subnormals
4480   [20212] math: acos (sNaN) returns sNaN
4481   [20213] math: asin (sNaN) returns sNaN
4482   [20214] network: Linux header sync with linux/in6.h and ipv6.h again.
4483   [20218] math: [i386] asinhl (sNaN) returns sNaN
4484   [20219] math: [i386] atanhl (sNaN) returns sNaN
4485   [20222] stdio: fopencookie: Mangle function pointers
4486   [20224] math: [i386] cbrtl (sNaN) returns sNaN
4487   [20225] math: ldexp, scalbn, scalbln return sNaN for sNaN input
4488   [20226] math: [i386/x86_64] expl, exp10l, expm1l return sNaN for sNaN
4489     input
4490   [20227] math: [i386/x86_64] logl (sNaN) returns sNaN
4491   [20228] math: [i386/x86_64] log10l (sNaN) returns sNaN
4492   [20229] math: [i386/x86_64] log1pl (sNaN) returns sNaN
4493   [20232] math: [ldbl-128] expm1l (sNaN) returns sNaN
4494   [20233] math: [ldbl-128ibm] expm1l (sNaN) returns sNaN
4495   [20234] math: [ldbl-128ibm] log1pl (sNaN) returns sNaN
4496   [20235] math: [i386/x86_64] log2l (sNaN) returns sNaN
4497   [20237] nss: nss_db: get*ent segfaults without preceding set*ent
4498   [20240] math: modf (sNaN) returns sNaN
4499   [20248] libc: debug/tst-longjump_chk2 calls printf from a signal handler
4500   [20250] math: frexp (sNaN) returns sNaN
4501   [20252] math: atan2 (sNaN, qNaN) fails to raise "invalid"
4502   [20255] math: [i386] fdim, fdimf return with excess range and precision /
4503     double rounding
4504   [20256] math: [i386/x86_64] fdiml returns sNaN for sNaN input
4505   [20260] string: ../sysdeps/x86/bits/string.h:1092:3: error: array
4506     subscript is below array bounds [-Werror=array-bounds]
4507   [20262] nis: _nss_nis_initgroups_dyn always returns NSS_STATUS_NOTFOUND
4508   [20263] nptl: robust mutex deadlocks if other thread requests timedlock
4509     (Only arm/linux)
4510   [20277] libc: $dp is not initialized correctly in sysdeps/hppa/start.S
4511   [20284] malloc: malloc: Corrupt arena avoidance causes unnecessary mmap
4512     fallbacks
4513   [20296] math: [i386/x86_64] scalbl returns sNaN for sNaN input, missing
4514     "invalid" exceptions
4515   [20314] nptl: make[4]: *** [/usr/include/stdlib.h] Error 1
4516   [20316] localedata: id_ID: Februari instead of Pebruari
4517   [20327] string: POWER8 strcasecmp returns incorrect result
4518   [20347] math: Failure: Test: j0_downward (0xap+0)
4519   [20348] libc: FAIL: misc/tst-preadvwritev64
4520   [20349] libc: 64-bit value is passed differently in p{readv,writev}{64}
4521   [20350] libc: There is no test for p{read,write}64
4522   [20357] math: Incorrect cos result for 1.5174239687223976
4523   [20384] build: Don't run libmvec-sincos-avx* tests on non avx machines
4525 Version 2.23
4527 * Unicode 8.0.0 Support: Character encoding, character type info, and
4528   transliteration tables are all updated to Unicode 8.0.0, using new
4529   and/or improved generator scripts contributed by Mike FABIAN (Red Hat).
4530   These updates cause user visible changes, such as the fixes for bugs
4531   89, 16061, and 18568.
4533 * sched_setaffinity, pthread_setaffinity_np no longer attempt to guess the
4534   kernel-internal CPU set size.  This means that requests that change the
4535   CPU affinity which failed before (for example, an all-ones CPU mask) will
4536   now succeed.  Applications that need to determine the effective CPU
4537   affinities need to call sched_getaffinity or pthread_getaffinity_np after
4538   setting it because the kernel can adjust it (and the previous size check
4539   would not detect this in the majority of cases).
4541 * The fts.h header can now be used with -D_FILE_OFFSET_BITS=64.  With LFS
4542   the following new symbols are used: fts64_children, fts64_close,
4543   fts64_open, fts64_read and fts64_set.
4545 * getaddrinfo now detects certain invalid responses on an internal netlink
4546   socket.  If such responses are received, an affected process will
4547   terminate with an error message of "Unexpected error <number> on netlink
4548   descriptor <number>" or "Unexpected netlink response of size <number> on
4549   descriptor <number>".  The most likely cause for these errors is a
4550   multi-threaded application which erroneously closes and reuses the netlink
4551   file descriptor while it is used by getaddrinfo.
4553 * A defect in the malloc implementation, present since glibc 2.15 (2012) or
4554   glibc 2.10 via --enable-experimental-malloc (2009), could result in the
4555   unnecessary serialization of memory allocation requests across threads.
4556   The defect is now corrected.  Users should see a substantial increase in
4557   the concurrent throughput of allocation requests for applications which
4558   trigger this bug.  Affected applications typically create and
4559   destroy threads frequently.  (Bug 19048 was reported and analyzed by
4560   Ericsson.)
4562 * There is now a --disable-timezone-tools configure option for disabling the
4563   building and installing of the timezone related utilities (zic, zdump, and
4564   tzselect).  This is useful for people who build the timezone data and code
4565   independent of the GNU C Library.
4567 * The obsolete header <regexp.h> has been removed.  Programs that require
4568   this header must be updated to use <regex.h> instead.
4570 * The obsolete functions bdflush, create_module, get_kernel_syms,
4571   query_module and uselib are no longer available to newly linked binaries;
4572   the header <sys/kdaemon.h> has been removed.  These functions and header
4573   were specific to systems using the Linux kernel and could not usefully be
4574   used with the GNU C Library on systems with version 2.6 or later of the
4575   Linux kernel.
4577 * Optimized string, wcsmbs and memory functions for IBM z13.
4578   Implemented by Stefan Liebler.
4580 * Newly linked programs that define a variable called signgam will no longer
4581   have it set by the lgamma, lgammaf and lgammal functions.  Programs that
4582   require signgam to be set by those functions must ensure that they use the
4583   variable provided by the GNU C Library and declared in <math.h>, without
4584   defining their own copy.
4586 * The minimum GCC version that can be used to build this version of the GNU
4587   C Library is GCC 4.7.  Older GCC versions, and non-GNU compilers, can
4588   still be used to compile programs using the GNU C Library.
4590 Security related changes:
4592 * An out-of-bounds value in a broken-out struct tm argument to strftime no
4593   longer causes a crash.  Reported by Adam Nielsen.  (CVE-2015-8776)
4595 * The LD_POINTER_GUARD environment variable can no longer be used to disable
4596   the pointer guard feature.  It is always enabled.  Previously,
4597   LD_POINTER_GUARD could be used to disable security hardening in binaries
4598   running in privileged AT_SECURE mode.  Reported by Hector Marco-Gisbert.
4599   (CVE-2015-8777)
4601 * An integer overflow in hcreate and hcreate_r could lead to an
4602   out-of-bounds memory access.  Reported by Szabolcs Nagy.  (CVE-2015-8778)
4604 * The catopen function no longer has unbounded stack usage.  Reported by
4605   Max.  (CVE-2015-8779)
4607 * The nan, nanf and nanl functions no longer have unbounded stack usage
4608   depending on the length of the string passed as an argument to the
4609   functions.  Reported by Joseph Myers.  (CVE-2014-9761)
4611 * A stack-based buffer overflow was found in libresolv when invoked from
4612   libnss_dns, allowing specially crafted DNS responses to seize control
4613   of execution flow in the DNS client.  The buffer overflow occurs in
4614   the functions send_dg (send datagram) and send_vc (send TCP) for the
4615   NSS module libnss_dns.so.2 when calling getaddrinfo with AF_UNSPEC
4616   family.  The use of AF_UNSPEC triggers the low-level resolver code to
4617   send out two parallel queries for A and AAAA.  A mismanagement of the
4618   buffers used for those queries could result in the response of a query
4619   writing beyond the alloca allocated buffer created by
4620   _nss_dns_gethostbyname4_r.  Buffer management is simplified to remove
4621   the overflow.  Thanks to the Google Security Team and Red Hat for
4622   reporting the security impact of this issue, and Robert Holiday of
4623   Ciena for reporting the related bug 18665. (CVE-2015-7547)
4625 The following bugs are resolved with this release:
4627   [89] localedata: Locales nb_NO and nn_NO should transliterate æøå
4628   [887] math: Math library function "logb" and "nextafter" inconsistent
4629   [2542] math: Incorrect return from float gamma (-0X1.FA471547C2FE5P+1)
4630   [2543] math: Incorrect return from float gamma (-0X1.9260DCP+1)
4631   [2558] math: Incorrect return from double gamma (-0X1.FA471547C2FE5P+1)
4632   [2898] libc: [improve]  warning: the use  of `mktemp' is dangerous, better
4633     use `mkstemp'
4634   [4404] localedata: German translation of "Alarm clock" is misleading
4635   [6799] math: nextafter() and nexttoward() doesn't set errno on
4636     overflow/underflow errors
4637   [6803] math: scalb(), scalbln(), scalbn() do not set errno on
4638     overflow/underflow
4639   [10432] nis: _nss_nis_setnetgrent assertion failure
4640   [11460] libc: fts has no LFS support
4641   [12926] network: getaddrinfo()/make_request() may spin forever
4642   [13065] nptl: Race condition in pthread barriers
4643   [13690] nptl: pthread_mutex_unlock potentially cause invalid access
4644   [14341] dynamic-link: Dynamic linker crash when DT_JMPREL and DT_REL{,A}
4645     are not contiguous
4646   [14551] math: [ldbl-128ibm] strtold overflow handling for IBM long double
4647   [14912] libc: Rename non-installed bits/*.h headers
4648   [15002] libc: Avoid undefined behavior in posix_fallocate overflow check
4649   [15367] math: Let gcc use __builtin_isinf
4650   [15384] math: One constant fewer in ieee754/dbl-64/wordsize-64/s_finite.c
4651   [15421] math: lgamma wrongly sets signgam for ISO C
4652   [15470] math: [arm] On ARM llrintl() and llroundl() do not raise
4653     FE_INVALID with argument out of range
4654   [15491] math: [i386/x86_64] x86 nearbyint implementations wrongly clear
4655     all exceptions
4656   [15786] dynamic-link: ifunc resolver functions can smash function
4657     arguments
4658   [15918] math: Unnecessary check for equality in hypotf()
4659   [16061] localedata: Review / update transliteration data
4660   [16068] math: [i386/x86_64] x86 and x86_64 fesetenv exclude state they
4661     should include
4662   [16141] time: strptime %z offset restriction
4663   [16171] math: drem should be alias of remainder
4664   [16296] math: fegetround is pure?
4665   [16347] math: [ldbl-128ibm] ldbl-128/e_lgammal_r.c may not be suitable.
4666   [16364] libc: sleep may leave SIGCHLD blocked on sync cancellation on
4667     GNU/Linux
4668   [16399] math: [mips] lrint / llrint / lround / llround missing exceptions
4669   [16415] math: Clean up ldbl-128 / ldbl-128ibm expm1l for large positive
4670     arguments
4671   [16422] math: [powerpc] math-float, math-double failing llrint tests with
4672     "Exception "Inexact" set" on ppc32
4673   [16495] localedata: nl_NL: date_fmt: shuffle year/month around
4674   [16517] math: Missing underflow exception from tanf/tan/tanl
4675   [16519] math: Missing underflow exception from sinhf
4676   [16520] math: Missing underflow exception from tanhf
4677   [16521] math: Missing underflow exception from exp2
4678   [16620] math: [ldbl-128ibm] exp10l spurious overflows / bad directed
4679     rounding results
4680   [16734] stdio: fopen calls mmap to allocate its buffer
4681   [16961] math: nan function incorrect handling of bad sequences
4682   [16962] math: nan function unbounded stack allocation (CVE-2014-9761)
4683   [16973] localedata: Fix lang_lib/lang_term as per ISO 639-2
4684   [16985] locale: localedef: confusing error message when opening output
4685     fails
4686   [17118] math: ctanh(INFINITY + 2 * I) returns incorrect value
4687   [17197] locale: Redundant shift character in iconv conversion output at
4688     block boundary
4689   [17243] libc: trunk/posix/execl.c:53: va_args problem ?
4690   [17244] libc: trunk/sysdeps/unix/sysv/linux/semctl.c:116: va_args muxup ?
4691   [17250] dynamic-link: static linking breaks nss loading
4692     (getaddrinfo/getpwnam/etc...)
4693   [17404] libc: atomic_exchange_rel lacking a barrier on MIPS16, GCC before
4694     4.7?
4695   [17441] math: isnan() should use __builtin_isnan() in GCC
4696   [17514] nptl: Assert failure unlocking ERRORCHECK mutex after timedlock
4697     (related to lock elision)
4698   [17787] manual: Exponent on page 324 of the PDF ends prematurely
4699   [17886] time: strptime should be able to parse "Z" as a timezone with %z
4700   [17887] time: strptime should be able to parse "+01:00" style timezones
4701   [17905] libc: catopen() Multiple unbounded stack allocations
4702     (CVE-2015-8779)
4703   [18084] libc: backtrace (..., 0) dumps core on x86
4704   [18086] libc: nice() sets errno to 0 on success
4705   [18240] libc: hcreate, hcreate_r should fail with ENOMEM if element count
4706     is too large (CVE-2015-8778)
4707   [18251] dynamic-link: SONAME missing when audit modules provides path
4708   [18265] libc: add attributes for wchar string and memory functions
4709   [18370] math: csqrt missing underflows
4710   [18421] libc: [hppa] read-only segment has dynamic relocations
4711   [18472] libc: Obsolete syscall wrappers should be compat symbols
4712   [18480] libc: hppa glibc miscompilation in sched_setaffinity()
4713   [18491] localedata: Update tr_TR LC_CTYPE as part of Unicode updates
4714   [18525] localedata: Remove locale timezone information
4715   [18560] libc: [powerpc] spurious bits/ipc.h definitions
4716   [18568] localedata: Update locale data to Unicode 8.0
4717   [18589] locale: sort-test.sh fails at random
4718   [18595] math: ctan, ctanh missing underflows
4719   [18604] libc: assert macro-expands its argument
4720   [18610] math: S390: fetestexcept() reports any exception if DXC-code
4721     contains a vector instruction exception.
4722   [18611] math: j1, jn missing errno setting on underflow
4723   [18618] localedata: sync Chechen locale definitions with other *_RU
4724     locales
4725   [18647] math: powf(-0x1.000002p0, 0x1p30) returns 0 instead of +inf
4726   [18661] libc: Some x86-64 assembly codes don't align stack to 16 bytes
4727   [18665] network: In send_dg, the recvfrom function is NOT always using the
4728     buffer size of a newly created buffer (CVE-2015-7547)
4729   [18674] libc: [i386] trunk/sysdeps/i386/tst-auditmod3b.c:84: possible
4730     missing break ?
4731   [18675] libc: fpathconf(_PC_NAME_MAX) fails against large filesystems for
4732     32bit processes
4733   [18681] libc: regexp.h is obsolete and buggy, and should be desupported
4734   [18699] math: tilegx cproj() for various complex infinities does not yield
4735     infinity
4736   [18724] libc: Harden put*ent functions against data injection
4737   [18743] nptl: PowerPC: findutils testcase fails with --enable-lock-elision
4738   [18755] build: build errors with -DNDEBUG
4739   [18757] stdio: fmemopen fails to set errno on failure
4740   [18778] dynamic-link: ld.so crashes if failed dlopen causes libpthread to
4741     be forced unloaded
4742   [18781] libc: openat64 lacks O_LARGEFILE
4743   [18787] libc: [hppa] sysdeps/unix/sysv/linux/hppa/bits/atomic.h:71:6:
4744     error: can’t find a register in class ‘R1_REGS’ while reloading ‘asm’
4745   [18789] math: [ldbl-128ibm] sinhl inaccurate near 0
4746   [18790] math: [ldbl-128ibm] tanhl inaccurate
4747   [18795] libc: stpncpy fortification misses buffer lengths that are
4748     statically too large
4749   [18796] build: build fails for --disable-mathvec
4750   [18803] math: hypot missing underflows
4751   [18820] stdio: fmemopen may leak memory on failure
4752   [18823] math: csqrt spurious underflows
4753   [18824] math: fma spurious underflows
4754   [18825] math: pow missing underflows
4755   [18857] math: [ldbl-128ibm] nearbyintl wrongly uses signaling comparisons
4756   [18868] nptl: pthread_barrier_init typo has in-theory-undefined behavior
4757   [18870] build: sem_open.c fails to compile with missing symbol
4758     FUTEX_SHARED
4759   [18872] stdio: Fix memory leak in printf_positional
4760   [18873] libc: posix_fallocate overflow check ineffective
4761   [18875] math: Excess precision leads incorrect libm
4762   [18877] libc: arm: mmap offset regression
4763   [18887] libc: memory corruption when using getmntent on blank lines
4764   [18918] localedata: hu_HU: change time to HH:MM:SS format
4765   [18921] libc: Regression: extraneous stat() and fstat() performed by
4766     opendir()
4767   [18928] dynamic-link: LD_POINTER_GUARD is not ignored for privileged
4768     binaries (CVE-2015-8777)
4769   [18951] math: tgamma missing underflows
4770   [18952] math: [ldbl-128/ldbl-128ibm] lgammal spurious "invalid", incorrect
4771     signgam
4772   [18953] localedata: lt_LT: change currency symbol to the euro
4773   [18956] math: powf inaccuracy
4774   [18961] math: [i386] exp missing underflows
4775   [18966] math: [i386] exp10 missing underflows
4776   [18967] math: math.h XSI POSIX namespace (gamma, isnan, scalb)
4777   [18969] build: multiple string test failures due to missing locale
4778     dependencies
4779   [18970] libc: Reference of pthread_setcancelstate in libc.a
4780   [18977] math: float / long double Bessel functions not in XSI POSIX
4781   [18980] math: i386 libm functions return with excess range and precision
4782   [18981] math: i386 scalb*, ldexp return with excess range and precision
4783   [18982] stdio: va_list and vprintf
4784   [18985] time: Passing out of range data to strftime() causes a segfault
4785     (CVE-2015-8776)
4786   [19003] math: [x86_64] fma4 version of pow inappropriate contraction
4787   [19007] libc: FAIL: elf/check-localplt with -z now and binutils 2.26
4788   [19012] locale: iconv_open leaks memory on error path
4789   [19016] math: clog, clog10 inaccuracy
4790   [19018] nptl: Mangle function pointers in tls_dtor_list
4791   [19032] math: [i386] acosh (-qNaN) spurious "invalid" exception
4792   [19046] math: ldbl-128 / ldbl-128ibm lgamma bad overflow handling
4793   [19048] malloc: malloc: arena free list can become cyclic, increasing
4794     contention
4795   [19049] math: [powerpc] erfc incorrect zero sign
4796   [19050] math: [powerpc] log* incorrect zero sign
4797   [19058] math: [x86_64] Link fail with -fopenmp and -flto
4798   [19059] math: nexttoward overflow incorrect in non-default rounding modes
4799   [19071] math: ldbl-96 lroundl incorrect just below powers of 2
4800   [19074] network: Data race in _res_hconf_reorder_addrs
4801   [19076] math: [ldbl-128ibm] log1pl (-1) wrong sign of infinity
4802   [19077] math: [ldbl-128ibm] logl (1) incorrect sign of zero result
4803   [19078] math: [ldbl-128ibm] expl overflow incorrect in non-default
4804     rounding modes
4805   [19079] math: dbl-64/wordsize-64 lround based on llround incorrect for
4806     ILP32
4807   [19085] math: ldbl-128 lrintl, lroundl missing exceptions for 32-bit long
4808   [19086] manual: posix_fallocate64 documented argument order is wrong.
4809   [19088] math: lround, llround missing exceptions close to overflow
4810     threshold
4811   [19094] math: lrint, llrint missing exceptions close to overflow threshold
4812   [19095] math: dbl-64 lrint incorrect for 64-bit long
4813   [19122] dynamic-link: Unnecessary PLT relocations in librtld.os
4814   [19124] dynamic-link: ld.so failed to build with older assembler
4815   [19125] math: [powerpc32] llroundf, llround incorrect exceptions
4816   [19129] dynamic-link: [arm] Concurrent lazy TLSDESC resolution can crash
4817   [19134] math: [powerpc32] lround, lroundf spurious exceptions
4818   [19137] libc: i386/epoll_pwait.S doesn't support cancellation
4819   [19143] nptl: Remove CPU set size checking from sched_setaffinity,
4820     pthread_setaffinity_np
4821   [19156] math: [ldbl-128] j0l spurious underflows
4822   [19164] nptl: tst-getcpu fails with many possible CPUs
4823   [19168] math: math/test-ildoubl and math/test-ldouble failure
4824   [19174] nptl: PowerPC: TLE enabled pthread mutex performs poorly.
4825   [19178] dynamic-link: ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA confuses
4826     prelink
4827   [19181] math: [i386/x86_64] fesetenv (FE_DFL_ENV), fesetenv
4828     (FE_NOMASK_ENV) do not clear SSE exceptions
4829   [19182] malloc: malloc deadlock between ptmalloc_lock_all and
4830     _int_new_arena/reused_arena
4831   [19189] math: [ldbl-128] log1pl (-qNaN) spurious "invalid" exception
4832   [19201] math: dbl-64 remainder incorrect sign of zero result
4833   [19205] math: bits/math-finite.h conditions do not match math.h and
4834     bits/mathcalls.h
4835   [19209] math: bits/math-finite.h wrongly maps ldexp to scalbn
4836   [19211] math: lgamma functions do not set signgam for -ffinite-math-only
4837     for C99-based standards
4838   [19212] libc: features.h not -Wundef clean
4839   [19213] math: [i386/x86_64] log* (1) incorrect zero sign for -ffinite-
4840     math-only
4841   [19214] libc: Family and model identification for AMD CPU's are incorrect.
4842   [19219] libc: GLIBC build fails for ia64 with missing __nearbyintl
4843   [19228] math: [powerpc] nearbyint wrongly clears "inexact", leaves traps
4844     disabled
4845   [19235] math: [powerpc64] lround, lroundf, llround, llroundf spurious
4846     "inexact" exceptions
4847   [19238] math: [powerpc] round, roundf spurious "inexact" for integer
4848     arguments
4849   [19242] libc: strtol incorrect in Turkish locales
4850   [19243] malloc: reused_arena can pick an arena on the free list, leading
4851     to an assertion failure and reference count corruption
4852   [19253] time: tzset() ineffective when temporary TZ did not include DST
4853     rules
4854   [19266] math: strtod ("NAN(I)") incorrect in Turkish locales
4855   [19270] math: [hppa] Shared libm missing __isnanl
4856   [19285] libc: [hppa] sysdeps/unix/sysv/linux/hppa/bits/mman.h: missing
4857     MAP_HUGETLB and MAP_STACK defines
4858   [19313] nptl: Wrong __cpu_mask for x32
4859   [19347] libc: grantpt: try to force a specific gid even without pt_chown
4860   [19349] math: [ldbl-128ibm] tanhl inaccurate for small arguments
4861   [19350] math: [ldbl-128ibm] sinhl spurious overflows
4862   [19351] math: [ldbl-128ibm] logl inaccurate near 1
4863   [19363] time: x32: times() return value wrongly truncates/sign extends
4864     from 32bit
4865   [19367] dynamic-link: Improve branch prediction on Silvermont
4866   [19369] network: Default domain name not reset by res_ninit when "search"
4867     / "domain" entry is removed from resolv.conf
4868   [19375] math: powerpc: incorrect results for POWER7 logb with negative
4869     subnormals
4870   [19385] localedata: bg_BG: time separator should be colon, not comma
4871   [19408] libc: linux personality syscall wrapper may erroneously return an
4872     error on 32-bit architectures
4873   [19415] libc: dladdr returns wrong names on hppa
4874   [19432] libc: iconv rejects redundant escape sequences in IBM900, IBM903,
4875     IBM905, IBM907, and IBM909
4876   [19439] math: Unix98 isinf and isnan functions conflict with C++11
4877   [19443] build: build failures with -DDEBUG
4878   [19451] build: Make check fails on test-double-vlen2
4879   [19462] libc: Glibc failed to build with -Os
4880   [19465] math: Wrong code with -Os
4881   [19466] time: time/tst-mktime2.c is compiled into an infinite loop with
4882     -Os
4883   [19467] string: Fast_Unaligned_Load needs to be enabled for Excavator core
4884     CPU's.
4885   [19475] libc: Glibc 2.22 doesn't build on sparc [PATCH]
4886   [19486] math: S390: Math tests fail with "Exception Inexact set".
4887   [19529] libc: [ARM]: FAIL: stdlib/tst-makecontext
4888   [19550] libc: [mips] mmap negative offset handling inconsistent with other
4889     architectures
4890   [19590] math: Fail to build shared objects that use libmvec.so functions.
4892 Version 2.22
4894 * The following bugs are resolved with this release:
4896   438, 2981, 4719, 6544, 6792, 11216, 12836, 13028, 13064, 13151, 13152,
4897   14094, 14113, 14292, 14841, 14906, 14958, 15319, 15467, 15790, 15969,
4898   16159, 16339, 16350, 16351, 16352, 16353, 16361, 16512, 16526, 16538,
4899   16559, 16560, 16704, 16783, 16850, 17053, 17090, 17195, 17269, 17293,
4900   17322, 17403, 17475, 17523, 17542, 17569, 17581, 17588, 17596, 17620,
4901   17621, 17628, 17631, 17692, 17711, 17715, 17776, 17779, 17792, 17833,
4902   17836, 17841, 17912, 17916, 17930, 17932, 17944, 17949, 17964, 17965,
4903   17967, 17969, 17977, 17978, 17987, 17991, 17996, 17998, 17999, 18007,
4904   18019, 18020, 18029, 18030, 18032, 18034, 18036, 18038, 18039, 18042,
4905   18043, 18046, 18047, 18049, 18068, 18078, 18080, 18093, 18100, 18104,
4906   18110, 18111, 18116, 18125, 18128, 18134, 18138, 18185, 18196, 18197,
4907   18206, 18210, 18211, 18217, 18219, 18220, 18221, 18234, 18244, 18245,
4908   18247, 18287, 18319, 18324, 18333, 18346, 18371, 18383, 18397, 18400,
4909   18409, 18410, 18412, 18418, 18422, 18434, 18444, 18457, 18468, 18469,
4910   18470, 18479, 18483, 18495, 18496, 18497, 18498, 18502, 18507, 18508,
4911   18512, 18513, 18519, 18520, 18522, 18527, 18528, 18529, 18530, 18532,
4912   18533, 18534, 18536, 18539, 18540, 18542, 18544, 18545, 18546, 18547,
4913   18549, 18553, 18557, 18558, 18569, 18583, 18585, 18586, 18592, 18593,
4914   18594, 18602, 18612, 18613, 18619, 18633, 18635, 18641, 18643, 18648,
4915   18657, 18676, 18694, 18696, 18887.
4917 * Cache information can be queried via sysconf() function on s390 e.g. with
4918   _SC_LEVEL1_ICACHE_SIZE as argument.
4920 * A buffer overflow in gethostbyname_r and related functions performing DNS
4921   requests has been fixed.  If the NSS functions were called with a
4922   misaligned buffer, the buffer length change due to pointer alignment was
4923   not taken into account.  This could result in application crashes or,
4924   potentially arbitrary code execution, using crafted, but syntactically
4925   valid DNS responses.  (CVE-2015-1781)
4927 * The time zone file parser has been made more robust against crafted time
4928   zone files, avoiding heap buffer overflows related to the processing of
4929   the tzh_ttisstdcnt and tzh_ttisgmtcnt fields, and a stack overflow due to
4930   large time zone data files.  Overly long time zone specifiers in the TZ
4931   variable no longer result in stack overflows and crashes.
4933 * A powerpc and powerpc64 optimization for TLS, similar to TLS descriptors
4934   for LD and GD on x86 and x86-64, has been implemented.  You will need
4935   binutils-2.24 or later to enable this optimization.
4937 * Character encoding and ctype tables were updated to Unicode 7.0.0, using
4938   new generator scripts contributed by Pravin Satpute and Mike FABIAN (Red
4939   Hat).  These updates cause user visible changes, such as the fix for bug
4940   17998.
4942 * CVE-2014-8121 The NSS backends shared internal state between the getXXent
4943   and getXXbyYY NSS calls for the same database, causing a denial-of-service
4944   condition in some applications.
4946 * Added vector math library named libmvec with the following vectorized x86_64
4947   implementations: cos, cosf, sin, sinf, sincos, sincosf, log, logf, exp, expf,
4948   pow, powf.
4949   The library can be disabled with --disable-mathvec. Use of the functions is
4950   enabled with -fopenmp -ffast-math starting from -O1 for GCC version >= 4.9.0.
4951   Shared library libmvec.so is linked in as needed when using -lm (no need to
4952   specify -lmvec explicitly for not static builds).
4953   Visit <https://sourceware.org/glibc/wiki/libmvec> for detailed information.
4955 * A new fmemopen implementation has been added with the goal of POSIX
4956   compliance. The new implementation fixes the following long-standing
4957   issues: BZ#6544, BZ#11216, BZ#12836, BZ#13151, BZ#13152, and BZ#14292. The
4958   old implementation is still present for use be by existing binaries.
4960 * The 32-bit sparc sigaction ABI was inadvertently broken in the 2.20 and 2.21
4961   releases.  It has been fixed to match 2.19 and older, but binaries built
4962   against 2.20 and 2.21 might need to be recompiled.  See BZ#18694.
4964 * Port to Native Client running on ARMv7-A (--host=arm-nacl).
4965   Contributed by Roland McGrath (Google).
4967 * The header <regexp.h> is deprecated, and will be removed in a future
4968   release.  Use of this header will trigger a deprecation warning.
4969   Application developers should update their code to use <regex.h> instead.
4971   This header was formerly part of SUS, but was deprecated in 1994 and
4972   removed from the standard in 2001.  Also, the glibc implementation
4973   leaks memory.  See BZ#18681 for more details.
4975 Version 2.21
4977 * The following bugs are resolved with this release:
4979   6652, 10672, 12674, 12847, 12926, 13862, 14132, 14138, 14171, 14498,
4980   15215, 15378, 15884, 16009, 16418, 16191, 16469, 16576, 16617, 16618,
4981   16619, 16657, 16740, 16857, 17192, 17266, 17273, 17344, 17363, 17370,
4982   17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555,
4983   17570, 17571, 17572, 17573, 17574, 17582, 17583, 17584, 17585, 17589,
4984   17594, 17601, 17608, 17616, 17625, 17630, 17633, 17634, 17635, 17647,
4985   17653, 17657, 17658, 17664, 17665, 17668, 17682, 17702, 17717, 17719,
4986   17722, 17723, 17724, 17725, 17732, 17733, 17744, 17745, 17746, 17747,
4987   17748, 17775, 17777, 17780, 17781, 17782, 17791, 17793, 17796, 17797,
4988   17801, 17803, 17806, 17834, 17844, 17848, 17868, 17869, 17870, 17885,
4989   17892.
4991 * CVE-2015-1472 CVE-2015-1473 Under certain conditions wscanf can allocate
4992   too little memory for the to-be-scanned arguments and overflow the
4993   allocated buffer.  The implementation now correctly computes the required
4994   buffer size when using malloc, and switches to malloc from alloca as
4995   intended.
4997 * A new semaphore algorithm has been implemented in generic C code for all
4998   machines. Previous custom assembly implementations of semaphore were
4999   difficult to reason about or ensure that they were safe. The new version
5000   of semaphore supports machines with 64-bit or 32-bit atomic operations.
5001   The new semaphore algorithm is used by sem_init, sem_open, sem_post,
5002   sem_wait, sem_timedwait, sem_trywait, and sem_getvalue.
5004 * Port to Altera Nios II has been contributed by Mentor Graphics.
5006 * Optimized strcpy, stpcpy, strncpy, stpncpy, strcmp, and strncmp
5007   implementations for powerpc64/powerpc64le.
5008   Implemented by Adhemerval Zanella (IBM).
5010 * Added support for TSX lock elision of pthread mutexes on powerpc32, powerpc64
5011   and powerpc64le.  This may improve lock scaling of existing programs on
5012   HTM capable systems.  The lock elision code is only enabled with
5013   --enable-lock-elision=yes.  Also, the TSX lock elision implementation for
5014   powerpc will issue a transaction abort on every syscall to avoid side
5015   effects being visible outside transactions.
5017 * Optimized strcpy, stpcpy, strchrnul and strrchr implementations for
5018   AArch64.  Contributed by ARM Ltd.
5020 * i386 memcpy functions optimized with SSE2 unaligned load/store.
5022 * CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
5023   under certain input conditions resulting in the execution of a shell for
5024   command substitution when the application did not request it. The
5025   implementation now checks WRDE_NOCMD immediately before executing the
5026   shell and returns the error WRDE_CMDSUB as expected.
5028 * CVE-2012-3406 printf-style functions could run into a stack overflow when
5029   processing format strings with a large number of format specifiers.
5031 * CVE-2014-9402 The nss_dns implementation of getnetbyname could run into an
5032   infinite loop if the DNS response contained a PTR record of an unexpected
5033   format.
5035 * The minimum GCC version that can be used to build this version of the GNU
5036   C Library is GCC 4.6.  Older GCC versions, and non-GNU compilers, can
5037   still be used to compile programs using the GNU C Library.
5039 * The GNU C Library is now built with -Werror by default.  This can be
5040   disabled by configuring with --disable-werror.
5042 * New locales: tu_IN, bh_IN, raj_IN, ce_RU.
5044 * The obsolete sigvec function has been removed.  This was the original
5045   4.2BSD interface that inspired the POSIX.1 sigaction interface, which
5046   programs have been using instead for about 25 years.  Of course, ABI
5047   compatibility for old binaries using sigvec remains intact.
5049 * Merged gettext 0.19.3 into the intl subdirectory.  This fixes building
5050   with newer versions of bison.
5052 * Support for MIPS o32 FPXX, FP64A and FP64 ABI Extensions.
5053   The original MIPS o32 hard-float ABI requires an FPU where double-precision
5054   registers overlay two consecutive single-precision registers.  MIPS32R2
5055   introduced a new FPU mode (FR=1) where double-precision registers extend the
5056   corresponding single-precision registers which is incompatible with the
5057   o32 hard-float ABI.  The MIPS SIMD ASE and the MIPSR6 architecture both
5058   require the use of FR=1 making a transition necessary.  New o32 ABI
5059   extensions enable users to migrate over time from the original o32 ABI
5060   through to the updated o32 FP64 ABI.  To achieve this the dynamic linker now
5061   tracks the ABI of any loaded object and verifies that new objects are
5062   compatible.  Mode transitions will also be requested as required and
5063   unsupportable objects will be rejected.  The ABI checks include both soft and
5064   hard float ABIs for o32, n32 and n64.
5066   GCC 5 with GNU binutils 2.25 onwards:
5067   It is strongly recommended that all o32 system libraries are built using the
5068   new o32 FPXX ABI (-mfpxx) to facilitate the transition as this is compatible
5069   with the original and all new o32 ABI extensions.  Configure a MIPS GCC
5070   compiler using --with-fp-32=xx to set this by default.
5072 Version 2.20
5074 * The following bugs are resolved with this release:
5076   6804, 9894, 11505, 12994, 13347, 13651, 14308, 14770, 15119, 15132, 15347,
5077   15514, 15698, 15804, 15894, 15946, 16002, 16064, 16095, 16194, 16198,
5078   16275, 16284, 16287, 16315, 16348, 16349, 16354, 16357, 16362, 16447,
5079   16516, 16532, 16539, 16545, 16561, 16562, 16564, 16574, 16599, 16600,
5080   16609, 16610, 16611, 16613, 16619, 16623, 16629, 16632, 16634, 16639,
5081   16642, 16648, 16649, 16670, 16674, 16677, 16680, 16681, 16683, 16689,
5082   16695, 16701, 16706, 16707, 16712, 16713, 16714, 16724, 16731, 16739,
5083   16740, 16743, 16754, 16758, 16759, 16760, 16770, 16786, 16789, 16791,
5084   16796, 16799, 16800, 16815, 16823, 16824, 16831, 16838, 16839, 16849,
5085   16854, 16876, 16877, 16878, 16882, 16885, 16888, 16890, 16892, 16912,
5086   16915, 16916, 16917, 16918, 16922, 16927, 16928, 16932, 16943, 16958,
5087   16965, 16966, 16967, 16977, 16978, 16984, 16990, 16996, 17009, 17022,
5088   17031, 17042, 17048, 17050, 17058, 17061, 17062, 17069, 17075, 17078,
5089   17079, 17084, 17086, 17088, 17092, 17097, 17125, 17135, 17137, 17150,
5090   17153, 17187, 17213, 17259, 17261, 17262, 17263, 17319, 17325, 17354.
5092 * Reverted change of ABI data structures for s390 and s390x:
5093   On s390 and s390x the size of struct ucontext and jmp_buf was increased in
5094   2.19. This change is reverted in 2.20. The introduced 2.19 symbol versions
5095   of getcontext, setjmp, _setjmp, __sigsetjmp, longjmp, _longjmp, siglongjmp
5096   are preserved pointing straight to the same implementation as the old ones.
5097   Given that, new callers will simply provide a too-big buffer to these
5098   functions. Any applications/libraries out there that embed jmp_buf or
5099   ucontext_t in an ABI-relevant data structure that have already been rebuilt
5100   against 2.19 headers will have to rebuilt again. This is necessary in any
5101   case to revert the breakage in their ABI caused by the glibc change.
5103 * Support for file description locks is added to systems running the
5104   Linux kernel. The standard file locking interfaces are extended to
5105   operate on file descriptions, not file descriptors, via the use of
5106   F_OFD_GETLK, F_OFD_SETLK, and F_OFD_SETLKW. File description locks
5107   are associated with an open file instead of a process.
5109 * Optimized strchr implementation for AArch64.  Contributed by ARM Ltd.
5111 * The minimum Linux kernel version that this version of the GNU C Library
5112   can be used with is 2.6.32.
5114 * Running the testsuite no longer terminates as soon as a test fails.
5115   Instead, a file tests.sum (xtests.sum from "make xcheck") is generated,
5116   with PASS or FAIL lines for individual tests.  A summary of the results is
5117   printed, including a list of failing lists, and "make check" exits with
5118   error status if there were any unexpected failures.  "make check
5119   stop-on-test-failure=y" may be used to keep the old behavior.
5121 * The am33 port, which had not worked for several years, has been removed
5122   from ports.
5124 * The _BSD_SOURCE and _SVID_SOURCE feature test macros are no longer
5125   supported; they now act the same as _DEFAULT_SOURCE (but generate a
5126   warning).  Except for cases where _BSD_SOURCE enabled BSD interfaces that
5127   conflicted with POSIX (support for which was removed in 2.19), the
5128   interfaces those macros enabled remain available when compiling with
5129   _GNU_SOURCE defined, with _DEFAULT_SOURCE defined, or without any feature
5130   test macros defined.
5132 * Optimized strcmp implementation for ARMv7.  Contributed by ARM Ltd.
5134 * Added support for TX lock elision of pthread mutexes on s390 and s390x.
5135   This may improve lock scaling of existing programs on TX capable systems.
5136   The lock elision code is only built with --enable-lock-elision=yes and
5137   then requires a GCC version supporting the TX builtins.  With lock elision
5138   default mutexes are elided via __builtin_tbegin, if the cpu supports
5139   transactions. By default lock elision is not enabled and the elision code
5140   is not built.
5142 * CVE-2014-4043 The posix_spawn_file_actions_addopen implementation did not
5143   copy the path argument.  This allowed programs to cause posix_spawn to
5144   deference a dangling pointer, or use an unexpected pathname argument if
5145   the string was modified after the posix_spawn_file_actions_addopen
5146   invocation.
5148 * All supported architectures now use the main glibc sysdeps directory
5149   instead of some being in a separate "ports" directory (which was
5150   distributed separately before glibc 2.17).
5152 * The NPTL implementation of POSIX pthreads is no longer an "add-on".
5153   On configurations that support it (all Linux configurations), it's now
5154   used regardless of the --enable-add-ons switch to configure.  It is no
5155   longer possible to build such configurations without pthreads support.
5157 * Locale names, including those obtained from environment variables (LANG
5158   and the LC_* variables), are more tightly checked for proper syntax.
5159   setlocale will now fail (with EINVAL) for locale names that are overly
5160   long, contain slashes without starting with a slash, or contain ".." path
5161   components. (CVE-2014-0475)  Previously, some valid locale names were
5162   silently replaced with the "C" locale when running in AT_SECURE mode
5163   (e.g., in a SUID program).  This is no longer necessary because of the
5164   additional checks.
5166 * On x86-64, the dynamic linker's lazy-binding support is now compatible
5167   with application code using Intel MPX instructions.  (With all previous
5168   versions, the MPX register state could be clobbered when making calls
5169   into or out of a shared library.)  Note that while the new dynamic
5170   linker is compatible with all known x86 hardware whether or not it
5171   supports Intel MPX, some x86 instruction-set emulators might fail to
5172   handle the new instruction encodings.  This is known to affect Valgrind
5173   versions up through 3.9 (but will be fixed in the forthcoming 3.10
5174   release), and might affect other tools that do instruction emulation.
5176 * Support for loadable gconv transliteration modules has been removed.
5177   The support for transliteration modules has been non-functional for
5178   over a decade, and the removal is prompted by security defects.  The
5179   normal gconv conversion modules are still supported.  Transliteration
5180   with //TRANSLIT is still possible, and the //IGNORE specifier
5181   continues to be  supported. (CVE-2014-5119)
5183 * Decoding a crafted input sequence in the character sets IBM933, IBM935,
5184   IBM937, IBM939, IBM1364 could result in an out-of-bounds array read,
5185   resulting a denial-of-service security vulnerability in applications which
5186   use functions related to iconv. (CVE-2014-6040)
5188 Version 2.19
5190 * The following bugs are resolved with this release:
5192   156, 387, 431, 762, 832, 926, 2801, 4772, 6786, 6787, 6807, 6810, 6981,
5193   7003, 9721, 9954, 10253, 10278, 11087, 11157, 11214, 12100, 12486, 12751,
5194   12986, 13028, 13982, 13985, 14029, 14032, 14120, 14143, 14155, 14286,
5195   14547, 14699, 14752, 14782, 14876, 14910, 15004, 15048, 15073, 15089,
5196   15128, 15218, 15268, 15277, 15308, 15362, 15374, 15400, 15425, 15427,
5197   15483, 15522, 15531, 15532, 15593, 15601, 15608, 15609, 15610, 15632,
5198   15640, 15670, 15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748,
5199   15749, 15754, 15760, 15763, 15764, 15797, 15799, 15825, 15843, 15844,
5200   15846, 15847, 15849, 15850, 15855, 15856, 15857, 15859, 15867, 15886,
5201   15887, 15890, 15892, 15893, 15895, 15897, 15901, 15905, 15909, 15915,
5202   15917, 15919, 15921, 15923, 15939, 15941, 15948, 15963, 15966, 15968,
5203   15985, 15988, 15997, 16032, 16034, 16036, 16037, 16038, 16041, 16046,
5204   16055, 16071, 16072, 16074, 16077, 16078, 16103, 16112, 16143, 16144,
5205   16146, 16150, 16151, 16153, 16167, 16169, 16172, 16195, 16214, 16245,
5206   16271, 16274, 16283, 16289, 16293, 16314, 16316, 16330, 16337, 16338,
5207   16356, 16365, 16366, 16369, 16372, 16375, 16379, 16381, 16384, 16385,
5208   16386, 16387, 16390, 16394, 16398, 16400, 16407, 16408, 16414, 16430,
5209   16431, 16453, 16474, 16506, 16510, 16529
5211 * Slovenian translations for glibc messages have been contributed by the
5212   Translation Project's Slovenian team of translators.
5214 * The public headers no longer use __unused nor __block.  This change is to
5215   support compiling programs that are derived from BSD sources and use
5216   __unused internally, and to support compiling with Clang's -fblock
5217   extension which uses __block.
5219 * CVE-2012-4412 The strcoll implementation caches indices and rules for
5220   large collation sequences to optimize multiple passes.  This cache
5221   computation may overflow for large collation sequences and may cause a
5222   stack or buffer overflow.  This is now fixed to use a slower algorithm
5223   which does not use a cache if there is an integer overflow.
5225 * CVE-2012-4424 The strcoll implementation uses malloc to cache indices and
5226   rules for large collation sequences to optimize multiple passes and falls
5227   back to alloca if malloc fails, resulting in a possible stack overflow.
5228   The implementation now falls back to an uncached collation sequence lookup
5229   if malloc fails.
5231 * CVE-2013-4788 The pointer guard used for pointer mangling was not
5232   initialized for static applications resulting in the security feature
5233   being disabled. The pointer guard is now correctly initialized to a
5234   random value for static applications. Existing static applications need
5235   to be recompiled to take advantage of the fix (bug 15754).
5237 * CVE-2013-4237 The readdir_r function could write more than NAME_MAX bytes
5238   to the d_name member of struct dirent, or omit the terminating NUL
5239   character.  (Bugzilla #14699).
5241 * CVE-2013-4332 The pvalloc, valloc, memalign, posix_memalign and
5242   aligned_alloc functions could allocate too few bytes or corrupt the
5243   heap when passed very large allocation size values (Bugzilla #15855,
5244   #15856, #15857).
5246 * CVE-2013-4458 Stack overflow in getaddrinfo with large number of results
5247   for AF_INET6 has been fixed (Bugzilla #16072).
5249 * New locales: ak_GH, anp_IN, ar_SS, cmn_TW, hak_TW, lzh_TW, nan_TW, pap_AW,
5250   pap_CW, quz_PE, the_NP.
5252 * Substantially revised locales: gd_GB, ht_HT
5254 * The LC_ADDRESS field was updated to support country_car for almost all
5255   supported locales.
5257 * ISO 1427 definitions were updated.
5259 * ISO 3166 definitions were updated.
5261 * The localedef utility now supports --big-endian and --little-endian
5262   command-line options to generate locales for a different system from that
5263   for which the C library was built.
5265 * Binary locale files now only depend on the endianness of the system for
5266   which they are generated and not on other properties of that system.  As a
5267   consequence, binary files generated with new localedef may be incompatible
5268   with old versions of the GNU C Library, and binary files generated with
5269   old localedef may be incompatible with this version of the GNU C Library,
5270   in the following circumstances:
5272   + Locale files may be incompatible on m68k systems.
5274   + Locale archive files (but not separate files for individual locales) may
5275     be incompatible on systems where plain "char" is signed.
5277 * The configure option --disable-versioning has been removed.  Builds with
5278   --disable-versioning had not worked for several years.
5280 * ISO 639 definitions were updated for Chiga (cgg) and Chinese (gan, hak, czh,
5281   cjy, lzh, cmn, mnp, cdo, czo, cpx, wuu, hsn, yue).
5283 * SystemTap probes for malloc have been introduced.
5285 * SystemTap probes for slow multiple precision fallback paths of
5286   transcendental functions have been introduced.
5288 * Support for powerpc64le has been added.
5290 * The soft-float powerpc port now supports e500 processors.
5292 * Support for STT_GNU_IFUNC symbols added for ppc32/power4+ and ppc64.
5294 * A new feature test macro _DEFAULT_SOURCE is available to enable the same
5295   set of header declarations that are enabled by default, even when other
5296   feature test macros or compiler options such as -std=c99 would otherwise
5297   disable some of those declarations.
5299 * The _BSD_SOURCE feature test macro no longer enables BSD interfaces that
5300   conflict with POSIX.  The libbsd-compat library (which was a dummy library
5301   that did nothing) has also been removed.
5303 * Preliminary documentation about Multi-Thread, Async-Signal and
5304   Async-Cancel Safety has been added.
5306 * Change of ABI data structures for s390 and s390x:
5307   On s390 and s390x the size of struct ucontext and jmp_buf was increased to
5308   allow for future hardware extensions. All library functions that accept or
5309   return these structures were versioned in order to provide backwards
5310   compatibility with existing code. However, not all cases can be handled
5311   with interface versioning. If an application embeds either structure into
5312   another structure and that structure is passed to another compilation unit
5313   which expects the newer larger-sized object then any access to the new
5314   fields will result in undefined behaviour. Similarly any access to fields
5315   that were moved by the enlarging of the structures will cause undefined
5316   behaviour. To fix the undefined behaviour all objects that are part of the
5317   final in-memory image must agree on the size of structures, and this may
5318   require recompilation.
5320 Version 2.18
5322 * The following bugs are resolved with this release:
5324   2546, 2560, 5159, 6809, 7006, 10060, 10062, 10283, 10357, 10686, 11120,
5325   11561, 12310, 12387, 12492, 12515, 12723, 13550, 13889, 13951, 13988,
5326   14142, 14176, 14200, 14256, 14280, 14293, 14317, 14327, 14478, 14496,
5327   14582, 14686, 14812, 14888, 14894, 14907, 14908, 14909, 14920, 14941,
5328   14952, 14964, 14981, 14982, 14985, 14991, 14994, 14996, 15000, 15003,
5329   15006, 15007, 15014, 15020, 15022, 15023, 15036, 15054, 15055, 15062,
5330   15078, 15084, 15085, 15086, 15100, 15160, 15214, 15221, 15232, 15234,
5331   15283, 15285, 15287, 15304, 15305, 15307, 15309, 15327, 15330, 15335,
5332   15336, 15337, 15339, 15342, 15346, 15359, 15361, 15366, 15380, 15381,
5333   15394, 15395, 15405, 15406, 15409, 15416, 15418, 15419, 15423, 15424,
5334   15426, 15429, 15431, 15432, 15441, 15442, 15448, 15465, 15480, 15485,
5335   15488, 15490, 15492, 15493, 15497, 15506, 15529, 15536, 15553, 15577,
5336   15583, 15618, 15627, 15631, 15654, 15655, 15666, 15667, 15674, 15711,
5337   15755, 15759.
5339 * CVE-2013-2207 Incorrectly granting access to another user's pseudo-terminal
5340   has been fixed by disabling the use of pt_chown (Bugzilla #15755).
5341   Distributions can re-enable building and using pt_chown via the new configure
5342   option `--enable-pt_chown'.  Enabling the use of pt_chown carries with it
5343   considerable security risks and should only be used if the distribution
5344   understands and accepts the risks.
5346 * CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
5347   #15078).
5349 * CVE-2013-1914 Stack overflow in getaddrinfo with many results has been
5350   fixed (Bugzilla #15330).
5352 * Add support for calling C++11 thread_local object destructors on thread
5353   and program exit.  This needs compiler support for offloading C++11
5354   destructor calls to glibc.
5356 * Improved worst case performance of libm functions with double inputs and
5357   output.
5359 * Support for priority inherited mutexes in pthread condition variables on
5360   non-x86 architectures.
5362 * Port to Xilinx MicroBlaze contributed by David Holsgrove.
5364 * Optimized string functions for AArch64.  Implemented by Marcus Shawcroft.
5366 * Optimized string functions for ARM.  Implemented by Will Newton and
5367   Richard Henderson.
5369 * Optimized libm functions for SPARC.  Implemented by David S. Miller.
5371 * Support for building more of ARM glibc as Thumb-2 code.  Implemented by
5372   Richard Henderson.
5374 * Support for building most of MIPS glibc as MIPS16 code.  Implemented by
5375   Chung-Lin Tang, Maciej W. Rozycki and Maxim Kuvyrkov.
5377 * Added a benchmark framework to track performance of functions in glibc.
5379 * New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
5380   It is based on draft TS 18661 and currently enabled as a GNU extension.
5382 * On Linux, the clock function now uses the clock_gettime system call
5383   for improved precision, rather than old times system call.
5385 * Added support for version-3 tz format files.  This is needed when using
5386   the tz database release 2013e or later, and affects a few unusual cases --
5387   currently only TZ='America/Godthab' for time stamps after 2037.
5389 * Added new API functions pthread_getattr_default_np and
5390   pthread_setattr_default_np to get and set the default pthread
5391   attributes of a process.
5393 * Added support for TSX lock elision for pthread mutexes on i386 and x86-64.
5394   This may improve lock scaling of existing programs on TSX capable systems.
5395   When the --enable-lock-elision=yes parameter is specified at configure
5396   time lock elision will be enabled by default for all PTHREAD_MUTEX_DEFAULT
5397   mutexes.
5399 * Support added for AT_HWCAP2 (to coincide with Linux kernel 3.10
5400   availability).  Implemented by Ryan S. Arnold.
5402 * Support added for POWER8 platform.  Implemented by Ryan S. Arnold.
5404 Version 2.17
5406 * The following bugs are resolved with this release:
5408   1349, 3439, 3479, 3665, 5044, 5246, 5298, 5400, 6530, 6677, 6778, 6808,
5409   9685, 9914, 10014, 10038, 10114, 10191, 10631, 10873, 11438, 11607, 11638,
5410   11741, 12140, 13013, 13412, 13542, 13601, 13603, 13604, 13629, 13679,
5411   13696, 13698, 13717, 13741, 13759, 13761, 13763, 13881, 13939, 13950,
5412   13952, 13966, 14042, 14047, 14090, 14150, 14151, 14152, 14154, 14157,
5413   14166, 14173, 14195, 14197, 14237, 14246, 14251, 14252, 14283, 14298,
5414   14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14368, 14376,
5415   14417, 14447, 14459, 14476, 14477, 14501, 14505, 14510, 14516, 14518,
5416   14519, 14530, 14532, 14538, 14543, 14544, 14545, 14557, 14562, 14568,
5417   14576, 14579, 14583, 14587, 14595, 14602, 14610, 14621, 14638, 14645,
5418   14648, 14652, 14660, 14661, 14669, 14672, 14683, 14694, 14716, 14719,
5419   14743, 14767, 14783, 14784, 14785, 14793, 14796, 14797, 14801, 14803,
5420   14805, 14807, 14811, 14815, 14821, 14822, 14824, 14828, 14831, 14833,
5421   14835, 14838, 14856, 14863, 14865, 14866, 14868, 14869, 14871, 14872,
5422   14879, 14889, 14893, 14898, 14914.
5424 * Optimization of memcpy for MIPS.
5426 * CVE-2011-4609 svc_run() produces high cpu usage when accept fails with
5427   EMFILE has been fixed (Bugzilla #14889).
5429 * The add-on ports collection is now distributed in the "ports" subdirectory
5430   of the main GNU C Library distribution, rather than separately.
5432 * Port to ARM AArch64 contributed by Linaro.
5434 * Support for STT_GNU_IFUNC symbols added for s390 and s390x.
5435   Optimized versions of memcpy, memset, and memcmp added for System z10 and
5436   zEnterprise z196.
5437   Implemented by Andreas Krebbel.
5439 * The new function secure_getenv allows secure access to the environment,
5440   returning NULL if running in a SUID/SGID process.  This function replaces
5441   the internal function __secure_getenv.
5443 * SystemTap static probes have been added into the dynamic linker.
5444   Implemented by Gary Benson.
5446 * Optimizations of string functions strstr, strcasestr and memmem.
5447   Implemented by Maxim Kuvyrkov.
5449 * The minimum Linux kernel version that this version of the GNU C Library
5450   can be used with is 2.6.16.
5452 * Optimizations of string functions memchr, wcschr, wcscpy, and wcsrchr for
5453   powerpc POWER7.  Implemented by Will Schmidt.
5455 * New configure option --disable-nscd builds the C library such that it
5456   never attempts to contact the Name Service Caching Daemon (nscd).
5457   New configure option --disable-build-nscd avoids building nscd itself;
5458   this is the default if --disable-nscd is used.
5460 * Improved support for cross-compilation, including cross-testing and
5461   bootstrap builds without a previously built glibc.
5463 * Several testsuite tests are now able to test multiple IFUNC variants of an
5464   interface, rather than just testing the one that would be chooen by
5465   default.
5467 * New configure options --with-bugurl and --with-pkgversion, for
5468   distributors to use to embed their bug-reporting and package version
5469   information in --help and --version output.
5471 * The ttyname and ttyname_r functions on Linux now fall back to searching for
5472   the tty file descriptor in /dev/pts or /dev if /proc is not available.  This
5473   allows creation of chroots without the procfs mounted on /proc.
5475 * The `crypt' function now fails if passed salt bytes that violate the
5476   specification for those values.  On Linux, the `crypt' function will
5477   consult /proc/sys/crypto/fips_enabled to determine if "FIPS mode" is
5478   enabled, and fail on encrypted strings using the MD5 or DES algorithm
5479   when the mode is enabled.
5481 * The `clock_*' suite of functions (declared in <time.h>) is now available
5482   directly in the main C library.  Previously it was necessary to link with
5483   -lrt to use these functions.  This change has the effect that a
5484   single-threaded program that uses a function such as `clock_gettime' (and
5485   is not linked with -lrt) will no longer implicitly load the pthreads
5486   library at runtime and so will not suffer the overheads associated with
5487   multi-thread support in other code such as the C++ runtime library.
5489 * New locales: ayc_PE, doi_IN, ia_FR, mni_IN, nhn_MX, niu_NU, niu_NZ,
5490   sat_IN, and szl_PL.
5492 Version 2.16
5494 * The following bugs are resolved with this release:
5496   174, 208, 350, 369, 411, 706, 766, 2074, 2541, 2547, 2548, 2550, 2551,
5497   2552, 2553, 2554, 2562, 2563, 2565, 2566, 2570, 2576, 2636, 2678, 3335,
5498   3440, 3748, 3768, 3866, 3868, 3906, 3976, 3992, 4026, 4108, 4596, 4822,
5499   5077, 5461, 5805, 5993, 6471, 6486, 6578, 6649, 6730, 6770, 6794, 6884,
5500   6890, 6894, 6895, 6907, 6911, 6959, 7064, 9739, 9902, 10110, 10135, 10140,
5501   10153, 10210, 10254, 10346, 10375, 10545, 10716, 10846, 10882, 11174,
5502   11261, 11322, 11365, 11451, 11494, 11521, 11677, 11837, 11959, 12047,
5503   12097, 12193, 12194, 12297, 12298, 12301, 12340, 12354, 12416, 12495,
5504   13058, 13223, 13361, 13525, 13526, 13527, 13528, 13529, 13530, 13531,
5505   13532, 13533, 13547, 13551, 13552, 13553, 13555, 13556, 13559, 13563,
5506   13566, 13576, 13579, 13583, 13592, 13594, 13613, 13618, 13637, 13656,
5507   13658, 13673, 13691, 13695, 13704, 13705, 13706, 13718, 13726, 13738,
5508   13739, 13743, 13750, 13758, 13760, 13761, 13775, 13786, 13787, 13792,
5509   13806, 13824, 13840, 13841, 13844, 13846, 13848, 13851, 13852, 13854,
5510   13871, 13872, 13873, 13879, 13882, 13883, 13884, 13885, 13886, 13892,
5511   13895, 13908, 13910, 13911, 13912, 13913, 13914, 13915, 13916, 13917,
5512   13918, 13919, 13920, 13921, 13922, 13923, 13924, 13926, 13927, 13928,
5513   13938, 13941, 13942, 13954, 13955, 13956, 13963, 13967, 13968, 13970,
5514   13973, 13979, 13983, 13986, 13996, 14012, 14027, 14033, 14034, 14036,
5515   14040, 14043, 14044, 14048, 14049, 14050, 14053, 14055, 14059, 14064,
5516   14075, 14080, 14083, 14103, 14104, 14109, 14112, 14117, 14122, 14123,
5517   14134, 14153, 14183, 14188, 14199, 14210, 14218, 14229, 14241, 14273,
5518   14277, 14278.
5520 * Support for the x32 ABI on x86-64 added.  The x32 target is selected by
5521   configuring glibc with:
5522         BUILD_CC='gcc' CC='gcc -mx32' CXX='g++ -mx32'
5523   Visit <https://sites.google.com/site/x32abi/> for more x32 ABI info.
5524   Implemented by H.J. Lu.
5526 * ISO C11 support:
5528   + define static_assert
5530   + do not declare gets
5532   + declare at_quick_exit and quick_exit also for ISO C11
5534   + aligned_alloc.  NB: The code is deliberately allows the size parameter
5535     to not be a multiple of the alignment.  This is a moronic requirement
5536     in the standard but it is only a requirement on the caller, not the
5537     implementation.
5539   + timespec_get added
5541   + uchar.h support added
5543   + CMPLX, CMPLXF, CMPLXL added
5545   Implemented by Ulrich Drepper.
5547 * Support for the IA-64 has been moved to ports.
5549 * Remove support for anything but ELF binary format
5551 * Checking versions of poll, ppoll added.
5552   Implemented by Ulrich Drepper.
5554 * More generic and 64-bit performance optimizations to math functions.
5555   Implemented by Ulrich Drepper.
5557 * New configure option --enable-obsolete-rpc makes the deprecated RPC
5558   headers and functions available at compile time as they were before
5559   version 2.14.  This option will be removed at some time in the future
5560   after the TI-RPC library becomes fully sufficient for the needs of
5561   existing applications.
5563 * Compatibility code for Linux kernel versions before 2.4 has been removed.
5564   Note that glibc is not expected to work with any Linux kernel version
5565   before 2.6.
5567 * New header <sys/auxv.h> and function getauxval allowing easy access to
5568   the AT_* key-value pairs passed from the Linux kernel.  The header also
5569   defines the HWCAP_* bits associated with the AT_HWCAP key.
5571 * New locales: mag_IN
5573 * New configure option --enable-systemtap builds SystemTap static probes
5574   into libc for setjmp and longjmp and into libpthread for various operations.
5575   So far the setjmp/longjmp probes and some of the libpthread probes are
5576   provided only for i*86 and x86_64.
5577   Implemented by Roland McGrath and Rayson Ho.
5579 * Optimized expf for x86-32 and x86-64.  Implemented by Liubov Dmitrieva.
5581 * More optimized functions for PowerPC.  Implemented by Adhemerval Zanella
5582   and Will Schmidt.
5584 * More optimized functions for SPARC.  Implemented by David S. Miller.
5586 * Improved support for cross-compilation, especially bootstrap builds
5587   without a previously built glibc.
5589 * Ports for the TILE-Gx and TILEPro families of processors.  Contributed by
5590   Chris Metcalf from Tilera.
5592 * Support for the old ARM ABI has been removed from ports.  Only the EABI is
5593   now supported for ARM processors.
5595 * The hard-float variant of the ARM EABI now uses /lib/ld-linux-armhf.so.3
5596   as the name of the dynamic linker, to distinguish it from the
5597   /lib/ld-linux.so.3 dynamic linker used for the base EABI.
5599 * Support for CRIS has been removed from ports.
5601 * A new class of installed header has been documented for low-level
5602   platform-specific functionality.  PowerPC added the first instance with a
5603   function to provide time base register access.  Contributed by Tulio
5604   Magno Quites Machado Filho.
5606 * ix86 configurations now install header files that are consistent with
5607   what x86-64 configurations install.  These same header files can be used
5608   for -m32, -m64, or -mx32 builds.
5609   Contributed by H.J. Lu.
5611 * Math library bug fixes.  A thorough audit of all open math library bugs was
5612   conducted by Joseph Myers.  Significant progress was made on many math
5613   library bugs resulting in more accurate exceptions and function results.
5614   Many thanks to all those that contributed including Andreas Jaeger for his
5615   patch review and work on the x87 trigonometric instruction issues.
5617 * Timezone data is no longer installed.  Timezone-related binaries and scripts
5618   will continue to be installed.  Users should obtain their timezone data from
5619   their distribution provider or from the tzdata package at
5620   <ftp://munnari.oz.au/pub/>.
5622 Version 2.15
5624 * The following bugs are resolved with this release:
5626   6779, 6783, 9696, 10103, 10709, 11589, 11929, 12403, 12786, 12840, 12847,
5627   12868, 12852, 12874, 12885, 12892, 12906, 12907, 12922, 12935, 12962,
5628   13007, 13021, 13061, 13062, 13067, 13068, 13085, 13088, 13090, 13092,
5629   13096, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13166, 13179,
5630   13185, 13189, 13192, 13268, 13276, 13282, 13291, 13305, 13328, 13335,
5631   13337, 13344, 13358, 13367, 13413, 13416, 13423, 13439, 13446, 13472,
5632   13484, 13506, 13515, 13523, 13524, 13538, 13540
5634 * New program pldd to list loaded object of a process
5635   Implemented by Ulrich Drepper.
5637 * Add nss_db support back to glibc.  No more dependency on Berkeley db
5638   and support for initgroups lookups.
5639   Implemented by Ulrich Drepper.
5641 * Optimized strcpy, strncpy, stpcpy, stpncpy for SSE2 and SSSE3 on x86-32.
5642   Contributed by HJ Lu.
5644 * Improved strcpy, strncpy, stpcpy, stpncpy for SSE2 and SSSE3 on x86-64.
5645   Contributed by HJ Lu.
5647 * Optimized strcat, strncat on x86-64 and optimized wcscmp, wcslen, strnlen
5648   on x86-32 and x86-64.
5649   Contributed by Liubov Dmitrieva.
5651 * Optimized strchr and strrchr for SSE on x86-32.
5652   Contributed by Liubov Dmitrieva.
5654 * Optimized memchr, memrchr, rawmemchr, memcmp, wmemcmp, wcschr, wcscpy
5655   for x86-64 and x86-32.
5656   Contributed by Liubov Dmitrieva.
5658 * New interfaces: scandirat, scandirat64
5659   Implemented by Ulrich Drepper.
5661 * Checking versions of FD_SET, FD_CLR, and FD_ISSET added.
5662   Implemented by Ulrich Drepper.
5664 * nscd now also caches the netgroup database.
5665   Implemented by Ulrich Drepper.
5667 * Integrate libm with gcc's -ffinite-math-only option.
5668   Implemented by Ulrich Drepper.
5670 * Lots of generic, 64-bit, and x86-64-specific performance optimizations
5671   to math functions.  Implemented by Ulrich Drepper.
5673 * Optimized strcasecmp and strncasecmp for AVX on x86-64.
5674   Implemented by Ulrich Drepper.
5676 * New Linux interfaces: process_vm_readv, process_vm_writev
5678 * Optimized strcasecmp and strncasecmp for SSSE3 and SSE4.2 on x86-32.
5679   Implemented by Ulrich Drepper.
5681 * Optimized nearbyint and strcasecmp for PPC.
5682   Implemented by Adhemerval Zanella.
5684 * New locales: bho_IN, unm_US, es_CU, ta_LK
5686 Version 2.14
5688 * The following bugs are resolved with this release:
5690   386, 6420, 7101, 9730, 9732, 9809, 10138, 10149, 10157, 11099, 11257,
5691   11258, 11487, 11532, 11558, 11578, 11634, 11653, 11668, 11697, 11724,
5692   11781, 11799, 11820, 11837, 11857, 11884, 11892, 11895, 11901, 11945,
5693   11947, 11952, 11987, 12052, 12083, 12158, 12178, 12200, 12346, 12350,
5694   12393, 12420, 12432, 12445, 12449, 12453, 12454, 12460, 12469, 12489,
5695   12509, 12510, 12511, 12518, 12527, 12541, 12545, 12551, 12582, 12583,
5696   12587, 12597, 12601, 12611, 12625, 12626, 12631, 12650, 12653, 12655,
5697   12660, 12671, 12681, 12684, 12685, 12711, 12713, 12714, 12717, 12723,
5698   12724, 12734, 12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792,
5699   12795, 12811, 12813, 12814, 12841
5701 * The RPC implementation in libc is obsoleted.  Old programs keep working
5702   but new programs cannot be linked with the routines in libc anymore.
5703   Programs in need of RPC functionality must be linked against TI-RPC.
5704   The TI-RPC implementation is IPv6 enabled and there are other benefits.
5706   Visible changes of this change include (obviously) the inability to link
5707   programs using RPC functions without referencing the TI-RPC library and the
5708   removal of the RPC headers from the glibc headers.
5709   Implemented by Ulrich Drepper.
5711 * New Linux interfaces: clock_adjtime, name_to_handle_at, open_by_handle_at,
5712   syncfs, setns, sendmmsg
5714 * New locales: os_RU, bem_ZA, en_ZA, ff_SN, sw_KE, sw_TZ, lb_LU, wae_CH,
5715   yue_HK, lij_IT, mhr_RU
5717 * New encodings: CP770, CP771, CP772, CP773, CP774
5719 * New program sotruss to trace calls through PLTs
5720   Implemented by Ulrich Drepper.
5722 * The malloc hook implementation is marked deprecated and will be removed
5723   from the default implementation in the next version.  The design never
5724   worked ever since the introduction of threads.  Even programs which do
5725   not create threads themselves can use multiple threads created internally.
5727 Version 2.13
5729 * The following bugs are resolved with this release:
5731   3268, 6812, 7066, 10085, 10484, 10563, 10851, 11149, 11155, 11577, 11611,
5732   11640, 11655, 11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979,
5733   12005, 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113,
5734   12140, 12159, 12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348,
5735   12378, 12394, 12397
5737 * New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark
5739 * POWER7 optimizations: memset, memcmp, strncmp
5741 * New optimized string functions for x86-64: strnlen (SSE2),
5742   strcasecmp (SSE2, SSSE3, SSE4.2), strncasecmp (SSE2, SSSE3, SSE4.2)
5743   Implemented by Ulrich Drepper.
5745 Version 2.12
5747 * The following bugs are resolved with this release:
5749   3662, 4457, 5553, 10162, 10401, 10414, 10554, 10824, 10864, 10915,
5750   10918, 10936, 10939, 10958, 10968, 10969, 10972, 10992, 11000, 11001,
5751   11007, 11010, 11027, 11039, 11040, 11041, 11043, 11046, 11056, 11070,
5752   11093, 11115, 11125, 11126, 11127, 11134, 11141, 11149, 11183, 11184,
5753   11185, 11186, 11187, 11188, 11189, 11190, 11191, 11192, 11193, 11194,
5754   11200, 11230, 11235, 11242, 11254, 11258, 11271, 11272, 11276, 11279,
5755   11287, 11292, 11319, 11332, 11333, 11387, 11389, 11390, 11394, 11397,
5756   11410, 11438, 11449, 11470, 11471, 11520, 11537, 11538, 11571
5758 * New interfaces: pthread_getname_np, pthread_setname_np
5760 * New Linux interface: recvmmsg
5762 * STT_GNU_IFUNC implemented for Sparc by David Miller.
5764 * The dynamic linker now recognizes supported ABI versions from the
5765   EI_ABIVERSION field in the ELF header.
5766   Implemented by Ulrich Drepper.
5768 * New NIS mode selector ADJUNCT_AS_SHADOW.  The passwd.adjunct.byname table
5769   will not be used to fill in password fields in the passwd.byname replies.
5770   Instead it is used to synthesize the shadow.byname table, should it be
5771   missing.  This is a useful mode in some installations involving Solaris.
5772   Implemented by Ulrich Drepper.
5774 * New locales: kok_IN, sq_MK, cv_RU
5776 Version 2.11
5778 * The following bugs are resolved with this release:
5780   3270, 7094, 9924, 9986, 10011, 10085, 10107, 10159, 10162, 10166, 10183,
5781   10195, 10196, 10200, 10203, 10207, 10211, 10213, 10217, 10221, 10229,
5782   10262, 10286, 10312, 10315, 10319, 10349, 10360, 10391, 10402, 10416,
5783   10418, 10422, 10425, 10446, 10448, 10452, 10540, 10553, 10560, 10564,
5784   10609, 10643, 10692, 10713, 10717, 10730, 10731, 10742, 10780, 10784,
5785   10789, 10817, 10823, 10840, 10847
5787 * New interfaces: execvpe, pthread_sigqueue, mkstemps, mkstemps64, mkostemps,
5788   mkostemps64
5789   Implemented by Ulrich Drepper.
5791 * Checking version of longjmp added that fails if an uninitialized stack
5792   frame would be created.  Implemented by Ulrich Drepper.
5794 * STT_GNU_IFUNC is now supported in static executables.
5795   Implemented by H.J. Lu.
5797 * STT_GNU_IFUNC implemented for PPC by Alan Modra.
5799 * New optimized string functions for x86-64: strstr, strcasestr, memcmp,
5800   strcspn, strpbrk, strspn, strcpy, stpcpy, strncpy, strcmp (SSE2, SSE4.2),
5801   strncmp (SSE2, SSE4.2), strchr (SSE4.2), strrchr (SSE4.2).
5802   Contributed by H.J. Lu.
5804   strlen, rawmemchr, strcmp (SSSE3), strncmp (SSSE3).
5805   Implemented by Ulrich Drepper.
5807 * New optimized string functions for x86: strlen, strcspn, strspn, strpbrk,
5808   strstr, strcasestr.
5809   Contributed by H.J. Lu.
5811 * Support for fma instruction in AVX on x86-64.
5812   Implemented by H.J. Lu and Ulrich Drepper.
5814 * AVX support in x86-64 auditing support in ld.so.
5815   Implemented by H.J. Lu.
5817 * STB_GNU_UNIQUE support added.
5818   Implemented by Ulrich Drepper.
5820 * Implement second fallback mode for optimized DNS lookup for even more
5821   broken environments.  If two requests from the same port are not
5822   handled correctly close the socket and open a new one before sending
5823   the second request.  The 'single-request-reopen' option in /etc/resolv.conf
5824   can be used to select this mode right away, instead of rediscovering the
5825   necessity is every process again.
5826   Implemented by Ulrich Drepper.
5828 * New resolver flag RES_USE_DNSSEC to enable use of verified lookup.
5829   Implemented by Adam Tkac.
5831 * Optimized iconv conversions for S390x.
5832   Implemented by Andreas Krebbel.
5834 * Using condvars with PI mutexes is now more efficient due to kernel
5835   support for requeueing to PI futexes.  NPTL support added for x86-64.
5836   Implemented by Ulrich Drepper.
5838 * New locales: ps_AF, my_MM
5840 Version 2.10
5842 * The following bugs are resolved with this release:
5844   697, 5381, 5807, 6411, 6545, 7040, 7058, 7067, 7080, 7083, 7095, 7098,
5845   9677, 9694, 9697, 9701, 9704, 9705, 9706, 9720, 9726, 9730, 9733, 9736,
5846   9741, 9750, 9753, 9759, 9781, 9791, 9793, 9823, 9833, 9844, 9880, 9881,
5847   9891, 9893, 9895, 9913, 9916, 9920, 9948, 9955, 9957, 9963, 9985, 10052,
5848   10069, 10086, 10087, 10090, 10092, 10093, 10100, 10118, 10128
5850 * New interfaces: preadv, preadv64, pwritev, pwritev64, malloc_info
5851   Implemented by Ulrich Drepper.
5853 * New Linux interfaces: accept4, fallocate, fallocate64.
5854   Implemented by Ulrich Drepper.
5856 * Correct declarations of string function when used in C++ code.  This
5857   could lead to compile errors for invalid C++ code.
5859 * XPG7/POSIX 2008 compilation environment.  Many GNU-specific functions are
5860   now in POSIX.
5862 * New POSIX 2008 interface: psiginfo
5863   Implemented by Ulrich Drepper.
5865 * New ISO C++1x interfaces: quick_exit, at_quick_exit
5866   Implemented by Ulrich Drepper.
5868 * Support for selecting between multiple function definitions at runtime
5869   using STT_GNU_IFUNC symbols.  Implemented by Ulrich Drepper.
5871 * The libcrypt library can now use the hash function implementations in
5872   NSS.  Implemented by Ulrich Drepper.
5874 * The malloc implementation can be compiled to be less memory efficient
5875   but higher performing in multi-threaded programs.
5876   Implemented by Ulrich Drepper.
5878 * New locales: nan_TW@latin, ks_IN
5880 * Faster strlen, strchr, strchrnul, strrchr, memchr, and rawmemchr for x86-64.
5881   Implemented by Ulrich Drepper.
5883 * Extended printf hook support.  It is possible to use user-defined types
5884   and extend existing format specifiers.
5885   Implemented by Ulrich Drepper.
5887 * Handling for group shadow files has been added.
5888   Implemented by Ulrich Drepper.
5890 * DNS IPv4-IPv6 parallel lookup now deals better with broken DNS
5891   servers (the case, e.g., for some people using the built-in DNS
5892   server in ADSL modems/routers).  There is a once-per-process timeout
5893   in case of a broken server.  To avoid it, users can run nscd or put
5894   'options single-request' in /etc/resolv.conf.
5895   Implemented by Ulrich Drepper.
5897 Version 2.9
5899 * The following bugs are resolved with this release:
5901   2447, 3406, 5209, 5210, 5381, 5794, 5814, 5911, 6428, 6438, 6442, 6447,
5902   6461, 6472, 6505, 6544, 6589, 6612, 6634, 6653, 6654, 6657, 6698, 6712,
5903   6713, 6719, 6723, 6724, 6740, 6763, 6771, 6790, 6791, 6817, 6824, 6839,
5904   6843, 6845, 6856, 6857, 6860, 6867, 6875, 6919, 6920, 6942, 6947, 6955,
5905   6966, 6968, 6974, 6980, 6995, 7008, 7009, 7029
5907 * Unified lookup for getaddrinfo: IPv4 and IPv6 addresses are now looked
5908   up at the same time.  Implemented by Ulrich Drepper.
5910 * TLS descriptors for LD and GD on x86 and x86-64.
5911   Implemented by Alexandre Oliva.
5913 * getaddrinfo now handles DCCP and UDPlite.
5914   Implemented by Ulrich Drepper.
5916 * New fixed-size conversion macros: htobe16, htole16, be16toh, le16toh,
5917   htobe32, htole32, be32toh, le32toh, htobe64, htole64, be64toh, le64toh.
5918   Implemented by Ulrich Drepper.
5920 * New implementation of memmem, strstr, and strcasestr which is O(n).
5921   Implemented by Eric Blake.
5923 * New Linux interfaces: inotify_init1, dup3, epoll_create1, pipe2
5925 * Implement "e" option for popen to open file descriptor with the
5926   close-on-exec flag set.  Implemented by Ulrich Drepper.
5928 * Implement "b" mode for fmemopen.  In this mode writes writes don't
5929   implicitly add a NUL byte and seeks from the end of the buffer really
5930   use the buffer end, not the string length as the basis.
5931   Implemented by Ulrich Drepper.
5933 * Many functions, exported and internal, now atomically set the close-on-exec
5934   flag when run on a sufficiently new kernel.  Implemented by Ulrich Drepper.
5936 * Sorting rules for some Indian languages (Kannada, Gurumukhi, Telugu,
5937   Sinhala)
5938   Implemented by Pravin Satpute.
5940 * New locales: sd_IN, sd_IN@devanagari, ks_IN@devanagari, ht_HT, en_AG, nl_AW.
5942 Version 2.8
5944 * The following bugs are resolved with this release:
5946   2549, 3112, 4314, 4407, 4997, 5012, 5040, 5112, 5204, 5208, 5209, 5220,
5947   5222, 5224, 5225, 5237, 5238, 5240, 5245, 5277, 5346, 5375, 5378, 5382,
5948   5424, 5427, 5428, 5435, 5436, 5439, 5441, 5442, 5443, 5451, 5452, 5454,
5949   5455, 5463, 5464, 5465, 5475, 5477, 5478, 5520, 5541, 5545, 5553, 5600,
5950   5602, 5607, 5614, 5627, 5628, 5736, 5737, 5741, 5753, 5760, 5762, 5768,
5951   5774, 5777, 5778, 5779, 5786, 5790, 5818, 5854, 5857, 5903, 5939, 5979,
5952   5983, 5995, 5998, 6004, 6007, 6020, 6021, 6024, 6040, 6042
5954 * New locales: bo_CN, bo_IN, shs_CA.
5956 * New encoding: HP-ROMAN9, HP-GREEK8, HP-THAI8, HP-TURKISH8.
5958 * Sorting rules for some Indian languages (Devanagari and Gujarati).
5959   Implemented by Pravin Satpute.
5961 * IPV6 addresses in /etc/resolv.conf can now have a scope ID
5963 * nscd caches now all timeouts for DNS entries
5964   Implemented by Ulrich Drepper.
5966 * nscd is more efficient and wakes up less often.
5967   Implemented by Ulrich Drepper.
5969 * More checking functions: asprintf, dprintf, obstack_printf, vasprintf,
5970   vdprintf, and obstack_vprintf.
5971   Implemented by Jakub Jelinek.
5973 * Faster memset for x86-64.
5974   Implemented by Harsha Jagasia and H.J. Lu.
5976 * Faster memcpy on x86.
5977   Implemented by Ulrich Drepper.
5979 * ARG_MAX is not anymore constant on Linux.  Use sysconf(_SC_ARG_MAX).
5980   Implemented by Ulrich Drepper.
5982 * Faster sqrt and sqrtf implementation for some PPC variants.
5983   Implemented by Steven Munroe.
5985 Version 2.7
5987 * The following bugs are resolved with this release:
5989   4125, 4126, 4178, 4359, 4407, 4512, 4514, 4525, 4554, 4556, 4557, 4566,
5990   4582, 4586, 4588, 4599, 4610, 4647, 4702, 4705, 4726, 4745, 4772, 4773,
5991   4775, 4776, 4792, 4813, 4814, 4816, 4833, 4858, 4860, 4896, 4905, 4925,
5992   4936, 4937, 4938, 4941, 4946, 4963, 4972, 5010, 5028, 5043, 5058, 5063,
5993   5071, 5103, 5104, 5112, 5113, 5184, 5186
5995 * More checking functions: fread, fread_unlocked, open*, mq_open.
5996   Implemented by Jakub Jelinek and Ulrich Drepper.
5998 * Extend fortification to C++.  Implemented by Jakub Jelinek.
6000 * Implement 'm' modifier for scanf.  Add stricter C99/SUS compliance
6001   by not recognizing 'a' as a modifier when those specs are requested.
6002   Implemented by Jakub Jelinek.
6004 * PPC optimizations to math and string functions.
6005   Implemented by Steven Munroe.
6007 * New interfaces: mkostemp, mkostemp64.  Like mkstemp* but allow additional
6008   options to be passed.  Implemented by Ulrich Drepper.
6010 * More CPU set manipulation functions.  Implemented by Ulrich Drepper.
6012 * New Linux interfaces: signalfd, eventfd, eventfd_read, and eventfd_write.
6013   Implemented by Ulrich Drepper.
6015 * Handle private futexes in the NPTL implementation.
6016   Implemented by Jakub Jelinek and Ulrich Drepper.
6018 * Add support for O_CLOEXEC.  Implement in Hurd.  Use throughout libc.
6019   Implemented by Roland McGrath and Ulrich Drepper.
6021 * Linux/x86-64 vDSO support.  Implemented by Ulrich Drepper.
6023 * SHA-256 and SHA-512 based password encryption.
6024   Implemented by Ulrich Drepper.
6026 * New locales: ber_DZ, ber_MA, en_NG, fil_PH, fur_IT, fy_DE, ha_NG, ig_NG,
6027   ik_CA, iu_CA, li_BE, li_NL, nds_DE, nds_NL, pap_AN, sc_IT, tk_TM, ug_CN,
6028   yo_NG.
6030 + New iconv modules: MAC-CENTRALEUROPE, ISO-8859-9E, KOI8-RU.
6031   Implemented by Ulrich Drepper.
6033 Version 2.6
6035 * The following bugs are resolved with this release:
6037   3156, 3213, 3285, 3291, 3306, 3313, 3320, 3322, 3325, 3326, 3334, 3348,
6038   3352, 3363, 3369, 3426, 3427, 3429, 3451, 3458, 3465, 3480, 3483, 3493,
6039   3514, 3515, 3559, 3632, 3664, 3673, 3674, 3745, 3747, 3818, 3840, 3842,
6040   3851, 3855, 3884, 3885, 3902, 3905, 3919, 3944, 3954, 3955, 3957, 3991,
6041   3995, 3996, 4024, 4040, 4069, 4070, 4074, 4076, 4096, 4101, 4102, 4114,
6042   4130, 4131, 4181, 4276, 4306, 4342, 4344, 4349, 4364, 4368, 4381, 4392,
6043   4403, 4405, 4406, 4411, 4438, 4439, 4455, 4456, 4465, 4512, 4514, 4586,
6044   4702, 4858
6046 * New Linux interfaces: epoll_pwait, sched_getcpu.
6048 * New generic interfaces: strerror_l.
6050 * nscd can now cache the services database.   Implemented by Ulrich Drepper.
6052 Version 2.5
6054 * The following bugs are resolved with this release:
6056   39, 68, 192, 352, 388, 531, 935, 1006, 1201, 1203, 1386, 1782, 1783, 1784,
6057   1785, 1786, 1787, 1951, 1974, 1996, 2072, 2098, 2125, 2134, 2158, 2182,
6058   2349, 2376, 2386, 2389, 2415, 2418, 2420, 2423, 2450, 2451, 2466, 2472,
6059   2473, 2477, 2498, 2499, 2501, 2502, 2505, 2507, 2508, 2509, 2517, 2526,
6060   2569, 2571, 2592, 2611, 2625, 2632, 2644, 2662, 2680, 2683, 2684, 2693,
6061   2695, 2703, 2734, 2751, 2764, 2766, 2775, 2792, 2821, 2823, 2832, 2841,
6062   2843, 2883, 2892, 2908, 2914, 2926, 2961, 2978, 2980, 2987, 2997, 2998,
6063   3013, 3018, 3034, 3040, 3044, 3123, 3124, 3137, 3138, 3143, 3155, 3189,
6064   3225, 3251, 3252, 3253, 3273
6066 * For Linux, the sorting of addresses returned by getaddrinfo now also
6067   handles rules 3, 4, and 7 from RFC 3484.  I.e., all rules are handled.
6068   Implemented by Ulrich Drepper.
6070 * Allow system admin to configure getaddrinfo with the /etc/gai.conf file.
6071   Implemented by Ulrich Drepper.
6073 * New Linux interfaces: splice, tee, sync_file_range, vmsplice.
6075 * New iconv module for MIK.  Contributed by Alexander Shopov.
6077 * For sites with broken group and/or passwd database, the auto-propagate
6078   option of nscd can prevent creating ID lookup entries from the results
6079   of a name lookup and vice versa.   This usually is no problem but some
6080   site might have problems with the default behavior.
6081   Implemented by Ulrich Drepper.
6083 * Iterating over entire database in NIS can be slow.  With the
6084   SETENT_BATCH_READ option in /etc/default/nss a system admin can decide
6085   to trade time for memory.  The entire database will be read at once.
6086   Implemented by Ulrich Drepper.
6088 * The interfaces introduced in RFC 3542 have been implemented by
6089   Ulrich Drepper.
6091 * Support for the new ELF hash table format was added by Ulrich Drepper.
6093 * Support for priority inheritance mutexes added by Jakub Jelinek and
6094   Ulrich Drepper.
6096 * Support for priority protected mutexes added by Jakub Jelinek.
6098 * New locales: nr_ZA, pa_PK, ca_AD, ca_FR, ca_IT, el_CY, tr_CY, as_IN,
6099   or_IN, csb_PL, fy_NL, sr_ME.
6101 Version 2.4
6103 * More overflow detection functions.
6105 * New iconv converters for IBM1025, IBM1122, IBM1137, IBM1153,
6106   IBM1154, IBM1155, IBM1156, IBM1157, and IBM1158 contributed by Jiro Sekiba.
6108   More converters for IBM803, IBM901, IBM902, IBM921, IBM1008, IBM1097,
6109   IBM1112, IBM1123, IBM1130, IBM1140, IBM1141, IBM1142, IBM1143, IBM1144,
6110   IBM1145, IBM1146, IBM1147, IBM1148, IBM1149, IBM1166, IBM1167, IBM4517,
6111   IBM4899, IBM4909, IBM4971, IBM5347, IBM9030, IBM9066, IBM9448, IBM12712,
6112   IBM16804, IBM1364, IBM1371, IBM1388, IBM1390, and IBM1399 contributed
6113   by Masahide Washizawa.
6115 * It is now possible to install audit libraries for the dynamic linker using
6116   LD_AUDIT.  Implemented by Ulrich Drepper.
6118 * The LinuxThreads add-on, providing pthreads on Linux 2.4 kernels, is no
6119   longer supported.  The new NPTL implementation requires Linux 2.6 kernels.
6120   For a libc and libpthread that works well on Linux 2.4 kernels, we
6121   recommend using the stable 2.3 branch.
6123 * The new function open_wmemstream acts like open_memstream,
6124   but uses a wchar_t wide character buffer.
6126 * The new function ppoll is an improved version of poll, similar to pselect.
6128 * New interfaces: fdopendir, openat, fstatat, fchmodat, fchownat,
6129   futimesat, faccessat, mkdirat, mkfifoat, mknodat,
6130   renameat, unlinkat, linkat, symlinkat, readlinkat.
6132 * New Linux kernel system calls: unshare,
6133   inotify_init, inotify_add_watch, inotify_rm_watch.
6135 * The euidaccess function is now also known by the alias eaccess,
6136   for compatibility with some other systems.
6138 * Timezone data updated to 2006b version.
6140 Version 2.3.6
6142 * The following bugs are resolved with this release:
6144   38, 253, 549, 622, 653, 721, 758, 851, 877, 915, 934, 955, 961,
6145   1016, 1037, 1076, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
6146   1087, 1088, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
6147   1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109,
6148   1110, 1111, 1112, 1113, 1125, 1137, 1138, 1249, 1250, 1251, 1252,
6149   1253, 1254, 1350, 1358, 1394, 1438, 1498, 1534
6151   Visit <https://sourceware.org/bugzilla/> for the details of each bug.
6153 * As of this release, GCC 4 can be used to compile the C Library.
6155 * Timezone data updated to 2005m version.
6157 Version 2.3.5
6159 * The following bugs are resolved with this release:
6161   284, 592, 602, 626, 633, 640, 650, 661, 671, 681, 693, 700, 710, 719,
6162   722, 723, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
6163   737, 738, 739, 740, 741, 742, 743, 744, 745, 765, 767, 768, 769, 776,
6164   777, 787, 821, 822, 823, 825
6166   Visit <https://sourceware.org/bugzilla/> for the details of each bug.
6168 Version 2.3.4
6170 * Support for RFC 3678.  Real implementations exist only for Linux so far.
6171   Implemented by Ulrich Drepper.
6173 * nscd can now cache entries persistently.  Expiring entries are reloaded.
6174   For speedups the cache can be shared in memory with client processes.
6175   Implemented by Ulrich Drepper.
6177 * nscd can now perform SELinux checks.
6178   Implemented by Matthew Rickard <mjricka@epoch.ncsc.mil>.
6180 * getaddrinfo queries are now cached.  Canonical name lookup is performed
6181   efficiently.
6182   Implemented by Ulrich Drepper.
6184 * The nothrow function attribute is used when headers are used by gcc when
6185   compiling C code.  This can avoid significant amounts of exception
6186   handling data.
6188 * The malloc functions perform more error checking and are stricter when
6189   it comes to reacting on errors.  The default action is to terminate
6190   the process after showing an error message.  Implemented by Ulrich Drepper.
6192 * Reverse lookups of IPv6 addresses does not use bit string or .ip6.int
6193   lookups anymore unless explicitly requested.  Implemented by Ulrich Drepper.
6195 * Namespaces in ld.so are implemented.  DSOs can be loaded in separate
6196   namespaces using the new function dlmopen().  This feature is of course,
6197   like most other dynamic loading functionality, not available in statically
6198   linked applications.  Implemented by Ulrich Drepper.
6200 * Low-overhead boundary checking variants of string and some stdio functions
6201   were added.  These are to be used in conjunction with a gcc patch by
6202   Jakub Jelinek which adds calls to these functions if possible.
6203   Implemented by Jakub Jelinek and Ulrich Drepper.
6205 * Old code for several operating systems and machine architectures that
6206   have not been in working condition in a long time have been removed from
6207   the main source tree maintained by the GNU C Library's maintainers.
6208   These files are now reside in the separate `ports' source module
6209   that is usable as an add-on when building the library.
6211 Version 2.3.3
6213 * New functions `dladdr1' and `dlinfo' in <dlfcn.h> provide more ways to
6214   interrogate the dynamic linker, compatible with the Solaris interface.
6216 * ELF thread-local storage support (TLS) now works on PowerPC and PowerPC64;
6217   implemented by Paul Mackerras, Steven Munroe, and Roland McGrath.
6219 * getifaddrs now uses the netlink interface on Linux to get its information.
6220   Implemented by Thorsten Kukuk.
6222 * getaddrinfo now implements AI_V4MAPPED, AI_ALL, and AI_ADDRCONF.
6223   Implemented by Ulrich Drepper.
6225 * support for non-executable stacks on x86 has been added.  Changes mostly
6226   by Roland McGrath.
6228 * regex is now much faster for multibyte locales.  Changes by Jakub Jelinek
6229   and Ulrich Drepper.
6231 * getaddrinfo now performs destination address selection according to
6232   RFC 3484.
6234 Version 2.3.2
6236 * Thread-safe interfaces for many functions that access locale data
6237   were added in version 2.3, but these features were omitted from NEWS.
6238   Many functions have variants with an `_l' suffix that take a `locale_t'
6239   object as a parameter rather than consulting the current locale.
6240   The new functions `newlocale', `duplocale', and `freelocale' in <locale.h>
6241   create and maintain `locale_t' objects.  Additionally, the new function
6242   `uselocale' sets "the current locale" (as used by functions not so
6243   parameterized) set for an individual thread.  These features were added
6244   in version 2.3, implemented by Ulrich Drepper and Roland McGrath.
6246 * The functions getresuid, getresgid, setresuid, and setresgid, which
6247   have long been available on Linux, are now declared in <unistd.h>
6248   and are now also available on the Hurd.
6250 * ELF thread-local storage support (TLS) now works on x86-64.
6252 * The new dynamic string token $LIB is expanded in shared library names.
6253   This normally expands to lib, but on some 64-bit platforms to lib64 instead.
6255 * Aldy Hernandez contributed complete software floating point support for
6256   PowerPC machines with no FPU.
6258 * fexecve is implemented on Linux.
6260 * The `btowc' function should work at least twice as fast due to
6261   specialized callbacks in the iconv modules.  Implemented by Bruno Haible.
6263 * With appropriate thread add-ons cancelable functions are now implemented
6264   in libc.so as well.  No need to call the function in libpthread.  This
6265   change allowed to finally disable the incorrect and expensive handling
6266   of weak definition in ld.so.
6268 * Yet more PLT entries in libc.so have been removed.  We finally arrived
6269   at the bare minimum.  Startup times improved appropriately.
6271 * Support for the new Linux/x86 system call interface was added.  The
6272   AT_SYSINFO auxiliary vector entry is recognized and handled.
6274 Version 2.3
6276 * Masahide Washizawa contributed iconv modules for IBM1163 and IBM1164
6277   charsets.
6279 * iconv (the program and the interface) now accepts empty names (excluding
6280   options like //TRANSLIT) to mean "use charset of current locale".
6282 * localedef can now transliterate characters in strings which are not in
6283   the provided charmap.  The information from the input locale is used.
6285 * Prelinking support was added for ELF targets.  This requires additional
6286   tools and recent versions of the GNU binutils.  Contributed by Jakub Jelinek.
6288 * Read-only stdio streams now use mmap to speed up operation by eliminating
6289   copying and buffer underflows.  To use add 'm' to the mode string of
6290   the fopen/fdopen/freopen call.  Implemented by Ulrich Drepper.
6292 * The malloc functions were completely rewritten by Wolfram Gloger based
6293   on Doug Lea's malloc-2.7.0.c.
6295 * Isamu Hasegawa contributed a completely new and POSIX-conformant
6296   implementation of regex.
6298 * Bruno Haible upgraded the iconv and locale implementation to support
6299   Unicode 3.2.
6301 * Contents of the LC_* and LANG environment variables in the CEN style are
6302   not recognized anymore.   It never was used.  Change by Ulrich Drepper.
6304 * The runtime (ld.so, libc, libpthread for Linux) now can handle the ELF
6305   thread-local storage (TLS) ABI on some platforms.
6306   Changes by Ulrich Drepper.  SH support by Kaz Kojima.
6308 * Bruno Haible contributed iconv converters for ISO-2022-JP-3, SHIFT JIS-X0213,
6309   EUC-JISX0213, and TSCII.
6311 * New header <ifaddrs.h> with functions `getifaddrs' and `freeifaddrs':
6312   BSD-compatible interface for getting all network interface addresses.
6313   Implementation for IPv4 by Roland McGrath.
6315 * Loading of locale data is faster due to the introduction of a locale
6316   archive.  Implemented by Roland McGrath and Ulrich Drepper.
6318 * Startup times are significantly reduced by not using exported functions
6319   inside the library itself.  Changes by Jakub Jelinek, Roland McGrath,
6320   and Ulrich Drepper.
6322 * Steven Munroe contributed a port to PowerPC64/Linux.
6324 Version 2.2.6
6326 * The Hurd now uses the GNU libio implementation of stdio rather than the
6327   old GNU stdio implementation, and uses a new ABI (libc.so.0.3).
6329 * The Hurd on x86 now has the `ioperm' function and <sys/io.h> header file
6330   with the same behavior as the Linux system call of the same name.
6332 Version 2.2.5
6334 * Stephen Moshier implemented log2, log10, powl and cbrtl for the
6335   128-bit long double format.
6337 * Masahide Washizawa contributed iconv modules for IBM1132, IBM1133, IBM1160,
6338   IBM1161, and IBM1162 charsets.
6340 * Andreas Jaeger contributed a port to x86-64/Linux.
6342 * Peter Bruin contributed a port to PowerPC/Hurd.
6344 * libc functions using I/O streams now can handle wide-oriented streams
6345   as well.
6347 * optimizations in the dynamic linker.  Binaries created by recent binutils
6348   versions start up quicker due to reduced time spent on relocations.
6350 * Support for use of gcc3 added by Jakub Jelinek and HJ Lu.
6352 Version 2.2.4
6354 * Stephen Moshier implemented cosh, expm1, log1p, acos, sinh, tanh,
6355   asinh, atanh, j0 for the 128-bit long double format.
6357 * Bruno Haible updated all the code handling Unicode in some form to
6358   support Unicode 3.1.
6360 * Speed of regex for single-byte locales is back to previous levels.
6361   Patch by Isamu Hasegawa.
6363 * Alpha, SPARC, and IA-64 now also using floating stacks.
6365 * Startup time of internationalized applications greatly improved through
6366   iconv cache.  Use iconvconfig to generate the cache file.
6367   Contributed by Ulrich Drepper.
6369 * The IA-64 specific part of ld.so was rewritten to eliminate some pretty
6370   severe performance problems.  Patch by David Mosberger.
6372 * The Hurd port got a lot more functionality like AIO, various stdio
6373   extensions, etc.  Mainly done by Roland McGrath.
6375 * mtrace can now lookup symbols in shared libraries.
6377 Version 2.2.3
6379 * Intel's IA-64 math library is largely integrated.  It provides fast and
6380   accurate implementatations for most basic and standard math functions
6381   in float, double, and long double format.
6383 * Stephen Moshier implemented j0, j1, jn, y0, y1, yn, lgamma, erf, erfc,
6384   and asin for the 96-bit long double format and asin, log, tan for the
6385   128-bit long double format.
6387 * The beginning of a last-bit accurate math library by IBM Haifa were added.
6388   The basic double functions exist today.  Contributed by Abraham Ziv
6389   <ziv@il.ibm.com>, Moshe Olshansky <olshansk@il.ibm.com>, Ealan Henis
6390   <ealan@il.ibm.com>, and Anna Reitman <reitman@il.ibm.com>.
6392 * An asynchronous name lookup library was added.  The interface is designed
6393   after POSIX AIO.  The proposal was circulated beforehand to get comments.
6394   No negative ones came in.  Implemented by Ulrich Drepper.
6396 * Port to S390/64bit contributed by Martin Schwidefsky
6397   <schwidefsky@de.ibm.com>.
6399 * David Mosberger <davidm@hpl.hp.com> implemented the setcontext family
6400   of functions for Linux/IA-64.
6402 * The RPC code is now thread safe.  Threads can now use the same service
6403   of different services at the same time.  Patch by Eric Norum
6404   <eric.norum@usask.ca> with some help by Ulrich Drepper.
6406 * Martin Schwidefsky <schwidefsky@de.ibm.com> implemented the setcontext
6407   family of functions for Linux/S390.
6409 * Ulrich Drepper <drepper@redhat.com> implemented the setcontext family
6410   of functions for Linux/x86.
6412 * Port to Linux/CRIS contributed by Axis Communications.
6414 Version 2.2.2
6416 * Lots of headers were cleaned up.  Using the tool in the conform/ subdir
6417   we can now check for namespace violations and missing declarations.  The
6418   result is that almost all headers are now Unix-compliant (as defined in
6419   the upcoming XPG6).  The negative side is that some programs might need
6420   corrections, too, if they depend on the incorrect form of the headers in
6421   previous versions which defined too many symbols and included too many
6422   other headers.
6424 * regex now handles multibyte character sets correctly.
6425   Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
6427 * iconv (the program) does now conform to the upcoming XPG6 and handles
6428   charmaps.  Instead of the charset names the path of charmaps can be
6429   provided and the conversion happens based on this data.
6430   Contributed by Ulrich Drepper.
6432 * The locale program now provides detailed information about the installed
6433   locales.  While
6435     locale -a
6437   only lists the names of the supported locales
6439     locale -a --verbose
6441   provides details such as country, language, and codeset name.
6442   Contributed by Ulrich Drepper.
6444 Version 2.2.1
6446 * The gencat program now parses the input file according to the charset
6447   selected by the LC_CTYPE category.  This is important for stateful
6448   character sets.  To make generating catalogs easier there is a way
6449   to overwrite the charset selected by the locale: before the first
6450   message or $ quote line the catalog can contain a line like
6452     $ codeset=ISO-8859-2
6454   to select the charset (ISO-8859-2 in this case).
6456   Implemented by Shinya Hanataka and Ulrich Drepper.
6458 * New codeset conversion modules: IBM-922  (Estonia PC codeset),
6459   IBM-1124 (Ukraine PC codeset), IBM-1129 (Vietnamese PC codeset).
6460   Contributed by Masahide Washizawa <washi@jp.ibm.com>.
6462 * Optimized string functions for Alpha ev6 and ev67 by Richard Henderson
6463   <rth@redhat.com> and Rick Gorton <rick.gorton@alpha-processor.com>.
6465 * The LANGUAGE environment variable is now ignored unless the locale is
6466   changed from the default "C" locale.
6468 * The usual bug fixes.
6470 Version 2.2
6472 * Greg McGary added runtime support for bounds checking using gcc's
6473   new -fbounded-pointers option.  ix86 target is complete.  PowerPC
6474   is in progress.
6476 * Thorsten Kukuk added secure mode support to nscd.
6478 * The Berkeley db libraries have been removed.
6480   Related, the nss_db module is now in a separate package since it
6481   obviously requires a database library being available.
6483 * Wide character I/O streams implemented by Ulrich Drepper.
6485 * Functions from the extended socket API added by Ulrich Drepper.
6487 * Functions feenableexcept and fedisableexcept to control the
6488   behaviour of individual exceptions have been added by Andreas Jaeger.
6490 * ldconfig program added by Andreas Jaeger and Jakub Jelinek.
6492 * The resolver code has been updated from bind 8.2.3-T5B which supports
6493   threads.  The integration was done by Andreas Jaeger, Adam D. Bradley,
6494   and Mark Kettenis.
6496   This change could in some situations effect backward compatibility.  Since
6497   now `_res' is a thread-local instead of a global variable, modifying it
6498   in one thread does not have any effect in other threads.
6500   The resolver library was also extended to allow IPv6 as the transport
6501   protocol for the requests.  This work was done by Stig Venaas.
6503 * Compatibility code for K&R C compilers has been removed from the
6504   header files.  A ISO C compiler is needed to use the library
6505   (conforming to either C89 or C99 standard).
6507 * Complete rewrite of the localedef program to support multibyte character
6508   sets.  Implement handling of ISO 14651 and ISO 14652.  Rewrite strcoll,
6509   strxfrm, wcscoll, and wcsxfrm functions.  Make isw*() functions work.
6510   Implemented by Ulrich Drepper.
6512   Bruno Haible significantly improved the generation and use of the data
6513   structures for the wide character tables.
6515 * Plural handling in gettext implemented by Ulrich Drepper.
6517 * The utmp daemon has been removed.
6519 * The port to MIPS-Linux has been finished by Andreas Jaeger.
6521 * A port to Hitachi SH3 and SH4 has been contributed by Kazumoto Kojima
6522   and Yutaka Niibe.
6524 * POSIX clocks and timers implemented by Kaz Kylheku and Ulrich Drepper.
6526 * POSIX barriers implemented by Kaz Kylheku.
6528 * POSIX spawn function family implemented by Ulrich Drepper.
6530 * POSIX spinlocks are now available.
6532 * Timed wait functions for mutex, rwlock, and semaphores are implemented.
6534 * the configure option --enable-kernel=X.Y.Z allows to strip out
6535   compatibility for kernel versions before X.Y.Z.  This is currently only
6536   implemented for Linux.
6538 * the sockaddr_in6 structure changed.  The IPv6 working group added a new
6539   field sin6_scope_id.  This means that all programs using IPv6 should be
6540   recompiled.  Don't expect binary compatibility with previous glibc
6541   versions.
6543 * various conversion modules for IBM character sets contributed by
6544   Masahide Washizawa.
6546 * IA-64 port by Jes Sorensen and HJ Lu.
6548 Version 2.1.3
6550 * bug fixes
6553 Version 2.1.2
6555 * bug fixes
6558 Version 2.1.1
6560 * New ISO C 9x function _Exit, imaxabs, and imaxdiv are added.
6562 * New xdr functions are added; some rpc functions are now 64bit clean.
6564 * Fixed a number of bugs and memory leaks (especially in NIS+ code).
6566 * Fixed known incompatibilities with glibc 2.0.
6568 * New functions lock64, strchrnul, rawmemchr, getutmp and getutmpx.
6570 * Optimized a number of functions (especially the ELF dynamic loader).
6572 * Update timezone data files.
6574 * lots of charmaps corrections
6576 * some new locale definitions and charmaps
6579 Version 2.1
6581 * Richard Henderson corrected size of struct timeval on Linux/Alpha to
6582   conform to POSIX member type requirements.  Symbol versions have been
6583   adjusted as needed within the library, and for direct use by applications,
6584   but there is potential for problems if third-party libraries use
6585   struct timeval as part of their interface.  This does not present
6586   a problem for X and other "essential" system libraries.
6588 * An additional locale model to support C++ Standard Library locale
6589   model and probably more was implemented by Ulrich Drepper.
6591 * Eric Youngdale and Ulrich Drepper implemented versioning of objects on
6592   symbol level.
6594 * Miles Bader provided the `argp' function family to support hierarchical
6595   command line argument parsing, layered on top of getopt.
6597 * strtod accepts new hexadecimal floating-point format from ISO C 9X.
6599 * printf has two new specifiers %a and %A to print hexadecimal flaoting-point
6600   numbers.
6602 * scanf recognizes the %a and %A format for scanning floating point numbers.
6604 * the new headers <stdint.h> and <inttypes.h> from ISO C 9X provides
6605   information and interfaces for the available integer types.
6607 * about 130 new math functions were added to implement the ISO C9x math
6608   library.
6610 * the new header <complex.h> contains definitions of the complex math
6611   functions from ISO C 9X.
6613 * the new header <tgmath.h> defines generic macros to use complex or
6614   real valued functions.
6616 * Thorsten Kukuk provided an implementation for NIS+, securelevel 0, 1 and 2.
6618 * Andreas Jaeger provided a test suite for the math library.
6620 * Mark Kettenis implemented the utmpx interface and an utmp daemon.
6622 * Ulrich Drepper added character set conversion functions (iconv).
6624 * Optimized string functions have been added.
6626 * The localedata addon is now part of glibc.
6628 * An implementation of profiling shared libraries was added by Ulrich Drepper.
6630 * Thorsten Kukuk and Ulrich Drepper provided an implementation for a caching
6631   daemon for NSS (nscd).
6633   Missing a better place here are some numbers on improvements.  Under
6634   Linux 2.1.125 un-tar-ing the kernel sources takes
6636                                   user  system     wall
6638     using local files           12.19s   6.88s   22.91s
6640     using NIS                   13.92s   8.91s   26.34s
6642     using NIS & nscd            10.37s   7.34s   25.30s
6644     using NIS+                  27.57s  30.37s  640.46s
6646     using NIS+ & nscd           10.25s   7.83s   26.51s
6648     using NIS & old nscd [1]    13.83s   8.32s   29.60s
6650   Keep in mind that non-namelookup related operations dominate above times.
6651   It was just a common complain that using NIS+ unpacking the kernel is
6652   horribly slow.
6654   [1] The old nscd implementation is not available anymore since it was
6655   distributed with glibc up to version 2.0.98 and thus is now replaced.
6657 * Tim Waugh provided an implementation of the POSIX.2 wordexp function family.
6659 * Mark Kettenis provided a Hesiod NSS module.
6661 * The ELF dynamic loader knows how to process dynamic string tokens ($ORIGIN
6662   and $PLATFORM) in RPATHs and similar strings (Ulrich Drepper).
6664 * rcmd can now handle netgroups (Dick Streefland).
6666 * A port to the ARM was contributed by Phil Blundell, Pat Beirne and Scott
6667   Bambrough.
6669 * Support for the IPv6 protocol has been added to the socket API, as per the
6670   latest draft standards.
6672 * Support for Linux 2.2 has been added.
6674 * Interface changes relative to the latest 2.0.x release:
6675 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6676 addseverity                     NEW: Unix98
6677 alphasort64                     NEW: LFS
6678 argp_err_exit_status            NEW: argp, GNU ext
6679 argp_error                      NEW: argp, GNU ext
6680 argp_failure                    NEW: argp, GNU ext
6681 argp_help                       NEW: argp, GNU ext
6682 argp_parse                      NEW: argp, GNU ext
6683 argp_program_bug_address        NEW: argp, GNU ext
6684 argp_program_version            NEW: argp, GNU ext
6685 argp_program_version_hook       NEW: argp, GNU ext
6686 argp_state_help                 NEW: argp, GNU ext
6687 argp_usage                      NEW: argp, GNU ext
6688 authdes_create                  NEW: Secure RPC
6689 authdes_getucred                NEW: Secure RPC
6690 authdes_pk_create               NEW: Secure RPC
6691 backtrace                       NEW: GNU ext.
6692 backtrace_symbols               NEW: GNU ext.
6693 backtrace_symbols_fd            NEW: GNU ext.
6694 cacos                           NEW: ISO C 9x
6695 cacosf                          NEW: ISO C 9x
6696 cacosh                          NEW: ISO C 9x
6697 cacoshf                         NEW: ISO C 9x
6698 cacoshl                         NEW: ISO C 9x
6699 cacosl                          NEW: ISO C 9x
6700 capget                          NEW: kernel
6701 capset                          NEW: kernel
6702 carg                            NEW: ISO C 9x
6703 cargf                           NEW: ISO C 9x
6704 cargl                           NEW: ISO C 9x
6705 casin                           NEW: ISO C 9x
6706 casinf                          NEW: ISO C 9x
6707 casinh                          NEW: ISO C 9x
6708 casinhf                         NEW: ISO C 9x
6709 casinhl                         NEW: ISO C 9x
6710 casinl                          NEW: ISO C 9x
6711 catan                           NEW: ISO C 9x
6712 catanf                          NEW: ISO C 9x
6713 catanh                          NEW: ISO C 9x
6714 catanhf                         NEW: ISO C 9x
6715 catanhl                         NEW: ISO C 9x
6716 catanl                          NEW: ISO C 9x
6717 cbc_crypt                       NEW: Secure RPC
6718 ccos                            NEW: ISO C 9x
6719 ccosf                           NEW: ISO C 9x
6720 ccosh                           NEW: ISO C 9x
6721 ccoshf                          NEW: ISO C 9x
6722 ccoshl                          NEW: ISO C 9x
6723 ccosl                           NEW: ISO C 9x
6724 cexp                            NEW: ISO C 9x
6725 cexpf                           NEW: ISO C 9x
6726 cexpl                           NEW: ISO C 9x
6727 cimag                           NEW: ISO C 9x
6728 cimagf                          NEW: ISO C 9x
6729 cimagl                          NEW: ISO C 9x
6730 clearerr_locked                 REMOVED
6731 clntunix_create                 NEW: sunrpc ext
6732 clog                            NEW: ISO C 9x
6733 clog10                          NEW: ISO C 9x
6734 clog10f                         NEW: ISO C 9x
6735 clog10l                         NEW: ISO C 9x
6736 clogf                           NEW: ISO C 9x
6737 clogl                           NEW: ISO C 9x
6738 conj                            NEW: ISO C 9x
6739 conjf                           NEW: ISO C 9x
6740 conjl                           NEW: ISO C 9x
6741 cpow                            NEW: ISO C 9x
6742 cpowf                           NEW: ISO C 9x
6743 cpowl                           NEW: ISO C 9x
6744 cproj                           NEW: ISO C 9x
6745 cprojf                          NEW: ISO C 9x
6746 cprojl                          NEW: ISO C 9x
6747 creal                           NEW: ISO C 9x
6748 crealf                          NEW: ISO C 9x
6749 creall                          NEW: ISO C 9x
6750 creat64                         NEW: LFS
6751 csin                            NEW: ISO C 9x
6752 csinf                           NEW: ISO C 9x
6753 csinh                           NEW: ISO C 9x
6754 csinhf                          NEW: ISO C 9x
6755 csinhl                          NEW: ISO C 9x
6756 csinl                           NEW: ISO C 9x
6757 csqrt                           NEW: ISO C 9x
6758 csqrtf                          NEW: ISO C 9x
6759 csqrtl                          NEW: ISO C 9x
6760 ctan                            NEW: ISO C 9x
6761 ctanf                           NEW: ISO C 9x
6762 ctanh                           NEW: ISO C 9x
6763 ctanhf                          NEW: ISO C 9x
6764 ctanhl                          NEW: ISO C 9x
6765 ctanl                           NEW: ISO C 9x
6766 des_setparity                   NEW: Secure RPC
6767 ecb_crypt                       NEW: Secure RPC
6768 endutxent                       NEW: Unix98
6769 exp10                           NEW: ISO C 9x
6770 exp10f                          NEW: ISO C 9x
6771 exp10l                          NEW: ISO C 9x
6772 exp2                            NEW: ISO C 9x
6773 exp2f                           NEW: ISO C 9x
6774 exp2l                           NEW: ISO C 9x
6775 fattach                         NEW: STREAMS
6776 fdetach                         NEW: STREAMS
6777 fdim                            NEW: ISO C 9x
6778 fdimf                           NEW: ISO C 9x
6779 fdiml                           NEW: ISO C 9x
6780 feclearexcept                   NEW: ISO C 9x
6781 fegetenv                        NEW: ISO C 9x
6782 fegetexceptflag                 NEW: ISO C 9x
6783 fegetround                      NEW: ISO C 9x
6784 feholdexcept                    NEW: ISO C 9x
6785 feof_locked                     REMOVED
6786 feraiseexcept                   NEW: ISO C 9x
6787 ferror_locked                   REMOVED
6788 fesetenv                        NEW: ISO C 9x
6789 fesetexceptflag                 NEW: ISO C 9x
6790 fesetround                      NEW: ISO C 9x
6791 fetestexcept                    NEW: ISO C 9x
6792 feupdateenv                     NEW: ISO C 9x
6793 fflush_locked                   REMOVED
6794 ffsl                            NEW: GNU ext.
6795 ffsll                           NEW: GNU ext.
6796 fgetpos64                       NEW: LFS
6797 fgets_unlocked                  NEW: GNU ext.
6798 fileno_locked                   REMOVED
6799 fma                             NEW: ISO C 9x
6800 fmaf                            NEW: ISO C 9x
6801 fmal                            NEW: ISO C 9x
6802 fmax                            NEW: ISO C 9x
6803 fmaxf                           NEW: ISO C 9x
6804 fmaxl                           NEW: ISO C 9x
6805 fmin                            NEW: ISO C 9x
6806 fminf                           NEW: ISO C 9x
6807 fminl                           NEW: ISO C 9x
6808 fmtmsg                          NEW: Unix98
6809 fopen64                         NEW: LFS
6810 fputc_locked                    REMOVED
6811 fputs_unlocked                  NEW: GNU ext.
6812 fread_unlocked                  NEW: GNU ext.
6813 freopen64                       NEW: LFS
6814 fseeko                          NEW: Unix98
6815 fsetpos64                       NEW: LFS
6816 fstatfs64                       NEW: LFS
6817 fstatvfs                        NEW: Unix98
6818 fstatvfs64                      NEW: LFS
6819 ftello                          NEW: Unix98
6820 ftello64                        NEW: LFS
6821 ftruncate64                     NEW: LFS
6822 ftw64                           NEW: LFS
6823 fwrite_unlocked                 NEW: GNU ext.
6824 gai_strerror                    NEW: IPv6
6825 gamma_r                         REMOVED
6826 gammaf_r                        REMOVED
6827 gammal_r                        REMOVED
6828 getchar_locked                  REMOVED
6829 getdate                         NEW: Unix98
6830 getdate_err                     NEW: Unix98
6831 getdate_r                       NEW: GNU ext.
6832 getmsg                          NEW: STREAMS
6833 getnameinfo                     NEW: IPv6
6834 getnetname                      NEW: Secure RPC
6835 getpmsg                         NEW: STREAMS
6836 getpt                           NEW: Unix98 PTY
6837 getrlimit64                     NEW: LFS
6838 getutxent                       NEW: Unix98
6839 getutxid                        NEW: Unix98
6840 getutxline                      NEW: Unix98
6841 glob64                          NEW: GNU ext.
6842 globfree64                      NEW: GNU ext.
6843 gnu_get_libc_release            NEW: GNU ext.
6844 gnu_get_libc_version            NEW: GNU ext.
6845 grantpt                         NEW: Unix98 PTY
6846 host2netname                    NEW: Secure RPC
6847 iconv                           NEW: iconv
6848 iconv_close                     NEW: iconv
6849 iconv_open                      NEW: iconv
6850 if_freenameindex                NEW: IPv6
6851 if_indextoname                  NEW: IPv6
6852 if_nameindex                    NEW: IPv6
6853 if_nametoindex                  NEW: IPv6
6854 in6addr_any                     NEW: IPv6
6855 in6addr_loopback                NEW: IPv6
6856 inet6_isipv4mapped              NEW: IPv6
6857 isastream                       NEW: STREAMS
6858 iswblank                        NEW: GNU ext.
6859 key_decryptsession              NEW: Secure RPC
6860 key_decryptsession_pk           NEW: Secure RPC
6861 key_encryptsession              NEW: Secure RPC
6862 key_encryptsession_pk           NEW: Secure RPC
6863 key_gendes                      NEW: Secure RPC
6864 key_get_conv                    NEW: Secure RPC
6865 key_secretkey_is_set            NEW: Secure RPC
6866 key_setnet                      NEW: Secure RPC
6867 key_setsecret                   NEW: Secure RPC
6868 llrint                          NEW: ISO C 9x
6869 llrintf                         NEW: ISO C 9x
6870 llrintl                         NEW: ISO C 9x
6871 llround                         NEW: ISO C 9x
6872 llroundf                        NEW: ISO C 9x
6873 llroundl                        NEW: ISO C 9x
6874 log2                            NEW: ISO C 9x
6875 log2f                           NEW: ISO C 9x
6876 log2l                           NEW: ISO C 9x
6877 lrint                           NEW: ISO C 9x
6878 lrintf                          NEW: ISO C 9x
6879 lrintl                          NEW: ISO C 9x
6880 lround                          NEW: ISO C 9x
6881 lroundf                         NEW: ISO C 9x
6882 lroundl                         NEW: ISO C 9x
6883 lseek64                         NEW: LFS
6884 makecontext                     NEW: Unix98
6885 mempcpy                         NEW: GNU ext.
6886 mmap64                          NEW: LFS
6887 moncontrol                      REMOVED
6888 modify_ldt                      NEW: kernel
6889 nan                             NEW: ISO C 9x
6890 nanf                            NEW: ISO C 9x
6891 nanl                            NEW: ISO C 9x
6892 nearbyint                       NEW: ISO C 9x
6893 nearbyintf                      NEW: ISO C 9x
6894 nearbyintl                      NEW: ISO C 9x
6895 netname2host                    NEW: Secure RPC
6896 netname2user                    NEW: Secure RPC
6897 nexttoward                      NEW: ISO C 9x
6898 nexttowardf                     NEW: ISO C 9x
6899 nexttowardl                     NEW: ISO C 9x
6900 nftw                            NEW: Unix98
6901 nftw64                          NEW: LFS
6902 open64                          NEW: LFS
6903 passwd2des                      NEW: Secure RPC
6904 pow10                           NEW: GNU ext.
6905 pow10f                          NEW: GNU ext.
6906 pow10l                          NEW: GNU ext.
6907 pread                           NEW: Unix98
6908 pread64                         NEW: LFS
6909 printf_size                     NEW: GNU ext.
6910 printf_size_info                NEW: GNU ext.
6911 profil_counter                  REMOVED
6912 pthread_mutexattr_getkind_np    REPLACED
6913 pthread_mutexattr_setkind_np    REPLACED
6914 ptsname                         NEW: Unix98 PTY
6915 ptsname_r                       NEW: Unix98 PTY
6916 putc_locked                     REMOVED
6917 putchar_locked                  REMOVED
6918 putgrent                        NEW: GNU ext.
6919 putmsg                          NEW: STREAMS
6920 putpmsg                         NEW: STREAMS
6921 pututxline                      NEW: Unix98
6922 pwrite                          NEW: Unix98
6923 pwrite64                        NEW: LFS
6924 readdir64                       NEW: LFS
6925 readdir64_r                     NEW: LFS
6926 remquo                          NEW: ISO C 9x
6927 remquof                         NEW: ISO C 9x
6928 remquol                         NEW: ISO C 9x
6929 round                           NEW: ISO C 9x
6930 roundf                          NEW: ISO C 9x
6931 roundl                          NEW: ISO C 9x
6932 rtime                           NEW: GNU ext.
6933 scalbln                         NEW: ISO C 9x
6934 scalblnf                        NEW: ISO C 9x
6935 scalblnl                        NEW: ISO C 9x
6936 scandir64                       NEW: LFS
6937 sendfile                        NEW: kernel
6938 setcontext                      NEW: Unix98
6939 setrlimit64                     NEW: LFS
6940 setutxent                       NEW: Unix98
6941 sighold                         NEW: Unix98
6942 sigignore                       NEW: Unix98
6943 sigqueue                        NEW: POSIX.1b
6944 sigrelse                        NEW: Unix98
6945 sigset                          NEW: POSIX.1b
6946 sigtimedwait                    NEW: POSIX.1b
6947 sigwaitinfo                     NEW: POSIX.1b
6948 sincos                          NEW: GNU ext.
6949 sincosf                         NEW: GNU ext.
6950 sincosl                         NEW: GNU ext.
6951 statfs64                        NEW: LFS
6952 statvfs                         NEW: Unix98
6953 statvfs64                       NEW: LFS
6954 strcasestr                      NEW: GNU ext.
6955 strtoimax                       NEW: ISO C 9x
6956 strtoumax                       NEW: ISO C 9x
6957 strverscmp                      NEW: GNU ext.
6958 svcauthdes_stats                NEW: Secure RPC
6959 svcunix_create                  NEW: sunrpc etx
6960 svcunixfd_create                NEW: sunrpc ext
6961 swapcontext                     NEW: Unix98
6962 tcgetsid                        NEW: Unix98 PTY
6963 tdestroy                        NEW: GNU ext.
6964 tgamma                          NEW: ISO C 9x
6965 tgammaf                         NEW: ISO C 9x
6966 tgammal                         NEW: ISO C 9x
6967 tmpfile64                       NEW: LFS
6968 trunc                           NEW: ISO C 9x
6969 truncate64                      NEW: LFS
6970 truncf                          NEW: ISO C 9x
6971 truncl                          NEW: ISO C 9x
6972 umount2                         NEW: kernel
6973 unlockpt                        NEW: Unix98 PTY
6974 updwtmpx                        NEW: Unix98
6975 user2netname                    NEW: Secure RPC
6976 utmpxname                       NEW: Unix98
6977 versionsort                     NEW: GNU ext.
6978 versionsort64                   NEW: GNU ext.
6979 waitid                          NEW: Unix98
6980 wcscasecmp                      NEW: GNU ext.
6981 wcsncasecmp                     NEW: GNU ext.
6982 wcsnlen                         NEW: GNU ext.
6983 wcstoimax                       NEW: ISO C 9x
6984 wcstoll                         NEW: ISO C 9x
6985 wcstoull                        NEW: ISO C 9x
6986 wcstoumax                       NEW: ISO C 9x
6987 wcswcs                          NEW: Unix98
6988 wordexp                         NEW: POSIX.2
6989 wordfree                        NEW: POSIX.2
6990 write_profiling                 REMOVED
6991 xdecrypt                        NEW: Secure RPC
6992 xdr_authdes_cred                NEW: Secure RPC
6993 xdr_authdes_verf                NEW: Secure RPC
6994 xdr_cryptkeyarg                 NEW: Secure RPC
6995 xdr_cryptkeyarg2                NEW: Secure RPC
6996 xdr_cryptkeyres                 NEW: Secure RPC
6997 xdr_getcredres                  NEW: Secure RPC
6998 xdr_key_netstarg                NEW: Secure RPC
6999 xdr_key_netstres                NEW: Secure RPC
7000 xdr_keybuf                      NEW: Secure RPC
7001 xdr_keystatus                   NEW: Secure RPC
7002 xdr_netnamestr                  NEW: Secure RPC
7003 xdr_sizeof                      NEW: Secure RPC
7004 xdr_unixcred                    NEW: sunrpc ext
7005 xencrypt                        NEW: Secure RPC
7006 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7008 Version 2.0.6
7010 * more bug fixes
7013 Version 2.0.5
7015 * more bug fixes
7017 * inet_ntoa is thread-safe
7019 * updwtmp is moved from libutil to libc
7021 * rewrite of cbrt function
7023 * update of timezone data
7025 Version 2.0.4
7027 * more bug fixes
7029 Version 2.0.3
7031 * more bug fixes
7033 Version 2.0.2
7035 * more bug fixes
7037 * add atoll function
7039 * fix complex problems in Berkeley DB code
7041 * fix math functions
7043 Version 2.0.1
7045 * fixed lots of header problems (especially Linux/GNU specific)
7047 * dynamic loader preserves all registers
7049 * Roland McGrath provided support for handling of auxiliary objects in
7050   the ELF dynamic loader.
7052 * support for parallel builds is improved
7054 Version 2.0
7056 * GNU extensions are no longer declared by default.  To enable them you
7057   must define the macro `_GNU_SOURCE' in your program or compile with
7058   `-D_GNU_SOURCE'.
7060 * The library has changed from using GNU ld symbol aliases to using weak
7061   symbols where available.  The ELF object file format supports weak
7062   symbols; GNU ld also supports weak symbols in the a.out format.  (There
7063   is also now support for other GNU ld extensions in ELF.  Use the
7064   `--with-elf' option to configure to indicate you have ELF, and
7065   `--with-gnu-ld' if using GNU ld.)  This change resulted in the deletion
7066   of many files which contained only symbol aliases, reducing the size of
7067   the source and the compiled library; many other files were renamed to
7068   less cryptic names previously occupied by the symbol alias files.
7069   There is a new header file <elf.h> for programs which operate on
7070   files in the ELF format.
7072 * Converted to Autoconf version 2, so `configure' has more options.
7073   Run `configure --help' to see the details.
7075 * The library can now be configured to build profiling, highly-optimized
7076   (but undebuggable), and/or shared libraries (ELF with GNU ld only).  The
7077   `--enable-profile', `--enable-omitfp', and `--enable-shared' options to
7078   `configure' enable building these extra libraries.  The shared library is
7079   built by default when using both ELF and GNU ld.  When shared libraries
7080   are enabled, the new library `-ldl' is available for arbitrary run-time
7081   loading of shared objects; its interface is defined in <dlfcn.h>.  The
7082   new header file <link.h> gives access to the internals of the run-time
7083   dynamic linker, `ld.so'.  The shell script `ldd' is similar to the
7084   application of same name on other systems and it provides information
7085   about dynamically linked binaries.
7087 * The C library now provides the run-time support code for profiling
7088   executables compiled with `-pg'.  Programs can control the profiling code
7089   through the interface in <sys/gmon.h>.  The `gmon.out' files written by
7090   the GNU C library can be read only by GNU `gprof' (from GNU binutils);
7091   the support for this file format was contributed by David Mosberger-Tang.
7093 * The math code has been replaced with a math library based on fdlibm from
7094   Sun, and modified by JT Conklin and Ulrich Drepper with i387 support, by
7095   Ian Taylor with `float' functions and by Ulrich Drepper with `long double'
7096   functions.  The math functions now reside in a separate library,  so
7097   programs using them will need to use `-lm' their linking commands.
7099 * John C. Bowman contributed optimized ix87 assembler inline functions.
7101 * Ulrich Drepper has contributed support for an `/etc/nsswitch.conf'
7102   mechanism similar to that found in Solaris 2.  This is now used for the
7103   group, passwd, hosts, networks, services, protocols, rpc, ethers,
7104   shadow, netgroup, publickey, and alias databases.  The `nsswitch.conf'
7105   file controls what services are used for each individual database.  This
7106   works by loading shared libraries with names specified in `nsswitch.conf',
7107   so service modules can be changed or added at any time without even
7108   relinking any program.  Currently there are the file, db, and NIS based
7109   NSS services available.
7111 * The new functions `strtoq' and `strtouq' parse integer values from
7112   strings, like `strtol' and `strtoul', but they return `long long int' and
7113   `unsigned long long int' values, respectively (64-bit quantities).
7115 * The new functions `strtof' and `strtold' parse floating-point values from
7116   strings, like `strtod', but they return `float' and `long double' values,
7117   respectively (on some machines `double' and `long double' are the same).
7119 * Ulrich Drepper has contributed new implementations of the floating-point
7120   printing and reading code used in the `printf' family of functions and
7121   `strtod', `strtof', and `strtold'.  These new functions are perfectly
7122   accurate, and much faster than the old ones.
7124 * The implementation of the POSIX locale model was completely rewritten by
7125   Ulrich Drepper.  This includes the new programs `localedef' and `locale'
7126   to compile the POSIX locale definition.
7128 * The former dummy implementations of the strcoll and strxfrm function are
7129   now replaced by fully functional code contributed by Ulrich Drepper.  The
7130   collation information comes from the POSIX locale definitions.
7132 * The new header <langinfo.h> defines an interface for accessing
7133   various locale-dependent data (using the locale chosen with `setlocale').
7135 * Ulrich Drepper has contributed a new suite of functions for operation on
7136   wide-character and multibyte-character strings, in <wchar.h>;
7137   and classification and case conversion of wide characters, in <wctype.h>.
7138   These new functions are conforming to the ISO C, Amendment 1 specification.
7140 * There is now a second implementation of the standard I/O library available.
7141   It comes from GNU libg++ as was written by Per Bothner, heavily modified
7142   by Hongjiu Lu and made thread safe by Ulrich Drepper.
7144 * You can now use positional parameter specifications in format strings
7145   for the `printf' and `scanf' families of functions.  For example,
7146   `printf ("Number %2$d, Mr %1$s\n", "Jones", 6);'' prints
7147   ``Number 6, Mr Jones''.  This is mainly useful when providing different
7148   format strings for different languages, whose grammars may dictate
7149   different orderings of the values being printed.  To support this
7150   feature, the interface for `register_printf_handler' has changed; see
7151   the header file <printf.h> for details.
7153 * The `printf' and `scanf' families of functions now understand a new
7154   formatting flag for numeric conversions: the ' flag (e.g. %'d or %'f) says
7155   to group numbers as indicated by the locale; for `scanf' and friends, this
7156   says to accept as valid only a number with all the proper grouping
7157   separators in the right places.  In the default "C" locale, numbers are
7158   not grouped; but locales for specific countries will define the usual
7159   conventions (i.e. separate thousands with `,' in the US locale).
7161 * The pgrp functions have been regularized, slightly incompatibly but much
7162   less confusingly.  The core functions are now `getpgid' and `setpgid',
7163   which take arguments for the PID to operate on; the POSIX.1 `getpgrp' (no
7164   argument) and BSD `setpgrp' (identical to `setpgid') functions are
7165   provided for compatibility.  There is no longer an incompatible `getpgrp'
7166   with an argument declared under _BSD_SOURCE; no BSD code uses it.
7168 * The new header file <fts.h> and suite of functions simplify programs that
7169   operate on directory trees.  This code comes from 4.4 BSD.
7171 * The resolver code has been updated from the BIND 4.9.5-P1 release.
7172   Parts of the code were heavily modified by Ulrich Drepper to fit in the
7173   NSS scheme used in glibc.
7175 * There is a new malloc debugging hook `__memalign_hook'.
7177 * There are new typedefs `ushort' for `unsigned short int' and `uint' for
7178   `unsigned int' in <sys/types.h>.  These are for compatibility only and
7179   their use is discouraged.
7181 * The `-lmcheck' library to enable standard malloc debugging hooks is now
7182   done differently, so that it works even without GNU ld.
7184 * New function `euidaccess' checks allowed access to a file like `access',
7185   but using the effective IDs instead of the real IDs.
7187 * The time zone data files have been updated for the latest and greatest
7188   local time conventions of the countries of the world.
7190 * The new function `dirfd' extracts the file descriptor used by a DIR stream;
7191   see <dirent.h>.
7193 * The new functions `ecvt', `fcvt', and `gcvt' provide an obsolete interface
7194   for formatting floating-point numbers.  They are provided only for
7195   compatibility; new programs should use `sprintf' instead.  There are
7196   also equivalent function for the `long double' floating-point type and
7197   all functions also exist in a reentrant form.
7199 * The new auxiliary library `-lutil' from 4.4 BSD contains various
7200   functions for maintaining the login-record files (primarily of use to
7201   system programs such as `login'), and convenient functions for
7202   allocating and initializing a pseudo-terminal (pty) device.
7204 * Ulrich Drepper has contributed new support for System V style
7205   shared memory and IPC on systems that support it.
7207 * Ulrich Drepper has contributed several miscellaneous new functions found
7208   in System V: The `hsearch' family of functions provide an effective
7209   implementation of hash tables; `a64l' and `l64a' provide a very simple
7210   binary to ASCII mapping; `drand48' and friends provide a 48-bit random
7211   number generator.
7213 * Ulrich Drepper has contributed new reentrant counterparts for the
7214   `random' and `hsearch' families of functions; `random_r', `hsearch_r', etc.
7216 * Ulrich Drepper has contributed new, highly-optimized versions of several
7217   string functions for the i486/Pentium family of processors.
7219 * Ulrich Drepper has updated the Linux-specific code, based largely
7220   on work done in Hongjiu Lu's version of GNU libc for Linux.
7221   The GNU library now supports Linux versions 2.0.10 and later,
7222   using the ELF object file format (i[3456]86-*-linux).
7224 * Andreas Schwab has ported the C library to Linux/m68k (m68k-*-linux).
7226 * David Mosberger-Tang and Richard Henderson have ported the C library
7227   to Linux/Alpha (alpha-*-linux).  Richard Henderson contributed the
7228   dynamic linking support for ELF/Alpha.
7230 * Richard Henderson contributed several Alpha optimized assembler function
7231   for arithmetic and string handling.
7233 * Ulrich Drepper has contributed a new set of message catalog functions to
7234   support multiple languages using the <libintl.h> interface, for use with
7235   his new package GNU gettext.  Translation volunteers have contributed
7236   catalogs of the library's messages in Spanish, German, and Korean.
7238 * For compatibility with XPG4, Ulrich Drepper has contributed the `gencat'
7239   program and the `catgets' function for reading the catalog files it
7240   creates.  (The <libintl.h> interface is preferred; we include the
7241   <nl_types.h> interface using `catgets' only for source compatibility with
7242   programs already written to use it.)
7244 * New header file <values.h> gives SVID-compatible names for <limits.h>
7245   constants.
7247 * Various new macros, declarations, and small header files for compatibility
7248   with 4.4 BSD.
7250 * New function `group_member' is a convenient way to check if a process has
7251   a given effective group ID.
7253 * When using GCC 2.7 and later, the socket functions are now declared in a
7254   special way so that passing an argument of type `struct sockaddr_in *',
7255   `struct sockaddr_ns *', or `struct sockaddr_un *' instead of the generic
7256   `struct sockaddr *' type, does not generate a type-clash warning.
7258 * New function `error' declared in header file <error.h> is a convenient
7259   function for printing error messages and optionally exiting; this is the
7260   canonical function used in GNU programs.  The new functions `err', `warn',
7261   and friends in header file <err.h> are the canonical 4.4 BSD interface for
7262   doing the same thing.
7264 * The <glob.h> interface has several new flags from 4.4 BSD that extend the
7265   POSIX.2 `glob' function to do ~ and {...} expansion.
7267 * New function `unsetenv' complements `setenv' for compatibility with 4.4 BSD.
7268   `clearenv' which is used in POSIX.9 is also available.
7270 * New function `getsid' returns session ID number on systems that support it.
7272 * We have incorporated the 4.4 BSD `db' library (version 1.85).  New header
7273   files <db.h> and <mpool.h> provide a rich set of functions for several
7274   types of simple databases stored in memory and in files, and <ndbm.h> is
7275   an old `ndbm'-compatible interface using the `db' functions.  Link with
7276   `-ldb' to get these functions.
7278 * New macro `strdupa' copies a string like `strdup', but uses local stack
7279   space from `alloca' instead of dynamic heap space from `malloc'.
7281 * New function `strnlen' is like `strlen' but searches only a given maximum
7282   number of characters for the null terminator.  `stpncpy', `strndup' and
7283   `strndupa' are similar variants for the `stpcpy', `strdup' and `strdupa'
7284   function.
7286 * New function `statfs' in header <sys/statfs.h>.
7288 * The new <argz.h> and <envz.h> interfaces contributed by Miles Bader
7289   provide convenient functions for operating on blocks of null-terminated
7290   strings.
7292 * A new suite of functions in <utmp.h> handle all the details of reading
7293   and writing the utmp file.
7295 * An implementation of the NIS/YP(tm) based NSS service was contributed by
7296   Thorsten Kukuk.
7298 * Paul Eggert and Ulrich Drepper modified the `strftime' function to be
7299   completely POSIX compliant and also implemented the extended functionality
7300   to handle alternate digit representation and alternate era date formats.
7302 * Ulrich Drepper provided an implementation of the `strptime' function
7303   defined in XPG4.2 which transforms a string into a `struct tm' value.
7305 * Paul Eggert provided the tzselect shell script as part of the timezone
7306   code.  The shell script makes it easy to select the correct timezone
7307   specification.
7309 * The implementation of the malloc family of functions is completely replaced
7310   by a new implementation by Doug Lea with many improvements by Wolfram Gloger.
7311   The implementation uses the mmap function (if available) and it is
7312   optimized for the use in multi threaded programs.
7314 * Ulrich Drepper contributed a MD5 "encryption" for the crypt family of
7315   functions.  This new functionality is usable by specifying a special
7316   salt string and it is compatible with implementation on *BSD systems.
7318 * Lots of functions from the XPG4.2 standard were added by Ulrich Drepper:
7319   `getsubopt' to handle second level command line options, `bsd_signal'
7320   to access BSD style `signal' functionality, the obsolete `regexp' style
7321   expression matcher.
7323 * the `lchown' function is available on system which support this
7324   functionality.
7326 * The implementation of the shadow password handling function was contributed
7327   by Ulrich Drepper.
7329 * David Mosberger-Tang changed the SunRPC implementation to be 64bit safe.
7331 * POSIX.1g support was added.  The <sys/select.h> header is available,
7332   `isfdtype' and `pselect' are implemented.  Craig Metz contributed an
7333   implementation of `getaddrinfo'.
7335 Version 1.09
7337 * For cross-compilation you should now set `BUILD_CC' instead of `HOST_CC'.
7339 * New header file <fstab.h> and new functions `getfsspec', `getfsent' and
7340   friends, for parsing /etc/fstab.  This code comes from 4.4 BSD.
7342 * The new function `daemon' from 4.4 BSD is useful for server programs that
7343   want to put themselves in the background.
7345 * Joel Sherrill has contributed support for several standalone boards that
7346   run without an operating system.
7348 * `printf', `scanf' and friends now accept a `q' type modifier for long
7349   long int as well as `ll'.  Formats using these might be `%qu' or `%lld'.
7351 * All of the code taken from BSD (notably most of the math and networking
7352   routines) has been updated from the BSD 4.4-Lite release.
7354 * The resolver code has been updated from the BIND-4.9.3-BETA9 release.
7356 * The new functions `getdomainname' and `setdomainname' fetch or change the
7357   YP/NIS domain name.  These are system calls which exist on systems which
7358   have YP (aka NIS).
7360 * The time zone data files have been updated for the latest international
7361   conventions.
7363 * The SunRPC programs `portmap' and `rpcinfo' are now installed in
7364   $(sbindir) (usually /usr/local/sbin) instead of $(bindir).
7366 Version 1.08
7368 * The C library now includes support for Sun RPC, from Sun's free
7369   RPCSRC-4.0 distribution.  The `portmap', `rpcinfo', and `rpcgen' programs
7370   are included.  (There is still no support for YP.)
7372 * Tom Quinn has contributed a port of the C library to SGI machines running
7373   Irix 4 (mips-sgi-irix4).
7375 * The new `lockf' function is a simplified interface to the locking
7376   facilities of `fcntl', included for compatibility.
7378 * New time functions `timegm', `timelocal', and `dysize' for compatibility.
7380 * New header file <sys/timeb.h> and new function `ftime' for compatibility.
7382 * New header files <poll.h> and <sys/poll.h> and new function `poll' for
7383   compatibility.
7385 * The error message printed by `assert' for a failed assertion now includes
7386   the name of the program (if using GNU ld) and the name of the calling
7387   function (with versions of GCC that support this).
7389 * The `psignal' function is now declared in <signal.h>, not <stdio.h>.
7391 * The library now includes the <sys/mman.h> header file and memory
7392   management functions `mmap', `munmap', `mprotect', `msync', and
7393   `madvise', on systems that support those facilities.
7395 * The interface for `mcheck' has changed slightly: the function called to
7396   abort the program when an allocation inconsistency is detected now takes
7397   an argument that indicates the type of failure.  The new function
7398   `mprobe' lets you request a consistency check for a particular block at
7399   any time (checks are normally done only when you call `free' or `realloc'
7400   on a block).
7402 * It is now possible to easily cross-compile the C library, building on one
7403   system a library to run on another machine and/or operating system.  All
7404   you need to do is set the variable `HOST_CC' in `configparms' to the
7405   native compiler for programs to run on the machine you are building on (a
7406   few generator programs are used on Unix systems); set `CC' to the
7407   cross-compiler.
7409 * The new function `fexecve' (only implemented on the GNU system) executes
7410   a program file given a file descriptor already open on the file.
7412 Version 1.07
7414 * Brendan Kehoe has contributed most of a port to the DEC Alpha
7415   running OSF/1 (alpha-dec-osf1).  He says it is 75% complete.
7417 * You can set the variable `libprefix' in `configparms' to specify a prefix
7418   to be prepended to installed library files; this makes it easy to install
7419   the GNU C library to be linked as `-lgnuc' or whatever.
7421 * The new `stpncpy' is a cross between `stpcpy' and `strncpy': It
7422   copies a limited number of characters from a string, and returns the
7423   address of the last character written.
7425 * You no longer need to check for whether the installed `stddef.h' is
7426   compatible with the GNU C library.  configure now checks for you.
7428 * You can now define a per-stream `fileno' function to convert the
7429   stream's cookie into an integral file descriptor.
7431 * ``malloc (0)'' no longer returns a null pointer.  Instead, it
7432   allocates zero bytes of storage, and returns a unique pointer which
7433   you can pass to `realloc' or `free'.  The behavior is undefined if
7434   you dereference this pointer.
7436 * The C library now runs on Sony NEWS m68k machines running either
7437   NewsOS 3 or NewsOS 4.
7439 * The new `syscall' function is a system-dependent primitive function
7440   for invoking system calls.  It has the canonical behavior on Unix
7441   systems, including unreliable return values for some calls (such as
7442   `pipe', `fork' and `getppid').
7444 * The error code `EWOULDBLOCK' is now obsolete; it is always defined
7445   to `EAGAIN', which is the preferred name.  On systems whose kernels
7446   use two distinct codes, the C library now translates EWOULDBLOCK to
7447   EAGAIN in every system call function.
7449 Version 1.06
7451 * The GNU C Library Reference Manual is now distributed with the library.
7452   `make dvi' will produce a DVI file of the printed manual.
7453   `make info' will produce Info files that you can read on line using C-h i
7454   in Emacs or the `info' program.
7455   Please send comments on the manual to bug-glibc-manual@gnu.org.
7457 * The library now supports SVR4 on i386s (i386-unknown-sysv4).
7459 * Brendan Kehoe has contributed a port to Sun SPARCs running Solaris 2.
7461 * Jason Merrill has contributed a port to the Sequent Symmetry running
7462   Dynix version 3 (i386-sequent-dynix).
7464 * The library has been ported to i386s running SCO 3.2.4 (also known as SCO
7465   ODT 2.0; i386-unknown-sco3.2.4) or SCO 3.2 (i386-unknown-sco3.2).
7467 * New function `memory_warnings' lets you arrange to get warnings when
7468   malloc is running out of memory to allocate, like Emacs gives you.
7470 * The C library now contains the relocating allocator used in Emacs 19 for
7471   its editing buffers.  This allocator (ralloc) minimizes allocation
7472   overhead and fragmentation by moving allocated regions around whenever it
7473   needs to.  You always refer to a ralloc'd region with a "handle" (a
7474   pointer to a pointer--an object of type `void **').
7476 * There is a new `printf' format: `%m' gives you the string corresponding
7477   to the error code in `errno'.
7479 * In `scanf' formats, you can now use `%as' or `%a[' to do the normal `%s'
7480   or `%[' conversion, but instead of filling in a fixed-sized buffer you
7481   pass, the `a' modifier says to fill in a `char **' you pass with a
7482   malloc'd string.
7484 * The `fnmatch' function supports the new flag bits `FNM_LEADING_DIR' and
7485   `FNM_CASEFOLD'.  `FNM_LEADING_DIR' lets a pattern like `foo*' match a
7486   name like `foo/bar'.  `FNM_CASEFOLD' says to ignore case in matching.
7488 * `mkstemp' is a traditional Unix function to atomically create and open a
7489   uniquely-named temporary file.
7491 Version 1.05
7493 * The standard location for the file that says what the local timezone is
7494   has changed again.  It is now `/usr/local/etc/localtime' (or more
7495   precisely, `${prefix}/etc/localtime') rather than `/etc/localtime'.
7497 * The distribution no longer contains any files with names longer than 14
7498   characters.
7500 * `struct ttyent' has two new flag bits: TTY_TRUSTED and TTY_CONSOLE.
7501   These are set by the new `trusted' and `console' keywords in `/etc/ttys'.
7503 * New functions `ttyslot' and `syslog' from 4.4 BSD.
7505 Version 1.04
7507 * The configuration process has changed quite a bit.  The `configure'
7508   script is now used just like the configuration scripts for other GNU
7509   packages.  The `sysdeps' directory hierarchy is much rearranged.
7510   The file `INSTALL' explains the new scheme in detail.
7512 * The header files no longer need to be processed into ANSI C and
7513   traditional C versions.  There is just one set of files to install, and
7514   it will work with ANSI or old C compilers (including `gcc -traditional').
7516 * Brendan Kehoe and Ian Lance Taylor have ported the library to the
7517   MIPS DECStation running Ultrix 4.
7519 * The Sun 4 startup code (crt0) can now properly load SunOS 4 shared libraries.
7520   Tom Quinn contributed the initial code.  The GNU C library can NOT yet be
7521   made itself into a shared library.
7523 * Yet further improved support for the i386, running 4.3 BSD-like systems
7524   (such as Mach 3 with the Unix single-server), or System V.
7526 * New function `strncasecmp' to do case-insensitive string comparison
7527   with limited length.
7529 * New function `strsep' is a reentrant alternative to `strtok'.
7531 * New functions `scandir' and `alphasort' for searching directories.
7533 * New function `setenv' is a better interface to `putenv'.
7535 * Ian Lance Taylor has contributed an implementation of the SVID `ftw'
7536   function for traversing a directory tree.
7538 * The GNU obstack package is now also part of the C library.
7539   The new function `open_obstack_stream' creates a stdio stream that
7540   writes onto an obstack; `obstack_printf' and `obstack_vprintf' do
7541   formatted output directly to an obstack.
7543 * Miscellaneous new functions: reboot, nice, sigaltstack (4.4 BSD only),
7544   cfmakeraw, getusershell, getpass, swab, getttyent, seteuid, setegid.
7546 * `FNM_FILE_NAME' is another name for `FNM_PATHNAME', used with `fnmatch'.
7548 * The new functions `strfry' and `memfrob' do mysterious and wonderful
7549   things to your strings.
7551 * There are some new test programs: test-fseek, testmb, and testrand.
7553 * Some work has been done to begin porting the library to 4.4 BSD and Linux.
7554   These ports are not finished, but are a good starting place for really
7555   supporting those systems.
7557 * `/etc/localtime' is now the standard location for the file that says what
7558   the local timezone is, rather than `/usr/local/lib/zoneinfo/localtime'.
7559   This follows the general principle that `/etc' is the place for all local
7560   configuration files.
7562 * The C library header files now use `extern "C"' when used by the C++
7563   compiler, so the C library should now work with C++ code.
7565 * The header file <bstring.h> is gone.  <string.h> now declares bcopy,
7566   bcmp, bzero, and ffs.  (Update: nowadays these functions are declared
7567   in <strings.h>.)
7569 * Mike Haertel (of GNU e?grep and malloc fame) has written a new sorting
7570   function which uses the `merge sort' algorithm, and is said to be
7571   significantly faster than the old GNU `qsort' function.  Merge sort is
7572   now the standard `qsort' function.  The new algorithm can require a lot
7573   of temporary storage; so, the old sorting function is called when the
7574   required storage is not available.
7576 * The C library now includes Michael Glad's Ultra Fast Crypt, which
7577   provides the Unix `crypt' function, plus some other entry points.
7579 * The code and header files taken from 4.4 BSD have been updated with the
7580   latest files released from Berkeley.
7582 ----------------------------------------------------------------------
7583 Copying conditions:
7585    Permission is granted to anyone to make or distribute verbatim copies
7586    of this document as received, in any medium, provided that the
7587    copyright notice and this permission notice are preserved,
7588    thus giving the recipient permission to redistribute in turn.
7590    Permission is granted to distribute modified versions
7591    of this document, or of portions of it,
7592    under the above conditions, provided also that they
7593    carry prominent notices stating who last changed them.
7595 Local variables:
7596 version-control: never
7597 fill-column: 72
7598 End: