diff options
-rw-r--r-- | CHANGELOG | 6 | ||||
-rw-r--r-- | src/armv7.rs | 5 | ||||
-rw-r--r-- | test/armv7/thumb.rs | 4 |
3 files changed, 10 insertions, 5 deletions
@@ -1,6 +1,10 @@ ## 0.1.2 * fix some instructions in aarch64 decoding panicking with "unreachable" - instead of returning an `Err(DecodeError::Incomplete)`. + instead of returning an `Err(DecodeError::Incomplete)`. similarly, some + instructions panicked instead of returning `InvalidOpcode` or `InvalidOperand` + as they should. +* fix some instructions in armv7 decoding or display panicking instead of + displaying a valid instruction, or returning a decode error. ## 0.1.1 * fix incorrect `yaxpeax_arch::Arch` impl for `std`-enabled builds diff --git a/src/armv7.rs b/src/armv7.rs index e858566..d8c2539 100644 --- a/src/armv7.rs +++ b/src/armv7.rs @@ -1741,10 +1741,7 @@ fn format_reg_imm_mem<T: fmt::Write, Y: YaxColors>(f: &mut T, Rn: Reg, imm: u16, (true, false) => { write!(f, "[{}]", reg_name_colorize(Rn, colors)) }, - (false, true) => { - unreachable!("I don't know how to render an operand with pre==false and wback==true, this seems like it should be LDRT"); - }, - (false, false) => { + (false, _) => { write!(f, "[{}]", reg_name_colorize(Rn, colors)) } } diff --git a/test/armv7/thumb.rs b/test/armv7/thumb.rs index c74da37..9182f6e 100644 --- a/test/armv7/thumb.rs +++ b/test/armv7/thumb.rs @@ -3588,6 +3588,10 @@ fn test_decode_str_32b_cases() { &[0x41, 0xf8, 0x04, 0x2b], "str.w r2, [r1], 0x4" ); + test_display( + &[0x41, 0xf8, 0x00, 0x2b], + "str.w r2, [r1]" + ); } #[test] |