initial buildroot for linux 5.15
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
From 54d8fe7ae40902d6d38e670f4024092f53c14e1f Mon Sep 17 00:00:00 2001
|
||||
From: Samuel Martin <s.martin49@gmail.com>
|
||||
Date: Sat, 8 Mar 2014 13:19:14 +0100
|
||||
Subject: [PATCH] Only blacklist ARM gcc 4.8.0 and 4.8.1
|
||||
|
||||
Since many ARM toolchain providers include the bug fix for PR58854 in
|
||||
their latest releases based on gcc-4.8.2, then only blacklist gcc 4.8.0
|
||||
and 4.8.1.
|
||||
|
||||
Signed-off-by: Samuel Martin <s.martin49@gmail.com>
|
||||
[Fabrice: update for 0.13.0]
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
---
|
||||
urcu/compiler.h | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/urcu/arch/arm.h b/include/urcu/arch/arm.h
|
||||
index 1e30903..56115f1 100644
|
||||
--- a/include/urcu/arch/arm.h
|
||||
+++ b/include/urcu/arch/arm.h
|
||||
@@ -118,10 +118,17 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
+ * Official gcc releases from 4.8.0 to 4.8.2 have the following bug,
|
||||
+ * however, many arm toolchain providers have the included the fix for
|
||||
+ * their latest 4.8.2 releases.
|
||||
+ * So, we only blacklist gcc 4.8.0 and 4.8.1.
|
||||
+ * Unfortunately, this bug is not easy to test, so we rely on the
|
||||
+ * knowledge of the user on its compiler.
|
||||
+ *
|
||||
* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854
|
||||
*/
|
||||
#ifdef URCU_GCC_VERSION
|
||||
-# if URCU_GCC_VERSION >= 40800 && URCU_GCC_VERSION <= 40802
|
||||
+# if URCU_GCC_VERSION >= 40800 && URCU_GCC_VERSION <= 40801
|
||||
# error Your gcc version produces clobbered frame accesses
|
||||
# endif
|
||||
#endif
|
||||
--
|
||||
1.9.0
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
From e915ab84fd0c02d37504f3eb1e1f3be93ea6dc37 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Thu, 9 Sep 2021 12:11:16 -0400
|
||||
Subject: [PATCH] fix: don't use C++ thread_local on MacOs
|
||||
|
||||
Recent versions of Apple's clang++ do support 'thread_local' but the
|
||||
implementation generates additional helper symbols. This is a problem
|
||||
when accessing an extern TLS variable in a C++ compile unit that is
|
||||
provided by a C library that doesn't have those extra symbols.
|
||||
|
||||
Fallback to using '__thread' on MacOs.
|
||||
|
||||
Change-Id: I87cb5b3c9293f7bf66f7115f453b546dd793a449
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
|
||||
[Retrieved from:
|
||||
https://github.com/urcu/userspace-rcu/commit/e915ab84fd0c02d37504f3eb1e1f3be93ea6dc37]
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
---
|
||||
include/urcu/tls-compat.h | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/urcu/tls-compat.h b/include/urcu/tls-compat.h
|
||||
index 24ef1b9a..25cf375a 100644
|
||||
--- a/include/urcu/tls-compat.h
|
||||
+++ b/include/urcu/tls-compat.h
|
||||
@@ -34,7 +34,12 @@ extern "C" {
|
||||
|
||||
#ifdef CONFIG_RCU_TLS
|
||||
|
||||
-#if defined (__cplusplus) && (__cplusplus >= 201103L)
|
||||
+/*
|
||||
+ * Don't use C++ 'thread_local' on MacOs, the implementation is incompatible
|
||||
+ * with C and will result in a link error when accessing an extern variable
|
||||
+ * provided by the C library from C++ code.
|
||||
+ */
|
||||
+#if defined (__cplusplus) && (__cplusplus >= 201103L) && !defined(__APPLE__)
|
||||
# define URCU_TLS_STORAGE_CLASS thread_local
|
||||
#elif defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
|
||||
# define URCU_TLS_STORAGE_CLASS _Thread_local
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
From 2e359284497c361e3208501fc70d49b2c54dc4ef Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Tue, 14 Sep 2021 10:41:08 -0400
|
||||
Subject: [PATCH] Always use '__thread' for Thread local storage except on MSVC
|
||||
|
||||
Use the GCC extension '__thread' [1] for Thread local storage on all C
|
||||
and C++ compilers except MSVC.
|
||||
|
||||
While C11 and C++11 respectively offer '_Thread_local' and
|
||||
'thread_local' as potentialy faster implementations, they offer no
|
||||
guarantees of compatibility when used in a library interface which might
|
||||
be used by both C and C++ client code.
|
||||
|
||||
[1] https://gcc.gnu.org/onlinedocs/gcc/Thread-Local.html
|
||||
|
||||
Change-Id: If4fe8bcdbda24b21dedf382112bd5c5f836c00c8
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
|
||||
[Retrieved from:
|
||||
https://github.com/urcu/userspace-rcu/commit/2e359284497c361e3208501fc70d49b2c54dc4ef]
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
---
|
||||
include/urcu/tls-compat.h | 15 +++++++--------
|
||||
1 file changed, 7 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/include/urcu/tls-compat.h b/include/urcu/tls-compat.h
|
||||
index 25cf375a..a2c94ded 100644
|
||||
--- a/include/urcu/tls-compat.h
|
||||
+++ b/include/urcu/tls-compat.h
|
||||
@@ -35,15 +35,14 @@ extern "C" {
|
||||
#ifdef CONFIG_RCU_TLS
|
||||
|
||||
/*
|
||||
- * Don't use C++ 'thread_local' on MacOs, the implementation is incompatible
|
||||
- * with C and will result in a link error when accessing an extern variable
|
||||
- * provided by the C library from C++ code.
|
||||
+ * Default to '__thread' on all C and C++ compilers except MSVC. While C11 has
|
||||
+ * '_Thread_local' and C++11 has 'thread_local', only '__thread' seems to have
|
||||
+ * a compatible implementation when linking public extern symbols across
|
||||
+ * language boundaries.
|
||||
+ *
|
||||
+ * For more details, see 'https://gcc.gnu.org/onlinedocs/gcc/Thread-Local.html'.
|
||||
*/
|
||||
-#if defined (__cplusplus) && (__cplusplus >= 201103L) && !defined(__APPLE__)
|
||||
-# define URCU_TLS_STORAGE_CLASS thread_local
|
||||
-#elif defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
|
||||
-# define URCU_TLS_STORAGE_CLASS _Thread_local
|
||||
-#elif defined (_MSC_VER)
|
||||
+#if defined(_MSC_VER)
|
||||
# define URCU_TLS_STORAGE_CLASS __declspec(thread)
|
||||
#else
|
||||
# define URCU_TLS_STORAGE_CLASS __thread
|
||||
@@ -0,0 +1,30 @@
|
||||
config BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS
|
||||
bool
|
||||
default y
|
||||
depends on BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be || \
|
||||
BR2_i386 || BR2_mips || BR2_mips64 || BR2_mipsel || \
|
||||
BR2_mips64el || BR2_nios2 || BR2_powerpc || BR2_powerpc64 || \
|
||||
BR2_powerpc64le || BR2_riscv || BR2_sparc64 || BR2_s390x || BR2_x86_64
|
||||
depends on BR2_USE_MMU # fork() in test
|
||||
|
||||
config BR2_PACKAGE_LIBURCU
|
||||
bool "liburcu"
|
||||
depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||
help
|
||||
Userspace implementation of the Read-Copy-Update (RCU)
|
||||
synchronization mechanism. This library is mainly used by
|
||||
the LTTng tracing infrastructure, but can be used for other
|
||||
purposes as well.
|
||||
|
||||
On ARM, because of bug:
|
||||
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854
|
||||
liburcu cannot be built using gcc 4.8.0, 4.8.1 or 4.8.2
|
||||
without the following bug fix:
|
||||
http://gcc.gnu.org/viewcvs/gcc?view=revision&revision=204665
|
||||
|
||||
http://lttng.org/urcu
|
||||
|
||||
comment "liburcu needs a toolchain w/ threads"
|
||||
depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS
|
||||
depends on !BR2_TOOLCHAIN_HAS_THREADS
|
||||
@@ -0,0 +1,8 @@
|
||||
# http://www.lttng.org/files/urcu/userspace-rcu-0.13.0.tar.bz2.sha256
|
||||
sha256 cbb20dbe1a892c2a4d8898bac4316176e585392693d498766ccbbc68cf20ba20 userspace-rcu-0.13.0.tar.bz2
|
||||
|
||||
# Hash for license files
|
||||
sha256 36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89 lgpl-2.1.txt
|
||||
sha256 8ef8121eddd2fc0779d94331a1d0f1ead9c796343d845e564cd8c8c4ae3d6f6e lgpl-relicensing.txt
|
||||
sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 gpl-2.0.txt
|
||||
sha256 e8c070cb093be4b2eaf938a5f1c11621163b2d9cfa2790460cf925d81e442fa7 LICENSE
|
||||
@@ -0,0 +1,19 @@
|
||||
################################################################################
|
||||
#
|
||||
# liburcu
|
||||
#
|
||||
################################################################################
|
||||
|
||||
LIBURCU_VERSION = 0.13.0
|
||||
LIBURCU_SITE = http://lttng.org/files/urcu
|
||||
LIBURCU_SOURCE = userspace-rcu-$(LIBURCU_VERSION).tar.bz2
|
||||
LIBURCU_LICENSE = LGPL-2.1+ (library), MIT-like (few source files listed in LICENSE), GPL-2.0+ (test), GPL-3.0 (few *.m4 files)
|
||||
LIBURCU_LICENSE_FILES = lgpl-2.1.txt lgpl-relicensing.txt gpl-2.0.txt LICENSE
|
||||
|
||||
LIBURCU_INSTALL_STAGING = YES
|
||||
|
||||
# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test
|
||||
# provided by autoconf relies on wchar_t.
|
||||
LIBURCU_CONF_ENV = ac_cv_prog_cc_c99=-std=gnu99
|
||||
|
||||
$(eval $(autotools-package))
|
||||
Reference in New Issue
Block a user