mirror of
https://github.com/GaloisInc/macaw.git
synced 2024-11-30 05:55:02 +03:00
9ce3d43188
Adds support in macaw-aarch32 for conditional returns. These are not supported in core macaw, and are thus architecture-specific block terminators. This required changes to the type of arch-specific block terminators. Before, `ArchTermStmt` was only parameterized by a state thread (`ids`). This meant that they could not contain macaw (or crucible) values. Some work on. AArch32 requires being able to store condition values in arch terminators (to support conditional returns). This change modifies the `ArchTermStmt` to enable this, which requires a bit of plumbing through various definitions and some extra instances. In support of actually using this, it also became necessary to plumb fallthrough block labels through the architecture-specific terminator translation in macaw-symbolic. Note that this change was overdue, as the PowerPC backend was storing macaw values in a way that would have rendered them unusable in the macaw-ppc-symbolic translation, had any interpretation been provided. These new changes will enable a handler to be written for the conditional PowerPC trap instructions. PowerPC, x86, and ARM have been updated. Improves the macaw-aarch32 tests. There is now a command line option to save the generated macaw IR for each discovered function to /tmp. Note that this reuses some infrastructure from the macaw-symbolic tests. This shared functionality should be extracted into a macaw-testing library.
74 lines
2.0 KiB
Plaintext
74 lines
2.0 KiB
Plaintext
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,
|
|
text,
|
|
parameterized-utils,
|
|
asl-translator,
|
|
what4,
|
|
crucible,
|
|
crucible-llvm,
|
|
macaw-base,
|
|
dismantle-arm-xml,
|
|
semmc-aarch32,
|
|
macaw-aarch32,
|
|
macaw-symbolic
|
|
hs-source-dirs: src
|
|
default-language: Haskell2010
|
|
ghc-options: -Wall -Wcompat
|
|
|
|
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,
|
|
crucible-llvm,
|
|
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
|