crux-llvm-0.8: A verification tool for C programs.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Crux.LLVM.Simulate

Synopsis

Documentation

setupSimCtxt :: (IsSymBackend sym bak, HasLLVMAnn sym) => HandleAllocator -> bak -> MemOptions -> GlobalVar Mem -> SimCtxt Crux sym LLVM Source #

Create a simulator context for the given architecture.

parseLLVM :: FilePath -> IO Module Source #

Parse an LLVM bit-code file.

setupFileSim :: forall sym bak t st fs msgs. Logs msgs => SupportsCruxLLVMLogMessage msgs => IsSymBackend sym bak => sym ~ ExprBuilder t st fs => HasLLVMAnn sym => HandleAllocator -> FilePath -> LLVMOptions -> bak -> Maybe (SomeOnlineSolver sym bak) -> IO (RunnableState sym) Source #

prepLLVMModule :: IsSymBackend sym bak => HasLLVMAnn sym => Logs msgs => SupportsCruxLLVMLogMessage msgs => LLVMOptions -> HandleAllocator -> bak -> FilePath -> GlobalVar Mem -> IO (PreppedLLVM sym) Source #

Given an LLVM Bitcode file, and a GlobalVar memory, translate the file into the Crucible representation and add the globals and definitions from the file to the GlobalVar memory.

checkFun :: forall arch msgs personality sym. IsSymInterface sym => HasLLVMAnn sym => ArchOk arch => Logs msgs => SupportsCruxLLVMLogMessage msgs => LLVMOptions -> ModuleTranslation arch -> GlobalVar Mem -> OverM personality sym LLVM () Source #

memMetrics :: forall p sym ext. GlobalVar Mem -> Map Text (Metric p sym ext) Source #

explainFailure :: IsSymInterface sym => sym ~ ExprBuilder t st fs => sym -> IORef (LLVMAnnMap sym) -> Explainer sym t ann Source #