Please send GNU C library bug reports via <http://sourceware.org/bugzilla/>
using `glibc' in the "product" field.
+\f
+Version 2.26
+
+* Unicode 10.0.0 Support: Character encoding, character type info, and
+ transliteration tables are all updated to Unicode 10.0.0, using
+ generator scripts contributed by Mike FABIAN (Red Hat).
+
+* errno.h is now safe to use from C-preprocessed assembly language on all
+ supported operating systems. In this context, it will only define the
+ Exxxx constants, as preprocessor macros expanding to integer literals.
+
+* The rpcgen, librpcsvc and related headers will only be built and
+ installed when glibc is configured with --enable-obsolete-rpc.
+ This allows alternative RPC implementations, like TIRPC, to be used
+ by default. Applications needing features missing from TIRPC should
+ consider the rpcsvc-proto project developed by Thorsten Kukuk (SUSE).
+
+* The NIS(+) name service modules, libnss_nis, libnss_nisplus, and
+ libnss_compat, are deprecated, and will not be built or installed by
+ default. Replacement implementations based on TIRPC, which
+ additionally support IPv6, are available from
+ <https://github.com/thkukuk/libnss_{compat,nis,nisplus}>.
+
+* The NIS(+) support library, libnsl, is deprecated. By default, a
+ compatibility shared library will be built and installed, but not
+ headers or development libraries.
+
+ Only a few NIS-related programs require this library.
+ A replacement implementation based on TIRPC is available from
+ <https://github.com/thkukuk/libnsl>. Like the replacement NIS(+)
+ name service modules, the replacement supports IPv6, and it can be
+ coinstalled with the compatibility shared library from glibc.
+
+* New configure option --enable-obsolete-nsl will cause libnsl's
+ headers, and the NIS(+) name service modules, to be built and
+ installed. This option may be removed in a future release.
+
+* Extensive new collation tests for Hungarian locales based on
+ "The Rules of Hungarian Orthography, 12th edition" and the work of
+ Egmont Koblinger (Bug 18934).
+
+* The DNS stub resolver no longer performs EDNS fallback. If EDNS or DNSSEC
+ support is enabled, the configured recursive resolver must support EDNS.
+ (Responding to EDNS-enabled queries with responses which are not
+ EDNS-enabled is fine, but FORMERR responses are not.)
+
+* res_mkquery and res_nmkquery no longer support the IQUERY opcode. DNS
+ servers have not supported this opcode for a long time.
+
+* The legacy cfree function has been removed. Applications should use the
+ free function instead.
+
+* posix_spawnattr_setflags now supports POSIX_SPAWN_SETSID flag to create a
+ new session ID for the posix_spawn and posix_spawnp. It is scheduled to
+ be added on next major revision of POSIX, so current support is enabled
+ with _GNU_SOURCE.
+
+* The minimum Linux kernel version that this version of the GNU C Library
+ can be used with on i[4567]86 and x86_64 is 3.2. A Linux 3.2 or later
+ kernel was already required on all other architectures.
+
+* The obsolete <sys/ultrasound.h> header file has been removed.
+
+* The port to Native Client running on ARMv7-A (--host=arm-nacl) has been
+ removed.
+
+* <string.h> no longer includes inline versions of any string functions,
+ as this kind of optimization is better done by the compiler. The macros
+ __USE_STRING_INLINES and __NO_STRING_INLINES no longer have any effect.
+
+* The nonstandard header <xlocale.h> has been removed. Most programs should
+ use <locale.h> instead. If you have a specific need for the definition
+ of locale_t with no other declarations, please talk to us.
+
+* The obsolete signal constant SIGUNUSED is no longer defined by <signal.h>.
+
+* The reallocarray function has been added to libc. It is a realloc
+ replacement with a check for integer overflow when calculating total
+ allocation size.
+
+* New preadv2 and pwritev2 has been added. They are Linux extensions to
+ preadv and pwritev with an additional flag argument where it is possible
+ to set high priority or use O_DSYNC or O_SYNC for a specific IO operation.
+ For complete support it requires Linux kernel version 4.6, otherwise a
+ compat implementation will be used (which refuses all flags and routes it
+ to preadv or pwritev).
+
+* The stack_t type no longer has the name struct sigaltstack. This changes
+ the C++ name mangling for interfaces involving this type.
+
+* The synchronization that pthread_spin_unlock performs has been changed
+ to now be equivalent to a C11 atomic store with release memory order to
+ the spin lock's memory location. This ensures correct synchronization
+ for the spin lock's operations and critical sections protected by a spin
+ lock. Previously, several (but not all) architectures used stronger
+ synchronization (e.g., containing what is often called a full barrier).
+ This change can improve performance, but may affect odd fringe uses of
+ spin locks that depend on the previous behavior (e.g., using spin locks
+ as atomic variables to try to implement Dekker's mutual exclusion
+ algorithm).
+
+* The tunables feature is now enabled by default. This allows users to tweak
+ behavior of the GNU C Library using the GLIBC_TUNABLES environment variable.
+
+* The s390 specific ptrace requests are adjusted to the kernel ones. Request 12
+ is now used for PTRACE_SINGLEBLOCK instead of PTRACE_GETREGS. The requests
+ PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS and PTRACE_SETFPREGS were
+ removed as those are not supported by the s390 kernel. The requests
+ PTRACE_SINGLEBLOCK, PTRACE_SECCOMP_GET_FILTER, PTRACE_PEEKUSR_AREA,
+ PTRACE_POKEUSR_AREA, PTRACE_GET_LAST_BREAK, PTRACE_ENABLE_TE,
+ PTRACE_DISABLE_TE and PTRACE_TE_ABORT_RAND were added as those are supported
+ by the s390 kernel.
+
+* The minimum GCC version that can be used to build this version of the GNU
+ C Library is GCC 4.9. Older GCC versions, and non-GNU compilers, can
+ still be used to compile programs using the GNU C Library.
+
+* Support is added, on powerpc64le, for interfaces supporting the _Float128
+ type from ISO/IEC TS 18661-3:2015. Most of the interfaces are taken from
+ TS 18661-3. The type-generic macros in <math.h> support this type, but
+ those in <tgmath.h> do not. The GNU C Library now requires GCC 6.2 or
+ later to build for powerpc64le. When used with GCC versions before GCC
+ 7, these interfaces may be used with the type under the non-standard name
+ __float128.
+
+ New <stdlib.h> functions from ISO/IEC TS 18661-3:
+
+ - String Conversion Functions: strfromf128 and strtof128.
+
+ New <math.h> features from ISO/IEC TS 18661-3:
+
+ - Very Large Number macro: HUGE_VAL_F128.
+
+ - Signaling NaN macro: SNANF128.
+
+ - Trigonometric Functions: acosf128, asinf128, atanf128, atan2f128,
+ cosf128, sinf128, tanf128.
+
+ - Hyperbolic Functions: acoshf128, asinhf128, atanhf128, coshf128,
+ sinhf128, tanhf128.
+
+ - Exponential and Logarithmic Functions: expf128, exp2f128, expm1f128,
+ frexpf128, ilogbf128, ldexpf128, llogbf128, logf128, log10f128,
+ log1pf128, log2f128, logbf128, modff128, scalbnf128, scalblnf128.
+
+ - Power and Absolute Functions: cbrtf128, fabsf128, hypotf128, powf128,
+ sqrtf128.
+
+ - Error and Gamma Functions: erff128, erfcf128, lgammaf128, tgammaf128.
+
+ - Nearest Integer Functions: ceilf128, floorf128, nearbyintf128,
+ rintf128, lrintf128, llrintf128, roundf128, lroundf128, llroundf128,
+ roundevenf128, truncf128, fromfpf128, ufromfpf128, fromfpxf128,
+ ufromfpxf128.
+
+ - Remainder Functions: fmodf128, remainderf128, remquof128.
+
+ - Manipulation Functions: copysignf128, nanf128, nextafterf128,
+ nextupf128, nextdownf128, canonicalizef128.
+
+ - Minimum, Maximum, and Positive Difference Functions: fdimf128,
+ fmaxf128, fminf128, fmaxmagf128, fminmagf128.
+
+ - Floating Multiply-Add Function: fmaf128.
+
+ - Total Order Functions: totalorderf128, totalordermagf128.
+
+ - Payload Functions: getpayloadf128, setpayloadf128, setpayloadsigf128.
+
+ New <complex.h> functions from ISO/IEC TS 18661-3:
+
+ - Trigonometric Functions: cacosf128, casinf128, catanf128, ccosf128,
+ csinf128, ctanf128.
+
+ - Hyperbolic Functions: cacoshf128, casinhf128, catanhf128, ccoshf128,
+ csinhf128, ctanhf128.
+
+ - Exponential and Logarithmic Functions: cexpf128, clogf128.
+
+ - Power and Absolute Functions: cabsf128, cpowf128, csqrtf128.
+
+ - Manipulation Functions: cargf128, cimagf128, CMPLXF128, conjf128,
+ cprojf128, crealf128.
+
+ The following <wchar.h> functions are added as GNU extensions:
+
+ - Wide String Conversion Functions: wsctof128, wcstof128_l.
+
+ The following <stdlib.h> function is added as a GNU extension:
+
+ - String Conversion Function: strtof128_l.
+
+ The following <math.h> features are added as GNU extensions:
+
+ - Predefined Mathematical Constants: M_Ef128, M_LOG2Ef128,
+ M_LOG10Ef128, M_LN2f128, M_LN10f128, M_PIf128, M_PI_2f128,
+ M_PI_4f128, M_1_PIf128, M_2_PIf128, M_2_SQRTPIf128, M_SQRT2f128,
+ M_SQRT1_2f128.
+
+ - Trigonometric Function: sincosf128.
+
+ - Exponential and Logarithmic Function: exp10f128.
+
+ - Error and Gamma Function: lgammaf128_r.
+
+ - Bessel Functions: j0f128, j1f128, jnf128, y0f128, y1f128, ynf128.
+
+ The following <complex.h> function is added as a GNU extension:
+
+ - Exponential and Logarithmic Function: clog10f128.
+
+Security related changes:
+
+* The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes,
+ to avoid fragmentation-based spoofing attacks.
+
+The following bugs are resolved with this release:
+
+ [The release manager will add the list generated by
+ scripts/list-fixed-bugs.py just before the release.]
+
\f
Version 2.25
“no-ip6-dotint” had already been the default, and support for the
“ip6-dotint” option was removed from the Internet in 2006.
-* The "ip6-bytestring" resolver option and the corresponding RES_NOIP6DOTINT
+* The "ip6-bytestring" resolver option and the corresponding RES_USEBSTRING
flag from <resolv.h> have been removed. The option relied on a
backwards-incompatible DNS extension which was never deployed on the
Internet.
flag. The GNU C Library manual has details on usage and README.tunables has
instructions on adding new tunables to the library.
+* A new version of condition variables functions have been implemented in
+ the NPTL implementation of POSIX Threads to provide stronger ordering
+ guarantees.
+
+* A new version of pthread_rwlock functions have been implemented to use a more
+ scalable algorithm primarily through not using a critical section anymore to
+ make state changes.
+
Security related changes:
* On ARM EABI (32-bit), generating a backtrace for execution contexts which
The following bugs are resolved with this release:
- [The release manager will add the list generated by
- scripts/list-fixed-bugs.py just before the release.]
+ [4099] stdio: Overly agressive caching by stream i/o functions.
+ [7065] build: Support building glibc with -fstack-protector or -fstack-
+ protector-all
+ [9842] localedata: en_CA: incorrect date format
+ [13165] nptl: pthread_cond_wait() can consume a signal that was sent
+ before it started waiting
+ [14139] manual: Do not hardcode platform names in manual/libm-err-tab.pl
+ [15765] nptl: sem_open is wrongly a cancellation point
+ [16421] network: IN6_IS_ADDR_UNSPECIFIED can use undefined s6_addr32
+ [16458] libc: endian.h and netinet/in.h byte order macros return values of
+ wrong type
+ [16628] dynamic-link: Segfault after a binary without pthread dlopen()s a
+ library linked with pthread
+ [16630] nptl: Use SYSENTER for pthread_cond_broadcast/signal() (i.e. fix
+ "FIXME: Ingo" issue)
+ [16907] libc: <argp.h> compiled with --std=cXX disables __attribute__
+ [17252] libc: getrandom and getentropy syscall
+ [17730] malloc: thread-local storage is sometimes improperly free()'d
+ after being __libc_memalign()'d
+ [18241] stdio: failed fseek on memstream does not set errno and can fail
+ when it shouldnt
+ [18243] nptl: sem_wait, sem_timedwait are cancellation points shm_open is
+ not
+ [18463] nptl: pthread_cond_broadcast issue when surrounded by
+ PTHREAD_PRIO_INHERIT mutex on ARM
+ [18784] network: res_query and related function crash for special record
+ type queries (CVE-2015-5180)
+ [19380] math: strtod does not raise "inexact"
+ [19387] string: Integer overflow in memchr
+ [19390] string: Integer overflow in strncat
+ [19398] build: linknamespace tests fail with massively parallel build
+ [19402] nptl: Deadlock with robust shared mutex and asynchronous
+ termination
+ [19469] malloc: M_PERTURB in test-skeleton.c invalidates malloc tests
+ [19473] malloc: Turn malloc_get_state etc. in compatibility symbols
+ [19514] libc: [PATCH] Fix spelling errors in spelling
+ "implement"/"implementation" in several places
+ [19582] network: Deprecate RES_USE_INET6
+ [19673] manual: clog10 docs appear to be erroneous
+ [19810] dynamic-link: dlopen with both RTLD_NOLOAD and RTLD_NODELETE
+ causes a segmentation fault
+ [19826] libc: invalid pointer returned from __tls_get_addr with static
+ linking
+ [20016] network: resolv: Remove hooks support from the API
+ [20019] dynamic-link: NULL pointer dereference in libc.so.6 IFUNC due to
+ uninitialized GOT
+ [20033] math: [x86_64] vectorized math function don't call the __finite
+ versions
+ [20116] nptl: use after free in pthread_create
+ [20181] stdio: open_memstream(): writes not at end of stream corrupt data
+ [20292] dynamic-link: Comparison in elf/dl-open.c _dl_addr_inside_object
+ is always true.
+ [20311] nptl: please install proc_service.h
+ [20366] libc: Compilation errors in installed headers in strict-compliance
+ modes
+ [20370] malloc: malloc: Arena free list management is still racy
+ (incorrect fix in bug 19243)
+ [20386] libc: assert (X = 0) does not result in GCC warning
+ [20432] malloc: malloc: Minimize interface required for interposition
+ [20435] libc: Missing unwind info in __startcontext causes infinite loop
+ in _Unwind_Backtrace (CVE-2016-6323)
+ [20444] hurd: recvmsg: PF_LOCAL sockets and msg_name lead to SIGLOST
+ [20452] nptl: Addition of sysdep.o to libpthread.a breaks relinking
+ libpthread.a
+ [20455] math: [powerpc] fesetexceptflag fails to clear FE_INVALID
+ [20459] localedata: et_EE: locale has wrong {p,n}_cs_precedes value
+ [20477] network: resolv: incorrect double-checked locking related to
+ _res_hconf
+ [20478] libc: libc_ifunc macro and similar usages leads to false debug-
+ information.
+ [20495] math: x86_64 performance degradation due to AVX/SSE transition
+ penalty
+ [20497] localedata: lt_LT: LC_TIME d_fmt used is obsolete
+ [20508] dynamic-link: _dl_runtime_resolve_avx/_dl_runtime_profile_avx512
+ cause transition penalty
+ [20517] math: sparcv9 missing fdiml compat symbol
+ [20524] manual: strverscmp is inconsistent
+ [20525] libc: <sys/quota.h> should be based on kernel headers
+ [20539] math: GCC 7 -static -lm fails to link at -O3
+ [20554] libc: ld: bss-plt forced due to /usr/lib/libc_nonshared.a(ppc-
+ mcount.oS)
+ [20558] string: POSIX bcopy/bzero decls do not implement Object Size
+ Checking
+ [20591] network: Remove obsolete DNSSEC support
+ [20592] network: DNS resource record type classification macros in
+ <arpa/nameser.h> are incorrect
+ [20593] network: Update DNS RR type definitions
+ [20611] network: getaddrinfo accepts invalid numeric scope IDs
+ [20615] build: glibc build fails when using --with-cpu=power9 --enable-
+ multi-arch
+ [20629] network: libresolv: Remove support for bitstring labels
+ (RES_USEBSTRING)
+ [20647] libc: GLIBC quitting every program - glibc on Pentium-S leads to
+ assertion: "maxidx >= 2"
+ [20660] math: [arm] Use VSQRT
+ [20662] libc: checking whether x86_64-pc-linux-gnu-gcc implicitly enables
+ -fstack-protector no (32bit gcc 6.2.0 pie and ssp enable)
+ [20689] libc: Test for FMA should also check for AVX.
+ [20707] glob: gl_pathv entries not set to NULL with GLOB_DOOFFS
+ [20715] math: iszero macro breaks existing code
+ [20718] math: [powerpc] copysignl raises "invalid" for sNaN
+ [20728] libc: powerpc: Missing TOC stub in clone
+ [20729] build: glibc-2.24 fails to build for i486 with -Os
+ [20750] build: Build fails with default PIE enabled gcc-6.x
+ [20768] math: [alpha] sqrt fegetenv namespace
+ [20785] libc: binutils 2.28 fails to assemble power6/memset.S file in
+ glibc
+ [20787] math: float_t is defined as float incorrectly on x86_64 even if
+ __FLT_EVAL_METHOD__ is 2
+ [20790] network: rpcgen buffer overrun in get_prog_declaration
+ [20822] nptl: race condition in __lll_unlock_elision on powerpc
+ [20829] libc: crypt snprintf namespace
+ [20847] libc: tst-vfork3 failure
+ [20855] math: Default bits/mathdef.h has inappropriate float_t
+ [20859] math: [sh4] FP_ILOGB0 invalid
+ [20864] localedata: iconv: cp936 missing single-byte euro sign (0x80,
+ U+20AC), not same as GBK
+ [20915] dynamic-link: global-dynamic TLS broken on aarch64
+ [20916] math: pow handling of sNaN arguments
+ [20918] build: Building with --enable-nss-crypt fails tst-linkall-static.
+ [20919] math: Bad pow (qNaN, 0) result with -lieee
+ [20940] math: hypot sNaN handling
+ [20947] math: fmax, fmin sNaN handling
+ [20956] libc: debug/tst-backtrace3-6 don't work with -O3 anymore
+ [20964] network: sunrpc: Stack-based buffer overflow in getrpcport with
+ RES_USE_INET6
+ [20971] string: powerpc64/power7 memchr overflows internal pointer check
+ [20973] nptl: robust mutexes: Lost wake-ups
+ [20974] locale: bs_BA: yesexpr/noexpr regexes accept any character
+ [20978] nis: strlen on null pointer in nss_nisplus
+ [20985] nptl: robust mutexes: lowlevelrobustlock assembly on x86 blocks on
+ wrong condition
+ [21014] string: i686 memchr overflows internal pointer check
+ [21019] libc: [mips] n32 lseek incorrect on overflow
+ [21022] libc: [microblaze] __backtrace get_frame_size namespace
+ [21026] libc: [MIPS] readahead syscall is broken on n64
+ [21028] math: Fallback fesetexceptflag should always succeed
+ [21045] libc: [powerpc-nofpu] swapcontext does not restore signal mask
+ [21047] math: arm: fpu_control.h: _FPU_GETCW/_FPU_SETCW is rejected by
+ clang
+ [21053] libc: [SH] Namespace pollution from sys/ucontext.h
+ [21061] librt: [microblaze] librt lost clock_* exports
+ [21073] libc: tunables: insecure environment variables passed to
+ subprocesses with AT_SECURE
+ [21081] string: Missing vzeroupper in memset-vec-unaligned-erms.S
\f
Version 2.24