From ece0107a9ea98dc37629b33bc1196ac7362e4254 Mon Sep 17 00:00:00 2001
From: Ashley Gay <gay@adacore.com>
Date: Fri, 8 Mar 2024 11:30:35 +0000
Subject: [PATCH] Ensure use of gcc's version of stdatomic.h in gthr-vxworks

VxWorks provides its own version of the standard stdatomic.h, possibly
relying on non-gcc builtins, and our implementation of the gthr API resorts
to VxWorks specific functions for atomicity features.

When compiling libgcc (with gcc), make sure gcc's version of stdatomic.h
is used: #include it here, first, then define the macro used to guard the
system version so it doesn't get expanded when included indirectly by
other system headers.

2025-10-20  Olivier Hainque  <hainque@adacore.com>
            Ashley Gay  <gay@adacore.com>

libgcc/
	* config/gthr-vxworks.h: Include stdatomic.h and prevent indirect
	inclusion of contents from the system version of that header.
---
 libgcc/config/gthr-vxworks.h | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/libgcc/config/gthr-vxworks.h b/libgcc/config/gthr-vxworks.h
index 2f5a2ca0a14..3918790145a 100644
--- a/libgcc/config/gthr-vxworks.h
+++ b/libgcc/config/gthr-vxworks.h
@@ -34,6 +34,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #else
 
+/* VxWorks provides its own version of the standard stdatomic.h, possibly
+   relying on non-gcc builtins, and our implementation of the gthr API resorts
+   to VxWorks specific functions for atomicity features.
+
+   When compiling libgcc (with gcc), make sure gcc's version of stdatomic.h
+   is used: #include it here, first, then define the macro used to guard the
+   system version so it doesn't get expanded when included indirectly by
+   other system headers.  */
+#if defined(IN_LIBGCC2)
+#include <../include/stdatomic.h>
+#define __INCstdatomich
+#endif
+
 #include <vxWorks.h>
 #include <_vxworks-versions.h>
 
-- 
2.34.1

