Committed: binutils/dwarf.c: Correct an `index' global shadowing error for pre-4.8 GCC

Message ID
State New
Headers show
  • Committed: binutils/dwarf.c: Correct an `index' global shadowing error for pre-4.8 GCC
Related show

Commit Message

Hans-Peter Nilsson June 29, 2020, 1:54 a.m.
In older gcc, shadowing a function name with a local variable name is
    flagged as an error, certainly a bug but which is usually worked
    around in binutils:

    gcc -DHAVE_CONFIG_H -I. -I$SRC/binutils  -I. -I$SRC/binutils -I../bfd -I$SRC/binutils/../bfd -I$SRC/binutils/../include -DLOCALEDIR="\"/usr/local/share/locale\"" -Dbin_dummy_emulation=bin_vanilla_emulation  -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -I$SRC/binutils/../zlib -g -O2 -MT dwarf.o -MD -MP -MF $depbase.Tpo -c -o dwarf.o $SRC/binutils/dwarf.c &&\
    	mv -f $depbase.Tpo $depbase.Po
    cc1: warnings being treated as errors
    $SRC/binutils/dwarf.c: In function 'display_debug_str_offsets':
    $SRC/binutils/dwarf.c:6913: error: declaration of 'index' shadows a global declaration
    /usr/include/string.h:309: error: shadowed declaration is here
    make[4]: *** [dwarf.o] Error 1

    See also GCC PR c/53066.  This is just another one that crept in since
    I and others last had to use an old version.  The name "idx" was used
    in the preceding function, display_debug_addr.  Also, it was declared
    c99 style (after a statement in the block).  Committed as obvious.

    	* dwarf.c (display_debug_str_offsets): Rename local variable
    	index to idx.  Move to top of function.

index 6e61bfd..34903bc 100644

brgds, H-P


--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -6848,6 +6848,8 @@  static int
 display_debug_str_offsets (struct dwarf_section *section,
 			   void *file ATTRIBUTE_UNUSED)
+  unsigned long idx;
   if (section->size == 0)
       printf (_("\nThe %s section is empty.\n"), section->name);
@@ -6910,8 +6912,7 @@  display_debug_str_offsets (struct dwarf_section *section,
 	  printf (_("       Index   Offset [String]\n"));

-      unsigned long index;
-      for (index = 0; length >= entry_length && curr < end; index ++)
+      for (idx = 0; length >= entry_length && curr < end; idx++)
 	  dwarf_vma offset;
 	  const unsigned char * string;
@@ -6919,11 +6920,11 @@  display_debug_str_offsets (struct dwarf_section *section,
 	  SAFE_BYTE_GET_AND_INC (offset, curr, entry_length, end);
 	  if (dwo)
 	    string = (const unsigned char *)
-	      fetch_indexed_string (index, NULL, entry_length, dwo);
+	      fetch_indexed_string (idx, NULL, entry_length, dwo);
 	    string = fetch_indirect_string (offset);

-	  printf ("    %8lu %8s %s\n", index, dwarf_vmatoa ("x", offset),
+	  printf ("    %8lu %8s %s\n", idx, dwarf_vmatoa ("x", offset),