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