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