]> git.ipfire.org Git - thirdparty/glibc.git/blame - NEWS
Reorganize and revise NEWS for 2.26.
[thirdparty/glibc.git] / NEWS
CommitLineData
ee9247c3 1GNU C Library NEWS -- history of user-visible changes.
bfff8b1b 2Copyright (C) 1992-2017 Free Software Foundation, Inc.
28f540f4
RM
3See the end for copying conditions.
4
d9814526 5Please send GNU C library bug reports via <http://sourceware.org/bugzilla/>
69be6aaf 6using `glibc' in the "product" field.
58557c22
SP
7\f
8Version 2.26
9
2b2ccd0c
ZW
10Major new features:
11
925fac77
MF
12* Unicode 10.0.0 Support: Character encoding, character type info, and
13 transliteration tables are all updated to Unicode 10.0.0, using
0b38d66a 14 generator scripts contributed by Mike FABIAN (Red Hat).
58557c22 15
2b2ccd0c
ZW
16* Collation of Hungarian has been overhauled and is now consistent with "The
17 Rules of Hungarian Orthography, 12th edition" (Bug 18934). Contributed by
18 Egmont Koblinger.
e4e79484 19
2b2ccd0c 20* Improvements to the DNS stub resolver, contributed by Florian Weimer:
025b33ae 21
2b2ccd0c
ZW
22 - glibc will now detect when /etc/resolv.conf has been modified and reload
23 the changed configuration. The new resolver option “no-reload”
24 (RES_NORELOAD) disables this behavior.
daeb1fa2 25
2b2ccd0c
ZW
26 - glibc now supports an arbitrary number of search domains (configured using
27 the “search” directive in /etc/resolv.conf); previously, there was a
28 hard limit of six domains. For backward compatibility, applications
29 that directly modify the ‘_res’ global object are still limited to six
30 search domains.
139ace95 31
2b2ccd0c
ZW
32 - When the “rotate” (RES_ROTATE) resolver option is active, glibc will now
33 randomly pick a name server from the configuration as a starting point.
34 (Previously, the second name server was always used.)
cd354a38 35
2b2ccd0c
ZW
36* The tunables feature is now enabled by default. This allows users to tweak
37 behavior of the GNU C Library using the GLIBC_TUNABLES environment variable.
d8cee557 38
2b2ccd0c
ZW
39* New function reallocarray, which resizes an allocated block (like realloc)
40 to the product of two sizes, with a guaranteed clean failure upon integer
41 overflow in the multiplication. Originally from OpenBSD, contributed by
42 Dennis Wölfing and Rüdiger Sonderfeld.
f0be25b6 43
2b2ccd0c
ZW
44* New wrappers for the Linux-specific system calls preadv2 and pwritev2.
45 These are extended versions of preadv and pwritev, respectively, taking an
46 additional flags argument. The set of supported flags depends on the
47 running kernel; full support currently requires kernel 4.7 or later.
8082d91e 48
2b2ccd0c
ZW
49* posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to
50 create a new session ID for the spawned process. This feature is
51 scheduled to be added to the next major revision of POSIX; for the time
52 being, it is available under _GNU_SOURCE.
2e0bbbfb 53
2b2ccd0c
ZW
54* errno.h is now safe to use from C-preprocessed assembly language on all
55 supported operating systems. In this context, it will only define the
56 Exxxx constants, as preprocessor macros expanding to integer literals.
12d2dd70 57
2b2ccd0c
ZW
58* On ia64, powerpc64le, x86-32, and x86-64, the math library now implements
59 128-bit floating point as defined by IEEE 60559:2011 and ISO/IEC TS
60 18661-3:2015. Support for more architectures will be added in future
61 releases. Contributed by Paul E. Murphy, Gabriel F. T. Gomes, and Tulio
62 Magno Quites Machado Filho.
2c0b90ab 63
2b2ccd0c
ZW
64 To compile programs that use this feature, the compiler must support
65 128-bit floating point with the type name _Float128 (as defined by
66 TS 18661-3) or __float128 (the nonstandard name used by GCC prior to
67 version 7).
f819dbea
PM
68
69 New <stdlib.h> functions from ISO/IEC TS 18661-3:
70
71 - String Conversion Functions: strfromf128 and strtof128.
72
73 New <math.h> features from ISO/IEC TS 18661-3:
74
75 - Very Large Number macro: HUGE_VAL_F128.
76
77 - Signaling NaN macro: SNANF128.
78
79 - Trigonometric Functions: acosf128, asinf128, atanf128, atan2f128,
80 cosf128, sinf128, tanf128.
81
82 - Hyperbolic Functions: acoshf128, asinhf128, atanhf128, coshf128,
83 sinhf128, tanhf128.
84
85 - Exponential and Logarithmic Functions: expf128, exp2f128, expm1f128,
86 frexpf128, ilogbf128, ldexpf128, llogbf128, logf128, log10f128,
87 log1pf128, log2f128, logbf128, modff128, scalbnf128, scalblnf128.
88
89 - Power and Absolute Functions: cbrtf128, fabsf128, hypotf128, powf128,
90 sqrtf128.
91
92 - Error and Gamma Functions: erff128, erfcf128, lgammaf128, tgammaf128.
93
94 - Nearest Integer Functions: ceilf128, floorf128, nearbyintf128,
95 rintf128, lrintf128, llrintf128, roundf128, lroundf128, llroundf128,
96 roundevenf128, truncf128, fromfpf128, ufromfpf128, fromfpxf128,
97 ufromfpxf128.
98
99 - Remainder Functions: fmodf128, remainderf128, remquof128.
100
101 - Manipulation Functions: copysignf128, nanf128, nextafterf128,
102 nextupf128, nextdownf128, canonicalizef128.
103
104 - Minimum, Maximum, and Positive Difference Functions: fdimf128,
105 fmaxf128, fminf128, fmaxmagf128, fminmagf128.
106
107 - Floating Multiply-Add Function: fmaf128.
108
109 - Total Order Functions: totalorderf128, totalordermagf128.
110
111 - Payload Functions: getpayloadf128, setpayloadf128, setpayloadsigf128.
112
113 New <complex.h> functions from ISO/IEC TS 18661-3:
114
115 - Trigonometric Functions: cacosf128, casinf128, catanf128, ccosf128,
116 csinf128, ctanf128.
117
118 - Hyperbolic Functions: cacoshf128, casinhf128, catanhf128, ccoshf128,
119 csinhf128, ctanhf128.
120
121 - Exponential and Logarithmic Functions: cexpf128, clogf128.
122
123 - Power and Absolute Functions: cabsf128, cpowf128, csqrtf128.
124
125 - Manipulation Functions: cargf128, cimagf128, CMPLXF128, conjf128,
126 cprojf128, crealf128.
127
128 The following <wchar.h> functions are added as GNU extensions:
129
130 - Wide String Conversion Functions: wsctof128, wcstof128_l.
131
132 The following <stdlib.h> function is added as a GNU extension:
133
134 - String Conversion Function: strtof128_l.
135
136 The following <math.h> features are added as GNU extensions:
137
138 - Predefined Mathematical Constants: M_Ef128, M_LOG2Ef128,
139 M_LOG10Ef128, M_LN2f128, M_LN10f128, M_PIf128, M_PI_2f128,
140 M_PI_4f128, M_1_PIf128, M_2_PIf128, M_2_SQRTPIf128, M_SQRT2f128,
141 M_SQRT1_2f128.
142
143 - Trigonometric Function: sincosf128.
144
145 - Exponential and Logarithmic Function: exp10f128.
146
147 - Error and Gamma Function: lgammaf128_r.
148
149 - Bessel Functions: j0f128, j1f128, jnf128, y0f128, y1f128, ynf128.
150
151 The following <complex.h> function is added as a GNU extension:
152
153 - Exponential and Logarithmic Function: clog10f128.
154
2b2ccd0c
ZW
155Deprecated and removed features, and other changes affecting compatibility:
156
157* The synchronization that pthread_spin_unlock performs has been changed to
158 now be equivalent to a C11 atomic store with release memory order to the
159 spin lock's memory location. Previously, several (but not all)
160 architectures used stronger synchronization (e.g., containing what is
161 often called a full barrier). This change can improve performance, but
162 may affect odd fringe uses of spin locks that depend on the previous
163 behavior (e.g., using spin locks as atomic variables to try to implement
164 Dekker's mutual exclusion algorithm).
165
166* The port to Native Client running on ARMv7-A (--host=arm-nacl) has been
167 removed.
168
169* Sun RPC is deprecated. The rpcgen program, librpcsvc, and Sun RPC headers
170 will only be built and installed when glibc is configured with
171 --enable-obsolete-rpc. This allows alternative RPC implementations, such
172 as TIRPC or rpcsvc-proto, to be used.
173
174* The NIS(+) name service modules, libnss_nis, libnss_nisplus, and
175 libnss_compat, are deprecated, and will not be built or installed by
176 default.
177
178 The NIS(+) support library, libnsl, is also deprecated. By default, a
179 compatibility shared library will be built and installed, but not headers
180 or development libraries. Only a few NIS-related programs require this
181 library. (In particular, glibc has never required programs that use
182 'gethostbyname' to be linked with libnsl.)
183
184 Replacement implementations based on TIRPC, which additionally support
185 IPv6, are available from <https://github.com/thkukuk/>. The configure
186 option --enable-obsolete-nsl will cause libnsl's headers, and the NIS(+)
187 name service modules, to be built and installed.
188
189* The DNS stub resolver no longer performs EDNS fallback. If EDNS or DNSSEC
190 support is enabled, the configured recursive resolver must support EDNS.
191 (Responding to EDNS-enabled queries with responses which are not
192 EDNS-enabled is fine, but FORMERR responses are not.)
193
194* res_mkquery and res_nmkquery no longer support the IQUERY opcode. DNS
195 servers have not supported this opcode for a long time.
5b757a51 196
6781d8e6
FW
197* The _res_opcodes variable has been removed from libresolv. It had been
198 exported by accident.
199
2b2ccd0c
ZW
200* <string.h> no longer includes inline versions of any string functions,
201 as this kind of optimization is better done by the compiler. The macros
202 __USE_STRING_INLINES and __NO_STRING_INLINES no longer have any effect.
203
204* The nonstandard header <xlocale.h> has been removed. Most programs should
205 use <locale.h> instead. If you have a specific need for the definition of
206 locale_t with no other declarations, please contact
207 libc-alpha@sourceware.org and explain.
208
209* The obsolete header <sys/ultrasound.h> has been removed.
210
211* The obsolete signal constant SIGUNUSED is no longer defined by <signal.h>.
212
213* The obsolete function cfree has been removed. Applications should use
214 free instead.
215
216* The stack_t type no longer has the name struct sigaltstack. This changes
217 the C++ name mangling for interfaces involving this type.
218
219* The ucontext_t type no longer has the name struct ucontext. This changes
220 the C++ name mangling for interfaces involving this type.
221
222* On M68k GNU/Linux and MIPS GNU/Linux, the fpregset_t type no longer has
223 the name struct fpregset. On Nios II GNU/Linux, the mcontext_t type no
224 longer has the name struct mcontext. On SPARC GNU/Linux, the struct
225 mc_fq, struct rwindow, struct fpq and struct fq types are no longer
226 defined in sys/ucontext.h, the mc_fpu_t type no longer has the name struct
227 mc_fpu, the gwindows_t type no longer has the name struct gwindows and the
228 fpregset_t type no longer has the name struct fpu. This changes the C++
229 name mangling for interfaces involving those types.
230
231* On S/390 GNU/Linux, the constants defined by <sys/ptrace.h> have been
232 synced with the kernel:
233
234 - PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS and PTRACE_SETFPREGS
235 are not supported on this architecture and have been removed.
236
237 - PTRACE_SINGLEBLOCK, PTRACE_SECCOMP_GET_FILTER, PTRACE_PEEKUSR_AREA,
238 PTRACE_POKEUSR_AREA, PTRACE_GET_LAST_BREAK, PTRACE_ENABLE_TE,
239 PTRACE_DISABLE_TE and PTRACE_TE_ABORT_RAND have been added.
240
241 Programs that assume the GET/SETREGS ptrace requests are universally
242 available will now fail to build, instead of malfunctioning at runtime.
243
244Changes to build and runtime requirements:
245
246* Linux kernel 3.2 or later is required at runtime, on all architectures
247 supported by that kernel. (This is a change from version 2.25 only for
248 x86-32 and x86-64.)
249
250* GNU Binutils 2.25 or later is now required to build glibc.
251
252* On most architectures, GCC 4.9 or later is required to build glibc. On
253 powerpc64le, GCC 6.2 or later is required.
254
255 Older GCC versions and non-GNU compilers are still supported when
256 compiling programs that use glibc. (We do not know exactly how old,
257 and some GNU extensions to C may be _de facto_ required. If you are
258 interested in helping us make this statement less vague, please
259 contact libc-alpha@sourceware.org.)
aef16cc8 260
58557c22
SP
261Security related changes:
262
e14a2772
FW
263* The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes,
264 to avoid fragmentation-based spoofing attacks.
58557c22
SP
265
266The following bugs are resolved with this release:
267
268 [The release manager will add the list generated by
269 scripts/list-fixed-bugs.py just before the release.]
270
d5b396c1 271\f
e720d3d9
CD
272Version 2.25
273
48789000
JM
274* The feature test macro __STDC_WANT_LIB_EXT2__, from ISO/IEC TR
275 24731-2:2010, is supported to enable declarations of functions from that
276 TR. Note that not all functions from that TR are supported by the GNU C
277 Library.
e720d3d9 278
bf91be88
JM
279* The feature test macro __STDC_WANT_IEC_60559_BFP_EXT__, from ISO/IEC TS
280 18661-1:2014, is supported to enable declarations of functions and macros
a5ac5676 281 from that TS. Note that not all features from that TS are supported by
bf91be88
JM
282 the GNU C Library.
283
412cb261
JM
284* The feature test macro __STDC_WANT_IEC_60559_FUNCS_EXT__, from ISO/IEC TS
285 18661-4:2015, is supported to enable declarations of functions and macros
286 from that TS. Note that most features from that TS are not supported by
287 the GNU C Library.
288
c0307377
ZW
289* The nonstandard feature selection macros _REENTRANT and _THREAD_SAFE are
290 now treated as compatibility synonyms for _POSIX_C_SOURCE=199506L.
291 Since the GNU C Library defaults to a much newer revision of POSIX, this
292 will only affect programs that specifically request an old conformance
293 mode. For instance, a program compiled with -std=c89 -D_REENTRANT will
294 see a change in the visible declarations, but a program compiled with
295 just -D_REENTRANT, or -std=c99 -D_POSIX_C_SOURCE=200809L -D_REENTRANT,
296 will not.
297
298 Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
299 defined by all multithreaded code, but glibc has not required this for
300 many years.
301
dbab6577
ZW
302* The inclusion of <sys/sysmacros.h> by <sys/types.h> is deprecated. This
303 means that in a future release, the macros “major”, “minor”, and “makedev”
304 will only be available from <sys/sysmacros.h>.
305
306 These macros are not part of POSIX nor XSI, and their names frequently
307 collide with user code; see for instance glibc bug 19239 and Red Hat bug
308 130601. <stdlib.h> includes <sys/types.h> under _GNU_SOURCE, and C++ code
309 presently cannot avoid being compiled under _GNU_SOURCE, exacerbating the
310 problem.
311
ec94343f 312* New <fenv.h> features from TS 18661-1:2014 are added to libm: the
c0b43536
JM
313 fesetexcept, fetestexceptflag, fegetmode and fesetmode functions, the
314 femode_t type and the FE_DFL_MODE and FE_SNANS_ALWAYS_SIGNAL macros.
5146356f 315
a292f45a
JM
316* Integer width macros from TS 18661-1:2014 are added to <limits.h>:
317 CHAR_WIDTH, SCHAR_WIDTH, UCHAR_WIDTH, SHRT_WIDTH, USHRT_WIDTH, INT_WIDTH,
5b17fd0d
JM
318 UINT_WIDTH, LONG_WIDTH, ULONG_WIDTH, LLONG_WIDTH, ULLONG_WIDTH; and to
319 <stdint.h>: INT8_WIDTH, UINT8_WIDTH, INT16_WIDTH, UINT16_WIDTH,
320 INT32_WIDTH, UINT32_WIDTH, INT64_WIDTH, UINT64_WIDTH, INT_LEAST8_WIDTH,
321 UINT_LEAST8_WIDTH, INT_LEAST16_WIDTH, UINT_LEAST16_WIDTH,
322 INT_LEAST32_WIDTH, UINT_LEAST32_WIDTH, INT_LEAST64_WIDTH,
323 UINT_LEAST64_WIDTH, INT_FAST8_WIDTH, UINT_FAST8_WIDTH, INT_FAST16_WIDTH,
324 UINT_FAST16_WIDTH, INT_FAST32_WIDTH, UINT_FAST32_WIDTH, INT_FAST64_WIDTH,
325 UINT_FAST64_WIDTH, INTPTR_WIDTH, UINTPTR_WIDTH, INTMAX_WIDTH,
326 UINTMAX_WIDTH, PTRDIFF_WIDTH, SIG_ATOMIC_WIDTH, SIZE_WIDTH, WCHAR_WIDTH,
327 WINT_WIDTH.
a292f45a 328
d942e95c
JM
329* New <math.h> features are added from TS 18661-1:2014:
330
f82a4bdb
JM
331 - Signaling NaN macros: SNANF, SNAN, SNANL.
332
423c2b9d
JM
333 - Nearest integer functions: roundeven, roundevenf, roundevenl, fromfp,
334 fromfpf, fromfpl, ufromfp, ufromfpf, ufromfpl, fromfpx, fromfpxf,
335 fromfpxl, ufromfpx, ufromfpxf, ufromfpxl.
41c67149 336
55a38f82
JM
337 - llogb functions: the llogb, llogbf and llogbl functions, and the
338 FP_LLOGB0 and FP_LLOGBNAN macros.
339
525f8039
JM
340 - Max-min magnitude functions: fmaxmag, fmaxmagf, fmaxmagl, fminmag,
341 fminmagf, fminmagl.
342
1e7c8fcc
JM
343 - Comparison macros: iseqsig.
344
29cb9293 345 - Classification macros: iscanonical, issubnormal, iszero.
d942e95c 346
cc6a8d74
JM
347 - Total order functions: totalorder, totalorderf, totalorderl,
348 totalordermag, totalordermagf, totalordermagl.
5e9d98a3 349
eaf5ad0b
JM
350 - Canonicalize functions: canonicalize, canonicalizef, canonicalizel.
351
eb3c12c7 352 - NaN functions: getpayload, getpayloadf, getpayloadl, setpayload,
457663a7 353 setpayloadf, setpayloadl, setpayloadsig, setpayloadsigf, setpayloadsigl.
f8e8b8ed 354
f3b904d9
JM
355* The functions strfromd, strfromf, and strfroml, from ISO/IEC TS 18661-1:2014,
356 are added to libc. They convert a floating-point number into string.
357
cecbc796
NA
358* Most of glibc can now be built with the stack smashing protector enabled.
359 It is recommended to build glibc with --enable-stack-protector=strong.
360 Implemented by Nick Alcock (Oracle).
361
ea1bd74d
ZW
362* The function explicit_bzero, from OpenBSD, has been added to libc. It is
363 intended to be used instead of memset() to erase sensitive data after use;
364 the compiler will not optimize out calls to explicit_bzero even if they
365 are "unnecessary" (in the sense that no _correct_ program can observe the
366 effects of the memory clear).
367
b0216d3e
JM
368* On ColdFire, MicroBlaze, Nios II and SH3, the float_t type is now defined
369 to float instead of double. This does not affect the ABI of any libraries
370 that are part of the GNU C Library, but may affect the ABI of other
371 libraries that use this type in their interfaces.
372
f3b904d9
JM
373* On x86_64, when compiling with -mfpmath=387 or -mfpmath=sse+387, the
374 float_t and double_t types are now defined to long double instead of float
375 and double. These options are not the default, and this does not affect
376 the ABI of any libraries that are part of the GNU C Library, but it may
377 affect the ABI of other libraries that use this type in their interfaces,
378 if they are compiled or used with those options.
6962682f 379
92dcaa3e
FW
380* The getentropy and getrandom functions, and the <sys/random.h> header file
381 have been added.
382
705a79f8
FW
383* The buffer size for byte-oriented stdio streams is now limited to 8192
384 bytes by default. Previously, on Linux, the default buffer size on most
385 file systems was 4096 bytes (and thus remains unchanged), except on
386 network file systems, where the buffer size was unpredictable and could be
387 as large as several megabytes.
388
4d728087
FW
389* The <sys/quota.h> header now includes the <linux/quota.h> header. Support
390 for the Linux quota interface which predates kernel version 2.4.22 has
391 been removed.
392
e863cce5
FW
393* The malloc_get_state and malloc_set_state functions have been removed.
394 Already-existing binaries that dynamically link to these functions will
395 get a hidden implementation in which malloc_get_state is a stub. As far
396 as we know, these functions are used only by GNU Emacs and this change
397 will not adversely affect already-built Emacs executables. Any undumped
398 Emacs executables, which normally exist only during an Emacs build, should
399 be rebuilt by re-running “./configure; make” in the Emacs build tree.
400
7ec47a85
FW
401* The “ip6-dotint” and “no-ip6-dotint” resolver options, and the
402 corresponding RES_NOIP6DOTINT flag from <resolv.h> have been removed.
403 “no-ip6-dotint” had already been the default, and support for the
404 “ip6-dotint” option was removed from the Internet in 2006.
405
099191b1 406* The "ip6-bytestring" resolver option and the corresponding RES_USEBSTRING
5140d036
FW
407 flag from <resolv.h> have been removed. The option relied on a
408 backwards-incompatible DNS extension which was never deployed on the
409 Internet.
410
bbe989ee
FW
411* The flags RES_AAONLY, RES_PRIMARY, RES_NOCHECKNAME, RES_KEEPTSIG,
412 RES_BLAST defined in the <resolv.h> header file have been deprecated.
413 They were already unimplemented.
bfbd1de1 414
b76e0659
FW
415* The "inet6" option in /etc/resolv.conf and the RES_USE_INET6 flag for
416 _res.flags are deprecated. The flag was standardized in RFC 2133, but
417 removed again from the IETF name lookup interface specification in RFC
418 2553. Applications should use getaddrinfo instead.
419
3a2a1d2c
FW
420* DNSSEC-related declarations and definitions have been removed from the
421 <arpa/nameser.h> header file, and libresolv will no longer attempt to
422 decode the data part of DNSSEC record types. Previous versions of glibc
423 only implemented minimal support for the previous version of DNSSEC, which
424 is incompatible with the currently deployed version.
425
be728303
FW
426* The resource record type classification macros ns_t_qt_p, ns_t_mrr_p,
427 ns_t_rr_p, ns_t_udp_p, ns_t_xfr_p have been removed from the
428 <arpa/nameser.h> header file because the distinction between RR types and
429 meta-RR types is not officially standardized, subject to revision, and
430 thus not suitable for encoding in a macro.
431
6815a33d
FW
432* The types res_sendhookact, res_send_qhook, re_send_rhook, and the qhook
433 and rhook members of the res_state type in <resolv.h> have been removed.
434 The glibc stub resolver did not support these hooks, but the header file
435 did not reflect that.
436
022dfdce
SL
437* For multi-arch support it is recommended to use a GCC which has
438 been built with support for GNU indirect functions. This ensures
439 that correct debugging information is generated for functions
440 selected by IFUNC resolvers. This support can either be enabled by
441 configuring GCC with '--enable-gnu-indirect-function', or by
442 enabling it by default by setting 'default_gnu_indirect_function'
443 variable for a particular architecture in the GCC source file
444 'gcc/config.gcc'.
445
23b5cae1
MG
446* GDB pretty printers have been added for mutex and condition variable
447 structures in POSIX Threads. When installed and loaded in gdb these pretty
448 printers show various pthread variables in human-readable form when read
449 using the 'print' or 'display' commands in gdb.
450
7715d3ab
SP
451* Tunables feature added to allow tweaking of the runtime for an application
452 program. This feature can be enabled with the '--enable-tunables' configure
453 flag. The GNU C Library manual has details on usage and README.tunables has
454 instructions on adding new tunables to the library.
455
0cea3587
SP
456* A new version of condition variables functions have been implemented in
457 the NPTL implementation of POSIX Threads to provide stronger ordering
458 guarantees.
459
460* A new version of pthread_rwlock functions have been implemented to use a more
461 scalable algorithm primarily through not using a critical section anymore to
462 make state changes.
463
e720d3d9
CD
464Security related changes:
465
fc82b0a2 466* On ARM EABI (32-bit), generating a backtrace for execution contexts which
4d047efd
FW
467 have been created with makecontext could fail to terminate due to a
468 missing .cantunwind annotation. This has been observed to lead to a hang
469 (denial of service) in some Go applications compiled with gccgo. Reported
056dd72a 470 by Andreas Schwab. (CVE-2016-6323)
e720d3d9 471
fc82b0a2
FW
472* The DNS stub resolver functions would crash due to a NULL pointer
473 dereference when processing a query with a valid DNS question type which
474 was used internally in the implementation. The stub resolver now uses a
475 question type which is outside the range of valid question type values.
476 (CVE-2015-5180)
477
e720d3d9
CD
478The following bugs are resolved with this release:
479
4e054e6b
SP
480 [4099] stdio: Overly agressive caching by stream i/o functions.
481 [7065] build: Support building glibc with -fstack-protector or -fstack-
482 protector-all
483 [9842] localedata: en_CA: incorrect date format
484 [13165] nptl: pthread_cond_wait() can consume a signal that was sent
485 before it started waiting
486 [14139] manual: Do not hardcode platform names in manual/libm-err-tab.pl
487 [15765] nptl: sem_open is wrongly a cancellation point
488 [16421] network: IN6_IS_ADDR_UNSPECIFIED can use undefined s6_addr32
489 [16458] libc: endian.h and netinet/in.h byte order macros return values of
490 wrong type
491 [16628] dynamic-link: Segfault after a binary without pthread dlopen()s a
492 library linked with pthread
493 [16630] nptl: Use SYSENTER for pthread_cond_broadcast/signal() (i.e. fix
494 "FIXME: Ingo" issue)
495 [16907] libc: <argp.h> compiled with --std=cXX disables __attribute__
496 [17252] libc: getrandom and getentropy syscall
497 [17730] malloc: thread-local storage is sometimes improperly free()'d
498 after being __libc_memalign()'d
499 [18241] stdio: failed fseek on memstream does not set errno and can fail
500 when it shouldnt
501 [18243] nptl: sem_wait, sem_timedwait are cancellation points shm_open is
502 not
503 [18463] nptl: pthread_cond_broadcast issue when surrounded by
504 PTHREAD_PRIO_INHERIT mutex on ARM
505 [18784] network: res_query and related function crash for special record
506 type queries (CVE-2015-5180)
507 [19380] math: strtod does not raise "inexact"
508 [19387] string: Integer overflow in memchr
509 [19390] string: Integer overflow in strncat
510 [19398] build: linknamespace tests fail with massively parallel build
511 [19402] nptl: Deadlock with robust shared mutex and asynchronous
512 termination
513 [19469] malloc: M_PERTURB in test-skeleton.c invalidates malloc tests
514 [19473] malloc: Turn malloc_get_state etc. in compatibility symbols
515 [19514] libc: [PATCH] Fix spelling errors in spelling
516 "implement"/"implementation" in several places
517 [19582] network: Deprecate RES_USE_INET6
518 [19673] manual: clog10 docs appear to be erroneous
519 [19810] dynamic-link: dlopen with both RTLD_NOLOAD and RTLD_NODELETE
520 causes a segmentation fault
521 [19826] libc: invalid pointer returned from __tls_get_addr with static
522 linking
523 [20016] network: resolv: Remove hooks support from the API
524 [20019] dynamic-link: NULL pointer dereference in libc.so.6 IFUNC due to
525 uninitialized GOT
526 [20033] math: [x86_64] vectorized math function don't call the __finite
527 versions
528 [20116] nptl: use after free in pthread_create
529 [20181] stdio: open_memstream(): writes not at end of stream corrupt data
530 [20292] dynamic-link: Comparison in elf/dl-open.c _dl_addr_inside_object
531 is always true.
532 [20311] nptl: please install proc_service.h
533 [20366] libc: Compilation errors in installed headers in strict-compliance
534 modes
535 [20370] malloc: malloc: Arena free list management is still racy
536 (incorrect fix in bug 19243)
537 [20386] libc: assert (X = 0) does not result in GCC warning
538 [20432] malloc: malloc: Minimize interface required for interposition
539 [20435] libc: Missing unwind info in __startcontext causes infinite loop
540 in _Unwind_Backtrace (CVE-2016-6323)
541 [20444] hurd: recvmsg: PF_LOCAL sockets and msg_name lead to SIGLOST
542 [20452] nptl: Addition of sysdep.o to libpthread.a breaks relinking
543 libpthread.a
544 [20455] math: [powerpc] fesetexceptflag fails to clear FE_INVALID
545 [20459] localedata: et_EE: locale has wrong {p,n}_cs_precedes value
546 [20477] network: resolv: incorrect double-checked locking related to
547 _res_hconf
548 [20478] libc: libc_ifunc macro and similar usages leads to false debug-
549 information.
550 [20495] math: x86_64 performance degradation due to AVX/SSE transition
551 penalty
552 [20497] localedata: lt_LT: LC_TIME d_fmt used is obsolete
553 [20508] dynamic-link: _dl_runtime_resolve_avx/_dl_runtime_profile_avx512
554 cause transition penalty
555 [20517] math: sparcv9 missing fdiml compat symbol
556 [20524] manual: strverscmp is inconsistent
557 [20525] libc: <sys/quota.h> should be based on kernel headers
558 [20539] math: GCC 7 -static -lm fails to link at -O3
559 [20554] libc: ld: bss-plt forced due to /usr/lib/libc_nonshared.a(ppc-
560 mcount.oS)
561 [20558] string: POSIX bcopy/bzero decls do not implement Object Size
562 Checking
563 [20591] network: Remove obsolete DNSSEC support
564 [20592] network: DNS resource record type classification macros in
565 <arpa/nameser.h> are incorrect
566 [20593] network: Update DNS RR type definitions
567 [20611] network: getaddrinfo accepts invalid numeric scope IDs
568 [20615] build: glibc build fails when using --with-cpu=power9 --enable-
569 multi-arch
570 [20629] network: libresolv: Remove support for bitstring labels
571 (RES_USEBSTRING)
572 [20647] libc: GLIBC quitting every program - glibc on Pentium-S leads to
573 assertion: "maxidx >= 2"
574 [20660] math: [arm] Use VSQRT
575 [20662] libc: checking whether x86_64-pc-linux-gnu-gcc implicitly enables
576 -fstack-protector no (32bit gcc 6.2.0 pie and ssp enable)
577 [20689] libc: Test for FMA should also check for AVX.
578 [20707] glob: gl_pathv entries not set to NULL with GLOB_DOOFFS
579 [20715] math: iszero macro breaks existing code
580 [20718] math: [powerpc] copysignl raises "invalid" for sNaN
581 [20728] libc: powerpc: Missing TOC stub in clone
582 [20729] build: glibc-2.24 fails to build for i486 with -Os
583 [20750] build: Build fails with default PIE enabled gcc-6.x
584 [20768] math: [alpha] sqrt fegetenv namespace
585 [20785] libc: binutils 2.28 fails to assemble power6/memset.S file in
586 glibc
587 [20787] math: float_t is defined as float incorrectly on x86_64 even if
588 __FLT_EVAL_METHOD__ is 2
589 [20790] network: rpcgen buffer overrun in get_prog_declaration
590 [20822] nptl: race condition in __lll_unlock_elision on powerpc
591 [20829] libc: crypt snprintf namespace
592 [20847] libc: tst-vfork3 failure
593 [20855] math: Default bits/mathdef.h has inappropriate float_t
594 [20859] math: [sh4] FP_ILOGB0 invalid
595 [20864] localedata: iconv: cp936 missing single-byte euro sign (0x80,
596 U+20AC), not same as GBK
597 [20915] dynamic-link: global-dynamic TLS broken on aarch64
598 [20916] math: pow handling of sNaN arguments
599 [20918] build: Building with --enable-nss-crypt fails tst-linkall-static.
600 [20919] math: Bad pow (qNaN, 0) result with -lieee
601 [20940] math: hypot sNaN handling
602 [20947] math: fmax, fmin sNaN handling
603 [20956] libc: debug/tst-backtrace3-6 don't work with -O3 anymore
604 [20964] network: sunrpc: Stack-based buffer overflow in getrpcport with
605 RES_USE_INET6
606 [20971] string: powerpc64/power7 memchr overflows internal pointer check
607 [20973] nptl: robust mutexes: Lost wake-ups
608 [20974] locale: bs_BA: yesexpr/noexpr regexes accept any character
609 [20978] nis: strlen on null pointer in nss_nisplus
610 [20985] nptl: robust mutexes: lowlevelrobustlock assembly on x86 blocks on
611 wrong condition
612 [21014] string: i686 memchr overflows internal pointer check
613 [21019] libc: [mips] n32 lseek incorrect on overflow
614 [21022] libc: [microblaze] __backtrace get_frame_size namespace
615 [21026] libc: [MIPS] readahead syscall is broken on n64
616 [21028] math: Fallback fesetexceptflag should always succeed
617 [21045] libc: [powerpc-nofpu] swapcontext does not restore signal mask
618 [21047] math: arm: fpu_control.h: _FPU_GETCW/_FPU_SETCW is rejected by
619 clang
620 [21053] libc: [SH] Namespace pollution from sys/ucontext.h
621 [21061] librt: [microblaze] librt lost clock_* exports
622 [21073] libc: tunables: insecure environment variables passed to
623 subprocesses with AT_SECURE
624 [21081] string: Missing vzeroupper in memset-vec-unaligned-erms.S
e720d3d9 625\f
11fca961
AZ
626Version 2.24
627
5b4ecd3f
JM
628* The minimum Linux kernel version that this version of the GNU C Library
629 can be used with is 3.2, except on i[4567]86 and x86_64, where Linux
630 kernel version 2.6.32 or later suffices (on architectures that already
631 required kernel versions more recent than 3.2, those requirements remain
632 unchanged). Linux 3.2 or later kernel headers are required on all
633 architectures.
634
b6ebba70
MF
635* The pap_AN locale has been deleted. This has been deprecated for a long
636 time. It has been replaced by pap_AW & pap_CW, both of which have long
637 been included in previous releases.
11fca961 638
7584a3f9
FW
639* The readdir_r and readdir64_r functions have been deprecated. It is
640 recommended to use readdir and readdir64 instead.
641
b49ab5f4
FW
642* The type “union wait” has been removed. It was deprecated in the early
643 1990s and never part of POSIX. Application code should use the int type
644 instead of “union wait”.
645
ced8f893
SG
646* A new NSS action is added to facilitate large distributed system
647 administration. The action, MERGE, allows remote user stores like LDAP
648 to be merged into local user stores like /etc/groups in order to provide
649 easy to use, updated, and managed sets of merged credentials. The new
650 action can be used by configuring it in /etc/nsswitch.conf:
651 group: files [SUCCESS=merge] nis
652 Implemented by Stephen Gallagher (Red Hat).
653
2ba3cfa1
FW
654* The deprecated __malloc_initialize_hook variable has been removed from the
655 API.
656
b7a9b7b0
MF
657* The long unused localedef --old-style option has been removed. It hasn't
658 done anything in over 16 years. Scripts using this option can safely
659 drop it.
6a54bcda 660
41a359e2
RS
661* nextupl, nextup, nextupf, nextdownl, nextdown and nextdownf are added to
662 libm. They are defined by TS 18661 and IEEE754-2008. The nextup functions
663 return the next representable value in the direction of positive infinity
664 and the nextdown functions return the next representable value in the
665 direction of negative infinity. These are currently enabled as GNU
666 extensions.
667
11fca961
AZ
668Security related changes:
669
f5b3338d
FW
670* An unnecessary stack copy in _nss_dns_getnetbyname_r was removed. It
671 could result in a stack overflow when getnetbyname was called with an
672 overly long name. (CVE-2016-3075)
673
4ab2ab03
FW
674* Previously, getaddrinfo copied large amounts of address data to the stack,
675 even after the fix for CVE-2013-4458 has been applied, potentially
676 resulting in a stack overflow. getaddrinfo now uses a heap allocation
677 instead. Reported by Michael Petlan. (CVE-2016-3706)
11fca961 678
5171f307
FW
679* The glob function suffered from a stack-based buffer overflow when it was
680 called with the GLOB_ALTDIRFUNC flag and encountered a long file name.
681 Reported by Alexander Cherepanov. (CVE-2016-1234)
682
bc779a1a
FW
683* The Sun RPC UDP client could exhaust all available stack space when
684 flooded with crafted ICMP and UDP messages. Reported by Aldy Hernandez'
685 alloca plugin for GCC. (CVE-2016-4429)
686
fab38231
FW
687* The IPv6 name server management code in libresolv could result in a memory
688 leak for each thread which is created, performs a failing naming lookup,
689 and exits. Over time, this could result in a denial of service due to
690 memory exhaustion. Reported by Matthias Schiffer. (CVE-2016-5417)
691
11fca961
AZ
692The following bugs are resolved with this release:
693
3c4f81ec
CD
694 [1170] localedata: ne_NP: update Nepali locale definition file
695 [3629] manual: stpcpy description in string.texi refers to MS-DOG instead
696 of MS-DOS.
697 [6527] malloc: [powerpc] Malloc alignment insufficient for PowerPC
698 [6796] math: fdim() does not set errno on overflow
699 [10354] libc: posix_spawn should use vfork() in more cases than presently
700 [11213] localedata: localedata: add copyright disclaimer to locale files
701 [12143] localedata: chr_US: new Cherokee locale
702 [12450] localedata: sgs_LT: new locale
703 [12676] localedata: ln_CD: new locale
704 [13237] localedata: LC_ADDRESS.country_name: update all locales w/latest
705 CLDR data
706 [13304] math: fma, fmaf, fmal produce wrong results
707 [14259] build: --localedir arg to configure is ignored
708 [14499] nptl: Does posix_spawn invoke atfork handlers / use vfork?
709 [14750] libc: Race condition in posix_spawn vfork usage vs signal handlers
710 [14934] localedata: es_CL: wrong first weekday chilean locale
711 [15262] localedata: LC_MESSAGES.yesexpr/noexpr: inconsistent use of
712 romanisation
713 [15263] localedata: LC_MESSAGES.yesexpr/noexpr: inconsistent use of 1/0
714 and +/-
715 [15264] localedata: LC_MESSAGES.yesstr/nostr: lacking in many locales
716 [15368] nptl: raise() is not async-signal-safe
717 [15479] math: ceil, floor, round and trunc raise inexact exception
718 [15578] localedata: kk_KZ: various updates
719 [16003] localedata: pap_AN: punt old locale
720 [16137] localedata: iw_IL: punt old locale
721 [16190] localedata: eo: new esperanto locale
722 [16374] localedata: lv_LV: change currency symbol in LC_MONETARY to euro
723 [16742] malloc: race condition: pthread_atfork() called before first
724 malloc() results in unexpected locking behaviour/deadlocks
725 [16975] localedata: LC_MESSAGES.yesexpr/noexpr: revisit capitalization in
726 all locales
727 [16983] localedata: postal_fmt does not allow %l and %n modifiers
728 [17565] localedata: pt_PT: wrong (work-)week start
729 [17899] math: [powerpc] floorl returns negative zero with FE_DOWNWARD
730 [17950] build: Build fails with -msse
731 [18205] localedata: be_BY*: wrong first_weekday and first_workday
732 [18433] libc: posix_spawn does not return correctly upon failure to
733 execute
734 [18453] localedata: charmaps/IBM875: incorrect codes
735 [18712] string: bits/string2.h incompatible with -O2 -Werror=packed
736 -Wsystem-headers
737 [18896] localedata: he_IL: improvements for currency
738 [18911] localedata: ro_RO: Correcting week day name for "Tuesday" in
739 Romanian locale data
740 [18960] locale: s390: _nl_locale_subfreeres uses larl opcode on misaligned
741 symbol
742 [19056] libc: Deprecate readdir_r
743 [19133] localedata: pt_*: days & months should be lowercase in Portuguese
744 language
745 [19198] localedata: nl_NL: small improvements for Dutch locales
746 [19257] network: Per-thread memory leak in __res_vinit with IPv6
747 nameservers (CVE-2016-5417)
748 [19269] build: tst-audit4 and tst-audit10 failures with gcc-6 on non avx
749 machine
750 [19400] locale: Language missing in "iso-639.def", trivial fix in
751 description
752 [19431] malloc: Deadlock between fflush, getdelim, and fork
753 [19505] libc: Incorrect file descriptor validity checks in
754 posix_spawn_file_actions_add{open,close,dup2}
755 [19509] dynamic-link: dlsym, dlvsym do not report errors through dlerror
756 when using RTLD_NEXT
757 [19512] locale: Stale `#ifndef HAVE_BUILTIN_EXPECT' in
758 `intl/{gettextP,loadinfo}.h'
759 [19534] libc: execle, execlp may use malloc
760 [19568] localedata: *_CH: Swiss locales have inconsistent start of week
761 [19573] network: res_nclose and __res_maybe_init disagree about name
762 server initialization, breaking Hesiod
763 [19575] localedata: Status of GB18030 tables
764 [19581] localedata: sr_* date_fmt string contains additional newline
765 [19583] string: SSSE3_Fast_Copy_Backward flag needs to be enabled for AMD
766 Excavator core
767 [19592] math: [ldbl-128ibm] ceill incorrect in non-default rounding modes
768 [19593] math: [ldbl-128ibm] truncl incorrect in non-default rounding modes
769 [19594] math: [ldbl-128ibm] roundl incorrect in non-default rounding modes
770 [19595] math: [ldbl-128ibm] fmodl incorrect for results in subnormal
771 double range
772 [19602] math: [ldbl-128ibm] fmodl handling of equal arguments with low
773 part zero incorrect
774 [19603] math: [ldbl-128ibm] remainderl, remquol incorrect sign handling in
775 equality tests
776 [19610] dynamic-link: ldconfig -X removes stale symbolic links
777 [19613] libc: s390x (64 bit) macro expansion WCOREDUMP and others
778 [19633] locale: strfmon_l applies global locale to number formatting
779 [19642] network: Memory leak in getnameinfo
780 [19648] libc: test-skeleton.c: Do not set RLIMIT_DATA
781 [19653] libc: Potential for NULL pointer dereference (CWE-476) in
782 glibc-2.22
783 [19654] math: [x86_64] Need testcase for BZ #19590 fix
784 [19671] localedata: Missing Sanity Check for malloc() in 'tst-fmon.c' &
785 'tst-numeric.c'
786 [19674] math: [ldbl-128ibm] powl incorrect overflow handling
787 [19677] math: [ldbl-128ibm] remainderl equality test incorrect for zero
788 low part
789 [19678] math: [ldbl-128ibm] nextafterl, nexttowardl incorrect sign of zero
790 result
791 [19679] dynamic-link: gcc-4.9.3 C++ exception handling broken due to
792 unaligned stack
793 [19726] locale: Converting UCS4LE to INTERNAL with iconv() does not update
794 pointers and lengths in error-case.
795 [19727] locale: Converting from/to UTF-xx with iconv() does not always
796 report errors on UTF-16 surrogates values.
797 [19755] nscd: nscd assertion failure in gc
798 [19758] dynamic-link: Typo in EXTRA_LD_ENVVARS for x86-64
799 [19759] libc: mempcpy shouldn't be inlined
800 [19762] dynamic-link: HAS_CPU_FEATURE/HAS_ARCH_FEATURE are easy to misuse
801 [19765] libc: s390 needs an optimized mempcpy
802 [19779] glob: glob: buffer overflow with GLOB_ALTDIRFUNC due to incorrect
803 NAME_MAX limit assumption (CVE-2016-1234)
804 [19783] build: benchtests don't support --enable-hardcoded-path-in-tests
805 [19787] network: Missing and incorrect truncation checks in getnameinfo
806 [19790] math: [ldbl-128ibm] nearbyintl incorrect in non-default rounding
807 modes
808 [19791] network: Assertion failure in res_query.c with un-connectable name
809 server addresses
810 [19792] libc: MIPS: backtrace yields infinite backtrace with makecontext
811 [19822] math: libm.so install clobbers old version
812 [19825] network: resolv: send_vc can return uninitialized data in second
813 response to getaddrinfo
814 [19830] network: nss_dns: should check RDATA length against buffer length
815 [19831] network: nss_dns: getaddrinfo returns uninitialized data when
816 confronted with A/AAAA records of invalid size
817 [19837] nss: nss_db: No retries for some long lines with a larger buffer
818 [19848] math: powl(10,n) for n=-4,-5,-6,-7 is off by more than 1 ULP
819 [19853] stdio: Printing IBM long double in decimal with high precision is
820 sometimes incorrect
821 [19860] build: x86_64: compile errors for tst-audit10 and tst-auditmod10b
822 [19861] nptl: libpthread IFUNC resolver for fork can lead to crash
823 [19862] network: resolv, nss_dns: Remove remaining logging of unexpected
824 record types
825 [19865] network: Assertion failure or memory leak in
826 _nss_dns_getcanonname_r
827 [19868] network: nss_dns: netent code does not skip over non-PTR records
828 [19879] network: nss_dns: Stack overflow in getnetbyname implementation
829 (CVE-2016-3075)
830 [19881] string: Improve x86-64 memset
831 [19907] string: Incorrect memcpy tests
832 [19916] dynamic-link: S390: fprs/vrs are not saved/restored while
833 resolving symbols
834 [19925] libc: termios.h XCASE namespace
835 [19928] string: memmove-vec-unaligned-erms.S is slow with large data size
836 [19929] libc: limits.h NL_NMAX namespace
837 [19931] stdio: Memory leak in vfprintf
838 [19957] libc: clone(CLONE_VM) access invalid parent memory
839 [19963] localedata: en_IL: New locale
840 [19989] stdio: stdio.h cuserid namespace
841 [19994] network: getaddrinfo does not restore RES_USE_INET6 flag in
842 gethosts
843 [19996] locale: langinfo.h nl_langinfo_l namespace
844 [20005] stdio: fflush on a file opened with fmemopen resets position to 0
845 [20010] network: getaddrinfo: Stack overflow in hostent translation
846 (CVE-2016-3706)
847 [20012] stdio: libio: fmemopen append mode failure
848 [20014] stdio: stdio.h namespace for pre-threads POSIX
849 [20017] network: resolv: Use gmtime_r instead of gmtime in p_secstodate
850 [20023] libc: fcntl.h timespec namespace
851 [20024] math: [x86_64] vectorized sincos trashes the stack
852 [20031] network: nss_hesiod: Heap overflow in get_txt_records
853 [20041] time: sys/time.h timespec namespace
854 [20043] libc: unistd.h missing cuserid for UNIX98 and before
855 [20044] libc: unistd.h missing pthread_atfork for UNIX98
856 [20051] libc: ttyslot in wrong header under wrong conditions
857 [20054] libc: gethostname not declared for XPG4
858 [20055] libc: termios.h missing tcgetsid for XPG4
859 [20072] dynamic-link: x86 init_cpu_features is called twice in static
860 executable
861 [20073] libc: sys/stat.h fchmod namespace
862 [20074] libc: stdlib.h rand_r namespace
863 [20076] libc: sys/stat.h missing S_IFSOCK, S_ISSOCK for XPG4
864 [20094] libc: stdlib.h should not declare grantpt, ptsname, unlockpt for
865 XPG3
866 [20111] libc: struct sockaddr_storage cannot be aggregate-copied
867 [20112] network: sunrpc: stack (frame) overflow in Sun RPC clntudp_call
868 (CVE-2016-4429)
869 [20115] string: Extra alignment in memset-vec-unaligned-erms.S
870 [20119] libc: Wrong mask for processors level type from CPUID
871 [20139] dynamic-link: Upper part of zmm is zeroed if Glibc is built with
872 AS not supporting AVX512
873 [20151] math: [ldbl-128/ldbl-128ibm] j0l, j1l, y0l, y1l return sNaN for
874 sNaN argument
875 [20153] math: [ldbl-128ibm] sqrtl (sNaN) returns sNaN
876 [20156] math: [ldbl-128ibm] ceill, rintl etc. return sNaN for sNaN
877 argument
878 [20157] math: [powerpc] fabsl (sNaN) wrongly raises "invalid"
879 [20160] math: [powerpc] ceil, rint etc. return sNaN for sNaN input
880 [20178] libc: posix_spawn{p} should not call exit
881 [20191] stdio: libio: vtables hardening
882 [20195] string: FMA4 detection requires CPUID execution with register
883 eax=0x80000001
884 [20198] libc: quick_exit incorrectly destroys C++11 thread objects.
885 [20205] math: [i386/x86_64] nextafterl incorrect incrementing negative
886 subnormals
887 [20212] math: acos (sNaN) returns sNaN
888 [20213] math: asin (sNaN) returns sNaN
889 [20214] network: Linux header sync with linux/in6.h and ipv6.h again.
890 [20218] math: [i386] asinhl (sNaN) returns sNaN
891 [20219] math: [i386] atanhl (sNaN) returns sNaN
892 [20222] stdio: fopencookie: Mangle function pointers
893 [20224] math: [i386] cbrtl (sNaN) returns sNaN
894 [20225] math: ldexp, scalbn, scalbln return sNaN for sNaN input
895 [20226] math: [i386/x86_64] expl, exp10l, expm1l return sNaN for sNaN
896 input
897 [20227] math: [i386/x86_64] logl (sNaN) returns sNaN
898 [20228] math: [i386/x86_64] log10l (sNaN) returns sNaN
899 [20229] math: [i386/x86_64] log1pl (sNaN) returns sNaN
900 [20232] math: [ldbl-128] expm1l (sNaN) returns sNaN
901 [20233] math: [ldbl-128ibm] expm1l (sNaN) returns sNaN
902 [20234] math: [ldbl-128ibm] log1pl (sNaN) returns sNaN
903 [20235] math: [i386/x86_64] log2l (sNaN) returns sNaN
904 [20237] nss: nss_db: get*ent segfaults without preceding set*ent
905 [20240] math: modf (sNaN) returns sNaN
906 [20248] libc: debug/tst-longjump_chk2 calls printf from a signal handler
907 [20250] math: frexp (sNaN) returns sNaN
908 [20252] math: atan2 (sNaN, qNaN) fails to raise "invalid"
909 [20255] math: [i386] fdim, fdimf return with excess range and precision /
910 double rounding
911 [20256] math: [i386/x86_64] fdiml returns sNaN for sNaN input
912 [20260] string: ../sysdeps/x86/bits/string.h:1092:3: error: array
913 subscript is below array bounds [-Werror=array-bounds]
914 [20262] nis: _nss_nis_initgroups_dyn always returns NSS_STATUS_NOTFOUND
915 [20263] nptl: robust mutex deadlocks if other thread requests timedlock
916 (Only arm/linux)
917 [20277] libc: $dp is not initialized correctly in sysdeps/hppa/start.S
918 [20284] malloc: malloc: Corrupt arena avoidance causes unnecessary mmap
919 fallbacks
920 [20296] math: [i386/x86_64] scalbl returns sNaN for sNaN input, missing
921 "invalid" exceptions
922 [20314] nptl: make[4]: *** [/usr/include/stdlib.h] Error 1
923 [20316] localedata: id_ID: Februari instead of Pebruari
924 [20327] string: POWER8 strcasecmp returns incorrect result
925 [20347] math: Failure: Test: j0_downward (0xap+0)
926 [20348] libc: FAIL: misc/tst-preadvwritev64
927 [20349] libc: 64-bit value is passed differently in p{readv,writev}{64}
928 [20350] libc: There is no test for p{read,write}64
929 [20357] math: Incorrect cos result for 1.5174239687223976
930 [20384] build: Don't run libmvec-sincos-avx* tests on non avx machines
11fca961 931\f
aeb47bbc
DM
932Version 2.23
933
23256f5e
MF
934* Unicode 8.0.0 Support: Character encoding, character type info, and
935 transliteration tables are all updated to Unicode 8.0.0, using new
936 and/or improved generator scripts contributed by Mike FABIAN (Red Hat).
937 These updates cause user visible changes, such as the fixes for bugs
938 89, 16061, and 18568.
939
2359035a
FW
940* sched_setaffinity, pthread_setaffinity_np no longer attempt to guess the
941 kernel-internal CPU set size. This means that requests that change the
942 CPU affinity which failed before (for example, an all-ones CPU mask) will
943 now succeed. Applications that need to determine the effective CPU
944 affinities need to call sched_getaffinity or pthread_getaffinity_np after
945 setting it because the kernel can adjust it (and the previous size check
946 would not detect this in the majority of cases).
947
8b7b7f75
MW
948* The fts.h header can now be used with -D_FILE_OFFSET_BITS=64. With LFS
949 the following new symbols are used: fts64_children, fts64_close,
950 fts64_open, fts64_read and fts64_set.
951
2eecc8af
FW
952* getaddrinfo now detects certain invalid responses on an internal netlink
953 socket. If such responses are received, an affected process will
954 terminate with an error message of "Unexpected error <number> on netlink
955 descriptor <number>" or "Unexpected netlink response of size <number> on
956 descriptor <number>". The most likely cause for these errors is a
957 multi-threaded application which erroneously closes and reuses the netlink
958 file descriptor while it is used by getaddrinfo.
959
a62719ba
FW
960* A defect in the malloc implementation, present since glibc 2.15 (2012) or
961 glibc 2.10 via --enable-experimental-malloc (2009), could result in the
962 unnecessary serialization of memory allocation requests across threads.
963 The defect is now corrected. Users should see a substantial increase in
964 the concurent throughput of allocation requests for applications which
de51ff8c 965 trigger this bug. Affected applications typically create and
a62719ba
FW
966 destroy threads frequently. (Bug 19048 was reported and analyzed by
967 Ericsson.)
a014cecd 968
bc148ca1
MF
969* There is now a --disable-timezone-tools configure option for disabling the
970 building and installing of the timezone related utilities (zic, zdump, and
971 tzselect). This is useful for people who build the timezone data and code
972 independent of the GNU C Library.
973
1c70b6f1
ZW
974* The obsolete header <regexp.h> has been removed. Programs that require
975 this header must be updated to use <regex.h> instead.
1efad39b 976
eed3e1eb
JM
977* The obsolete functions bdflush, create_module, get_kernel_syms,
978 query_module and uselib are no longer available to newly linked binaries;
979 the header <sys/kdaemon.h> has been removed. These functions and header
980 were specific to systems using the Linux kernel and could not usefully be
981 used with the GNU C Library on systems with version 2.6 or later of the
982 Linux kernel.
983
1efad39b
SL
984* Optimized string, wcsmbs and memory functions for IBM z13.
985 Implemented by Stefan Liebler.
b08b4218 986
d709042a
JM
987* Newly linked programs that define a variable called signgam will no longer
988 have it set by the lgamma, lgammaf and lgammal functions. Programs that
989 require signgam to be set by those functions must ensure that they use the
990 variable provided by the GNU C Library and declared in <math.h>, without
991 defining their own copy.
992
b08b4218
JM
993* The minimum GCC version that can be used to build this version of the GNU
994 C Library is GCC 4.7. Older GCC versions, and non-GNU compilers, can
995 still be used to compile programs using the GNU C Library.
f268ab5f 996
8f5e8b01
JM
997Security related changes:
998
6400ae6e
FW
999* An out-of-bounds value in a broken-out struct tm argument to strftime no
1000 longer causes a crash. Reported by Adam Nielsen. (CVE-2015-8776)
1001
1002* The LD_POINTER_GUARD environment variable can no longer be used to disable
1003 the pointer guard feature. It is always enabled. Previously,
1004 LD_POINTER_GUARD could be used to disable security hardening in binaries
1005 running in privileged AT_SECURE mode. Reported by Hector Marco-Gisbert.
1006 (CVE-2015-8777)
1007
1008* An integer overflow in hcreate and hcreate_r could lead to an
1009 out-of-bounds memory access. Reported by Szabolcs Nagy. (CVE-2015-8778)
1010
1011* The catopen function no longer has unbounded stack usage. Reported by
1012 Max. (CVE-2015-8779)
1013
8f5e8b01
JM
1014* The nan, nanf and nanl functions no longer have unbounded stack usage
1015 depending on the length of the string passed as an argument to the
6400ae6e 1016 functions. Reported by Joseph Myers. (CVE-2014-9761)
8f5e8b01 1017
e9db92d3
CD
1018* A stack-based buffer overflow was found in libresolv when invoked from
1019 libnss_dns, allowing specially crafted DNS responses to seize control
1020 of execution flow in the DNS client. The buffer overflow occurs in
1021 the functions send_dg (send datagram) and send_vc (send TCP) for the
1022 NSS module libnss_dns.so.2 when calling getaddrinfo with AF_UNSPEC
1023 family. The use of AF_UNSPEC triggers the low-level resolver code to
1024 send out two parallel queries for A and AAAA. A mismanagement of the
1025 buffers used for those queries could result in the response of a query
1026 writing beyond the alloca allocated buffer created by
1027 _nss_dns_gethostbyname4_r. Buffer management is simplified to remove
1028 the overflow. Thanks to the Google Security Team and Red Hat for
1029 reporting the security impact of this issue, and Robert Holiday of
1030 Ciena for reporting the related bug 18665. (CVE-2015-7547)
1031
ad372e29 1032The following bugs are resolved with this release:
f268ab5f 1033
ad372e29
AZ
1034 [89] localedata: Locales nb_NO and nn_NO should transliterate æøå
1035 [887] math: Math library function "logb" and "nextafter" inconsistent
1036 [2542] math: Incorrect return from float gamma (-0X1.FA471547C2FE5P+1)
1037 [2543] math: Incorrect return from float gamma (-0X1.9260DCP+1)
1038 [2558] math: Incorrect return from double gamma (-0X1.FA471547C2FE5P+1)
1039 [2898] libc: [improve] warning: the use of `mktemp' is dangerous, better
1040 use `mkstemp'
1041 [4404] localedata: German translation of "Alarm clock" is misleading
1042 [6799] math: nextafter() and nexttoward() doen't set errno on
1043 overflow/underflow errors
1044 [6803] math: scalb(), scalbln(), scalbn() do not set errno on
1045 overflow/underflow
1046 [10432] nis: _nss_nis_setnetgrent assertion failure
1047 [11460] libc: fts has no LFS support
1048 [12926] network: getaddrinfo()/make_request() may spin forever
1049 [13065] nptl: Race condition in pthread barriers
1050 [13690] nptl: pthread_mutex_unlock potentially cause invalid access
1051 [14341] dynamic-link: Dynamic linker crash when DT_JMPREL and DT_REL{,A}
1052 are not contiguous
1053 [14551] math: [ldbl-128ibm] strtold overflow handling for IBM long double
1054 [14912] libc: Rename non-installed bits/*.h headers
1055 [15002] libc: Avoid undefined behavior in posix_fallocate overflow check
1056 [15367] math: Let gcc use __builtin_isinf
1057 [15384] math: One constant fewer in ieee754/dbl-64/wordsize-64/s_finite.c
1058 [15421] math: lgamma wrongly sets signgam for ISO C
1059 [15470] math: [arm] On ARM llrintl() and llroundl() do not raise
1060 FE_INVALID with argument out of range
1061 [15491] math: [i386/x86_64] x86 nearbyint implementations wrongly clear
1062 all exceptions
1063 [15786] dynamic-link: ifunc resolver functions can smash function
1064 arguments
1065 [15918] math: Unnecessary check for equality in hypotf()
1066 [16061] localedata: Review / update transliteration data
1067 [16068] math: [i386/x86_64] x86 and x86_64 fesetenv exclude state they
1068 should include
1069 [16141] time: strptime %z offset restriction
1070 [16171] math: drem should be alias of remainder
1071 [16296] math: fegetround is pure?
1072 [16347] math: [ldbl-128ibm] ldbl-128/e_lgammal_r.c may not be suitable.
1073 [16364] libc: sleep may leave SIGCHLD blocked on sync cancellation on
1074 GNU/Linux
1075 [16399] math: [mips] lrint / llrint / lround / llround missing exceptions
1076 [16415] math: Clean up ldbl-128 / ldbl-128ibm expm1l for large positive
1077 arguments
1078 [16422] math: [powerpc] math-float, math-double failing llrint tests with
1079 "Exception "Inexact" set" on ppc32
1080 [16495] localedata: nl_NL: date_fmt: shuffle year/month around
1081 [16517] math: Missing underflow exception from tanf/tan/tanl
1082 [16519] math: Missing underflow exception from sinhf
1083 [16520] math: Missing underflow exception from tanhf
1084 [16521] math: Missing underflow exception from exp2
1085 [16620] math: [ldbl-128ibm] exp10l spurious overflows / bad directed
1086 rounding results
1087 [16734] stdio: fopen calls mmap to allocate its buffer
1088 [16961] math: nan function incorrect handling of bad sequences
1089 [16962] math: nan function unbounded stack allocation (CVE-2014-9761)
1090 [16973] localedata: Fix lang_lib/lang_term as per ISO 639-2
1091 [16985] locale: localedef: confusing error message when opening output
1092 fails
1093 [17118] math: ctanh(INFINITY + 2 * I) returns incorrect value
1094 [17197] locale: Redundant shift character in iconv conversion output at
1095 block boundary
1096 [17243] libc: trunk/posix/execl.c:53: va_args problem ?
1097 [17244] libc: trunk/sysdeps/unix/sysv/linux/semctl.c:116: va_args muxup ?
1098 [17250] dynamic-link: static linking breaks nss loading
1099 (getaddrinfo/getpwnam/etc...)
1100 [17404] libc: atomic_exchange_rel lacking a barrier on MIPS16, GCC before
1101 4.7?
1102 [17441] math: isnan() should use __builtin_isnan() in GCC
1103 [17514] nptl: Assert failure unlocking ERRORCHECK mutex after timedlock
1104 (related to lock elision)
1105 [17787] manual: Exponent on page 324 of the PDF ends prematurely
1106 [17886] time: strptime should be able to parse "Z" as a timezone with %z
1107 [17887] time: strptime should be able to parse "+01:00" style timezones
1108 [17905] libc: catopen() Multiple unbounded stack allocations
1109 (CVE-2015-8779)
1110 [18084] libc: backtrace (..., 0) dumps core on x86
1111 [18086] libc: nice() sets errno to 0 on success
1112 [18240] libc: hcreate, hcreate_r should fail with ENOMEM if element count
1113 is too large (CVE-2015-8778)
1114 [18251] dynamic-link: SONAME missing when audit modules provides path
1115 [18265] libc: add attributes for wchar string and memory functions
1116 [18370] math: csqrt missing underflows
1117 [18421] libc: [hppa] read-only segment has dynamic relocations
1118 [18472] libc: Obsolete syscall wrappers should be compat symbols
1119 [18480] libc: hppa glibc miscompilation in sched_setaffinity()
1120 [18491] localedata: Update tr_TR LC_CTYPE as part of Unicode updates
1121 [18525] localedata: Remove locale timezone information
1122 [18560] libc: [powerpc] spurious bits/ipc.h definitions
1123 [18568] localedata: Update locale data to Unicode 8.0
1124 [18589] locale: sort-test.sh fails at random
1125 [18595] math: ctan, ctanh missing underflows
1126 [18604] libc: assert macro-expands its argument
1127 [18610] math: S390: fetestexcept() reports any exception if DXC-code
1128 contains a vector instruction exception.
1129 [18611] math: j1, jn missing errno setting on underflow
1130 [18618] localedata: sync Chechen locale definitions with other *_RU
1131 locales
1132 [18647] math: powf(-0x1.000002p0, 0x1p30) returns 0 instead of +inf
1133 [18661] libc: Some x86-64 assembly codes don't align stack to 16 bytes
1134 [18665] network: In send_dg, the recvfrom function is NOT always using the
1135 buffer size of a newly created buffer (CVE-2015-7547)
1136 [18674] libc: [i386] trunk/sysdeps/i386/tst-auditmod3b.c:84: possible
1137 missing break ?
1138 [18675] libc: fpathconf(_PC_NAME_MAX) fails against large filesystems for
1139 32bit processes
1140 [18681] libc: regexp.h is obsolete and buggy, and should be desupported
1141 [18699] math: tilegx cproj() for various complex infinities does not yield
1142 infinity
1143 [18724] libc: Harden put*ent functions against data injection
1144 [18743] nptl: PowerPC: findutils testcase fails with --enable-lock-elision
1145 [18755] build: build errors with -DNDEBUG
1146 [18757] stdio: fmemopen fails to set errno on failure
1147 [18778] dynamic-link: ld.so crashes if failed dlopen causes libpthread to
1148 be forced unloaded
1149 [18781] libc: openat64 lacks O_LARGEFILE
1150 [18787] libc: [hppa] sysdeps/unix/sysv/linux/hppa/bits/atomic.h:71:6:
1151 error: can’t find a register in class ‘R1_REGS’ while reloading ‘asm’
1152 [18789] math: [ldbl-128ibm] sinhl inaccurate near 0
1153 [18790] math: [ldbl-128ibm] tanhl inaccurate
1154 [18795] libc: stpncpy fortification misses buffer lengths that are
1155 statically too large
1156 [18796] build: build fails for --disable-mathvec
1157 [18803] math: hypot missing underflows
1158 [18820] stdio: fmemopen may leak memory on failure
1159 [18823] math: csqrt spurious underflows
1160 [18824] math: fma spurious underflows
1161 [18825] math: pow missing underflows
1162 [18857] math: [ldbl-128ibm] nearbyintl wrongly uses signaling comparisons
1163 [18868] nptl: pthread_barrier_init typo has in-theory-undefined behavior
1164 [18870] build: sem_open.c fails to compile with missing symbol
1165 FUTEX_SHARED
1166 [18872] stdio: Fix memory leak in printf_positional
1167 [18873] libc: posix_fallocate overflow check ineffective
1168 [18875] math: Excess precision leads incorrect libm
1169 [18877] libc: arm: mmap offset regression
1170 [18887] libc: memory corruption when using getmntent on blank lines
1171 [18918] localedata: hu_HU: change time to HH:MM:SS format
1172 [18921] libc: Regression: extraneous stat() and fstat() performed by
1173 opendir()
1174 [18928] dynamic-link: LD_POINTER_GUARD is not ignored for privileged
1175 binaries (CVE-2015-8777)
1176 [18951] math: tgamma missing underflows
1177 [18952] math: [ldbl-128/ldbl-128ibm] lgammal spurious "invalid", incorrect
1178 signgam
1179 [18953] localedata: lt_LT: change currency symbol to the euro
1180 [18956] math: powf inaccuracy
1181 [18961] math: [i386] exp missing underflows
1182 [18966] math: [i386] exp10 missing underflows
1183 [18967] math: math.h XSI POSIX namespace (gamma, isnan, scalb)
1184 [18969] build: multiple string test failures due to missing locale
1185 dependencies
1186 [18970] libc: Reference of pthread_setcancelstate in libc.a
1187 [18977] math: float / long double Bessel functions not in XSI POSIX
1188 [18980] math: i386 libm functions return with excess range and precision
1189 [18981] math: i386 scalb*, ldexp return with excess range and precision
1190 [18982] stdio: va_list and vprintf
1191 [18985] time: Passing out of range data to strftime() causes a segfault
1192 (CVE-2015-8776)
1193 [19003] math: [x86_64] fma4 version of pow inappropriate contraction
1194 [19007] libc: FAIL: elf/check-localplt with -z now and binutils 2.26
1195 [19012] locale: iconv_open leaks memory on error path
1196 [19016] math: clog, clog10 inaccuracy
1197 [19018] nptl: Mangle function pointers in tls_dtor_list
1198 [19032] math: [i386] acosh (-qNaN) spurious "invalid" exception
1199 [19046] math: ldbl-128 / ldbl-128ibm lgamma bad overflow handling
1200 [19048] malloc: malloc: arena free list can become cyclic, increasing
1201 contention
1202 [19049] math: [powerpc] erfc incorrect zero sign
1203 [19050] math: [powerpc] log* incorrect zero sign
1204 [19058] math: [x86_64] Link fail with -fopenmp and -flto
1205 [19059] math: nexttoward overflow incorrect in non-default rounding modes
1206 [19071] math: ldbl-96 lroundl incorrect just below powers of 2
1207 [19074] network: Data race in _res_hconf_reorder_addrs
1208 [19076] math: [ldbl-128ibm] log1pl (-1) wrong sign of infinity
1209 [19077] math: [ldbl-128ibm] logl (1) incorrect sign of zero result
1210 [19078] math: [ldbl-128ibm] expl overflow incorrect in non-default
1211 rounding modes
1212 [19079] math: dbl-64/wordsize-64 lround based on llround incorrect for
1213 ILP32
1214 [19085] math: ldbl-128 lrintl, lroundl missing exceptions for 32-bit long
1215 [19086] manual: posix_fallocate64 documented argument order is wrong.
1216 [19088] math: lround, llround missing exceptions close to overflow
1217 threshold
1218 [19094] math: lrint, llrint missing exceptions close to overflow threshold
1219 [19095] math: dbl-64 lrint incorrect for 64-bit long
1220 [19122] dynamic-link: Unnecessary PLT relocations in librtld.os
1221 [19124] dynamic-link: ld.so failed to build with older assmebler
1222 [19125] math: [powerpc32] llroundf, llround incorrect exceptions
1223 [19129] dynamic-link: [arm] Concurrent lazy TLSDESC resolution can crash
1224 [19134] math: [powerpc32] lround, lroundf spurious exceptions
1225 [19137] libc: i386/epoll_pwait.S doesn't support cancellation
1226 [19143] nptl: Remove CPU set size checking from sched_setaffinity,
1227 pthread_setaffinity_np
1228 [19156] math: [ldbl-128] j0l spurious underflows
1229 [19164] nptl: tst-getcpu fails with many possible CPUs
1230 [19168] math: math/test-ildoubl and math/test-ldouble failure
1231 [19174] nptl: PowerPC: TLE enabled pthread mutex performs poorly.
1232 [19178] dynamic-link: ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA confuses
1233 prelink
1234 [19181] math: [i386/x86_64] fesetenv (FE_DFL_ENV), fesetenv
1235 (FE_NOMASK_ENV) do not clear SSE exceptions
1236 [19182] malloc: malloc deadlock between ptmalloc_lock_all and
1237 _int_new_arena/reused_arena
1238 [19189] math: [ldbl-128] log1pl (-qNaN) spurious "invalid" exception
1239 [19201] math: dbl-64 remainder incorrect sign of zero result
1240 [19205] math: bits/math-finite.h conditions do not match math.h and
1241 bits/mathcalls.h
1242 [19209] math: bits/math-finite.h wrongly maps ldexp to scalbn
1243 [19211] math: lgamma functions do not set signgam for -ffinite-math-only
1244 for C99-based standards
1245 [19212] libc: features.h not -Wundef clean
1246 [19213] math: [i386/x86_64] log* (1) incorrect zero sign for -ffinite-
1247 math-only
1248 [19214] libc: Family and model identification for AMD CPU's are incorrect.
1249 [19219] libc: GLIBC build fails for ia64 with missing __nearbyintl
1250 [19228] math: [powerpc] nearbyint wrongly clears "inexact", leaves traps
1251 disabled
1252 [19235] math: [powerpc64] lround, lroundf, llround, llroundf spurious
1253 "inexact" exceptions
1254 [19238] math: [powerpc] round, roundf spurious "inexact" for integer
1255 arguments
1256 [19242] libc: strtol incorrect in Turkish locales
1257 [19243] malloc: reused_arena can pick an arena on the free list, leading
1258 to an assertion failure and reference count corruption
1259 [19253] time: tzset() ineffective when temporary TZ did not include DST
1260 rules
1261 [19266] math: strtod ("NAN(I)") incorrect in Turkish locales
1262 [19270] math: [hppa] Shared libm missing __isnanl
1263 [19285] libc: [hppa] sysdeps/unix/sysv/linux/hppa/bits/mman.h: missing
1264 MAP_HUGETLB and MAP_STACK defines
1265 [19313] nptl: Wrong __cpu_mask for x32
1266 [19347] libc: grantpt: try to force a specific gid even without pt_chown
1267 [19349] math: [ldbl-128ibm] tanhl inaccurate for small arguments
1268 [19350] math: [ldbl-128ibm] sinhl spurious overflows
1269 [19351] math: [ldbl-128ibm] logl inaccurate near 1
1270 [19363] time: x32: times() return value wrongly truncates/sign extends
1271 from 32bit
1272 [19367] dynamic-link: Improve branch prediction on Silvermont
1273 [19369] network: Default domain name not reset by res_ninit when "search"
1274 / "domain" entry is removed from resolv.conf
1275 [19375] math: powerpc: incorrect results for POWER7 logb with negative
1276 subnormals
1277 [19385] localedata: bg_BG: time separator should be colon, not comma
1278 [19408] libc: linux personality syscall wrapper may erroneously return an
1279 error on 32-bit architectures
1280 [19415] libc: dladdr returns wrong names on hppa
1281 [19432] libc: iconv rejects redundant escape sequences in IBM900, IBM903,
1282 IBM905, IBM907, and IBM909
1283 [19439] math: Unix98 isinf and isnan functions conflict with C++11
1284 [19443] build: build failures with -DDEBUG
1285 [19451] build: Make check fails on test-double-vlen2
1286 [19462] libc: Glibc failed to build with -Os
1287 [19465] math: Wrong code with -Os
1288 [19466] time: time/tst-mktime2.c is compiled into an infinite loop with
1289 -Os
1290 [19467] string: Fast_Unaligned_Load needs to be enabled for Excavator core
1291 CPU's.
1292 [19475] libc: Glibc 2.22 doesn't build on sparc [PATCH]
1293 [19486] math: S390: Math tests fail with "Exception Inexact set".
1294 [19529] libc: [ARM]: FAIL: stdlib/tst-makecontext
1295 [19550] libc: [mips] mmap negative offset handling inconsistent with other
1296 architectures
1297 [19590] math: Fail to build shared objects that use libmvec.so functions.
aeb47bbc 1298\f
1c7a4a51
JM
1299Version 2.22
1300
1301* The following bugs are resolved with this release:
1302
3df5cd98 1303 438, 2981, 4719, 6544, 6792, 11216, 12836, 13028, 13064, 13151, 13152,
0e569d30
MF
1304 14094, 14113, 14292, 14841, 14906, 14958, 15319, 15467, 15790, 15969,
1305 16159, 16339, 16350, 16351, 16352, 16353, 16361, 16512, 16526, 16538,
1306 16559, 16560, 16704, 16783, 16850, 17053, 17090, 17195, 17269, 17293,
1307 17322, 17403, 17475, 17523, 17542, 17569, 17581, 17588, 17596, 17620,
1308 17621, 17628, 17631, 17692, 17711, 17715, 17776, 17779, 17792, 17833,
1309 17836, 17841, 17912, 17916, 17930, 17932, 17944, 17949, 17964, 17965,
1310 17967, 17969, 17977, 17978, 17987, 17991, 17996, 17998, 17999, 18007,
1311 18019, 18020, 18029, 18030, 18032, 18034, 18036, 18038, 18039, 18042,
1312 18043, 18046, 18047, 18049, 18068, 18078, 18080, 18093, 18100, 18104,
1313 18110, 18111, 18116, 18125, 18128, 18134, 18138, 18185, 18196, 18197,
1314 18206, 18210, 18211, 18217, 18219, 18220, 18221, 18234, 18244, 18245,
1315 18247, 18287, 18319, 18324, 18333, 18346, 18371, 18383, 18397, 18400,
1316 18409, 18410, 18412, 18418, 18422, 18434, 18444, 18457, 18468, 18469,
1317 18470, 18479, 18483, 18495, 18496, 18497, 18498, 18502, 18507, 18508,
1318 18512, 18513, 18519, 18520, 18522, 18527, 18528, 18529, 18530, 18532,
1319 18533, 18534, 18536, 18539, 18540, 18542, 18544, 18545, 18546, 18547,
1320 18549, 18553, 18557, 18558, 18569, 18583, 18585, 18586, 18592, 18593,
6fdd5d65
FW
1321 18594, 18602, 18612, 18613, 18619, 18633, 18635, 18641, 18643, 18648,
1322 18657, 18676, 18694, 18696, 18887.
2959eda9 1323
f7fba805
SL
1324* Cache information can be queried via sysconf() function on s390 e.g. with
1325 _SC_LEVEL1_ICACHE_SIZE as argument.
1326
2959eda9
AS
1327* A buffer overflow in gethostbyname_r and related functions performing DNS
1328 requests has been fixed. If the NSS functions were called with a
1329 misaligned buffer, the buffer length change due to pointer alignment was
1330 not taken into account. This could result in application crashes or,
1331 potentially arbitrary code execution, using crafted, but syntactically
1332 valid DNS responses. (CVE-2015-1781)
4a4839c9 1333
42261ad7
FW
1334* The time zone file parser has been made more robust against crafted time
1335 zone files, avoiding heap buffer overflows related to the processing of
1336 the tzh_ttisstdcnt and tzh_ttisgmtcnt fields, and a stack overflow due to
1337 large time zone data files. Overly long time zone specifiers in the TZ
1338 variable no longer result in stack overflows and crashes.
1339
afcd9480
AM
1340* A powerpc and powerpc64 optimization for TLS, similar to TLS descriptors
1341 for LD and GD on x86 and x86-64, has been implemented. You will need
1342 binutils-2.24 or later to enable this optimization.
1343
4a4839c9
AO
1344* Character encoding and ctype tables were updated to Unicode 7.0.0, using
1345 new generator scripts contributed by Pravin Satpute and Mike FABIAN (Red
1346 Hat). These updates cause user visible changes, such as the fix for bug
1347 17998.
1348
b13b96ca
AS
1349* CVE-2014-8121 The NSS backends shared internal state between the getXXent
1350 and getXXbyYY NSS calls for the same database, causing a denial-of-service
1351 condition in some applications.
21933112
AS
1352
1353* Added vector math library named libmvec with the following vectorized x86_64
a6336cc4
AS
1354 implementations: cos, cosf, sin, sinf, sincos, sincosf, log, logf, exp, expf,
1355 pow, powf.
21933112
AS
1356 The library can be disabled with --disable-mathvec. Use of the functions is
1357 enabled with -fopenmp -ffast-math starting from -O1 for GCC version >= 4.9.0.
037e4b99
AS
1358 Shared library libmvec.so is linked in as needed when using -lm (no need to
1359 specify -lmvec explicitly for not static builds).
21933112 1360 Visit <https://sourceware.org/glibc/wiki/libmvec> for detailed information.
fdb7d390
AZ
1361
1362* A new fmemopen implementation has been added with the goal of POSIX
1363 compliance. The new implementation fixes the following long-standing
1364 issues: BZ#6544, BZ#11216, BZ#12836, BZ#13151, BZ#13152, and BZ#14292. The
1365 old implementation is still present for use be by existing binaries.
7fde904c
MF
1366
1367* The 32-bit sparc sigaction ABI was inadvertently broken in the 2.20 and 2.21
1368 releases. It has been fixed to match 2.19 and older, but binaries built
1369 against 2.20 and 2.21 might need to be recompiled. See BZ#18694.
7493ab25
RM
1370
1371* Port to Native Client running on ARMv7-A (--host=arm-nacl).
1372 Contributed by Roland McGrath (Google).
2ec11c2b
ZW
1373
1374* The header <regexp.h> is deprecated, and will be removed in a future
1375 release. Use of this header will trigger a deprecation warning.
1376 Application developers should update their code to use <regex.h> instead.
1377
a03ba363 1378 This header was formerly part of SUS, but was deprecated in 1994 and
2ec11c2b
ZW
1379 removed from the standard in 2001. Also, the glibc implementation
1380 leaks memory. See BZ#18681 for more details.
1c7a4a51 1381\f
58b930ae
SP
1382Version 2.21
1383
1384* The following bugs are resolved with this release:
1385
042e1521 1386 6652, 10672, 12674, 12847, 12926, 13862, 14132, 14138, 14171, 14498,
5bd80bfe
PP
1387 15215, 15378, 15884, 16009, 16418, 16191, 16469, 16576, 16617, 16618,
1388 16619, 16657, 16740, 16857, 17192, 17266, 17273, 17344, 17363, 17370,
1389 17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555,
1390 17570, 17571, 17572, 17573, 17574, 17582, 17583, 17584, 17585, 17589,
1391 17594, 17601, 17608, 17616, 17625, 17630, 17633, 17634, 17635, 17647,
1392 17653, 17657, 17658, 17664, 17665, 17668, 17682, 17702, 17717, 17719,
1393 17722, 17723, 17724, 17725, 17732, 17733, 17744, 17745, 17746, 17747,
1394 17748, 17775, 17777, 17780, 17781, 17782, 17791, 17793, 17796, 17797,
1395 17801, 17803, 17806, 17834, 17844, 17848, 17868, 17869, 17870, 17885,
1396 17892.
1397
46d54873
FW
1398* CVE-2015-1472 CVE-2015-1473 Under certain conditions wscanf can allocate
1399 too little memory for the to-be-scanned arguments and overflow the
1400 allocated buffer. The implementation now correctly computes the required
1401 buffer size when using malloc, and switches to malloc from alloca as
1402 intended.
042e1521
CD
1403
1404* A new semaphore algorithm has been implemented in generic C code for all
1405 machines. Previous custom assembly implementations of semaphore were
1406 difficult to reason about or ensure that they were safe. The new version
1407 of semaphore supports machines with 64-bit or 32-bit atomic operations.
1408 The new semaphore algorithm is used by sem_init, sem_open, sem_post,
1409 sem_wait, sem_timedwait, sem_trywait, and sem_getvalue.
a39208bd 1410
522e6ee3
CLT
1411* Port to Altera Nios II has been contributed by Mentor Graphics.
1412
d3b00f46
AZ
1413* Optimized strcpy, stpcpy, strncpy, stpncpy, strcmp, and strncmp
1414 implementations for powerpc64/powerpc64le.
8bedcb5f 1415 Implemented by Adhemerval Zanella (IBM).
96d6fd6c 1416
8d2c0a59
AZ
1417* Added support for TSX lock elision of pthread mutexes on powerpc32, powerpc64
1418 and powerpc64le. This may improve lock scaling of existing programs on
1419 HTM capable systems. The lock elision code is only enabled with
1420 --enable-lock-elision=yes. Also, the TSX lock elision implementation for
1421 powerpc will issue a transaction abort on every syscall to avoid side
1422 effects being visible outside transactions.
1423
dc400d7b
RE
1424* Optimized strcpy, stpcpy, strchrnul and strrchr implementations for
1425 AArch64. Contributed by ARM Ltd.
ec582ca0 1426
0f9dfe04
L
1427* i386 memcpy functions optimized with SSE2 unaligned load/store.
1428
a39208bd
CD
1429* CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
1430 under certain input conditions resulting in the execution of a shell for
ebda2f17 1431 command substitution when the application did not request it. The
a39208bd
CD
1432 implementation now checks WRDE_NOCMD immediately before executing the
1433 shell and returns the error WRDE_CMDSUB as expected.
fb89b46d 1434
a5357b7c
JL
1435* CVE-2012-3406 printf-style functions could run into a stack overflow when
1436 processing format strings with a large number of format specifiers.
1437
e54db0ea
AM
1438* CVE-2014-9402 The nss_dns implementation of getnetbyname could run into an
1439 infinite loop if the DNS response contained a PTR record of an unexpected
1440 format.
11e3417a 1441
4863355a
JM
1442* The minimum GCC version that can be used to build this version of the GNU
1443 C Library is GCC 4.6. Older GCC versions, and non-GNU compilers, can
1444 still be used to compile programs using the GNU C Library.
1445
a4ecc9eb
JM
1446* The GNU C Library is now built with -Werror by default. This can be
1447 disabled by configuring with --disable-werror.
1448
0d560bbf 1449* New locales: tu_IN, bh_IN, raj_IN, ce_RU.
0781a777
RM
1450
1451* The obsolete sigvec function has been removed. This was the original
1452 4.2BSD interface that inspired the POSIX.1 sigaction interface, which
1453 programs have been using instead for about 25 years. Of course, ABI
1454 compatibility for old binaries using sigvec remains intact.
6d248857
WN
1455
1456* Merged gettext 0.19.3 into the intl subdirectory. This fixes building
1457 with newer versions of bison.
28c38448
MF
1458
1459* Support for MIPS o32 FPXX, FP64A and FP64 ABI Extensions.
1460 The original MIPS o32 hard-float ABI requires an FPU where double-precision
1461 registers overlay two consecutive single-precision registers. MIPS32R2
1462 introduced a new FPU mode (FR=1) where double-precision registers extend the
1463 corresponding single-precision registers which is incompatible with the
1464 o32 hard-float ABI. The MIPS SIMD ASE and the MIPSR6 architecture both
1465 require the use of FR=1 making a transition necessary. New o32 ABI
1466 extensions enable users to migrate over time from the original o32 ABI
1467 through to the updated o32 FP64 ABI. To achieve this the dynamic linker now
1468 tracks the ABI of any loaded object and verifies that new objects are
1469 compatible. Mode transitions will also be requested as required and
1470 unsupportable objects will be rejected. The ABI checks include both soft and
1471 hard float ABIs for o32, n32 and n64.
1472
1473 GCC 5 with GNU binutils 2.25 onwards:
1474 It is strongly recommended that all o32 system libraries are built using the
1475 new o32 FPXX ABI (-mfpxx) to facilitate the transition as this is compatible
1476 with the original and all new o32 ABI extensions. Configure a MIPS GCC
1477 compiler using --with-fp-32=xx to set this by default.
58b930ae 1478\f
d5b396c1
AM
1479Version 2.20
1480
1481* The following bugs are resolved with this release:
1482
6a9350c8
JM
1483 6804, 9894, 11505, 12994, 13347, 13651, 14308, 14770, 15119, 15132, 15347,
1484 15514, 15698, 15804, 15894, 15946, 16002, 16064, 16095, 16194, 16198,
1485 16275, 16284, 16287, 16315, 16348, 16349, 16354, 16357, 16362, 16447,
1486 16516, 16532, 16539, 16545, 16561, 16562, 16564, 16574, 16599, 16600,
1487 16609, 16610, 16611, 16613, 16619, 16623, 16629, 16632, 16634, 16639,
1488 16642, 16648, 16649, 16670, 16674, 16677, 16680, 16681, 16683, 16689,
1489 16695, 16701, 16706, 16707, 16712, 16713, 16714, 16724, 16731, 16739,
1490 16740, 16743, 16754, 16758, 16759, 16760, 16770, 16786, 16789, 16791,
1491 16796, 16799, 16800, 16815, 16823, 16824, 16831, 16838, 16839, 16849,
1492 16854, 16876, 16877, 16878, 16882, 16885, 16888, 16890, 16892, 16912,
1493 16915, 16916, 16917, 16918, 16922, 16927, 16928, 16932, 16943, 16958,
1494 16965, 16966, 16967, 16977, 16978, 16984, 16990, 16996, 17009, 17022,
1495 17031, 17042, 17048, 17050, 17058, 17061, 17062, 17069, 17075, 17078,
1496 17079, 17084, 17086, 17088, 17092, 17097, 17125, 17135, 17137, 17150,
1497 17153, 17187, 17213, 17259, 17261, 17262, 17263, 17319, 17325, 17354.
0961f7e1 1498
95ee7fb1
SL
1499* Reverted change of ABI data structures for s390 and s390x:
1500 On s390 and s390x the size of struct ucontext and jmp_buf was increased in
1501 2.19. This change is reverted in 2.20. The introduced 2.19 symbol versions
1502 of getcontext, setjmp, _setjmp, __sigsetjmp, longjmp, _longjmp, siglongjmp
1503 are preserved pointing straight to the same implementation as the old ones.
45ef6628 1504 Given that, new callers will simply provide a too-big buffer to these
95ee7fb1
SL
1505 functions. Any applications/libraries out there that embed jmp_buf or
1506 ucontext_t in an ABI-relevant data structure that have already been rebuilt
1507 against 2.19 headers will have to rebuilt again. This is necessary in any
1508 case to revert the breakage in their ABI caused by the glibc change.
1509
0961f7e1
JL
1510* Support for file description locks is added to systems running the
1511 Linux kernel. The standard file locking interfaces are extended to
1512 operate on file descriptions, not file descriptors, via the use of
1513 F_OFD_GETLK, F_OFD_SETLK, and F_OFD_SETLKW. File description locks
1514 are associated with an open file instead of a process.
f3d338c9 1515
f940b965
RE
1516* Optimized strchr implementation for AArch64. Contributed by ARM Ltd.
1517
d0f5b3f8
JM
1518* The minimum Linux kernel version that this version of the GNU C Library
1519 can be used with is 2.6.32.
1520
d6fe5e58
JM
1521* Running the testsuite no longer terminates as soon as a test fails.
1522 Instead, a file tests.sum (xtests.sum from "make xcheck") is generated,
1523 with PASS or FAIL lines for individual tests. A summary of the results is
1524 printed, including a list of failing lists, and "make check" exits with
1525 error status if there were any unexpected failures. "make check
1526 stop-on-test-failure=y" may be used to keep the old behavior.
1527
464263cc
JM
1528* The am33 port, which had not worked for several years, has been removed
1529 from ports.
c941736c
JM
1530
1531* The _BSD_SOURCE and _SVID_SOURCE feature test macros are no longer
1532 supported; they now act the same as _DEFAULT_SOURCE (but generate a
1533 warning). Except for cases where _BSD_SOURCE enabled BSD interfaces that
1534 conflicted with POSIX (support for which was removed in 2.19), the
1535 interfaces those macros enabled remain available when compiling with
1536 _GNU_SOURCE defined, with _DEFAULT_SOURCE defined, or without any feature
1537 test macros defined.
f63c86fe
WN
1538
1539* Optimized strcmp implementation for ARMv7. Contributed by ARM Ltd.
5a414ff7
DV
1540
1541* Added support for TX lock elision of pthread mutexes on s390 and s390x.
1542 This may improve lock scaling of existing programs on TX capable systems.
1543 The lock elision code is only built with --enable-lock-elision=yes and
1544 then requires a GCC version supporting the TX builtins. With lock elision
1545 default mutexes are elided via __builtin_tbegin, if the cpu supports
1546 transactions. By default lock elision is not enabled and the elision code
1547 is not built.
d03efb2f
AM
1548
1549* CVE-2014-4043 The posix_spawn_file_actions_addopen implementation did not
1550 copy the path argument. This allowed programs to cause posix_spawn to
1551 deference a dangling pointer, or use an unexpected pathname argument if
1552 the string was modified after the posix_spawn_file_actions_addopen
1553 invocation.
cfd2ea50
JM
1554
1555* All supported architectures now use the main glibc sysdeps directory
1556 instead of some being in a separate "ports" directory (which was
1557 distributed separately before glibc 2.17).
f083450f
RM
1558
1559* The NPTL implementation of POSIX pthreads is no longer an "add-on".
1560 On configurations that support it (all Linux configurations), it's now
1561 used regardless of the --enable-add-ons switch to configure. It is no
1562 longer possible to build such configurations without pthreads support.
4e8f95a0
FW
1563
1564* Locale names, including those obtained from environment variables (LANG
1565 and the LC_* variables), are more tightly checked for proper syntax.
1566 setlocale will now fail (with EINVAL) for locale names that are overly
1567 long, contain slashes without starting with a slash, or contain ".." path
1568 components. (CVE-2014-0475) Previously, some valid locale names were
1569 silently replaced with the "C" locale when running in AT_SECURE mode
1570 (e.g., in a SUID program). This is no longer necessary because of the
1571 additional checks.
9a8a5720
RM
1572
1573* On x86-64, the dynamic linker's lazy-binding support is now compatible
1574 with application code using Intel MPX instructions. (With all previous
1575 versions, the MPX register state could be clobbered when making calls
1576 into or out of a shared library.) Note that while the new dynamic
1577 linker is compatible with all known x86 hardware whether or not it
1578 supports Intel MPX, some x86 instruction-set emulators might fail to
1579 handle the new instruction encodings. This is known to affect Valgrind
1580 versions up through 3.9 (but will be fixed in the forthcoming 3.10
1581 release), and might affect other tools that do instruction emulation.
a1a6a401
FW
1582
1583* Support for loadable gconv transliteration modules has been removed.
1584 The support for transliteration modules has been non-functional for
1585 over a decade, and the removal is prompted by security defects. The
1586 normal gconv conversion modules are still supported. Transliteration
1587 with //TRANSLIT is still possible, and the //IGNORE specifier
f9df71e8 1588 continues to be supported. (CVE-2014-5119)
41488498
FW
1589
1590* Decoding a crafted input sequence in the character sets IBM933, IBM935,
1591 IBM937, IBM939, IBM1364 could result in an out-of-bounds array read,
1592 resulting a denial-of-service security vulnerability in applications which
1593 use functions related to iconv. (CVE-2014-6040)
6c1fd795
DM
1594\f
1595Version 2.19
1596
1597* The following bugs are resolved with this release:
1598
fd2f9486
JM
1599 156, 387, 431, 762, 832, 926, 2801, 4772, 6786, 6787, 6807, 6810, 6981,
1600 7003, 9721, 9954, 10253, 10278, 11087, 11157, 11214, 12100, 12486, 12751,
1601 12986, 13028, 13982, 13985, 14029, 14032, 14120, 14143, 14155, 14286,
1602 14547, 14699, 14752, 14782, 14876, 14910, 15004, 15048, 15073, 15089,
1603 15128, 15218, 15268, 15277, 15308, 15362, 15374, 15400, 15425, 15427,
1604 15483, 15522, 15531, 15532, 15593, 15601, 15608, 15609, 15610, 15632,
1605 15640, 15670, 15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748,
1606 15749, 15754, 15760, 15763, 15764, 15797, 15799, 15825, 15843, 15844,
1607 15846, 15847, 15849, 15850, 15855, 15856, 15857, 15859, 15867, 15886,
1608 15887, 15890, 15892, 15893, 15895, 15897, 15901, 15905, 15909, 15915,
ed27ed83
JM
1609 15917, 15919, 15921, 15923, 15939, 15941, 15948, 15963, 15966, 15968,
1610 15985, 15988, 15997, 16032, 16034, 16036, 16037, 16038, 16041, 16046,
1611 16055, 16071, 16072, 16074, 16077, 16078, 16103, 16112, 16143, 16144,
1612 16146, 16150, 16151, 16153, 16167, 16169, 16172, 16195, 16214, 16245,
1613 16271, 16274, 16283, 16289, 16293, 16314, 16316, 16330, 16337, 16338,
798212a0
PP
1614 16356, 16365, 16366, 16369, 16372, 16375, 16379, 16381, 16384, 16385,
1615 16386, 16387, 16390, 16394, 16398, 16400, 16407, 16408, 16414, 16430,
1616 16431, 16453, 16474, 16506, 16510, 16529
141f3a77 1617
11520a57
CD
1618* Slovenian translations for glibc messages have been contributed by the
1619 Translation Project's Slovenian team of translators.
1620
2fe16229
CD
1621* The public headers no longer use __unused nor __block. This change is to
1622 support compiling programs that are derived from BSD sources and use
1623 __unused internally, and to support compiling with Clang's -fblock
08d76093
CD
1624 extension which uses __block.
1625
303e567a
SP
1626* CVE-2012-4412 The strcoll implementation caches indices and rules for
1627 large collation sequences to optimize multiple passes. This cache
1628 computation may overflow for large collation sequences and may cause a
1629 stack or buffer overflow. This is now fixed to use a slower algorithm
1630 which does not use a cache if there is an integer overflow.
1631
141f3a77
SP
1632* CVE-2012-4424 The strcoll implementation uses malloc to cache indices and
1633 rules for large collation sequences to optimize multiple passes and falls
1634 back to alloca if malloc fails, resulting in a possible stack overflow.
1635 The implementation now falls back to an uncached collation sequence lookup
1636 if malloc fails.
c61b4d41
CD
1637
1638* CVE-2013-4788 The pointer guard used for pointer mangling was not
1639 initialized for static applications resulting in the security feature
1640 being disabled. The pointer guard is now correctly initialized to a
1641 random value for static applications. Existing static applications need
1642 to be recompiled to take advantage of the fix (bug 15754).
91ce4085
FW
1643
1644* CVE-2013-4237 The readdir_r function could write more than NAME_MAX bytes
1645 to the d_name member of struct dirent, or omit the terminating NUL
1646 character. (Bugzilla #14699).
1647
ba0d798c
WN
1648* CVE-2013-4332 The pvalloc, valloc, memalign, posix_memalign and
1649 aligned_alloc functions could allocate too few bytes or corrupt the
1650 heap when passed very large allocation size values (Bugzilla #15855,
1651 #15856, #15857).
1652
7cbcdb36
SP
1653* CVE-2013-4458 Stack overflow in getaddrinfo with large number of results
1654 for AF_INET6 has been fixed (Bugzilla #16072).
1655
82bab04b 1656* New locales: ak_GH, anp_IN, ar_SS, cmn_TW, hak_TW, lzh_TW, nan_TW, pap_AW,
b46d046e 1657 pap_CW, quz_PE, the_NP.
ddd9fb8f 1658
c5f840fd
MB
1659* Substantially revised locales: gd_GB, ht_HT
1660
3e181dda
CD
1661* The LC_ADDRESS field was updated to support country_car for almost all
1662 supported locales.
ddd9fb8f 1663
3e181dda 1664* ISO 1427 definitions were updated.
7447ccd9 1665
8a05c252
CL
1666* ISO 3166 definitions were updated.
1667
6055173a
JM
1668* The localedef utility now supports --big-endian and --little-endian
1669 command-line options to generate locales for a different system from that
1670 for which the C library was built.
1671
b125d3e5
JM
1672* Binary locale files now only depend on the endianness of the system for
1673 which they are generated and not on other properties of that system. As a
1674 consequence, binary files generated with new localedef may be incompatible
1675 with old versions of the GNU C Library, and binary files generated with
1676 old localedef may be incompatible with this version of the GNU C Library,
1677 in the following circumstances:
1678
1679 + Locale files may be incompatible on m68k systems.
1680
1681 + Locale archive files (but not separate files for individual locales) may
1682 be incompatible on systems where plain "char" is signed.
1683
d4f66d37
JM
1684* The configure option --disable-versioning has been removed. Builds with
1685 --disable-versioning had not worked for several years.
1686
3e181dda
CD
1687* ISO 639 definitions were updated for Chiga (cgg) and Chinese (gan, hak, czh,
1688 cjy, lzh, cmn, mnp, cdo, czo, cpx, wuu, hsn, yue).
e35696c3 1689
ffb89e53
AO
1690* SystemTap probes for malloc have been introduced.
1691
5d29ccce
SP
1692* SystemTap probes for slow multiple precision fallback paths of
1693 transcendental functions have been introduced.
1694
8b7d57cd 1695* Support for powerpc64le has been added.
b125d3e5
JM
1696
1697* The soft-float powerpc port now supports e500 processors.
0a3ac0aa 1698
fd712ef3 1699* Support for STT_GNU_IFUNC symbols added for ppc32/power4+ and ppc64.
7011c262 1700
c688b419
JM
1701* A new feature test macro _DEFAULT_SOURCE is available to enable the same
1702 set of header declarations that are enabled by default, even when other
1703 feature test macros or compiler options such as -std=c99 would otherwise
1704 disable some of those declarations.
1705
7011c262 1706* The _BSD_SOURCE feature test macro no longer enables BSD interfaces that
029c7b25
JM
1707 conflict with POSIX. The libbsd-compat library (which was a dummy library
1708 that did nothing) has also been removed.
0a57b83e
AO
1709
1710* Preliminary documentation about Multi-Thread, Async-Signal and
1711 Async-Cancel Safety has been added.
ee4ec1d7
AK
1712
1713* Change of ABI data structures for s390 and s390x:
1714 On s390 and s390x the size of struct ucontext and jmp_buf was increased to
1715 allow for future hardware extensions. All library functions that accept or
1716 return these structures were versioned in order to provide backwards
1717 compatibility with existing code. However, not all cases can be handled
1718 with interface versioning. If an application embeds either structure into
1719 another structure and that structure is passed to another compilation unit
1720 which expects the newer larger-sized object then any access to the new
1721 fields will result in undefined behaviour. Similarly any access to fields
1722 that were moved by the enlarging of the structures will cause undefined
1723 behaviour. To fix the undefined behaviour all objects that are part of the
1724 final in-memory image must agree on the size of structures, and this may
1725 require recompilation.
2c8bfe7d
DM
1726\f
1727Version 2.18
1728
1729* The following bugs are resolved with this release:
1730
17db6e8d 1731 2546, 2560, 5159, 6809, 7006, 10060, 10062, 10283, 10357, 10686, 11120,
0432680e
PY
1732 11561, 12310, 12387, 12492, 12515, 12723, 13550, 13889, 13951, 13988,
1733 14142, 14176, 14200, 14256, 14280, 14293, 14317, 14327, 14478, 14496,
8c17cb1f
JM
1734 14582, 14686, 14812, 14888, 14894, 14907, 14908, 14909, 14920, 14941,
1735 14952, 14964, 14981, 14982, 14985, 14991, 14994, 14996, 15000, 15003,
1736 15006, 15007, 15014, 15020, 15022, 15023, 15036, 15054, 15055, 15062,
1737 15078, 15084, 15085, 15086, 15100, 15160, 15214, 15221, 15232, 15234,
1738 15283, 15285, 15287, 15304, 15305, 15307, 15309, 15327, 15330, 15335,
1739 15336, 15337, 15339, 15342, 15346, 15359, 15361, 15366, 15380, 15381,
1740 15394, 15395, 15405, 15406, 15409, 15416, 15418, 15419, 15423, 15424,
1741 15426, 15429, 15431, 15432, 15441, 15442, 15448, 15465, 15480, 15485,
1742 15488, 15490, 15492, 15493, 15497, 15506, 15529, 15536, 15553, 15577,
1743 15583, 15618, 15627, 15631, 15654, 15655, 15666, 15667, 15674, 15711,
1744 15755, 15759.
e4608715
CD
1745
1746* CVE-2013-2207 Incorrectly granting access to another user's pseudo-terminal
1747 has been fixed by disabling the use of pt_chown (Bugzilla #15755).
1748 Distributions can re-enable building and using pt_chown via the new configure
1749 option `--enable-pt_chown'. Enabling the use of pt_chown carries with it
1750 considerable security risks and should only be used if the distribution
1751 understands and accepts the risks.
1cef1b19 1752
5b535ac4
AS
1753* CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
1754 #15078).
1755
1cef1b19
AS
1756* CVE-2013-1914 Stack overflow in getaddrinfo with many results has been
1757 fixed (Bugzilla #15330).
7fffbdff 1758
55e4107b
SP
1759* Add support for calling C++11 thread_local object destructors on thread
1760 and program exit. This needs compiler support for offloading C++11
1761 destructor calls to glibc.
1762
e5c74c63
SP
1763* Improved worst case performance of libm functions with double inputs and
1764 output.
1765
1766* Support for priority inherited mutexes in pthread condition variables on
1767 non-x86 architectures.
1768
e7521973
JM
1769* Port to Xilinx MicroBlaze contributed by David Holsgrove.
1770
1771* Optimized string functions for AArch64. Implemented by Marcus Shawcroft.
1772
1773* Optimized string functions for ARM. Implemented by Will Newton and
1774 Richard Henderson.
1775
1776* Optimized libm functions for SPARC. Implemented by David S. Miller.
1777
1778* Support for building more of ARM glibc as Thumb-2 code. Implemented by
1779 Richard Henderson.
1780
1781* Support for building most of MIPS glibc as MIPS16 code. Implemented by
1782 Chung-Lin Tang, Maciej W. Rozycki and Maxim Kuvyrkov.
1783
8cfdb7e0
SP
1784* Added a benchmark framework to track performance of functions in glibc.
1785
57267616
TS
1786* New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
1787 It is based on draft TS 18661 and currently enabled as a GNU extension.
58206c68 1788
c204ab28
SP
1789* On Linux, the clock function now uses the clock_gettime system call
1790 for improved precision, rather than old times system call.
61dd6208 1791
0748546f
PE
1792* Added support for version-3 tz format files. This is needed when using
1793 the tz database release 2013e or later, and affects a few unusual cases --
1794 currently only TZ='America/Godthab' for time stamps after 2037.
1795
61dd6208
SP
1796* Added new API functions pthread_getattr_default_np and
1797 pthread_setattr_default_np to get and set the default pthread
1798 attributes of a process.
a7cb9d67
AK
1799
1800* Added support for TSX lock elision for pthread mutexes on i386 and x86-64.
1801 This may improve lock scaling of existing programs on TSX capable systems.
1802 When the --enable-lock-elision=yes parameter is specified at configure
1803 time lock elision will be enabled by default for all PTHREAD_MUTEX_DEFAULT
1804 mutexes.
be063fa4
RA
1805
1806* Support added for AT_HWCAP2 (to coincide with Linux kernel 3.10
1807 availability). Implemented by Ryan S. Arnold.
1808
1809* Support added for POWER8 platform. Implemented by Ryan S. Arnold.
370ca3d2
JM
1810\f
1811Version 2.17
1812
1813* The following bugs are resolved with this release:
1814
80ceeaee 1815 1349, 3439, 3479, 3665, 5044, 5246, 5298, 5400, 6530, 6677, 6778, 6808,
b4180a5e
AJ
1816 9685, 9914, 10014, 10038, 10114, 10191, 10631, 10873, 11438, 11607, 11638,
1817 11741, 12140, 13013, 13412, 13542, 13601, 13603, 13604, 13629, 13679,
1818 13696, 13698, 13717, 13741, 13759, 13761, 13763, 13881, 13939, 13950,
1819 13952, 13966, 14042, 14047, 14090, 14150, 14151, 14152, 14154, 14157,
1820 14166, 14173, 14195, 14197, 14237, 14246, 14251, 14252, 14283, 14298,
1821 14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14368, 14376,
1822 14417, 14447, 14459, 14476, 14477, 14501, 14505, 14510, 14516, 14518,
1823 14519, 14530, 14532, 14538, 14543, 14544, 14545, 14557, 14562, 14568,
1824 14576, 14579, 14583, 14587, 14595, 14602, 14610, 14621, 14638, 14645,
1825 14648, 14652, 14660, 14661, 14669, 14672, 14683, 14694, 14716, 14719,
1826 14743, 14767, 14783, 14784, 14785, 14793, 14796, 14797, 14801, 14803,
1827 14805, 14807, 14811, 14815, 14821, 14822, 14824, 14828, 14831, 14833,
1828 14835, 14838, 14856, 14863, 14865, 14866, 14868, 14869, 14871, 14872,
1829 14879, 14889, 14893, 14898, 14914.
14bc93a9 1830
95b4f1b6
SE
1831* Optimization of memcpy for MIPS.
1832
14bc93a9
JL
1833* CVE-2011-4609 svc_run() produces high cpu usage when accept fails with
1834 EMFILE has been fixed (Bugzilla #14889).
7a845b2c 1835
b54eb3cb
JM
1836* The add-on ports collection is now distributed in the "ports" subdirectory
1837 of the main GNU C Library distribution, rather than separately.
1838
7e2bd01f
MS
1839* Port to ARM AArch64 contributed by Linaro.
1840
08f43f9b
AK
1841* Support for STT_GNU_IFUNC symbols added for s390 and s390x.
1842 Optimized versions of memcpy, memset, and memcmp added for System z10 and
1843 zEnterprise z196.
1844 Implemented by Andreas Krebbel.
1845
84b3fd84
FW
1846* The new function secure_getenv allows secure access to the environment,
1847 returning NULL if running in a SUID/SGID process. This function replaces
1848 the internal function __secure_getenv.
1849
815e6fa3
GB
1850* SystemTap static probes have been added into the dynamic linker.
1851 Implemented by Gary Benson.
1852
400726de
MK
1853* Optimizations of string functions strstr, strcasestr and memmem.
1854 Implemented by Maxim Kuvyrkov.
1855
7aab07e4 1856* The minimum Linux kernel version that this version of the GNU C Library
6dad2c06 1857 can be used with is 2.6.16.
7aab07e4 1858
15d0da8c
WS
1859* Optimizations of string functions memchr, wcschr, wcscpy, and wcsrchr for
1860 powerpc POWER7. Implemented by Will Schmidt.
1861
3cc3ef96
RM
1862* New configure option --disable-nscd builds the C library such that it
1863 never attempts to contact the Name Service Caching Daemon (nscd).
c53d909c
RM
1864 New configure option --disable-build-nscd avoids building nscd itself;
1865 this is the default if --disable-nscd is used.
3cc3ef96 1866
b54eb3cb
JM
1867* Improved support for cross-compilation, including cross-testing and
1868 bootstrap builds without a previously built glibc.
1869
85429b1a 1870* Several testsuite tests are now able to test multiple IFUNC variants of an
0d224d52 1871 interface, rather than just testing the one that would be chooen by
85429b1a
DM
1872 default.
1873
b54eb3cb
JM
1874* New configure options --with-bugurl and --with-pkgversion, for
1875 distributors to use to embed their bug-reporting and package version
1876 information in --help and --version output.
1877
050af9c4
SP
1878* The ttyname and ttyname_r functions on Linux now fall back to searching for
1879 the tty file descriptor in /dev/pts or /dev if /proc is not available. This
1880 allows creation of chroots without the procfs mounted on /proc.
1881
89a3ad0b
AO
1882* The `crypt' function now fails if passed salt bytes that violate the
1883 specification for those values. On Linux, the `crypt' function will
1884 consult /proc/sys/crypto/fips_enabled to determine if "FIPS mode" is
1885 enabled, and fail on encrypted strings using the MD5 or DES algorithm
1886 when the mode is enabled.
1887
6e6249d0
RM
1888* The `clock_*' suite of functions (declared in <time.h>) is now available
1889 directly in the main C library. Previously it was necessary to link with
1890 -lrt to use these functions. This change has the effect that a
1891 single-threaded program that uses a function such as `clock_gettime' (and
1892 is not linked with -lrt) will no longer implicitly load the pthreads
1893 library at runtime and so will not suffer the overheads associated with
1894 multi-thread support in other code such as the C++ runtime library.
5a04f376 1895
d9286582
NK
1896* New locales: ayc_PE, doi_IN, ia_FR, mni_IN, nhn_MX, niu_NU, niu_NZ,
1897 sat_IN, and szl_PL.
8d44e150
UD
1898\f
1899Version 2.16
1900
1901* The following bugs are resolved with this release:
1902
a8133e19
JM
1903 174, 208, 350, 369, 411, 706, 766, 2074, 2541, 2547, 2548, 2550, 2551,
1904 2552, 2553, 2554, 2562, 2563, 2565, 2566, 2570, 2576, 2636, 2678, 3335,
1905 3440, 3748, 3768, 3866, 3868, 3906, 3976, 3992, 4026, 4108, 4596, 4822,
1906 5077, 5461, 5805, 5993, 6471, 6486, 6578, 6649, 6730, 6770, 6794, 6884,
1907 6890, 6894, 6895, 6907, 6911, 6959, 7064, 9739, 9902, 10110, 10135, 10140,
1908 10153, 10210, 10254, 10346, 10375, 10545, 10716, 10846, 10882, 11174,
1909 11261, 11322, 11365, 11451, 11494, 11521, 11677, 11837, 11959, 12047,
1910 12097, 12193, 12194, 12297, 12298, 12301, 12340, 12354, 12416, 12495,
1911 13058, 13223, 13361, 13525, 13526, 13527, 13528, 13529, 13530, 13531,
1912 13532, 13533, 13547, 13551, 13552, 13553, 13555, 13556, 13559, 13563,
1913 13566, 13576, 13579, 13583, 13592, 13594, 13613, 13618, 13637, 13656,
1914 13658, 13673, 13691, 13695, 13704, 13705, 13706, 13718, 13726, 13738,
1915 13739, 13743, 13750, 13758, 13760, 13761, 13775, 13786, 13787, 13792,
1916 13806, 13824, 13840, 13841, 13844, 13846, 13848, 13851, 13852, 13854,
1917 13871, 13872, 13873, 13879, 13882, 13883, 13884, 13885, 13886, 13892,
1918 13895, 13908, 13910, 13911, 13912, 13913, 13914, 13915, 13916, 13917,
1919 13918, 13919, 13920, 13921, 13922, 13923, 13924, 13926, 13927, 13928,
1920 13938, 13941, 13942, 13954, 13955, 13956, 13963, 13967, 13968, 13970,
1921 13973, 13979, 13983, 13986, 13996, 14012, 14027, 14033, 14034, 14036,
1922 14040, 14043, 14044, 14048, 14049, 14050, 14053, 14055, 14059, 14064,
1923 14075, 14080, 14083, 14103, 14104, 14109, 14112, 14117, 14122, 14123,
1924 14134, 14153, 14183, 14188, 14199, 14210, 14218, 14229, 14241, 14273,
1925 14277, 14278.
380d7e87 1926
a086b4d6
L
1927* Support for the x32 ABI on x86-64 added. The x32 target is selected by
1928 configuring glibc with:
1929 BUILD_CC='gcc' CC='gcc -mx32' CXX='g++ -mx32'
1930 Visit <http://sites.google.com/site/x32abi/> for more x32 ABI info.
1931 Implemented by H.J. Lu.
1932
380d7e87
UD
1933* ISO C11 support:
1934
1935 + define static_assert
1936
1937 + do not declare gets
1938
1939 + declare at_quick_exit and quick_exit also for ISO C11
1940
1941 + aligned_alloc. NB: The code is deliberately allows the size parameter
1942 to not be a multiple of the alignment. This is a moronic requirement
1943 in the standard but it is only a requirement on the caller, not the
1944 implementation.
8d44e150 1945
74033a25 1946 + timespec_get added
544563c9
UD
1947
1948 + uchar.h support added
d75a0a62 1949
ac097f5c
UD
1950 + CMPLX, CMPLXF, CMPLXL added
1951
16dd419d
UD
1952 Implemented by Ulrich Drepper.
1953
9dc4e1fb 1954* Support for the IA-64 has been moved to ports.
33808bf1
UD
1955
1956* Remove support for anything but ELF binary format
d9a216c0
UD
1957
1958* Checking versions of poll, ppoll added.
1959 Implemented by Ulrich Drepper.
daa891c0
UD
1960
1961* More generic and 64-bit performance optimizations to math functions.
1962 Implemented by Ulrich Drepper.
021db4be
AJ
1963
1964* New configure option --enable-obsolete-rpc makes the deprecated RPC
1965 headers and functions available at compile time as they were before
1966 version 2.14. This option will be removed at some time in the future
1967 after the TI-RPC library becomes fully sufficient for the needs of
1968 existing applications.
ffb7875d 1969
21708942 1970* Compatibility code for Linux kernel versions before 2.4 has been removed.
ffb7875d
JM
1971 Note that glibc is not expected to work with any Linux kernel version
1972 before 2.6.
83678f76 1973
edb00e4d
RH
1974* New header <sys/auxv.h> and function getauxval allowing easy access to
1975 the AT_* key-value pairs passed from the Linux kernel. The header also
1976 defines the HWCAP_* bits associated with the AT_HWCAP key.
1977
83678f76 1978* New locales: mag_IN
7b44a2df
RM
1979
1980* New configure option --enable-systemtap builds SystemTap static probes
1981 into libc for setjmp and longjmp and into libpthread for various operations.
1982 So far the setjmp/longjmp probes and some of the libpthread probes are
1983 provided only for i*86 and x86_64.
1984 Implemented by Roland McGrath and Rayson Ho.
47e452cf
JM
1985
1986* Optimized expf for x86-32 and x86-64. Implemented by Liubov Dmitrieva.
1987
d9dc34cd
TMQMF
1988* More optimized functions for PowerPC. Implemented by Adhemerval Zanella
1989 and Will Schmidt.
47e452cf
JM
1990
1991* More optimized functions for SPARC. Implemented by David S. Miller.
1992
1993* Improved support for cross-compilation, especially bootstrap builds
1994 without a previously built glibc.
1995
1996* Ports for the TILE-Gx and TILEPro families of processors. Contributed by
1997 Chris Metcalf from Tilera.
1998
1999* Support for the old ARM ABI has been removed from ports. Only the EABI is
2000 now supported for ARM processors.
2001
2002* The hard-float variant of the ARM EABI now uses /lib/ld-linux-armhf.so.3
2003 as the name of the dynamic linker, to distinguish it from the
2004 /lib/ld-linux.so.3 dynamic linker used for the base EABI.
2005
2006* Support for CRIS has been removed from ports.
d9dc34cd
TMQMF
2007
2008* A new class of installed header has been documented for low-level
2009 platform-specific functionality. PowerPC added the first instance with a
2010 function to provide time base register access. Contributed by Tulio
2011 Magno Quites Machado Filho.
929cc14e
AJ
2012
2013* ix86 configurations now install header files that are consistent with
2014 what x86-64 configurations install. These same header files can be used
2015 for -m32, -m64, or -mx32 builds.
2016 Contributed by H.J. Lu.
ee9247c3
CD
2017
2018* Math library bug fixes. A thorough audit of all open math library bugs was
2019 conducted by Joseph Myers. Significant progress was made on many math
2020 library bugs resulting in more accurate exceptions and function results.
2021 Many thanks to all those that contributed including Andreas Jaeger for his
2022 patch review and work on the x87 trigonometric instruction issues.
2023
2024* Timezone data is no longer installed. Timezone-related binaries and scripts
2025 will continue to be installed. Users should obtain their timezone data from
2026 their distribution provider or from the tzdata package at
2027 <ftp://munnari.oz.au/pub/>.
ee1a7fab 2028\f
e80fab37 2029Version 2.15
11988f8f 2030
c0244a9d
UD
2031* The following bugs are resolved with this release:
2032
aebae053
UD
2033 6779, 6783, 9696, 10103, 10709, 11589, 11929, 12403, 12786, 12840, 12847,
2034 12868, 12852, 12874, 12885, 12892, 12906, 12907, 12922, 12935, 12962,
2035 13007, 13021, 13061, 13062, 13067, 13068, 13085, 13088, 13090, 13092,
2036 13096, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13166, 13179,
2037 13185, 13189, 13192, 13268, 13276, 13282, 13291, 13305, 13328, 13335,
2038 13337, 13344, 13358, 13367, 13413, 13416, 13423, 13439, 13446, 13472,
2039 13484, 13506, 13515, 13523, 13524, 13538, 13540
c0244a9d 2040
11988f8f
UD
2041* New program pldd to list loaded object of a process
2042 Implemented by Ulrich Drepper.
9f2da732
UD
2043
2044* Add nss_db support back to glibc. No more dependency on Berkeley db
2045 and support for initgroups lookups.
2046 Implemented by Ulrich Drepper.
0b1cbaae
L
2047
2048* Optimized strcpy, strncpy, stpcpy, stpncpy for SSE2 and SSSE3 on x86-32.
2049 Contributed by HJ Lu.
8912479f
L
2050
2051* Improved strcpy, strncpy, stpcpy, stpncpy for SSE2 and SSSE3 on x86-64.
2052 Contributed by HJ Lu.
99710781 2053
fc2ee42a
LD
2054* Optimized strcat, strncat on x86-64 and optimized wcscmp, wcslen, strnlen
2055 on x86-32 and x86-64.
99710781 2056 Contributed by Liubov Dmitrieva.
c55fbd1e 2057
d42964a0 2058* Optimized strchr and strrchr for SSE on x86-32.
693fb948
LD
2059 Contributed by Liubov Dmitrieva.
2060
1d3e4b61
UD
2061* Optimized memchr, memrchr, rawmemchr, memcmp, wmemcmp, wcschr, wcscpy
2062 for x86-64 and x86-32.
093ecf92
LD
2063 Contributed by Liubov Dmitrieva.
2064
c55fbd1e
UD
2065* New interfaces: scandirat, scandirat64
2066 Implemented by Ulrich Drepper.
a0f33f99
UD
2067
2068* Checking versions of FD_SET, FD_CLR, and FD_ISSET added.
2069 Implemented by Ulrich Drepper.
684ae515
UD
2070
2071* nscd now also caches the netgroup database.
2072 Implemented by Ulrich Drepper.
0ac5ae23
UD
2073
2074* Integrate libm with gcc's -ffinite-math-only option.
2075 Implemented by Ulrich Drepper.
d9a4d2ab
UD
2076
2077* Lots of generic, 64-bit, and x86-64-specific performance optimizations
2078 to math functions. Implemented by Ulrich Drepper.
2079
2080* Optimized strcasecmp and strncasecmp for AVX on x86-64.
2081 Implemented by Ulrich Drepper.
78239589
UD
2082
2083* New Linux interfaces: process_vm_readv, process_vm_writev
e188ebba
UD
2084
2085* Optimized strcasecmp and strncasecmp for SSSE3 and SSE4.2 on x86-32.
2086 Implemented by Ulrich Drepper.
a1267ba1 2087
f0b264f1
AZ
2088* Optimized nearbyint and strcasecmp for PPC.
2089 Implemented by Adhemerval Zanella.
2655fd5c 2090
6b64057b 2091* New locales: bho_IN, unm_US, es_CU, ta_LK
e80fab37 2092\f
dded88cd 2093Version 2.14
9f94d2ea 2094
50934221
UD
2095* The following bugs are resolved with this release:
2096
553149f6 2097 386, 6420, 7101, 9730, 9732, 9809, 10138, 10149, 10157, 11099, 11257,
873ca504 2098 11258, 11487, 11532, 11558, 11578, 11634, 11653, 11668, 11697, 11724,
3cf74f8a 2099 11781, 11799, 11820, 11837, 11857, 11884, 11892, 11895, 11901, 11945,
7ae22829 2100 11947, 11952, 11987, 12052, 12083, 12158, 12178, 12200, 12346, 12350,
4462fad3
UD
2101 12393, 12420, 12432, 12445, 12449, 12453, 12454, 12460, 12469, 12489,
2102 12509, 12510, 12511, 12518, 12527, 12541, 12545, 12551, 12582, 12583,
2103 12587, 12597, 12601, 12611, 12625, 12626, 12631, 12650, 12653, 12655,
4769ae77
UD
2104 12660, 12671, 12681, 12684, 12685, 12711, 12713, 12714, 12717, 12723,
2105 12724, 12734, 12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792,
f16846a5 2106 12795, 12811, 12813, 12814, 12841
50934221 2107
7b57bfe5
UD
2108* The RPC implementation in libc is obsoleted. Old programs keep working
2109 but new programs cannot be linked with the routines in libc anymore.
2110 Programs in need of RPC functionality must be linked against TI-RPC.
6b1e7d19 2111 The TI-RPC implementation is IPv6 enabled and there are other benefits.
018b9e36
UD
2112
2113 Visible changes of this change include (obviously) the inability to link
a0446976
UD
2114 programs using RPC functions without referencing the TI-RPC library and the
2115 removal of the RPC headers from the glibc headers.
7b57bfe5
UD
2116 Implemented by Ulrich Drepper.
2117
c6489db3 2118* New Linux interfaces: clock_adjtime, name_to_handle_at, open_by_handle_at,
f1f929d7 2119 syncfs, setns, sendmmsg
83fe108b 2120
72d1dddb 2121* New locales: os_RU, bem_ZA, en_ZA, ff_SN, sw_KE, sw_TZ, lb_LU, wae_CH,
a7b80ed5 2122 yue_HK, lij_IT, mhr_RU
bc469bea
UD
2123
2124* New encodings: CP770, CP771, CP772, CP773, CP774
a9171047
UD
2125
2126* New program sotruss to trace calls through PLTs
2127 Implemented by Ulrich Drepper.
7d17596c
UD
2128
2129* The malloc hook implementation is marked deprecated and will be removed
2130 from the default implementation in the next version. The design never
2131 worked ever since the introduction of threads. Even programs which do
2132 not create threads themselves can use multiple threads created internally.
9f94d2ea 2133\f
4828935d
LM
2134Version 2.13
2135
ac2b484c
UD
2136* The following bugs are resolved with this release:
2137
c30b7ee2
UD
2138 3268, 6812, 7066, 10085, 10484, 10563, 10851, 11149, 11155, 11577, 11611,
2139 11640, 11655, 11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979,
2140 12005, 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113,
2141 12140, 12159, 12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348,
2142 12378, 12394, 12397
ac2b484c 2143
10b3bedc 2144* New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark
c08fb0d7 2145
ac2b484c 2146* POWER7 optimizations: memset, memcmp, strncmp
8d50becc 2147
e9f82e0d
UD
2148* New optimized string functions for x86-64: strnlen (SSE2),
2149 strcasecmp (SSE2, SSSE3, SSE4.2), strncasecmp (SSE2, SSSE3, SSE4.2)
8d50becc 2150 Implemented by Ulrich Drepper.
4828935d 2151\f
ee1a7fab
UD
2152Version 2.12
2153
d36b9613
UD
2154* The following bugs are resolved with this release:
2155
2e0fb521
DL
2156 3662, 4457, 5553, 10162, 10401, 10414, 10554, 10824, 10864, 10915,
2157 10918, 10936, 10939, 10958, 10968, 10969, 10972, 10992, 11000, 11001,
2158 11007, 11010, 11027, 11039, 11040, 11041, 11043, 11046, 11056, 11070,
2159 11093, 11115, 11125, 11126, 11127, 11134, 11141, 11149, 11183, 11184,
fc97f36d
UD
2160 11185, 11186, 11187, 11188, 11189, 11190, 11191, 11192, 11193, 11194,
2161 11200, 11230, 11235, 11242, 11254, 11258, 11271, 11272, 11276, 11279,
2162 11287, 11292, 11319, 11332, 11333, 11387, 11389, 11390, 11394, 11397,
5ae958d7 2163 11410, 11438, 11449, 11470, 11471, 11520, 11537, 11538, 11571
86a4c67f
UD
2164
2165* New interfaces: pthread_getname_np, pthread_setname_np
d36b9613 2166
ee1a7fab
UD
2167* New Linux interface: recvmmsg
2168
5e4295fb
UD
2169* STT_GNU_IFUNC implemented for Sparc by David Miller.
2170
2171* The dynamic linker now recognizes supported ABI versions from the
2172 EI_ABIVERSION field in the ELF header.
2173 Implemented by Ulrich Drepper.
2174
71170aa0
UD
2175* New NIS mode selector ADJUNCT_AS_SHADOW. The passwd.adjunct.byname table
2176 will not be used to fill in password fields in the passwd.byname replies.
2177 Instead it is used to synthesize the shadow.byname table, should it be
2178 missing. This is a useful mode in some installations involving Solaris.
2179 Implemented by Ulrich Drepper.
2180
d36b9613 2181* New locales: kok_IN, sq_MK, cv_RU
b50f8e42
UD
2182\f
2183Version 2.11
2184
d36b9613
UD
2185* The following bugs are resolved with this release:
2186
2187 3270, 7094, 9924, 9986, 10011, 10085, 10107, 10159, 10162, 10166, 10183,
2188 10195, 10196, 10200, 10203, 10207, 10211, 10213, 10217, 10221, 10229,
2189 10262, 10286, 10312, 10315, 10319, 10349, 10360, 10391, 10402, 10416,
2190 10418, 10422, 10425, 10446, 10448, 10452, 10540, 10553, 10560, 10564,
2191 10609, 10643, 10692, 10713, 10717, 10730, 10731, 10742, 10780, 10784,
2192 10789, 10817, 10823, 10840, 10847
2193
3a83202d
UD
2194* New interfaces: execvpe, pthread_sigqueue, mkstemps, mkstemps64, mkostemps,
2195 mkostemps64
3d5243d4
UD
2196 Implemented by Ulrich Drepper.
2197
24ab9c76 2198* Checking version of longjmp added that fails if an uninitialized stack
b50f8e42
UD
2199 frame would be created. Implemented by Ulrich Drepper.
2200
b8706f70
UD
2201* STT_GNU_IFUNC is now supported in static executables.
2202 Implemented by H.J. Lu.
2203
51a71cf0
UD
2204* STT_GNU_IFUNC implemented for PPC by Alan Modra.
2205
0122f28e 2206* New optimized string functions for x86-64: strstr, strcasestr, memcmp,
9d36a6c4 2207 strcspn, strpbrk, strspn, strcpy, stpcpy, strncpy, strcmp (SSE2, SSE4.2),
7f3146e7 2208 strncmp (SSE2, SSE4.2), strchr (SSE4.2), strrchr (SSE4.2).
0122f28e
UD
2209 Contributed by H.J. Lu.
2210
9d36a6c4 2211 strlen, rawmemchr, strcmp (SSSE3), strncmp (SSSE3).
0122f28e
UD
2212 Implemented by Ulrich Drepper.
2213
9d36a6c4
UD
2214* New optimized string functions for x86: strlen, strcspn, strspn, strpbrk,
2215 strstr, strcasestr.
2216 Contributed by H.J. Lu.
2217
2218* Support for fma instruction in AVX on x86-64.
2219 Implemented by H.J. Lu and Ulrich Drepper.
2220
0122f28e
UD
2221* AVX support in x86-64 auditing support in ld.so.
2222 Implemented by H.J. Lu.
2223
2224* STB_GNU_UNIQUE support added.
2225 Implemented by Ulrich Drepper.
2226
2227* Implement second fallback mode for optimized DNS lookup for even more
2228 broken environments. If two requests from the same port are not
2229 handled correctly close the socket and open a new one before sending
2230 the second request. The 'single-request-reopen' option in /etc/resolv.conf
2231 can be used to select this mode right away, instead of rediscovering the
2232 necessity is every process again.
2233 Implemented by Ulrich Drepper.
2234
9d36a6c4
UD
2235* New resolver flag RES_USE_DNSSEC to enable use of verified lookup.
2236 Implemented by Adam Tkac.
2237
2238* Optimized iconv conversions for S390x.
2239 Implemented by Andreas Krebbel.
2240
4bc1b896
UD
2241* Using condvars with PI mutexes is now more efficient due to kernel
2242 support for requeueing to PI futexes. NPTL support added for x86-64.
2243 Implemented by Ulrich Drepper.
2244
9dd5b8a1 2245* New locales: ps_AF, my_MM
f1092afe
UD
2246\f
2247Version 2.10
2248
d36b9613
UD
2249* The following bugs are resolved with this release:
2250
2251 697, 5381, 5807, 6411, 6545, 7040, 7058, 7067, 7080, 7083, 7095, 7098,
2252 9677, 9694, 9697, 9701, 9704, 9705, 9706, 9720, 9726, 9730, 9733, 9736,
2253 9741, 9750, 9753, 9759, 9781, 9791, 9793, 9823, 9833, 9844, 9880, 9881,
2254 9891, 9893, 9895, 9913, 9916, 9920, 9948, 9955, 9957, 9963, 9985, 10052,
2255 10069, 10086, 10087, 10090, 10092, 10093, 10100, 10118, 10128
2256
bb066545 2257* New interfaces: preadv, preadv64, pwritev, pwritev64, malloc_info
e109c612
UD
2258 Implemented by Ulrich Drepper.
2259
425ce2ed 2260* New Linux interfaces: accept4, fallocate, fallocate64.
e109c612 2261 Implemented by Ulrich Drepper.
6f5c3117 2262
1fdd89a7 2263* Correct declarations of string function when used in C++ code. This
735be400 2264 could lead to compile errors for invalid C++ code.
1fdd89a7 2265
6cbe890a
UD
2266* XPG7/POSIX 2008 compilation environment. Many GNU-specific functions are
2267 now in POSIX.
77db439e 2268
1f04d005 2269* New POSIX 2008 interface: psiginfo
6cbe890a 2270 Implemented by Ulrich Drepper.
1f04d005 2271
610e67ed
UD
2272* New ISO C++1x interfaces: quick_exit, at_quick_exit
2273 Implemented by Ulrich Drepper.
2274
878b72c5
UD
2275* Support for selecting between multiple function definitions at runtime
2276 using STT_GNU_IFUNC symbols. Implemented by Ulrich Drepper.
2277
e109c612
UD
2278* The libcrypt library can now use the hash function implementations in
2279 NSS. Implemented by Ulrich Drepper.
2280
2281* The malloc implementation can be compiled to be less memory efficient
2282 but higher performing in multi-threaded programs.
2283 Implemented by Ulrich Drepper.
2284
735be400 2285* New locales: nan_TW@latin, ks_IN
878b72c5 2286
84aa52d7 2287* Faster strlen, strchr, strchrnul, strrchr, memchr, and rawmemchr for x86-64.
9d26efa9
UD
2288 Implemented by Ulrich Drepper.
2289
2290* Extended printf hook support. It is possible to use user-defined types
2291 and extend existing format specifiers.
a152f366
UD
2292 Implemented by Ulrich Drepper.
2293
c7e74e59
UD
2294* Handling for group shadow files has been added.
2295 Implemented by Ulrich Drepper.
2296
57be3fd7
UD
2297* DNS IPv4-IPv6 parallel lookup now deals better with broken DNS
2298 servers (the case, e.g., for some people using the built-in DNS
2299 server in ADSL modems/routers). There is a once-per-process timeout
2300 in case of a broken server. To avoid it, users can run nscd or put
2301 'options single-request' in /etc/resolv.conf.
2302 Implemented by Ulrich Drepper.
28919a77 2303\f
b29899ae
UD
2304Version 2.9
2305
d36b9613
UD
2306* The following bugs are resolved with this release:
2307
2308 3406, 5209, 5210, 5381, 5794, 5814, 5911, 6428, 6438, 6442, 6447, 6461,
2309 6472, 6505, 6544, 6589, 6612, 6634, 6653, 6654, 6657, 6698, 6712, 6713,
2310 6719, 6723, 6724, 6740, 6763, 6771, 6790, 6791, 6817, 6824, 6839, 6843,
2311 6845, 6856, 6857, 6860, 6867, 6875, 6919, 6920, 6942, 6947, 6955, 6966,
2312 6968, 6974, 6980, 6995, 7008, 7009, 7029
2313
b29899ae 2314* Unified lookup for getaddrinfo: IPv4 and IPv6 addresses are now looked
f05ac8f5
UD
2315 up at the same time. Implemented by Ulrich Drepper.
2316
2317* TLS descriptors for LD and GD on x86 and x86-64.
2318 Implemented by Alexandre Oliva.
18a74157
UD
2319
2320* getaddrinfo now handles DCCP and UDPlite.
2321 Implemented by Ulrich Drepper.
0caca71a
UD
2322
2323* New fixed-size conversion macros: htobe16, htole16, be16toh, le16toh,
2324 htobe32, htole32, be32toh, le32toh, htobe64, htole64, be64toh, le64toh.
2325 Implemented by Ulrich Drepper.
2326
2327* New implementation of memmem, strstr, and strcasestr which is O(n).
2328 Implemented by Eric Blake.
e038616f 2329
8ec2550e 2330* New Linux interfaces: inotify_init1, dup3, epoll_create1, pipe2
e038616f
UD
2331
2332* Implement "e" option for popen to open file descriptor with the
ebcc1f4d 2333 close-on-exec flag set. Implemented by Ulrich Drepper.
e038616f 2334
7b3ba2c4
UD
2335* Implement "b" mode for fmemopen. In this mode writes writes don't
2336 implicitly add a NUL byte and seeks from the end of the buffer really
2337 use the buffer end, not the string length as the basis.
2338 Implemented by Ulrich Drepper.
2339
e038616f
UD
2340* Many functions, exported and internal, now atomically set the close-on-exec
2341 flag when run on a sufficiently new kernel. Implemented by Ulrich Drepper.
48b22986 2342
bf837fa3
UD
2343* Sorting rules for some Indian languages (Kannada, Gurumukhi, Telugu,
2344 Sinhala)
48b22986 2345 Implemented by Pravin Satpute.
0a26fc4d
UD
2346
2347* New locales: sd_IN, sd_IN@devanagari, ks_IN@devanagari, ht_HT, en_AG, nl_AW.
b29899ae 2348\f
28919a77
UD
2349Version 2.8
2350
d36b9613
UD
2351* The following bugs are resolved with this release:
2352
2353 2549, 3112, 4314, 4407, 4997, 5012, 5040, 5112, 5204, 5208, 5209, 5220,
2354 5222, 5224, 5225, 5237, 5238, 5240, 5245, 5277, 5346, 5375, 5378, 5382,
2355 5424, 5427, 5428, 5435, 5436, 5439, 5441, 5442, 5443, 5451, 5452, 5454,
2356 5455, 5463, 5464, 5465, 5475, 5477, 5478, 5520, 5541, 5545, 5553, 5600,
2357 5602, 5607, 5614, 5627, 5628, 5736, 5737, 5741, 5753, 5760, 5762, 5768,
2358 5774, 5777, 5778, 5779, 5786, 5790, 5818, 5854, 5857, 5903, 5939, 5979,
2359 5983, 5995, 5998, 6004, 6007, 6020, 6021, 6024, 6040, 6042
2360
e038616f 2361* New locales: bo_CN, bo_IN, shs_CA.
b4354cf4 2362
77751669 2363* New encoding: HP-ROMAN9, HP-GREEK8, HP-THAI8, HP-TURKISH8.
aece054b
UD
2364
2365* Sorting rules for some Indian languages (Devanagari and Gujarati).
2366 Implemented by Pravin Satpute.
2367
2368* IPV6 addresses in /etc/resolv.conf can now have a scope ID
2369
2370* nscd caches now all timeouts for DNS entries
2371 Implemented by Ulrich Drepper.
2372
2373* nscd is more efficient and wakes up less often.
2374 Implemented by Ulrich Drepper.
2375
2376* More checking functions: asprintf, dprintf, obstack_printf, vasprintf,
2377 vdprintf, and obstack_vprintf.
2378 Implemented by Jakub Jelinek.
2379
2380* Faster memset for x86-64.
2381 Implemented by Harsha Jagasia and H.J. Lu.
2382
2383* Faster memcpy on x86.
2384 Implemented by Ulrich Drepper.
2385
2386* ARG_MAX is not anymore constant on Linux. Use sysconf(_SC_ARG_MAX).
2387 Implemented by Ulrich Drepper.
3b32d8a2
UD
2388
2389* Faster sqrt and sqrtf implemention for some PPC variants.
d990b282 2390 Implemented by Steven Munroe.
46c38bd7 2391\f
e1db0493
UD
2392Version 2.7
2393
d36b9613
UD
2394* The following bugs are resolved with this release:
2395
2396 4125, 4126, 4178, 4359, 4407, 4512, 4514, 4525, 4554, 4556, 4557, 4566,
2397 4582, 4586, 4588, 4599, 4610, 4647, 4702, 4705, 4726, 4745, 4772, 4773,
2398 4775, 4776, 4792, 4813, 4814, 4816, 4833, 4858, 4860, 4896, 4905, 4925,
2399 4936, 4937, 4938, 4941, 4946, 4963, 4972, 5010, 5028, 5043, 5058, 5063,
2400 5071, 5103, 5104, 5112, 5113, 5184, 5186
2401
e1db0493
UD
2402* More checking functions: fread, fread_unlocked, open*, mq_open.
2403 Implemented by Jakub Jelinek and Ulrich Drepper.
2404
2405* Extend fortification to C++. Implemented by Jakub Jelinek.
2406
2407* Implement 'm' modifier for scanf. Add stricter C99/SUS compliance
2408 by not recognizing 'a' as a modifier when those specs are requested.
2409 Implemented by Jakub Jelinek.
2410
2411* PPC optimizations to math and string functions.
2412 Implemented by Steven Munroe.
2413
28919a77 2414* New interfaces: mkostemp, mkostemp64. Like mkstemp* but allow additional
e1db0493
UD
2415 options to be passed. Implemented by Ulrich Drepper.
2416
2417* More CPU set manipulation functions. Implemented by Ulrich Drepper.
2418
0304f168
UD
2419* New Linux interfaces: signalfd, eventfd, eventfd_read, and eventfd_write.
2420 Implemented by Ulrich Drepper.
2421
e1db0493
UD
2422* Handle private futexes in the NPTL implementation.
2423 Implemented by Jakub Jelinek and Ulrich Drepper.
2424
2425* Add support for O_CLOEXEC. Implement in Hurd. Use throughout libc.
2426 Implemented by Roland McGrath and Ulrich Drepper.
2427
2428* Linux/x86-64 vDSO support. Implemented by Ulrich Drepper.
2429
2430* SHA-256 and SHA-512 based password encryption.
2431 Implemented by Ulrich Drepper.
0304f168
UD
2432
2433* New locales: ber_DZ, ber_MA, en_NG, fil_PH, fur_IT, fy_DE, ha_NG, ig_NG,
2434 ik_CA, iu_CA, li_BE, li_NL, nds_DE, nds_NL, pap_AN, sc_IT, tk_TM, ug_CN,
2435 yo_NG.
2436
2437+ New iconv modules: MAC-CENTRALEUROPE, ISO-8859-9E, KOI8-RU.
2438 Implemented by Ulrich Drepper.
e1db0493 2439\f
11bf311e 2440Version 2.6
46c38bd7 2441
d36b9613
UD
2442* The following bugs are resolved with this release:
2443
2444 3156, 3213, 3285, 3291, 3306, 3313, 3320, 3322, 3325, 3326, 3334, 3348,
2445 3352, 3363, 3369, 3426, 3427, 3429, 3451, 3458, 3465, 3480, 3483, 3493,
2446 3514, 3515, 3559, 3632, 3664, 3673, 3674, 3745, 3747, 3818, 3840, 3842,
2447 3851, 3855, 3884, 3885, 3902, 3905, 3919, 3944, 3954, 3955, 3957, 3991,
2448 3995, 3996, 4024, 4040, 4069, 4070, 4074, 4076, 4096, 4101, 4102, 4114,
2449 4130, 4131, 4181, 4276, 4306, 4342, 4344, 4349, 4364, 4368, 4381, 4392,
2450 4403, 4405, 4406, 4411, 4438, 4439, 4455, 4456, 4465, 4512, 4514, 4586,
2451 4702, 4858
2452
bce20b9a 2453* New Linux interfaces: epoll_pwait, sched_getcpu.
46c38bd7 2454
4a44ce79
UD
2455* New generic interfaces: strerror_l.
2456
b21fa963 2457* nscd can now cache the services database. Implemented by Ulrich Drepper.
3af48b5b
UD
2458\f
2459Version 2.5
2460
d36b9613
UD
2461* The following bugs are resolved with this release:
2462
2463 39, 68, 192, 352, 388, 531, 935, 1006, 1201, 1203, 1386, 1782, 1783, 1784,
2464 1785, 1786, 1787, 1951, 1974, 1996, 2072, 2098, 2125, 2134, 2158, 2182,
2465 2349, 2376, 2386, 2389, 2415, 2418, 2420, 2423, 2450, 2451, 2466, 2472,
2466 2473, 2477, 2498, 2499, 2501, 2502, 2505, 2507, 2508, 2509, 2517, 2526,
2467 2569, 2571, 2592, 2611, 2625, 2632, 2644, 2662, 2680, 2683, 2684, 2693,
2468 2695, 2703, 2734, 2751, 2764, 2766, 2775, 2792, 2821, 2823, 2832, 2841,
2469 2843, 2883, 2892, 2908, 2914, 2926, 2961, 2978, 2980, 2987, 2997, 2998,
2470 3013, 3018, 3034, 3040, 3044, 3123, 3124, 3137, 3138, 3143, 3155, 3189,
2471 3225, 3251, 3252, 3253, 3273
2472
3af48b5b 2473* For Linux, the sorting of addresses returned by getaddrinfo now also
457b559e
UD
2474 handles rules 3, 4, and 7 from RFC 3484. I.e., all rules are handled.
2475 Implemented by Ulrich Drepper.
3af48b5b 2476
3142b1ac
UD
2477* Allow system admin to configure getaddrinfo with the /etc/gai.conf file.
2478 Implemented by Ulrich Drepper.
2479
871b9158 2480* New Linux interfaces: splice, tee, sync_file_range, vmsplice.
1e528c6e
UD
2481
2482* New iconv module for MIK. Contributed by Alexander Shopov.
3af48b5b 2483
3142b1ac
UD
2484* For sites with broken group and/or passwd database, the auto-propagate
2485 option of nscd can prevent creating ID lookup entries from the results
2486 of a name lookup and vice versa. This usually is no problem but some
457b559e 2487 site might have problems with the default behavior.
3142b1ac
UD
2488 Implemented by Ulrich Drepper.
2489
07bfff20 2490* Iterating over entire database in NIS can be slow. With the
3142b1ac
UD
2491 SETENT_BATCH_READ option in /etc/default/nss a system admin can decide
2492 to trade time for memory. The entire database will be read at once.
2493 Implemented by Ulrich Drepper.
2494
07bfff20
UD
2495* The interfaces introduced in RFC 3542 have been implemented by
2496 Ulrich Drepper.
2497
871b9158
UD
2498* Support for the new ELF hash table format was added by Ulrich Drepper.
2499
d5ba53f9
UD
2500* Support for priority inheritance mutexes added by Jakub Jelinek and
2501 Ulrich Drepper.
2502
ad2a3c07
UD
2503* Support for priority protected mutexes added by Jakub Jelinek.
2504
88cc61e8
UD
2505* New locales: nr_ZA, pa_PK, ca_AD, ca_FR, ca_IT, el_CY, tr_CY, as_IN,
2506 or_IN, csb_PL, fy_NL, sr_ME.
2e92188d 2507\f
137e6462
UD
2508Version 2.4
2509
2510* More overflow detection functions.
2511
2512* New iconv converters for IBM1025, IBM1122, IBM1137, IBM1153,
2513 IBM1154, IBM1155, IBM1156, IBM1157, and IBM1158 contributed by Jiro Sekiba.
1aa4e40a 2514
4973cbe5
UD
2515 More converters for IBM803, IBM901, IBM902, IBM921, IBM1008, IBM1097,
2516 IBM1112, IBM1123, IBM1130, IBM1140, IBM1141, IBM1142, IBM1143, IBM1144,
2517 IBM1145, IBM1146, IBM1147, IBM1148, IBM1149, IBM1166, IBM1167, IBM4517,
2518 IBM4899, IBM4909, IBM4971, IBM5347, IBM9030, IBM9066, IBM9448, IBM12712,
2519 IBM16804, IBM1364, IBM1371, IBM1388, IBM1390, and IBM1399 contributed
2520 by Masahide Washizawa.
2521
1aa4e40a
UD
2522* It is now possible to install audit libraries for the dynamic linker using
2523 LD_AUDIT. Implemented by Ulrich Drepper.
da0eaa47
RM
2524
2525* The LinuxThreads add-on, providing pthreads on Linux 2.4 kernels, is no
2526 longer supported. The new NPTL implementation requires Linux 2.6 kernels.
2527 For a libc and libpthread that works well on Linux 2.4 kernels, we
2528 recommend using the stable 2.3 branch.
4973cbe5 2529
35129bc0
RM
2530* The new function open_wmemstream acts like open_memstream,
2531 but uses a wchar_t wide character buffer.
2532
2533* The new function ppoll is an improved version of poll, similar to pselect.
2534
2535* New interfaces: fdopendir, openat, fstatat, fchmodat, fchownat,
2536 futimesat, faccessat, mkdirat, mkfifoat, mknodat,
2537 renameat, unlinkat, linkat, symlinkat, readlinkat.
2538
2539* New Linux kernel system calls: unshare,
2540 inotify_init, inotify_add_watch, inotify_rm_watch.
2541
2542* The euidaccess function is now also known by the alias eaccess,
2543 for compatibility with some other systems.
2544
2545* Timezone data updated to 2006b version.
137e6462 2546\f
e6a9beca
RM
2547Version 2.3.6
2548
2549* The following bugs are resolved with this release:
2550
2551 38, 253, 549, 622, 653, 721, 758, 851, 877, 915, 934, 955, 961,
2552 1016, 1037, 1076, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
2553 1087, 1088, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
2554 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109,
2555 1110, 1111, 1112, 1113, 1125, 1137, 1138, 1249, 1250, 1251, 1252,
2556 1253, 1254, 1350, 1358, 1394, 1438, 1498, 1534
2557
2558 Visit <http://sources.redhat.com/bugzilla/> for the details of each bug.
2559
2560* As of this release, GCC 4 can be used to compile the C Library.
2561
2562* Timezone data updated to 2005m version.
2563\f
da232bf9
RM
2564Version 2.3.5
2565
2566* The following bugs are resolved with this release:
2567
2568 284, 592, 602, 626, 633, 640, 650, 661, 671, 681, 693, 700, 710, 719,
2569 722, 723, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
2570 737, 738, 739, 740, 741, 742, 743, 744, 745, 765, 767, 768, 769, 776,
2571 777, 787, 821, 822, 823, 825
2572
2573 Visit <http://sources.redhat.com/bugzilla/> for the details of each bug.
2574\f
a55bda85
UD
2575Version 2.3.4
2576
2577* Support for RFC 3678. Real implementations exist only for Linux so far.
2578 Implemented by Ulrich Drepper.
8a1f658b
UD
2579
2580* nscd can now cache entries persistently. Expiring entries are reloaded.
2581 For speedups the cache can be shared in memory with client processes.
2582 Implemented by Ulrich Drepper.
2583
2584* nscd can now perform SELinux checks.
2585 Implemented by Matthew Rickard <mjricka@epoch.ncsc.mil>.
2586
0325dd20 2587* getaddrinfo queries are now cached. Canonical name lookup is performed
8a1f658b
UD
2588 efficiently.
2589 Implemented by Ulrich Drepper.
2590
2591* The nothrow function attribute is used when headers are used by gcc when
2592 compiling C code. This can avoid significant amounts of exception
2593 handling data.
2594
2595* The malloc functions perform more error checking and are stricter when
2596 it comes to reacting on errors. The default action is to terminate
0325dd20 2597 the process after showing an error message. Implemented by Ulrich Drepper.
8a1f658b
UD
2598
2599* Reverse lookups of IPv6 addresses does not use bit string or .ip6.int
0325dd20
UD
2600 lookups anymore unless explicitly requested. Implemented by Ulrich Drepper.
2601
2602* Namespaces in ld.so are implemented. DSOs can be loaded in separate
2603 namespaces using the new function dlmopen(). This feature is of course,
2604 like most other dynamic loading functionality, not available in statically
2605 linked applications. Implemented by Ulrich Drepper.
2606
2607* Low-overhead boundary checking variants of string and some stdio functions
2608 were added. These are to be used in conjunction with a gcc patch by
2609 Jakub Jelinek which adds calls to these functions if possible.
720817e7
RM
2610 Implemented by Jakub Jelinek and Ulrich Drepper.
2611
2612* Old code for several operating systems and machine architectures that
2613 have not been in working condition in a long time have been removed from
2614 the main source tree maintained by the GNU C Library's maintainers.
2615 These files are now reside in the separate `ports' source module
2616 that is usable as an add-on when building the library.
a55bda85 2617\f
3a601d31
RM
2618Version 2.3.3
2619
45e4762c
RM
2620* New functions `dladdr1' and `dlinfo' in <dlfcn.h> provide more ways to
2621 interrogate the dynamic linker, compatible with the Solaris interface.
2622
3a601d31
RM
2623* ELF thread-local storage support (TLS) now works on PowerPC and PowerPC64;
2624 implemented by Paul Mackerras, Steven Munroe, and Roland McGrath.
925c3c5c 2625
69be6aaf 2626* getifaddrs now uses the netlink interface on Linux to get its information.
925c3c5c
UD
2627 Implemented by Thorsten Kukuk.
2628
2629* getaddrinfo now implements AI_V4MAPPED, AI_ALL, and AI_ADDRCONF.
2630 Implemented by Ulrich Drepper.
97fd3a30
UD
2631
2632* support for non-executable stacks on x86 has been added. Changes mostly
2633 by Roland McGrath.
2634
c5af724c 2635* regex is now much faster for multibyte locales. Changes by Jakub Jelinek
97fd3a30
UD
2636 and Ulrich Drepper.
2637
2638* getaddrinfo now performs destination address selection according to
2639 RFC 3484.
3a601d31 2640\f
747bf98e
RM
2641Version 2.3.2
2642
f87277f2
RM
2643* Thread-safe interfaces for many functions that access locale data
2644 were added in version 2.3, but these features were omitted from NEWS.
2645 Many functions have variants with an `_l' suffix that take a `locale_t'
2646 object as a parameter rather than consulting the current locale.
2647 The new functions `newlocale', `duplocale', and `freelocale' in <locale.h>
2648 create and maintain `locale_t' objects. Additionally, the new function
2649 `uselocale' sets "the current locale" (as used by functions not so
2650 parameterized) set for an individual thread. These features were added
2651 in version 2.3, implemented by Ulrich Drepper and Roland McGrath.
2652
747bf98e
RM
2653* The functions getresuid, getresgid, setresuid, and setresgid, which
2654 have long been available on Linux, are now declared in <unistd.h>
2655 and are now also available on the Hurd.
2656
2657* ELF thread-local storage support (TLS) now works on x86-64.
d62507dd
RM
2658
2659* The new dynamic string token $LIB is expanded in shared library names.
2660 This normally expands to lib, but on some 64-bit platforms to lib64 instead.
52a16e58 2661
f87277f2
RM
2662* Aldy Hernandez contributed complete software floating point support for
2663 PowerPC machines with no FPU.
2664
52a16e58 2665* fexecve is implemented on Linux.
f9ad060c 2666
f87277f2
RM
2667* The `btowc' function should work at least twice as fast due to
2668 specialized callbacks in the iconv modules. Implemented by Bruno Haible.
9ef0a840
UD
2669
2670* With approriate thread add-ons cancelable functions are now implemented
2671 in libc.so as well. No need to call the function in libpthread. This
2672 change allowed to finally disable the incorrect and expensive handling
2673 of weak definition in ld.so.
2674
2675* Yet more PLT entries in libc.so have been removed. We finally arrived
2676 at the bare minimum. Startup times improved appropriately.
2677
2678* Support for the new Linux/x86 system call interface was added. The
2679 AT_SYSINFO auxiliary vector entry is recognized and handled.
747bf98e 2680\f
03a2c647 2681Version 2.3
37fb1084 2682
03a2c647
UD
2683* Masahide Washizawa contributed iconv modules for IBM1163 and IBM1164
2684 charsets.
2685
2686* iconv (the program and the interface) now accepts empty names (excluding
2687 options like //TRANSLIT) to mean "use charset of current locale".
47e8b443 2688
bb0ec5bd 2689* localedef can now transliterate characters in strings which are not in
47e8b443 2690 the provided charmap. The information from the input locale is used.
c17f665b
UD
2691
2692* Prelinking support was added for ELF targets. This requires additional
2693 tools and recent versions of the GNU binutils. Contributed by Jakub Jelinek.
8e57fc70 2694
bb0ec5bd 2695* Read-only stdio streams now use mmap to speed up operation by eliminating
91e6367e
UD
2696 copying and buffer underflows. To use add 'm' to the mode string of
2697 the fopen/fdopen/freopen call. Implemented by Ulrich Drepper.
207b66ce
UD
2698
2699* The malloc functions were completely rewritten by Wolfram Gloger based
2700 on Doug Lea's malloc-2.7.0.c.
3b0bdc72 2701
bb0ec5bd 2702* Isamu Hasegawa contributed a completely new and POSIX-conformant
3b0bdc72 2703 implementation of regex.
02779eaa
UD
2704
2705* Bruno Haible upgraded the iconv and locale implementation to support
2706 Unicode 3.2.
be45f421 2707
bb0ec5bd
RM
2708* Contents of the LC_* and LANG environment variables in the CEN style are
2709 not recognized anymore. It never was used. Change by Ulrich Drepper.
be45f421 2710
bb0ec5bd
RM
2711* The runtime (ld.so, libc, libpthread for Linux) now can handle the ELF
2712 thread-local storage (TLS) ABI on some platforms.
2713 Changes by Ulrich Drepper. SH support by Kaz Kojima.
be45f421
UD
2714
2715* Bruno Haible contributed iconv converters for ISO-2022-JP-3, SHIFT JIS-X0213,
f87277f2 2716 EUC-JISX0213, and TSCII.
a753ffb2
RM
2717
2718* New header <ifaddrs.h> with functions `getifaddrs' and `freeifaddrs':
2719 BSD-compatible interface for getting all network interface addresses.
2720 Implementation for IPv4 by Roland McGrath.
6a9340b5
UD
2721
2722* Loading of locale data is faster due to the introduction of a locale
2723 archive. Implemented by Roland McGrath and Ulrich Drepper.
dd4f2115
UD
2724
2725* Startup times are significantly reduced by not using exported functions
2726 inside the library itself. Changes by Jakub Jelinek, Roland McGrath,
2727 and Ulrich Drepper.
c843e065
RM
2728
2729* Steven Munroe contributed a port to PowerPC64/Linux.
2730\f
45061a15
RM
2731Version 2.2.6
2732
2733* The Hurd now uses the GNU libio implementation of stdio rather than the
2734 old GNU stdio implementation, and uses a new ABI (libc.so.0.3).
2735
2736* The Hurd on x86 now has the `ioperm' function and <sys/io.h> header file
2737 with the same behavior as the Linux system call of the same name.
03a2c647 2738\f
a8ae31c2
UD
2739Version 2.2.5
2740
76321a25
AJ
2741* Stephen Moshier implemented log2, log10, powl and cbrtl for the
2742 128-bit long double format.
a8ae31c2 2743
557a9213
UD
2744* Masahide Washizawa contributed iconv modules for IBM1132, IBM1133, IBM1160,
2745 IBM1161, and IBM1162 charsets.
a8ae31c2 2746
ad2e4f18 2747* Andreas Jaeger contributed a port to x86-64/Linux.
a8ae31c2 2748
7d0c5823
RM
2749* Peter Bruin contributed a port to PowerPC/Hurd.
2750
a8ae31c2
UD
2751* libc functions using I/O streams now can handle wide-oriented streams
2752 as well.
2753
45061a15
RM
2754* optimizations in the dynamic linker. Binaries created by recent binutils
2755 versions start up quicker due to reduced time spent on relocations.
8e57fc70
UD
2756
2757* Support for use of gcc3 added by Jakub Jelinek and HJ Lu.
7d0c5823 2758\f
33996419
AJ
2759Version 2.2.4
2760
2995f70e 2761* Stephen Moshier implemented cosh, expm1, log1p, acos, sinh, tanh,
aff17a50 2762 asinh, atanh, j0 for the 128-bit long double format.
8fee1bb0
UD
2763
2764* Bruno Haible updated all the code handling Unicode in some form to
2765 support Unicode 3.1.
86dbe05e
UD
2766
2767* Speed of regex for single-byte locales is back to previous levels.
2768 Patch by Isamu Hasegawa.
045fcd26 2769
69d5f925 2770* Alpha, SPARC, and IA-64 now also using floating stacks.
045fcd26 2771
69d5f925 2772* Startup time of internationalized applications greatly improved through
045fcd26
UD
2773 iconv cache. Use iconvconfig to generate the cache file.
2774 Contributed by Ulrich Drepper.
2775
2776* The IA-64 specific part of ld.so was rewritten to eliminate some pretty
2777 severe performance problems. Patch by David Mosberger.
2778
2779* The Hurd port got a lot more functionality like AIO, various stdio
2780 extensions, etc. Mainly done by Roland McGrath.
129d706d
UD
2781
2782* mtrace can now lookup symbols in shared libraries.
33996419 2783\f
2ace5721
UD
2784Version 2.2.3
2785
1746f2b0 2786* Intel's IA-64 math library is largely integrated. It provides fast and
2ace5721
UD
2787 accurate implementatations for most basic and standard math functions
2788 in float, double, and long double format.
2789
f128331c 2790* Stephen Moshier implemented j0, j1, jn, y0, y1, yn, lgamma, erf, erfc,
b8750342
UD
2791 and asin for the 96-bit long double format and asin, log, tan for the
2792 128-bit long double format.
07f951e4 2793
e4d82761
UD
2794* The beginning of a last-bit accurate math library by IBM Haifa were added.
2795 The basic double functions exist today. Contributed by Abraham Ziv
2796 <ziv@il.ibm.com>, Moshe Olshansky <olshansk@il.ibm.com>, Ealan Henis
2797 <ealan@il.ibm.com>, and Anna Reitman <reitman@il.ibm.com>.
2798
2ace5721
UD
2799* An asynchronous name lookup library was added. The interface is designed
2800 after POSIX AIO. The proposal was circulated beforehand to get comments.
2801 No negative ones came in. Implemented by Ulrich Drepper.
b8a8413c
UD
2802
2803* Port to S390/64bit contributed by Martin Schwidefsky
2804 <schwidefsky@de.ibm.com>.
a66f0958
UD
2805
2806* David Mosberger <davidm@hpl.hp.com> implemented the setcontext family
2807 of functions for Linux/IA-64.
481b550f
UD
2808
2809* The RPC code is now thread safe. Threads can now use the same service
2810 of different services at the same time. Patch by Eric Norum
2811 <eric.norum@usask.ca> with some help by Ulrich Drepper.
f128331c
UD
2812
2813* Martin Schwidefsky <schwidefsky@de.ibm.com> implemented the setcontext
2814 family of functions for Linux/S390.
232fdf8c
UD
2815
2816* Ulrich Drepper <drepper@redhat.com> implemented the setcontext family
2817 of functions for Linux/x86.
eacde9d0
UD
2818
2819* Port to Linux/CRIS contributed by Axis Communications.
2ace5721 2820\f
306eeae5
UD
2821Version 2.2.2
2822
464d97ec 2823* Lots of headers were cleaned up. Using the tool in the conform/ subdir
306eeae5
UD
2824 we can now check for namespace violations and missing declarations. The
2825 result is that almost all headers are now Unix-compliant (as defined in
2826 the upcoming XPG6). The negative side is that some programs might need
2827 corrections, too, if they depend on the incorrect form of the headers in
2828 previous versions which defined too many symbols and included too many
2829 other headers.
464d97ec
UD
2830
2831* regex now handles multibyte character sets correctly.
2832 Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
2833
2834* iconv (the program) does now conform to the upcoming XPG6 and handles
2835 charmaps. Instead of the charset names the path of charmaps can be
2836 provided and the conversion happens based on this data.
2837 Contributed by Ulrich Drepper.
2838
2839* The locale program now provides detailed information about the installed
2840 locales. While
2841
2842 locale -a
2843
2844 only lists the names of the supported locales
2845
2846 locale -a --verbose
2847
2848 provides details such as country, language, and codeset name.
2849 Contributed by Ulrich Drepper.
306eeae5 2850\f
d2defdc4
UD
2851Version 2.2.1
2852
2853* The gencat program now parses the input file according to the charset
2854 selected by the LC_CTYPE category. This is important for stateful
2855 character sets. To make generating catalogs easier there is a way
2856 to overwrite the charset selected by the locale: before the first
2857 message or $ quote line the catalog can contain a line like
2858
2859 $ codeset=ISO-8859-2
2860
2861 to select the charset (ISO-8859-2 in this case).
2862
2863 Implemented by Shinya Hanataka and Ulrich Drepper.
aea6353a
UD
2864
2865* New codeset conversion modules: IBM-922 (Estonia PC codeset),
2866 IBM-1124 (Ukraine PC codeset), IBM-1129 (Vietnamese PC codeset).
2867 Contributed by Masahide Washizawa <washi@jp.ibm.com>.
234669e2
UD
2868
2869* Optimized string functions for Alpha ev6 and ev67 by Richard Henderson
2870 <rth@redhat.com> and Rick Gorton <rick.gorton@alpha-processor.com>.
2871
2872* The LANGUAGE environment variable is now ignored unless the locale is
2873 changed from the default "C" locale.
2874
2875* The usual bug fixes.
d2defdc4 2876\f
2e92188d
UD
2877Version 2.2
2878
08a2e4a0
GM
2879* Greg McGary added runtime support for bounds checking using gcc's
2880 new -fbounded-pointers option. ix86 target is complete. PowerPC
2881 is in progress.
2882
2e92188d
UD
2883* Thorsten Kukuk added secure mode support to nscd.
2884
793bd4d9 2885* The Berkeley db libraries have been removed.
2e92188d 2886
47b853e8
UD
2887 Related, the nss_db module is now in a separate package since it
2888 obviously requires a database library being available.
2889
0013b2b1
UD
2890* Wide character I/O streams implemented by Ulrich Drepper.
2891
abbffdf9 2892* Functions from the extended socket API added by Ulrich Drepper.
01c771d0 2893
6e8afc1c
UD
2894* Functions feenableexcept and fedisableexcept to control the
2895 behaviour of individual exceptions have been added by Andreas Jaeger.
2896
591e1ffb
UD
2897* ldconfig program added by Andreas Jaeger and Jakub Jelinek.
2898
d3436b3c
UD
2899* The resolver code has been updated from bind 8.2.3-T5B which supports
2900 threads. The integration was done by Andreas Jaeger, Adam D. Bradley,
2901 and Mark Kettenis.
2588068b
UD
2902
2903 This change could in some situations effect backward compatibility. Since
2904 now `_res' is a thread-local instead of a global variable, modifying it
2905 in one thread does not have any effect in other threads.
66ac0abe 2906
a00c3ca9 2907 The resolver library was also extended to allow IPv6 as the transport
d3436b3c
UD
2908 protocol for the requests. This work was done by Stig Venaas.
2909
1c5d4617
UD
2910* Compatibility code for K&R C compilers has been removed from the
2911 header files. A ISO C compiler is needed to use the library
2912 (conforming to either C89 or C99 standard).
2913
abbffdf9
UD
2914* Complete rewrite of the localedef program to support multibyte character
2915 sets. Implement handling of ISO 14651 and ISO 14652. Rewrite strcoll,
2916 strxfrm, wcscoll, and wcsxfrm functions. Make isw*() functions work.
2917 Implemented by Ulrich Drepper.
2918
8f3f1e09
UD
2919 Bruno Haible significantly improved the generation and use of the data
2920 structures for the wide character tables.
2921
abbffdf9
UD
2922* Plural handling in gettext implemented by Ulrich Drepper.
2923
69173865
UD
2924* The utmp daemon has been removed.
2925
2926* The port to MIPS-Linux has been finished by Andreas Jaeger.
2927
37fb8add
UD
2928* A port to Hitachi SH3 and SH4 has been contributed by Kazumoto Kojima
2929 and Yutaka Niibe.
2930
594cee6c
UD
2931* POSIX clocks and timers implemented by Kaz Kylheku and Ulrich Drepper.
2932
40c4c9b5
UD
2933* POSIX barriers implemented by Kaz Kylheku.
2934
594cee6c
UD
2935* POSIX spawn function family implemented by Ulrich Drepper.
2936
2937* POSIX spinlocks are now available.
2938
40c4c9b5
UD
2939* Timed wait functions for mutex, rwlock, and semaphores are implemented.
2940
8f3f1e09
UD
2941* the configure option --enable-kernel=X.Y.Z allows to strip out
2942 compatibility for kernel versions before X.Y.Z. This is currently only
2943 implemented for Linux.
2944
3107c0c5
UD
2945* the sockaddr_in6 structure changed. The IPv6 working group added a new
2946 field sin6_scope_id. This means that all programs using IPv6 should be
2947 recompiled. Don't expect binary compatibility with previous glibc
2948 versions.
2949
d2830ba4
UD
2950* various conversion modules for IBM character sets contributed by
2951 Masahide Washizawa.
2952
8f3f1e09 2953* IA-64 port by Jes Sorensen and HJ Lu.
6f2a8167
UD
2954\f
2955Version 2.1.3
2956
2957* bug fixes
2958
01c771d0
UD
2959\f
2960Version 2.1.2
2961
2962* bug fixes
2963
28f540f4 2964\f
e518937a
UD
2965Version 2.1.1
2966
27995311
UD
2967* New ISO C 9x function _Exit, imaxabs, and imaxdiv are added.
2968
16b0f634
UD
2969* New xdr functions are added; some rpc functions are now 64bit clean.
2970
407d26b7 2971* Fixed a number of bugs and memory leaks (especially in NIS+ code).
16b0f634
UD
2972
2973* Fixed known incompatibilities with glibc 2.0.
2974
407d26b7 2975* New functions lock64, strchrnul, rawmemchr, getutmp and getutmpx.
16b0f634 2976
407d26b7 2977* Optimized a number of functions (especially the ELF dynamic loader).
16b0f634
UD
2978
2979* Update timezone data files.
27995311 2980
554b8800
UD
2981* lots of charmaps corrections
2982
2983* some new locale definitions and charmaps
2984
e518937a 2985\f
c84142e8
UD
2986Version 2.1
2987
da2d1bc5
UD
2988* Richard Henderson corrected size of struct timeval on Linux/Alpha to
2989 conform to POSIX member type requirements. Symbol versions have been
2990 adjusted as needed within the library, and for direct use by applications,
2991 but there is potential for problems if third-party libraries use
2992 struct timeval as part of their interface. This does not present
2993 a problem for X and other "essential" system libraries.
2994
c84142e8 2995* An additional locale model to support C++ Standard Library locale
1fb05e3d 2996 model and probably more was implemented by Ulrich Drepper.
c84142e8 2997
1fb05e3d 2998* Eric Youngdale and Ulrich Drepper implemented versioning of objects on
c84142e8
UD
2999 symbol level.
3000
3001* Miles Bader provided the `argp' function family to support hierachical
3002 command line argument parsing, layered on top of getopt.
377a515b 3003
cbdee279 3004* strtod accepts new hexadecimal floating-point format from ISO C 9X.
377a515b
UD
3005
3006* printf has two new specifiers %a and %A to print hexadecimal flaoting-point
cbdee279 3007 numbers.
377a515b 3008
cbdee279 3009* scanf recognizes the %a and %A format for scanning floating point numbers.
e61abf83 3010
48869012
UD
3011* the new headers <stdint.h> and <inttypes.h> from ISO C 9X provides
3012 information and interfaces for the available integer types.
e61abf83 3013
813f4f4d
UD
3014* about 130 new math functions were added to implement the ISO C9x math
3015 library.
3016
e61abf83 3017* the new header <complex.h> contains definitions of the complex math
cbdee279
UD
3018 functions from ISO C 9X.
3019
3020* the new header <tgmath.h> defines generic macros to use complex or
3021 real valued functions.
e61abf83 3022
a5a0310d 3023* Thorsten Kukuk provided an implementation for NIS+, securelevel 0, 1 and 2.
e61abf83 3024
a5a0310d
UD
3025* Andreas Jaeger provided a test suite for the math library.
3026
3027* Mark Kettenis implemented the utmpx interface and an utmp daemon.
cbdee279 3028
440d13e2 3029* Ulrich Drepper added character set conversion functions (iconv).
cbdee279
UD
3030
3031* Optimized string functions have been added.
3032
3033* The localedata addon is now part of glibc.
2eb45444
UD
3034
3035* An implementation of profiling shared libraries was added by Ulrich Drepper.
ea278354 3036
48244d09
UD
3037* Thorsten Kukuk and Ulrich Drepper provided an implementation for a caching
3038 daemon for NSS (nscd).
3039
3040 Missing a better place here are some numbers on improvements. Under
3041 Linux 2.1.125 un-tar-ing the kernel sources takes
3042
0dee6738 3043 user system wall
48244d09 3044
0dee6738 3045 using local files 12.19s 6.88s 22.91s
48244d09 3046
0dee6738 3047 using NIS 13.92s 8.91s 26.34s
48244d09 3048
0dee6738 3049 using NIS & nscd 10.37s 7.34s 25.30s
48244d09 3050
0dee6738
UD
3051 using NIS+ 27.57s 30.37s 640.46s
3052
3053 using NIS+ & nscd 10.25s 7.83s 26.51s
3054
3055 using NIS & old nscd [1] 13.83s 8.32s 29.60s
48244d09 3056
48244d09
UD
3057 Keep in mind that non-namelookup related operations dominate above times.
3058 It was just a common complain that using NIS+ unpacking the kernel is
0dee6738 3059 horribly slow.
48244d09 3060
0dee6738
UD
3061 [1] The old nscd implementation is not available anymore since it was
3062 distributed with glibc up to version 2.0.98 and thus is now replaced.
ea278354
UD
3063
3064* Tim Waugh provided an implementation of the POSIX.2 wordexp function family.
48869012
UD
3065
3066* Mark Kettenis provided a Hesiod NSS module.
20833331
UD
3067
3068* The ELF dynamic loader knows how to process dynamic string tokens ($ORIGIN
3069 and $PLATFORM) in RPATHs and similar strings (Ulrich Drepper).
3070
3071* rcmd can now handle netgroups (Dick Streefland).
48244d09 3072
62595351
UD
3073* A port to the ARM was contributed by Phil Blundell, Pat Beirne and Scott
3074 Bambrough.
3075
3076* Support for the IPv6 protocol has been added to the socket API, as per the
3077 latest draft standards.
3078
1770a20d
UD
3079* Support for Linux 2.2 has been added.
3080
48244d09
UD
3081* Interface changes relative to the latest 2.0.x release:
3082~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62595351 3083addseverity NEW: Unix98
48244d09 3084alphasort64 NEW: LFS
62595351
UD
3085argp_err_exit_status NEW: argp, GNU ext
3086argp_error NEW: argp, GNU ext
3087argp_failure NEW: argp, GNU ext
3088argp_help NEW: argp, GNU ext
3089argp_parse NEW: argp, GNU ext
3090argp_program_bug_address NEW: argp, GNU ext
3091argp_program_version NEW: argp, GNU ext
3092argp_program_version_hook NEW: argp, GNU ext
3093argp_state_help NEW: argp, GNU ext
3094argp_usage NEW: argp, GNU ext
e980ca92
UD
3095authdes_create NEW: Secure RPC
3096authdes_getucred NEW: Secure RPC
3097authdes_pk_create NEW: Secure RPC
48244d09
UD
3098backtrace NEW: GNU ext.
3099backtrace_symbols NEW: GNU ext.
3100backtrace_symbols_fd NEW: GNU ext.
3101cacos NEW: ISO C 9x
3102cacosf NEW: ISO C 9x
3103cacosh NEW: ISO C 9x
3104cacoshf NEW: ISO C 9x
3105cacoshl NEW: ISO C 9x
3106cacosl NEW: ISO C 9x
3107capget NEW: kernel
3108capset NEW: kernel
3109carg NEW: ISO C 9x
3110cargf NEW: ISO C 9x
3111cargl NEW: ISO C 9x
3112casin NEW: ISO C 9x
3113casinf NEW: ISO C 9x
3114casinh NEW: ISO C 9x
3115casinhf NEW: ISO C 9x
3116casinhl NEW: ISO C 9x
3117casinl NEW: ISO C 9x
3118catan NEW: ISO C 9x
3119catanf NEW: ISO C 9x
3120catanh NEW: ISO C 9x
3121catanhf NEW: ISO C 9x
3122catanhl NEW: ISO C 9x
3123catanl NEW: ISO C 9x
e980ca92 3124cbc_crypt NEW: Secure RPC
48244d09
UD
3125ccos NEW: ISO C 9x
3126ccosf NEW: ISO C 9x
3127ccosh NEW: ISO C 9x
3128ccoshf NEW: ISO C 9x
3129ccoshl NEW: ISO C 9x
3130ccosl NEW: ISO C 9x
3131cexp NEW: ISO C 9x
3132cexpf NEW: ISO C 9x
3133cexpl NEW: ISO C 9x
3134cimag NEW: ISO C 9x
3135cimagf NEW: ISO C 9x
3136cimagl NEW: ISO C 9x
3137clearerr_locked REMOVED
3138clntunix_create NEW: sunrpc ext
3139clog NEW: ISO C 9x
3140clog10 NEW: ISO C 9x
3141clog10f NEW: ISO C 9x
3142clog10l NEW: ISO C 9x
3143clogf NEW: ISO C 9x
3144clogl NEW: ISO C 9x
3145conj NEW: ISO C 9x
3146conjf NEW: ISO C 9x
3147conjl NEW: ISO C 9x
3148cpow NEW: ISO C 9x
3149cpowf NEW: ISO C 9x
3150cpowl NEW: ISO C 9x
3151cproj NEW: ISO C 9x
3152cprojf NEW: ISO C 9x
3153cprojl NEW: ISO C 9x
3154creal NEW: ISO C 9x
3155crealf NEW: ISO C 9x
3156creall NEW: ISO C 9x
3157creat64 NEW: LFS
3158csin NEW: ISO C 9x
3159csinf NEW: ISO C 9x
3160csinh NEW: ISO C 9x
3161csinhf NEW: ISO C 9x
3162csinhl NEW: ISO C 9x
3163csinl NEW: ISO C 9x
3164csqrt NEW: ISO C 9x
3165csqrtf NEW: ISO C 9x
3166csqrtl NEW: ISO C 9x
3167ctan NEW: ISO C 9x
3168ctanf NEW: ISO C 9x
3169ctanh NEW: ISO C 9x
3170ctanhf NEW: ISO C 9x
3171ctanhl NEW: ISO C 9x
3172ctanl NEW: ISO C 9x
e980ca92
UD
3173des_setparity NEW: Secure RPC
3174ecb_crypt NEW: Secure RPC
62595351 3175endutxent NEW: Unix98
48244d09
UD
3176exp10 NEW: ISO C 9x
3177exp10f NEW: ISO C 9x
3178exp10l NEW: ISO C 9x
3179exp2 NEW: ISO C 9x
3180exp2f NEW: ISO C 9x
3181exp2l NEW: ISO C 9x
3182fattach NEW: STREAMS
3183fdetach NEW: STREAMS
3184fdim NEW: ISO C 9x
3185fdimf NEW: ISO C 9x
3186fdiml NEW: ISO C 9x
3187feclearexcept NEW: ISO C 9x
3188fegetenv NEW: ISO C 9x
3189fegetexceptflag NEW: ISO C 9x
3190fegetround NEW: ISO C 9x
3191feholdexcept NEW: ISO C 9x
3192feof_locked REMOVED
3193feraiseexcept NEW: ISO C 9x
3194ferror_locked REMOVED
3195fesetenv NEW: ISO C 9x
3196fesetexceptflag NEW: ISO C 9x
3197fesetround NEW: ISO C 9x
3198fetestexcept NEW: ISO C 9x
3199feupdateenv NEW: ISO C 9x
3200fflush_locked REMOVED
3201ffsl NEW: GNU ext.
3202ffsll NEW: GNU ext.
3203fgetpos64 NEW: LFS
3204fgets_unlocked NEW: GNU ext.
3205fileno_locked REMOVED
3206fma NEW: ISO C 9x
3207fmaf NEW: ISO C 9x
3208fmal NEW: ISO C 9x
3209fmax NEW: ISO C 9x
3210fmaxf NEW: ISO C 9x
3211fmaxl NEW: ISO C 9x
3212fmin NEW: ISO C 9x
3213fminf NEW: ISO C 9x
3214fminl NEW: ISO C 9x
62595351 3215fmtmsg NEW: Unix98
48244d09
UD
3216fopen64 NEW: LFS
3217fputc_locked REMOVED
3218fputs_unlocked NEW: GNU ext.
3219fread_unlocked NEW: GNU ext.
3220freopen64 NEW: LFS
3221fseeko NEW: Unix98
3222fsetpos64 NEW: LFS
3223fstatfs64 NEW: LFS
3224fstatvfs NEW: Unix98
3225fstatvfs64 NEW: LFS
3226ftello NEW: Unix98
3227ftello64 NEW: LFS
3228ftruncate64 NEW: LFS
3229ftw64 NEW: LFS
3230fwrite_unlocked NEW: GNU ext.
3231gai_strerror NEW: IPv6
3232gamma_r REMOVED
3233gammaf_r REMOVED
3234gammal_r REMOVED
3235getchar_locked REMOVED
3236getdate NEW: Unix98
3237getdate_err NEW: Unix98
3238getdate_r NEW: GNU ext.
3239getmsg NEW: STREAMS
3240getnameinfo NEW: IPv6
e980ca92 3241getnetname NEW: Secure RPC
48244d09
UD
3242getpmsg NEW: STREAMS
3243getpt NEW: Unix98 PTY
3244getrlimit64 NEW: LFS
62595351
UD
3245getutxent NEW: Unix98
3246getutxid NEW: Unix98
3247getutxline NEW: Unix98
48244d09
UD
3248glob64 NEW: GNU ext.
3249globfree64 NEW: GNU ext.
3250gnu_get_libc_release NEW: GNU ext.
3251gnu_get_libc_version NEW: GNU ext.
3252grantpt NEW: Unix98 PTY
e980ca92 3253host2netname NEW: Secure RPC
48244d09
UD
3254iconv NEW: iconv
3255iconv_close NEW: iconv
3256iconv_open NEW: iconv
3257if_freenameindex NEW: IPv6
3258if_indextoname NEW: IPv6
3259if_nameindex NEW: IPv6
3260if_nametoindex NEW: IPv6
3261in6addr_any NEW: IPv6
3262in6addr_loopback NEW: IPv6
3263inet6_isipv4mapped NEW: IPv6
3264isastream NEW: STREAMS
3265iswblank NEW: GNU ext.
e980ca92
UD
3266key_decryptsession NEW: Secure RPC
3267key_decryptsession_pk NEW: Secure RPC
3268key_encryptsession NEW: Secure RPC
3269key_encryptsession_pk NEW: Secure RPC
3270key_gendes NEW: Secure RPC
3271key_get_conv NEW: Secure RPC
3272key_secretkey_is_set NEW: Secure RPC
3273key_setnet NEW: Secure RPC
3274key_setsecret NEW: Secure RPC
48244d09
UD
3275llrint NEW: ISO C 9x
3276llrintf NEW: ISO C 9x
3277llrintl NEW: ISO C 9x
3278llround NEW: ISO C 9x
3279llroundf NEW: ISO C 9x
3280llroundl NEW: ISO C 9x
3281log2 NEW: ISO C 9x
3282log2f NEW: ISO C 9x
3283log2l NEW: ISO C 9x
3284lrint NEW: ISO C 9x
3285lrintf NEW: ISO C 9x
3286lrintl NEW: ISO C 9x
3287lround NEW: ISO C 9x
3288lroundf NEW: ISO C 9x
3289lroundl NEW: ISO C 9x
3290lseek64 NEW: LFS
3291makecontext NEW: Unix98
3292mempcpy NEW: GNU ext.
3293mmap64 NEW: LFS
3294moncontrol REMOVED
3295modify_ldt NEW: kernel
3296nan NEW: ISO C 9x
3297nanf NEW: ISO C 9x
3298nanl NEW: ISO C 9x
3299nearbyint NEW: ISO C 9x
3300nearbyintf NEW: ISO C 9x
3301nearbyintl NEW: ISO C 9x
e980ca92
UD
3302netname2host NEW: Secure RPC
3303netname2user NEW: Secure RPC
42bd0a85
UD
3304nexttoward NEW: ISO C 9x
3305nexttowardf NEW: ISO C 9x
3306nexttowardl NEW: ISO C 9x
48244d09
UD
3307nftw NEW: Unix98
3308nftw64 NEW: LFS
3309open64 NEW: LFS
e980ca92 3310passwd2des NEW: Secure RPC
48244d09
UD
3311pow10 NEW: GNU ext.
3312pow10f NEW: GNU ext.
3313pow10l NEW: GNU ext.
3314pread NEW: Unix98
3315pread64 NEW: LFS
3316printf_size NEW: GNU ext.
3317printf_size_info NEW: GNU ext.
3318profil_counter REMOVED
3319pthread_mutexattr_getkind_np REPLACED
3320pthread_mutexattr_setkind_np REPLACED
3321ptsname NEW: Unix98 PTY
3322ptsname_r NEW: Unix98 PTY
3323putc_locked REMOVED
3324putchar_locked REMOVED
3325putgrent NEW: GNU ext.
3326putmsg NEW: STREAMS
3327putpmsg NEW: STREAMS
62595351 3328pututxline NEW: Unix98
48244d09
UD
3329pwrite NEW: Unix98
3330pwrite64 NEW: LFS
3331readdir64 NEW: LFS
3332readdir64_r NEW: LFS
3333remquo NEW: ISO C 9x
3334remquof NEW: ISO C 9x
3335remquol NEW: ISO C 9x
3336round NEW: ISO C 9x
3337roundf NEW: ISO C 9x
3338roundl NEW: ISO C 9x
3339rtime NEW: GNU ext.
3340scalbln NEW: ISO C 9x
3341scalblnf NEW: ISO C 9x
3342scalblnl NEW: ISO C 9x
3343scandir64 NEW: LFS
3344sendfile NEW: kernel
3345setcontext NEW: Unix98
3346setrlimit64 NEW: LFS
62595351 3347setutxent NEW: Unix98
48244d09
UD
3348sighold NEW: Unix98
3349sigignore NEW: Unix98
3350sigqueue NEW: POSIX.1b
3351sigrelse NEW: Unix98
3352sigset NEW: POSIX.1b
3353sigtimedwait NEW: POSIX.1b
3354sigwaitinfo NEW: POSIX.1b
3355sincos NEW: GNU ext.
3356sincosf NEW: GNU ext.
3357sincosl NEW: GNU ext.
3358statfs64 NEW: LFS
3359statvfs NEW: Unix98
3360statvfs64 NEW: LFS
3361strcasestr NEW: GNU ext.
48244d09
UD
3362strtoimax NEW: ISO C 9x
3363strtoumax NEW: ISO C 9x
3364strverscmp NEW: GNU ext.
e980ca92 3365svcauthdes_stats NEW: Secure RPC
48244d09
UD
3366svcunix_create NEW: sunrpc etx
3367svcunixfd_create NEW: sunrpc ext
3368swapcontext NEW: Unix98
3369tcgetsid NEW: Unix98 PTY
3370tdestroy NEW: GNU ext.
3371tgamma NEW: ISO C 9x
3372tgammaf NEW: ISO C 9x
3373tgammal NEW: ISO C 9x
3374tmpfile64 NEW: LFS
3375trunc NEW: ISO C 9x
3376truncate64 NEW: LFS
3377truncf NEW: ISO C 9x
3378truncl NEW: ISO C 9x
3379umount2 NEW: kernel
3380unlockpt NEW: Unix98 PTY
62595351 3381updwtmpx NEW: Unix98
e980ca92 3382user2netname NEW: Secure RPC
62595351 3383utmpxname NEW: Unix98
48244d09 3384versionsort NEW: GNU ext.
3ef4002b 3385versionsort64 NEW: GNU ext.
48244d09
UD
3386waitid NEW: Unix98
3387wcscasecmp NEW: GNU ext.
3388wcsncasecmp NEW: GNU ext.
3389wcsnlen NEW: GNU ext.
3390wcstoimax NEW: ISO C 9x
3391wcstoll NEW: ISO C 9x
3392wcstoull NEW: ISO C 9x
3393wcstoumax NEW: ISO C 9x
3394wcswcs NEW: Unix98
3395wordexp NEW: POSIX.2
3396wordfree NEW: POSIX.2
3397write_profiling REMOVED
e980ca92
UD
3398xdecrypt NEW: Secure RPC
3399xdr_authdes_cred NEW: Secure RPC
3400xdr_authdes_verf NEW: Secure RPC
3401xdr_cryptkeyarg NEW: Secure RPC
3402xdr_cryptkeyarg2 NEW: Secure RPC
3403xdr_cryptkeyres NEW: Secure RPC
3404xdr_getcredres NEW: Secure RPC
3405xdr_key_netstarg NEW: Secure RPC
3406xdr_key_netstres NEW: Secure RPC
3407xdr_keybuf NEW: Secure RPC
3408xdr_keystatus NEW: Secure RPC
3409xdr_netnamestr NEW: Secure RPC
3410xdr_sizeof NEW: Secure RPC
48244d09 3411xdr_unixcred NEW: sunrpc ext
e980ca92 3412xencrypt NEW: Secure RPC
48244d09 3413~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1770a20d
UD
3414\f
3415Version 2.0.6
3416
3417* more bug fixes
3418
a5a0310d
UD
3419\f
3420Version 2.0.5
3421
3422* more bug fixes
3423
3424* inet_ntoa is thread-safe
3425
3426* updwtmp is moved from libutil to libc
3427
3428* rewrite of cbrt function
3429
3430* update of timezone data
3431\f
3432Version 2.0.4
3433
3434* more bug fixes
3435\f
3436Version 2.0.3
3437
3438* more bug fixes
c84142e8 3439\f
795fbc9a
UD
3440Version 2.0.2
3441
3442* more bug fixes
3443
3444* add atoll function
3445
3446* fix complex problems in Berkeley DB code
e61abf83
UD
3447
3448* fix math functions
795fbc9a
UD
3449\f
3450Version 2.0.1
3451
3452* fixed lots of header problems (especially Linux/GNU specific)
3453
3454* dynamic loader preserves all registers
3455
3456* Roland McGrath provided support for handling of auxiliary objects in
3457 the ELF dynamic loader.
3458
3459* support for parallel builds is improved
3460\f
40a4b79f 3461Version 2.0
28f540f4 3462
d3669add
RM
3463* GNU extensions are no longer declared by default. To enable them you
3464 must define the macro `_GNU_SOURCE' in your program or compile with
3465 `-D_GNU_SOURCE'.
3466
28f540f4
RM
3467* The library has changed from using GNU ld symbol aliases to using weak
3468 symbols where available. The ELF object file format supports weak
3469 symbols; GNU ld also supports weak symbols in the a.out format. (There
3470 is also now support for other GNU ld extensions in ELF. Use the
787126fe
RM
3471 `--with-elf' option to configure to indicate you have ELF, and
3472 `--with-gnu-ld' if using GNU ld.) This change resulted in the deletion
28f540f4
RM
3473 of many files which contained only symbol aliases, reducing the size of
3474 the source and the compiled library; many other files were renamed to
3475 less cryptic names previously occupied by the symbol alias files.
dcf0671d
UD
3476 There is a new header file <elf.h> for programs which operate on
3477 files in the ELF format.
49e522bf
RM
3478
3479* Converted to Autoconf version 2, so `configure' has more options.
3480 Run `configure --help' to see the details.
3481
3482* The library can now be configured to build profiling, highly-optimized
b25c5d66
RM
3483 (but undebuggable), and/or shared libraries (ELF with GNU ld only). The
3484 `--enable-profile', `--enable-omitfp', and `--enable-shared' options to
3485 `configure' enable building these extra libraries. The shared library is
3486 built by default when using both ELF and GNU ld. When shared libraries
3487 are enabled, the new library `-ldl' is available for arbitrary run-time
3488 loading of shared objects; its interface is defined in <dlfcn.h>. The
3489 new header file <link.h> gives access to the internals of the run-time
33a934a3
UD
3490 dynamic linker, `ld.so'. The shell script `ldd' is similar to the
3491 application of same name on other systems and it provides information
3492 about dynamically linked binaries.
49e522bf 3493
71733723
RM
3494* The C library now provides the run-time support code for profiling
3495 executables compiled with `-pg'. Programs can control the profiling code
d3669add
RM
3496 through the interface in <sys/gmon.h>. The `gmon.out' files written by
3497 the GNU C library can be read only by GNU `gprof' (from GNU binutils);
3498 the support for this file format was contributed by David Mosberger-Tang.
71733723 3499
f7eac6eb 3500* The math code has been replaced with a math library based on fdlibm from
33a934a3
UD
3501 Sun, and modified by JT Conklin and Ulrich Drepper with i387 support, by
3502 Ian Taylor with `float' functions and by Ulrich Drepper with `long double'
3503 functions. The math functions now reside in a separate library, so
3504 programs using them will need to use `-lm' their linking commands.
3505
3506* John C. Bowman contributed optimized ix87 assembler inline functions.
f7eac6eb 3507
5f0e6fc7
RM
3508* Ulrich Drepper has contributed support for an `/etc/nsswitch.conf'
3509 mechanism similar to that found in Solaris 2. This is now used for the
33a934a3
UD
3510 group, passwd, hosts, networks, services, protocols, rpc, ethers,
3511 shadow, netgroup, publickey, and alias databases. The `nsswitch.conf'
3512 file controls what services are used for each individual database. This
3513 works by loading shared libraries with names specified in `nsswitch.conf',
3514 so service modules can be changed or added at any time without even
3515 relinking any program. Currently there are the file, db, and NIS based
3516 NSS services available.
5f0e6fc7 3517
49e522bf
RM
3518* The new functions `strtoq' and `strtouq' parse integer values from
3519 strings, like `strtol' and `strtoul', but they return `long long int' and
3520 `unsigned long long int' values, respectively (64-bit quantities).
3521
3522* The new functions `strtof' and `strtold' parse floating-point values from
3523 strings, like `strtod', but they return `float' and `long double' values,
3524 respectively (on some machines `double' and `long double' are the same).
3525
3526* Ulrich Drepper has contributed new implementations of the floating-point
3527 printing and reading code used in the `printf' family of functions and
3528 `strtod', `strtof', and `strtold'. These new functions are perfectly
3529 accurate, and much faster than the old ones.
3530
33a934a3
UD
3531* The implementation of the POSIX locale model was completely rewritten by
3532 Ulrich Drepper. This includes the new programs `localedef' and `locale'
3533 to compile the POSIX locale definition.
3534
3535* The former dummy implementations of the strcoll and strxfrm function are
3536 now replaced by fully functional code contributed by Ulrich Drepper. The
3537 collation information comes from the POSIX locale definitions.
3538
49e522bf
RM
3539* The new header <langinfo.h> defines an interface for accessing
3540 various locale-dependent data (using the locale chosen with `setlocale').
3541
f7eac6eb 3542* Ulrich Drepper has contributed a new suite of functions for operation on
33a934a3 3543 wide-character and multibyte-character strings, in <wchar.h>;
b7407d63 3544 and classification and case conversion of wide characters, in <wctype.h>.
33a934a3
UD
3545 These new functions are conforming to the ISO C, Amendement 1 specification.
3546
3547* There is now a second implementation of the standard I/O library available.
3548 It comes from GNU libg++ as was written by Per Bothner, heavily modified
3549 by Hongjiu Lu and made thread safe by Ulrich Drepper.
f7eac6eb 3550
71733723 3551* You can now use positional parameter specifications in format strings
49e522bf
RM
3552 for the `printf' and `scanf' families of functions. For example,
3553 `printf ("Number %2$d, Mr %1$s\n", "Jones", 6);'' prints
3554 ``Number 6, Mr Jones''. This is mainly useful when providing different
d365fd2c
RM
3555 format strings for different languages, whose grammars may dictate
3556 different orderings of the values being printed. To support this
49e522bf 3557 feature, the interface for `register_printf_handler' has changed; see
d365fd2c 3558 the header file <printf.h> for details.
49e522bf
RM
3559
3560* The `printf' and `scanf' families of functions now understand a new
3561 formatting flag for numeric conversions: the ' flag (e.g. %'d or %'f) says
3562 to group numbers as indicated by the locale; for `scanf' and friends, this
3563 says to accept as valid only a number with all the proper grouping
3564 separators in the right places. In the default "C" locale, numbers are
3565 not grouped; but locales for specific countries will define the usual
3566 conventions (i.e. separate thousands with `,' in the US locale).
28f540f4
RM
3567
3568* The pgrp functions have been regularized, slightly incompatibly but much
3569 less confusingly. The core functions are now `getpgid' and `setpgid',
3570 which take arguments for the PID to operate on; the POSIX.1 `getpgrp' (no
3571 argument) and BSD `setpgrp' (identical to `setpgid') functions are
3572 provided for compatibility. There is no longer an incompatible `getpgrp'
3573 with an argument declared under _BSD_SOURCE; no BSD code uses it.
3574
3575* The new header file <fts.h> and suite of functions simplify programs that
3576 operate on directory trees. This code comes from 4.4 BSD.
3577
33a934a3
UD
3578* The resolver code has been updated from the BIND 4.9.5-P1 release.
3579 Parts of the code were heavily modified by Ulrich Drepper to fit in the
3580 NSS scheme used in glibc.
28f540f4 3581
28f540f4
RM
3582* There is a new malloc debugging hook `__memalign_hook'.
3583
3584* There are new typedefs `ushort' for `unsigned short int' and `uint' for
3585 `unsigned int' in <sys/types.h>. These are for compatibility only and
3586 their use is discouraged.
3587
3588* The `-lmcheck' library to enable standard malloc debugging hooks is now
3589 done differently, so that it works even without GNU ld.
787126fe 3590
22a1292a
RM
3591* New function `euidaccess' checks allowed access to a file like `access',
3592 but using the effective IDs instead of the real IDs.
49e522bf
RM
3593
3594* The time zone data files have been updated for the latest and greatest
3595 local time conventions of the countries of the world.
3596
3597* The new function `dirfd' extracts the file descriptor used by a DIR stream;
3598 see <dirent.h>.
3599
3600* The new functions `ecvt', `fcvt', and `gcvt' provide an obsolete interface
3601 for formatting floating-point numbers. They are provided only for
33a934a3
UD
3602 compatibility; new programs should use `sprintf' instead. There are
3603 also equivalent function for the `long double' floating-point type and
3604 all functions also exist in a reentrant form.
342414a6
RM
3605
3606* The new auxiliary library `-lutil' from 4.4 BSD contains various
3607 functions for maintaining the login-record files (primarily of use to
3608 system programs such as `login'), and convenient functions for
3609 allocating and initializing a pseudo-terminal (pty) device.
c709e372
RM
3610
3611* Ulrich Drepper has contributed new support for System V style
3612 shared memory and IPC on systems that support it.
3613
3614* Ulrich Drepper has contributed several miscellaneous new functions found
3615 in System V: The `hsearch' family of functions provide an effective
3616 implementation of hash tables; `a64l' and `l64a' provide a very simple
3617 binary to ASCII mapping; `drand48' and friends provide a 48-bit random
3618 number generator.
3619
3620* Ulrich Drepper has contributed new reentrant counterparts for the
3621 `random' and `hsearch' families of functions; `random_r', `hsearch_r', etc.
3622
3623* Ulrich Drepper has contributed new, highly-optimized versions of several
3624 string functions for the i486/Pentium family of processors.
3625
71733723 3626* Ulrich Drepper has updated the Linux-specific code, based largely
c709e372 3627 on work done in Hongjiu Lu's version of GNU libc for Linux.
33a934a3
UD
3628 The GNU library now supports Linux versions 2.0.10 and later,
3629 using the ELF object file format (i[3456]86-*-linux).
c709e372 3630
d3669add
RM
3631* Andreas Schwab has ported the C library to Linux/m68k (m68k-*-linux).
3632
33a934a3
UD
3633* David Mosberger-Tang and Richard Henderson have ported the C library
3634 to Linux/Alpha (alpha-*-linux). Richard Henderson contributed the
3635 dynamic linking support for ELF/Alpha.
3636
3637* Richard Henderson contributed several Alpha optimized assembler function
3638 for arithmetic and string handling.
d3669add 3639
c709e372 3640* Ulrich Drepper has contributed a new set of message catalog functions to
40a4b79f
RM
3641 support multiple languages using the <libintl.h> interface, for use with
3642 his new package GNU gettext. Translation volunteers have contributed
3643 catalogs of the library's messages in Spanish, German, and Korean.
3644
3645* For compatibility with XPG4, Ulrich Drepper has contributed the `gencat'
3646 program and the `catgets' function for reading the catalog files it
3647 creates. (The <libintl.h> interface is preferred; we include the
3648 <nl_types.h> interface using `catgets' only for source compatibility with
3649 programs already written to use it.)
71733723
RM
3650
3651* New header file <values.h> gives SVID-compatible names for <limits.h>
3652 constants.
3653
3654* Various new macros, declarations, and small header files for compatibility
3655 with 4.4 BSD.
3656
3657* New function `group_member' is a convenient way to check if a process has
3658 a given effective group ID.
3659
3660* When using GCC 2.7 and later, the socket functions are now declared in a
3661 special way so that passing an argument of type `struct sockaddr_in *',
3662 `struct sockaddr_ns *', or `struct sockaddr_un *' instead of the generic
3663 `struct sockaddr *' type, does not generate a type-clash warning.
3664
3665* New function `error' declared in header file <error.h> is a convenient
6d52618b 3666 function for printing error messages and optionally exiting; this is the
71733723
RM
3667 canonical function used in GNU programs. The new functions `err', `warn',
3668 and friends in header file <err.h> are the canonical 4.4 BSD interface for
3669 doing the same thing.
3670
3671* The <glob.h> interface has several new flags from 4.4 BSD that extend the
3672 POSIX.2 `glob' function to do ~ and {...} expansion.
3673
3674* New function `unsetenv' complements `setenv' for compatibility with 4.4 BSD.
33a934a3 3675 `clearenv' which is used in POSIX.9 is also available.
71733723
RM
3676
3677* New function `getsid' returns session ID number on systems that support it.
3678
f7eac6eb
RM
3679* We have incorporated the 4.4 BSD `db' library (version 1.85). New header
3680 files <db.h> and <mpool.h> provide a rich set of functions for several
3681 types of simple databases stored in memory and in files, and <ndbm.h> is
6d52618b 3682 an old `ndbm'-compatible interface using the `db' functions. Link with
999493cb 3683 `-ldb' to get these functions.
f7eac6eb
RM
3684
3685* New macro `strdupa' copies a string like `strdup', but uses local stack
3686 space from `alloca' instead of dynamic heap space from `malloc'.
52e9a9d1
RM
3687
3688* New function `strnlen' is like `strlen' but searches only a given maximum
33a934a3
UD
3689 number of characters for the null terminator. `stpncpy', `strndup' and
3690 `strndupa' are similar variants for the `stpcpy', `strdup' and `strdupa'
3691 function.
40a4b79f
RM
3692
3693* New function `statfs' in header <sys/statfs.h>.
3694
3695* The new <argz.h> and <envz.h> interfaces contributed by Miles Bader
3696 provide convenient functions for operating on blocks of null-terminated
3697 strings.
3698
3699* A new suite of functions in <utmp.h> handle all the details of reading
3700 and writing the utmp file.
33a934a3
UD
3701
3702* An implementation of the NIS/YP(tm) based NSS service was contributed by
3703 Thorsten Kukuk.
3704
3705* Paul Eggert and Ulrich Drepper modified the `strftime' function to be
3706 completely POSIX compliant and also implemented the extended functionality
3707 to handle alternate digit representation and alternate era date formats.
3708
3709* Ulrich Drepper provided an implementation of the `strptime' function
3710 defined in XPG4.2 which transforms a string into a `struct tm' value.
3711
3712* Paul Eggert provided the tzselect shell script as part of the timezone
3713 code. The shell script makes it easy to select the correct timezone
3714 specification.
3715
3716* The implementation of the malloc family of functions is completely replaced
3717 by a new implementation by Doug Lea with many improvements by Wolfram Gloger.
3718 The implementation uses the mmap function (if available) and it is
3719 optimized for the use in multi threaded programs.
3720
3721* Ulrich Drepper contributed a MD5 "encryption" for the crypt family of
3722 functions. This new functionality is usable by specifying a special
3723 salt string and it is compatible with implementation on *BSD systems.
3724
3725* Lots of functions from the XPG4.2 standard were added by Ulrich Drepper:
3726 `getsubopt' to handle second level command line options, `bsd_signal'
3727 to access BSD style `signal' functionality, the obsolete `regexp' style
3728 expression matcher.
3729
3730* the `lchown' function is available on system which support this
3731 functionality.
3732
3733* The implementation of the shadow password handling function was contributed
3734 by Ulrich Drepper.
3735
3736* David Mosberger-Tang changed the SunRPC implementation to be 64bit safe.
3737
3738* POSIX.1g support was added. The <sys/select.h> header is available,
3739 `isfdtype' and `pselect' are implemented. Craig Metz contributed an
3740 implementation of `getaddrinfo'.
28f540f4
RM
3741\f
3742Version 1.09
3743
3744* For cross-compilation you should now set `BUILD_CC' instead of `HOST_CC'.
3745
3746* New header file <fstab.h> and new functions `getfsspec', `getfsent' and
3747 friends, for parsing /etc/fstab. This code comes from 4.4 BSD.
3748
3749* The new function `daemon' from 4.4 BSD is useful for server programs that
3750 want to put themselves in the background.
3751
3752* Joel Sherrill has contributed support for several standalone boards that
3753 run without an operating system.
3754
3755* `printf', `scanf' and friends now accept a `q' type modifier for long
3756 long int as well as `ll'. Formats using these might be `%qu' or `%lld'.
3757
3758* All of the code taken from BSD (notably most of the math and networking
3759 routines) has been updated from the BSD 4.4-Lite release.
3760
3761* The resolver code has been updated from the BIND-4.9.3-BETA9 release.
3762
3763* The new functions `getdomainname' and `setdomainname' fetch or change the
3764 YP/NIS domain name. These are system calls which exist on systems which
3765 have YP (aka NIS).
3766
3767* The time zone data files have been updated for the latest international
3768 conventions.
3769
3770* The SunRPC programs `portmap' and `rpcinfo' are now installed in
3771 $(sbindir) (usually /usr/local/sbin) instead of $(bindir).
3772\f
3773Version 1.08
3774
3775* The C library now includes support for Sun RPC, from Sun's free
3776 RPCSRC-4.0 distribution. The `portmap', `rpcinfo', and `rpcgen' programs
3777 are included. (There is still no support for YP.)
3778
3779* Tom Quinn has contributed a port of the C library to SGI machines running
3780 Irix 4 (mips-sgi-irix4).
3781
3782* The new `lockf' function is a simplified interface to the locking
3783 facilities of `fcntl', included for compatibility.
3784
3785* New time functions `timegm', `timelocal', and `dysize' for compatibility.
3786
3787* New header file <sys/timeb.h> and new function `ftime' for compatibility.
3788
3789* New header files <poll.h> and <sys/poll.h> and new function `poll' for
3790 compatibility.
3791
3792* The error message printed by `assert' for a failed assertion now includes
3793 the name of the program (if using GNU ld) and the name of the calling
3794 function (with versions of GCC that support this).
3795
3796* The `psignal' function is now declared in <signal.h>, not <stdio.h>.
3797
3798* The library now includes the <sys/mman.h> header file and memory
3799 management functions `mmap', `munmap', `mprotect', `msync', and
3800 `madvise', on systems that support those facilities.
3801
3802* The interface for `mcheck' has changed slightly: the function called to
3803 abort the program when an allocation inconsistency is detected now takes
3804 an argument that indicates the type of failure. The new function
3805 `mprobe' lets you request a consistency check for a particular block at
3806 any time (checks are normally done only when you call `free' or `realloc'
3807 on a block).
3808
3809* It is now possible to easily cross-compile the C library, building on one
3810 system a library to run on another machine and/or operating system. All
3811 you need to do is set the variable `HOST_CC' in `configparms' to the
3812 native compiler for programs to run on the machine you are building on (a
3813 few generator programs are used on Unix systems); set `CC' to the
3814 cross-compiler.
3815
3816* The new function `fexecve' (only implemented on the GNU system) executes
3817 a program file given a file descriptor already open on the file.
3818\f
3819Version 1.07
3820
3821* Brendan Kehoe has contributed most of a port to the DEC Alpha
3822 running OSF/1 (alpha-dec-osf1). He says it is 75% complete.
3823
3824* You can set the variable `libprefix' in `configparms' to specify a prefix
3825 to be prepended to installed library files; this makes it easy to install
3826 the GNU C library to be linked as `-lgnuc' or whatever.
3827
3828* The new `stpncpy' is a cross between `stpcpy' and `strncpy': It
3829 copies a limited number of characters from a string, and returns the
3830 address of the last character written.
3831
3832* You no longer need to check for whether the installed `stddef.h' is
3833 compatible with the GNU C library. configure now checks for you.
3834
3835* You can now define a per-stream `fileno' function to convert the
3836 stream's cookie into an integral file descriptor.
3837
3838* ``malloc (0)'' no longer returns a null pointer. Instead, it
3839 allocates zero bytes of storage, and returns a unique pointer which
3840 you can pass to `realloc' or `free'. The behavior is undefined if
3841 you dereference this pointer.
3842
3843* The C library now runs on Sony NEWS m68k machines running either
3844 NewsOS 3 or NewsOS 4.
3845
3846* The new `syscall' function is a system-dependent primitive function
3847 for invoking system calls. It has the canonical behavior on Unix
3848 systems, including unreliable return values for some calls (such as
3849 `pipe', `fork' and `getppid').
3850
3851* The error code `EWOULDBLOCK' is now obsolete; it is always defined
3852 to `EAGAIN', which is the preferred name. On systems whose kernels
3853 use two distinct codes, the C library now translates EWOULDBLOCK to
3854 EAGAIN in every system call function.
3855\f
3856Version 1.06
3857
3858* The GNU C Library Reference Manual is now distributed with the library.
3859 `make dvi' will produce a DVI file of the printed manual.
3860 `make info' will produce Info files that you can read on line using C-h i
3861 in Emacs or the `info' program.
ea278354 3862 Please send comments on the manual to bug-glibc-manual@gnu.org.
28f540f4
RM
3863
3864* The library now supports SVR4 on i386s (i386-unknown-sysv4).
3865
3866* Brendan Kehoe has contributed a port to Sun SPARCs running Solaris 2.
3867
3868* Jason Merrill has contributed a port to the Sequent Symmetry running
3869 Dynix version 3 (i386-sequent-dynix).
3870
3871* The library has been ported to i386s running SCO 3.2.4 (also known as SCO
3872 ODT 2.0; i386-unknown-sco3.2.4) or SCO 3.2 (i386-unknown-sco3.2).
3873
3874* New function `memory_warnings' lets you arrange to get warnings when
3875 malloc is running out of memory to allocate, like Emacs gives you.
3876
3877* The C library now contains the relocating allocator used in Emacs 19 for
3878 its editing buffers. This allocator (ralloc) minimizes allocation
3879 overhead and fragmentation by moving allocated regions around whenever it
3880 needs to. You always refer to a ralloc'd region with a "handle" (a
3881 pointer to a pointer--an object of type `void **').
3882
3883* There is a new `printf' format: `%m' gives you the string corresponding
3884 to the error code in `errno'.
3885
3886* In `scanf' formats, you can now use `%as' or `%a[' to do the normal `%s'
3887 or `%[' conversion, but instead of filling in a fixed-sized buffer you
3888 pass, the `a' modifier says to fill in a `char **' you pass with a
3889 malloc'd string.
3890
3891* The `fnmatch' function supports the new flag bits `FNM_LEADING_DIR' and
3892 `FNM_CASEFOLD'. `FNM_LEADING_DIR' lets a pattern like `foo*' match a
3893 name like `foo/bar'. `FNM_CASEFOLD' says to ignore case in matching.
3894
3895* `mkstemp' is a traditional Unix function to atomically create and open a
3896 uniquely-named temporary file.
3897\f
3898Version 1.05
3899
3900* The standard location for the file that says what the local timezone is
3901 has changed again. It is now `/usr/local/etc/localtime' (or more
3902 precisely, `${prefix}/etc/localtime') rather than `/etc/localtime'.
3903
3904* The distribution no longer contains any files with names longer than 14
3905 characters.
3906
3907* `struct ttyent' has two new flag bits: TTY_TRUSTED and TTY_CONSOLE.
3908 These are set by the new `trusted' and `console' keywords in `/etc/ttys'.
3909
3910* New functions `ttyslot' and `syslog' from 4.4 BSD.
3911\f
3912Version 1.04
3913
3914* The configuration process has changed quite a bit. The `configure'
3915 script is now used just like the configuration scripts for other GNU
3916 packages. The `sysdeps' directory hierarchy is much rearranged.
3917 The file `INSTALL' explains the new scheme in detail.
3918
3919* The header files no longer need to be processed into ANSI C and
3920 traditional C versions. There is just one set of files to install, and
3921 it will work with ANSI or old C compilers (including `gcc -traditional').
3922
3923* Brendan Kehoe and Ian Lance Taylor have ported the library to the
3924 MIPS DECStation running Ultrix 4.
3925
3926* The Sun 4 startup code (crt0) can now properly load SunOS 4 shared libraries.
3927 Tom Quinn contributed the initial code. The GNU C library can NOT yet be
3928 made itself into a shared library.
3929
3930* Yet further improved support for the i386, running 4.3 BSD-like systems
3931 (such as Mach 3 with the Unix single-server), or System V.
3932
3933* New function `strncasecmp' to do case-insensitive string comparison
3934 with limited length.
3935
3936* New function `strsep' is a reentrant alternative to `strtok'.
3937
3938* New functions `scandir' and `alphasort' for searching directories.
3939
3940* New function `setenv' is a better interface to `putenv'.
3941
3942* Ian Lance Taylor has contributed an implementation of the SVID `ftw'
3943 function for traversing a directory tree.
3944
3945* The GNU obstack package is now also part of the C library.
3946 The new function `open_obstack_stream' creates a stdio stream that
3947 writes onto an obstack; `obstack_printf' and `obstack_vprintf' do
3948 formatted output directly to an obstack.
3949
3950* Miscellaneous new functions: reboot, nice, sigaltstack (4.4 BSD only),
3951 cfmakeraw, getusershell, getpass, swab, getttyent, seteuid, setegid.
3952
3953* `FNM_FILE_NAME' is another name for `FNM_PATHNAME', used with `fnmatch'.
3954
3955* The new functions `strfry' and `memfrob' do mysterious and wonderful
3956 things to your strings.
3957
3958* There are some new test programs: test-fseek, testmb, and testrand.
3959
3960* Some work has been done to begin porting the library to 4.4 BSD and Linux.
3961 These ports are not finished, but are a good starting place for really
3962 supporting those systems.
3963
3964* `/etc/localtime' is now the standard location for the file that says what
3965 the local timezone is, rather than `/usr/local/lib/zoneinfo/localtime'.
3966 This follows the general principle that `/etc' is the place for all local
3967 configuration files.
3968
3969* The C library header files now use `extern "C"' when used by the C++
3970 compiler, so the C library should now work with C++ code.
3971
3972* The header file <bstring.h> is gone. <string.h> now declares bcopy,
56ddf355
UD
3973 bcmp, bzero, and ffs. (Update: nowadays these functions are declared
3974 in <strings.h>.)
28f540f4
RM
3975
3976* Mike Haertel (of GNU e?grep and malloc fame) has written a new sorting
3977 function which uses the `merge sort' algorithm, and is said to be
3978 significantly faster than the old GNU `qsort' function. Merge sort is
3979 now the standard `qsort' function. The new algorithm can require a lot
3980 of temporary storage; so, the old sorting function is called when the
3981 required storage is not available.
3982
3983* The C library now includes Michael Glad's Ultra Fast Crypt, which
3984 provides the Unix `crypt' function, plus some other entry points.
28f540f4
RM
3985
3986* The code and header files taken from 4.4 BSD have been updated with the
3987 latest files released from Berkeley.
3988\f
3989----------------------------------------------------------------------
3990Copyright information:
3991
58b587c1 3992Copyright (C) 1992-2017 Free Software Foundation, Inc.
28f540f4
RM
3993
3994 Permission is granted to anyone to make or distribute verbatim copies
3995 of this document as received, in any medium, provided that the
3996 copyright notice and this permission notice are preserved,
3997 thus giving the recipient permission to redistribute in turn.
3998
3999 Permission is granted to distribute modified versions
4000 of this document, or of portions of it,
4001 under the above conditions, provided also that they
4002 carry prominent notices stating who last changed them.
4003\f
4004Local variables:
4005version-control: never
1086d70d 4006fill-column: 76
557a9213 4007End: