https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119658
Bug ID: 119658
Summary: Better support for freestanding env on Windows
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: nightstrike at gmail dot com
Target Milestone: ---
See the following for reference:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117432#c18
https://gcc.gnu.org/legacy-ml/gcc-patches/2010-01/msg01034.html
https://sourceforge.net/p/mingw-w64/bugs/970/
Long ago, mingw-w64 imported the GCC version of several header files and
modified them to support Windows. GCC was then modified to not install its own
in preference to the ones from mingw-w64. These have not been kept in sync,
and it's better to maintain this in one location. For example, the above
mentioned PR117432 highlights a particular test case that failed due to lack of
support of a C23 feature in stdarg.h.
Andrew suggested on IRC to use __has_include_next and #include_next on the GCC
side to detect if any mingw-w64 customizations are present, for instance in a
stdarg.ext.h file. Then, on the mingw-w64 side, we can maintain just those
aspects that need to be customized. This would require changes on both sides,
but at least the GCC stdarg.h file would again be installed.
This likely applies to any of the freestanding environment headers described
here:
https://en.cppreference.com/w/c/language/conformance
Currently, that is the following:
float.h
iso646.h
limits.h
stdalign.h
stdarg.h
stdbool.h
stddef.h
stdint.h
stdnoreturn.h
stdbit.h