diff options
author | Aaron Robinson <arobins@microsoft.com> | 2022-03-09 17:29:26 -0800 |
---|---|---|
committer | Dave Watson <dade.watson@gmail.com> | 2022-05-22 10:58:11 -0700 |
commit | 0554c9bfb7def1e021127208f5351bded62aa659 (patch) | |
tree | 439a1f15f6f5e071cd730952c6fadcff14f2303c /src/dwarf/Gparser.c | |
parent | 19eebe4b42d41a83763efcb8739a625fc1b8f39b (diff) | |
download | libunwind-0554c9bfb7def1e021127208f5351bded62aa659.tar.gz |
Remove 4146 from libunwind
This converts the invalid arithmetic negation on an unsigned value
to use the identity of bitwise negation plus one.
Diffstat (limited to 'src/dwarf/Gparser.c')
-rw-r--r-- | src/dwarf/Gparser.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/dwarf/Gparser.c b/src/dwarf/Gparser.c index edd34526..3f3722a3 100644 --- a/src/dwarf/Gparser.c +++ b/src/dwarf/Gparser.c @@ -397,9 +397,9 @@ run_cfi_program (struct dwarf_cursor *c, dwarf_state_record_t *sr, if (((ret = read_regnum (as, a, addr, ®num, arg)) < 0) || ((ret = dwarf_read_uleb128 (as, a, addr, &val, arg)) < 0)) break; - set_reg (sr, regnum, DWARF_WHERE_CFAREL, -(val * dci->data_align)); + set_reg (sr, regnum, DWARF_WHERE_CFAREL, ~(val * dci->data_align) + 1); Debug (15, "CFA_GNU_negative_offset_extended cfa+0x%lx\n", - (long) -(val * dci->data_align)); + (long) (~(val * dci->data_align) + 1)); break; case DW_CFA_GNU_window_save: |