Skip to content

Commit

Permalink
[next] SH: Use bitwise OR with mask for sign extension (#2389)
Browse files Browse the repository at this point in the history
* Use bitwise OR with mask for sign extension

Sign extend using bitwise OR with mask, instead of unary minus.
Fixes error when building for UWP with Security Development Lifecycle (SDL).
See https://learn.microsoft.com/en-us/cpp/build/reference/sdl-enable-additional-security-checks?view=msvc-170

* Remove unused store

Remove unused store caught by clang-tidy.

* Suppress clang-tidy false positive

Ignore an unitialized va_list false positive emitted by clang-tidy

---------

Co-authored-by: Wu ChenXu <[email protected]>
  • Loading branch information
lhsazevedo and kabeor authored Sep 18, 2024
1 parent 3a2cd3c commit 67d9756
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions arch/SH/SHDisassembler.c
Original file line number Diff line number Diff line change
Expand Up @@ -1459,13 +1459,13 @@ static bool decode_long(uint32_t code, uint64_t address, MCInst *MI,
if (code & 0x00010000) {
// movi20s #imm,
imm <<= 8;
if (imm >= 1 << 27)
imm = -((1 << 28) - imm);
if (imm & (1 << (28 - 1)))
imm |= ~((1 << 28) - 1);
insn = SH_INS_MOVI20S;
} else {
// MOVI20
if (imm >= 1 << 19)
imm = -((1 << 20) - imm);
if (imm & (1 << (28 - 1)))
imm |= ~((1 << 20) - 1);
insn = SH_INS_MOVI20;
}
set_imm(info, 0, imm);
Expand Down

0 comments on commit 67d9756

Please sign in to comment.