OSDN Git Service

Support GCC-9.x gratuitous dependency on ftruncate64() function.
[mingw/mingw-org-wsl.git] / mingwrt / ChangeLog
index ca0f260..40cc39a 100644 (file)
@@ -1,3 +1,710 @@
+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.
+
+       * All files (wsl-5.2-release): Tag assigned.
+
+2018-12-22  Keith Marshall  <keith@users.osdn.me>
+
+       Correct an optional DLL installation and packaging defect.
+
+       * Makefile.in (optional_dll): New function macro; define it, and...
+       (MAP_LIBMINGWEX_A_DLLVERSION): ...wrap this, replacing all usage of...
+       (optional_dll_version, optional_dll_package): ...these; delete them,
+       together with all dependent references.
+
+2018-12-22  Keith Marshall  <keith@users.osdn.me>
+
+       Update ANSI stdio feature test to accommodate ISO-C11.
+
+       * include/_mingw.h.in (__USE_MINGW_ANSI_STDIO): Add a deprecation
+       warning, for ill-advised direct definition in user code; include...
+       (_ISOC11_SOURCE): ...this new user defined feature test macro as a
+       further indirect enabling condition.
+
+2018-12-20  Keith Marshall  <keith@users.osdn.me>
+
+       Implement test suite for aligned heap management API.
+
+       * tests/testsuite.at.in: Include...
+       * tests/memalign.at: ...this new file; it replaces...
+       * mingwex/tst-aligned-malloc.c: ...this; delete it.
+
+2018-12-20  Keith Marshall  <keith@users.osdn.me>
+
+       Reimplement aligned heap management API.
+
+       * mingwex/mingw-aligned-malloc.c: Delete it; it is replaced by...
+       * mingwex/memalign.c: ...this new file; it reimplements...
+       (__mingw_aligned_offset_malloc, __mingw_aligned_offset_realloc)
+       (__mingw_aligned_free): ...each of these public API functions; also...
+       (__mingw_realloc, __mingw_free): ...adds these new public functions,...
+       (__mingw_memalign_base, __mingw_memalign_realloc): ...these private,
+       but globally exposed, supporting functions, and additionally...
+       (__mingw_memalign_lwm): ...this global, private use, variable.
+
+       * include/stdlib.h (__mingw_realloc, __mingw_free): Declare prototypes.
+
+       * include/malloc.h (__mingw_aligned_malloc, __mingw_aligned_realloc):
+       Implement them in-line; export them, via __LIBIMPL__, to libmingwex.a
+       (_aligned_malloc, __mingw_aligned_malloc, _aligned_offset_malloc)
+       (__mingw_aligned_offset_malloc): Add __MINGW_ATTRIB_MALLOC attribute.
+       [__MSVCRT_VERSION__ < __MSVCR70_DLL] (_aligned_malloc, _aligned_free)
+       (_aligned_realloc, _aligned_offset_malloc, _aligned_offset_realloc):
+       Implement them in-line, as wrappers around their MinGW alternatives;
+       export them, via __LIBIMPL__, to new library, libmemalign.a
+
+       * Makefile.in (LIBMINGWEX_MEMALIGN): New macro; define it; derive...
+       (LIBMINGWEX_MEMALIGN_OBJECTS): ...this macro; add compilation rule.
+       (libmingwex.a): Add $LIBMINGWEX_MEMALIGN_OBJECTS; they replace...
+       (mingw-aligned-malloc.$OBJEXT): ...this; remove dependency.
+       (all-mingwrt-libs, install-mingwrt-libs): Add libmemalign.a
+       (msvcrt_repl_funcs): Add alias references for...
+       (free, realloc): ...these.
+
+2018-12-04  Keith Marshall  <keith@users.osdn.me>
+
+       Reimplement Win9x specific fseek()/fwrite() redirector.
+
+       * include/stdio.h [__USE_MINGW_FSEEK]: Deprecate support for direct
+       user definition; deduce it, as an internal private definition, from...
+       [_WIN32_WINDOWS]: ...this, when appropriately defined for Win9x.
+       [__USE_MINGW_FSEEK] (__mingw_fseek): Declare new prototype; map it as
+       multiple __CRT_ALIAS inline function overrides for each of...
+       (fseek, _fseeki64, fseeko64): ...these.
+       [__USE_MINGW_FSEEK] (__mingw_fwrite): Likewise, overriding...
+       (fwrite): ...this.
+       (__mingw_fseeko64): Delete all references; it is no longer provided,
+       nor required.
+
+       * mingwex/stdio/fwrite.c: New file; it reimplements the Win9x
+       fseek()/fwrite() function redirector interface, and thus replaces...
+       * mingex/ming-fseek.c: ...this; delete it.
+
+       * Makefile.in (libmingwex.a): Remove dependency on...
+       (mingw-fseek.$OBJEXT): ...this object module; replace it with...
+       (fwrite.$OBJEXT): ...this alternative dependency.
+
+2018-12-04  Keith Marshall  <keith@users.osdn.me>
+
+       Implement POSIX.1-1996 linked-list queue management API.
+
+       * mingwex/insque.c mingwex/remque.c: New files; they implement the
+       POSIX.1-1996 insque(), and remque() functions, respectively.
+
+       * include/search.h (insque, remque): Declare function prototypes.
+
+       * Makefile.in (libmingwex.a): Add dependencies on...
+       (insque.$OBJEXT, remque.$OBJEXT): ...these.
+
+2018-11-25  Keith Marshall  <keith@users.osdn.me>
+
+       Emulate _fseeki64()/_ftelli64() API on legacy platforms.
+
+       * mingwex/stdio/fseeki64.c: New file; it implements...
+       (__mingw_fseeki64, fseeko64): ...both of these functions, avoiding any
+       dependency on undocumented internal implementation details of...
+       (fpos_t): ...this opaque data type, and replacing...
+       * mingwex/stdio/fseeko64.c: ...this; delete it.
+
+       * mingwex/stdio/ftelli64.c: New file; it implements...
+       (_ftelli64, ftello64): ...both of these, again avoiding any dependency
+       on undocumented internal implementation details of...
+       (fpos_t): ...this opaque data type.
+
+       * include/stdio.h (fpos_t): Make it more effectively opaque.
+       (__mingw_fseeki64, __mingw_ftelli64): Declare them for legacy use.
+       [_WIN32_WINNT < VISTA && __MSVCRT_VERSION__ < MSVCR80_DLL] (_fseeki64)
+       (_ftelli64): Map inline emulations, to "__mingw" prefixed names.
+       (ftello64): Remove inline implementation.
+
+       * Makefile.in (libmingwex.a): Add references to...
+       (fseeki64.$OBJEXT, ftelli64.$OBJEXT): these; remove reference to...
+       (fseeko64.$OBJEXT): ...this.
+
+2018-10-21  Keith Marshall  <keith@users.osdn.me>
+
+       Update <conio.h> and <wchar.h> header files.
+
+       * include/conio.h: Tidy layout; assert copyright.
+       [_CONIO_H_]: Rename multiple inclusion guard macro, to conform to...
+       [_CONIO_H]: ...this preferred convention; do not define when...
+       [__WCHAR_H_SOURCED__]: ...this selective inclusion condition applies.
+       [__need_wint_t, __need_wchar_t]: Define them; include <stddef.h>...
+       (wint_t, wchar_t): ...for these corresponding data type definitions.
+       [_WIN32_WINNT >= WINXP || __MSVCRT_VERSION__ >= __MSVCR70_DLL]
+       (_getwch, _getwche, _ungetwch, _putwch): Declare function prototypes.
+       [__MSVCRT_VERSION__>=__MSVCR80_DLL] (_getch_nolock, _getche_nolock)
+       (_ungetch_nolock, _putch_nolock, _getwch_nolock, _getwche_nolock)
+       (_ungetwch_nolock, _putwch_nolock): Likewise.
+       [_BEGIN_C_DECLS, _END_C_DECLS]: Use them.
+
+       * include/wchar.h: Selectively include <conio.h>, for...
+       (_getwch, _getwche, _ungetwch): ...these function prototypes, and...
+       [__MSVCRT_VERSION__>=__MSCVCR80_DLL] (_getwch_nolock)
+       (_getwche_nolock, _ungetwch_nolock): ...these.
+
+2018-10-18  Keith Marshall  <keith@users.osdn.me>
+
+       Map compile-time constant references for POSIX clocks.
+
+       * include/time.h (CLOCK_REALTIME, CLOCK_MONOTONIC): Redefine, using...
+       (__MINGW_POSIX_CLOCKAPI): ...this new macro; it converts clock indices
+       to odd-valued compile-time constant pseudo-pointers, (distinguishable
+       from real pointers which are always even-valued), which may be passed
+       as clockid_t references in POSIX clock API function calls.
+
+       * mingwex/clockapi.h (struct __clockid__): Specify 4-byte alignment.
+       (__clock_api_is_valid): Change return type to "clockid_t".
+
+       * mingwex/clockapi.c (__clock_api_is_valid): Return an even-valued,
+       non-NULL, "clockid_t" reference pointer, or "NULL" if invalid; use...
+       (clock_reference): ...this new static inline function, to convert...
+       (CLOCK_REALTIME, CLOCK_MONOTONIC): ...these odd-valued pseudo-pointers
+       to their actual run-time pointer equivalents; delete their physical
+       initializations, which have now become invalid.
+
+       * mingwex/clockres.c (clock_getres)
+       * mingwex/clocktime.c (clock_gettime)
+       * mingwex/clockset.c (clock_settime): Update the "clockid_t" argument
+       to match the real pointer returned by __clock_api_is_valid()
+
+2018-10-08  Keith Marshall  <keith@users.osdn.me>
+
+       Suppress autoconf detection of _aligned_malloc functions.
+
+       * msvcrt-xref/msvcrt.def.in (_aligned_malloc, _aligned_free)
+       (_aligned_offset_malloc, _aligned_realloc, _aligned_offset_realloc):
+       Mark as requiring dlsym() lookup, when linking with MSVCRT.DLL
+
+2018-10-07  Keith Marshall  <keith@users.osdn.me>
+
+       Make alloca() API both GNU and Microsoft compatible.
+
+       * include/malloc.h: Tidy layout; assert copyright.
+       (_MALLOC_H_): Rename guard macro, for conformance with...
+       (_MALLOC_H): ...this preferred guard macro naming convention.
+       (GCC system_header): Add pragma, declaring it as such.
+       [__MSVCRT_VERSION__ >= 0x0700]: Express symbolically, guarding...
+       (_aligned_malloc, _aligned_offset_malloc)
+       (_aligned_realloc, _aligned_offset_realloc)
+       (_aligned_recalloc, _aligned_offset_recalloc): ...these...
+       [__MSVCRT_VERSION__>=__MSVCR70_DLL]: ...thus.
+       [_BEGIN_C_DECLS, _END_C_DECLS]: Use them.
+       (alloca, _alloca): Factor them out, then include from...
+       * include/alloca.h: ...this new header file; it reimplements...
+       (alloca, _alloca): ...these, such that they remain Microsoft
+       compatible, while adding GNU conformity, either explicitly when
+       included by user code, or conditionally when included by...
+       * include/stdlib.h [!__STRICT_ANSI__]: ...this.
+
+       * tests/headers.at: Regenerated by "make check".
+       (MINGWRT_AT_PACKAGE_HEADERS): Add alloca.h
+
+2018-09-06  Keith Marshall  <keith@users.osdn.me>
+
+       Avoid unwanted GCC warning diagnostic messages.
+
+       * Makefile.in (libm_dummy.c): Remove "static" qualifier from...
+       (__mingw_libm_dummy): ...this variable; it caused "-Wunused-variable"
+       warning diagnostics, when compiled with "-Wall".
+
+       * main.c (WinMain): Remove unnecessary argument names from prototype.
+       (main): Make its argument list conform to convention, otherwise it
+       causes a "-Wmain" warning diagnostic when compiled with "-Wall".
+
+       * mingwex/clocktime.c (clock_gettime) [clock_id-type]
+       * mingwex/clockapi.c (clock_api_getres_interval) [clock_api->type]:
+       Ensure that switches include default cases; this avoids a "-Wswitch"
+       warning diagnostic message, in each case, when compiled with "-Wall".
+
+       * mingwex/cryptnam.c (crypto_random_filename_char): Remove "unsigned"
+       qualifier from both argument and return type; this avoids an argument
+       type mismatch, raising a "-Wpointer-sign" warning when called from...
+       (__mingw_crypto_tmpname): ...here, and compiled with "-Wall".
+
+       * mingwex/imaxdiv.c: Tidy layout; assert copyright.
+       (lldiv): Correct return type; explicitly disable "-Wattribute-alias"
+       diagnostic messages, under GCC pragma control.
+
+       * mingwex/ofmt.c [__crtofmt__] (__mingw_set_output_format_fallback)
+       [__crtnfmt__] (__mingw_get_printf_count_output_fallback): Likewise,
+       disable "-Wattribute-alias" diagnostics.
+
+       * mingwrt/mingwex/stdio/pformat.c (__pformat_ignore_flags): Adjust
+       layout, to avoid a "-Wmisleading-indentation" warning diagnostic.
+       (__pformat_argmap) [length]: Add a no-op default case, to avoid a
+       "-Wswitch" warning diagnostic message.
+
+       * mingwrt/profile/mcount.c: Explicitly disable "-Wframe-address"
+       diagnostics, under GCC pragma control, to avoid warnings relating...
+       (__builtin_return_address): ...this, when called from...
+       (mcount): ...here.
+
+       * mingwrt/setargv.c (__mingw_setargv): Insert parentheses, as advised,
+       to eliminate "-Wparentheses" diagnostic messages.
+
+2018-09-03  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.1.1 release.
+
+       * All files (wsl-5.1.1-release): Tag assigned.
+
+2018-09-02  Keith Marshall  <keith@users.osdn.me>
+
+       Make clockapi symbolic constants #ifdef detectable.
+
+       * mingwex/clockapi.c (CLOCK_REALTIME, CLOCK_MONOTONIC): Add "const".
+       * include/time.h (CLOCK_REALTIME, CLOCK_MONOTONIC): Likewise; also
+       define both as self-referencing macros.
+
+2018-08-26  Keith Marshall  <keith@users.osdn.me>
+
+       Circumvent <process.h> testsuite failure with GCC-7+.
+
+       * include/process.h (execv, execve, execvp): Subject declarations to
+       #pragma GCC diagnostic ignored "-Wbuiltin-declaration-mismatch", if...
+       [__cplusplus && __IN_MINGWRT_TESTSUITE__ && __GNUC__ >= 7]: ...this.
+
+2018-04-16  Keith Marshall  <keith@users.osdn.me>
+
+       Suppress glob-brace expansion within quoted arguments.
+
+       * setargv.c (__mingw32_setargv) [quoted]: Handle '{', ',', and '}'
+       in the same manner as '*', and '?'.
+
+2018-04-16  Keith Marshall  <keith@users.osdn.me>
+
+       Suppress glob-brace expansion of single item lists.
+
+       * mingwex/glob.c (glob_match) [c == '{']: Look-ahead to matching '}';
+       ignore intervening nested '{' ... '}' expression groups, and suppress
+       special interpretation of '{' if '\0' encountered before '}' at outer
+       nesting level, or if no unescaped ',' found within outer expression.
+
+2018-02-26  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.1 release.
+
+       * All files (wsl-5.1-release): Tag assigned.
+
+2018-02-22  Keith Marshall  <keith@users.osdn.me>
+
+       Correct <sys/timeb.h> 32-bit vs. 64-bit time_t anomalies.
+
+       * include/sys/timeb.h: Assert copyright; tidy layout.
+       (_TIMEB_H_): Original multiple inclusion guard macro; rename it...
+       (_SYS_TIMEB_H): ...conforming to this preferred naming convention.
+       (GCC system_header): Add pragma, asserting it as such a header.
+       (__need_time_t): Define for selective <sys/types.h> inclusion.
+       (_BEGIN_C_DECLS, _END_C_DECLS): Use them as appropriate.
+       (pragma pack): Push to pack all structs with 2-byte alignment.
+       (struct timeb): Mark as deprecated, from POSIX.1-2001 onwards.
+       (ftime): Likewise, mark as deprecated; always emulate it by in-line
+       redirection to _ftime(), however this may be implemented.
+       (struct __timeb32): Make its definition unconditionally visible.
+       (_ftime32) [__MSVCRT_VERSION__ >= __MSVCR80_DLL]: Declare prototype.
+       (_ftime32) [_WIN64 || _WIN32_WINNT >= _WIN32_WINNT_VISTA]: Likewise,
+       otherwise emulate it by in-line redirection to 32-bit _ftime().
+       (struct __timeb64, _ftime64): Make visibility condition symbolic...
+       [__MSVCRT_VERSION__ >= __MSVCR61_DLL]: ...thus; add visibility for...
+       [_WIN64 || _WIN32_WINNT >= _WIN32_WINNT_WIN2K]: ...these alternatives.
+       (_ftime) [__MSVCRT_VERSION__ < __MSVCR80_DLL]: Declare prototype.
+       (_ftime) [__MSVCRT_VERSION__ >= __MSVCR80_DLL]: Emulate it...
+       [_USE_32BIT_TIME_T]: ...by in-line redirection to _ftime32(), else...
+       [!_USE_32BIT_TIME_T]: ...to _ftime64().
+
+       * tests/headers.at [sys/timeb.h]: Suppress "deprecated" warnings.
+
+2018-02-22  Keith Marshall  <keith@users.osdn.me>
+
+       Correct Windows version support for <utime.h> functions.
+
+       * include/sys/utime.h: Tidy layout; assert copyright.
+       (_UTIME_H_): Rename this repeat inclusion guard macro...
+       (_SYS_UTIME_H): ...to this, for consistency with current practice.
+       (_BEGIN_C_DECLS, _END_C_DECLS): Use them, as appropriate.
+       (struct __utimbuf32): Define it unconditionally; remove...
+       [__MSVCRT_VERSION__>=0x0800]: ...this prerequisite.
+       (_utime32, _wutime32, _futime32): Declare them for...
+       [_WIN32_WINNT >= _WIN32_WINNT_VISTA]: ...this, in addition to...
+       [__MSVCRT_VERSION__>=__MSVCR80_DLL]: ...this original condition, but
+       also emulate them in-line, if neither condition applies.
+       [__MSVCRT_VERSION__>=__MSVCR80.DLL] (_utime, _wutime, _futime):
+       Implement them in-line, delegating each respectively to...
+       [_USE_32BIT_TIME_T] (_utime32, _wutime32, _futime32): ...these, or...
+       [!_USE_32BIT_TIME_T] (_utime64, _wutime64, _futime64): ...to these.
+       [__MSVCRT_VERSION__>=__MSVCR80.DLL] (utime): Implement in-line, or...
+       [__MSVCRT_VERSION__<__MSVCR80.DLL] (utime): ...declare it.
+
+2018-01-17  Keith Marshall  <keith@users.osdn.me>
+
+       Fix faulty POSIX deprecation warning logic.
+
+       * include/_mingw.h.in (__POSIX_2008_DEPRECATED): Do not nest...
+       (__POSIX_2001_DEPRECATED): ...within defininion of this; similarly...
+       (__POSIX_1995_DEPRECATED): ...neither within this; rename this as...
+       (__POSIX_1996_DEPRECATED): ...this; although conditional upon...
+       [_POSIX_C_SOURCE >= 199506L]: ...this, the corresponding standard was
+       eventually ratified, not as POSIX.1-1995, but as POSIX.1-1996
+
+2017-12-28  Keith Marshall  <keith@users.osdn.me>
+
+       Fix a build issue, assembling generic SX files.
+
+       * Makefile.in (%_generic.sx): Always use $(COMPILE.sx) to pre-process
+       and assemble these; with $(CC) -c $(ALL_CPPFLAGS) $(ASFLAGS), versions
+       of GCC, prior to GCC-4.3, will fail to identify the source file suffix
+       correctly, resulting in failure to assemble the code.
+
+2017-12-18  Keith Marshall  <keith@users.osdn.me>
+
+       Support strtok() re-entrancy, per request [#2342].
+
+       * mingwex/strtok_r.c: New file; it implements...
+       (strtok_r): ...this function, per POSIX.1-1995 specification.
+       * Makefile.in (libmingwex.a): Add reference; make it depend on...
+       (strtok_r.$OBJEXT): ...this.
+
+       * include/string.h: Declare corresponding runtime API.
+       [_POSIX_C_SOURCE >= 199506L] (strtok_r): Add function prototype.
+       [__MSVCRT_VERSION__ >= __MSVCR80_DLL] (strtok_s): Likewise; this is
+       the Microsoft equivalent function, first introduced in this non-free
+       MSVC runtime library; subsequently available in MSVCRT.DLL since...
+       [_WIN32_WINNT >= _WIN32_WINNT_VISTA]: ...this release, likewise.
+
+2017-12-16  Keith Marshall  <keith@users.osdn.me>
+
+       Implement autotest module for POSIX clock API functions.
+
+       * tests/clockapi.at: New file.
+       * tests/testsuite.at.in (clockapi.at): Incorporate it.
+
+2017-12-15  Keith Marshall  <keith@users.osdn.me>
+
+       Implement a subset of the POSIX.1b-1993 clock API.
+
+       * include/time.h [_POSIX_C_SOURCE >= 199309L]
+       (clockid_t): New structured data type; define it opaquely, and...
+       (CLOCK_REALTIME, CLOCK_MONOTONIC): ...declare these extern instances.
+       (clock_getres, clock_gettime, clock_settime): New functions; declare
+       prototypes.
+
+       * mingwex/clockapi.h mingwex/clockapi.c mingwex/clockres.c
+       * mingwex/clockset.c mingwex/clocktime.c: New files; they implement
+       the preceding clock instances, and associated API functions.
+
+       * include/sys/time.h [_POSIX_C_SOURCE >= 200809L] (gettimeofday):
+       Mark it as "deprecated".
+
+2017-12-14  Keith Marshall  <keith@users.osdn.me>
+
+       Add support for POSIX.1 "obsolescence" warnings.
+
+       * include/_mingwrt.h.in (__POSIX_1995_DEPRECATED)
+       (__POSIX_2001_DEPRECATED, __POSIX_2008_DEPRECATED): New macros; define
+       them, such as each is conditional on the specific value assigned to...
+       [_POSIX_C_SOURCE]: ...this feature test macro, as the equivalent of...
+       (__MINGW_ATTRIB_DEPRECATED): ...this, or of nothing, as appropriate.
+
+2017-12-06  Keith Marshall  <keith@users.osdn.me>
+
+       Prepare and publish MinGW.org WSL-5.0.2 release.
+
+       * All files (wsl-5.0.2-release): Tag assigned.
+
+       * Makefile.in (mingwrt-srcdist-package-files): Add reference...
+       * $mingwrt_srcdir/*.sx: ...for files matching this template.
+
+2017-12-02  Keith Marshall  <keith@users.osdn.me>
+
+       Provide legacy OS work around for issue [#2357]
+
+       * cpu_features.c: Delete; replace it with...
+       * cpu_features.sx: ...this new assembly language file.
+
+       * cpu_features.h [__ASSEMBLER__]
+       (__cpu_features, __cpu_features_init): Suppress declarations.
+
+       * Makefile (%.sx): Add $srcdir vpath reference.
+
+2017-11-28  Keith Marshall  <keith@users.osdn.me>
+
+       Handle indeterminate FLT_EVAL_METHOD; fix issue [#2352].
+
+       * include/math.h [FLT_EVAL_METHOD == 0 || FLT_EVAL_METHOD == 1]
+       (float_t, double_t): Define them explicitly, as appropriate for each
+       of these two specific cases only; otherwise, define them as if for...
+       [FLT_EVAL_METHOD == 2]: ...this explicit case, but also apply it as a
+       suitable default compromise for the indeterminate case, in which...
+       [FLT_EVAL_METHOD != 2]: ...emit indeterminacy warning.
+
+2017-10-25  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Include, and make <sys/bsdtypes.h> test suite safe.
+
+       * tests/headers.at (sys/bsdtypes.h): Add reference.
+
+       * include/sys/bsdtypes.h [__IN_MINGWRT_TESTSUITE__]: Add to...
+       [_BSD_SOURCE || _WINSOCK2_H]: ...these, as conditions for supression
+       of "ill-advised usage" warning message.
+
+2017-09-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Factor <sys/time.h> duplicate content out of winsock headers.
+
+       * include/sys/time.h: Assert copyright; tidy layout.
+       [_BEGIN_C_DECLS, _END_C_DECLS]: Use them to avoid C++ name mangling.
+       [__WINSOCK_H_SOURCED__] (_SYS_TIME_H): Do not define it; hence...
+       [!defined _SYS_TIME_H]: ...selectively expose definitions for only...
+       (timerclear, timerisset, timercmp): ...these functional macros, and...
+       (struct timeval): ...this data type; inhibit redefinition on...
+       [defined _SYS_TIME_H && _WINSOCK_H]: ...second reading.
+       (_TIMEVAL_DEFINED): Do not define; it isn't required.
+
+2017-09-09  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Factor BSD non-standard type definitions into common header.
+
+       * profile/gmon.h [_BSDTYPES_DEFINED]: Delete block; include...
+       * include/sys/bsdtypes.h: ...this new file instead; it defines...
+       (u_char, u_int, u_long, u_short): ...these non-standard data types.
+
+       * profile/gmon.c profile/mcount.c [_BSD_SOURCE]: Declare it;
+       it suppresses warnings from <sys/bsdtypes.h>, about ill-advised
+       non-standard BSD typedef usage.
+
+2017-07-30  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Prepare and tag for release of MinGW.org WSL-5.0.1
+
+       * All files (wsl-5.0.1-release): Tag assigned.
+
+2017-07-12  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Automate testsuite dependency generation.
+
+       * tests/Makefile.in (testsuite) [$srcdir/*.at]: Automatically
+       enumerate all such wildcard matches as prerequisites, instead of...
+       (headers.at, ansiprintf.at, logarithms.at, powerfunc.at): ...these,
+       which were previously enumerated explicitly.
+
+2017-06-05  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Automatically correct obsolete _XOPEN_SOURCE usage.
+
+       * include/_mingw.h.in (__paste, __valueless): New macros; define them.
+       (_XOPEN_SOURCE) [defined with no value]: Use them to attempt to deduce
+       this obsolete usage; if detected, redefine it with a default assigned
+       value of one, emulating -D_XOPEN_SOURCE command line definition.
+
+2017-05-24  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Fix snprintf()/vsnprintf() -Wformat vs. multiple definition issue.
+
+       * include/stdio.h (__mingw_stdio_redirect__): Add reference to...
+       (__Wformat): ...this new macro; define it, such that it expands via...
+       (__Wformat_mingw_printf, __Wformat_msvcrt_printf): ...these new macros,
+       ultimately expanding to an attribute declaration, in terms of...
+       (__Wformat_ms_vprintf, __Wformat_ms_vfprintf, __Wformat_ms_vsprintf)
+       (__Wformat_ms_printf, __Wformat_ms_fprintf, __Wformat_ms_sprintf):
+       ...any one of these; they map to an ms_printf attribute, or...
+       (__Wformat_vprintf, __Wformat_vfprintf, __Wformat_vsprintf)
+       (__Wformat_printf, __Wformat_fprintf, __Wformat_sprintf): ...any one
+       of these; they map conditionally to...
+       [__GNUC__>=6] (__mingw_printf__): ...this new format attribute, or...
+       [__GNUC__< 6]: ...nothing.
+       (snprintf, vsnprintf): Revert 2017-01-30 inline definitions; add...
+       (__Wformat_snprintf, __Wformat_vsnprintf): ...these attributes; they
+       are also mapped conditionally, in this case to...
+       [__GNUC__>=6] (__mingw_printf__): ...this, or...
+       [__GNUC__< 6] (__gnu_printf__): ...this.
+
+2017-03-14  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Refactor mingwrt and w32api common makefile content.
+
+       * Makefile.in (mingwrt-srcdist-config-files): Rename it...
+       (mingwrt-srcdist-common-files): ...as this phoney build rule.
+       (shared_include_file): New macro; define it, and include named file.
+       (configure, config.status, Makefile, config.status.missing, _mingw.h)
+       (w32api.h, PACKAGE_VERSION_SCRIPT, PACKAGE_VERSION_FORMAT): Factor
+       out; relocate them to new file in common parent directory...
+       * ../Makefile.comm: ...here.
+
+2017-03-09  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Fix generated header file dependencies.
+
+       * Makefile.in (_mingw.h, w32api): Make them depend on changes in...
+       [VERSION.m4]: ...this; package version changes are no longer made...
+       [configure.ac]: ...here; delete associated prerequisite reference.
+       (distclean-local): Delete them.
+
+2017-03-09  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Strip optional DLLs, when staging for distribution.
+
+       * Makefile.in (mingwrt-%-optist): Recursively make...
+       (install-strip-$*-optional-dll): ...this internal target, not...
+       (install-$*-optional-dll): ...this.
+
+2017-03-08  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Prepare and tag for release of mingwrt-5.0 package set.
+
+       * All files (wsl-5.0-release): Tag assigned.
+
+2017-03-07  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
+       Avoid -shared-libgcc dependencies in optional DLLs.
+
+       * Makefile.in (dllname): Qualify it, by addition of...
+       (LIBGCC_LINK_OPTION): ...this DLL name specific linking option macro.
+       (libmingwex.dll.a): Force it to use -static-libgcc for associated DLL.
+
 2017-02-27  Keith Marshall  <keithmarshall@users.sourceforge.net>
 
        Support optional DLL builds from static libraries.