[binutils-gdb] Fix signedness of def_cfa_sf and def_cfa_offset_sf
Nick Clifton
nickc@sourceware.org
Wed Jun 30 11:12:23 GMT 2021
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=280c57ff58f8cb7c70d47ffbfeb446ca9b562c96
commit 280c57ff58f8cb7c70d47ffbfeb446ca9b562c96
Author: Richard Henderson <richard.henderson@linaro.org>
Date: Wed Jun 30 12:11:54 2021 +0100
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.
Diff:
---
binutils/ChangeLog | 5 +++++
binutils/dwarf.c | 16 +++++++++-------
2 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index c6a05ca6b3e..b5dedef26ee 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -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
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index a57f0dab6b2..a61f099e3f2 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -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:
More information about the Binutils-cvs
mailing list