From patchwork Mon Dec 30 13:36:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Romain Naour X-Patchwork-Id: 1216434 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.133; helo=hemlock.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="VGo2I0Qt"; dkim-atps=neutral Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 47mdky65VNz9sPJ for ; Tue, 31 Dec 2019 00:36:56 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 1835384F0F; Mon, 30 Dec 2019 13:36:51 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0fzKKLthjv86; Mon, 30 Dec 2019 13:36:48 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id A7F6A82140; Mon, 30 Dec 2019 13:36:48 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 766631BF2FE for ; Mon, 30 Dec 2019 13:36:47 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 7325020003 for ; Mon, 30 Dec 2019 13:36:47 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7IwdeJ8hczMp for ; Mon, 30 Dec 2019 13:36:46 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by silver.osuosl.org (Postfix) with ESMTPS id ADF791FE65 for ; Mon, 30 Dec 2019 13:36:45 +0000 (UTC) Received: by mail-wm1-f66.google.com with SMTP id d73so13944111wmd.1 for ; Mon, 30 Dec 2019 05:36:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Z+/ZF1c18H7kEBinLhK0cdUyBc5AVyNg+0SbwuPgDjg=; b=VGo2I0QtFhzU3vWJO9JX7t2er5anBbVXlnOdwg3xpDsM2KVVjGr2wGPg5sZxnfeRQm AeY26pK0pFEoq3w+fHzAIam+Z4CtLYnez3PFzgxzHcKi2npJb7gpQg4IyXu/p7DNZ4ZS QY4cAaTlOT1/DzNqJhXRCyHo1ONLVINzJL1n6HJPfcT8QVeMm5V0R1yoPBptZdL8iXU3 rao0tG2b+FTlYGonouLmpIycWwpcVAn+Fc/DBfM8J6NvJZtWBhq4pGJTUhrIL0oZQOsY hMfa/OeQXM26QF3aUAZLNxGK1JNuLhR5ONtrTEhuqgCVs1xfrlUhlESJ0NeEEvrTmTAA fprg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Z+/ZF1c18H7kEBinLhK0cdUyBc5AVyNg+0SbwuPgDjg=; b=pqbkkTBhz5T39btQdWBFp0dPXuSjASV6zuxdzhgTNmryVYKwoMXFegVNcaV2LG0Ji2 saoY5/+eUCKaJngZw5daZSq+WyArhttUNSZyP+51264SHx4zOxb4Kr4eKXtboSKB+biy PSrgDS8OM79Y6iAdw0DFqOODLqEVPpzct4HxaRVcowJ+eCdoofGihSza26vym1ITc6Ox q/iPn3BfCr084vNb/ctcd1yd3izZpBEx1eQe5c73X4yzWiGEr9vLKXAk487GI9Y84XrJ /3Y9eeoIoP6VpDKvvXvnIBSo1zAYbqIgcTY6abHgNICBedyjot4RLpt35XWppW7wteEb S4Ug== X-Gm-Message-State: APjAAAXKDBJv0z7aqPwmoLTY1fLLjQ5HEBphSz3CxupEd2ne1hKd663/ WBo5CwryMOC2L9yKN+F4ccCRr9OW X-Google-Smtp-Source: APXvYqxbHcCNowsOh9e6MJxJYS5XTxujV5NWajZpfB1zZ7vQh13hrfNO5N2HGZFM/eee9cfCQsDbNg== X-Received: by 2002:a05:600c:2c13:: with SMTP id q19mr33923151wmg.144.1577713003724; Mon, 30 Dec 2019 05:36:43 -0800 (PST) Received: from localhost.localdomain (2a01cb0589880c00405dfcd6cc31e8fe.ipv6.abo.wanadoo.fr. [2a01:cb05:8988:c00:405d:fcd6:cc31:e8fe]) by smtp.gmail.com with ESMTPSA id s15sm46673320wrp.4.2019.12.30.05.36.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Dec 2019 05:36:42 -0800 (PST) From: Romain Naour To: buildroot@buildroot.org Date: Mon, 30 Dec 2019 14:36:40 +0100 Message-Id: <20191230133640.9702-1-romain.naour@gmail.com> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 Subject: [Buildroot] [PATCH] board/qemu/sh4-r2d: fix sh4 kernel bug with Binutils 2.33 X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Romain Naour Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Remove the Binutils patch reverting [1] that trigger a sh4 kernel bug with Binutils >= 2.33. Add two kernel patch provided by Alan Modra [2] that fix alignment of rodata. [1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ebd2263ba9a9124d93bbc0ece63d7e0fae89b40e [2] https://www.sourceware.org/ml/binutils/2019-12/msg00112.html Signed-off-by: Romain Naour --- .../linux/0002-arch-sh-vmlinux.scr.patch | 32 ++++ ...03-include-asm-generic-vmlinux.lds.h.patch | 32 ++++ .../linux/0002-arch-sh-vmlinux.scr.patch | 32 ++++ ...03-include-asm-generic-vmlinux.lds.h.patch | 27 ++++ ...311-FAIL-S-records-with-constructors.patch | 148 ------------------ 5 files changed, 123 insertions(+), 148 deletions(-) create mode 100644 board/qemu/sh4-r2d/patches/linux/0002-arch-sh-vmlinux.scr.patch create mode 100644 board/qemu/sh4-r2d/patches/linux/0003-include-asm-generic-vmlinux.lds.h.patch create mode 100644 board/qemu/sh4eb-r2d/patches/linux/0002-arch-sh-vmlinux.scr.patch create mode 100644 board/qemu/sh4eb-r2d/patches/linux/0003-include-asm-generic-vmlinux.lds.h.patch delete mode 100644 package/binutils/2.33.1/0003-Revert-PR24311-FAIL-S-records-with-constructors.patch diff --git a/board/qemu/sh4-r2d/patches/linux/0002-arch-sh-vmlinux.scr.patch b/board/qemu/sh4-r2d/patches/linux/0002-arch-sh-vmlinux.scr.patch new file mode 100644 index 0000000000..941052c2b2 --- /dev/null +++ b/board/qemu/sh4-r2d/patches/linux/0002-arch-sh-vmlinux.scr.patch @@ -0,0 +1,32 @@ +From fe657afd48fc67841d32207ef9eeeb5f099764cd Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 21 Dec 2019 11:52:04 +0100 +Subject: [PATCH 2/3] arch/sh: vmlinux.scr + +Building the kernel using a toolchain built with Binutils 2.33.1 prevent +booting a sh4 system under Qemu. +Apply the patch provided by Alan Modra [2] that fix alignment of rodata. + +[1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ebd2263ba9a9124d93bbc0ece63d7e0fae89b40e +[2] https://www.sourceware.org/ml/binutils/2019-12/msg00112.html + +Signed-off-by: Romain Naour +--- + arch/sh/boot/compressed/vmlinux.scr | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/sh/boot/compressed/vmlinux.scr b/arch/sh/boot/compressed/vmlinux.scr +index 862d74808236..dd292b4b9082 100644 +--- a/arch/sh/boot/compressed/vmlinux.scr ++++ b/arch/sh/boot/compressed/vmlinux.scr +@@ -1,6 +1,6 @@ + SECTIONS + { +- .rodata..compressed : { ++ .rodata..compressed : ALIGN(8) { + input_len = .; + LONG(input_data_end - input_data) input_data = .; + *(.data) +-- +2.24.1 + diff --git a/board/qemu/sh4-r2d/patches/linux/0003-include-asm-generic-vmlinux.lds.h.patch b/board/qemu/sh4-r2d/patches/linux/0003-include-asm-generic-vmlinux.lds.h.patch new file mode 100644 index 0000000000..3dfa0d3824 --- /dev/null +++ b/board/qemu/sh4-r2d/patches/linux/0003-include-asm-generic-vmlinux.lds.h.patch @@ -0,0 +1,32 @@ +From 7f92adbba385a4e512abfd6633ac0f9f0cdf91f8 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 21 Dec 2019 11:54:07 +0100 +Subject: [PATCH 3/3] include/asm-generic: vmlinux.lds.h + +Building the kernel using a toolchain built with Binutils 2.33.1 prevent +booting a sh4 system under Qemu. +Apply the patch provided by Alan Modra [2] that fix alignment of rodata. + +[1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ebd2263ba9a9124d93bbc0ece63d7e0fae89b40e +[2] https://www.sourceware.org/ml/binutils/2019-12/msg00112.html + +Signed-off-by: Romain Naour +--- + include/asm-generic/vmlinux.lds.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h +index d7701d466b60..1aa33597e91e 100644 +--- a/include/asm-generic/vmlinux.lds.h ++++ b/include/asm-generic/vmlinux.lds.h +@@ -306,6 +306,7 @@ + */ + #ifndef RO_AFTER_INIT_DATA + #define RO_AFTER_INIT_DATA \ ++ . = ALIGN(8); \ + __start_ro_after_init = .; \ + *(.data..ro_after_init) \ + __end_ro_after_init = .; +-- +2.24.1 + diff --git a/board/qemu/sh4eb-r2d/patches/linux/0002-arch-sh-vmlinux.scr.patch b/board/qemu/sh4eb-r2d/patches/linux/0002-arch-sh-vmlinux.scr.patch new file mode 100644 index 0000000000..941052c2b2 --- /dev/null +++ b/board/qemu/sh4eb-r2d/patches/linux/0002-arch-sh-vmlinux.scr.patch @@ -0,0 +1,32 @@ +From fe657afd48fc67841d32207ef9eeeb5f099764cd Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 21 Dec 2019 11:52:04 +0100 +Subject: [PATCH 2/3] arch/sh: vmlinux.scr + +Building the kernel using a toolchain built with Binutils 2.33.1 prevent +booting a sh4 system under Qemu. +Apply the patch provided by Alan Modra [2] that fix alignment of rodata. + +[1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ebd2263ba9a9124d93bbc0ece63d7e0fae89b40e +[2] https://www.sourceware.org/ml/binutils/2019-12/msg00112.html + +Signed-off-by: Romain Naour +--- + arch/sh/boot/compressed/vmlinux.scr | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/sh/boot/compressed/vmlinux.scr b/arch/sh/boot/compressed/vmlinux.scr +index 862d74808236..dd292b4b9082 100644 +--- a/arch/sh/boot/compressed/vmlinux.scr ++++ b/arch/sh/boot/compressed/vmlinux.scr +@@ -1,6 +1,6 @@ + SECTIONS + { +- .rodata..compressed : { ++ .rodata..compressed : ALIGN(8) { + input_len = .; + LONG(input_data_end - input_data) input_data = .; + *(.data) +-- +2.24.1 + diff --git a/board/qemu/sh4eb-r2d/patches/linux/0003-include-asm-generic-vmlinux.lds.h.patch b/board/qemu/sh4eb-r2d/patches/linux/0003-include-asm-generic-vmlinux.lds.h.patch new file mode 100644 index 0000000000..7a4543125c --- /dev/null +++ b/board/qemu/sh4eb-r2d/patches/linux/0003-include-asm-generic-vmlinux.lds.h.patch @@ -0,0 +1,27 @@ +From 7f92adbba385a4e512abfd6633ac0f9f0cdf91f8 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 21 Dec 2019 11:54:07 +0100 +Subject: [PATCH 3/3] include/asm-generic: vmlinux.lds.h + +https://www.sourceware.org/ml/binutils/2019-12/msg00112.html + +Signed-off-by: Romain Naour +--- + include/asm-generic/vmlinux.lds.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h +index d7701d466b60..1aa33597e91e 100644 +--- a/include/asm-generic/vmlinux.lds.h ++++ b/include/asm-generic/vmlinux.lds.h +@@ -306,6 +306,7 @@ + */ + #ifndef RO_AFTER_INIT_DATA + #define RO_AFTER_INIT_DATA \ ++ . = ALIGN(8); \ + __start_ro_after_init = .; \ + *(.data..ro_after_init) \ + __end_ro_after_init = .; +-- +2.24.1 + diff --git a/package/binutils/2.33.1/0003-Revert-PR24311-FAIL-S-records-with-constructors.patch b/package/binutils/2.33.1/0003-Revert-PR24311-FAIL-S-records-with-constructors.patch deleted file mode 100644 index 046d0d6f36..0000000000 --- a/package/binutils/2.33.1/0003-Revert-PR24311-FAIL-S-records-with-constructors.patch +++ /dev/null @@ -1,148 +0,0 @@ -From 7a8213503e25998e2610d5a8c0b19eefb5e41596 Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Sat, 30 Nov 2019 03:12:37 +0100 -Subject: [PATCH] Revert "PR24311, FAIL: S-records with constructors" - -This reverts commit ebd2263ba9a9124d93bbc0ece63d7e0fae89b40e. - -Revert this patch since it prevent booting a sh4 system under -Qemu as reported on the Binutils mailing list [1]. -This commit is not related to sh4, it's weird that it is the -only affected architecture. - -[1] https://sourceware.org/ml/binutils/2019-10/msg00105.html -[2] https://sourceware.org/ml/binutils/2019-11/msg00407.html - -Signed-off-by: Romain Naour ---- - bfd/merge.c | 52 ++++++++++++++++++++++------------------------------ - 1 file changed, 22 insertions(+), 30 deletions(-) - -diff --git a/bfd/merge.c b/bfd/merge.c -index 632c8523903..fb7c0858beb 100644 ---- a/bfd/merge.c -+++ b/bfd/merge.c -@@ -621,7 +621,7 @@ is_suffix (const struct sec_merge_hash_entry *A, - - /* This is a helper function for _bfd_merge_sections. It attempts to - merge strings matching suffixes of longer strings. */ --static struct sec_merge_sec_info * -+static bfd_boolean - merge_strings (struct sec_merge_info *sinfo) - { - struct sec_merge_hash_entry **array, **a, *e; -@@ -633,7 +633,7 @@ merge_strings (struct sec_merge_info *sinfo) - amt = sinfo->htab->size * sizeof (struct sec_merge_hash_entry *); - array = (struct sec_merge_hash_entry **) bfd_malloc (amt); - if (array == NULL) -- return NULL; -+ return FALSE; - - for (e = sinfo->htab->first, a = array; e; e = e->next) - if (e->alignment) -@@ -703,6 +703,11 @@ merge_strings (struct sec_merge_info *sinfo) - } - } - secinfo->sec->size = size; -+ if (secinfo->sec->alignment_power != 0) -+ { -+ bfd_size_type align = (bfd_size_type) 1 << secinfo->sec->alignment_power; -+ secinfo->sec->size = (secinfo->sec->size + align - 1) & -align; -+ } - - /* And now adjust the rest, removing them from the chain (but not hashtable) - at the same time. */ -@@ -719,7 +724,7 @@ merge_strings (struct sec_merge_info *sinfo) - e->u.index = e->u.suffix->u.index + (e->u.suffix->len - e->len); - } - } -- return secinfo; -+ return TRUE; - } - - /* This function is called once after all SEC_MERGE sections are registered -@@ -735,8 +740,7 @@ _bfd_merge_sections (bfd *abfd, - - for (sinfo = (struct sec_merge_info *) xsinfo; sinfo; sinfo = sinfo->next) - { -- struct sec_merge_sec_info *secinfo; -- bfd_size_type align; -+ struct sec_merge_sec_info * secinfo; - - if (! sinfo->chain) - continue; -@@ -747,7 +751,6 @@ _bfd_merge_sections (bfd *abfd, - secinfo->next = NULL; - - /* Record the sections into the hash table. */ -- align = 1; - for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next) - if (secinfo->sec->flags & SEC_EXCLUDE) - { -@@ -755,25 +758,18 @@ _bfd_merge_sections (bfd *abfd, - if (remove_hook) - (*remove_hook) (abfd, secinfo->sec); - } -- else -- { -- if (!record_section (sinfo, secinfo)) -- return FALSE; -- if (align) -- { -- align = (bfd_size_type) 1 << secinfo->sec->alignment_power; -- if ((secinfo->sec->size & (align - 1)) != 0) -- align = 0; -- } -- } -+ else if (! record_section (sinfo, secinfo)) -+ return FALSE; -+ -+ if (secinfo) -+ continue; - - if (sinfo->htab->first == NULL) - continue; - - if (sinfo->htab->strings) - { -- secinfo = merge_strings (sinfo); -- if (!secinfo) -+ if (!merge_strings (sinfo)) - return FALSE; - } - else -@@ -793,7 +789,8 @@ _bfd_merge_sections (bfd *abfd, - e->secinfo->first_str = e; - size = 0; - } -- size = (size + e->alignment - 1) & ~((bfd_vma) e->alignment - 1); -+ size = (size + e->alignment - 1) -+ & ~((bfd_vma) e->alignment - 1); - e->u.index = size; - size += e->len; - secinfo = e->secinfo; -@@ -801,16 +798,11 @@ _bfd_merge_sections (bfd *abfd, - secinfo->sec->size = size; - } - -- /* If the input sections were padded according to their alignments, -- then pad the output too. */ -- if (align) -- secinfo->sec->size = (secinfo->sec->size + align - 1) & -align; -- -- /* Finally remove all input sections which have not made it into -- the hash table at all. */ -- for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next) -- if (secinfo->first_str == NULL) -- secinfo->sec->flags |= SEC_EXCLUDE | SEC_KEEP; -+ /* Finally remove all input sections which have not made it into -+ the hash table at all. */ -+ for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next) -+ if (secinfo->first_str == NULL) -+ secinfo->sec->flags |= SEC_EXCLUDE | SEC_KEEP; - } - - return TRUE; --- -2.23.0 -