diff --git a/binutils/ChangeLog b/binutils/ChangeLog index ad9d33bb992..8d77c68b912 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2017-10-27 Simon Marchi + + * dwarf.c (struct Frame_Chunk) : Change type to + unsigned int. + (display_debug_frames): Read CFA reg as an unsigned number. + 2017-10-25 Alan Modra * nm.c (filter_symbols): Match "__gnu_lto_slim" optionally prefixed diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 06702ef42dd..873f104174d 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -6646,7 +6646,7 @@ typedef struct Frame_Chunk int data_factor; dwarf_vma pc_begin; dwarf_vma pc_range; - int cfa_reg; + unsigned int cfa_reg; dwarf_vma cfa_offset; unsigned int ra; unsigned char fde_encoding; @@ -7863,7 +7863,7 @@ display_debug_frames (struct dwarf_section *section, break; case DW_CFA_def_cfa: - READ_SLEB (fc->cfa_reg); + READ_ULEB (fc->cfa_reg); READ_ULEB (fc->cfa_offset); fc->cfa_exp = 0; if (! do_debug_frames_interp) @@ -7872,7 +7872,7 @@ display_debug_frames (struct dwarf_section *section, break; case DW_CFA_def_cfa_register: - READ_SLEB (fc->cfa_reg); + READ_ULEB (fc->cfa_reg); fc->cfa_exp = 0; if (! do_debug_frames_interp) printf (" DW_CFA_def_cfa_register: %s\n", @@ -7991,7 +7991,7 @@ display_debug_frames (struct dwarf_section *section, break; case DW_CFA_def_cfa_sf: - READ_SLEB (fc->cfa_reg); + READ_ULEB (fc->cfa_reg); READ_ULEB (fc->cfa_offset); fc->cfa_offset = fc->cfa_offset * fc->data_factor; fc->cfa_exp = 0;