From dbcbf67ca565ec29f13a2302dcdf9b01ef7832ca Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Tue, 28 Jun 2022 12:30:19 +0100 Subject: [PATCH] Fix the display of the idnex values for DW_FORM_loclistx and DW_FORM_rnglistx. Correct the display of .debug.loclists sections. 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 | 10 + binutils/dwarf.c | 218 +++++++++++------- .../binutils-all/x86-64/pr26808.dump | 82 +++---- 3 files changed, 183 insertions(+), 127 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index c543e5b9d1b..17c23531e83 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,13 @@ +2022-06-28 Nick Clifton + + 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 PR 29289 diff --git a/binutils/dwarf.c b/binutils/dwarf.c index b99c56987da..84200ae4078 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -763,7 +763,7 @@ fetch_indexed_addr (dwarf_vma offset, uint32_t num_bytes) if (section->start == NULL) { - warn (_("")); + 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'); diff --git a/binutils/testsuite/binutils-all/x86-64/pr26808.dump b/binutils/testsuite/binutils-all/x86-64/pr26808.dump index 7ef73b24dc9..dc879830f46 100644 --- a/binutils/testsuite/binutils-all/x86-64/pr26808.dump +++ b/binutils/testsuite/binutils-all/x86-64/pr26808.dump @@ -30,13 +30,13 @@ Contents of the .debug_info.dwo section: DW_AT_decl_file : 1 DW_AT_decl_line : 30 DW_AT_type : <0x90> - DW_AT_low_pc : (addr_index: 0x0): 0 + DW_AT_low_pc : (index: 0x0): 0 DW_AT_high_pc : 0x304 DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa) DW_AT_GNU_all_tail_call_sites: 1 DW_AT_sibling : <0x11b> <2>: Abbrev Number: 14 (DW_TAG_lexical_block) - DW_AT_low_pc : (addr_index: 0x1): 0 + DW_AT_low_pc : (index: 0x1): 0 DW_AT_high_pc : 0x2fa <3>: Abbrev Number: 15 (DW_TAG_variable) DW_AT_name : c1 @@ -56,7 +56,7 @@ Contents of the .debug_info.dwo section: DW_AT_artificial : 1 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: DW_AT_decl_line : 96 DW_AT_linkage_name: _Z3f13v DW_AT_type : <0xa1e> - DW_AT_low_pc : (addr_index: 0x6): 0 + DW_AT_low_pc : (index: 0x6): 0 DW_AT_high_pc : 0xb DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa) DW_AT_GNU_all_call_sites: 1 @@ -990,7 +990,7 @@ Contents of the .debug_info.dwo section: DW_AT_decl_line : 104 DW_AT_linkage_name: _Z3f14v DW_AT_type : <0xa42> - DW_AT_low_pc : (addr_index: 0x7): 0 + DW_AT_low_pc : (index: 0x7): 0 DW_AT_high_pc : 0xb DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa) DW_AT_GNU_all_call_sites: 1 @@ -1010,7 +1010,7 @@ Contents of the .debug_info.dwo section: DW_AT_decl_line : 112 DW_AT_linkage_name: _Z3f15v DW_AT_type : <0xa73> - DW_AT_low_pc : (addr_index: 0x8): 0 + DW_AT_low_pc : (index: 0x8): 0 DW_AT_high_pc : 0xb DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa) DW_AT_GNU_all_call_sites: 1 @@ -1030,7 +1030,7 @@ Contents of the .debug_info.dwo section: DW_AT_decl_line : 127 DW_AT_linkage_name: _Z3f18i DW_AT_type : <0xa42> - DW_AT_low_pc : (addr_index: 0x9): 0 + DW_AT_low_pc : (index: 0x9): 0 DW_AT_high_pc : 0x44 DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa) DW_AT_GNU_all_call_sites: 1 -- 2.30.2