foxdec-0.1.0.0: Formally Verified x86-64 Decompilation
Safe HaskellNone
LanguageHaskell2010

Data.Pointers

Description

 
Synopsis

Documentation

data FContext Source #

The context augmented with information on the current function

Constructors

FContext 

Fields

Instances

Instances details
Propagator FContext Pred Source # 
Instance details

Defined in Analysis.SymbolicExecution

get_pointer_domain Source #

Arguments

:: FContext

The current context

-> SimpleExpr

A symbolic expression

-> PointerDomain

A pointer domain

expr_highly_likely_pointer :: FContext -> SimpleExpr -> Bool Source #

Returns true if the expression has known pointerbases.

expr_is_global_pointer :: FContext -> SimpleExpr -> Bool Source #

Returns true if the expression has a global pointerbase.

expr_is_highly_likely_local_pointer :: FContext -> SimpleExpr -> Bool Source #

Returns true if the expression has a local pointerbase, and no others.

expr_is_global_immediate :: Context -> SimpleExpr -> Bool Source #

Returns true iff the expression is an immediate address falling into the range of sections of the binary

srcs_of_expr :: FContext -> SimpleExpr -> Set BotSrc Source #

Returns the set of sources (inputs used to compute the expression) of an expression.

srcs_of_exprs :: FContext -> [SimpleExpr] -> Set BotSrc Source #

Returns the set of sources (state parts used to compute the expression) of two expressions.

join_single :: FContext -> SimpleExpr -> SimpleExpr Source #

Abstraction for a single expression, even if the expression is concrete.

separate_pointer_domains :: (Integral a1, Integral a2) => FContext -> Bool -> SimpleExpr -> a1 -> SimpleExpr -> a2 -> Bool Source #

Returns true iff the two given expressions can be shown to be separate.

necessarily_equal :: SimpleExpr -> SimpleExpr -> Bool Source #

Returns true iff the given symbolic regions are necessarily equal. For example: [RSP-16,4] is enclosed in [RSP-16,4]

Will return False if the expressions contain bottom.

necessarily_equal_stateparts :: StatePart -> StatePart -> Bool Source #

Returns true iff the given symbolic stateparts are necessarily equal.

necessarily_separate :: Integral a => FContext -> SimpleExpr -> a -> SimpleExpr -> a -> Bool Source #

Returns true iff the given symbolic regions are ncessarily separate. For example: [RSP-16,4] is separate from [RSP-12,8] [RSP+8,4] is separate from [RSP,8]

If none of the cases apply where it can be shjown arithmetically that the expressions are separate, we check whether the expressions can be proven separate based on their domains (see separate_pointer_domains).

necessarily_separate_stateparts :: FContext -> StatePart -> StatePart -> Bool Source #

Returns true iff the given symbolic stateparts are necessarily separate.

necessarily_enclosed :: Integral a => SimpleExpr -> a -> SimpleExpr -> a -> Bool Source #

Returns true iff the given symbolic region is necessarily enclosed in the other. For example: [RSP-16,4] is enclosed in [RSP-18,8] [RSP+4,4] is enclosed in [RSP,8]

Will return False if the expressions contain bottom.

unfold_non_determinism :: FContext -> SimpleExpr -> [SimpleExpr] Source #

Unfold an expression with non-determinisism to a list of expressions. Keep an eye on the produced size, as this may cause blow-up.

trim_expr :: FContext -> SimpleExpr -> SimpleExpr Source #

If the size of an expression becomes too large, we simply turn it into Bottom.