macaw/x86_symbolic/macaw-x86-symbolic.cabal

63 lines
1.3 KiB
Plaintext
Raw Permalink Normal View History

2018-01-03 09:50:23 +03:00
name: macaw-x86-symbolic
version: 0.0.1
author: Galois, Inc.
maintainer: jhendrix@galois.com
build-type: Simple
cabal-version: >= 1.10
2018-01-03 09:50:23 +03:00
license: BSD3
license-file: LICENSE
library
build-depends: base >= 4.13,
bv-sized >= 1.0.0,
2018-06-06 21:48:45 +03:00
crucible >= 0.4,
crucible-llvm,
2018-01-17 02:37:30 +03:00
flexdis86 >= 0.1.2,
2018-06-06 21:48:45 +03:00
lens,
macaw-base,
macaw-symbolic,
macaw-x86 >= 0.3.1,
mtl,
parameterized-utils,
prettyprinter >= 1.7.0,
vector,
2018-06-06 21:48:45 +03:00
what4 >= 0.4
2018-01-03 09:50:23 +03:00
hs-source-dirs: src
default-language: Haskell2010
2018-01-03 09:50:23 +03:00
exposed-modules:
Data.Macaw.X86.Symbolic
Data.Macaw.X86.Crucible
2018-01-03 09:50:23 +03:00
ghc-options: -Wall -Wcompat
ghc-prof-options: -O2 -fprof-auto-top
default-extensions: NoStarIsType
test-suite macaw-x86-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,
2018-05-18 00:06:24 +03:00
crucible-llvm,
elf-edit,
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
filepath,
Glob >= 0.9 && < 0.11,
lens,
macaw-base,
macaw-symbolic,
macaw-x86,
macaw-x86-symbolic,
parameterized-utils,
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
prettyprinter,
tasty,
tasty-hunit,
text,
what4,
vector