mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 18:08:24 +08:00
Use consistent type in binutils/dwarf.c
If you look at the type used for implicit_const objects in binutils/dwarf.c, you'll get sometimes bfd_signed_vma and sometimes dwarf_signed_vma. They are the same on 64-bit hosts, but not on 32-bit hosts, and the latter discrepancy, in particular in process_abbrev_set, is responsible for the following error issued by objdump on some object files containing DWARF 5: binutils/dwarf.c:1108: read LEB value is too large to store in destination variable binutis/ * dwarf.c (struct abbrev_attr): Change type of implicit_const. (add_abbrev_attr): Likewise. (process_abbrev_set): Likewise. (display_debug_abbrev): Adjust to above change.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2021-06-14 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
|
* dwarf.c (struct abbrev_attr): Change type of implicit_const.
|
||||||
|
(add_abbrev_attr): Likewise.
|
||||||
|
(process_abbrev_set): Likewise.
|
||||||
|
(display_debug_abbrev): Adjust to above change.
|
||||||
|
|
||||||
2021-06-12 Alan Modra <amodra@gmail.com>
|
2021-06-12 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* readelf.c (process_file_header): Don't clear section_headers.
|
* readelf.c (process_file_header): Don't clear section_headers.
|
||||||
|
@ -823,7 +823,7 @@ typedef struct abbrev_attr
|
|||||||
{
|
{
|
||||||
unsigned long attribute;
|
unsigned long attribute;
|
||||||
unsigned long form;
|
unsigned long form;
|
||||||
bfd_signed_vma implicit_const;
|
dwarf_signed_vma implicit_const;
|
||||||
struct abbrev_attr * next;
|
struct abbrev_attr * next;
|
||||||
}
|
}
|
||||||
abbrev_attr;
|
abbrev_attr;
|
||||||
@ -1000,7 +1000,7 @@ add_abbrev (unsigned long number,
|
|||||||
static void
|
static void
|
||||||
add_abbrev_attr (unsigned long attribute,
|
add_abbrev_attr (unsigned long attribute,
|
||||||
unsigned long form,
|
unsigned long form,
|
||||||
bfd_signed_vma implicit_const,
|
dwarf_signed_vma implicit_const,
|
||||||
abbrev_list * list)
|
abbrev_list * list)
|
||||||
{
|
{
|
||||||
abbrev_attr *attr;
|
abbrev_attr *attr;
|
||||||
@ -1085,7 +1085,7 @@ process_abbrev_set (struct dwarf_section *section,
|
|||||||
{
|
{
|
||||||
unsigned long form;
|
unsigned long form;
|
||||||
/* Initialize it due to a false compiler warning. */
|
/* Initialize it due to a false compiler warning. */
|
||||||
bfd_signed_vma implicit_const = -1;
|
dwarf_signed_vma implicit_const = -1;
|
||||||
|
|
||||||
READ_ULEB (attribute, start, end);
|
READ_ULEB (attribute, start, end);
|
||||||
if (start == end)
|
if (start == end)
|
||||||
@ -6255,7 +6255,7 @@ display_debug_abbrev (struct dwarf_section *section,
|
|||||||
get_AT_name (attr->attribute),
|
get_AT_name (attr->attribute),
|
||||||
get_FORM_name (attr->form));
|
get_FORM_name (attr->form));
|
||||||
if (attr->form == DW_FORM_implicit_const)
|
if (attr->form == DW_FORM_implicit_const)
|
||||||
printf (": %" BFD_VMA_FMT "d", attr->implicit_const);
|
printf (": %s", dwarf_vmatoa ("d", attr->implicit_const));
|
||||||
putchar ('\n');
|
putchar ('\n');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user