From: Mark Wielaard Date: Sat, 7 Sep 2019 19:45:26 +0000 (+0200) Subject: libcpu: Make sure left shifts are done in unsigned context. X-Git-Tag: elfutils-0.178~33 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=65a29626e327b0173174cb25f390426e7808d272;p=platform%2Fupstream%2Felfutils.git libcpu: Make sure left shifts are done in unsigned context. Use UINT64_C (0) instead of INT64_C (0) to make sure the calculation is done on unsigned values. Otherwise the gcc undefined sanitizer will warn: libcpu/riscv_disasm.c:457:57: runtime error: left shift of negative value -1 Signed-off-by: Mark Wielaard --- diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index 883896a..e23097b 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,3 +1,8 @@ +2019-09-07 Mark Wielaard + + * riscv_disasm.c (riscv_disasm): Use UINT64_C to make calculation + unsigned. + 2019-07-05 Omar Sandoval * Makefile.am: Combine libcpu_{i386,x86_64,bpf}.a into libcpu.a. diff --git a/libcpu/riscv_disasm.c b/libcpu/riscv_disasm.c index bc4e02e..bc0d8f3 100644 --- a/libcpu/riscv_disasm.c +++ b/libcpu/riscv_disasm.c @@ -453,7 +453,7 @@ riscv_disasm (Ebl *ebl, mne = "fsd"; break; case 16: - opaddr = (((INT64_C (0) - ((first >> 12) & 0x1)) << 11) + opaddr = (((UINT64_C (0) - ((first >> 12) & 0x1)) << 11) | ((first << 2) & 0x400) | ((first >> 1) & 0x300) | ((first << 1) & 0x80)