X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=WHATSNEW;h=6fa87652707ae578ff6340b48296785efd6e15b7;hb=2d67ae923d11d766d9a6cea714fa487b52579f6a;hp=a192f56d679227f210b0acc189b505066f35f130;hpb=372a948b8139c6583045b2cd91b6b91fcb2e5881;p=musl diff --git a/WHATSNEW b/WHATSNEW index a192f56d..6fa87652 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -963,7 +963,7 @@ arch-specific bugs fixed: 0.9.12 release notes -new feastures: +new features: - zoneinfo time zone support - PIE support on all supported archs - named sub-archs for endian and float ABI variants @@ -997,3 +997,416 @@ arch-specific bugs: - wrong SIG_ATOMIC_MIN/MAX macros on x86_64 - erfcl was missing on archs where long double is same as double - broken dynamic-model TLS in static-linked arm/mips/powerpc programs + + + +0.9.13 release notes + +new features: +- iconv support for EUC-KR and Big5 (including HKSCS) encodings +- field widths (POSIX 2008 feature) in strftime +- recursive rpath and $ORIGIN support in dynamic linker +- cpu affinity interfaces +- support for armhf (hardfloat) floating point environment (fenv) +- support for SSE fenv on i386 (for apps using -mfpmath=sse -msse2) +- strftime %s format (seconds since the epoch, future POSIX requirement) +- configure script now saves its command line as a comment in config.mak +- legacy functions valloc and euidaccess + +performance: +- optimized asm memcpy for arm +- optimized asm memset for i386 and x86_64 +- optimized C versions of memcpy and memset for all archs +- eliminated major spurious syscalls from posix_spawn +- some math asm for armhf (hardfloat) + +workarounds for: +- qemu-user's rt_sigaction syscall does not allow old to alias new +- qemu-user's madvise always succeeds (broke pthread_getattr_np) +- passing PT_INTERP to dlopen attempted to double-load libc +- gcc 4.8.x generating self-referential (infinite recursion) memcpy/memset +- linux's lack of support for fchdir, fchmod, fchown, fstat on O_PATH fds + +bugs fixed: +- failure to honor flags for fchmodat and faccessat (linux syscall api flaws) +- SIGEV_THREAD timer id corruption and race condition issues +- timer thread TLS incorrectly keeping values from previous expiry run +- ecvt/fcvt decimal position off-by-one +- in symbol-versioned libs, symbol resolved to oldest instead of newest +- posix_spawn not correctly reporting errno from exec failure +- "make install" was not atomic (overwrote files rather than replacing) +- integer overflows in strftime +- unset/empty TZ variable was mishandled +- strftime could crash if the struct tm did not have valid tm_zone field +- failure of fenv functions to handle invalid arguments (required by ISO C) +- failure of some math functions (C and i386 asm) to raise underflow flag +- broken dn_expand function (previously not used internally) +- race conditions with signals during fork +- incorrect access check in mktemp (obsolete function) +- unnecessary arbitrary limits on size of program headers in dynamic loader +- text formatting bugs in output of err.h functions + +arch-specific bugs: +- fesetenv(FE_DFL_ENV) crashed on i386 +- breakage of arm crt code when libc is compiled as thumb +- arm/armhf (hardfloat) misidentified by configure +- ambiguity of wait (exit status) macros on mips with signal number 127 +- wrong value of _NSIG and SIGRTMAX on mips + + + +0.9.14 release notes + +bugs fixed: +- failure to properly install dynamic linker with DESTDIR set (symlink wrong) +- rare deadlock in libc-internal locking routines +- dynamic linker used fallback paths wrongly on (possibly transient) errors +- popen broken when stdin or stdout was already closed in parent +- deadlock/memory-corruption in multithreaded set*id and setrlimit functions +- realpath failed when file was not readable +- readpath mistakenly had cancellation points in it +- crashes in scanf with invalid %m conversion specifiers +- misclassificiation of some invalid ld80 float representation in fpclassify +- various overflow and underflow flag issues in math functions +- domain handling errors for acoshf and acoshl +- wrong values for some sysconf properties +- lack of proper memory barriers on arm + +mips-specific bugs: +- broken sysv ipc structures +- multiple stack-related bugs in clone, leading to crashes in parent or child +- overflow writing sigset_t in multithreaded set*id and setrlimit functions + +other improvements: +- size and performance improvements to various math functions +- wait.h as a compatibility alias for sys/wait.h +- various header improvements +- support for runtime-variable page size on archs that need it (mainly mips) + + + +0.9.15 release notes + +new features: +- support for mixing IPv4 and v6 nameserver addresses in resolv.conf +- RFC 3678 multicast structures/macros in netinet/in.h +- putspent and fgetspent functions (shadow password API) +- timef function (obsolete, removed in POSIX 2008) +- fanotify syscalls (Linux-specific feature) +- semtimedop syscall (Linux-specific sysvipc extension) +- quotactl syscall and header (filesystem quotas support) +- drem and finite functions (obsolete BSD functions) +- getloadavg function (non-standard) +- herror function (non-standard and obsolete) +- libc.so now stores and prints its version information +- expose constants for new Linux features including O_TMPFILE +- implement FNM_LEADING_DIR option to fnmatch (GNU extension) +- posix_close function (accepted for inclusion in next POSIX issue) + +bugs fixed: +- buffer overflow in mbsrtowcs +- clobbering of gr_name in getgrnam_r and getgrgid_r +- execle ignoring the environment argument +- setenv crash on malloc failure +- out-of-bounds access in fnmatch with FNM_PATHNAME and certain patterns +- failure of malloc to set errno when failing to extend heap +- incorrect errno value from getcwd with zero size +- spurious failure in faccessat with AT_EACCESS flag with suid/sgid programs +- several fd leaks due to missing close-on-exec flag +- misspellings/typos in macro names in several headers +- incorrect failure return value in inet_pton +- various numeric ip address parsing and validation fixes +- namespace conformance issues in several headers +- minor header issues +- zombie processes left by faccessat with AT_EACCESS +- timezone file parser failing/crashing on 64-bit archs +- hang in localtime with near-overflowing time_t values on 64-bit archs +- timezone path search was only trying first path +- incorrect handling of excessive-length TZ environment strings +- timezone file loading was wrongly enforcing O_NOFOLLOW/rejecting symlinks +- iswspace was wrongly returning true for the null character +- various bugs in wordexp +- putgrent could write corrupt lines after write failures +- dn_expand misinterpreted in-packet offsets greater than 255 +- spurious strftime/wcsftime failure on len+1==bufsize case +- incorrect underflow flag in fma corner cases +- log*(0) wrongly returned +inf in downward-rounding mode +- failure of fchmod, fstat, fchdir, and fchown to produce EBADF + +arch-specific bugs fixed: +- i386: failure of fesetround to set sse rounding mode +- i386: floating point limit constants misinterpreted due to excess precision +- powerpc: broken thread pointer access when compiled with clang +- microblaze: dynamic linker entry point code possibly clobbering argv + +strict conformance issues: +- NULL definition re-aligned with POSIX (requires (void *) cast) +- alignment of math.h is* comparison functions with C11 annex F requirements + + + +1.0.0 release notes + +new features: +- support for mips softfloat ABI variant +- legacy setkey and encrypt API for DES +- support for BSD version of struct tcphdr in addition to GNU version +- added ipv6 and icmpv6 protocol lookups to getprotoent-family functions + +new experimental ports: +- sh (SuperH) +- x32 (ILP32 ABI for x86_64) + +compatibility: +- improved c89 compiler support in math.h +- eliminate some compiler warnings in public headers +- added some missing things for LFS64 APIs +- added fallback emulation of accept4 for older kernels + +bugs fixed: +- buffer overflow in printf when printing smallest denormal exactly +- rounding errors in printf in some just-over-halfway cases +- posix_spawn did not accept null pid pointer (crashed) +- ftello gave incorrect result for unflushed append-mode streams +- mishandling of n=0 case in wcsxfrm (wild buffer overrun) +- possible system breakage during libc upgrade due to install.sh bugs +- nftw FTW_MOUNT flag prevented walking any directories at all +- ptsname/ptsname_r returned negated error codes +- getprotoent function returned junk after listing valid protocols +- wrong error code from readdir when the directory has been deleted +- various prototype/argument-type fixes, mostly to legacy functions +- various header namespace violations + +arch-specific bugs fixed: +- fesetenv(FE_DFL_ENV) was broken on i386 and x86_64 +- strerror(EDQUOT) did not work on mips +- recvmsg/sendmsg were broken on powerpc +- sysv ipc was broken on powerpc and mips +- statfs/statvfs were broken on mips +- sigaltstack was broken on mips + + + +1.1.0 release notes + +new features: +- relro memory protection in dynamic linker +- malloc can now extend heap with mmap if brk fails +- vdso clock_gettime/gettimeofday/time acceleration on x86_64 +- thread/library-safe versions of search.h functions (nonstandard) +- getauxval function (nonstandard) +- sysconf extensions to query physical memory size + +bugs fixed: +- floating point printf output corruption from carry into uninitialized slot +- possible runaway carry overflow in printf floating point +- printf %g failure to strip trailing zeros in some cases +- search past end of haystack in memmem +- off-by-one error in confstr return value +- crashes in some near-empty static programs that use stack protector +- deadlock race in pthread_once +- non-working clock_gettime fallback for old kernels + +arch-specific bugs fixed: +- crash from missing syscall asm register clobbers on real microblaze kernel +- crash in all nontrivial dynamic linker use on microblaze +- incorrect rlimit constants on mips +- broken, possibly dangerous, use of getrlimit syscall on x32 in sysconf + + + +1.1.1 release notes + +new features: +- new options --preload and --library-path to dynamic linker +- public execvpe function (nonstandard extension) +- iconv support for cp437 and cp850 + +bugs fixed: +- false negatives with some periodic needles in strstr, wcsstr, and memmem +- crash on invalid zoneinfo files +- incorrect zero-padding of some outputs for strftime %s specifier +- misreporting of errors in configure script when $CC does not work at all +- treating not-yet-implemented strptime specifiers as errors + +compatibility: +- configure now detects serious constant-folding bug in gcc 4.9.0 +- removed __yield symbol (unused) that clashed with some compilers +- improvements to sysconf's handling of unsupported/invalid arguments + +arch-specific bugs fixed: +- misdetection of superh ABI variant by configure on gcc 3.x +- missing SO_RCVBUFFORCE and SO_SNDBUFFORCE in mips socket.h +- build regression on armv6 and later with -mthumb + + + +1.1.2 release notes + +new features: +- multi-protocol matches (tcp and udp) in getaddrinfo +- support for AI_V4MAPPED and AI_ALL flags to getaddrinfo +- reverse name lookups from /etc/hosts +- reverse service lookups from /etc/services +- support for service aliases in /etc/services +- ipsec and tunneling protocols to getprotoent-family functions +- res_send, res_mkquery, res_querydomain, and dn_comp functions +- ipv6 scope id handling for link-local scope addresses +- previously-unimplemented %C and %y in strptime now work +- vdso clock_gettime acceleration on i386 (new kernel feature) +- better O_CLOEXEC/SOCK_CLOEXEC fallbacks for old kernels + +bugs fixed: +- buffer overflow in dns response parsing (CVE-2014-3484) +- possible infinite loop in dns response parsing +- sendfile off_t 32/64-bit size mismatch +- incorrect end pointer in some cases when wcsrtombs stops early +- incorrect if_nametoindex return value when interface does not exist +- dummy "ent" function aliases that possibly shadowed real ones +- tmpfile fd leak on memory exhaustion +- getaddrinfo returning EAI_NONAME for some transient failures + +arch-specific bugs fixed: +- broken kernel side RLIM_INFINITY on mips +- incorrect syscall argument 6/7 types for pselect on x32 + + + +1.1.3 release notes + +new features: +- address sorting in getaddrinfo, etc. modeled on rfc 3484/6724 +- default timezone taken from /etc/localtime when $TZ is unset +- getopt double-colon extension for optional arguments +- support for TLSDESC-based (gnu2) TLS dialect on i386 and x86_64 +- sendmmsg/recvmmsg (linux-specific) +- fmtmsg (last mandatory XSI function that was missing) + +compatibility: +- treat dns rcode=2 as temporary failure, not negative result +- working thread-pointer for pre-2.6 kernels on i386 +- further ABI-compat symbols: __xmknod[at], __sysv_signal + +bugs fixed: +- memmem false positives/false negatives/crashes from invalid logic +- gethostby*_r not setting result pointer to null on failure +- aliasing violations in syscall.h SYSLOG_NAMES feature +- fanotify_mark syscall arguments wrong + +arch-specific bugs fixed: +- various subtle relocation bugs in powerpc and sh dynamic linker + + + +1.1.4 release notes + +new features: +- experimental locale support for LC_MESSAGES and LC_TIME +- non-stub gettext family functions for message translation +- or1k (OpenRISC 1000) port +- syslog options LOG_CONS and LOG_PERROR +- issetugid function (from OpenBSD) +- improved if_nameindex and getifaddrs functions + +compatibility: +- work around bug #61144 in gcc 4.9.0 and 4.9.1 +- support getauxval(AT_SECURE) even on kernels without AT_SECURE + +bugs fixed: +- empty dynamic linker error messages (regression in 1.1.3) +- if_nameindex omitted unconfigured and ipv6-only interfaces +- incorrect return value for fwide function +- failure of wide printf/scanf functions to set wide orientation +- multiple issues in legacy function getpass +- dynamic linker did not accept colon as a separator for LD_PRELOAD +- errno clobber in syslog caused wrong output for %m specifier +- crash in regexec for nonzero nmatch argument with REG_NOSUB +- minor bugs in rarely-used nl_langinfo item lookups + +arch-specific bugs fixed: +- broken relocations in mips dynamic linker (regression in 1.1.3) +- register state corruption in setjmp asm for microblaze +- broken struct stat st_ino field on microblaze +- broken struct stat st_dev field on big endian mips +- broken asm register constraints in atomics on powerpc +- missing barriers in atomics on mips, powerpc, microblaze, and sh + + + +1.1.5 release notes + +new features: +- full C11 coverage (threads, UTF-16/32 API, timespec_get, etc.) +- malloc_usable_size function (nonstandard) +- support for new F_OFD_* fcntl operations (linux 3.15, POSIX-future) +- new _DEFAULT_SOURCE feature test macro to request default profile + +performance: +- private-futex support +- redesigned cond var implementation with major performance improvement +- tweaked spinning in userspace before performing futex waits + +bugs fixed: +- failure of dn_expand to null-terminate name for crafted DNS packets +- corruption of cond var mutex state when switching mutexes +- use of uninitialized memory with application-provided thread stacks +- false ownership of orphaned mutexes due to tid reuse +- possible failure-to-wake for robust mutexes on owner death +- subtle errors in robust mutex unrecoverable status handling +- missing memory/compiler barrier spinning to obtain locks +- wrong behavior in various zero-length stdio operations +- buffer overflow in swab with odd argument +- incorrect sequence generation in the rand48 family of prng functions +- missing cancellation check in non-wait paths of sem_wait, pthread_join +- missing barrier in pthread_once fast path +- memory leak in regexec when input contains illegal sequence +- various parser bugs in regcomp +- wrong return value on overflow in some strtoul-family functions +- broken CPU_EQUAL macro in sched.h +- dlerror not working in static-linked programs +- mishandling of negative non-whole-hour TZ offsets +- incorrect case mappings for U+00DF +- namespace pollution via accidentally-non-static function named "dummy" +- missing __fpclassifyl and __signbitl definitions for ld64 archs + + + +1.1.6 release notes + +new features: +- getopt '-' flag for processing non-option arguments +- getopt_long argument permutation extension +- getopt_long abbreviated options +- ns_parserr and related DNS-packet-parsing functions +- fnmatch FNM_CASEFOLD extension +- support for translation of getopt error messages +- login_tty function (legacy) + +performance: +- efficient atomics on armv7+ targets +- pthread_once shrink-wrapping of fast path + +compatibility: +- baseline arm binaries now work on new cpus/kernels without kuser_helper +- dynamic linker now honors DT_RUNPATH without DT_RPATH (new binutils) +- arm asm is now compatible with clang's internal assembler +- suppress macro implementations of functions when headers are used in C++ +- increased message length limit for syslog + +bugs fixed: +- open ignored file creation mode argument for O_TMPFILE +- wrong printf formatting for %#.0o with value zero +- missing private state for uchar.h functions (null ps pointer) +- sched_getaffinity left uninitialized data in output bit array +- wrong return values for pthread_getaffinity_np and pthread_setaffinity_np +- buggy handling of multibyte option chars with arguments in getopt +- printf failed to report or stop on write errors +- printf failed to honor '+' modifier when printing NANs +- wcsnrtombs returned the wrong value in one code path +- syslog failed to check for connect error +- multi-threaded set*id() had spurious failures from ugly workaround code +- various minor header conformance bugs (signedness, constant expressions, ...) + +arch-specific bugs fixed: +- on or1k, some syscalls with 64-bit arguments were broken (misaligned) +- usage of sahf instruction on x86_64 crashed on some early cpu models