@@ -1776,3 +1776,134 @@ arch-specific bugs fixed:
1776
1776
- wrong pread/pwrite syscall calling convention on sh
1777
1777
- wrong preadv2/pwritev2 syscall numbers on x32
1778
1778
- mrand48/jrand48 produced wrong-signedness results on 64-bit archs
1779
+
1780
+
1781
+ 1.1.17 release notes
1782
+
1783
+ new features:
1784
+ - RTLD_LAZY deferred symbol binding, functionally equivalent to lazy binding
1785
+ - safeguard against dlopen of multiple libc versions/instances
1786
+ - new posix_spawn flag POSIX_SPAWN_SETSID
1787
+ - posix_spawnattr_setflags now reports unknown flags as error
1788
+ - ldso option --argv0 to set argv[0]
1789
+ - added _NL_LOCALE_NAME extension to nl_langinfo
1790
+
1791
+ compatibility:
1792
+ - dlopen local-to-global promotion no longer changes existing symbols
1793
+ - gettext now searches locale name variants for translation files
1794
+ - increased locale name length limit from 15 to 23 bytes
1795
+ - setlocale(LC_ALL, 0) returns single name if all categories are same
1796
+ - realloc no longer fails when mremap doesn't work
1797
+ - getservby* no longer treat numeric port strings as service records
1798
+ - mmap now works around incorrect EPERM error codes from kernel
1799
+ - impact of REG_* namespace pollution in x86[_64] signal.h is reduced
1800
+ - arm atomic asm now assembles correctly with new binutils
1801
+ - PAGE_SIZE on arm is no longer constant (quiet upstream ABI relaxation)
1802
+ - lsearch/lfind now pass args to compare callback in canonical order
1803
+ - STB_WEAK and STB_GNU_UNIQUE symbols now behave same as STB_GLOBAL
1804
+ - better clang CFLAGS checks in configure
1805
+ - global vis.h hack, which made lld refuse to link to libc.so, is disabled
1806
+
1807
+ performance:
1808
+ - single-instruction optimized math functions for aarch64, s390x, powerpc64
1809
+ - fast path for ASCII in towupper/towlower
1810
+ - new mostly-integer-math fma function
1811
+
1812
+ semantic bugs fixed:
1813
+ - POSIX-format TZ dst time transitions were wrong for southern hemisphere
1814
+ - regex REG_NEWLINE semantics were wrong with negated brackets
1815
+ - various bugs in strptime %j, %p, %C formats
1816
+ - iconv mapped some characters to legacy 8bit encodings incorrectly
1817
+ - glob failed to match "/"
1818
+ - UTF-8 decoder accepted invalid f4 9x xx xx code sequences
1819
+ - scanf %% conversion failed to consume whitespace
1820
+ - glob with GLOB_PERIOD wrongly descended into . and ..
1821
+ - nftw gave incorrect base name offset when pathname ends in "/"
1822
+ - functional regression in resolv.conf attempts option
1823
+ - scalbn could produce wrong result due to double rounding in subnormal range
1824
+ - strftime %y format wrong with negative years
1825
+ - mbsnrtowcs and wcsnrtombs mishandled input limits
1826
+ - minor issues with error codes for various functions
1827
+
1828
+ safety/consistency bugs fixed:
1829
+ - stack-based buffer overflow in dns response processing
1830
+ - invalid free in regexec on certain error paths
1831
+ - invalid free in globfree after failed glob
1832
+ - one-byte buffer overflow in legacy getpass function
1833
+ - failed dlopen corrupted thread-local storage module list
1834
+ - race in pthread_create with priority attributes could leave signals masked
1835
+ - multithreaded set*id() functions could induce spurious EINTRs
1836
+ - dl_iterate_phdr reported wrong base address in static PIE
1837
+ - fd leak and wrong cancellation state after dns socket failure
1838
+ - memory leaks and other issues in environment-modification functions
1839
+ - read-after-free race in pthread_detach
1840
+ - memmem performed single-byte over-read in short-needle code paths
1841
+ - read via uninitialized pointer in gettext core
1842
+ - bindtextdomain broke bindings for all other domains
1843
+ - various silent undefined behavior
1844
+ - getopt clobbered optopt on success
1845
+
1846
+ arch-specific bugs fixed:
1847
+ - x32 dynamic TLS accesses crashed
1848
+ - s390x was missing dlsym entry point (needed for RTLD_NEXT)
1849
+ - powerpc64 ldso startup could crash depending on link order
1850
+ - powerpc64 setjmp/longjmp didn't properly save/restore TOC pointer
1851
+ - thumb2 setjmp/longjmp silently broke at ld-time with text not aligned
1852
+ - fchown was broken on archs without SYS_fchown syscall
1853
+ - fstatat was broken on mips64
1854
+ - various incorrect constants in powerpc64 and mips headers
1855
+
1856
+
1857
+ 1.1.18 release notes
1858
+
1859
+ regression fixes:
1860
+ - glob failed to match literal . and .. path components
1861
+ - build for armv4t ISA level was broken
1862
+
1863
+ other bug fixes:
1864
+ - stack overflow in posix_spawnp with large PATH variable in environment
1865
+
1866
+
1867
+ 1.1.19 release notes
1868
+
1869
+ new features:
1870
+ - iconv framework for processing stateful encodings
1871
+ - iconv support for iso-2022-jp
1872
+ - iconv support for converting to legacy JIS-based Japanese encodings
1873
+ - iconv support for UTF-16/32 with BOM-determined endianness
1874
+ - iconv ibm1047 (ebcdic latin1-equivalent) support
1875
+ - iconv cp866 (dos cyrillic) support
1876
+ - character data tables & case mappings updated to Unicode 10.0
1877
+ - fopencookie stdio extension
1878
+ - strftime padding character extensions
1879
+ - header-level support for new linux features through 4.13
1880
+
1881
+ compatibility:
1882
+ - UTC timezone is now called UTC instead of GMT
1883
+ - _DIRENT_HAVE_D_* macros in dirent.h
1884
+ - dladdr dli_fbase definition now matches other implementations
1885
+ - pthread_getattr_np now reports guard size
1886
+ - strftime '+' modifier better matches apparent intent of POSIX
1887
+ - getopt_long handles long option names containing '='
1888
+ - better compatibility with linux uapi headers
1889
+ - workaround linux bug where getcwd can return non-absolute pathname
1890
+ - configure logic for finding compiler_rt with clang
1891
+ - execvp path search now continues after ENOTDIR components
1892
+
1893
+ bugs fixed:
1894
+ - fgetwc failed when character crossed buffer boundary
1895
+ - memory corruption after failing to dlopen a second libc
1896
+ - sysconf reported infinite rlimits incorrectly
1897
+ - getopt_long --opt=arg did not work with partial matches
1898
+ - printf was wrong for alt-form octal with value 0, no explicit precision
1899
+ - endian errors in arpa/nameser.h and netinet/icmp6.h (missing endian.h)
1900
+ - atfork handler could clobber fork's errno
1901
+ - iconv could wrongly output surrogate pairs in ucs2
1902
+ - fmemopen buffer underallocation with extreme size argument
1903
+ - getaddrinfo AI_NUMERICSERV wrong error code
1904
+ - data race in at_quick_exit
1905
+ - ldd failed to honor rpath $ORIGIN for program in . without "./" prefix
1906
+
1907
+ arch-specfic bugs fixed:
1908
+ - x32 unistd.h wrongly reported LP64 instead of ILP32
1909
+ - aarch64 signal.h had wrong type for ucontext_t uc_link member
0 commit comments