diff options
author | Mark Wielaard <mark@klomp.org> | 2019-09-07 21:45:26 +0200 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2019-09-07 21:45:31 +0200 |
commit | 65a29626e327b0173174cb25f390426e7808d272 (patch) | |
tree | bb7aec126c733d51429be6d5d6f3514c0c78b76c | |
parent | 1ee98b6c28fbe9ab532ef947cfe46e833535303c (diff) |
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 <mark@klomp.org>
-rw-r--r-- | libcpu/ChangeLog | 5 | ||||
-rw-r--r-- | libcpu/riscv_disasm.c | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index 883896a2..e23097bd 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,3 +1,8 @@ +2019-09-07 Mark Wielaard <mark@klomp.org> + + * riscv_disasm.c (riscv_disasm): Use UINT64_C to make calculation + unsigned. + 2019-07-05 Omar Sandoval <osandov@fb.com> * 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 bc4e02e5..bc0d8f37 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) |