mirror of
https://github.com/GaloisInc/macaw.git
synced 2024-11-29 21:44:11 +03:00
8e10643b0f
The tail call classifier came after the jump classifier, which was a problem because it is less strict than the tail call classifier, meaning it would always fire. This commit moves direct jump to be the last classifier applied, giving the others a chance. Includes a test case in the ARM backend. This requires some updates to some of the expected test results, as a few blocks are now classified as tail calls that were plain jumps before. They really could be considered either. I think it would be nice if these could be classified as jumps instead, but the reason they are flagged as tail calls is mostly down to the fact that their surrounding context is so simple that either interpretation works. Correcting this would require some heuristics based on additional analysis passes. The test harness for macaw symbolic required a few changes because the new detection of some jumps as tail calls introduces new calls into the symbolic test suites. However, the symbolic testing harness did not support calls before. Adding support required a bit of plumbing, including a more extensive code discovery pass. Fixes #285
74 lines
1.9 KiB
Plaintext
74 lines
1.9 KiB
Plaintext
-- Initial macaw-ppc-symbolic.cabal generated by cabal init. For further
|
|
-- documentation, see http://haskell.org/cabal/users-guide/
|
|
|
|
name: macaw-ppc-symbolic
|
|
version: 0.1.0.0
|
|
synopsis: A symbolic reasoning backend for PowerPC
|
|
-- description:
|
|
license: BSD3
|
|
license-file: LICENSE
|
|
author: Tristan Ravitch
|
|
maintainer: tristan@galois.com
|
|
-- copyright:
|
|
category: Analysis
|
|
build-type: Simple
|
|
extra-source-files: ChangeLog.md
|
|
cabal-version: >=1.10
|
|
|
|
library
|
|
exposed-modules: Data.Macaw.PPC.Symbolic
|
|
other-modules: Data.Macaw.PPC.Symbolic.AtomWrapper
|
|
Data.Macaw.PPC.Symbolic.Functions
|
|
Data.Macaw.PPC.Symbolic.Repeat
|
|
-- other-extensions:
|
|
build-depends: base >=4.10 && <5,
|
|
containers,
|
|
lens,
|
|
exceptions,
|
|
text,
|
|
parameterized-utils,
|
|
dismantle-ppc,
|
|
crucible,
|
|
macaw-base,
|
|
macaw-symbolic,
|
|
crucible-llvm,
|
|
macaw-ppc,
|
|
semmc,
|
|
semmc-ppc,
|
|
what4
|
|
hs-source-dirs: src
|
|
default-language: Haskell2010
|
|
ghc-options: -Wall -Wcompat
|
|
|
|
test-suite macaw-ppc-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,
|
|
lens,
|
|
dismantle-ppc,
|
|
semmc-ppc,
|
|
macaw-base,
|
|
macaw-loader,
|
|
macaw-symbolic,
|
|
macaw-ppc,
|
|
macaw-loader-ppc,
|
|
macaw-ppc-symbolic,
|
|
parameterized-utils,
|
|
prettyprinter,
|
|
tasty,
|
|
tasty-hunit,
|
|
text,
|
|
what4,
|
|
vector
|