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