* [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.