Safe Haskell | None |
---|
An analysis to identify the NULL state of pointers at each Instruction in a Function. Pointers can either be DefiniteNULL, NotNULL, or Unknown. Only DefiniteNULL and NotNULL are recorded - all other pointers are Unknown.
- class HasNullSummary a where
- getNullSummary :: a -> NullPointersSummary
- data NullPointersSummary
- nullPointersAnalysis :: HasCFG cfg => cfg -> NullPointersSummary
- nullPointersAt :: NullPointersSummary -> Instruction -> [Value]
- notNullPointersAt :: NullPointersSummary -> Instruction -> [Value]
- branchNullInfo :: Failure NullInfoError m => Instruction -> m (BasicBlock, Value, BasicBlock)
- data NullInfoError
- = NotABranchInst Instruction
- | NotANullTest Instruction
Documentation
class HasNullSummary a whereSource
data NullPointersSummary Source
A record of the known NULL and known Not-NULL pointers at each Instruction.
nullPointersAnalysis :: HasCFG cfg => cfg -> NullPointersSummarySource
Determine which pointers are NULL and NotNULL at each Instruction.
nullPointersAt :: NullPointersSummary -> Instruction -> [Value]Source
notNullPointersAt :: NullPointersSummary -> Instruction -> [Value]Source
branchNullInfo :: Failure NullInfoError m => Instruction -> m (BasicBlock, Value, BasicBlock)Source
Given a BranchInst, return:
1) The BasicBlock where a pointer is known to be NULL
2) The value known to be NULL
3) The BasicBlock where the pointer is known to be not NULL
data NullInfoError Source
NotABranchInst Instruction | |
NotANullTest Instruction |