Enum haybale::Error

source ·
pub enum Error {
    Unsat,
    LoopBoundExceeded(usize),
    NullPointerDereference,
    FunctionNotFound(String),
    SolverError(String),
    UnsupportedInstruction(String),
    MalformedInstruction(String),
    UnreachableInstruction,
    FailedToResolveFunctionPointer(u64),
    HookReturnValueMismatch(String),
    OtherError(String),
}
Expand description

Error types used throughout this crate.

The Display impl for Error will provide information about the error itself. For more detailed information about the error, including the program context in which it occurred, see State.full_error_message_with_context().

Variants§

§

Unsat

While performing an operation, we discovered the current path is unsat.

This error type is used internally, but (by default) isn’t exposed to consumers of ExecutionManager; see Config.squash_unsats.

§

LoopBoundExceeded(usize)

The current path has exceeded the configured loop_bound (see Config). (The usize here indicates the value of the configured loop_bound.)

§

NullPointerDereference

The current path has attempted to dereference a null pointer (or more precisely, a pointer for which NULL is a possible value)

§

FunctionNotFound(String)

Processing a call of a function with the given name, but failed to find an LLVM definition, a function hook, or a built-in handler for it

§

SolverError(String)

The solver returned this processing error while evaluating a query. Often, this is a timeout; see Config.solver_query_timeout

§

UnsupportedInstruction(String)

Encountered an LLVM instruction which is not currently supported

§

MalformedInstruction(String)

Encountered an LLVM instruction which was malformed, or at least didn’t conform to our expected invariants

§

UnreachableInstruction

Reached an LLVM Unreachable instruction

§

FailedToResolveFunctionPointer(u64)

Failed to interpret some symbolic value (BV) as a function pointer, because it has a possible solution (the u64 here) which points to something that’s not a function

§

HookReturnValueMismatch(String)

The hook for some function returned a value which didn’t match the function return type: for instance, a value of the wrong size. The String here just describes the error

§

OtherError(String)

Some kind of error which doesn’t fall into one of the above categories. The String here describes the error

Trait Implementations§

source§

impl Clone for Error

source§

fn clone(&self) -> Error

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Error> for String

source§

fn from(e: Error) -> String

Converts to this type from the input type.
source§

impl PartialEq for Error

source§

fn eq(&self, other: &Error) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Error

source§

impl StructuralEq for Error

source§

impl StructuralPartialEq for Error

Auto Trait Implementations§

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for Twhere T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.