All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 0/4] Fix lttng-tools build issue
@ 2014-04-13 19:58 Thomas Petazzoni
  2014-04-13 19:58 ` [Buildroot] [PATCH 1/4] gcc: add fix for PR 58595 to gcc 4.8.2 Thomas Petazzoni
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Thomas Petazzoni @ 2014-04-13 19:58 UTC (permalink / raw)
  To: buildroot

Hello,

This set of patches fix the lttng-tools build issue with gcc 4.7.x and
gcc 4.8.x, by:

 * Adding appropriate patches to gcc 4.7 and gcc 4.8 in the internal
   toolchain backend.

 * Allowing external toolchains to indicate whether they are affected
   by the bug. For now, one toolchain known to be affected is marked
   as such, the other toolchains will have to be tested progressively.

 * Making the lttng-tools depend on toolchains not affected by the
   bug.

Thomas Petazzoni (4):
  gcc: add fix for PR 58595 to gcc 4.8.2
  gcc: add fix for PR 58595 to gcc 4.7.3
  toolchain: add option to declare toolchains affected by gcc PR 58595
  lttng-tools: mark as affected by gcc bug 58595

 .../4.7.3/843-gcc-4.7.3-Fix-PR-target-58595.patch  | 102 +++++++++++++++++++++
 .../4.8.2/843-gcc-4.8.2-Fix-PR-target-58595.patch  | 101 ++++++++++++++++++++
 package/lttng-tools/Config.in                      |   6 +-
 toolchain/toolchain-common.in                      |   3 +
 toolchain/toolchain-external/Config.in             |   1 +
 5 files changed, 211 insertions(+), 2 deletions(-)
 create mode 100644 package/gcc/4.7.3/843-gcc-4.7.3-Fix-PR-target-58595.patch
 create mode 100644 package/gcc/4.8.2/843-gcc-4.8.2-Fix-PR-target-58595.patch

-- 
1.8.3.2

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH 1/4] gcc: add fix for PR 58595 to gcc 4.8.2
  2014-04-13 19:58 [Buildroot] [PATCH 0/4] Fix lttng-tools build issue Thomas Petazzoni
@ 2014-04-13 19:58 ` Thomas Petazzoni
  2014-04-13 19:58 ` [Buildroot] [PATCH 2/4] gcc: add fix for PR 58595 to gcc 4.7.3 Thomas Petazzoni
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Thomas Petazzoni @ 2014-04-13 19:58 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 .../4.8.2/843-gcc-4.8.2-Fix-PR-target-58595.patch  | 101 +++++++++++++++++++++
 1 file changed, 101 insertions(+)
 create mode 100644 package/gcc/4.8.2/843-gcc-4.8.2-Fix-PR-target-58595.patch

diff --git a/package/gcc/4.8.2/843-gcc-4.8.2-Fix-PR-target-58595.patch b/package/gcc/4.8.2/843-gcc-4.8.2-Fix-PR-target-58595.patch
new file mode 100644
index 0000000..62a3994
--- /dev/null
+++ b/package/gcc/4.8.2/843-gcc-4.8.2-Fix-PR-target-58595.patch
@@ -0,0 +1,101 @@
+Backport fix for PR target/58595
+
+From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Thu, 6 Mar 2014 12:07:07 +0000
+Subject: [PATCH] 	PR target/58595 	* config/arm/arm.c
+ (arm_tls_symbol_p): Remove. 	(arm_legitimize_address): Call
+ legitimize_tls_address for any 	arm_tls_referenced_p expression,
+ handle constant addend.  Call it 	before testing for !TARGET_ARM. 
+ (thumb_legitimize_address): Don't handle arm_tls_symbol_p here.
+
+	* gcc.dg/tls/pr58595.c: New test.
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk at 208380 138bc75d-0d04-0410-961f-82ee72b054a4
+
+Index: gcc-4.8.2/gcc/config/arm/arm.c
+===================================================================
+--- gcc-4.8.2.orig/gcc/config/arm/arm.c
++++ gcc-4.8.2/gcc/config/arm/arm.c
+@@ -230,7 +230,6 @@ static tree arm_gimplify_va_arg_expr (tr
+ static void arm_option_override (void);
+ static unsigned HOST_WIDE_INT arm_shift_truncation_mask (enum machine_mode);
+ static bool arm_cannot_copy_insn_p (rtx);
+-static bool arm_tls_symbol_p (rtx x);
+ static int arm_issue_rate (void);
+ static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
+ static bool arm_output_addr_const_extra (FILE *, rtx);
+@@ -6573,6 +6572,32 @@ legitimize_tls_address (rtx x, rtx reg)
+ rtx
+ arm_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
+ {
++  if (arm_tls_referenced_p (x))
++    {
++      rtx addend = NULL;
++
++      if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS)
++	{
++	  addend = XEXP (XEXP (x, 0), 1);
++	  x = XEXP (XEXP (x, 0), 0);
++	}
++
++      if (GET_CODE (x) != SYMBOL_REF)
++	return x;
++
++      gcc_assert (SYMBOL_REF_TLS_MODEL (x) != 0);
++
++      x = legitimize_tls_address (x, NULL_RTX);
++
++      if (addend)
++	{
++	  x = gen_rtx_PLUS (SImode, x, addend);
++	  orig_x = x;
++	}
++      else
++	return x;
++    }
++
+   if (!TARGET_ARM)
+     {
+       /* TODO: legitimize_address for Thumb2.  */
+@@ -6581,9 +6606,6 @@ arm_legitimize_address (rtx x, rtx orig_
+       return thumb_legitimize_address (x, orig_x, mode);
+     }
+ 
+-  if (arm_tls_symbol_p (x))
+-    return legitimize_tls_address (x, NULL_RTX);
+-
+   if (GET_CODE (x) == PLUS)
+     {
+       rtx xop0 = XEXP (x, 0);
+@@ -6695,9 +6717,6 @@ arm_legitimize_address (rtx x, rtx orig_
+ rtx
+ thumb_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
+ {
+-  if (arm_tls_symbol_p (x))
+-    return legitimize_tls_address (x, NULL_RTX);
+-
+   if (GET_CODE (x) == PLUS
+       && CONST_INT_P (XEXP (x, 1))
+       && (INTVAL (XEXP (x, 1)) >= 32 * GET_MODE_SIZE (mode)
+@@ -6988,20 +7007,6 @@ thumb_legitimize_reload_address (rtx *x_
+ 
+ /* Test for various thread-local symbols.  */
+ 
+-/* Return TRUE if X is a thread-local symbol.  */
+-
+-static bool
+-arm_tls_symbol_p (rtx x)
+-{
+-  if (! TARGET_HAVE_TLS)
+-    return false;
+-
+-  if (GET_CODE (x) != SYMBOL_REF)
+-    return false;
+-
+-  return SYMBOL_REF_TLS_MODEL (x) != 0;
+-}
+-
+ /* Helper for arm_tls_referenced_p.  */
+ 
+ static int
-- 
1.8.3.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH 2/4] gcc: add fix for PR 58595 to gcc 4.7.3
  2014-04-13 19:58 [Buildroot] [PATCH 0/4] Fix lttng-tools build issue Thomas Petazzoni
  2014-04-13 19:58 ` [Buildroot] [PATCH 1/4] gcc: add fix for PR 58595 to gcc 4.8.2 Thomas Petazzoni
@ 2014-04-13 19:58 ` Thomas Petazzoni
  2014-04-13 19:58 ` [Buildroot] [PATCH 3/4] toolchain: add option to declare toolchains affected by gcc PR 58595 Thomas Petazzoni
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Thomas Petazzoni @ 2014-04-13 19:58 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 .../4.7.3/843-gcc-4.7.3-Fix-PR-target-58595.patch  | 102 +++++++++++++++++++++
 1 file changed, 102 insertions(+)
 create mode 100644 package/gcc/4.7.3/843-gcc-4.7.3-Fix-PR-target-58595.patch

diff --git a/package/gcc/4.7.3/843-gcc-4.7.3-Fix-PR-target-58595.patch b/package/gcc/4.7.3/843-gcc-4.7.3-Fix-PR-target-58595.patch
new file mode 100644
index 0000000..656952c
--- /dev/null
+++ b/package/gcc/4.7.3/843-gcc-4.7.3-Fix-PR-target-58595.patch
@@ -0,0 +1,102 @@
+commit 4fa1f8926227d4e79975b674dc4292b9bec4b137
+Author: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date:   Thu Mar 6 12:07:07 2014 +0000
+
+    	PR target/58595
+    	* config/arm/arm.c (arm_tls_symbol_p): Remove.
+    	(arm_legitimize_address): Call legitimize_tls_address for any
+    	arm_tls_referenced_p expression, handle constant addend.  Call it
+    	before testing for !TARGET_ARM.
+    	(thumb_legitimize_address): Don't handle arm_tls_symbol_p here.
+    
+    	* gcc.dg/tls/pr58595.c: New test.
+    
+    
+    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk at 208380 138bc75d-0d04-0410-961f-82ee72b054a4
+
+diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
+index ce24bfe..af5666b 100644
+--- a/gcc/config/arm/arm.c
++++ b/gcc/config/arm/arm.c
+@@ -235,7 +235,6 @@ static tree arm_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *);
+ static void arm_option_override (void);
+ static unsigned HOST_WIDE_INT arm_shift_truncation_mask (enum machine_mode);
+ static bool arm_cannot_copy_insn_p (rtx);
+-static bool arm_tls_symbol_p (rtx x);
+ static int arm_issue_rate (void);
+ static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
+ static bool arm_output_addr_const_extra (FILE *, rtx);
+@@ -7336,6 +7335,32 @@ legitimize_tls_address (rtx x, rtx reg)
+ rtx
+ arm_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
+ {
++  if (arm_tls_referenced_p (x))
++    {
++      rtx addend = NULL;
++
++      if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS)
++	{
++	  addend = XEXP (XEXP (x, 0), 1);
++	  x = XEXP (XEXP (x, 0), 0);
++	}
++
++      if (GET_CODE (x) != SYMBOL_REF)
++	return x;
++
++      gcc_assert (SYMBOL_REF_TLS_MODEL (x) != 0);
++
++      x = legitimize_tls_address (x, NULL_RTX);
++
++      if (addend)
++	{
++	  x = gen_rtx_PLUS (SImode, x, addend);
++	  orig_x = x;
++	}
++      else
++	return x;
++    }
++
+   if (!TARGET_ARM)
+     {
+       /* TODO: legitimize_address for Thumb2.  */
+@@ -7344,9 +7369,6 @@ arm_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
+       return thumb_legitimize_address (x, orig_x, mode);
+     }
+ 
+-  if (arm_tls_symbol_p (x))
+-    return legitimize_tls_address (x, NULL_RTX);
+-
+   if (GET_CODE (x) == PLUS)
+     {
+       rtx xop0 = XEXP (x, 0);
+@@ -7459,9 +7481,6 @@ arm_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
+ rtx
+ thumb_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
+ {
+-  if (arm_tls_symbol_p (x))
+-    return legitimize_tls_address (x, NULL_RTX);
+-
+   if (GET_CODE (x) == PLUS
+       && CONST_INT_P (XEXP (x, 1))
+       && (INTVAL (XEXP (x, 1)) >= 32 * GET_MODE_SIZE (mode)
+@@ -7756,20 +7775,6 @@ thumb_legitimize_reload_address (rtx *x_p,
+ 
+ /* Test for various thread-local symbols.  */
+ 
+-/* Return TRUE if X is a thread-local symbol.  */
+-
+-static bool
+-arm_tls_symbol_p (rtx x)
+-{
+-  if (! TARGET_HAVE_TLS)
+-    return false;
+-
+-  if (GET_CODE (x) != SYMBOL_REF)
+-    return false;
+-
+-  return SYMBOL_REF_TLS_MODEL (x) != 0;
+-}
+-
+ /* Helper for arm_tls_referenced_p.  */
+ 
+ static int
-- 
1.8.3.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH 3/4] toolchain: add option to declare toolchains affected by gcc PR 58595
  2014-04-13 19:58 [Buildroot] [PATCH 0/4] Fix lttng-tools build issue Thomas Petazzoni
  2014-04-13 19:58 ` [Buildroot] [PATCH 1/4] gcc: add fix for PR 58595 to gcc 4.8.2 Thomas Petazzoni
  2014-04-13 19:58 ` [Buildroot] [PATCH 2/4] gcc: add fix for PR 58595 to gcc 4.7.3 Thomas Petazzoni
@ 2014-04-13 19:58 ` Thomas Petazzoni
  2014-04-13 19:58 ` [Buildroot] [PATCH 4/4] lttng-tools: mark as affected by gcc bug 58595 Thomas Petazzoni
  2014-04-14 20:42 ` [Buildroot] [PATCH 0/4] Fix lttng-tools build issue Thomas Petazzoni
  4 siblings, 0 replies; 6+ messages in thread
From: Thomas Petazzoni @ 2014-04-13 19:58 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 toolchain/toolchain-common.in          | 3 +++
 toolchain/toolchain-external/Config.in | 1 +
 2 files changed, 4 insertions(+)

diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in
index b65b227..f98f19b 100644
--- a/toolchain/toolchain-common.in
+++ b/toolchain/toolchain-common.in
@@ -11,6 +11,9 @@ config BR2_LARGEFILE
 config BR2_INET_IPV6
 	bool
 
+config BR2_TOOLCHAIN_HAS_GCC_BUG_58595
+	bool
+
 config BR2_TOOLCHAIN_HAS_GCC_BUG_58854
 	bool
 
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index 9499629..7fb3175 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -89,6 +89,7 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201311
 	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
 	depends on BR2_ARM_EABI
 	depends on !BR2_PREFER_STATIC_LIB
+	select BR2_TOOLCHAIN_HAS_GCC_BUG_58595 # based-on gcc-4.8.1
 	select BR2_TOOLCHAIN_HAS_GCC_BUG_58854 # based-on gcc-4.8.1
 	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
 	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
-- 
1.8.3.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH 4/4] lttng-tools: mark as affected by gcc bug 58595
  2014-04-13 19:58 [Buildroot] [PATCH 0/4] Fix lttng-tools build issue Thomas Petazzoni
                   ` (2 preceding siblings ...)
  2014-04-13 19:58 ` [Buildroot] [PATCH 3/4] toolchain: add option to declare toolchains affected by gcc PR 58595 Thomas Petazzoni
@ 2014-04-13 19:58 ` Thomas Petazzoni
  2014-04-14 20:42 ` [Buildroot] [PATCH 0/4] Fix lttng-tools build issue Thomas Petazzoni
  4 siblings, 0 replies; 6+ messages in thread
From: Thomas Petazzoni @ 2014-04-13 19:58 UTC (permalink / raw)
  To: buildroot

Fixes:

  http://autobuild.buildroot.org/results/6a6/6a66a389035939af542e172dbe2027ffa671e28a/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/lttng-tools/Config.in | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/package/lttng-tools/Config.in b/package/lttng-tools/Config.in
index f0d45d9..cde9baf 100644
--- a/package/lttng-tools/Config.in
+++ b/package/lttng-tools/Config.in
@@ -6,6 +6,7 @@ config BR2_PACKAGE_LTTNG_TOOLS
 	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
 	# liburcu only works on some architectures and requires thread support
 	depends on BR2_arm || BR2_armeb || BR2_i386 || BR2_powerpc || BR2_x86_64
+	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_58595 # lttng-tools/gcc-4.{7,8}.x bug
 	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_58854 # liburcu/gcc-4.8.x bug
 	depends on BR2_LARGEFILE
 	depends on BR2_USE_WCHAR # util-linux
@@ -32,7 +33,8 @@ comment "lttng-tools needs a toolchain w/ largefile, threads, wchar"
 	depends on BR2_arm || BR2_armeb || BR2_i386 || BR2_powerpc || BR2_x86_64
 	depends on !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS || \
 		!BR2_USE_WCHAR
+	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_58595 # lttng-tools/gcc-4.{7,8}.x bug
 	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_58854 # liburcu/gcc-4.8.x bug
 
-comment "lttng-tools needs a toolchain not affected by GCC bug 58854"
-	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_58854
+comment "lttng-tools needs a toolchain not affected by GCC bug 58854 and 58595"
+	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_58854 || BR2_TOOLCHAIN_HAS_GCC_BUG_58595
-- 
1.8.3.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH 0/4] Fix lttng-tools build issue
  2014-04-13 19:58 [Buildroot] [PATCH 0/4] Fix lttng-tools build issue Thomas Petazzoni
                   ` (3 preceding siblings ...)
  2014-04-13 19:58 ` [Buildroot] [PATCH 4/4] lttng-tools: mark as affected by gcc bug 58595 Thomas Petazzoni
@ 2014-04-14 20:42 ` Thomas Petazzoni
  4 siblings, 0 replies; 6+ messages in thread
From: Thomas Petazzoni @ 2014-04-14 20:42 UTC (permalink / raw)
  To: buildroot

Dear Thomas Petazzoni,

On Sun, 13 Apr 2014 21:58:54 +0200, Thomas Petazzoni wrote:
> Hello,
> 
> This set of patches fix the lttng-tools build issue with gcc 4.7.x and
> gcc 4.8.x, by:
> 
>  * Adding appropriate patches to gcc 4.7 and gcc 4.8 in the internal
>    toolchain backend.
> 
>  * Allowing external toolchains to indicate whether they are affected
>    by the bug. For now, one toolchain known to be affected is marked
>    as such, the other toolchains will have to be tested progressively.
> 
>  * Making the lttng-tools depend on toolchains not affected by the
>    bug.
> 
> Thomas Petazzoni (4):
>   gcc: add fix for PR 58595 to gcc 4.8.2
>   gcc: add fix for PR 58595 to gcc 4.7.3
>   toolchain: add option to declare toolchains affected by gcc PR 58595
>   lttng-tools: mark as affected by gcc bug 58595

Applied.

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-04-14 20:42 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-13 19:58 [Buildroot] [PATCH 0/4] Fix lttng-tools build issue Thomas Petazzoni
2014-04-13 19:58 ` [Buildroot] [PATCH 1/4] gcc: add fix for PR 58595 to gcc 4.8.2 Thomas Petazzoni
2014-04-13 19:58 ` [Buildroot] [PATCH 2/4] gcc: add fix for PR 58595 to gcc 4.7.3 Thomas Petazzoni
2014-04-13 19:58 ` [Buildroot] [PATCH 3/4] toolchain: add option to declare toolchains affected by gcc PR 58595 Thomas Petazzoni
2014-04-13 19:58 ` [Buildroot] [PATCH 4/4] lttng-tools: mark as affected by gcc bug 58595 Thomas Petazzoni
2014-04-14 20:42 ` [Buildroot] [PATCH 0/4] Fix lttng-tools build issue Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.