aboutsummaryrefslogtreecommitdiff
path: root/newlib
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2022-03-28 00:16:15 +0300
committerSebastian Huber <sebastian.huber@embedded-brains.de>2024-07-09 08:20:50 +0200
commit9f86886873df95e05d9246256f6db9c62f8d8dae (patch)
tree8fab5749f406ddad1ea17e8fab51a2be9f0c69b6 /newlib
parent27ddfd9f8edb4a96fc456611da6a49a290282fb6 (diff)
downloadnewlib-9f86886873df95e05d9246256f6db9c62f8d8dae.zip
newlib-9f86886873df95e05d9246256f6db9c62f8d8dae.tar.gz
newlib-9f86886873df95e05d9246256f6db9c62f8d8dae.tar.bz2
sys/stdatomic.h: be nicer to c++
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
Diffstat (limited to 'newlib')
-rw-r--r--newlib/libc/include/stdatomic.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/newlib/libc/include/stdatomic.h b/newlib/libc/include/stdatomic.h
index f62ae7b..1acec53 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_ */