@@ -1907,3 +1907,173 @@ bugs fixed:
1907
1907
arch-specfic bugs fixed:
1908
1908
- x32 unistd.h wrongly reported LP64 instead of ILP32
1909
1909
- aarch64 signal.h had wrong type for ucontext_t uc_link member
1910
+
1911
+
1912
+ 1.1.20 release notes
1913
+
1914
+ new features:
1915
+ - m68k port
1916
+ - replacement of malloc is now allowed/supported
1917
+ - setvbuf now accepts caller-provided buffers for stdio streams
1918
+ - getrandom syscall wrapper, getentropy function
1919
+ - mlock2 syscall wrapper
1920
+ - memfd_create syscall wrapper
1921
+ - explicit_bzero function
1922
+ - header-level support for new linux features through 4.17
1923
+ - wcsftime now supports padding specifier extensions
1924
+ - dynamic linker's reclaim_gaps now works on fdpic archs
1925
+ - getaddrinfo now honors AI_ADDRCONFIG
1926
+ - pthread_attr_init now honors pthread_setattr_default_np defaults
1927
+
1928
+ hardening:
1929
+ - prevent bypass of guarantee that suids start with fd 0/1/2 open
1930
+ - dlopen now rejects libraries with initial-exec refs to dynamic TLS
1931
+
1932
+ compatibility:
1933
+ - elf.h: new flags, aux vector entry types, etc.
1934
+ - minor namespace issues in several headers
1935
+ - intNN_t types used in bitfields now safe against -funsigned-bitfields
1936
+ - complex arc trig/hyperbolic functions were badly broken
1937
+ - nice function returned wrong value
1938
+ - stdio locks no longer depend on read-after-free not faulting
1939
+ - avoid excessive stack usage in getcwd
1940
+ - inet_ntop no longer compresses single zeros in IPv6 (RFC 5952)
1941
+ - resolver routability probe for sorting results works on no-IPv6 systems
1942
+ - added missing ST_RELATIME definition to statvfs.h
1943
+ - uchar.h now works with old C++ profiles
1944
+ - added missing and arch-specific commands to ptrace.h
1945
+ - musl-gcc wrapper now works with default-pie host toolchains
1946
+
1947
+ bugs fixed:
1948
+ - getopt wrongly treating colons in optstring as valid option chars
1949
+ - nl_langinfo_l(CODESET, loc) reported wrong locale's value
1950
+ - out-of-tree build produced broken crt files with stack protector enabled
1951
+ - fmaf produced wrong result for some corner cases
1952
+ - out of bounds write for zero length buffer passed to gethostname
1953
+ - getopt_long_only wrongly prefix-matched long-options over short ones
1954
+ - pthread_kill wrongly returned ESRCH for exited by valid pthread_t's
1955
+ - iconv buffer overflow converting to legacy JIS-based encodings
1956
+ - iconv conversion to "UTF-32" (no explicit endianness) failed (regression)
1957
+ - iconv mishandled big5-hkscs characters that map to two unicode chars
1958
+ - dynamic linker didn't map/clear bss for libraries with single LOAD segment
1959
+ - resolver wrongly duplicated trailing dot from query into canonical name
1960
+ - some futex waits omitted timeout arg to syscall, thereby spun on EFAULT
1961
+ - dladdr mishandled addresses not matching symbols
1962
+ - alignment of dirent structures from readdir was broken (regression)
1963
+ - strftime %z output wrong sign for offsets <1 hour west of UTC
1964
+ - limits.h, pathconf erroneously defined SYMLINK_MAX
1965
+ - FP_ILOGB0 and FP_ILOGBNAN definitions were not valid for use in #if
1966
+ - getopt failed to update optarg and optind correctly on missing argument
1967
+ - EMULTIHOP error lacked strerror text
1968
+ - mktime malfunctioned with tm_isdst>0 but no-DST POSIX-format time zone
1969
+ - async thread self-cancellation produced a deadlock condition
1970
+ - pthread_barrierattr_setpshared failed to produce EINVAL for bad argument
1971
+ - fileno failed to produce EBADF for non-fd-associated FILEs
1972
+ - fmemopen's w+ mode failed to truncate buffer at open
1973
+ - open_[w]memstream did not bind stream orientation at open time
1974
+ - system wrongly returned 0x7f00 instead of -1 on error
1975
+ - wide printf functions ignored field width for %c formats
1976
+ - fprintf failed to set stream orientation for unbuffered stream or no output
1977
+ - psignal, psiginfo, and perror wrongly set stream orientation for stderr
1978
+ - psignal, psiginfo potentially clobbered errno on success
1979
+
1980
+ arch-specfic bugs fixed:
1981
+ - on arm/aarch64/sh, local-exec TLS layout mismatched ABI with large align
1982
+ - on arm/microblaze/sh, struct ipc_perm mismatched (buggy) kernel ABI
1983
+ - SO_PEERSEC definition was wrong on mips
1984
+ - on mips, return from start function passed to clone crashed (runaway exec)
1985
+ - printf %a precision specifier malfunctioned except on ld80 archs
1986
+ - async thread cancellation crashed on powerpc64 and sh-fdpic
1987
+
1988
+
1989
+ 1.1.21 release notes
1990
+
1991
+ new features:
1992
+ - setting default thread stack size via PT_GNU_STACK program header
1993
+ - arm vfork implementation
1994
+ - arm tlsdesc/gnu2 tls dialect support
1995
+ - name_to_handle_at and name_to_handle_at syscall wrappers
1996
+ - header-level support for new linux features through 4.18
1997
+
1998
+ optimizations:
1999
+ - glob rewrite with much better performance and stack usage properties
2000
+ - single-threaded and already-locked fast paths for getc/putc variants
2001
+ - single-instruction fma implementations for arm, s390x, powerpc, & x86_64
2002
+ - single-instruction fabs and sqrt implementations for powerpc
2003
+ - size and performance from making all internal-only functions/data hidden
2004
+ - made &errno and pthread_self results cachable again (attribute((const)))
2005
+ - significant speedup in strtod with short inputs
2006
+ - new tsearch AVL tree implementation, smaller and faster
2007
+ - special-cased nop calls to wmemmove
2008
+ - fixed erroneously suboptimal skip conditions in strstr and memmem
2009
+
2010
+ hardening:
2011
+ - default thread stack guard size increased from 4k to 8k
2012
+
2013
+ compatibility:
2014
+ - default thread stack size increased from 80k to 128k
2015
+ - building for arm as thumb2 with clang internal assembler now works
2016
+ - aio threads could overflow stack on kernels that break MINSIGSTKSZ ABI
2017
+ - aio threads no longer call malloc (problematic with malloc replacement)
2018
+ - pthread_sigmask/sigprocmask now ignore an invalid how when not changing mask
2019
+
2020
+ bugs fixed:
2021
+ - soft deadlock regression in stdio FILE locks with >2 threads contending
2022
+ - deadlock and buffered data loss race in fclose
2023
+ - race condition leading to possible crash in dcngettext plural forms
2024
+ - glob failed to see past searchable-but-unreadable path components
2025
+ - getdelim wrongly realloc'd buffer that was already exactly right size
2026
+ - getdelim failed to set stream orientation on early error
2027
+ - ttyname[_r] reported wrong error when given bad fd
2028
+ - pthread_key_delete left old tsd values exposed if slot was reused
2029
+ - freeaddrinfo failed to support freeing sublists
2030
+ - access to optopt was broken by copy relocations
2031
+ - memccpy returned wrong result if first byte past buffer end matched
2032
+ - wordexp read past end of input string ending in backslash
2033
+ - sem_wait and sem_timedwait were wrongly not interruptible by signals
2034
+ - getspnam[_r] wrongly treated not-found as an error
2035
+
2036
+ arch-specfic bugs fixed:
2037
+ - soft deadlocks (missing futex wake) on powerpc locking
2038
+ - dlsym returned wrong address for thread-local symbols on ppc/mips/m68k
2039
+
2040
+
2041
+ 1.1.22 release notes
2042
+
2043
+ new features:
2044
+ - priority-inheritance mutexes
2045
+ - membarrier syscall, pre-registration to use it, fallback emulation
2046
+ - header-level support for new linux features in 4.19, 4.20, 5.0
2047
+
2048
+ major internal changes:
2049
+ - complete, async-safe view of all existent threads as global list
2050
+ - robust __synccall based on new thread list
2051
+ - new dynamic TLS is installed synchronously at dlopen
2052
+ - TLSDESC resolver functions no longer make bad ABI assumptions to call C
2053
+ - resolved shared library dependencies are now recorded
2054
+
2055
+ compatibility & conformance:
2056
+ - dependency-order shared library constructor execution
2057
+ - sigaltstack no longer rejects SS_AUTODISARM, future flags
2058
+ - FILE is now a complete (dummy) type in pre-C11 feature profiles
2059
+ - setvbuf reports failure on invalid arguments
2060
+ - TSVTX is exposed unconditionally in tar.h
2061
+ - multithreaded set*id() no longer depends on /proc
2062
+ - key slot reuse after pthread_key_delete no longer depends on /proc
2063
+
2064
+ bugs fixed:
2065
+ - failures in multithreaded set*id() with concurrent thread creation/exit
2066
+ - interposed free was called from invalid/inconsistent contexts
2067
+ - freeaddrinfo performed invalid free of some partial results lists
2068
+ - dlsym dependency order search had false negatives and false positives
2069
+ - dn_skipname gave wrong results for labels with 8-bit content
2070
+ - dcngettext clobbered errno, often breaking printing of error messages
2071
+ - sscanf read past end of buffer under certain conditions (1.1.21 regression)
2072
+ - pthread_key_create spuriously failed under race condition (1.1.21 regression)
2073
+ - fdopendir wrongly succeeded with O_PATH file descriptors
2074
+ - gets behaved incorrectly in presence of null bytes
2075
+ - namespace violations in c11 tsd and mutex function dependencies
2076
+ - incorrect prototype for makecontext (unimplemented)
2077
+
2078
+ arch-specfic bugs fixed:
2079
+ - s390x had wrong values for POSIX_FADV_DONTNEED/_NOREUSE
0 commit comments