https://gcc.gnu.org/g:412eb96b1ca384f4bebe996dba341decbc42362c
commit r16-6554-g412eb96b1ca384f4bebe996dba341decbc42362c Author: Jonathan Wakely <[email protected]> Date: Tue Jan 6 14:00:09 2026 +0000 libstdc++: Override detection of flockfile support in newlib [PR123406] As explained in the PR, flockfile and funlockfile are always declared by newlib and there's no easy way to detect whether they're actually defined. Ensure that ac_stdio_locking=no gets set for non-cygwin newlib targets. libstdc++-v3/ChangeLog: PR libstdc++/123406 * acinclude.m4 (GLIBCXX_CHECK_STDIO_LOCKING): Override detection of flockfile for non-cygwin newlib targets. * configure: Regenerate. Reviewed-by: Tomasz KamiĆski <[email protected]> Diff: --- libstdc++-v3/acinclude.m4 | 9 ++++++++- libstdc++-v3/configure | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 103515c000f4..e6723edf880e 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -5822,13 +5822,20 @@ AC_LANG_SAVE AC_MSG_CHECKING([whether flockfile and putc_unlocked are defined in <stdio.h>]) AC_TRY_COMPILE([ #include <stdio.h> + #if __has_include(<newlib.h>) + # ifdef __CYGWIN__ + // Cygwin has working flockfile + # else + # error No usable flockfile on most newlib targets + # endif + #endif ],[ FILE* f = ::fopen("", ""); ::flockfile(f); ::putc_unlocked(' ', f); ::funlockfile(f); ::fclose(f); - ], [ac_stdio_locking=yes], [ac_stdio_locking=no]) + ],[ac_stdio_locking=yes],[ac_stdio_locking=no]) AC_MSG_RESULT($ac_stdio_locking) if test "$ac_stdio_locking" = yes; then diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 0469cbe0f59c..3d825a69fa2e 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -55051,6 +55051,13 @@ $as_echo_n "checking whether flockfile and putc_unlocked are defined in <stdio.h /* end confdefs.h. */ #include <stdio.h> + #if __has_include(<newlib.h>) + # ifdef __CYGWIN__ + // Cygwin has working flockfile + # else + # error No usable flockfile on most newlib targets + # endif + #endif int main ()
