This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] WebAssembly: Correct an `index' global shadowing error for pre-4.8 GCC
- From: Pip Cet <pipcet at gmail dot com>
- To: "Maciej W. Rozycki" <macro at mips dot com>
- Cc: binutils at sourceware dot org
- Date: Sun, 4 Feb 2018 14:53:46 +0000
- Subject: Re: [PATCH] WebAssembly: Correct an `index' global shadowing error for pre-4.8 GCC
- Authentication-results: sourceware.org; auth=none
- References: <alpine.DEB.2.00.1802030438180.3553@tp.orcam.me.uk>
Hello Maciej,
again, thank you for looking at this code and testing it. The change
also looks obviously correct to me.
Pip
On Sat, Feb 3, 2018 at 3:15 PM, Maciej W. Rozycki <macro@mips.com> wrote:
> Remove `-Wshadow' compilation errors:
>
> cc1: warnings being treated as errors
> .../bfd/wasm-module.c: In function 'wasm_scan_name_function_section':
> .../bfd/wasm-module.c:312: error: declaration of 'index' shadows a global declaration
> /usr/include/string.h:303: error: shadowed declaration is here
> .../bfd/wasm-module.c: In function 'wasm_register_section':
> .../bfd/wasm-module.c:494: error: declaration of 'index' shadows a global declaration
> /usr/include/string.h:303: error: shadowed declaration is here
> .../bfd/wasm-module.c: In function 'wasm_compute_custom_section_file_position':
> .../bfd/wasm-module.c:523: error: declaration of 'index' shadows a global declaration
> /usr/include/string.h:303: error: shadowed declaration is here
>
> and:
>
> cc1: warnings being treated as errors
> .../opcodes/wasm32-dis.c: In function 'print_insn_wasm32':
> .../opcodes/wasm32-dis.c:272: error: declaration of 'index' shadows a global declaration
> /usr/include/string.h:303: error: shadowed declaration is here
> make[4]: *** [wasm32-dis.lo] Error 1
>
> which for versions of GCC before 4.8 prevent support for the WebAssembly
> target from being built. See also GCC PR c/53066.
>
> bfd/
> * wasm-module.c (wasm_scan_name_function_section): Rename
> `index' local variable to `idx'.
>
> opcodes/
> * wasm32-dis.c (print_insn_wasm32): Rename `index' local
> variable to
> ---
> Hi,
>
> This has popped up in routine cross-target testing for an unrelated
> change and should be obvious. OK to apply?
>
> Maciej
> ---
> bfd/wasm-module.c | 18 +++++++++---------
> opcodes/wasm32-dis.c | 6 +++---
> 2 files changed, 12 insertions(+), 12 deletions(-)
>
> binutils-wasm32-index-shadow.diff
> Index: binutils/bfd/wasm-module.c
> ===================================================================
> --- binutils.orig/bfd/wasm-module.c 2018-02-02 05:34:05.217268819 +0000
> +++ binutils/bfd/wasm-module.c 2018-02-02 05:34:41.869388049 +0000
> @@ -309,12 +309,12 @@ wasm_scan_name_function_section (bfd *ab
>
> for (symcount = 0; p < end && symcount < tdata->symcount; symcount++)
> {
> - bfd_vma index;
> + bfd_vma idx;
> bfd_vma len;
> char *name;
> asymbol *sym;
>
> - READ_LEB128 (index, p, end);
> + READ_LEB128 (idx, p, end);
> READ_LEB128 (len, p, end);
>
> if (p + len < p || p + len > end)
> @@ -330,7 +330,7 @@ wasm_scan_name_function_section (bfd *ab
> sym = &symbols[symcount];
> sym->the_bfd = abfd;
> sym->name = name;
> - sym->value = index;
> + sym->value = idx;
> sym->flags = BSF_GLOBAL | BSF_FUNCTION;
> sym->section = space_function_index;
> sym->udata.p = NULL;
> @@ -491,12 +491,12 @@ wasm_register_section (bfd *abfd ATTRIBU
> void *fsarg)
> {
> sec_ptr *numbered_sections = fsarg;
> - int index = wasm_section_name_to_code (asect->name);
> + int idx = wasm_section_name_to_code (asect->name);
>
> - if (index == 0)
> + if (idx == 0)
> return;
>
> - numbered_sections[index] = asect;
> + numbered_sections[idx] = asect;
> }
>
> struct compute_section_arg
> @@ -520,14 +520,14 @@ wasm_compute_custom_section_file_positio
> void *fsarg)
> {
> struct compute_section_arg *fs = fsarg;
> - int index;
> + int idx;
>
> if (fs->failed)
> return;
>
> - index = wasm_section_name_to_code (asect->name);
> + idx = wasm_section_name_to_code (asect->name);
>
> - if (index != 0)
> + if (idx != 0)
> return;
>
> if (CONST_STRNEQ (asect->name, WASM_SECTION_PREFIX))
> Index: binutils/opcodes/wasm32-dis.c
> ===================================================================
> --- binutils.orig/opcodes/wasm32-dis.c 2018-01-28 00:50:52.000000000 +0000
> +++ binutils/opcodes/wasm32-dis.c 2018-02-02 05:36:53.262294076 +0000
> @@ -269,7 +269,7 @@ print_insn_wasm32 (bfd_vma pc, struct di
> long flags = 0;
> long offset = 0;
> long depth = 0;
> - long index = 0;
> + long function_index = 0;
> long target_count = 0;
> long block_type = 0;
> int len = 1;
> @@ -416,14 +416,14 @@ print_insn_wasm32 (bfd_vma pc, struct di
> break;
>
> case wasm_call:
> - index = wasm_read_leb128
> + function_index = wasm_read_leb128
> (pc + len, info, &error, &bytes_read, FALSE);
> if (error)
> return -1;
> len += bytes_read;
> prin (stream, " ");
> private_data->section_prefix = ".space.function_index";
> - (*info->print_address_func) ((bfd_vma) index, info);
> + (*info->print_address_func) ((bfd_vma) function_index, info);
> private_data->section_prefix = NULL;
> break;
>