All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/3] package/uclibc: Bump to 1.0.48.
@ 2024-05-01  9:23 Dmitry Chestnykh
  2024-05-01  9:23 ` [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore Dmitry Chestnykh
  2024-05-01  9:23 ` [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch Dmitry Chestnykh
  0 siblings, 2 replies; 7+ messages in thread
From: Dmitry Chestnykh @ 2024-05-01  9:23 UTC (permalink / raw
  To: buildroot; +Cc: Dmitry Chestnykh

In 1.0.48 release uClibc-ng has provided the fix
for SPARC related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784

Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
---
 package/uclibc/uclibc.hash | 4 ++--
 package/uclibc/uclibc.mk   | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/package/uclibc/uclibc.hash b/package/uclibc/uclibc.hash
index a10ceab54c..571bb7333c 100644
--- a/package/uclibc/uclibc.hash
+++ b/package/uclibc/uclibc.hash
@@ -1,4 +1,4 @@
-# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.47.tar.xz.sha256
-sha256  29a4d684a06da344ee3ee09acc2ca7649d592ae3ff848f698145c46def05efcb  uClibc-ng-1.0.47.tar.xz
+# From https://downloads.uclibc-ng.org/releases/1.0.47/uClibc-ng-1.0.48.tar.xz.sha256
+sha256  3bf5fc6cc5cbc454b6c478424755c6f71e7c15578a2c966f02606aa5c5596e21  uClibc-ng-1.0.48.tar.xz
 # Locally calculated
 sha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING.LIB
diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk
index a7b18133ff..9593e18d45 100644
--- a/package/uclibc/uclibc.mk
+++ b/package/uclibc/uclibc.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-UCLIBC_VERSION = 1.0.47
+UCLIBC_VERSION = 1.0.48
 UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz
 UCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION)
 UCLIBC_LICENSE = LGPL-2.1+
-- 
2.44.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore.
  2024-05-01  9:23 [Buildroot] [PATCH 1/3] package/uclibc: Bump to 1.0.48 Dmitry Chestnykh
@ 2024-05-01  9:23 ` Dmitry Chestnykh
  2024-05-01 12:11   ` Waldemar Brodkorb
  2024-05-01 18:11   ` Yann E. MORIN
  2024-05-01  9:23 ` [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch Dmitry Chestnykh
  1 sibling, 2 replies; 7+ messages in thread
From: Dmitry Chestnykh @ 2024-05-01  9:23 UTC (permalink / raw
  To: buildroot; +Cc: Dmitry Chestnykh

With uClibc-ng-1.0.48 we can restore this config
because now sparc systems work without reverting GCC commits.

Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
---
 arch/Config.in                    |  5 -----
 configs/qemu_sparc_ss10_defconfig | 28 ++++++++++++++++++++++++++++
 2 files changed, 28 insertions(+), 5 deletions(-)
 create mode 100644 configs/qemu_sparc_ss10_defconfig

diff --git a/arch/Config.in b/arch/Config.in
index 9912f9fce6..e7349e83ae 100644
--- a/arch/Config.in
+++ b/arch/Config.in
@@ -216,11 +216,6 @@ config BR2_sh
 config BR2_sparc
 	bool "SPARC"
 	select BR2_USE_MMU
-	# uClibc-ng broken on sparc due to recent gcc changes
-	# that need to be reverted since gcc 8.4, 9.3 and 10.1.
-	# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784
-	# gcc <= 10.x has been removed from Buildroot.
-	select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT
 	help
 	  SPARC (from Scalable Processor Architecture) is a RISC
 	  instruction set architecture (ISA) developed by Sun
diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig
new file mode 100644
index 0000000000..a8e3df9180
--- /dev/null
+++ b/configs/qemu_sparc_ss10_defconfig
@@ -0,0 +1,28 @@
+# Architecture
+BR2_sparc=y
+BR2_sparc_v8=y
+
+# System
+BR2_SYSTEM_DHCP="eth0"
+
+# Filesystem
+BR2_TARGET_ROOTFS_EXT2=y
+# BR2_TARGET_ROOTFS_TAR is not set
+
+# Image
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh"
+BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)"
+
+# Linux headers same as kernel
+BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y
+
+# Linux kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config"
+
+# host-qemu for gitlab testing
+BR2_PACKAGE_HOST_QEMU=y
+BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y
-- 
2.44.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch.
  2024-05-01  9:23 [Buildroot] [PATCH 1/3] package/uclibc: Bump to 1.0.48 Dmitry Chestnykh
  2024-05-01  9:23 ` [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore Dmitry Chestnykh
@ 2024-05-01  9:23 ` Dmitry Chestnykh
  2024-05-01 12:12   ` Waldemar Brodkorb
  2024-05-01 18:10   ` Yann E. MORIN
  1 sibling, 2 replies; 7+ messages in thread
From: Dmitry Chestnykh @ 2024-05-01  9:23 UTC (permalink / raw
  To: buildroot; +Cc: Dmitry Chestnykh

sparc systems work with uClibc-ng-1.0.48.

Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
---
 ...get-92095-internal-error-with-O1-mcp.patch | 322 ------------------
 1 file changed, 322 deletions(-)
 delete mode 100644 package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch

diff --git a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch b/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch
deleted file mode 100644
index ec2bf8835d..0000000000
--- a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch
+++ /dev/null
@@ -1,322 +0,0 @@
-From bb9b71752267444b4360442b89129bfc0ae938d3 Mon Sep 17 00:00:00 2001
-From: Romain Naour <romain.naour@gmail.com>
-Date: Wed, 20 Jan 2021 23:06:07 +0100
-Subject: [PATCH] Revert "re PR target/92095 (internal error with -O1
- -mcpu=niagara2 -fPIE)"
-
-This reverts commit 3fcce773f0f914c0499b130c6e9efa0e45ee54a0.
-
-Building the Buildroot defconfig qemu_sparc_ss10_defconfig using
-gcc 8.4, 9.3 and 10 produce a broken rootfs that trigger illegal
-instruction messages.
-
-gcc 8.3, 9.2 are the latest working gcc version.
-git bisect between gcc 8.4 and 8.4 allowed to identify
-the commit that introcuce the regression.
-
-Reverting this patch allowed to produce a working rootfs.
-
-Signed-off-by: Romain Naour <romain.naour@gmail.com>
-Cc: Eric Botcazou <ebotcazou@gcc.gnu.org>
----
- gcc/config/sparc/sparc-protos.h               |   1 -
- gcc/config/sparc/sparc.c                      | 121 +++++++-----------
- gcc/config/sparc/sparc.md                     |   5 +-
- .../gcc.c-torture/compile/20191108-1.c        |  14 --
- gcc/testsuite/gcc.target/sparc/overflow-3.c   |   2 +-
- gcc/testsuite/gcc.target/sparc/overflow-4.c   |   2 +-
- gcc/testsuite/gcc.target/sparc/overflow-5.c   |   2 +-
- 7 files changed, 53 insertions(+), 94 deletions(-)
- delete mode 100644 gcc/testsuite/gcc.c-torture/compile/20191108-1.c
-
-diff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h
-index b3f73c2f2bf..71a067e871c 100644
---- a/gcc/config/sparc/sparc-protos.h
-+++ b/gcc/config/sparc/sparc-protos.h
-@@ -69,7 +69,6 @@ extern void sparc_split_reg_mem (rtx, rtx, machine_mode);
- extern void sparc_split_mem_reg (rtx, rtx, machine_mode);
- extern int sparc_split_reg_reg_legitimate (rtx, rtx);
- extern void sparc_split_reg_reg (rtx, rtx, machine_mode);
--extern const char *output_load_pcrel_sym (rtx *);
- extern const char *output_ubranch (rtx, rtx_insn *);
- extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *);
- extern const char *output_return (rtx_insn *);
-diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
-index 73032d33596..db1b428db90 100644
---- a/gcc/config/sparc/sparc.c
-+++ b/gcc/config/sparc/sparc.c
-@@ -4200,6 +4200,13 @@ eligible_for_sibcall_delay (rtx_insn *trial)
- static bool
- sparc_cannot_force_const_mem (machine_mode mode, rtx x)
- {
-+  /* After IRA has run in PIC mode, it is too late to put anything into the
-+     constant pool if the PIC register hasn't already been initialized.  */
-+  if ((lra_in_progress || reload_in_progress)
-+      && flag_pic
-+      && !crtl->uses_pic_offset_table)
-+    return true;
-+
-   switch (GET_CODE (x))
-     {
-     case CONST_INT:
-@@ -4235,11 +4242,9 @@ sparc_cannot_force_const_mem (machine_mode mode, rtx x)
- }
- \f
- /* Global Offset Table support.  */
--static GTY(()) rtx got_symbol_rtx = NULL_RTX;
--static GTY(()) rtx got_register_rtx = NULL_RTX;
- static GTY(()) rtx got_helper_rtx = NULL_RTX;
--
--static GTY(()) bool got_helper_needed = false;
-+static GTY(()) rtx got_register_rtx = NULL_RTX;
-+static GTY(()) rtx got_symbol_rtx = NULL_RTX;
- 
- /* Return the SYMBOL_REF for the Global Offset Table.  */
- 
-@@ -4252,6 +4257,27 @@ sparc_got (void)
-   return got_symbol_rtx;
- }
- 
-+#ifdef HAVE_GAS_HIDDEN
-+# define USE_HIDDEN_LINKONCE 1
-+#else
-+# define USE_HIDDEN_LINKONCE 0
-+#endif
-+
-+static void
-+get_pc_thunk_name (char name[32], unsigned int regno)
-+{
-+  const char *reg_name = reg_names[regno];
-+
-+  /* Skip the leading '%' as that cannot be used in a
-+     symbol name.  */
-+  reg_name += 1;
-+
-+  if (USE_HIDDEN_LINKONCE)
-+    sprintf (name, "__sparc_get_pc_thunk.%s", reg_name);
-+  else
-+    ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno);
-+}
-+
- /* Wrapper around the load_pcrel_sym{si,di} patterns.  */
- 
- static rtx
-@@ -4271,78 +4297,30 @@ gen_load_pcrel_sym (rtx op0, rtx op1, rtx op2)
-   return insn;
- }
- 
--/* Output the load_pcrel_sym{si,di} patterns.  */
--
--const char *
--output_load_pcrel_sym (rtx *operands)
--{
--  if (flag_delayed_branch)
--    {
--      output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands);
--      output_asm_insn ("call\t%a2", operands);
--      output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands);
--    }
--  else
--    {
--      output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands);
--      output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands);
--      output_asm_insn ("call\t%a2", operands);
--      output_asm_insn (" nop", NULL);
--    }
--
--  if (operands[2] == got_helper_rtx)
--    got_helper_needed = true;
--
--  return "";
--}
--
--#ifdef HAVE_GAS_HIDDEN
--# define USE_HIDDEN_LINKONCE 1
--#else
--# define USE_HIDDEN_LINKONCE 0
--#endif
--
- /* Emit code to load the GOT register.  */
- 
- void
- load_got_register (void)
- {
--  rtx insn;
-+  if (!got_register_rtx)
-+    got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
- 
-   if (TARGET_VXWORKS_RTP)
--    {
--      if (!got_register_rtx)
--	got_register_rtx = pic_offset_table_rtx;
--
--      insn = gen_vxworks_load_got ();
--    }
-+    emit_insn (gen_vxworks_load_got ());
-   else
-     {
--      if (!got_register_rtx)
--	got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
--
-       /* The GOT symbol is subject to a PC-relative relocation so we need a
- 	 helper function to add the PC value and thus get the final value.  */
-       if (!got_helper_rtx)
- 	{
- 	  char name[32];
--
--	  /* Skip the leading '%' as that cannot be used in a symbol name.  */
--	  if (USE_HIDDEN_LINKONCE)
--	    sprintf (name, "__sparc_get_pc_thunk.%s",
--		     reg_names[REGNO (got_register_rtx)] + 1);
--	  else
--	    ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC",
--					 REGNO (got_register_rtx));
--
-+	  get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM);
- 	  got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
- 	}
- 
--      insn
--	= gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx);
-+      emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (),
-+				     got_helper_rtx));
-     }
--
--  emit_insn (insn);
- }
- 
- /* Ensure that we are not using patterns that are not OK with PIC.  */
-@@ -5494,7 +5472,7 @@ save_local_or_in_reg_p (unsigned int regno, int leaf_function)
-     return true;
- 
-   /* GOT register (%l7) if needed.  */
--  if (got_register_rtx && regno == REGNO (got_register_rtx))
-+  if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx)
-     return true;
- 
-   /* If the function accesses prior frames, the frame pointer and the return
-@@ -12475,9 +12453,10 @@ static void
- sparc_file_end (void)
- {
-   /* If we need to emit the special GOT helper function, do so now.  */
--  if (got_helper_needed)
-+  if (got_helper_rtx)
-     {
-       const char *name = XSTR (got_helper_rtx, 0);
-+      const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM];
- #ifdef DWARF2_UNWIND_INFO
-       bool do_cfi;
- #endif
-@@ -12514,22 +12493,17 @@ sparc_file_end (void)
- #ifdef DWARF2_UNWIND_INFO
-       do_cfi = dwarf2out_do_cfi_asm ();
-       if (do_cfi)
--	output_asm_insn (".cfi_startproc", NULL);
-+	fprintf (asm_out_file, "\t.cfi_startproc\n");
- #endif
-       if (flag_delayed_branch)
--	{
--	  output_asm_insn ("jmp\t%%o7+8", NULL);
--	  output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx);
--	}
-+	fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n",
-+		 reg_name, reg_name);
-       else
--	{
--	  output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx);
--	  output_asm_insn ("jmp\t%%o7+8", NULL);
--	  output_asm_insn (" nop", NULL);
--	}
-+	fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n",
-+		 reg_name, reg_name);
- #ifdef DWARF2_UNWIND_INFO
-       if (do_cfi)
--	output_asm_insn (".cfi_endproc", NULL);
-+	fprintf (asm_out_file, "\t.cfi_endproc\n");
- #endif
-     }
- 
-@@ -13035,10 +13009,7 @@ sparc_init_pic_reg (void)
-   edge entry_edge;
-   rtx_insn *seq;
- 
--  /* In PIC mode, we need to always initialize the PIC register if optimization
--     is enabled, because we are called from IRA and LRA may later force things
--     to the constant pool for optimization purposes.  */
--  if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize))
-+  if (!crtl->uses_pic_offset_table)
-     return;
- 
-   start_sequence ();
-diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
-index 468e2cc5d3b..25134bd1148 100644
---- a/gcc/config/sparc/sparc.md
-+++ b/gcc/config/sparc/sparc.md
-@@ -1601,7 +1601,10 @@
-    (clobber (reg:P O7_REG))]
-   "REGNO (operands[0]) == INTVAL (operands[3])"
- {
--  return output_load_pcrel_sym (operands);
-+  if (flag_delayed_branch)
-+    return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0";
-+  else
-+    return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop";
- }
-   [(set (attr "type") (const_string "multi"))
-    (set (attr "length")
-diff --git a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c b/gcc/testsuite/gcc.c-torture/compile/20191108-1.c
-deleted file mode 100644
-index 7929751bb06..00000000000
---- a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c
-+++ /dev/null
-@@ -1,14 +0,0 @@
--/* PR target/92095 */
--/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */
--
--typedef union {
--  double a;
--  int b[2];
--} c;
--
--double d(int e)
--{
--  c f;
--  (&f)->b[0] = 15728640;
--  return e ? -(&f)->a : (&f)->a;
--}
-diff --git a/gcc/testsuite/gcc.target/sparc/overflow-3.c b/gcc/testsuite/gcc.target/sparc/overflow-3.c
-index 18253bb6e5e..8cb24f52f7b 100644
---- a/gcc/testsuite/gcc.target/sparc/overflow-3.c
-+++ b/gcc/testsuite/gcc.target/sparc/overflow-3.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O -fno-pie" } */
-+/* { dg-options "-O" } */
- /* { dg-require-effective-target lp64 } */
- 
- #include <stdbool.h>
-diff --git a/gcc/testsuite/gcc.target/sparc/overflow-4.c b/gcc/testsuite/gcc.target/sparc/overflow-4.c
-index fb30877efb9..868edea2b9e 100644
---- a/gcc/testsuite/gcc.target/sparc/overflow-4.c
-+++ b/gcc/testsuite/gcc.target/sparc/overflow-4.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O -fno-pie -mno-vis3" } */
-+/* { dg-options "-O -mno-vis3" } */
- /* { dg-require-effective-target lp64 } */
- 
- #include <stdbool.h>
-diff --git a/gcc/testsuite/gcc.target/sparc/overflow-5.c b/gcc/testsuite/gcc.target/sparc/overflow-5.c
-index 509d957715d..501ce04f7a1 100644
---- a/gcc/testsuite/gcc.target/sparc/overflow-5.c
-+++ b/gcc/testsuite/gcc.target/sparc/overflow-5.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O -fno-pie -mvis3" } */
-+/* { dg-options "-O -mvis3" } */
- /* { dg-require-effective-target lp64 } */
- 
- #include <stdbool.h>
--- 
-2.25.4
-
-- 
2.44.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore.
  2024-05-01  9:23 ` [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore Dmitry Chestnykh
@ 2024-05-01 12:11   ` Waldemar Brodkorb
  2024-05-01 18:11   ` Yann E. MORIN
  1 sibling, 0 replies; 7+ messages in thread
From: Waldemar Brodkorb @ 2024-05-01 12:11 UTC (permalink / raw
  To: Dmitry Chestnykh; +Cc: buildroot

Hi Dmitry,
Dmitry Chestnykh wrote,

> With uClibc-ng-1.0.48 we can restore this config
> because now sparc systems work without reverting GCC commits.
> 
> Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>

Tested-by: Waldemar Brodkorb <wbx@openadk.org>

best regards
 Waldemar
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch.
  2024-05-01  9:23 ` [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch Dmitry Chestnykh
@ 2024-05-01 12:12   ` Waldemar Brodkorb
  2024-05-01 18:10   ` Yann E. MORIN
  1 sibling, 0 replies; 7+ messages in thread
From: Waldemar Brodkorb @ 2024-05-01 12:12 UTC (permalink / raw
  To: Dmitry Chestnykh; +Cc: buildroot

Hi Dmitry,
Dmitry Chestnykh wrote,

> sparc systems work with uClibc-ng-1.0.48.
> 
> Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>

Tested-by: Waldemar Brodkorb <wbx@openadk.org>

best regards
 Waldemar
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch.
  2024-05-01  9:23 ` [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch Dmitry Chestnykh
  2024-05-01 12:12   ` Waldemar Brodkorb
@ 2024-05-01 18:10   ` Yann E. MORIN
  1 sibling, 0 replies; 7+ messages in thread
From: Yann E. MORIN @ 2024-05-01 18:10 UTC (permalink / raw
  To: Dmitry Chestnykh; +Cc: buildroot

dmitry, All,

On 2024-05-01 12:23 +0300, Dmitry Chestnykh spake thusly:
> sparc systems work with uClibc-ng-1.0.48.

Right, but...

> Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
> ---
>  ...get-92095-internal-error-with-O1-mcp.patch | 322 ------------------
>  1 file changed, 322 deletions(-)
>  delete mode 100644 package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch

gcc 8.4.0 is only ever used for PowerPC SPE:

    package/gcc/Config.in.host
    76 config BR2_GCC_VERSION
    77         string
    78         default "8.4.0"     if BR2_GCC_VERSION_POWERPC_SPE

So gcc 8.4.0 can't be used for sparc, so any sparc-rleated patch there
is totally unused.

Which IMHO should be the actual reason for dropping it...

Regards,
Yann E. MORIN.

> diff --git a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch b/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch
> deleted file mode 100644
> index ec2bf8835d..0000000000
> --- a/package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch
> +++ /dev/null
> @@ -1,322 +0,0 @@
> -From bb9b71752267444b4360442b89129bfc0ae938d3 Mon Sep 17 00:00:00 2001
> -From: Romain Naour <romain.naour@gmail.com>
> -Date: Wed, 20 Jan 2021 23:06:07 +0100
> -Subject: [PATCH] Revert "re PR target/92095 (internal error with -O1
> - -mcpu=niagara2 -fPIE)"
> -
> -This reverts commit 3fcce773f0f914c0499b130c6e9efa0e45ee54a0.
> -
> -Building the Buildroot defconfig qemu_sparc_ss10_defconfig using
> -gcc 8.4, 9.3 and 10 produce a broken rootfs that trigger illegal
> -instruction messages.
> -
> -gcc 8.3, 9.2 are the latest working gcc version.
> -git bisect between gcc 8.4 and 8.4 allowed to identify
> -the commit that introcuce the regression.
> -
> -Reverting this patch allowed to produce a working rootfs.
> -
> -Signed-off-by: Romain Naour <romain.naour@gmail.com>
> -Cc: Eric Botcazou <ebotcazou@gcc.gnu.org>
> ----
> - gcc/config/sparc/sparc-protos.h               |   1 -
> - gcc/config/sparc/sparc.c                      | 121 +++++++-----------
> - gcc/config/sparc/sparc.md                     |   5 +-
> - .../gcc.c-torture/compile/20191108-1.c        |  14 --
> - gcc/testsuite/gcc.target/sparc/overflow-3.c   |   2 +-
> - gcc/testsuite/gcc.target/sparc/overflow-4.c   |   2 +-
> - gcc/testsuite/gcc.target/sparc/overflow-5.c   |   2 +-
> - 7 files changed, 53 insertions(+), 94 deletions(-)
> - delete mode 100644 gcc/testsuite/gcc.c-torture/compile/20191108-1.c
> -
> -diff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h
> -index b3f73c2f2bf..71a067e871c 100644
> ---- a/gcc/config/sparc/sparc-protos.h
> -+++ b/gcc/config/sparc/sparc-protos.h
> -@@ -69,7 +69,6 @@ extern void sparc_split_reg_mem (rtx, rtx, machine_mode);
> - extern void sparc_split_mem_reg (rtx, rtx, machine_mode);
> - extern int sparc_split_reg_reg_legitimate (rtx, rtx);
> - extern void sparc_split_reg_reg (rtx, rtx, machine_mode);
> --extern const char *output_load_pcrel_sym (rtx *);
> - extern const char *output_ubranch (rtx, rtx_insn *);
> - extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *);
> - extern const char *output_return (rtx_insn *);
> -diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
> -index 73032d33596..db1b428db90 100644
> ---- a/gcc/config/sparc/sparc.c
> -+++ b/gcc/config/sparc/sparc.c
> -@@ -4200,6 +4200,13 @@ eligible_for_sibcall_delay (rtx_insn *trial)
> - static bool
> - sparc_cannot_force_const_mem (machine_mode mode, rtx x)
> - {
> -+  /* After IRA has run in PIC mode, it is too late to put anything into the
> -+     constant pool if the PIC register hasn't already been initialized.  */
> -+  if ((lra_in_progress || reload_in_progress)
> -+      && flag_pic
> -+      && !crtl->uses_pic_offset_table)
> -+    return true;
> -+
> -   switch (GET_CODE (x))
> -     {
> -     case CONST_INT:
> -@@ -4235,11 +4242,9 @@ sparc_cannot_force_const_mem (machine_mode mode, rtx x)
> - }
> - \f
> - /* Global Offset Table support.  */
> --static GTY(()) rtx got_symbol_rtx = NULL_RTX;
> --static GTY(()) rtx got_register_rtx = NULL_RTX;
> - static GTY(()) rtx got_helper_rtx = NULL_RTX;
> --
> --static GTY(()) bool got_helper_needed = false;
> -+static GTY(()) rtx got_register_rtx = NULL_RTX;
> -+static GTY(()) rtx got_symbol_rtx = NULL_RTX;
> - 
> - /* Return the SYMBOL_REF for the Global Offset Table.  */
> - 
> -@@ -4252,6 +4257,27 @@ sparc_got (void)
> -   return got_symbol_rtx;
> - }
> - 
> -+#ifdef HAVE_GAS_HIDDEN
> -+# define USE_HIDDEN_LINKONCE 1
> -+#else
> -+# define USE_HIDDEN_LINKONCE 0
> -+#endif
> -+
> -+static void
> -+get_pc_thunk_name (char name[32], unsigned int regno)
> -+{
> -+  const char *reg_name = reg_names[regno];
> -+
> -+  /* Skip the leading '%' as that cannot be used in a
> -+     symbol name.  */
> -+  reg_name += 1;
> -+
> -+  if (USE_HIDDEN_LINKONCE)
> -+    sprintf (name, "__sparc_get_pc_thunk.%s", reg_name);
> -+  else
> -+    ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno);
> -+}
> -+
> - /* Wrapper around the load_pcrel_sym{si,di} patterns.  */
> - 
> - static rtx
> -@@ -4271,78 +4297,30 @@ gen_load_pcrel_sym (rtx op0, rtx op1, rtx op2)
> -   return insn;
> - }
> - 
> --/* Output the load_pcrel_sym{si,di} patterns.  */
> --
> --const char *
> --output_load_pcrel_sym (rtx *operands)
> --{
> --  if (flag_delayed_branch)
> --    {
> --      output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands);
> --      output_asm_insn ("call\t%a2", operands);
> --      output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands);
> --    }
> --  else
> --    {
> --      output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands);
> --      output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands);
> --      output_asm_insn ("call\t%a2", operands);
> --      output_asm_insn (" nop", NULL);
> --    }
> --
> --  if (operands[2] == got_helper_rtx)
> --    got_helper_needed = true;
> --
> --  return "";
> --}
> --
> --#ifdef HAVE_GAS_HIDDEN
> --# define USE_HIDDEN_LINKONCE 1
> --#else
> --# define USE_HIDDEN_LINKONCE 0
> --#endif
> --
> - /* Emit code to load the GOT register.  */
> - 
> - void
> - load_got_register (void)
> - {
> --  rtx insn;
> -+  if (!got_register_rtx)
> -+    got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
> - 
> -   if (TARGET_VXWORKS_RTP)
> --    {
> --      if (!got_register_rtx)
> --	got_register_rtx = pic_offset_table_rtx;
> --
> --      insn = gen_vxworks_load_got ();
> --    }
> -+    emit_insn (gen_vxworks_load_got ());
> -   else
> -     {
> --      if (!got_register_rtx)
> --	got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
> --
> -       /* The GOT symbol is subject to a PC-relative relocation so we need a
> - 	 helper function to add the PC value and thus get the final value.  */
> -       if (!got_helper_rtx)
> - 	{
> - 	  char name[32];
> --
> --	  /* Skip the leading '%' as that cannot be used in a symbol name.  */
> --	  if (USE_HIDDEN_LINKONCE)
> --	    sprintf (name, "__sparc_get_pc_thunk.%s",
> --		     reg_names[REGNO (got_register_rtx)] + 1);
> --	  else
> --	    ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC",
> --					 REGNO (got_register_rtx));
> --
> -+	  get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM);
> - 	  got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
> - 	}
> - 
> --      insn
> --	= gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx);
> -+      emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (),
> -+				     got_helper_rtx));
> -     }
> --
> --  emit_insn (insn);
> - }
> - 
> - /* Ensure that we are not using patterns that are not OK with PIC.  */
> -@@ -5494,7 +5472,7 @@ save_local_or_in_reg_p (unsigned int regno, int leaf_function)
> -     return true;
> - 
> -   /* GOT register (%l7) if needed.  */
> --  if (got_register_rtx && regno == REGNO (got_register_rtx))
> -+  if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx)
> -     return true;
> - 
> -   /* If the function accesses prior frames, the frame pointer and the return
> -@@ -12475,9 +12453,10 @@ static void
> - sparc_file_end (void)
> - {
> -   /* If we need to emit the special GOT helper function, do so now.  */
> --  if (got_helper_needed)
> -+  if (got_helper_rtx)
> -     {
> -       const char *name = XSTR (got_helper_rtx, 0);
> -+      const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM];
> - #ifdef DWARF2_UNWIND_INFO
> -       bool do_cfi;
> - #endif
> -@@ -12514,22 +12493,17 @@ sparc_file_end (void)
> - #ifdef DWARF2_UNWIND_INFO
> -       do_cfi = dwarf2out_do_cfi_asm ();
> -       if (do_cfi)
> --	output_asm_insn (".cfi_startproc", NULL);
> -+	fprintf (asm_out_file, "\t.cfi_startproc\n");
> - #endif
> -       if (flag_delayed_branch)
> --	{
> --	  output_asm_insn ("jmp\t%%o7+8", NULL);
> --	  output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx);
> --	}
> -+	fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n",
> -+		 reg_name, reg_name);
> -       else
> --	{
> --	  output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx);
> --	  output_asm_insn ("jmp\t%%o7+8", NULL);
> --	  output_asm_insn (" nop", NULL);
> --	}
> -+	fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n",
> -+		 reg_name, reg_name);
> - #ifdef DWARF2_UNWIND_INFO
> -       if (do_cfi)
> --	output_asm_insn (".cfi_endproc", NULL);
> -+	fprintf (asm_out_file, "\t.cfi_endproc\n");
> - #endif
> -     }
> - 
> -@@ -13035,10 +13009,7 @@ sparc_init_pic_reg (void)
> -   edge entry_edge;
> -   rtx_insn *seq;
> - 
> --  /* In PIC mode, we need to always initialize the PIC register if optimization
> --     is enabled, because we are called from IRA and LRA may later force things
> --     to the constant pool for optimization purposes.  */
> --  if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize))
> -+  if (!crtl->uses_pic_offset_table)
> -     return;
> - 
> -   start_sequence ();
> -diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
> -index 468e2cc5d3b..25134bd1148 100644
> ---- a/gcc/config/sparc/sparc.md
> -+++ b/gcc/config/sparc/sparc.md
> -@@ -1601,7 +1601,10 @@
> -    (clobber (reg:P O7_REG))]
> -   "REGNO (operands[0]) == INTVAL (operands[3])"
> - {
> --  return output_load_pcrel_sym (operands);
> -+  if (flag_delayed_branch)
> -+    return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0";
> -+  else
> -+    return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop";
> - }
> -   [(set (attr "type") (const_string "multi"))
> -    (set (attr "length")
> -diff --git a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c b/gcc/testsuite/gcc.c-torture/compile/20191108-1.c
> -deleted file mode 100644
> -index 7929751bb06..00000000000
> ---- a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c
> -+++ /dev/null
> -@@ -1,14 +0,0 @@
> --/* PR target/92095 */
> --/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */
> --
> --typedef union {
> --  double a;
> --  int b[2];
> --} c;
> --
> --double d(int e)
> --{
> --  c f;
> --  (&f)->b[0] = 15728640;
> --  return e ? -(&f)->a : (&f)->a;
> --}
> -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-3.c b/gcc/testsuite/gcc.target/sparc/overflow-3.c
> -index 18253bb6e5e..8cb24f52f7b 100644
> ---- a/gcc/testsuite/gcc.target/sparc/overflow-3.c
> -+++ b/gcc/testsuite/gcc.target/sparc/overflow-3.c
> -@@ -1,5 +1,5 @@
> - /* { dg-do compile } */
> --/* { dg-options "-O -fno-pie" } */
> -+/* { dg-options "-O" } */
> - /* { dg-require-effective-target lp64 } */
> - 
> - #include <stdbool.h>
> -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-4.c b/gcc/testsuite/gcc.target/sparc/overflow-4.c
> -index fb30877efb9..868edea2b9e 100644
> ---- a/gcc/testsuite/gcc.target/sparc/overflow-4.c
> -+++ b/gcc/testsuite/gcc.target/sparc/overflow-4.c
> -@@ -1,5 +1,5 @@
> - /* { dg-do compile } */
> --/* { dg-options "-O -fno-pie -mno-vis3" } */
> -+/* { dg-options "-O -mno-vis3" } */
> - /* { dg-require-effective-target lp64 } */
> - 
> - #include <stdbool.h>
> -diff --git a/gcc/testsuite/gcc.target/sparc/overflow-5.c b/gcc/testsuite/gcc.target/sparc/overflow-5.c
> -index 509d957715d..501ce04f7a1 100644
> ---- a/gcc/testsuite/gcc.target/sparc/overflow-5.c
> -+++ b/gcc/testsuite/gcc.target/sparc/overflow-5.c
> -@@ -1,5 +1,5 @@
> - /* { dg-do compile } */
> --/* { dg-options "-O -fno-pie -mvis3" } */
> -+/* { dg-options "-O -mvis3" } */
> - /* { dg-require-effective-target lp64 } */
> - 
> - #include <stdbool.h>
> --- 
> -2.25.4
> -
> -- 
> 2.44.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore.
  2024-05-01  9:23 ` [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore Dmitry Chestnykh
  2024-05-01 12:11   ` Waldemar Brodkorb
@ 2024-05-01 18:11   ` Yann E. MORIN
  1 sibling, 0 replies; 7+ messages in thread
From: Yann E. MORIN @ 2024-05-01 18:11 UTC (permalink / raw
  To: Dmitry Chestnykh; +Cc: buildroot

Dmitry, All,

On 2024-05-01 12:23 +0300, Dmitry Chestnykh spake thusly:
> With uClibc-ng-1.0.48 we can restore this config
> because now sparc systems work without reverting GCC commits.
> 
> Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
> ---
>  arch/Config.in                    |  5 -----
>  configs/qemu_sparc_ss10_defconfig | 28 ++++++++++++++++++++++++++++
>  2 files changed, 28 insertions(+), 5 deletions(-)
>  create mode 100644 configs/qemu_sparc_ss10_defconfig

This patch is doing two things:

 1. allow building an internal toolchain for sparc;
 2. (re)introduce a defconfig.

It should be two different patches, in the order above.

Regards,
Yann E. MORIN.

> diff --git a/arch/Config.in b/arch/Config.in
> index 9912f9fce6..e7349e83ae 100644
> --- a/arch/Config.in
> +++ b/arch/Config.in
> @@ -216,11 +216,6 @@ config BR2_sh
>  config BR2_sparc
>  	bool "SPARC"
>  	select BR2_USE_MMU
> -	# uClibc-ng broken on sparc due to recent gcc changes
> -	# that need to be reverted since gcc 8.4, 9.3 and 10.1.
> -	# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784
> -	# gcc <= 10.x has been removed from Buildroot.
> -	select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT
>  	help
>  	  SPARC (from Scalable Processor Architecture) is a RISC
>  	  instruction set architecture (ISA) developed by Sun
> diff --git a/configs/qemu_sparc_ss10_defconfig b/configs/qemu_sparc_ss10_defconfig
> new file mode 100644
> index 0000000000..a8e3df9180
> --- /dev/null
> +++ b/configs/qemu_sparc_ss10_defconfig
> @@ -0,0 +1,28 @@
> +# Architecture
> +BR2_sparc=y
> +BR2_sparc_v8=y
> +
> +# System
> +BR2_SYSTEM_DHCP="eth0"
> +
> +# Filesystem
> +BR2_TARGET_ROOTFS_EXT2=y
> +# BR2_TARGET_ROOTFS_TAR is not set
> +
> +# Image
> +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh"
> +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)"
> +
> +# Linux headers same as kernel
> +BR2_PACKAGE_HOST_LINUX_HEADERS_AS_KERNEL=y
> +
> +# Linux kernel
> +BR2_LINUX_KERNEL=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.6"
> +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
> +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux.config"
> +
> +# host-qemu for gitlab testing
> +BR2_PACKAGE_HOST_QEMU=y
> +BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y
> -- 
> 2.44.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

end of thread, other threads:[~2024-05-01 18:11 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-01  9:23 [Buildroot] [PATCH 1/3] package/uclibc: Bump to 1.0.48 Dmitry Chestnykh
2024-05-01  9:23 ` [Buildroot] [PATCH 2/3] configs/qemu_sparc_ss10_defconfig: Restore Dmitry Chestnykh
2024-05-01 12:11   ` Waldemar Brodkorb
2024-05-01 18:11   ` Yann E. MORIN
2024-05-01  9:23 ` [Buildroot] [PATCH 3/3] package/gcc: Remove unneeded patch Dmitry Chestnykh
2024-05-01 12:12   ` Waldemar Brodkorb
2024-05-01 18:10   ` Yann E. MORIN

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.