OSDN Git Service

Improve testsuite diagnostic message handling.
[mingw/mingw-org-wsl.git] / mingwrt / ChangeLog
index aac746a..e06e128 100644 (file)
@@ -1,3 +1,773 @@
+2023-06-26  Keith Marshall  <keith@users.osdn.me>
+
+       Improve testsuite diagnostic message handling.
+
+       * include/process.h [__IN_MINGWRT_TESTSUITE__ && __GNUC__ >= 7]: Push
+       diagnostic state, to save the initial setting of, and then ignore...
+       (-Wbuiltin-declaration-mismatch): ...this, prior to declarations of...
+       (execv, execve, execvp): ...these functions; after these declarations,
+       pop the saved diagnostic state, to revert to the original condition,
+       rather than simply, and arbitrarily, enabling the warning.
+
+2022-08-26  Keith Marshall  <keith@users.osdn.me>
+
+       Do not expose private declarations in <search.h>
+
+       * include/search.h [_SEARCH_PRIVATE]: Do not consider.
+       (struct node, node_t, __MINGW_NONNULL): Relocate [re]definitions...
+       * mingwex/tsearch.h: ...to this new (private) header file.
+
+       * mingwex/tdelete.c mingwex/tfind.c mingwex/tsearch.c
+       * mingwex/twalk.c: Include "tsearch.h" in each, in place of
+       <search.h>; (the latter will be indirectly included by the former).
+       (_SEARCH_PRIVATE): Remove definition; it is no longer required.
+
+2022-08-15  Keith Marshall  <keith@users.osdn.me>
+
+       Correct project name references in mingwrt manpages.
+
+       * man/btowc.3.man man/dirname.3.man man/getline.3.man man/mbrlen.3.man
+       * man/mbrtowc.3.man man/mbsinit.3.man man/mbsrtowcs.3.man
+       * man/wcrtomb.3.man man/wcsrtombs.3.man man/wctob.3.man: Replace all
+       references to defunct "MinGW.org" project name; refer to "MinGW.OSDN"
+       instead.
+
+2022-08-15  Keith Marshall  <keith@users.osdn.me>
+
+       Correct project name references in mingwrt source files.
+
+       * README CRT_fenv.c Makefile.in configure.ac cpu_features.sx crt1.c
+       * setargv.c include/_mingw.h.in include/alloca.h include/conio.h
+       * include/ctype.h include/dir.h include/direct.h include/dlfcn.h
+       * include/dos.h include/errno.h include/excpt.h include/fenv.h
+       * include/float.h include/getopt.h include/glob.h include/io.h
+       * include/libgen.h include/limits.h include/locale.h include/malloc.h
+       * include/math.h include/msvcrtver.h include/process.h
+       * include/stdint.h include/stdio.h include/stdlib.h include/string.h
+       * include/strings.h include/time.h include/unistd.h include/wchar.h
+       * include/wctype.h include/sys/bsdtypes.h include/sys/stat.h
+       * include/sys/time.h include/sys/timeb.h include/sys/types.h
+       * include/sys/utime.h mingwex/basename.c mingwex/btowc.c
+       * mingwex/clockapi.c mingwex/clockapi.h mingwex/clockres.c
+       * mingwex/clockset.c mingwex/clocktime.c mingwex/codeset.c
+       * mingwex/complex/cabs_generic.c mingwex/complex/casin_generic.c
+       * mingwex/complex/catan_generic.c mingwex/complex/clog_generic.c
+       * mingwex/complex/cpow_generic.c mingwex/complex/csqrt_generic.c
+       * mingwex/cryptnam.c mingwex/dirent.c mingwex/dirname.c
+       * mingwex/dlfcn.c mingwex/fesetenv.c mingwex/ftruncate.c
+       * mingwex/glob.c mingwex/imaxdiv.c mingwex/insque.c mingwex/jmpstub.sx
+       * mingwex/math/asinh_generic.c mingwex/math/errno.sx
+       * mingwex/math/fmod_generic.sx.in mingwex/math/hypot_generic.c
+       * mingwex/math/log10_generic.sx mingwex/math/log1p_generic.sx
+       * mingwex/math/log2_generic.sx mingwex/math/log_generic.sx
+       * mingwex/math/pow_generic.sx mingwex/math/random.c
+       * mingwex/math/remquo_generic.sx mingwex/math/x87cvt_generic.sx
+       * mingwex/mbrconv.c mingwex/mbrlen.c mingwex/mbrscan.c
+       * mingwex/mbrtowc.c mingwex/mbsrtowcs.c mingwex/memalign.c
+       * mingwex/memcrypt.c mingwex/mkdtemp.c mingwex/mkstemp.c
+       * mingwex/nsleep.c mingwex/ofmt.c mingwex/ofmtctl.c mingwex/remque.c
+       * mingwex/setenv.c mingwex/stdio/fseeki64.c mingwex/stdio/ftelli64.c
+       * mingwex/stdio/fwrite.c mingwex/stdio/getdelim.c
+       * mingwex/stdio/pformat.c mingwex/stdio/snprintf.c
+       * mingwex/stdio/vsnprintf.c mingwex/strerror_r.c mingwex/strnlen.sx
+       * mingwex/strtok_r.c mingwex/wcharmap.c mingwex/wcharmap.h
+       * mingwex/wcrtomb.c mingwex/wcsrtombs.c mingwex/wcstofp.c
+       * mingwex/wctob.c tests/Makefile.in tests/ansiprintf.at
+       * tests/atlocal.in tests/clockapi.at tests/headers.at
+       * tests/logarithms.at tests/memalign.at tests/powerfunc.at
+       * tests/testsuite.at.in: Replace all references to defunct "MinGW.org"
+       project name; refer to "MinGW.OSDN" instead.
+
+2022-01-29  Keith Marshall  <keith@users.osdn.me>
+
+       Stop creating redundant "include/parts" directory.
+
+       * Makefile.in (mingwrt_include_subdirs): Remove reference to...
+       (parts): ...this; the directory is no longer used by mingwrt, so it
+       need not be created when performing "make install".
+
+2021-06-25  Keith Marshall  <keith@users.osdn.me>
+
+       Correct Microsoft's dup2() POSIX.1 non-conformity.
+
+       * include/unistd.h [! defined dup2]: Define macro reference to...
+       (__mingw_posix_dup2): ...this new in-line function, (as named by the
+       macro); it overrides the Microsoft dup2() function, to ensure that it
+       returns the correct file descriptor, as specified by POSIX.1, rather
+       than zero, as returned by the Microsoft implementation, on success.
+
+2021-06-13  Keith Marshall  <keith@users.osdn.me>
+
+       Implement a POSIX.1 compliant pseudo-random number generator.
+
+       * mingwex/math/random.c: New file; it implements...
+       (__mingw_random, __mingw_srandom, __mingw_initstate)
+       (__mingw_setstate): ...each of these API functions.
+       * include/stdlib.h [_XOPEN_SOURCE >= 500]: Declare them; map...
+       (random, srandom, initstate, setstate): ...these aliases.
+       [_BSD_SOURCE]: Likewise.
+
+       * Makefile.in (libmingwex.a): Require random.$OBJEXT
+
+2021-05-29  Keith Marshall  <keith@users.osdn.me>
+
+       Correct erroneous mkstemp() availability condition.
+
+       * include/stdlib.h (mkstemp): POSIX requires...
+       [_XOPEN_SOURCE >= 500]: ...this, which is equivalent to...
+       [_POSIX_C_SOURCE >= 199506L]: ...this, and not (as we had it)...
+       [_POSIX_C_SOURCE >= 200112L]: ...this; correct it.
+
+2021-05-23  Keith Marshall  <keith@users.osdn.me>
+
+       Add a makefile clarification comment.
+
+       * Makefile.in (msvcrt_repl_funcs): Explain inclusion...
+       (free, realloc): ...these.
+
+2021-04-11  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.4.2 release.
+
+       * All files (wsl-5.4.2-release): Tag assigned.
+
+2021-02-25  Keith Marshall  <keith@users.osdn.me>
+
+       Consolidate fmod() and remainder() source code.
+
+       * mingwex/math/fmod_generic.sx.in: New file; it replaces...
+       * mingwex/math/remainder.s mingwex/math/remainderf.s: ...these...
+       * mingwex/math/remainderl.s mingwex/math/fmodf.c: ...and these...
+       * mingwex/math/fmodl.c: ...and also this; delete them.
+
+       * Makefile.in (fmod_generic.sx, remainder_generic.sx): Add rule to
+       generate them.
+
+2021-02-24  Keith Marshall  <keith@users.osdn.me>
+
+       Correct remquo() quotient computation; cf. MinGW-Bug #41597
+
+       * mingwex/math/remquo_generic.sx: New file; it replaces...
+       * mingwex/math/remquo.s mingwex/math/remquof.s: ...these, and also...
+       * mingwex/math/remquol.s: ...this; delete them.
+
+       * Makefile.in (libmingwex.a): Add "x87remquo.$OBJEXT" requirement.
+
+2021-01-26  Keith Marshall  <keith@users.osdn.me>
+
+       Avoid proliferation of static snprintf() implementations.
+
+       * mingwex/dlfcn.c (dlfcn_store_error_message): Do NOT use...
+       (vsnprintf): ...this static inline function; prefer to call...
+       (__mingw_vsnprintf): ...this extern implementation, directly.
+
+       * mingwex/dlfcn.c (dlfcn_strerror)
+       * mingwex/setenv.c (__mingw_setenv)
+       * mingwex/strerror_r.c (strerror_r): Do NOT use...
+       (snprintf): ...this; it expands to create static clones of...
+       (__mingw_snprintf): ...this extern implementation; prefer to call it
+       directly, to avoid code redundancy.
+
+2020-08-07  Keith Marshall  <keith@users.osdn.me>
+
+       Initialize MSVCRT.DLL's _pgmptr reference.
+
+       * setargv.c (_setargv) [__CRT_GLOB_USE_MINGW__]: Check for...
+       [_pgmptr == NULL] (_pgmptr): ...uninitialized; initialize it from...
+       (GetModuleFileName): ...this.
+
+2020-07-23  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.4.1 release.
+
+       * All files (wsl-5.4.1-release): Tag assigned.
+
+2020-07-20  Keith Marshall  <keith@users.osdn.me>
+
+       Add support for emulation of Microsoft's rand_s() function.
+
+       * mingwex/cryptnam.c (crypto_provider, crypto_randomize): Factor out
+       this pair of static inline functions; relocate them to...
+       * mingwex/memcrypt.c: ...this new file.
+       (crypto_randomize): Change linkage to extern; rename it as...
+       (__mingw_crypto_randomize): ...this; use it...
+       * mingwex/cryptnam.c (crypto_random_filename_char): ...here, via...
+       (crypto_randomize): ...this static inline reimplementation.
+
+       * Makefile.in (libmingwex.a): Add dependency reference for...
+       (memcrypt.$OBJEXT): ...this new object file.
+
+       * VERSION.m4 (MINGW_AC_SET_DLLVERSION) [LIBMINGWEX]: Increment it
+       to 5:0:1; __mingw_crypto_randomize adds a new interface, but it does
+       not break ABI backward compatibility.
+
+2020-07-08  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.4 release.
+
+       * All files (wsl-5.4-release): Tag assigned.
+
+2020-07-07  Keith Marshall  <keith@users.osdn.me>
+
+       Remove redundant MBCS/wide character converter aliases.
+
+       * mingwex/btowc.c (__mingw_btowc, __msvcrt_btowc):
+       * mingwex/mbrlen.c (__mingw_mbrlen, __msvcrt_mbrlen):
+       * mingwex/mbrtowc.c (__mingw_mbrtowc, __msvcrt_mbrtowc):
+       * mingwex/mbsrtowcs.c (__mingw_mbsrtowcs, __msvcrt_mbsrtowcs):
+       * mingwex/wcsrtombs.c (__mingw_wcsrtombs, __msvcrt_wcsrtombs):
+       * mingwex/wcrtomb.c (__mingw_wcrtomb, __msvcrt_wcrtomb):
+       * mingwex/wctob.c (__mingw_wctob, __msvcrt_wctob): Delete aliases.
+
+       * VERSION.m4 (MINGW_AC_SET_DLLVERSION) [LIBMINGWEX]: Increment it
+       to 4:0:0; alias removal breaks ABI backward compatibility.
+
+2020-07-06  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.3.4 release.
+
+       * All files (wsl-5.3.4-release): Tag assigned.
+
+2020-07-05  Keith Marshall  <keith@users.osdn.me>
+
+       Update MBCS to wide character conversion man pages.
+
+       * man/btowc.3.man man/mbrlen.3.man man/mbrtowc.3.man
+       * man/mbsinit.3.man man/mbsrtowcs.3.man man/wcrtomb.3.man
+       * man/wcsrtombs.3.man man/wctob.3.man: Remove references to Microsoft
+       implementations of documented functions; all means of access to such
+       function implementations have been disabled for MinGW applications.
+
+2020-07-04  Keith Marshall  <keith@users.osdn.me>
+
+       Discontinue use of Microsoft's MBCS/wide character converters.
+
+       * include/wchar.h (__mingw_redirect): Delete macro definition.
+       (__mingw_mbrlen, __msvcrt_mbrlen, __mingw_mbrtowc, __msvcrt_mbrtowc)
+       (__mingw_btowc, __msvcrt_btowc, __mingw_mbsrtowcs, __msvcrt_mbsrtowcs)
+       (__mingw_wctob, __msvcrt_wctob, __mingw_wcrtomb, __msvcrt_wcrtomb)
+       (__mingw_wcsrtombs, __msvcrt_wcsrtombs): Delete prototypes, and...
+       (mbrlen, mbrtowc, btowc, mbsrtowcs, wctomb, wcrtomb, wcsrtombs):
+       ...their corresponding redirected inline implementations.
+
+       * mingwex/btowc.c (__msvcrt_btowc): Delete implementation.
+       (__mingw_btowc_fallback, __mingw_btowc): Fold together, into...
+       (btowc): ...this publicly accessible function; add weak aliases...
+       (__mingw_btowc, __msvcrt_btowc): ...named thus.
+
+       * mingwex/mbrlen.c (__msvcrt_mbrlen): Delete implementation.
+       (__mingw_mbrlen_fallback, __mingw_mbrlen): Fold together, into...
+       (mbrlen): ...this publicly accessible function; factor out codeset
+       and codeset property initializations; add weak aliases...
+       (__mingw_mbrlen, __msvcrt_mbrlen): ...named thus.
+
+       * mingwex/mbrtowc.c (__msvcrt_mbrtowc): Delete implementation.
+       (__mingw_mbrtowc_fallback, __mingw_mbrtowc): Fold together, into...
+       (mbrtowc): ...this publicly accessible function; factor out codeset
+       and codeset property initializations; add weak aliases...
+       (__mingw_mbrtowc, __msvcrt_mbrtowc): ...named thus.
+
+       * mingwex/mbsrtowcs.c (__msvcrt_mbsrtowcs): Delete implementation.
+       (__mingw_mbsrtowcs_fallback, __mingw_mbsrtowcs): Fold; rename as...
+       (mbsrtowcs): ...this publicly accessible function; add weak aliases...
+       (__mingw_mbsrtowcs, __msvcrt_mbsrtowcs): ...named thus.
+       (__mbsrtowcs_fallback): Rename it as...
+       (__mbsrtowcs_internal): ...this.
+
+       * mingwex/mbrconv.c (__mingw_mbrtowc_handler): Initialize codeset.
+
+       * mingwex/wcrtomb.c (__msvcrt_wcrtomb): Delete implementation.
+       (__mingw_wcrtomb_fallback, __mingw_wcrtomb): Fold together, into...
+       (wcrtomb): ...this publicly accessible function; add weak aliases...
+       (__mingw_wcrtomb, __msvcrt_wcrtomb): ...named thus.
+       (__wcrtomb_fallback): Rename it as...
+       (__wcrtomb_internal): ...this.
+
+       * mingwex/wcsrtombs.c (__mingw_wcsrtombs): Rename it as...
+       (wcsrtombs): ...this ISO-C99 name; preserve delegation to...
+       (__mingw_wcsrtombs_fallback): ...this, but rename it as...
+       (__mingw_wcsrtombs_internal): ...this; inline it.
+       (__msvcrt_wcsrtombs): Delete implementation.
+       (__mingw_wcsrtombs, __msvcrt_wcsrtombs): Reinstate as weak aliases.
+
+       * mingwex/wctob.c (__msvcrt_wctob): Delete implementation.
+       (__mingw_wctob_fallback, __mingw_wctob): Fold together, into...
+       (wctob): ...this publicly accessible function; add weak aliases...
+       (__mingw_wctob, __msvcrt_wctob): ...named thus.
+
+2020-06-03  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.3.3 release.
+
+       * All files (wsl-5.3.3-release): Tag assigned.
+
+2020-06-03  Keith Marshall  <keith@users.osdn.me>
+
+       Revert 2020-05-27 changes relating to issue #40438.
+
+       * Makefile.in (libmingw32.a): Remove, and relocate...
+       (codeset.$OBJEXT, mbrscan.$OBJEXT): ...each of these, back to...
+       (libmingwex.a): ...here; the previous relocation created more problems
+       than it solved, and indeed, I can no longer reproduce the issue which
+       prompted the earlier relocation.
+
+2020-05-28  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.3.2 release.
+
+       * All files (wsl-5.3.2-release): Tag assigned.
+
+2020-05-28  Keith Marshall  <keith@users.osdn.me>
+
+       Avoid recursive optional DLL import library linking.
+
+       * Makefile.in (%.dll.a): Remove target before generation; if it
+       pre-exists, the DLL may appear to recursively depend on itself.
+
+2020-05-27  Keith Marshall  <keith@users.osdn.me>
+
+       Fix libmingwex-n.dll dependencies; cf. Issue #40438.
+
+       * Makefile.in (libmingwex.a): Remove...
+       (mbrscan.$OBJEEXT, wcharmap.$OBJEXT): ...these; relocate them to...
+       (libmingw32.a): ...here.
+
+2020-04-30  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.3.1 release.
+
+       * All files (wsl-5.3.1-release): Tag assigned.
+
+2020-04-19  Keith Marshall  <keith@users.osdn.me>
+
+       Implement POSIX.1-2001 posix_memalign() function.
+
+       * include/stdlib.h [_POSIX_C_SOURCE >= 200112L] (posix_memalign):
+       Implement as inline alias, with libmemalign.a stub, in terms of...
+       (__mingw_aligned_offset_malloc): ...this; duplicate declaration.
+
+2020-04-18  Keith Marshall  <keith@users.osdn.me>
+
+       Implement ISO-C11/C++17 aligned_alloc() function.
+
+       * include/stdlib.h (free, realloc): Define as inline aliases for...
+       (__mingw_free, __mingw_realloc): ...these replacements, respectively.
+       [__STDC_VERSION__>=201112L || __cplusplus >=201703L] (aligned_alloc):
+       Implement as inline alias, with libmemalign.a stub, in terms of...
+       (__mingw_aligned_offset_malloc): ...this; duplicate declaration.
+       (_GLIBCXX_HAVE_ALIGNED_ALLOC): Define it.
+
+2020-04-11  Keith Marshall  <keith@users.osdn.me>
+
+       Manpage stylistic consistency updates.
+
+       * man/dirname.3.man man/getline.3.man: Miscellaneous stylistic
+       formatting changes.
+
+2020-04-08  Keith Marshall  <keith@users.osdn.me>
+
+       Ensure PDF manpages are generated from local sources.
+
+       * Makefile.in (%.$man3ext.pdf): Specify explicit path to $<.$man3ext
+       file, when invoking the 'man -t' command; without it, the command may
+       refer to the build host's native copy, instead of our local version.
+
+2020-04-08  Keith Marshall  <keith@users.osdn.me>
+
+       Automatically enumerate manpages for publication.
+
+       * Makefile.in (manpages): New macro; define, and use it...
+       (mingwrt-man3): ...for this, to enumerate associated manpage sources.
+       (manpage_copy, mancopy, manpage_ref): New macros; define them, and...
+       (basename.3, getdelim.3): ...use them.
+
+2020-04-07  Keith Marshall  <keith@users.osdn.me>
+
+       Document MinGW MBCS/wide character conversion functions.
+
+       * man/btowc.3.man man/mbrlen.3.man man/mbrtowc.3.man
+       * man/mbsinit.3.man man/mbsrtowcs.3.man man/wcrtomb.3.man
+       * man/wcsrtombs.3.man man/wctob.3.man: New files.
+
+2020-04-02  Keith Marshall  <keith@users.osdn.me>
+
+       Handle wcsrtombs() initial surrogate completion.
+
+       * mingwex/wcsrtombs.c (__mingw_wcsrtombs_fallback)
+       [*ps -> high surrogate && **wcs -> low surrogate]: Complete surrogate
+       pair, and evaluate conversion; compute its length, and account for its
+       effect on alloted conversion buffer size.  Reset *ps to initial state.
+
+2020-04-02  Keith Marshall  <keith@users.osdn.me>
+
+       Correct wchar_t to MBCS unpaired surrogate handling.
+
+       * mingwex/wcharmap.c (__mingw_wctomb_convert) [codeset >= CP_UTF7]:
+       Scan source wchar_t sequence, prior to conversion, checking it for...
+       [high surrogate]: Abort unless immediately followed by low surrogate.
+       [low surrogate]: Likewise, if not preceded by high surrogate.
+
+2020-03-19  Keith Marshall  <keith@users.osdn.me>
+
+       Correct a potential mbsrtowcs() surrogate pair overrun.
+
+       * mingwex/mbrscan.c (__mingw_mbtowc_copy) [(count + 1) == len)]: Stop,
+       without storing current multibyte conversion, if surrogate pair.
+
+2020-03-12  Keith Marshall  <keith@users.osdn.me>
+
+       Rationalize implementations of fwide() and mbsinit() functions.
+
+       * include/wchar.h (mbsinit): Mark as __LIBIMPL__; reimplement its
+       inline definition, to evaluate its mbstate_t reference argument.
+       (fwide): Mark as __LIBIMPL__.
+
+       * Makefile.in (libmingwex.a): Remove explicit dependencies on...
+       (fwide, mbsinit): ...these; they are implied by __LIBIMPL__ marks.
+
+       * mingwex/fwide.c mingwex/mbsinit.c: Redundant files; delete them.
+
+2020-03-11  Keith Marshall  <keith@users.osdn.me>
+
+       Correct a defect in detection of failed btowc() conversions.
+
+       * mingwex/btowc.c (__mingw_btowc_fallback): Use...
+       (__mingw_mbtowc_convert): ...this; verify successful conversion of
+       exactly one byte, to equivalent wchar, otherwise return WEOF.
+       (__mingw_btowc, __msvcrt_btowc): Delegate codeset initialization to...
+       (__mingw_mbrtowc_codeset_init): ...this, so delegating its management
+       externally; remove local provision.
+
+2020-03-10  Keith Marshall  <keith@users.osdn.me>
+
+       Correct defects in mbrtowc() invalid conversion state handling.
+
+       * mingwex/mbrconv.c (__mingw_mbrtowc_handler): Abort if restarting a
+       conversion when a low surrogate is pending, but has not been correctly
+       retrieved; additionally, reject any mbstate_t object content which is
+       already representative of a complete multibyte character sequence.
+
+2020-03-10  Keith Marshall  <keith@users.osdn.me>
+
+       Base MBCS converter function call redirection on _ISOC99_SOURCE.
+
+       * include/wchar.h (__mingw_redirect): New temporary macro; use it...
+       (btowc, mbrlen, mbrtowc, mbsrtowcs, wctob, wcrtomb, wcsrtombs): ...in
+       each of these inline function definitions, to select between use of...
+       [defined _ISOC99_SOURCE]: ...direct call to MinGW function, or...
+       [! defined _ISOC99_SOURCE]: ...attempt to call MSVCRT.DLL function,
+       with fall back to MinGW, when no MSVCRT.DLL function available.
+
+2020-03-05  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.3 release.
+
+       * All files (wsl-5.3-release): Tag assigned.
+
+2020-03-05  Keith Marshall  <keith@users.osdn.me>
+
+       Let _ISOC11_SOURCE imply _ISOC99_SOURCE.
+
+       * include/_mingw.h.in [! defined _ISOC99_SOURCE]
+       [defined _ISOC11_SOURCE] (_ISOC99_SOURCE): Define as 0x0F.
+
+2020-03-05  Keith Marshall  <keith@users.osdn.me>
+
+       Avoid deprecated specification of esp in asm clobber list.
+
+       * crt1.c (__mingw_CRTStartup): In inline assembly, forced modulo-16
+       alignment of esp is safe, but clobbered esp cannot be restored; GCC-9
+       deprecates its inclusion in clobber list; remove it.
+       [-masm=intel]: Support inline assembler syntax.
+
+2020-03-04  Keith Marshall  <keith@users.osdn.me>
+
+       Disallow surrogates as printf() radix and grouping characters.
+
+       * mingwex/stdio/pformat.c (__pformat_emit_digit)
+       [(c == '.') && ((rpchr & 0xF800) == 0xD800)]: Radix point requires a
+       surrogate pair, for representation as UTF-16LE; decline to use it.
+       (__pformat_enable_thousands_grouping) [(tc & 0xF800) == 0xD800]:
+       Likewise, for thousands group separator.
+
+2020-03-04  Keith Marshall  <keith@users.osdn.me>
+
+       Reimplement wcstof(), and wcstold() functions.
+
+       * mingwex/wcstofp.c: New file; it implements...
+       (wcstof, wcstold): ...these functions; each is an alias for...
+       (__mingw_wcstof, __mingw_wcstold): ...these, respectively; also...
+       (__mingw_wcstod): ...this; all are implemented in terms of...
+       (__mingw_wcstofp_prescan, __mingw_wcstofp_prepare)
+       (__mingw_wcstofp_bufsize): ...these; implement them.
+
+       * Makefile.in (libmingwex.a): Add dependency references...
+       (wcstofp.$OBJEXT, wcstod.$OBJEXT): ...for these; also include with...
+       (wcstof.$OBJEXT, wcstold.$OBJEXT): ...these, in new build rule.
+
+       * include/stdlib.h (__mingw_wcstod, __mingw_wcstof)
+       (__mingw_wcstold): Declare them.
+
+       * mingwex/mb_wc_common.h mingwex/wcstof.c mingwex/wcstold.c: Files
+       are obsolete, and no longer required; delete them.
+
+2020-03-03  Keith Marshall  <keith@users.osdn.me>
+
+       Reimplement btowc(), and wctob() functions.
+
+       * include/wchar.h [__MSVCRT_VERSION__ < __MSVCR80_DLL]
+       (btowc, wctob): Implement them as static inline redirects...
+       (__msvcrt_btowc, __msvcrt_wctob): ...to these; declare them, with
+       additional MinGW specific alternatives declared...
+       (__mingw_btowc, __mingw_wctob): ...thus.
+
+       * mingwex/btowc.c: Rewrite as new; it now implements...
+       (__mingw_btowc, __msvcrt_btowc): ...these public API functions, either
+       of which serves as a suitable replacement entry point for...
+       (btowc): ...this, with ultimate fallback served by...
+       (__mingw_btowc_fallback): ...this private function.
+
+       * mingwex/wctob.c: Rewrite as new; it now implements...
+       (__mingw_wctob, __msvcrt_wctob): ...these public API functions, either
+       of which serves as a suitable replacement entry point for...
+       (wctob): ...this, with ultimate fallback served by...
+       (__mingw_wctob_fallback): ...this private function.
+
+2020-03-02  Keith Marshall  <keith@users.osdn.me>
+
+       Reimplement mbrlen(), mbrtowc(), and mbsrtowcs() functions.
+
+       * include/wchar.h [__MSVCRT_VERSION__ < __MSVCR80_DLL]
+       (mbrlen, mbrtowc, mbsrtowcs): Implement as static inline redirects...
+       (__msvcrt_mbrlen, __msvcrt_mbrtowc, __msvcrt_mbsrtowcs): ...to these;
+       declare them, with additional MinGW specific alternatives declared...
+       (__mingw_mbrlen, __mingw_mbrtowc, __mingw_mbsrtowcs): ...thus.
+
+       * mingwex/mbsrtowcs.c: New file; it implements...
+       (__mingw_mbsrtowcs, __msvcrt_mbsrtowcs): ...this pair of new
+       functions, either of which serves as a replacement for...
+       (mbsrtowcs): ...this; it was originally implemented...
+       * mingwex/mbrtowc.c: ...here; rewritten as new, it now implements...
+       (__mingw_mbrtowc, __msvcrt_mbrtowc): ...these new functions,
+       either of which serves as a public API replacement for...
+       (mbrtowc): ...this; with ultimate fallback served by...
+       (__mingw_mbrtowc_fallback): ...this private function.
+
+       * mingwex/mbrlen.c: New file; it implements...
+       (__mingw_mbrlen, __msvcrt_mbrlen): ...these public API entries, and...
+       (__mingw_mbrlen_fallback): ...this supporting private function.
+
+       * mingwex/mbrconv.c: New file; it implements...
+       (__mingw_mbrtowc_handler): ...this backend interpreter, shared by...
+       (__mingw_mbrlen_fallback, __mingw_mbrtowc_fallback): ...these.
+
+       * mingwex/mbrscan.c: New file; it implements...
+       (__mingw_mbtowc_codeset_init, __mingw_mbtowc_cur_max_init)
+       (__mingw_mbtowc_cur_max): ...these TLS accessor functions, and...
+       (__mingw_mbrscan_begin, __mingw_mbtowc_convert, __mingw_mbtowc_copy):
+       ...these MBCS to wide character conversion helper functions.
+
+       * mingwex/wcharmap.h (boolean): Define new private use data type...
+       (false, true): ...with these effective symbolic values; define them.
+       (__mingw_mbtowc_codeset_init, __mingw_mbtowc_cur_max_init)
+       (__mingw_mbtowc_cur_max, __mingw_mbrscan_begin, __mingw_mbtowc_copy)
+       (__mingw_mbtowc_convert): Declare them.
+
+       * Makefile.in (libmingwex.a): Add dependency references for...
+       (mbrconv.$OBJEXT, mbrscan.$OBJEXT, mbrlen.$OBJEXT, mbsrtowcs.$OBJEXT):
+       ...these.
+
+2020-02-25  Keith Marshall  <keith@users.osdn.me>
+
+       Reimplement wcrtomb() and wcsrtombs(); cf. MinGW-Issue #39687.
+
+       * include/wchar.h [__MSVCRT_VERSION__ < __MSVCR80_DLL]
+       (wcrtomb, wcsrtombs): Implement them as static inline redirects to...
+       (__msvcrt_wcrtomb, __msvcrt_wcsrtombs): ...these; declare them.
+       (__mingw_wcrtomb, __mingw_wcsrtombs): Also declare these.
+
+       * include/limits.h (MB_LEN_MAX): Update value; was 2, but should be 5.
+
+       * mingwex/wcsrtombs.c: New file; it implements...
+       (__mingw_wcsrtombs, __msvcrt_wcsrtombs): ...this pair of new
+       functions, either of which serves as a replacement for...
+       (wcsrtombs): ...this; it was originally implemented...
+       * mingwex/wcrtomb.c: ...here; rewritten as new, it now implements...
+       (__mingw_wcrtomb, __msvcrt_wcrtomb): ...these new functions,
+       either of which serves as a replacement for...
+       (wcrtomb): ...this.
+
+       * mingwex/wcharmap.h: New private header; it declares the API for...
+       * mingwex/wcharmap.c: ...this new file, which implements...
+       (__mingw_wctomb_convert): ...this new function, required by...
+       (__mingw_wcrtomb, __msvcrt_wcrtomb, __mingw_wcsrtombs)
+       (__msvcrt_wcsrtombs): ...these; also provides...
+       (__mingw_wctomb_codeset_init, __mingw_wctomb_cur_max_init)
+       (__mingw_wctomb_cur_max): ...these supporting thread local storage
+       accessor functions.
+
+       * mingwex/codeset.c: New file; it implements...
+       (__mb_codeset_for_locale, __mb_len_max_for_codeset): ...this pair of
+       new helper functions; they identify the codeset, and respectively, its
+       MB_CUR_MAX for the effective process locale, which are required by...
+       (__mingw_wctomb_convert): ...this.
+
+       * Makefile.in (libmingwex.a): Add dependency references for...
+       (codeset.$OBJEXT, wcharmap.$OBJEXT, wcsrtombs.$OBJEXT): ...these.
+
+2020-01-21  Keith Marshall  <keith@users.osdn.me>
+
+       Address MinGW-Issue #39658; declare rand_s() function.
+
+       * include/stdlib.h: When the user has defined...
+       [_CRT_RAND_S]: ...this optional feature test macro, and then...
+       [__MSVCRT_VERSION__ >= __MSVCR80_DLL]: ...either this non-free, or...
+       [_WIN32_WINNT >=_ WIN32_WINNT_VISTA]: ...this system-standard runtime
+       library version constraint is satisfied, then...
+       (rand_s): ...declare function prototype.
+
+2020-01-17  Keith Marshall  <keith@users.osdn.me>
+
+       Support GCC-9.x gratuitous dependency on ftruncate64() function.
+
+       * include/unistd.h (ftruncate64): Declare prototype; implement it...
+       * mingwex/ftruncate.c: ...in this new file; it will delegate to...
+       (_chsize_s): ...this MSVCRT.DLL function, if available.
+
+       * Makefile.in (libmingwex.a): Add dependency on...
+       (ftruncate.$OBJEXT): ...this.
+
+       * msvcrt-xref/msvcrt.def.in (_chsize_s): Require dlsym look-up.
+
+2020-01-17  Keith Marshall  <keith@users.osdn.me>
+
+       Preserve order of tests for integrity of header files.
+
+       * tests/Makefile.in: Explicitly sort $wildcard output, within...
+       (list_headers): ...this new function-style macro.
+       (enum_headers): Use it.
+
+       * tests/headers.at: Adjust to recent GNU make $sort order.
+
+2020-01-17  Keith Marshall  <keith@users.osdn.me>
+
+       Update handling of <process.h> test-suite limitation.
+
+       * include/process.h (-Wbuiltin-declaration-mismatch)
+       [__IN_MINGWRT_TESTSUITE__ && __GNUC__ >= 7 && __cplusplus]: Drop...
+       [__cplusplus]: ...this diagnostic constraint, in test case when...
+       [__GNUC__ >= 9]: ...this applies; this diagnostic now affects both
+       C and C++ compilers, with respect to each of...
+       (execv, execve, execvp): ...these functions.
+
+2020-01-17  Keith Marshall  <keith@users.osdn.me>
+
+       Support GCC-9.x gratuitous use of non-standard errno accessor API.
+
+       * include/stdlib.h (_get_errno, _set_errno): Declare prototypes;
+       implement them in-line, for legacy Windows versions which may lack
+       them, since GCC-9.x gratuitously and ill-advisedly requires them.
+       (__STDLIB_H_SOURCED__): Define, and selectively #include...
+
+       * include/errno.h: ...this, subject to criterion...
+       [__STDLIB_H_SOURCED__]: ...for exposure of only...
+       (errno): ...this public API declaration, and...
+       (EINVAL): ...this symbolic constant.
+
+2019-10-26  Keith Marshall  <keith@users.osdn.me>
+
+       Fix MinGW-Issue #39757; avoid multiple vsnprintf() definitions.
+
+       * include/stdio.h [C++] (__mingw_stdio_redirect__): Defer redirection
+       to in-line definitions applicable for C, when the compiler suite is...
+       [__GNUC__]: ...this.
+
+2019-10-16  Keith Marshall  <keith@users.osdn.me>
+
+       Address MinGW-Issue #39677; declare _findclose() only once.
+
+       * include/io.h (_findclose): Relocate declaration within conditional
+       block, to prevent second exposure when <io.h> is included in full,
+       following partial inclusion by <wchar.h>
+
+2019-07-06  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.2.2 release.
+
+       * All files (wsl-5.2.2-release): Tag assigned.
+
+2019-07-03  Keith Marshall  <keith@users.osdn.me>
+
+       Avoid built-in snprintf() prototypes; fix MinGW-Bug #39224
+
+       * include/stdio.h [__USE_MINGW_ANSI_STDIO]
+       (snprintf, vsnprintf): Implement them in-line, delegating to...
+       (__mingw_vsnprintf): ...this external function.
+
+       * mingwex/stdio/snprintf.c mingwex/stdio/vsnprintf.c: Assert
+       copyright; include <stddef.h>, instead of <stdio.h>, to obtain a
+       definition of "size_t"; this is required because the new in-line
+       prototypes, now provided in <stdio.h>, conflict with the intent
+       to provide external implementations.
+
+       * tests/ansiprintf.at (MINGW_AT_CHECK_SNPRINTF): Conditionally
+       circumvent conditions which may produce -Wformat warnings.
+
+2019-07-01  Keith Marshall  <keith@users.osdn.me>
+
+       Revert to macro implementation of "alloca()" functions.
+
+       * include/alloca.h (alloca, _alloca): Delete any prior definitions;
+       remove in-line implementations; replace with conventional prototypes,
+       followed by corresponding function style macro definitions.
+
+2019-01-22  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.2.1 release.
+
+       * All files (wsl-5.2.1-release): Tag assigned.
+
+2019-01-22  Keith Marshall  <keith@users.osdn.me>
+
+       Incorporate user-customized <features.h> configuration.
+
+       * include/_mingw.h: Include <features.h>, or...
+       [_MINGW_FEATURES_HEADER]: ...nominated alternative header.
+       [!defined __MINGW_FEATURES__]: Provide fall-back definition.
+       (__MINGW_FEATURES_BEGIN__, __MINGW_FEATURES_ENABLE__)
+       (__MINGW_FEATURES_IGNORE__, __MINGW_FEATURES_UNSET__)
+       (__MINGW_FEATURES_END__): New macros; define them.
+
+       * tests/Makefile.in (install-mingwrt): Create <features.h> stub; this
+       is an empty file, yielding the default fall-back configuration.
+
+2019-01-21  Keith Marshall  <keith@users.osdn.me>
+
+       Handle another GCC compile-time warning.
+
+       * mingwex/memalign.c (is_power_of_two): Use in-line expansion...
+       (memalign_is_power_of_two): ...of this new function; this is required
+       to avoid -Wsequence-point warnings, which may arise when testing the
+       result of an assignment expression passed as the macro argument.
+
+2019-01-11  Keith Marshall  <keith@users.osdn.me>
+
+       Fix a mkstemp() file name generator defect.
+
+       * mingwex/cryptnam.c (crypto_random_filename_char): Revert 2018-09-06
+       change; argument type must be unsigned char *, to avoid math errors.
+       (__mingw_crypto_tmpname): Use explicit casts to resolve type conflicts.
+
+2019-01-11  Keith Marshall  <keith@users.osdn.me>
+
+       Fix a <stdio.h> typedef omission.
+
+       * include/stdio.h: Adjust comment formatting.
+       (__need___off64_t) [__MSVCRT__]: Require it, but remove...
+       [!(__STRICT_ANSI__||__NO_MINGW_LFS)]: ...this exclusion filter.
+       [!__MSVCRT__] (__need___off32_t): Require this alternative.
+       (sys/types.h): Include unconditionally.
+
 2018-12-23  Keith Marshall  <keith@users.osdn.me>
 
        Prepare and publish MinGW.org WSL-5.2 release.