[PATCH] bfd/elf32-or1k: fix building with gcc version < 5
Stafford Horne
shorne@gmail.com
Wed Jun 9 21:44:43 GMT 2021
On Wed, Jun 09, 2021 at 05:30:59PM +0200, Giulio Benetti wrote:
> 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.
This looks ok to me. Can you also include the changelog entry needed for
binutils patches?
Something like:
bfd/ChangeLog:
* elf32-or1k.c (or1k_write_plt_entry): Move i declaration to top of
function.
> 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
>
More information about the Binutils
mailing list