On 18.01.24 15:59, Ilya Maximets wrote:
> GCC 14 started to advertise c_atomic extension, older versions didn't
> do that. Add check for __clang__, so GCC doesn't include headers
> designed for Clang.
>
> Another option would be to prefer stdatomic implementation instead,
> but some older versions of Clang are not able to use stdatomic.h
> supplied by GCC as described in commit:
> 07ece367fb5f ("ovs-atomic: Prefer Clang intrinsics over <stdatomic.h>.")
>
> This change fixes OVS build with GCC on Fedora Rawhide (40).
>
> Reported-by: Jakob Meng <[email protected]>
> Signed-off-by: Ilya Maximets <[email protected]>
> ---
> lib/ovs-atomic.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/ovs-atomic.h b/lib/ovs-atomic.h
> index ab9ce6b2e..f140d25fe 100644
> --- a/lib/ovs-atomic.h
> +++ b/lib/ovs-atomic.h
> @@ -328,7 +328,7 @@
> #if __CHECKER__
> /* sparse doesn't understand some GCC extensions we use. */
> #include "ovs-atomic-pthreads.h"
> - #elif __has_extension(c_atomic)
> + #elif __clang__ && __has_extension(c_atomic)
> #include "ovs-atomic-clang.h"
> #elif HAVE_ATOMIC && __cplusplus >= 201103L
> #include "ovs-atomic-c++.h"
Tested with latest gcc 14 [0] from Fedora Rawhide and it fixed all my OVS
compilation issues. Thank you!
[0] gcc (GCC) 14.0.1 20240113 (Red Hat 14.0.1-0)
Acked-by: Jakob Meng <[email protected]>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev