mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-25 13:27:26 +08:00
Use dwarf_vma type for offsets, ranges and section sizes in DWARF decoder.
* dwarf.c (find_debug_info_for_offset): Use dwarf_vma type for offsets, sizes and ranges. (display_loc_list): Likewise. Also use print_dwarf_vma to print the offset. (display_loclists_list): Likewise. (display_loc_list_dwo): Likewise. (display_debug_str): Likewise. (display_debug_aranges): Likewise. (display_debug_ranges_list): Likewise. (display_debug_rnglists_list): Likewise. (display_debug_ranges): Likewise.
This commit is contained in:
@ -1,3 +1,17 @@
|
|||||||
|
2021-11-30 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* dwarf.c (find_debug_info_for_offset): Use dwarf_vma type for
|
||||||
|
offsets, sizes and ranges.
|
||||||
|
(display_loc_list): Likewise. Also use print_dwarf_vma to print
|
||||||
|
the offset.
|
||||||
|
(display_loclists_list): Likewise.
|
||||||
|
(display_loc_list_dwo): Likewise.
|
||||||
|
(display_debug_str): Likewise.
|
||||||
|
(display_debug_aranges): Likewise.
|
||||||
|
(display_debug_ranges_list): Likewise.
|
||||||
|
(display_debug_rnglists_list): Likewise.
|
||||||
|
(display_debug_ranges): Likewise.
|
||||||
|
|
||||||
2021-11-29 Nick Clifton <nickc@redhat.com>
|
2021-11-29 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
PR 28632
|
PR 28632
|
||||||
|
@ -5574,7 +5574,7 @@ display_debug_lines (struct dwarf_section *section, void *file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static debug_info *
|
static debug_info *
|
||||||
find_debug_info_for_offset (unsigned long offset)
|
find_debug_info_for_offset (dwarf_vma offset)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
@ -6330,11 +6330,10 @@ display_loc_list (struct dwarf_section *section,
|
|||||||
{
|
{
|
||||||
unsigned char *start = *start_ptr, *vstart = *vstart_ptr;
|
unsigned char *start = *start_ptr, *vstart = *vstart_ptr;
|
||||||
unsigned char *section_end = section->start + section->size;
|
unsigned char *section_end = section->start + section->size;
|
||||||
unsigned long cu_offset;
|
dwarf_vma cu_offset;
|
||||||
unsigned int pointer_size;
|
unsigned int pointer_size;
|
||||||
unsigned int offset_size;
|
unsigned int offset_size;
|
||||||
int dwarf_version;
|
int dwarf_version;
|
||||||
|
|
||||||
dwarf_vma begin;
|
dwarf_vma begin;
|
||||||
dwarf_vma end;
|
dwarf_vma end;
|
||||||
unsigned short length;
|
unsigned short length;
|
||||||
@ -6371,7 +6370,8 @@ display_loc_list (struct dwarf_section *section,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf (" %8.8lx ", (unsigned long) off);
|
printf (" ");
|
||||||
|
print_dwarf_vma (off, 4);
|
||||||
|
|
||||||
SAFE_BYTE_GET_AND_INC (begin, start, pointer_size, section_end);
|
SAFE_BYTE_GET_AND_INC (begin, start, pointer_size, section_end);
|
||||||
SAFE_BYTE_GET_AND_INC (end, start, pointer_size, section_end);
|
SAFE_BYTE_GET_AND_INC (end, start, pointer_size, section_end);
|
||||||
@ -6475,7 +6475,7 @@ display_loclists_list (struct dwarf_section *section,
|
|||||||
{
|
{
|
||||||
unsigned char *start = *start_ptr, *vstart = *vstart_ptr;
|
unsigned char *start = *start_ptr, *vstart = *vstart_ptr;
|
||||||
unsigned char *section_end = section->start + section->size;
|
unsigned char *section_end = section->start + section->size;
|
||||||
unsigned long cu_offset;
|
dwarf_vma cu_offset;
|
||||||
unsigned int pointer_size;
|
unsigned int pointer_size;
|
||||||
unsigned int offset_size;
|
unsigned int offset_size;
|
||||||
int dwarf_version;
|
int dwarf_version;
|
||||||
@ -6518,7 +6518,8 @@ display_loclists_list (struct dwarf_section *section,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf (" %8.8lx ", (unsigned long) off);
|
printf (" ");
|
||||||
|
print_dwarf_vma (off, 4);
|
||||||
|
|
||||||
SAFE_BYTE_GET_AND_INC (llet, start, 1, section_end);
|
SAFE_BYTE_GET_AND_INC (llet, start, 1, section_end);
|
||||||
|
|
||||||
@ -6661,7 +6662,7 @@ display_loc_list_dwo (struct dwarf_section *section,
|
|||||||
{
|
{
|
||||||
unsigned char *start = *start_ptr, *vstart = *vstart_ptr;
|
unsigned char *start = *start_ptr, *vstart = *vstart_ptr;
|
||||||
unsigned char *section_end = section->start + section->size;
|
unsigned char *section_end = section->start + section->size;
|
||||||
unsigned long cu_offset;
|
dwarf_vma cu_offset;
|
||||||
unsigned int pointer_size;
|
unsigned int pointer_size;
|
||||||
unsigned int offset_size;
|
unsigned int offset_size;
|
||||||
int dwarf_version;
|
int dwarf_version;
|
||||||
@ -6691,7 +6692,8 @@ display_loc_list_dwo (struct dwarf_section *section,
|
|||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
printf (" %8.8lx ", (unsigned long) (offset + (start - *start_ptr)));
|
printf (" ");
|
||||||
|
print_dwarf_vma (offset + (start - *start_ptr), 4);
|
||||||
|
|
||||||
if (start >= section_end)
|
if (start >= section_end)
|
||||||
{
|
{
|
||||||
@ -6829,11 +6831,11 @@ static int
|
|||||||
display_debug_loc (struct dwarf_section *section, void *file)
|
display_debug_loc (struct dwarf_section *section, void *file)
|
||||||
{
|
{
|
||||||
unsigned char *start = section->start, *vstart = NULL;
|
unsigned char *start = section->start, *vstart = NULL;
|
||||||
unsigned long bytes;
|
dwarf_vma bytes;
|
||||||
unsigned char *section_begin = start;
|
unsigned char *section_begin = start;
|
||||||
unsigned int num_loc_list = 0;
|
unsigned int num_loc_list = 0;
|
||||||
unsigned long last_offset = 0;
|
dwarf_vma last_offset = 0;
|
||||||
unsigned long last_view = 0;
|
dwarf_vma last_view = 0;
|
||||||
unsigned int first = 0;
|
unsigned int first = 0;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
@ -7105,7 +7107,7 @@ display_debug_str (struct dwarf_section *section,
|
|||||||
void *file ATTRIBUTE_UNUSED)
|
void *file ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
unsigned char *start = section->start;
|
unsigned char *start = section->start;
|
||||||
unsigned long bytes = section->size;
|
dwarf_vma bytes = section->size;
|
||||||
dwarf_vma addr = section->address;
|
dwarf_vma addr = section->address;
|
||||||
|
|
||||||
if (bytes == 0)
|
if (bytes == 0)
|
||||||
@ -7196,7 +7198,7 @@ display_debug_aranges (struct dwarf_section *section,
|
|||||||
unsigned char *addr_ranges;
|
unsigned char *addr_ranges;
|
||||||
dwarf_vma length;
|
dwarf_vma length;
|
||||||
dwarf_vma address;
|
dwarf_vma address;
|
||||||
unsigned long sec_off;
|
dwarf_vma sec_off;
|
||||||
unsigned char address_size;
|
unsigned char address_size;
|
||||||
unsigned int offset_size;
|
unsigned int offset_size;
|
||||||
unsigned char *end_ranges;
|
unsigned char *end_ranges;
|
||||||
@ -7217,7 +7219,7 @@ display_debug_aranges (struct dwarf_section *section,
|
|||||||
{
|
{
|
||||||
warn (_("Debug info is corrupted, %s header at %#lx has length %s\n"),
|
warn (_("Debug info is corrupted, %s header at %#lx has length %s\n"),
|
||||||
section->name,
|
section->name,
|
||||||
sec_off,
|
(unsigned long) sec_off,
|
||||||
dwarf_vmatoa ("x", arange.ar_length));
|
dwarf_vmatoa ("x", arange.ar_length));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -7556,9 +7558,11 @@ range_entry_compar (const void *ap, const void *bp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
display_debug_ranges_list (unsigned char *start, unsigned char *finish,
|
display_debug_ranges_list (unsigned char * start,
|
||||||
unsigned int pointer_size, unsigned long offset,
|
unsigned char * finish,
|
||||||
unsigned long base_address)
|
unsigned int pointer_size,
|
||||||
|
dwarf_vma offset,
|
||||||
|
dwarf_vma base_address)
|
||||||
{
|
{
|
||||||
while (start < finish)
|
while (start < finish)
|
||||||
{
|
{
|
||||||
@ -7570,7 +7574,8 @@ display_debug_ranges_list (unsigned char *start, unsigned char *finish,
|
|||||||
break;
|
break;
|
||||||
SAFE_SIGNED_BYTE_GET_AND_INC (end, start, pointer_size, finish);
|
SAFE_SIGNED_BYTE_GET_AND_INC (end, start, pointer_size, finish);
|
||||||
|
|
||||||
printf (" %8.8lx ", offset);
|
printf (" ");
|
||||||
|
print_dwarf_vma (offset, 4);
|
||||||
|
|
||||||
if (begin == 0 && end == 0)
|
if (begin == 0 && end == 0)
|
||||||
{
|
{
|
||||||
@ -7602,27 +7607,30 @@ display_debug_ranges_list (unsigned char *start, unsigned char *finish,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
display_debug_rnglists_list (unsigned char *start, unsigned char *finish,
|
display_debug_rnglists_list (unsigned char * start,
|
||||||
unsigned int pointer_size, unsigned long offset,
|
unsigned char * finish,
|
||||||
unsigned long base_address)
|
unsigned int pointer_size,
|
||||||
|
dwarf_vma offset,
|
||||||
|
dwarf_vma base_address)
|
||||||
{
|
{
|
||||||
unsigned char *next = start;
|
unsigned char *next = start;
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
unsigned long off = offset + (start - next);
|
dwarf_vma off = offset + (start - next);
|
||||||
enum dwarf_range_list_entry rlet;
|
enum dwarf_range_list_entry rlet;
|
||||||
/* Initialize it due to a false compiler warning. */
|
/* Initialize it due to a false compiler warning. */
|
||||||
dwarf_vma begin = -1, length, end = -1;
|
dwarf_vma begin = -1, length, end = -1;
|
||||||
|
|
||||||
if (start >= finish)
|
if (start >= finish)
|
||||||
{
|
{
|
||||||
warn (_("Range list starting at offset 0x%lx is not terminated.\n"),
|
warn (_("Range list starting at offset 0x%s is not terminated.\n"),
|
||||||
offset);
|
dwarf_vmatoa ("x", offset));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf (" %8.8lx ", off);
|
printf (" ");
|
||||||
|
print_dwarf_vma (off, 4);
|
||||||
|
|
||||||
SAFE_BYTE_GET_AND_INC (rlet, start, 1, finish);
|
SAFE_BYTE_GET_AND_INC (rlet, start, 1, finish);
|
||||||
|
|
||||||
@ -7682,13 +7690,14 @@ static int
|
|||||||
display_debug_ranges (struct dwarf_section *section,
|
display_debug_ranges (struct dwarf_section *section,
|
||||||
void *file ATTRIBUTE_UNUSED)
|
void *file ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
unsigned char *start = section->start;
|
unsigned char * start = section->start;
|
||||||
unsigned char *last_start = start;
|
unsigned char * last_start = start;
|
||||||
unsigned long bytes = section->size;
|
dwarf_vma bytes = section->size;
|
||||||
unsigned char *section_begin = start;
|
unsigned char * section_begin = start;
|
||||||
unsigned char *finish = start + bytes;
|
unsigned char * finish = start + bytes;
|
||||||
unsigned int num_range_list, i;
|
unsigned int num_range_list, i;
|
||||||
struct range_entry *range_entries, *range_entry_fill;
|
struct range_entry * range_entries;
|
||||||
|
struct range_entry * range_entry_fill;
|
||||||
int is_rnglists = strstr (section->name, "debug_rnglists") != NULL;
|
int is_rnglists = strstr (section->name, "debug_rnglists") != NULL;
|
||||||
/* Initialize it due to a false compiler warning. */
|
/* Initialize it due to a false compiler warning. */
|
||||||
unsigned char address_size = 0;
|
unsigned char address_size = 0;
|
||||||
|
Reference in New Issue
Block a user