diff mbox series

[urcu,2/4] Blacklist GCC 4.4.0, 4.4.1 and 4.4.2 on ARM

Message ID 20201215162850.78638-2-mjeanson@efficios.com
State New
Headers show
Series [urcu,1/4] Cleanup: Move ARM specific code to urcu/arch/arm.h | expand

Commit Message

Michael Jeanson Dec. 15, 2020, 4:28 p.m. UTC
GCC added __sync_synchronize() in 4.4.0 but it was broken on ARM until
4.4.3, see the GCC bug report for more details :

  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42263

Signed-off-by: Michael Jeanson <mjeanson at efficios.com>
Change-Id: I629e3c8b4baaccb34b2311e220f30d0ad8b69a19
---
 include/urcu/arch/arm.h | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Mathieu Desnoyers Dec. 17, 2020, 1:29 p.m. UTC | #1
Merged in liburcu master, thanks!

Mathieu

----- On Dec 15, 2020, at 11:28 AM, Michael Jeanson mjeanson at efficios.com wrote:

> GCC added __sync_synchronize() in 4.4.0 but it was broken on ARM until
> 4.4.3, see the GCC bug report for more details :
> 
>  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42263
> 
> Signed-off-by: Michael Jeanson <mjeanson at efficios.com>
> Change-Id: I629e3c8b4baaccb34b2311e220f30d0ad8b69a19
> ---
> include/urcu/arch/arm.h | 9 +++++++++
> 1 file changed, 9 insertions(+)
> 
> diff --git a/include/urcu/arch/arm.h b/include/urcu/arch/arm.h
> index 5d1c608..e904b06 100644
> --- a/include/urcu/arch/arm.h
> +++ b/include/urcu/arch/arm.h
> @@ -70,6 +70,15 @@ extern "C" {
> # endif
> #endif
> 
> +/*
> + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42263
> + */
> +#ifdef URCU_GCC_VERSION
> +# if URCU_GCC_VERSION >= 40400 && URCU_GCC_VERSION <= 40402
> +#  error Your gcc version has a non-functional __sync_synchronize()
> +# endif
> +#endif
> +
> #ifdef __cplusplus
> }
> #endif
> --
> 2.29.2
diff mbox series

Patch

diff --git a/include/urcu/arch/arm.h b/include/urcu/arch/arm.h
index 5d1c608..e904b06 100644
--- a/include/urcu/arch/arm.h
+++ b/include/urcu/arch/arm.h
@@ -70,6 +70,15 @@  extern "C" {
 # endif
 #endif
 
+/*
+ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42263
+ */
+#ifdef URCU_GCC_VERSION
+# if URCU_GCC_VERSION >= 40400 && URCU_GCC_VERSION <= 40402
+#  error Your gcc version has a non-functional __sync_synchronize()
+# endif
+#endif
+
 #ifdef __cplusplus
 }
 #endif