[PATCH 2/4] sys/stdatomic.h: be nicer to c++
Sebastian Huber
sebastian.huber@embedded-brains.de
Tue Jul 9 06:26:05 GMT 2024
From: Konstantin Belousov <kib@FreeBSD.org>
Use of stdatomic.h is undefined in C++, even the C++ 2020 standard does not
list stdatomic.h as a C library header supported by the language. More,
there are some subtle differences between the <atomic> C++ header, and
C11+ stdatomic.h provided features.
Nonetheless, it is a quality of the implementation aspect, so let mis-users
mis-use stdatomic.h as they want, by making a compat shim for _Bool.
PR: 262683
Reported by: yuri
Reviewed by: dim, emaste
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D34686
---
newlib/libc/include/stdatomic.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/newlib/libc/include/stdatomic.h b/newlib/libc/include/stdatomic.h
index f62ae7b6a..1acec53c0 100644
--- a/newlib/libc/include/stdatomic.h
+++ b/newlib/libc/include/stdatomic.h
@@ -163,6 +163,11 @@ atomic_signal_fence(memory_order __order __unused)
#endif
}
+#if defined(__cplusplus) && !defined(_Bool)
+#define _Bool bool
+#define __bool_locally_defined
+#endif
+
/*
* 7.17.5 Lock-free property.
*/
@@ -408,4 +413,9 @@ atomic_flag_clear(volatile atomic_flag *__object)
}
#endif /* !_KERNEL */
+#ifdef __bool_locally_defined
+#undef _Bool
+#undef __bool_locally_defined
+#endif
+
#endif /* !_STDATOMIC_H_ */
--
2.35.3
More information about the Newlib
mailing list