From: Romain Naour <romain.naour@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] package/binutils: fix building or1k with host gcc version < 5
Date: Wed, 9 Jun 2021 19:10:15 +0200 [thread overview]
Message-ID: <2f086ddb-b50c-b914-4b3f-bbbf86f443bb@gmail.com> (raw)
In-Reply-To: <20210609162753.1138390-1-giulio.benetti@benettiengineering.com>
Hi Giulio,
Le 09/06/2021 ? 18:27, Giulio Benetti a ?crit?:
> Add patches to fix building on hosts that provide gcc version < 5
> (i.e. 4.9), otherwise they fail due to missing default '-std=gnu11' option
> on variable declaration inside for loops.
>
> The patch is pending upstream:
> https://sourceware.org/pipermail/binutils/2021-June/116884.html
>
> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
Reviewed-by: Romain Naour <romain.naour@gmail.com>
Best regards,
Romain
> ---
> ...or1k-fix-building-with-gcc-version-5.patch | 50 +++++++++++++++++++
> ...or1k-fix-building-with-gcc-version-5.patch | 50 +++++++++++++++++++
> ...or1k-fix-building-with-gcc-version-5.patch | 50 +++++++++++++++++++
> ...or1k-fix-building-with-gcc-version-5.patch | 50 +++++++++++++++++++
> 4 files changed, 200 insertions(+)
> create mode 100644 package/binutils/2.32/0014-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
> create mode 100644 package/binutils/2.34/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
> create mode 100644 package/binutils/2.35.2/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
> create mode 100644 package/binutils/2.36.1/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
>
> diff --git a/package/binutils/2.32/0014-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch b/package/binutils/2.32/0014-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
> new file mode 100644
> index 0000000000..c3978e22fa
> --- /dev/null
> +++ b/package/binutils/2.32/0014-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
> @@ -0,0 +1,50 @@
> +From c3003947e4bad18faea4337fd2073feeb30ee078 Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Wed, 9 Jun 2021 17:28:27 +0200
> +Subject: [PATCH] bfd/elf32-or1k: fix building with gcc version < 5
> +
> +Gcc version >= 5 has standard C mode not set to -std=gnu11, so if we use
> +an old compiler(i.e. gcc 4.9) build fails on:
> +```
> +elf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in
> +C99 or C11 mode
> + for (size_t i = 0; i < insn_count; i++)
> + ^
> +```
> +
> +So let's declare `size_t i` at the top of the function instead of inside
> +for loop.
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +---
> + bfd/elf32-or1k.c | 5 +++--
> + 1 file changed, 3 insertions(+), 2 deletions(-)
> +
> +diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c
> +index 4ae7f324d33..32063ab0289 100644
> +--- a/bfd/elf32-or1k.c
> ++++ b/bfd/elf32-or1k.c
> +@@ -2244,9 +2244,10 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,
> + {
> + unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;
> + unsigned output_insns[PLT_MAX_INSN_COUNT];
> ++ size_t i;
> +
> + /* Copy instructions into the output buffer. */
> +- for (size_t i = 0; i < insn_count; i++)
> ++ for (i = 0; i < insn_count; i++)
> + output_insns[i] = insns[i];
> +
> + /* Honor the no-delay-slot setting. */
> +@@ -2277,7 +2278,7 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,
> + }
> +
> + /* Write out the output buffer. */
> +- for (size_t i = 0; i < (insn_count+1); i++)
> ++ for (i = 0; i < (insn_count+1); i++)
> + bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));
> + }
> +
> +--
> +2.25.1
> +
> diff --git a/package/binutils/2.34/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch b/package/binutils/2.34/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
> new file mode 100644
> index 0000000000..c3978e22fa
> --- /dev/null
> +++ b/package/binutils/2.34/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
> @@ -0,0 +1,50 @@
> +From c3003947e4bad18faea4337fd2073feeb30ee078 Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Wed, 9 Jun 2021 17:28:27 +0200
> +Subject: [PATCH] bfd/elf32-or1k: fix building with gcc version < 5
> +
> +Gcc version >= 5 has standard C mode not set to -std=gnu11, so if we use
> +an old compiler(i.e. gcc 4.9) build fails on:
> +```
> +elf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in
> +C99 or C11 mode
> + for (size_t i = 0; i < insn_count; i++)
> + ^
> +```
> +
> +So let's declare `size_t i` at the top of the function instead of inside
> +for loop.
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +---
> + bfd/elf32-or1k.c | 5 +++--
> + 1 file changed, 3 insertions(+), 2 deletions(-)
> +
> +diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c
> +index 4ae7f324d33..32063ab0289 100644
> +--- a/bfd/elf32-or1k.c
> ++++ b/bfd/elf32-or1k.c
> +@@ -2244,9 +2244,10 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,
> + {
> + unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;
> + unsigned output_insns[PLT_MAX_INSN_COUNT];
> ++ size_t i;
> +
> + /* Copy instructions into the output buffer. */
> +- for (size_t i = 0; i < insn_count; i++)
> ++ for (i = 0; i < insn_count; i++)
> + output_insns[i] = insns[i];
> +
> + /* Honor the no-delay-slot setting. */
> +@@ -2277,7 +2278,7 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,
> + }
> +
> + /* Write out the output buffer. */
> +- for (size_t i = 0; i < (insn_count+1); i++)
> ++ for (i = 0; i < (insn_count+1); i++)
> + bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));
> + }
> +
> +--
> +2.25.1
> +
> diff --git a/package/binutils/2.35.2/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch b/package/binutils/2.35.2/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
> new file mode 100644
> index 0000000000..c3978e22fa
> --- /dev/null
> +++ b/package/binutils/2.35.2/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
> @@ -0,0 +1,50 @@
> +From c3003947e4bad18faea4337fd2073feeb30ee078 Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Wed, 9 Jun 2021 17:28:27 +0200
> +Subject: [PATCH] bfd/elf32-or1k: fix building with gcc version < 5
> +
> +Gcc version >= 5 has standard C mode not set to -std=gnu11, so if we use
> +an old compiler(i.e. gcc 4.9) build fails on:
> +```
> +elf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in
> +C99 or C11 mode
> + for (size_t i = 0; i < insn_count; i++)
> + ^
> +```
> +
> +So let's declare `size_t i` at the top of the function instead of inside
> +for loop.
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +---
> + bfd/elf32-or1k.c | 5 +++--
> + 1 file changed, 3 insertions(+), 2 deletions(-)
> +
> +diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c
> +index 4ae7f324d33..32063ab0289 100644
> +--- a/bfd/elf32-or1k.c
> ++++ b/bfd/elf32-or1k.c
> +@@ -2244,9 +2244,10 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,
> + {
> + unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;
> + unsigned output_insns[PLT_MAX_INSN_COUNT];
> ++ size_t i;
> +
> + /* Copy instructions into the output buffer. */
> +- for (size_t i = 0; i < insn_count; i++)
> ++ for (i = 0; i < insn_count; i++)
> + output_insns[i] = insns[i];
> +
> + /* Honor the no-delay-slot setting. */
> +@@ -2277,7 +2278,7 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,
> + }
> +
> + /* Write out the output buffer. */
> +- for (size_t i = 0; i < (insn_count+1); i++)
> ++ for (i = 0; i < (insn_count+1); i++)
> + bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));
> + }
> +
> +--
> +2.25.1
> +
> diff --git a/package/binutils/2.36.1/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch b/package/binutils/2.36.1/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
> new file mode 100644
> index 0000000000..c3978e22fa
> --- /dev/null
> +++ b/package/binutils/2.36.1/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch
> @@ -0,0 +1,50 @@
> +From c3003947e4bad18faea4337fd2073feeb30ee078 Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Wed, 9 Jun 2021 17:28:27 +0200
> +Subject: [PATCH] bfd/elf32-or1k: fix building with gcc version < 5
> +
> +Gcc version >= 5 has standard C mode not set to -std=gnu11, so if we use
> +an old compiler(i.e. gcc 4.9) build fails on:
> +```
> +elf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in
> +C99 or C11 mode
> + for (size_t i = 0; i < insn_count; i++)
> + ^
> +```
> +
> +So let's declare `size_t i` at the top of the function instead of inside
> +for loop.
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +---
> + bfd/elf32-or1k.c | 5 +++--
> + 1 file changed, 3 insertions(+), 2 deletions(-)
> +
> +diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c
> +index 4ae7f324d33..32063ab0289 100644
> +--- a/bfd/elf32-or1k.c
> ++++ b/bfd/elf32-or1k.c
> +@@ -2244,9 +2244,10 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,
> + {
> + unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;
> + unsigned output_insns[PLT_MAX_INSN_COUNT];
> ++ size_t i;
> +
> + /* Copy instructions into the output buffer. */
> +- for (size_t i = 0; i < insn_count; i++)
> ++ for (i = 0; i < insn_count; i++)
> + output_insns[i] = insns[i];
> +
> + /* Honor the no-delay-slot setting. */
> +@@ -2277,7 +2278,7 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,
> + }
> +
> + /* Write out the output buffer. */
> +- for (size_t i = 0; i < (insn_count+1); i++)
> ++ for (i = 0; i < (insn_count+1); i++)
> + bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));
> + }
> +
> +--
> +2.25.1
> +
>
next prev parent reply other threads:[~2021-06-09 17:10 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-03 11:13 [Buildroot] [PATCH 0/9] Fix binutils bug 21464 and remove it Giulio Benetti
2021-05-03 11:13 ` [Buildroot] [PATCH 1/9] package/binutils: update or1k patches for plt link version with upstream Giulio Benetti
2021-05-03 11:13 ` [Buildroot] [PATCH 2/9] package/binutils: add upstream backported patches to support -mcmodel=large gcc option Giulio Benetti
2021-06-08 21:29 ` Romain Naour
2021-06-08 22:16 ` Giulio Benetti
2021-06-09 6:26 ` Romain Naour
2021-06-09 16:27 ` [Buildroot] [PATCH] package/binutils: fix building or1k with host gcc version < 5 Giulio Benetti
2021-06-09 17:10 ` Romain Naour [this message]
2021-07-18 20:35 ` Thomas Petazzoni
2021-06-09 16:50 ` [Buildroot] [PATCH 2/9] package/binutils: add upstream backported patches to support -mcmodel=large gcc option Giulio Benetti
2021-06-09 16:57 ` Romain Naour
2021-05-03 11:13 ` [Buildroot] [PATCH 3/9] package/gcc: add upstream patches that introduce -mcmodel=large option for or1k Giulio Benetti
2021-05-03 11:13 ` [Buildroot] [PATCH 4/9] package/libgeos: fix build failure due to missing -mcmodel=large Giulio Benetti
2021-05-03 11:13 ` [Buildroot] [PATCH 5/9] package/protobuf: " Giulio Benetti
2021-05-03 11:13 ` [Buildroot] [PATCH 6/9] toolchain: remove binutils bug 21464 Giulio Benetti
2021-05-03 11:13 ` [Buildroot] [PATCH 7/9] package/libgeos: remove binutils bug 21464 dependency Giulio Benetti
2021-05-03 11:13 ` [Buildroot] [PATCH 8/9] package/postgis: remove libgeos binutils bug 21464 inheritance Giulio Benetti
2021-05-03 11:13 ` [Buildroot] [PATCH 9/9] package/protobuf: remove binutils bug 21464 dependency Giulio Benetti
2021-05-21 8:46 ` [Buildroot] [PATCH 0/9] Fix binutils bug 21464 and remove it Arnout Vandecappelle
2021-05-21 14:21 ` Giulio Benetti
2021-05-21 21:26 ` Yann E. MORIN
2021-05-21 21:28 ` Giulio Benetti
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2f086ddb-b50c-b914-4b3f-bbbf86f443bb@gmail.com \
--to=romain.naour@gmail.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.