diff options
Diffstat (limited to 'dev-libs/userspace-rcu/files/userspace-rcu-0.14.0-noreturn.patch')
-rw-r--r-- | dev-libs/userspace-rcu/files/userspace-rcu-0.14.0-noreturn.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/dev-libs/userspace-rcu/files/userspace-rcu-0.14.0-noreturn.patch b/dev-libs/userspace-rcu/files/userspace-rcu-0.14.0-noreturn.patch new file mode 100644 index 000000000000..c8798092f158 --- /dev/null +++ b/dev-libs/userspace-rcu/files/userspace-rcu-0.14.0-noreturn.patch @@ -0,0 +1,51 @@ +https://github.com/urcu/userspace-rcu/commit/106ed13754b1b836f4b59405f4e02aea4bf5eef0 + +From 106ed13754b1b836f4b59405f4e02aea4bf5eef0 Mon Sep 17 00:00:00 2001 +From: Michael Jeanson <mjeanson@efficios.com> +Date: Thu, 23 Mar 2023 14:23:55 -0400 +Subject: [PATCH] fix: warning 'noreturn' function does return on ppc + +On a ppc64 system with gcc 9.5.0 I get the following error when building +with -O0 : + +/usr/include/urcu/uatomic/generic.h: In function 'void _uatomic_link_error()': +/usr/include/urcu/uatomic/generic.h:53:1: warning: 'noreturn' function does return + 53 | } + | ^ + +Split the inline function in 2 variants and apply the noreturn attribute +only on the builtin_trap one. + +Change-Id: I5ae8e764c4cc27af0463924a653b9eaa9f698c34 +Signed-off-by: Michael Jeanson <mjeanson@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- a/include/urcu/uatomic/generic.h ++++ b/include/urcu/uatomic/generic.h +@@ -38,19 +38,23 @@ extern "C" { + #endif + + #if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR +-static inline __attribute__((always_inline, __noreturn__)) ++#ifdef ILLEGAL_INSTR ++static inline __attribute__((always_inline)) + void _uatomic_link_error(void) + { +-#ifdef ILLEGAL_INSTR + /* + * generate an illegal instruction. Cannot catch this with + * linker tricks when optimizations are disabled. + */ + __asm__ __volatile__(ILLEGAL_INSTR); ++} + #else ++static inline __attribute__((always_inline, __noreturn__)) ++void _uatomic_link_error(void) ++{ + __builtin_trap(); +-#endif + } ++#endif + + #else /* #if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR */ + extern void _uatomic_link_error(void); + |