aboutsummaryrefslogtreecommitdiff
path: root/package/liburcu
diff options
context:
space:
mode:
authorGravatar Samuel Martin <s.martin49@gmail.com>2014-03-08 15:38:31 +0100
committerGravatar Peter Korsgaard <peter@korsgaard.com>2014-03-23 23:17:56 +0100
commita1a86ebfbad1bcce471376ae74e42304553e725e (patch)
tree7578653d579c858377413444a617f73bd7c4a6b5 /package/liburcu
parent7e634a4836c5a2754cf94924baee7082efa9dd49 (diff)
downloadbuildroot-a1a86ebfbad1bcce471376ae74e42304553e725e.tar.gz
buildroot-a1a86ebfbad1bcce471376ae74e42304553e725e.tar.bz2
liburcu: disable build with gcc-4.8.x on ARM
Because of a gcc bug [1], liburcu checks for compiler version [2] and stops the build prematurely if gcc-4.8.[0-2] is detected for ARM. However a bug fix exists [3] and may be backported by ARM toolchain providers; that's what is done in Buildroot [4] or Linaro [5]. So, this change: - add a patch in liburcu to allow build with ARM gcc-4.8.2; - adds a new hidden symbol to reflect the toolchain status with regard to this bug [1]; - and controls liburcu visibility. However, a limitation of this is when the user is using a custom toolchain; that's why the bug details have been added in the liburcu help message. [1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854 [2] http://git.lttng.org/?p=userspace-rcu.git;a=commitdiff;h=4b79310 [3] http://gcc.gnu.org/viewcvs/gcc?view=revision&revision=204665 [4] http://git.buildroot.net/buildroot/commit/?id=c443c2be1768ebbdcb76c55d0a08fd7c983488c8 [5] http://bazaar.launchpad.net/~linaro-toolchain-dev/gcc-linaro/4.8/revision/122147 [Peter: hide normal toolchain comment if bug, add comment explaining issue if bug] Signed-off-by: Samuel Martin <s.martin49@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Diffstat (limited to 'package/liburcu')
-rw-r--r--package/liburcu/Config.in11
-rw-r--r--package/liburcu/liburcu-0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch40
2 files changed, 51 insertions, 0 deletions
diff --git a/package/liburcu/Config.in b/package/liburcu/Config.in
index 15ad5bd726..e7cbe93742 100644
--- a/package/liburcu/Config.in
+++ b/package/liburcu/Config.in
@@ -1,6 +1,7 @@
config BR2_PACKAGE_LIBURCU
bool "liburcu"
depends on BR2_arm || BR2_armeb || BR2_i386 || BR2_powerpc || BR2_x86_64
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_58854 # liburcu/gcc-4.8.x bug
depends on BR2_TOOLCHAIN_HAS_THREADS
help
Userspace implementation of the Read-Copy-Update (RCU)
@@ -8,8 +9,18 @@ config BR2_PACKAGE_LIBURCU
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_arm || BR2_armeb || BR2_i386 || BR2_powerpc || BR2_x86_64
+ depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_58854 # liburcu/gcc-4.8.x bug
depends on !BR2_TOOLCHAIN_HAS_THREADS
+
+comment "liburcu needs a toolchain not affected by GCC bug 58854"
+ depends on BR2_TOOLCHAIN_HAS_GCC_BUG_58854
diff --git a/package/liburcu/liburcu-0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch b/package/liburcu/liburcu-0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch
new file mode 100644
index 0000000000..585abc0322
--- /dev/null
+++ b/package/liburcu/liburcu-0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch
@@ -0,0 +1,40 @@
+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>
+---
+ urcu/compiler.h | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/urcu/compiler.h b/urcu/compiler.h
+index 1e30903..56115f1 100644
+--- a/urcu/compiler.h
++++ b/urcu/compiler.h
+@@ -118,10 +118,17 @@
+ + __GNUC_PATCHLEVEL__)
+
+ /*
++ * 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 __ARMEL__
+-# 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
+