Fix signedness of def_cfa_sf and def_cfa_offset_sf

* dwarf.c (display_debug_frames): Both DW_CFA_def_cfa_sf
 and DW_CFA_def_cfa_offset_sf have a signed offset.
This commit is contained in:
Richard Henderson 2021-06-30 12:11:54 +01:00 committed by Nick Clifton
parent d8b04da736
commit 280c57ff58
2 changed files with 14 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2021-06-30 Richard Henderson <richard.henderson@linaro.org>
* dwarf.c (display_debug_frames): Both DW_CFA_def_cfa_sf
and DW_CFA_def_cfa_offset_sf have a signed offset.
2021-06-19 Alan Modra <amodra@gmail.com>
* dwarf.c (display_debug_lines_decoded): Use memcpy rather than

View File

@ -9432,19 +9432,21 @@ display_debug_frames (struct dwarf_section *section,
case DW_CFA_def_cfa_sf:
READ_ULEB (fc->cfa_reg, start, block_end);
READ_ULEB (fc->cfa_offset, start, block_end);
fc->cfa_offset = fc->cfa_offset * fc->data_factor;
READ_SLEB (l, start, block_end);
l *= fc->data_factor;
fc->cfa_offset = l;
fc->cfa_exp = 0;
if (! do_debug_frames_interp)
printf (" DW_CFA_def_cfa_sf: %s ofs %d\n",
regname (fc->cfa_reg, 0), (int) fc->cfa_offset);
printf (" DW_CFA_def_cfa_sf: %s ofs %ld\n",
regname (fc->cfa_reg, 0), (long) l);
break;
case DW_CFA_def_cfa_offset_sf:
READ_ULEB (fc->cfa_offset, start, block_end);
fc->cfa_offset *= fc->data_factor;
READ_SLEB (l, start, block_end);
l *= fc->data_factor;
fc->cfa_offset = l;
if (! do_debug_frames_interp)
printf (" DW_CFA_def_cfa_offset_sf: %d\n", (int) fc->cfa_offset);
printf (" DW_CFA_def_cfa_offset_sf: %ld\n", (long) l);
break;
case DW_CFA_MIPS_advance_loc8: