iptr_edge_analyzer/
error.rs1use perfect_derive::perfect_derive;
4use thiserror::Error;
5
6use crate::{HandleControlFlow, ReadMemory};
7
8#[derive(Error)]
10#[perfect_derive(Debug)]
11#[non_exhaustive]
12pub enum AnalyzerError<H: HandleControlFlow, R: ReadMemory> {
13 #[error("Control flow handler error")]
15 ControlFlowHandler(#[source] H::Error),
16 #[error("Memory reader error")]
18 MemoryReader(#[source] R::Error),
19 #[error("Invalid instruction")]
21 InvalidInstruction,
22 #[error("The self-maintained callstack is corrupted")]
25 CorruptedCallstack,
26 #[error("Invalid packet")]
28 InvalidPacket,
29 #[error("Return compression is not supported")]
32 UnsupportedReturnCompression,
33 #[error("Unexpected! TNT buffer exceeded!")]
38 ExceededTntBuffer,
39 #[error("Unexpected edge analyzer error")]
41 Unexpected,
42}
43
44pub(crate) type AnalyzerResult<T, H, R> = core::result::Result<T, AnalyzerError<H, R>>;