On 2026-02-02 09:19, Torbjorn SVENSSON wrote:
Hi David,
Thanks for the feedback.
On 2026-01-30 20:19, David Malcolm wrote:
On Fri, 2026-01-30 at 19:57 +0100, Torbjorn SVENSSON wrote:
On 2026-01-30 16:22, David Malcolm wrote:
On Fri, 2026-01-30 at 15:06 +0100, Torbjörn SVENSSON wrote:
Hi Torbjörn; sorry about the breakage.
Changes since v1:
- Replaced check for MinGW 10.0.0 or above with a configure-magic
to
check if afunix.h is available or not.
In https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122666#c2, it's
mentioned that
the block was placed above the include of config.h, but I see no
reason why it
have to be, as long as it's above the include of system.h.
Sangamesh fixed the placement of config.h in that file yesterday in
r16-7139-gbc10a49c37501e; please can you rebase and retry your
patch?
I've rebased my patch and it builds just fine.
Thanks...
However, the function maybe_open_sarif_sink_for_socket() does not
behave properly on Windows.
No matter what I do, I always ends up with
cc1.exe: fatal error: unable to create socket: No error
...bother.
I think this has due to that WSAStartup() might never called.
My ambition with my patch was never to get the socket code to work,
it was simply to fix the build issue with older mingw versions,
regardless if the feature is used or not.
Do you agree that we fix the build issue first, and then someone with
adequate Windows experience can perhaps fix the socket issue?
Sounds like a good plan. The sarif socket support is an experimental
feature [1], so fixing the build is much more important than having it
work.
I'll push this fix tomorrow unless someone objects before that.
Pushed as r16-7257-g0ef6df1db19.
Kind regards,
Torbjörn
If there is someone out there that knows how sockets works on Windows, please
feel free to fix the issue as I do not have enough experience in this domain
and it's out of my scope.
Kind regards,
Torbjörn
Dave
[1] https://gcc.gnu.org/pipermail/gcc-patches/2025-November/700258.html
Kind regards,
Torbjörn
Thanks
Dave
Ok for trunk?
--
afunix.h was first included in MinGW 10.0.0. For earlier
versions,
fall
back to internal definition.
gcc/ChangeLog:
* diagnostics/sarif-sink.cc: Conditionally include
afunix.h
if it's available, else fall back to internal
definition.
Signed-off-by: Torbjörn SVENSSON <[email protected]>
---
gcc/config.in | 6 ++++++
gcc/configure | 38
+++++++++++++++++++++++++++++++++--
gcc/configure.ac | 15 ++++++++++++++
gcc/diagnostics/sarif-sink.cc | 10 ++++++++-
4 files changed, 66 insertions(+), 3 deletions(-)
diff --git a/gcc/config.in b/gcc/config.in
index 72d2eb1dc80..2feb1d12b1b 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -355,6 +355,12 @@
#endif
+/* Define if you have a working <afunix.h> header file. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_AFUNIX_H
+#endif
+
+
/* Define if AF_INET6 supported. */
#ifndef USED_FOR_TARGET
#undef HAVE_AF_INET6
diff --git a/gcc/configure b/gcc/configure
index 40d40cb8daa..03f4d011ed6 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -10485,6 +10485,40 @@ $as_echo "#define HAVE_INTTYPES_H 1"
confdefs.h
fi
+# Use <afunix.h> only if it exists,
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for afunix.h"
&5
+$as_echo_n "checking for afunix.h... " >&6; }
+if ${gcc_cv_header_afunix_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <winsock2.h>
+#include <afunix.h>
+int
+main ()
+{
+SOCKADDR_UN addr;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ gcc_cv_header_afunix_h=yes
+else
+ gcc_cv_header_afunix_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
$gcc_cv_header_afunix_h" >&5
+$as_echo "$gcc_cv_header_afunix_h" >&6; }
+if test $gcc_cv_header_afunix_h = yes; then
+
+$as_echo "#define HAVE_AFUNIX_H 1" >>confdefs.h
+
+fi
+
# Look for the ZSTD package.
ZSTD_INCLUDE=
ZSTD_LIB=
@@ -21939,7 +21973,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21942 "configure"
+#line 21976 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -22045,7 +22079,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 22048 "configure"
+#line 22082 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 85272df5a24..15f18b01dd8 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1484,6 +1484,21 @@ if test $gcc_cv_header_inttypes_h = yes;
then
[Define if you have a working <inttypes.h> header
file.])
fi
+# Use <afunix.h> only if it exists,
+AC_MSG_CHECKING(for afunix.h)
+AC_CACHE_VAL(gcc_cv_header_afunix_h,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+[[#include <winsock2.h>
+#include <afunix.h>]],
+ [[SOCKADDR_UN addr;]])],
+ [gcc_cv_header_afunix_h=yes],
+ [gcc_cv_header_afunix_h=no])])
+AC_MSG_RESULT($gcc_cv_header_afunix_h)
+if test $gcc_cv_header_afunix_h = yes; then
+ AC_DEFINE(HAVE_AFUNIX_H, 1,
+ [Define if you have a working <afunix.h> header file.])
+fi
+
# Look for the ZSTD package.
ZSTD_INCLUDE=
ZSTD_LIB=
diff --git a/gcc/diagnostics/sarif-sink.cc
b/gcc/diagnostics/sarif-
sink.cc
index 78743df7f1d..8e8947aa026 100644
--- a/gcc/diagnostics/sarif-sink.cc
+++ b/gcc/diagnostics/sarif-sink.cc
@@ -18,15 +18,23 @@ You should have received a copy of the GNU
General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+#include "config.h"
+
#ifdef __MINGW32__
#include <winsock2.h>
+#ifdef HAVE_AFUNIX_H
#include <afunix.h>
#else
+struct sockaddr_un {
+ ADDRESS_FAMILY sun_family;
+ char sun_path[108];
+};
+#endif
+#else
#include <sys/un.h>
#include <sys/socket.h>
#endif
-#include "config.h"
#define INCLUDE_LIST
#define INCLUDE_MAP
#define INCLUDE_STRING