Fix the display of the idnex values for DW_FORM_loclistx and DW_FORM_rnglistx. Corre...
authorNick Clifton <nickc@redhat.com>
Tue, 28 Jun 2022 11:30:19 +0000 (12:30 +0100)
committerNick Clifton <nickc@redhat.com>
Tue, 28 Jun 2022 11:30:19 +0000 (12:30 +0100)
PR 29267
* dwarf.c (display_debug_rnglists): New function, broken out of..
(display_debug_ranges): ... here.
(read_and_display_attr_value): Correct calculation of index
displayed for DW_FORM_loclistx and DW_FORM_rnglistx.
* testsuite/binutils-all/x86-64/pr26808.dump: Update expected
output.

binutils/ChangeLog
binutils/dwarf.c
binutils/testsuite/binutils-all/x86-64/pr26808.dump

index c543e5b9d1b14428a5a144748bbd3e7c2c1b79fb..17c23531e839808b502e0ae3312f2f1373d695aa 100644 (file)
@@ -1,3 +1,13 @@
+2022-06-28  Nick Clifton  <nickc@redhat.com>
+
+       PR 29267
+       * dwarf.c (display_debug_rnglists): New function, broken out of..
+       (display_debug_ranges): ... here.
+       (read_and_display_attr_value): Correct calculation of index
+       displayed for DW_FORM_loclistx and DW_FORM_rnglistx.
+       * testsuite/binutils-all/x86-64/pr26808.dump: Update expected
+       output.
+
 2022-06-27  Nick Clifton  <nickc@redhat.com>
 
        PR 29289
index b99c56987da2134bd5384ad8be20437506356180..84200ae4078008010036b330f1093d127738f8de 100644 (file)
@@ -763,7 +763,7 @@ fetch_indexed_addr (dwarf_vma offset, uint32_t num_bytes)
 
   if (section->start == NULL)
     {
-      warn (_("<no .debug_addr section>"));
+      warn (_("Cannot fetch indexed address: the .debug_addr section is missing\n"));
       return 0;
     }
 
@@ -778,7 +778,7 @@ fetch_indexed_addr (dwarf_vma offset, uint32_t num_bytes)
 }
 
 /* Fetch a value from a debug section that has been indexed by
-   something in another section (eg DW_FORM_loclistx).
+   something in another section (eg DW_FORM_loclistx or DW_FORM_rnglistx).
    Returns 0 if the value could not be found.  */
 
 static dwarf_vma
@@ -811,7 +811,7 @@ fetch_indexed_value (dwarf_vma idx,
 
   /* Offsets are biased by the size of the section header
      or base address.  */
-  if (sec_enum == loclists)
+  if (base_address)
     offset += base_address;
   else
     offset += bias;
@@ -2743,37 +2743,52 @@ read_and_display_attr_value (unsigned long           attribute,
     case DW_FORM_rnglistx:
       if (!do_loc)
        {
-         dwarf_vma base;
-         dwarf_vma offset;
+         dwarf_vma base, index;
 
-         if (debug_info_p == NULL)
-           base = 0;
-         else if (debug_info_p->addr_base == DEBUG_INFO_UNAVAILABLE)
-           base = 0;
+         if (form == DW_FORM_loclistx)
+           {
+             if (debug_info_p == NULL)
+               {
+                 index = fetch_indexed_value (uvalue, loclists, 0);
+               }
+             else
+               {
+                 /* We want to compute:
+                      index = fetch_indexed_value (uvalue, loclists, debug_info_p->loclists_base);
+                      index += debug_info_p->loclists_base;
+                     Fortunately we already have that sum cached in the
+                     loc_offsets array.  */
+                 index = debug_info_p->loc_offsets [uvalue];
+               }
+           }
+         else if (form == DW_FORM_rnglistx)
+           {
+             if (debug_info_p == NULL)
+               base = 0;
+             else
+               base = debug_info_p->rnglists_base;
+             /* We do not have a cached value this time, so we perform the
+                computation manually.  */
+             index = fetch_indexed_value (uvalue, rnglists, base);
+             index += base;
+           }
          else
-           base = debug_info_p->addr_base;
+           {
+             if (debug_info_p == NULL)
+               base = 0;
+             else if (debug_info_p->addr_base == DEBUG_INFO_UNAVAILABLE)
+               base = 0;
+             else
+               base = debug_info_p->addr_base;
 
-         offset = base + uvalue * pointer_size;
+             base += uvalue * pointer_size;
+             index = fetch_indexed_addr (base, pointer_size);
+           }
 
-         if (do_wide)
-           /* We have already displayed the form name.  */
-           if (form == DW_FORM_loclistx)
-             printf (_("%c(index: 0x%s): %s"), delimiter,
-                     dwarf_vmatoa ("x", uvalue),
-                     dwarf_vmatoa ("x", debug_info_p->loc_offsets [uvalue]));
-           else
-             printf (_("%c(index: 0x%s): %s"), delimiter,
-                     dwarf_vmatoa ("x", uvalue),
-                     dwarf_vmatoa ("x", fetch_indexed_addr (offset, pointer_size)));
-         else
-           if (form == DW_FORM_loclistx)
-             printf (_("%c(addr_index: 0x%s): %s"), delimiter,
-                     dwarf_vmatoa ("x", uvalue),
-                     dwarf_vmatoa ("x", debug_info_p->loc_offsets [uvalue]));
-           else
-             printf (_("%c(addr_index: 0x%s): %s"), delimiter,
-                     dwarf_vmatoa ("x", uvalue),
-                     dwarf_vmatoa ("x", fetch_indexed_addr (offset, pointer_size)));
+         /* We have already displayed the form name.  */
+         printf (_("%c(index: 0x%s): %s"), delimiter,
+                 dwarf_vmatoa ("x", uvalue),
+                 dwarf_vmatoa ("x", index));
        }
       break;
 
@@ -2797,20 +2812,26 @@ read_and_display_attr_value (unsigned long           attribute,
        {
        case DW_AT_loclists_base:
          if (debug_info_p->loclists_base)
-           warn (_("CU @ 0x%s has multiple loclists_base values"),
-                 dwarf_vmatoa ("x", debug_info_p->cu_offset));
+           warn (_("CU @ 0x%s has multiple loclists_base values (0x%s and 0x%s)"),
+                 dwarf_vmatoa ("x", debug_info_p->cu_offset),
+                 dwarf_vmatoa ("x", debug_info_p->loclists_base),
+                 dwarf_vmatoa ("x", uvalue));
          debug_info_p->loclists_base = uvalue;
          break;
        case DW_AT_rnglists_base:
          if (debug_info_p->rnglists_base)
-           warn (_("CU @ 0x%s has multiple rnglists_base values"),
-                 dwarf_vmatoa ("x", debug_info_p->cu_offset));
+           warn (_("CU @ 0x%s has multiple rnglists_base values (0x%s and 0x%s)"),
+                 dwarf_vmatoa ("x", debug_info_p->cu_offset),
+                 dwarf_vmatoa ("x", debug_info_p->rnglists_base),
+                 dwarf_vmatoa ("x", uvalue));
          debug_info_p->rnglists_base = uvalue;
          break;
        case DW_AT_str_offsets_base:
          if (debug_info_p->str_offsets_base)
-           warn (_("CU @ 0x%s has multiple str_offsets_base values"),
-                 dwarf_vmatoa ("x", debug_info_p->cu_offset));
+           warn (_("CU @ 0x%s has multiple str_offsets_base values (0x%s and 0x%s)"),
+                 dwarf_vmatoa ("x", debug_info_p->cu_offset),
+                 dwarf_vmatoa ("x", debug_info_p->str_offsets_base),
+                 dwarf_vmatoa ("x", uvalue));
          debug_info_p->str_offsets_base = uvalue;
          break;
 
@@ -3811,6 +3832,7 @@ process_debug_info (struct dwarf_section * section,
          debug_information [unit].base_address = 0;
          debug_information [unit].addr_base = DEBUG_INFO_UNAVAILABLE;
          debug_information [unit].ranges_base = DEBUG_INFO_UNAVAILABLE;
+         debug_information [unit].rnglists_base = 0;
          debug_information [unit].loc_offsets = NULL;
          debug_information [unit].have_frame_base = NULL;
          debug_information [unit].max_loc_offsets = 0;
@@ -7940,7 +7962,7 @@ display_debug_ranges_list (unsigned char *  start,
     }
 }
 
-static void
+static unsigned char *
 display_debug_rnglists_list (unsigned char * start,
                             unsigned char * finish,
                             unsigned int    pointer_size,
@@ -8050,40 +8072,28 @@ display_debug_rnglists_list (unsigned char * start,
 
       putchar ('\n');
     }
+
+  return start;
 }
 
 static int
-display_debug_ranges (struct dwarf_section *section,
-                     void *file ATTRIBUTE_UNUSED)
+display_debug_rnglists (struct dwarf_section *section)
 {
   unsigned char *       start = section->start;
-  unsigned char *       last_start = start;
-  dwarf_vma             bytes = section->size;
-  unsigned char *       section_begin = start;
-  unsigned char *       finish = start + bytes;
-  unsigned int          num_range_list, i;
-  struct range_entry *  range_entries;
-  struct range_entry *  range_entry_fill;
-  int                   is_rnglists = strstr (section->name, "debug_rnglists") != NULL;
-  /* Initialize it due to a false compiler warning.  */
-  unsigned char         address_size = 0;
-  dwarf_vma             last_offset = 0;
-  unsigned int          offset_size = 0;
-
-  if (bytes == 0)
-    {
-      printf (_("\nThe %s section is empty.\n"), section->name);
-      return 0;
-    }
-
-  introduce (section, false);
+  unsigned char *       finish = start + section->size;
 
-  if (is_rnglists)
+  while (start < finish)
     {
+      unsigned char * table_start;
+      dwarf_vma       offset = start - section->start;
+      unsigned char * end;
       dwarf_vma       initial_length;
       unsigned char   segment_selector_size;
       unsigned int    offset_entry_count;
+      unsigned int    i;
       unsigned short  version;
+      unsigned char   address_size = 0;
+      unsigned char   offset_size;
 
       /* Get and check the length of the block.  */
       SAFE_BYTE_GET_AND_INC (initial_length, start, 4, finish);
@@ -8103,9 +8113,7 @@ display_debug_ranges (struct dwarf_section *section,
             not complain if it is inaccurate (and probably negative).
             It is copied from .debug_line handling code.  */
          if (reloc_at (section, (start - section->start) - offset_size))
-           {
-             initial_length = finish - start;
-           }
+           initial_length = finish - start;
          else
            {
              warn (_("The length field (0x%lx) in the debug_rnglists header is wrong - the section is too small\n"),
@@ -8114,12 +8122,15 @@ display_debug_ranges (struct dwarf_section *section,
            }
        }
 
+      end = start + initial_length;
+
       /* Get the other fields in the header.  */
       SAFE_BYTE_GET_AND_INC (version, start, 2, finish);
       SAFE_BYTE_GET_AND_INC (address_size, start, 1, finish);
       SAFE_BYTE_GET_AND_INC (segment_selector_size, start, 1, finish);
       SAFE_BYTE_GET_AND_INC (offset_entry_count, start, 4, finish);
 
+      printf (_(" Table at Offset: 0x%s:\n"), dwarf_vmatoa ("x", offset));
       printf (_("  Length:          0x%s\n"), dwarf_vmatoa ("x", initial_length));
       printf (_("  DWARF version:   %u\n"), version);
       printf (_("  Address size:    %u\n"), address_size);
@@ -8142,6 +8153,8 @@ display_debug_ranges (struct dwarf_section *section,
          return 0;
        }
 
+      table_start = start;
+
       if (offset_entry_count != 0)
        {
          printf (_("\n   Offsets starting at 0x%lx:\n"), (long)(start - section->start));
@@ -8166,8 +8179,60 @@ display_debug_ranges (struct dwarf_section *section,
                }
            }
        }
+      else
+       offset_entry_count = 1;
+
+      for (i = 0; i < offset_entry_count; i++)
+       {
+         dwarf_vma indx = start - table_start;
+
+         offset = start - section->start;
+         printf (_("\n  Offset: %lx, Index: 0x%s\n"),
+                 (long) offset, dwarf_vmatoa ("x", indx));
+         printf (_("    Offset   Begin    End\n"));
+         start = display_debug_rnglists_list
+           (start, end, address_size, offset, 0, offset_size);
+         if (start >= end)
+           break;        
+       }
+
+      start = end;
+
+      if (start < finish)
+       putchar ('\n');
     }
-  
+
+  return 1;
+}
+
+static int
+display_debug_ranges (struct dwarf_section *section,
+                     void *file ATTRIBUTE_UNUSED)
+{
+  unsigned char *       start = section->start;
+  unsigned char *       last_start = start;
+  dwarf_vma             bytes = section->size;
+  unsigned char *       section_begin = start;
+  unsigned char *       finish = start + bytes;
+  unsigned int          num_range_list, i;
+  struct range_entry *  range_entries;
+  struct range_entry *  range_entry_fill;
+  int                   is_rnglists = strstr (section->name, "debug_rnglists") != NULL;
+  /* Initialize it due to a false compiler warning.  */
+  unsigned char         address_size = 0;
+  dwarf_vma             last_offset = 0;
+
+  if (bytes == 0)
+    {
+      printf (_("\nThe %s section is empty.\n"), section->name);
+      return 0;
+    }
+
+  introduce (section, false);
+
+  if (is_rnglists)
+    return display_debug_rnglists (section);
+
   if (load_debug_info (file) == 0)
     {
       warn (_("Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"),
@@ -8177,15 +8242,7 @@ display_debug_ranges (struct dwarf_section *section,
 
   num_range_list = 0;
   for (i = 0; i < num_debug_info_entries; i++)
-    {
-      if (debug_information [i].dwarf_version < 5 && is_rnglists)
-       /* Skip .debug_rnglists reference.  */
-       continue;
-      if (debug_information [i].dwarf_version >= 5 && !is_rnglists)
-       /* Skip .debug_range reference.  */
-       continue;
-      num_range_list += debug_information [i].num_range_lists;
-    }
+    num_range_list += debug_information [i].num_range_lists;
 
   if (num_range_list == 0)
     {
@@ -8204,13 +8261,6 @@ display_debug_ranges (struct dwarf_section *section,
       debug_info *debug_info_p = &debug_information[i];
       unsigned int j;
 
-      if (debug_information [i].dwarf_version < 5 && is_rnglists)
-       /* Skip .debug_rnglists reference.  */
-       continue;
-      if (debug_information [i].dwarf_version >= 5 && !is_rnglists)
-       /* Skip .debug_range reference.  */
-       continue;
-
       for (j = 0; j < debug_info_p->num_range_lists; j++)
        {
          range_entry_fill->ranges_offset = debug_info_p->range_lists[j];
@@ -8287,12 +8337,8 @@ display_debug_ranges (struct dwarf_section *section,
       start = next;
       last_start = next;
 
-      if (is_rnglists)
-       display_debug_rnglists_list
-         (start, finish, pointer_size, offset, base_address, offset_size);
-      else
-       display_debug_ranges_list
-         (start, finish, pointer_size, offset, base_address);
+      display_debug_ranges_list
+       (start, finish, pointer_size, offset, base_address);
     }
   putchar ('\n');
 
index 7ef73b24dc9d1042b065aff60d95dae91da7fbe9..dc879830f46a32d5b16039510a62dcc18480fa81 100644 (file)
@@ -30,13 +30,13 @@ Contents of the .debug_info.dwo section:
     <a5>   DW_AT_decl_file   : 1
     <a6>   DW_AT_decl_line   : 30
     <a7>   DW_AT_type        : <0x90>
-    <ab>   DW_AT_low_pc      : (addr_index: 0x0): 0
+    <ab>   DW_AT_low_pc      : (index: 0x0): 0
     <ac>   DW_AT_high_pc     : 0x304
     <b4>   DW_AT_frame_base  : 1 byte block: 9c        (DW_OP_call_frame_cfa)
     <b6>   DW_AT_GNU_all_tail_call_sites: 1
     <b6>   DW_AT_sibling     : <0x11b>
  <2><ba>: Abbrev Number: 14 (DW_TAG_lexical_block)
-    <bb>   DW_AT_low_pc      : (addr_index: 0x1): 0
+    <bb>   DW_AT_low_pc      : (index: 0x1): 0
     <bc>   DW_AT_high_pc     : 0x2fa
  <3><c4>: Abbrev Number: 15 (DW_TAG_variable)
     <c5>   DW_AT_name        : c1
@@ -56,7 +56,7 @@ Contents of the .debug_info.dwo section:
     <ff>   DW_AT_artificial  : 1
     <ff>   DW_AT_location    : 2 byte block: fb 2      (DW_OP_GNU_addr_index <0x2>)
  <3><102>: Abbrev Number: 14 (DW_TAG_lexical_block)
-    <103>   DW_AT_low_pc      : (addr_index: 0x3): 0
+    <103>   DW_AT_low_pc      : (index: 0x3): 0
     <104>   DW_AT_high_pc     : 0x2f
  <4><10c>: Abbrev Number: 17 (DW_TAG_variable)
     <10d>   DW_AT_name        : i
@@ -274,7 +274,7 @@ Contents of the .debug_info.dwo section:
     <2dd>   DW_AT_decl_file   : 1
     <2de>   DW_AT_decl_line   : 70
     <2df>   DW_AT_linkage_name: _Z4f13iv
-    <2e8>   DW_AT_low_pc      : (addr_index: 0x0): 0
+    <2e8>   DW_AT_low_pc      : (index: 0x0): 0
     <2e9>   DW_AT_high_pc     : 0x6
     <2f1>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <2f3>   DW_AT_GNU_all_call_sites: 1
@@ -282,7 +282,7 @@ Contents of the .debug_info.dwo section:
     <2f4>   DW_AT_specification: <0x219>
     <2f8>   DW_AT_decl_file   : 2
     <2f9>   DW_AT_decl_line   : 30
-    <2fa>   DW_AT_low_pc      : (addr_index: 0x1): 0
+    <2fa>   DW_AT_low_pc      : (index: 0x1): 0
     <2fb>   DW_AT_high_pc     : 0x20
     <303>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <305>   DW_AT_object_pointer: <0x30d>
@@ -300,7 +300,7 @@ Contents of the .debug_info.dwo section:
     <31d>   DW_AT_specification: <0x223>
     <321>   DW_AT_decl_file   : 2
     <322>   DW_AT_decl_line   : 38
-    <323>   DW_AT_low_pc      : (addr_index: 0x2): 0
+    <323>   DW_AT_low_pc      : (index: 0x2): 0
     <324>   DW_AT_high_pc     : 0x18
     <32c>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <32e>   DW_AT_object_pointer: <0x336>
@@ -316,7 +316,7 @@ Contents of the .debug_info.dwo section:
     <341>   DW_AT_specification: <0x22d>
     <345>   DW_AT_decl_file   : 2
     <346>   DW_AT_decl_line   : 46
-    <347>   DW_AT_low_pc      : (addr_index: 0x3): 0
+    <347>   DW_AT_low_pc      : (index: 0x3): 0
     <348>   DW_AT_high_pc     : 0x18
     <350>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <352>   DW_AT_object_pointer: <0x35a>
@@ -332,7 +332,7 @@ Contents of the .debug_info.dwo section:
     <365>   DW_AT_specification: <0x237>
     <369>   DW_AT_decl_file   : 2
     <36a>   DW_AT_decl_line   : 54
-    <36b>   DW_AT_low_pc      : (addr_index: 0x4): 0
+    <36b>   DW_AT_low_pc      : (index: 0x4): 0
     <36c>   DW_AT_high_pc     : 0x16
     <374>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <376>   DW_AT_object_pointer: <0x37e>
@@ -348,7 +348,7 @@ Contents of the .debug_info.dwo section:
     <389>   DW_AT_specification: <0x26b>
     <38d>   DW_AT_decl_file   : 2
     <38e>   DW_AT_decl_line   : 62
-    <38f>   DW_AT_low_pc      : (addr_index: 0x5): 0
+    <38f>   DW_AT_low_pc      : (index: 0x5): 0
     <390>   DW_AT_high_pc     : 0x16
     <398>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <39a>   DW_AT_object_pointer: <0x3a2>
@@ -366,7 +366,7 @@ Contents of the .debug_info.dwo section:
     <3b2>   DW_AT_specification: <0x275>
     <3b6>   DW_AT_decl_file   : 2
     <3b7>   DW_AT_decl_line   : 72
-    <3b8>   DW_AT_low_pc      : (addr_index: 0x6): 0
+    <3b8>   DW_AT_low_pc      : (index: 0x6): 0
     <3b9>   DW_AT_high_pc     : 0x1b
     <3c1>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <3c3>   DW_AT_object_pointer: <0x3cb>
@@ -382,7 +382,7 @@ Contents of the .debug_info.dwo section:
     <3d6>   DW_AT_specification: <0x27f>
     <3da>   DW_AT_decl_file   : 2
     <3db>   DW_AT_decl_line   : 82
-    <3dc>   DW_AT_low_pc      : (addr_index: 0x7): 0
+    <3dc>   DW_AT_low_pc      : (index: 0x7): 0
     <3dd>   DW_AT_high_pc     : 0x1b
     <3e5>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <3e7>   DW_AT_object_pointer: <0x3ef>
@@ -398,7 +398,7 @@ Contents of the .debug_info.dwo section:
     <3fa>   DW_AT_specification: <0x289>
     <3fe>   DW_AT_decl_file   : 2
     <3ff>   DW_AT_decl_line   : 92
-    <400>   DW_AT_low_pc      : (addr_index: 0x8): 0
+    <400>   DW_AT_low_pc      : (index: 0x8): 0
     <401>   DW_AT_high_pc     : 0x19
     <409>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <40b>   DW_AT_object_pointer: <0x413>
@@ -414,7 +414,7 @@ Contents of the .debug_info.dwo section:
     <41e>   DW_AT_specification: <0x2ae>
     <422>   DW_AT_decl_file   : 2
     <423>   DW_AT_decl_line   : 102
-    <424>   DW_AT_low_pc      : (addr_index: 0x9): 0
+    <424>   DW_AT_low_pc      : (index: 0x9): 0
     <425>   DW_AT_high_pc     : 0x19
     <42d>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <42f>   DW_AT_object_pointer: <0x437>
@@ -432,7 +432,7 @@ Contents of the .debug_info.dwo section:
     <447>   DW_AT_specification: <0x2b8>
     <44b>   DW_AT_decl_file   : 2
     <44c>   DW_AT_decl_line   : 112
-    <44d>   DW_AT_low_pc      : (addr_index: 0xa): 0
+    <44d>   DW_AT_low_pc      : (index: 0xa): 0
     <44e>   DW_AT_high_pc     : 0x1f
     <456>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <458>   DW_AT_object_pointer: <0x460>
@@ -451,7 +451,7 @@ Contents of the .debug_info.dwo section:
     <471>   DW_AT_decl_line   : 120
     <472>   DW_AT_linkage_name: _Z4f11av
     <47b>   DW_AT_type        : <0x242>
-    <47f>   DW_AT_low_pc      : (addr_index: 0xb): 0
+    <47f>   DW_AT_low_pc      : (index: 0xb): 0
     <480>   DW_AT_high_pc     : 0xb
     <488>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <48a>   DW_AT_GNU_all_call_sites: 1
@@ -459,7 +459,7 @@ Contents of the .debug_info.dwo section:
     <48b>   DW_AT_specification: <0x2c2>
     <48f>   DW_AT_decl_file   : 2
     <490>   DW_AT_decl_line   : 126
-    <491>   DW_AT_low_pc      : (addr_index: 0xc): 0
+    <491>   DW_AT_low_pc      : (index: 0xc): 0
     <492>   DW_AT_high_pc     : 0x20
     <49a>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <49c>   DW_AT_object_pointer: <0x4a4>
@@ -478,7 +478,7 @@ Contents of the .debug_info.dwo section:
     <4b4>   DW_AT_decl_line   : 134
     <4b5>   DW_AT_linkage_name: _Z3t12v
     <4bd>   DW_AT_type        : <0x249>
-    <4c1>   DW_AT_low_pc      : (addr_index: 0xd): 0
+    <4c1>   DW_AT_low_pc      : (index: 0xd): 0
     <4c2>   DW_AT_high_pc     : 0x19
     <4ca>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <4cc>   DW_AT_GNU_all_tail_call_sites: 1
@@ -489,7 +489,7 @@ Contents of the .debug_info.dwo section:
     <4d2>   DW_AT_decl_line   : 142
     <4d3>   DW_AT_linkage_name: _Z3t13v
     <4db>   DW_AT_type        : <0x249>
-    <4df>   DW_AT_low_pc      : (addr_index: 0xe): 0
+    <4df>   DW_AT_low_pc      : (index: 0xe): 0
     <4e0>   DW_AT_high_pc     : 0x14
     <4e8>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <4ea>   DW_AT_GNU_all_tail_call_sites: 1
@@ -500,13 +500,13 @@ Contents of the .debug_info.dwo section:
     <4f0>   DW_AT_decl_line   : 150
     <4f1>   DW_AT_linkage_name: _Z3t14v
     <4f9>   DW_AT_type        : <0x249>
-    <4fd>   DW_AT_low_pc      : (addr_index: 0xf): 0
+    <4fd>   DW_AT_low_pc      : (index: 0xf): 0
     <4fe>   DW_AT_high_pc     : 0x61
     <506>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <508>   DW_AT_GNU_all_tail_call_sites: 1
     <508>   DW_AT_sibling     : <0x532>
  <2><50c>: Abbrev Number: 24 (DW_TAG_lexical_block)
-    <50d>   DW_AT_low_pc      : (addr_index: 0x10): 0
+    <50d>   DW_AT_low_pc      : (index: 0x10): 0
     <50e>   DW_AT_high_pc     : 0x57
  <3><516>: Abbrev Number: 25 (DW_TAG_variable)
     <517>   DW_AT_name        : s1
@@ -538,13 +538,13 @@ Contents of the .debug_info.dwo section:
     <54b>   DW_AT_decl_line   : 163
     <54c>   DW_AT_linkage_name: _Z3t15v
     <554>   DW_AT_type        : <0x249>
-    <558>   DW_AT_low_pc      : (addr_index: 0x11): 0
+    <558>   DW_AT_low_pc      : (index: 0x11): 0
     <559>   DW_AT_high_pc     : 0x5d
     <561>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <563>   DW_AT_GNU_all_tail_call_sites: 1
     <563>   DW_AT_sibling     : <0x58d>
  <2><567>: Abbrev Number: 24 (DW_TAG_lexical_block)
-    <568>   DW_AT_low_pc      : (addr_index: 0x12): 0
+    <568>   DW_AT_low_pc      : (index: 0x12): 0
     <569>   DW_AT_high_pc     : 0x53
  <3><571>: Abbrev Number: 25 (DW_TAG_variable)
     <572>   DW_AT_name        : s1
@@ -576,7 +576,7 @@ Contents of the .debug_info.dwo section:
     <5a9>   DW_AT_decl_line   : 176
     <5aa>   DW_AT_linkage_name: _Z3t16v
     <5b2>   DW_AT_type        : <0x249>
-    <5b6>   DW_AT_low_pc      : (addr_index: 0x13): 0
+    <5b6>   DW_AT_low_pc      : (index: 0x13): 0
     <5b7>   DW_AT_high_pc     : 0x13
     <5bf>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <5c1>   DW_AT_GNU_all_tail_call_sites: 1
@@ -587,13 +587,13 @@ Contents of the .debug_info.dwo section:
     <5c7>   DW_AT_decl_line   : 184
     <5c8>   DW_AT_linkage_name: _Z3t17v
     <5d0>   DW_AT_type        : <0x249>
-    <5d4>   DW_AT_low_pc      : (addr_index: 0x14): 0
+    <5d4>   DW_AT_low_pc      : (index: 0x14): 0
     <5d5>   DW_AT_high_pc     : 0x5f
     <5dd>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <5df>   DW_AT_GNU_all_call_sites: 1
     <5df>   DW_AT_sibling     : <0x612>
  <2><5e3>: Abbrev Number: 24 (DW_TAG_lexical_block)
-    <5e4>   DW_AT_low_pc      : (addr_index: 0x15): 0
+    <5e4>   DW_AT_low_pc      : (index: 0x15): 0
     <5e5>   DW_AT_high_pc     : 0x59
  <3><5ed>: Abbrev Number: 25 (DW_TAG_variable)
     <5ee>   DW_AT_name        : c
@@ -602,7 +602,7 @@ Contents of the .debug_info.dwo section:
     <5f2>   DW_AT_type        : <0x53d>
     <5f6>   DW_AT_location    : 2 byte block: 91 6f    (DW_OP_fbreg: -17)
  <3><5f9>: Abbrev Number: 24 (DW_TAG_lexical_block)
-    <5fa>   DW_AT_low_pc      : (addr_index: 0x16): 0
+    <5fa>   DW_AT_low_pc      : (index: 0x16): 0
     <5fb>   DW_AT_high_pc     : 0x50
  <4><603>: Abbrev Number: 25 (DW_TAG_variable)
     <604>   DW_AT_name        : i
@@ -620,13 +620,13 @@ Contents of the .debug_info.dwo section:
     <618>   DW_AT_decl_line   : 199
     <619>   DW_AT_linkage_name: _Z3t18v
     <621>   DW_AT_type        : <0x249>
-    <625>   DW_AT_low_pc      : (addr_index: 0x17): 0
+    <625>   DW_AT_low_pc      : (index: 0x17): 0
     <626>   DW_AT_high_pc     : 0x5f
     <62e>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <630>   DW_AT_GNU_all_tail_call_sites: 1
     <630>   DW_AT_sibling     : <0x67a>
  <2><634>: Abbrev Number: 24 (DW_TAG_lexical_block)
-    <635>   DW_AT_low_pc      : (addr_index: 0x18): 0
+    <635>   DW_AT_low_pc      : (index: 0x18): 0
     <636>   DW_AT_high_pc     : 0x55
  <3><63e>: Abbrev Number: 25 (DW_TAG_variable)
     <63f>   DW_AT_name        : c
@@ -635,7 +635,7 @@ Contents of the .debug_info.dwo section:
     <643>   DW_AT_type        : <0x53d>
     <647>   DW_AT_location    : 2 byte block: 91 6f    (DW_OP_fbreg: -17)
  <3><64a>: Abbrev Number: 24 (DW_TAG_lexical_block)
-    <64b>   DW_AT_low_pc      : (addr_index: 0x19): 0
+    <64b>   DW_AT_low_pc      : (index: 0x19): 0
     <64c>   DW_AT_high_pc     : 0x4c
  <4><654>: Abbrev Number: 25 (DW_TAG_variable)
     <655>   DW_AT_name        : i
@@ -644,7 +644,7 @@ Contents of the .debug_info.dwo section:
     <659>   DW_AT_type        : <0x242>
     <65d>   DW_AT_location    : 2 byte block: 91 68    (DW_OP_fbreg: -24)
  <4><660>: Abbrev Number: 24 (DW_TAG_lexical_block)
-    <661>   DW_AT_low_pc      : (addr_index: 0x1a): 0
+    <661>   DW_AT_low_pc      : (index: 0x1a): 0
     <662>   DW_AT_high_pc     : 0x34
  <5><66a>: Abbrev Number: 25 (DW_TAG_variable)
     <66b>   DW_AT_name        : s
@@ -786,7 +786,7 @@ Contents of the .debug_info.dwo section:
     <7d3>   DW_AT_decl_line   : 32
     <7d4>   DW_AT_linkage_name: _Z4t16av
     <7dd>   DW_AT_type        : <0x7c4>
-    <7e1>   DW_AT_low_pc      : (addr_index: 0x0): 0
+    <7e1>   DW_AT_low_pc      : (index: 0x0): 0
     <7e2>   DW_AT_high_pc     : 0x13
     <7ea>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <7ec>   DW_AT_GNU_all_tail_call_sites: 1
@@ -878,14 +878,14 @@ Contents of the .debug_info.dwo section:
     <908>   DW_AT_decl_file   : 1
     <909>   DW_AT_decl_line   : 70
     <90a>   DW_AT_linkage_name: _Z4f13iv
-    <913>   DW_AT_low_pc      : (addr_index: 0x0): 0
+    <913>   DW_AT_low_pc      : (index: 0x0): 0
     <914>   DW_AT_high_pc     : 0x6
     <91c>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <91e>   DW_AT_GNU_all_call_sites: 1
  <1><91e>: Abbrev Number: 17 (DW_TAG_subprogram)
     <91f>   DW_AT_specification: <0x8a8>
     <923>   DW_AT_decl_file   : 2
-    <924>   DW_AT_low_pc      : (addr_index: 0x1): 0
+    <924>   DW_AT_low_pc      : (index: 0x1): 0
     <925>   DW_AT_high_pc     : 0xf
     <92d>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <92f>   DW_AT_object_pointer: <0x937>
@@ -903,7 +903,7 @@ Contents of the .debug_info.dwo section:
     <94b>   DW_AT_specification: <0x89b>
     <94f>   DW_AT_decl_file   : 2
     <950>   DW_AT_decl_line   : 36
-    <951>   DW_AT_low_pc      : (addr_index: 0x2): 0
+    <951>   DW_AT_low_pc      : (index: 0x2): 0
     <952>   DW_AT_high_pc     : 0x20
     <95a>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <95c>   DW_AT_object_pointer: <0x964>
@@ -922,7 +922,7 @@ Contents of the .debug_info.dwo section:
     <978>   DW_AT_decl_line   : 72
     <979>   DW_AT_linkage_name: _Z3f10v
     <981>   DW_AT_type        : <0x8b7>
-    <985>   DW_AT_low_pc      : (addr_index: 0x3): 0
+    <985>   DW_AT_low_pc      : (index: 0x3): 0
     <986>   DW_AT_high_pc     : 0xb
     <98e>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <990>   DW_AT_GNU_all_call_sites: 1
@@ -933,7 +933,7 @@ Contents of the .debug_info.dwo section:
     <997>   DW_AT_decl_line   : 80
     <998>   DW_AT_linkage_name: _Z4f11bPFivE
     <9a5>   DW_AT_type        : <0x8b7>
-    <9a9>   DW_AT_low_pc      : (addr_index: 0x4): 0
+    <9a9>   DW_AT_low_pc      : (index: 0x4): 0
     <9aa>   DW_AT_high_pc     : 0x14
     <9b2>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <9b4>   DW_AT_GNU_all_tail_call_sites: 1
@@ -954,7 +954,7 @@ Contents of the .debug_info.dwo section:
     <9d3>   DW_AT_specification: <0x8e0>
     <9d7>   DW_AT_decl_file   : 2
     <9d8>   DW_AT_decl_line   : 88
-    <9d9>   DW_AT_low_pc      : (addr_index: 0x5): 0
+    <9d9>   DW_AT_low_pc      : (index: 0x5): 0
     <9da>   DW_AT_high_pc     : 0xf
     <9e2>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <9e4>   DW_AT_object_pointer: <0x9ec>
@@ -976,7 +976,7 @@ Contents of the .debug_info.dwo section:
     <a06>   DW_AT_decl_line   : 96
     <a07>   DW_AT_linkage_name: _Z3f13v
     <a0f>   DW_AT_type        : <0xa1e>
-    <a13>   DW_AT_low_pc      : (addr_index: 0x6): 0
+    <a13>   DW_AT_low_pc      : (index: 0x6): 0
     <a14>   DW_AT_high_pc     : 0xb
     <a1c>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <a1e>   DW_AT_GNU_all_call_sites: 1
@@ -990,7 +990,7 @@ Contents of the .debug_info.dwo section:
     <a2a>   DW_AT_decl_line   : 104
     <a2b>   DW_AT_linkage_name: _Z3f14v
     <a33>   DW_AT_type        : <0xa42>
-    <a37>   DW_AT_low_pc      : (addr_index: 0x7): 0
+    <a37>   DW_AT_low_pc      : (index: 0x7): 0
     <a38>   DW_AT_high_pc     : 0xb
     <a40>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <a42>   DW_AT_GNU_all_call_sites: 1
@@ -1010,7 +1010,7 @@ Contents of the .debug_info.dwo section:
     <a5b>   DW_AT_decl_line   : 112
     <a5c>   DW_AT_linkage_name: _Z3f15v
     <a64>   DW_AT_type        : <0xa73>
-    <a68>   DW_AT_low_pc      : (addr_index: 0x8): 0
+    <a68>   DW_AT_low_pc      : (index: 0x8): 0
     <a69>   DW_AT_high_pc     : 0xb
     <a71>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <a73>   DW_AT_GNU_all_call_sites: 1
@@ -1030,7 +1030,7 @@ Contents of the .debug_info.dwo section:
     <a8f>   DW_AT_decl_line   : 127
     <a90>   DW_AT_linkage_name: _Z3f18i
     <a98>   DW_AT_type        : <0xa42>
-    <a9c>   DW_AT_low_pc      : (addr_index: 0x9): 0
+    <a9c>   DW_AT_low_pc      : (index: 0x9): 0
     <a9d>   DW_AT_high_pc     : 0x44
     <aa5>   DW_AT_frame_base  : 1 byte block: 9c       (DW_OP_call_frame_cfa)
     <aa7>   DW_AT_GNU_all_call_sites: 1