public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "tomas.kalibera at gmail dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug driver/101238] Driver won't find cc1/cc1plus on MinGW, CXXFLAGS need -D__USE_MINGW_ACCESS Date: Tue, 29 Jun 2021 08:26:00 +0000 [thread overview] Message-ID: <bug-101238-4-nVWx1FgDyl@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-101238-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101238 --- Comment #2 from Tomas Kalibera <tomas.kalibera at gmail dot com> --- I started writing that email, but on the way I found that one should add -D__USE_MINGW_ACCESS also BOOT_CXXFLAGS, which I have neither done nor tested. The problem I debugged required only required adding to CXXFLAGS. In principle, one needs to add -D__USE_MINGW_ACCESS everywhere, where GCC might use "access()" to query X_OK, so it should be safe to add simply everywhere when compiling C or C++, it just must have been forgotten. I see -D__USE_MINGW_ACCESS has been added to CXXFLAGS and BOOT_CXXFLAGS in GCC 11 by a patch from Martin Storsjo, "mh-mingw: Set __USE_MINGW_ACCESS in missed C++ flags variables", https://gcc.gnu.org/pipermail/gcc-patches/2021-April/567815.html And it is related to "[MinGW] Set __USE_MINGW_ACCESS for C++ as well" https://gcc.gnu.org/pipermail/gcc-patches/2019-March/518147.html (done also in GCC 10), which adds __USE_MINGW_ACCESS to STAGE*_CXXFLAGS. My testing was using an MXE-based build of GCC 10.2 (cross-compiled on Linux, for 64-bit Windows, with MinGW-w64 7). Without the change, gcc.exe did not find cc1.exe. Process monitor showed that gcc.exe called stat on cc1.exe successfully (so used the correct path already the first time), but then continued checking other locations and when it failed, tried to execute without path name (relying on system PATH). So a workaround I have been using was to have also cc1.exe on PATH, where it would be found by Windows (so the problem of access(,X_OK) did not apply there). Then the observed behavior matched the code of the driver gcc.c, which calls access(,X_OK) to check that cc1.exe is executable, and it incorrectly concludes that it isn't. Which in turn is because access on Windows does not support X_OK (and __USE_MINGW_ACCESS provides a MinGW replacement which does). I've confirmed this was what happened via adding print statements to the driver and rebuilding. And eventually I rebuilt gcc with the proposed patch and it found cc1.exe fine. Should I still send a copy of Martin Storsjo's patch to gcc-patches@gcc.gnu.org, or is this information here now sufficient?
next prev parent reply other threads:[~2021-06-29 8:26 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-28 9:55 [Bug driver/101238] New: " tomas.kalibera at gmail dot com 2021-06-29 6:58 ` [Bug driver/101238] " rguenth at gcc dot gnu.org 2021-06-29 8:26 ` tomas.kalibera at gmail dot com [this message] 2021-08-16 21:56 ` [Bug driver/101238] [9/10 only] backport r11-8147 to gcc-10 and gcc-9: " pinskia at gcc dot gnu.org 2021-12-16 13:32 ` marxin at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-101238-4-nVWx1FgDyl@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).