macaw/macaw-aarch32-symbolic/macaw-aarch32-symbolic.cabal

72 lines
2.0 KiB
Plaintext
Raw Normal View History

cabal-version: >=1.10
-- Initial package description 'macaw-aarch32-symbolic.cabal' generated by
-- 'cabal init'. For further documentation, see
-- http://haskell.org/cabal/users-guide/
name: macaw-aarch32-symbolic
version: 0.1.0.0
synopsis: Symbolic execution support for ARM
-- description:
-- bug-reports:
license: BSD3
license-file: LICENSE
author: Tristan Ravitch
maintainer: tristan@galois.com
-- copyright:
category: Analysis
build-type: Simple
extra-source-files: CHANGELOG.md
library
exposed-modules: Data.Macaw.AArch32.Symbolic
other-modules: Data.Macaw.AArch32.Symbolic.AtomWrapper
Data.Macaw.AArch32.Symbolic.Functions
Data.Macaw.AArch32.Symbolic.Panic
-- other-extensions:
build-depends: base >=4.10 && <5,
containers,
lens,
panic,
parameterized-utils,
asl-translator,
what4,
crucible,
crucible-llvm,
2020-04-06 08:08:58 +03:00
macaw-base,
dismantle-arm-xml,
semmc-aarch32,
macaw-aarch32,
macaw-symbolic
hs-source-dirs: src
default-language: Haskell2010
ghc-options: -Wall -Wcompat
Add a testing framework for macaw-symbolic (#184) The new test suites cover x86_64, PowerPC, and ARM. They test that the semantics are actually correct (rather than just seeing if symbolic execution produces any result). The `Data.Macaw.Symbolic.Testing` module in macaw-symbolic provides some common utilities for symbolic execution engine setup, while there are tailored test harnesses for each architecture. The semantics of the test harnesses are documented in each architecture test suite, but they: 1. Discover all of the test binaries (which are generated from the included makefiles) 2. Treat each function whose name begins with `test_` as a test entry point 3. Symbolically executes each test case with fully symbolic register states 4. Extracts the return value after symbolic execution, which is treated as the predicate to an assertion that must be proved - If the test case is in the `pass` subdirectory, it is proved and expected to hold - If the test case is in the `fail` subdirectory, it is proved and expected to not hold. Each test harness supports two options for debugging: - Dumping generated SMT queries - Dumping generated Macaw IR for inspection This testing uncovered a bug in the (previously untested) macaw-aarch32-symbolic code. It required a number of submodule updates to: - Adapt to some what4 changes - Fix a bug in the LLVM memory model that lets these tests pass - Adapt to changes to some crucible APIs This change also modifies the CI configuration to install SMT solvers earlier (which are now needed for all of the symbolic package tests).
2021-03-01 20:21:44 +03:00
test-suite macaw-aarch32-symbolic-tests
type: exitcode-stdio-1.0
default-language: Haskell2010
ghc-options: -Wall -Wcompat
main-is: Main.hs
hs-source-dirs: tests
build-depends:
base >= 4,
bytestring,
containers,
crucible,
elf-edit,
filepath,
Glob >= 0.9 && < 0.11,
dismantle-arm-xml,
asl-translator,
semmc-aarch32,
macaw-aarch32,
macaw-aarch32-symbolic,
macaw-base,
macaw-symbolic,
parameterized-utils,
prettyprinter,
tasty,
tasty-hunit,
text,
what4,
vector