GNU C Library NEWS -- history of user-visible changes.
Copyright (C) 1992-2015 Free Software Foundation, Inc.
See the end for copying conditions.

Please send GNU C library bug reports via <http://sourceware.org/bugzilla/>
using `glibc' in the "product" field.

Version 2.22

* The following bugs are resolved with this release:

  438, 2981, 4719, 6544, 6792, 11216, 12836, 13028, 13064, 13151, 13152,
  14094, 14113, 14292, 14841, 14906, 14958, 15319, 15467, 15790, 15969,
  16159, 16339, 16350, 16351, 16352, 16353, 16361, 16512, 16526, 16538,
  16559, 16560, 16704, 16783, 16850, 17053, 17090, 17195, 17269, 17293,
  17322, 17403, 17475, 17523, 17542, 17569, 17581, 17588, 17596, 17620,
  17621, 17628, 17631, 17692, 17711, 17715, 17776, 17779, 17792, 17833,
  17836, 17841, 17912, 17916, 17930, 17932, 17944, 17949, 17964, 17965,
  17967, 17969, 17977, 17978, 17987, 17991, 17996, 17998, 17999, 18007,
  18019, 18020, 18029, 18030, 18032, 18034, 18036, 18038, 18039, 18042,
  18043, 18046, 18047, 18049, 18068, 18078, 18080, 18093, 18100, 18104,
  18110, 18111, 18116, 18125, 18128, 18134, 18138, 18185, 18196, 18197,
  18206, 18210, 18211, 18217, 18219, 18220, 18221, 18234, 18244, 18245,
  18247, 18287, 18319, 18324, 18333, 18346, 18371, 18383, 18397, 18400,
  18409, 18410, 18412, 18418, 18422, 18434, 18444, 18457, 18468, 18469,
  18470, 18479, 18483, 18495, 18496, 18497, 18498, 18502, 18507, 18508,
  18512, 18513, 18519, 18520, 18522, 18527, 18528, 18529, 18530, 18532,
  18533, 18534, 18536, 18539, 18540, 18542, 18544, 18545, 18546, 18547,
  18549, 18553, 18557, 18558, 18569, 18583, 18585, 18586, 18592, 18593,
  18594, 18602, 18612, 18613, 18619, 18633, 18635, 18641, 18643, 18648,
  18657, 18676, 18694, 18696.

* Cache information can be queried via sysconf() function on s390 e.g. with
  _SC_LEVEL1_ICACHE_SIZE as argument.

* A buffer overflow in gethostbyname_r and related functions performing DNS
  requests has been fixed.  If the NSS functions were called with a
  misaligned buffer, the buffer length change due to pointer alignment was
  not taken into account.  This could result in application crashes or,
  potentially arbitrary code execution, using crafted, but syntactically
  valid DNS responses.  (CVE-2015-1781)

* The time zone file parser has been made more robust against crafted time
  zone files, avoiding heap buffer overflows related to the processing of
  the tzh_ttisstdcnt and tzh_ttisgmtcnt fields, and a stack overflow due to
  large time zone data files.  Overly long time zone specifiers in the TZ
  variable no longer result in stack overflows and crashes.

* A powerpc and powerpc64 optimization for TLS, similar to TLS descriptors
  for LD and GD on x86 and x86-64, has been implemented.  You will need
  binutils-2.24 or later to enable this optimization.

* Character encoding and ctype tables were updated to Unicode 7.0.0, using
  new generator scripts contributed by Pravin Satpute and Mike FABIAN (Red
  Hat).  These updates cause user visible changes, such as the fix for bug
  17998.

* CVE-2014-8121 The NSS backends shared internal state between the getXXent
  and getXXbyYY NSS calls for the same database, causing a denial-of-service
  condition in some applications.

* Added vector math library named libmvec with the following vectorized x86_64
  implementations: cos, cosf, sin, sinf, sincos, sincosf, log, logf, exp, expf,
  pow, powf.
  The library can be disabled with --disable-mathvec. Use of the functions is
  enabled with -fopenmp -ffast-math starting from -O1 for GCC version >= 4.9.0.
  Shared library libmvec.so is linked in as needed when using -lm (no need to
  specify -lmvec explicitly for not static builds).
  Visit <https://sourceware.org/glibc/wiki/libmvec> for detailed information.

* A new fmemopen implementation has been added with the goal of POSIX
  compliance. The new implementation fixes the following long-standing
  issues: BZ#6544, BZ#11216, BZ#12836, BZ#13151, BZ#13152, and BZ#14292. The
  old implementation is still present for use be by existing binaries.

* The 32-bit sparc sigaction ABI was inadvertently broken in the 2.20 and 2.21
  releases.  It has been fixed to match 2.19 and older, but binaries built
  against 2.20 and 2.21 might need to be recompiled.  See BZ#18694.

* Port to Native Client running on ARMv7-A (--host=arm-nacl).
  Contributed by Roland McGrath (Google).

* The header <regexp.h> is deprecated, and will be removed in a future
  release.  Use of this header will trigger a deprecation warning.
  Application developers should update their code to use <regex.h> instead.

  This header was formerly part of SUSv2, but was deprecated in 1997 and
  removed from the standard in 2001.  Also, the glibc implementation
  leaks memory.  See BZ#18681 for more details.

Version 2.21

* The following bugs are resolved with this release:

  6652, 10672, 12674, 12847, 12926, 13862, 14132, 14138, 14171, 14498,
  15215, 15378, 15884, 16009, 16418, 16191, 16469, 16576, 16617, 16618,
  16619, 16657, 16740, 16857, 17192, 17266, 17273, 17344, 17363, 17370,
  17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555,
  17570, 17571, 17572, 17573, 17574, 17582, 17583, 17584, 17585, 17589,
  17594, 17601, 17608, 17616, 17625, 17630, 17633, 17634, 17635, 17647,
  17653, 17657, 17658, 17664, 17665, 17668, 17682, 17702, 17717, 17719,
  17722, 17723, 17724, 17725, 17732, 17733, 17744, 17745, 17746, 17747,
  17748, 17775, 17777, 17780, 17781, 17782, 17791, 17793, 17796, 17797,
  17801, 17803, 17806, 17834, 17844, 17848, 17868, 17869, 17870, 17885,
  17892.

* CVE-2015-1472 CVE-2015-1473 Under certain conditions wscanf can allocate
  too little memory for the to-be-scanned arguments and overflow the
  allocated buffer.  The implementation now correctly computes the required
  buffer size when using malloc, and switches to malloc from alloca as
  intended.

* A new semaphore algorithm has been implemented in generic C code for all
  machines. Previous custom assembly implementations of semaphore were
  difficult to reason about or ensure that they were safe. The new version
  of semaphore supports machines with 64-bit or 32-bit atomic operations.
  The new semaphore algorithm is used by sem_init, sem_open, sem_post,
  sem_wait, sem_timedwait, sem_trywait, and sem_getvalue.

* Port to Altera Nios II has been contributed by Mentor Graphics.

* Optimized strcpy, stpcpy, strncpy, stpncpy, strcmp, and strncmp
  implementations for powerpc64/powerpc64le.
  Implemented by Adhemerval Zanella (IBM).

* Added support for TSX lock elision of pthread mutexes on powerpc32, powerpc64
  and powerpc64le.  This may improve lock scaling of existing programs on
  HTM capable systems.  The lock elision code is only enabled with
  --enable-lock-elision=yes.  Also, the TSX lock elision implementation for
  powerpc will issue a transaction abort on every syscall to avoid side
  effects being visible outside transactions.

* Optimized strcpy, stpcpy, strchrnul and strrchr implementations for
  AArch64.  Contributed by ARM Ltd.

* i386 memcpy functions optimized with SSE2 unaligned load/store.

* CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
  under certain input conditions resulting in the execution of a shell for
  command substitution when the application did not request it. The
  implementation now checks WRDE_NOCMD immediately before executing the
  shell and returns the error WRDE_CMDSUB as expected.

* CVE-2012-3406 printf-style functions could run into a stack overflow when
  processing format strings with a large number of format specifiers.

* CVE-2014-9402 The nss_dns implementation of getnetbyname could run into an
  infinite loop if the DNS response contained a PTR record of an unexpected
  format.

* The minimum GCC version that can be used to build this version of the GNU
  C Library is GCC 4.6.  Older GCC versions, and non-GNU compilers, can
  still be used to compile programs using the GNU C Library.

* The GNU C Library is now built with -Werror by default.  This can be
  disabled by configuring with --disable-werror.

* New locales: tu_IN, bh_IN, raj_IN, ce_RU.

* The obsolete sigvec function has been removed.  This was the original
  4.2BSD interface that inspired the POSIX.1 sigaction interface, which
  programs have been using instead for about 25 years.  Of course, ABI
  compatibility for old binaries using sigvec remains intact.

* Merged gettext 0.19.3 into the intl subdirectory.  This fixes building
  with newer versions of bison.

* Support for MIPS o32 FPXX, FP64A and FP64 ABI Extensions.
  The original MIPS o32 hard-float ABI requires an FPU where double-precision
  registers overlay two consecutive single-precision registers.  MIPS32R2
  introduced a new FPU mode (FR=1) where double-precision registers extend the
  corresponding single-precision registers which is incompatible with the
  o32 hard-float ABI.  The MIPS SIMD ASE and the MIPSR6 architecture both
  require the use of FR=1 making a transition necessary.  New o32 ABI
  extensions enable users to migrate over time from the original o32 ABI
  through to the updated o32 FP64 ABI.  To achieve this the dynamic linker now
  tracks the ABI of any loaded object and verifies that new objects are
  compatible.  Mode transitions will also be requested as required and
  unsupportable objects will be rejected.  The ABI checks include both soft and
  hard float ABIs for o32, n32 and n64.

  GCC 5 with GNU binutils 2.25 onwards:
  It is strongly recommended that all o32 system libraries are built using the
  new o32 FPXX ABI (-mfpxx) to facilitate the transition as this is compatible
  with the original and all new o32 ABI extensions.  Configure a MIPS GCC
  compiler using --with-fp-32=xx to set this by default.

Version 2.20

* The following bugs are resolved with this release:

  6804, 9894, 11505, 12994, 13347, 13651, 14308, 14770, 15119, 15132, 15347,
  15514, 15698, 15804, 15894, 15946, 16002, 16064, 16095, 16194, 16198,
  16275, 16284, 16287, 16315, 16348, 16349, 16354, 16357, 16362, 16447,
  16516, 16532, 16539, 16545, 16561, 16562, 16564, 16574, 16599, 16600,
  16609, 16610, 16611, 16613, 16619, 16623, 16629, 16632, 16634, 16639,
  16642, 16648, 16649, 16670, 16674, 16677, 16680, 16681, 16683, 16689,
  16695, 16701, 16706, 16707, 16712, 16713, 16714, 16724, 16731, 16739,
  16740, 16743, 16754, 16758, 16759, 16760, 16770, 16786, 16789, 16791,
  16796, 16799, 16800, 16815, 16823, 16824, 16831, 16838, 16839, 16849,
  16854, 16876, 16877, 16878, 16882, 16885, 16888, 16890, 16892, 16912,
  16915, 16916, 16917, 16918, 16922, 16927, 16928, 16932, 16943, 16958,
  16965, 16966, 16967, 16977, 16978, 16984, 16990, 16996, 17009, 17022,
  17031, 17042, 17048, 17050, 17058, 17061, 17062, 17069, 17075, 17078,
  17079, 17084, 17086, 17088, 17092, 17097, 17125, 17135, 17137, 17150,
  17153, 17187, 17213, 17259, 17261, 17262, 17263, 17319, 17325, 17354.

* Reverted change of ABI data structures for s390 and s390x:
  On s390 and s390x the size of struct ucontext and jmp_buf was increased in
  2.19. This change is reverted in 2.20. The introduced 2.19 symbol versions
  of getcontext, setjmp, _setjmp, __sigsetjmp, longjmp, _longjmp, siglongjmp
  are preserved pointing straight to the same implementation as the old ones.
  Given that, new callers will simply provide a too-big buffer to these
  functions. Any applications/libraries out there that embed jmp_buf or
  ucontext_t in an ABI-relevant data structure that have already been rebuilt
  against 2.19 headers will have to rebuilt again. This is necessary in any
  case to revert the breakage in their ABI caused by the glibc change.

* Support for file description locks is added to systems running the
  Linux kernel. The standard file locking interfaces are extended to
  operate on file descriptions, not file descriptors, via the use of
  F_OFD_GETLK, F_OFD_SETLK, and F_OFD_SETLKW. File description locks
  are associated with an open file instead of a process.

* Optimized strchr implementation for AArch64.  Contributed by ARM Ltd.

* The minimum Linux kernel version that this version of the GNU C Library
  can be used with is 2.6.32.

* Running the testsuite no longer terminates as soon as a test fails.
  Instead, a file tests.sum (xtests.sum from "make xcheck") is generated,
  with PASS or FAIL lines for individual tests.  A summary of the results is
  printed, including a list of failing lists, and "make check" exits with
  error status if there were any unexpected failures.  "make check
  stop-on-test-failure=y" may be used to keep the old behavior.

* The am33 port, which had not worked for several years, has been removed
  from ports.

* The _BSD_SOURCE and _SVID_SOURCE feature test macros are no longer
  supported; they now act the same as _DEFAULT_SOURCE (but generate a
  warning).  Except for cases where _BSD_SOURCE enabled BSD interfaces that
  conflicted with POSIX (support for which was removed in 2.19), the
  interfaces those macros enabled remain available when compiling with
  _GNU_SOURCE defined, with _DEFAULT_SOURCE defined, or without any feature
  test macros defined.

* Optimized strcmp implementation for ARMv7.  Contributed by ARM Ltd.

* Added support for TX lock elision of pthread mutexes on s390 and s390x.
  This may improve lock scaling of existing programs on TX capable systems.
  The lock elision code is only built with --enable-lock-elision=yes and
  then requires a GCC version supporting the TX builtins.  With lock elision
  default mutexes are elided via __builtin_tbegin, if the cpu supports
  transactions. By default lock elision is not enabled and the elision code
  is not built.

* CVE-2014-4043 The posix_spawn_file_actions_addopen implementation did not
  copy the path argument.  This allowed programs to cause posix_spawn to
  deference a dangling pointer, or use an unexpected pathname argument if
  the string was modified after the posix_spawn_file_actions_addopen
  invocation.

* All supported architectures now use the main glibc sysdeps directory
  instead of some being in a separate "ports" directory (which was
  distributed separately before glibc 2.17).

* The NPTL implementation of POSIX pthreads is no longer an "add-on".
  On configurations that support it (all Linux configurations), it's now
  used regardless of the --enable-add-ons switch to configure.  It is no
  longer possible to build such configurations without pthreads support.

* Locale names, including those obtained from environment variables (LANG
  and the LC_* variables), are more tightly checked for proper syntax.
  setlocale will now fail (with EINVAL) for locale names that are overly
  long, contain slashes without starting with a slash, or contain ".." path
  components. (CVE-2014-0475)  Previously, some valid locale names were
  silently replaced with the "C" locale when running in AT_SECURE mode
  (e.g., in a SUID program).  This is no longer necessary because of the
  additional checks.

* On x86-64, the dynamic linker's lazy-binding support is now compatible
  with application code using Intel MPX instructions.  (With all previous
  versions, the MPX register state could be clobbered when making calls
  into or out of a shared library.)  Note that while the new dynamic
  linker is compatible with all known x86 hardware whether or not it
  supports Intel MPX, some x86 instruction-set emulators might fail to
  handle the new instruction encodings.  This is known to affect Valgrind
  versions up through 3.9 (but will be fixed in the forthcoming 3.10
  release), and might affect other tools that do instruction emulation.

* Support for loadable gconv transliteration modules has been removed.
  The support for transliteration modules has been non-functional for
  over a decade, and the removal is prompted by security defects.  The
  normal gconv conversion modules are still supported.  Transliteration
  with //TRANSLIT is still possible, and the //IGNORE specifier
  continues to be  supported. (CVE-2014-5119)

* Decoding a crafted input sequence in the character sets IBM933, IBM935,
  IBM937, IBM939, IBM1364 could result in an out-of-bounds array read,
  resulting a denial-of-service security vulnerability in applications which
  use functions related to iconv. (CVE-2014-6040)

Version 2.19

* The following bugs are resolved with this release:

  156, 387, 431, 762, 832, 926, 2801, 4772, 6786, 6787, 6807, 6810, 6981,
  7003, 9721, 9954, 10253, 10278, 11087, 11157, 11214, 12100, 12486, 12751,
  12986, 13028, 13982, 13985, 14029, 14032, 14120, 14143, 14155, 14286,
  14547, 14699, 14752, 14782, 14876, 14910, 15004, 15048, 15073, 15089,
  15128, 15218, 15268, 15277, 15308, 15362, 15374, 15400, 15425, 15427,
  15483, 15522, 15531, 15532, 15593, 15601, 15608, 15609, 15610, 15632,
  15640, 15670, 15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748,
  15749, 15754, 15760, 15763, 15764, 15797, 15799, 15825, 15843, 15844,
  15846, 15847, 15849, 15850, 15855, 15856, 15857, 15859, 15867, 15886,
  15887, 15890, 15892, 15893, 15895, 15897, 15901, 15905, 15909, 15915,
  15917, 15919, 15921, 15923, 15939, 15941, 15948, 15963, 15966, 15968,
  15985, 15988, 15997, 16032, 16034, 16036, 16037, 16038, 16041, 16046,
  16055, 16071, 16072, 16074, 16077, 16078, 16103, 16112, 16143, 16144,
  16146, 16150, 16151, 16153, 16167, 16169, 16172, 16195, 16214, 16245,
  16271, 16274, 16283, 16289, 16293, 16314, 16316, 16330, 16337, 16338,
  16356, 16365, 16366, 16369, 16372, 16375, 16379, 16381, 16384, 16385,
  16386, 16387, 16390, 16394, 16398, 16400, 16407, 16408, 16414, 16430,
  16431, 16453, 16474, 16506, 16510, 16529

* Slovenian translations for glibc messages have been contributed by the
  Translation Project's Slovenian team of translators.

* The public headers no longer use __unused nor __block.  This change is to
  support compiling programs that are derived from BSD sources and use
  __unused internally, and to support compiling with Clang's -fblock
  extension which uses __block.

* CVE-2012-4412 The strcoll implementation caches indices and rules for
  large collation sequences to optimize multiple passes.  This cache
  computation may overflow for large collation sequences and may cause a
  stack or buffer overflow.  This is now fixed to use a slower algorithm
  which does not use a cache if there is an integer overflow.

* CVE-2012-4424 The strcoll implementation uses malloc to cache indices and
  rules for large collation sequences to optimize multiple passes and falls
  back to alloca if malloc fails, resulting in a possible stack overflow.
  The implementation now falls back to an uncached collation sequence lookup
  if malloc fails.

* CVE-2013-4788 The pointer guard used for pointer mangling was not
  initialized for static applications resulting in the security feature
  being disabled. The pointer guard is now correctly initialized to a
  random value for static applications. Existing static applications need
  to be recompiled to take advantage of the fix (bug 15754).

* CVE-2013-4237 The readdir_r function could write more than NAME_MAX bytes
  to the d_name member of struct dirent, or omit the terminating NUL
  character.  (Bugzilla #14699).

* CVE-2013-4332 The pvalloc, valloc, memalign, posix_memalign and
  aligned_alloc functions could allocate too few bytes or corrupt the
  heap when passed very large allocation size values (Bugzilla #15855,
  #15856, #15857).

* CVE-2013-4458 Stack overflow in getaddrinfo with large number of results
  for AF_INET6 has been fixed (Bugzilla #16072).

* New locales: ak_GH, anp_IN, ar_SS, cmn_TW, hak_TW, lzh_TW, nan_TW, pap_AW,
  pap_CW, quz_PE, the_NP.

* Substantially revised locales: gd_GB, ht_HT

* The LC_ADDRESS field was updated to support country_car for almost all
  supported locales.

* ISO 1427 definitions were updated.

* ISO 3166 definitions were updated.

* The localedef utility now supports --big-endian and --little-endian
  command-line options to generate locales for a different system from that
  for which the C library was built.

* Binary locale files now only depend on the endianness of the system for
  which they are generated and not on other properties of that system.  As a
  consequence, binary files generated with new localedef may be incompatible
  with old versions of the GNU C Library, and binary files generated with
  old localedef may be incompatible with this version of the GNU C Library,
  in the following circumstances:

  + Locale files may be incompatible on m68k systems.

  + Locale archive files (but not separate files for individual locales) may
    be incompatible on systems where plain "char" is signed.

* The configure option --disable-versioning has been removed.  Builds with
  --disable-versioning had not worked for several years.

* ISO 639 definitions were updated for Chiga (cgg) and Chinese (gan, hak, czh,
  cjy, lzh, cmn, mnp, cdo, czo, cpx, wuu, hsn, yue).

* SystemTap probes for malloc have been introduced.

* SystemTap probes for slow multiple precision fallback paths of
  transcendental functions have been introduced.

* Support for powerpc64le has been added.

* The soft-float powerpc port now supports e500 processors.

* Support for STT_GNU_IFUNC symbols added for ppc32/power4+ and ppc64.

* A new feature test macro _DEFAULT_SOURCE is available to enable the same
  set of header declarations that are enabled by default, even when other
  feature test macros or compiler options such as -std=c99 would otherwise
  disable some of those declarations.

* The _BSD_SOURCE feature test macro no longer enables BSD interfaces that
  conflict with POSIX.  The libbsd-compat library (which was a dummy library
  that did nothing) has also been removed.

* Preliminary documentation about Multi-Thread, Async-Signal and
  Async-Cancel Safety has been added.

* Change of ABI data structures for s390 and s390x:
  On s390 and s390x the size of struct ucontext and jmp_buf was increased to
  allow for future hardware extensions. All library functions that accept or
  return these structures were versioned in order to provide backwards
  compatibility with existing code. However, not all cases can be handled
  with interface versioning. If an application embeds either structure into
  another structure and that structure is passed to another compilation unit
  which expects the newer larger-sized object then any access to the new
  fields will result in undefined behaviour. Similarly any access to fields
  that were moved by the enlarging of the structures will cause undefined
  behaviour. To fix the undefined behaviour all objects that are part of the
  final in-memory image must agree on the size of structures, and this may
  require recompilation.

Version 2.18

* The following bugs are resolved with this release:

  2546, 2560, 5159, 6809, 7006, 10060, 10062, 10283, 10357, 10686, 11120,
  11561, 12310, 12387, 12492, 12515, 12723, 13550, 13889, 13951, 13988,
  14142, 14176, 14200, 14256, 14280, 14293, 14317, 14327, 14478, 14496,
  14582, 14686, 14812, 14888, 14894, 14907, 14908, 14909, 14920, 14952,
  14964, 14981, 14982, 14985, 14991, 14994, 14996, 15000, 15003, 15006,
  15007, 15014, 15020, 15022, 15023, 15036, 15054, 15055, 15062, 15078,
  15084, 15085, 15086, 15100, 15160, 15214, 15221, 15232, 15234, 15283,
  15285, 15287, 15304, 15305, 15307, 15309, 15327, 15330, 15335, 15336,
  15337, 15339, 15342, 15346, 15359, 15361, 15366, 15380, 15381, 15394,
  15395, 15405, 15406, 15409, 15416, 15418, 15419, 15423, 15424, 15426,
  15429, 15431, 15432, 15441, 15442, 15448, 15465, 15480, 15485, 15488,
  15490, 15492, 15493, 15497, 15506, 15529, 15536, 15553, 15577, 15583,
  15618, 15627, 15631, 15654, 15655, 15666, 15667, 15674, 15711, 15755,
  15759.

* CVE-2013-2207 Incorrectly granting access to another user's pseudo-terminal
  has been fixed by disabling the use of pt_chown (Bugzilla #15755).
  Distributions can re-enable building and using pt_chown via the new configure
  option `--enable-pt_chown'.  Enabling the use of pt_chown carries with it
  considerable security risks and should only be used if the distribution
  understands and accepts the risks.

* CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
  #15078).

* CVE-2013-1914 Stack overflow in getaddrinfo with many results has been
  fixed (Bugzilla #15330).

* Add support for calling C++11 thread_local object destructors on thread
  and program exit.  This needs compiler support for offloading C++11
  destructor calls to glibc.

* Improved worst case performance of libm functions with double inputs and
  output.

* Support for priority inherited mutexes in pthread condition variables on
  non-x86 architectures.

* Port to Xilinx MicroBlaze contributed by David Holsgrove.

* Optimized string functions for AArch64.  Implemented by Marcus Shawcroft.

* Optimized string functions for ARM.  Implemented by Will Newton and
  Richard Henderson.

* Optimized libm functions for SPARC.  Implemented by David S. Miller.

* Support for building more of ARM glibc as Thumb-2 code.  Implemented by
  Richard Henderson.

* Support for building most of MIPS glibc as MIPS16 code.  Implemented by
  Chung-Lin Tang, Maciej W. Rozycki and Maxim Kuvyrkov.

* Added a benchmark framework to track performance of functions in glibc.

* New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
  It is based on draft TS 18661 and currently enabled as a GNU extension.

* On Linux, the clock function now uses the clock_gettime system call
  for improved precision, rather than old times system call.

* Added support for version-3 tz format files.  This is needed when using
  the tz database release 2013e or later, and affects a few unusual cases --
  currently only TZ='America/Godthab' for time stamps after 2037.

* Added new API functions pthread_getattr_default_np and
  pthread_setattr_default_np to get and set the default pthread
  attributes of a process.

* Added support for TSX lock elision for pthread mutexes on i386 and x86-64.
  This may improve lock scaling of existing programs on TSX capable systems.
  When the --enable-lock-elision=yes parameter is specified at configure
  time lock elision will be enabled by default for all PTHREAD_MUTEX_DEFAULT
  mutexes.

* Support added for AT_HWCAP2 (to coincide with Linux kernel 3.10
  availability).  Implemented by Ryan S. Arnold.

* Support added for POWER8 platform.  Implemented by Ryan S. Arnold.

Version 2.17

* The following bugs are resolved with this release:

  1349, 3439, 3479, 3665, 5044, 5246, 5298, 5400, 6530, 6677, 6778, 6808,
  9685, 9914, 10014, 10038, 10114, 10191, 10631, 10873, 11438, 11607, 11638,
  11741, 12140, 13013, 13412, 13542, 13601, 13603, 13604, 13629, 13679,
  13696, 13698, 13717, 13741, 13759, 13761, 13763, 13881, 13939, 13950,
  13952, 13966, 14042, 14047, 14090, 14150, 14151, 14152, 14154, 14157,
  14166, 14173, 14195, 14197, 14237, 14246, 14251, 14252, 14283, 14298,
  14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14368, 14376,
  14417, 14447, 14459, 14476, 14477, 14501, 14505, 14510, 14516, 14518,
  14519, 14530, 14532, 14538, 14543, 14544, 14545, 14557, 14562, 14568,
  14576, 14579, 14583, 14587, 14595, 14602, 14610, 14621, 14638, 14645,
  14648, 14652, 14660, 14661, 14669, 14672, 14683, 14694, 14716, 14719,
  14743, 14767, 14783, 14784, 14785, 14793, 14796, 14797, 14801, 14803,
  14805, 14807, 14811, 14815, 14821, 14822, 14824, 14828, 14831, 14833,
  14835, 14838, 14856, 14863, 14865, 14866, 14868, 14869, 14871, 14872,
  14879, 14889, 14893, 14898, 14914.

* Optimization of memcpy for MIPS.

* CVE-2011-4609 svc_run() produces high cpu usage when accept fails with
  EMFILE has been fixed (Bugzilla #14889).

* The add-on ports collection is now distributed in the "ports" subdirectory
  of the main GNU C Library distribution, rather than separately.

* Port to ARM AArch64 contributed by Linaro.

* Support for STT_GNU_IFUNC symbols added for s390 and s390x.
  Optimized versions of memcpy, memset, and memcmp added for System z10 and
  zEnterprise z196.
  Implemented by Andreas Krebbel.

* The new function secure_getenv allows secure access to the environment,
  returning NULL if running in a SUID/SGID process.  This function replaces
  the internal function __secure_getenv.

* SystemTap static probes have been added into the dynamic linker.
  Implemented by Gary Benson.

* Optimizations of string functions strstr, strcasestr and memmem.
  Implemented by Maxim Kuvyrkov.

* The minimum Linux kernel version that this version of the GNU C Library
  can be used with is 2.6.16.

* Optimizations of string functions memchr, wcschr, wcscpy, and wcsrchr for
  powerpc POWER7.  Implemented by Will Schmidt.

* New configure option --disable-nscd builds the C library such that it
  never attempts to contact the Name Service Caching Daemon (nscd).
  New configure option --disable-build-nscd avoids building nscd itself;
  this is the default if --disable-nscd is used.

* Improved support for cross-compilation, including cross-testing and
  bootstrap builds without a previously built glibc.

* Several testsuite tests are now able to test multiple IFUNC variants of an
  interface, rather than just testing the one that would be chooen by
  default.

* New configure options --with-bugurl and --with-pkgversion, for
  distributors to use to embed their bug-reporting and package version
  information in --help and --version output.

* The ttyname and ttyname_r functions on Linux now fall back to searching for
  the tty file descriptor in /dev/pts or /dev if /proc is not available.  This
  allows creation of chroots without the procfs mounted on /proc.

* The `crypt' function now fails if passed salt bytes that violate the
  specification for those values.  On Linux, the `crypt' function will
  consult /proc/sys/crypto/fips_enabled to determine if "FIPS mode" is
  enabled, and fail on encrypted strings using the MD5 or DES algorithm
  when the mode is enabled.

* The `clock_*' suite of functions (declared in <time.h>) is now available
  directly in the main C library.  Previously it was necessary to link with
  -lrt to use these functions.  This change has the effect that a
  single-threaded program that uses a function such as `clock_gettime' (and
  is not linked with -lrt) will no longer implicitly load the pthreads
  library at runtime and so will not suffer the overheads associated with
  multi-thread support in other code such as the C++ runtime library.

* New locales: ayc_PE, doi_IN, ia_FR, mni_IN, nhn_MX, niu_NU, niu_NZ,
  sat_IN, and szl_PL.

Version 2.16

* The following bugs are resolved with this release:

  174, 208, 350, 369, 411, 706, 766, 887, 2074, 2541, 2547, 2548, 2550,
  2551, 2552, 2553, 2554, 2562, 2563, 2565, 2566, 2570, 2576, 2636, 2678,
  3335, 3440, 3748, 3768, 3866, 3868, 3906, 3976, 3992, 4026, 4108, 4596,
  4822, 5077, 5461, 5805, 5993, 6471, 6486, 6578, 6649, 6730, 6770, 6794,
  6884, 6890, 6894, 6895, 6907, 6911, 6959, 7064, 9739, 9902, 10110, 10135,
  10140, 10153, 10210, 10254, 10346, 10375, 10545, 10716, 10846, 11174,
  11261, 11322, 11365, 11451, 11494, 11521, 11677, 11837, 11959, 12047,
  12097, 12193, 12194, 12297, 12298, 12301, 12340, 12354, 12416, 12495,
  13058, 13223, 13361, 13525, 13526, 13527, 13528, 13529, 13530, 13531,
  13532, 13533, 13547, 13551, 13552, 13553, 13555, 13556, 13559, 13563,
  13566, 13576, 13579, 13583, 13592, 13594, 13613, 13618, 13637, 13656,
  13658, 13673, 13691, 13695, 13704, 13705, 13706, 13718, 13726, 13738,
  13739, 13743, 13750, 13758, 13760, 13761, 13775, 13786, 13787, 13792,
  13806, 13824, 13840, 13841, 13844, 13846, 13848, 13851, 13852, 13854,
  13871, 13872, 13873, 13879, 13882, 13883, 13884, 13885, 13886, 13892,
  13895, 13908, 13910, 13911, 13912, 13913, 13914, 13915, 13916, 13917,
  13918, 13919, 13920, 13921, 13922, 13923, 13924, 13926, 13927, 13928,
  13938, 13941, 13942, 13954, 13955, 13956, 13963, 13967, 13968, 13970,
  13973, 13979, 13983, 13986, 13996, 14012, 14027, 14033, 14034, 14036,
  14040, 14043, 14044, 14048, 14049, 14050, 14053, 14055, 14059, 14064,
  14075, 14080, 14083, 14103, 14104, 14109, 14112, 14117, 14122, 14123,
  14134, 14153, 14183, 14188, 14199, 14210, 14218, 14229, 14241, 14273,
  14277, 14278.

* Support for the x32 ABI on x86-64 added.  The x32 target is selected by
  configuring glibc with:
	BUILD_CC='gcc' CC='gcc -mx32' CXX='g++ -mx32'
  Visit <http://sites.google.com/site/x32abi/> for more x32 ABI info.
  Implemented by H.J. Lu.

* ISO C11 support:

  + define static_assert

  + do not declare gets

  + declare at_quick_exit and quick_exit also for ISO C11

  + aligned_alloc.  NB: The code is deliberately allows the size parameter
    to not be a multiple of the alignment.  This is a moronic requirement
    in the standard but it is only a requirement on the caller, not the
    implementation.

  + timespec_get added

  + uchar.h support added

  + CMPLX, CMPLXF, CMPLXL added

  Implemented by Ulrich Drepper.

* Support for the IA-64 has been moved to ports.

* Remove support for anything but ELF binary format

* Checking versions of poll, ppoll added.
  Implemented by Ulrich Drepper.

* More generic and 64-bit performance optimizations to math functions.
  Implemented by Ulrich Drepper.

* New configure option --enable-obsolete-rpc makes the deprecated RPC
  headers and functions available at compile time as they were before
  version 2.14.  This option will be removed at some time in the future
  after the TI-RPC library becomes fully sufficient for the needs of
  existing applications.

* Compatibility code for Linux kernel versions before 2.4 has been removed.
  Note that glibc is not expected to work with any Linux kernel version
  before 2.6.

* New header <sys/auxv.h> and function getauxval allowing easy access to
  the AT_* key-value pairs passed from the Linux kernel.  The header also
  defines the HWCAP_* bits associated with the AT_HWCAP key.

* New locales: mag_IN

* New configure option --enable-systemtap builds SystemTap static probes
  into libc for setjmp and longjmp and into libpthread for various operations.
  So far the setjmp/longjmp probes and some of the libpthread probes are
  provided only for i*86 and x86_64.
  Implemented by Roland McGrath and Rayson Ho.

* Optimized expf for x86-32 and x86-64.  Implemented by Liubov Dmitrieva.

* More optimized functions for PowerPC.  Implemented by Adhemerval Zanella
  and Will Schmidt.

* More optimized functions for SPARC.  Implemented by David S. Miller.

* Improved support for cross-compilation, especially bootstrap builds
  without a previously built glibc.

* Ports for the TILE-Gx and TILEPro families of processors.  Contributed by
  Chris Metcalf from Tilera.

* Support for the old ARM ABI has been removed from ports.  Only the EABI is
  now supported for ARM processors.

* The hard-float variant of the ARM EABI now uses /lib/ld-linux-armhf.so.3
  as the name of the dynamic linker, to distinguish it from the
  /lib/ld-linux.so.3 dynamic linker used for the base EABI.

* Support for CRIS has been removed from ports.

* A new class of installed header has been documented for low-level
  platform-specific functionality.  PowerPC added the first instance with a
  function to provide time base register access.  Contributed by Tulio
  Magno Quites Machado Filho.

* ix86 configurations now install header files that are consistent with
  what x86-64 configurations install.  These same header files can be used
  for -m32, -m64, or -mx32 builds.
  Contributed by H.J. Lu.

* Math library bug fixes.  A thorough audit of all open math library bugs was
  conducted by Joseph Myers.  Significant progress was made on many math
  library bugs resulting in more accurate exceptions and function results.
  Many thanks to all those that contributed including Andreas Jaeger for his
  patch review and work on the x87 trigonometric instruction issues.

* Timezone data is no longer installed.  Timezone-related binaries and scripts
  will continue to be installed.  Users should obtain their timezone data from
  their distribution provider or from the tzdata package at
  <ftp://munnari.oz.au/pub/>.

Version 2.15

* The following bugs are resolved with this release:

  6779, 6783, 9696, 10103, 10709, 11589, 11929, 12403, 12786, 12840, 12847,
  12868, 12852, 12874, 12885, 12892, 12906, 12907, 12922, 12935, 12962,
  13007, 13021, 13061, 13062, 13067, 13068, 13085, 13088, 13090, 13092,
  13096, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13166, 13179,
  13185, 13189, 13192, 13268, 13276, 13282, 13291, 13305, 13328, 13335,
  13337, 13344, 13358, 13367, 13413, 13416, 13423, 13439, 13446, 13472,
  13484, 13506, 13515, 13523, 13524, 13538, 13540

* New program pldd to list loaded object of a process
  Implemented by Ulrich Drepper.

* Add nss_db support back to glibc.  No more dependency on Berkeley db
  and support for initgroups lookups.
  Implemented by Ulrich Drepper.

* Optimized strcpy, strncpy, stpcpy, stpncpy for SSE2 and SSSE3 on x86-32.
  Contributed by HJ Lu.

* Improved strcpy, strncpy, stpcpy, stpncpy for SSE2 and SSSE3 on x86-64.
  Contributed by HJ Lu.

* Optimized strcat, strncat on x86-64 and optimized wcscmp, wcslen, strnlen
  on x86-32 and x86-64.
  Contributed by Liubov Dmitrieva.

* Optimized strchr and strrchr for SSE on x86-32.
  Contributed by Liubov Dmitrieva.

* Optimized memchr, memrchr, rawmemchr, memcmp, wmemcmp, wcschr, wcscpy
  for x86-64 and x86-32.
  Contributed by Liubov Dmitrieva.

* New interfaces: scandirat, scandirat64
  Implemented by Ulrich Drepper.

* Checking versions of FD_SET, FD_CLR, and FD_ISSET added.
  Implemented by Ulrich Drepper.

* nscd now also caches the netgroup database.
  Implemented by Ulrich Drepper.

* Integrate libm with gcc's -ffinite-math-only option.
  Implemented by Ulrich Drepper.

* Lots of generic, 64-bit, and x86-64-specific performance optimizations
  to math functions.  Implemented by Ulrich Drepper.

* Optimized strcasecmp and strncasecmp for AVX on x86-64.
  Implemented by Ulrich Drepper.

* New Linux interfaces: process_vm_readv, process_vm_writev

* Optimized strcasecmp and strncasecmp for SSSE3 and SSE4.2 on x86-32.
  Implemented by Ulrich Drepper.

* Optimized nearbyint and strcasecmp for PPC.
  Implemented by Adhemerval Zanella.

* New locales: bho_IN, unm_US, es_CU, ta_LK

Version 2.14

* The following bugs are resolved with this release:

  386, 6420, 7101, 9730, 9732, 9809, 10138, 10149, 10157, 11099, 11257,
  11258, 11487, 11532, 11558, 11578, 11634, 11653, 11668, 11697, 11724,
  11781, 11799, 11820, 11837, 11857, 11869, 11892, 11895, 11901, 11945,
  11947, 11952, 11987, 12052, 12083, 12158, 12178, 12200, 12346, 12350,
  12393, 12420, 12432, 12445, 12449, 12453, 12454, 12460, 12469, 12489,
  12509, 12510, 12511, 12518, 12527, 12541, 12545, 12551, 12582, 12583,
  12587, 12597, 12601, 12611, 12625, 12626, 12631, 12650, 12653, 12655,
  12660, 12671, 12681, 12684, 12685, 12711, 12713, 12714, 12717, 12723,
  12724, 12734, 12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792,
  12795, 12811, 12813, 12814, 12841

* The RPC implementation in libc is obsoleted.  Old programs keep working
  but new programs cannot be linked with the routines in libc anymore.
  Programs in need of RPC functionality must be linked against TI-RPC.
  The TI-RPC implementation is IPv6 enabled and there are other benefits.

  Visible changes of this change include (obviously) the inability to link
  programs using RPC functions without referencing the TI-RPC library and the
  removal of the RPC headers from the glibc headers.
  Implemented by Ulrich Drepper.

* New Linux interfaces: clock_adjtime, name_to_handle_at, open_by_handle_at,
  syncfs, setns, sendmmsg

* New locales: os_RU, bem_ZA, en_ZA, ff_SN, sw_KE, sw_TZ, lb_LU, wae_CH,
  yue_HK, lij_IT, mhr_RU

* New encodings: CP770, CP771, CP772, CP773, CP774

* New program sotruss to trace calls through PLTs
  Implemented by Ulrich Drepper.

* The malloc hook implementation is marked deprecated and will be removed
  from the default implementation in the next version.  The design never
  worked ever since the introduction of threads.  Even programs which do
  not create threads themselves can use multiple threads created internally.

Version 2.13

* The following bugs are resolved with this release:

  3268, 6812, 7066, 10085, 10484, 10563, 10851, 11149, 11155, 11577, 11611,
  11640, 11655, 11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979,
  12005, 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113,
  12140, 12159, 12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348,
  12378, 12394, 12397

* New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark

* POWER7 optimizations: memset, memcmp, strncmp

* New optimized string functions for x86-64: strnlen (SSE2),
  strcasecmp (SSE2, SSSE3, SSE4.2), strncasecmp (SSE2, SSSE3, SSE4.2)
  Implemented by Ulrich Drepper.

Version 2.12

* The following bugs are resolved with this release:

  3662, 4457, 5553, 10162, 10401, 10414, 10554, 10824, 10864, 10915,
  10918, 10936, 10939, 10958, 10968, 10969, 10972, 10992, 11000, 11001,
  11007, 11010, 11027, 11039, 11040, 11041, 11043, 11046, 11056, 11070,
  11093, 11115, 11125, 11126, 11127, 11134, 11141, 11149, 11183, 11184,
  11185, 11186, 11187, 11188, 11189, 11190, 11191, 11192, 11193, 11194,
  11200, 11230, 11235, 11242, 11254, 11258, 11271, 11272, 11276, 11279,
  11287, 11292, 11319, 11332, 11333, 11387, 11389, 11390, 11394, 11397,
  11410, 11438, 11449, 11470, 11471, 11520, 11537, 11538, 11571

* New interfaces: pthread_getname_np, pthread_setname_np

* New Linux interface: recvmmsg

* STT_GNU_IFUNC implemented for Sparc by David Miller.

* The dynamic linker now recognizes supported ABI versions from the
  EI_ABIVERSION field in the ELF header.
  Implemented by Ulrich Drepper.

* New NIS mode selector ADJUNCT_AS_SHADOW.  The passwd.adjunct.byname table
  will not be used to fill in password fields in the passwd.byname replies.
  Instead it is used to synthesize the shadow.byname table, should it be
  missing.  This is a useful mode in some installations involving Solaris.
  Implemented by Ulrich Drepper.

* New locales: kok_IN, sq_MK, cv_RU

Version 2.11

* The following bugs are resolved with this release:

  3270, 7094, 9924, 9986, 10011, 10085, 10107, 10159, 10162, 10166, 10183,
  10195, 10196, 10200, 10203, 10207, 10211, 10213, 10217, 10221, 10229,
  10262, 10286, 10312, 10315, 10319, 10349, 10360, 10391, 10402, 10416,
  10418, 10422, 10425, 10446, 10448, 10452, 10540, 10553, 10560, 10564,
  10609, 10643, 10692, 10713, 10717, 10730, 10731, 10742, 10780, 10784,
  10789, 10817, 10823, 10840, 10847

* New interfaces: execvpe, pthread_sigqueue, mkstemps, mkstemps64, mkostemps,
  mkostemps64
  Implemented by Ulrich Drepper.

* Checking version of longjmp added that fails if an uninitialized stack
  frame would be created.  Implemented by Ulrich Drepper.

* STT_GNU_IFUNC is now supported in static executables.
  Implemented by H.J. Lu.

* STT_GNU_IFUNC implemented for PPC by Alan Modra.

* New optimized string functions for x86-64: strstr, strcasestr, memcmp,
  strcspn, strpbrk, strspn, strcpy, stpcpy, strncpy, strcmp (SSE2, SSE4.2),
  strncmp (SSE2, SSE4.2), strchr (SSE4.2), strrchr (SSE4.2).
  Contributed by H.J. Lu.

  strlen, rawmemchr, strcmp (SSSE3), strncmp (SSSE3).
  Implemented by Ulrich Drepper.

* New optimized string functions for x86: strlen, strcspn, strspn, strpbrk,
  strstr, strcasestr.
  Contributed by H.J. Lu.

* Support for fma instruction in AVX on x86-64.
  Implemented by H.J. Lu and Ulrich Drepper.

* AVX support in x86-64 auditing support in ld.so.
  Implemented by H.J. Lu.

* STB_GNU_UNIQUE support added.
  Implemented by Ulrich Drepper.

* Implement second fallback mode for optimized DNS lookup for even more
  broken environments.  If two requests from the same port are not
  handled correctly close the socket and open a new one before sending
  the second request.  The 'single-request-reopen' option in /etc/resolv.conf
  can be used to select this mode right away, instead of rediscovering the
  necessity is every process again.
  Implemented by Ulrich Drepper.

* New resolver flag RES_USE_DNSSEC to enable use of verified lookup.
  Implemented by Adam Tkac.

* Optimized iconv conversions for S390x.
  Implemented by Andreas Krebbel.

* Using condvars with PI mutexes is now more efficient due to kernel
  support for requeueing to PI futexes.  NPTL support added for x86-64.
  Implemented by Ulrich Drepper.

* New locales: ps_AF, my_MM

Version 2.10

* The following bugs are resolved with this release:

  697, 5381, 5807, 6411, 6545, 7040, 7058, 7067, 7080, 7083, 7095, 7098,
  9677, 9694, 9697, 9701, 9704, 9705, 9706, 9720, 9726, 9730, 9733, 9736,
  9741, 9750, 9753, 9759, 9781, 9791, 9793, 9823, 9833, 9844, 9880, 9881,
  9891, 9893, 9895, 9913, 9916, 9920, 9948, 9955, 9957, 9963, 9985, 10052,
  10069, 10086, 10087, 10090, 10092, 10093, 10100, 10118, 10128

* New interfaces: preadv, preadv64, pwritev, pwritev64, malloc_info
  Implemented by Ulrich Drepper.

* New Linux interfaces: accept4, fallocate, fallocate64.
  Implemented by Ulrich Drepper.

* Correct declarations of string function when used in C++ code.  This
  could lead to compile errors for invalid C++ code.

* XPG7/POSIX 2008 compilation environment.  Many GNU-specific functions are
  now in POSIX.

* New POSIX 2008 interface: psiginfo
  Implemented by Ulrich Drepper.

* New ISO C++1x interfaces: quick_exit, at_quick_exit
  Implemented by Ulrich Drepper.

* Support for selecting between multiple function definitions at runtime
  using STT_GNU_IFUNC symbols.  Implemented by Ulrich Drepper.

* The libcrypt library can now use the hash function implementations in
  NSS.  Implemented by Ulrich Drepper.

* The malloc implementation can be compiled to be less memory efficient
  but higher performing in multi-threaded programs.
  Implemented by Ulrich Drepper.

* New locales: nan_TW@latin, ks_IN

* Faster strlen, strchr, strchrnul, strrchr, memchr, and rawmemchr for x86-64.
  Implemented by Ulrich Drepper.

* Extended printf hook support.  It is possible to use user-defined types
  and extend existing format specifiers.
