macaw/x86_symbolic/macaw-x86-symbolic.cabal
Tristan Ravitch 8e10643b0f
Fix tail call classification (#286)
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
2022-05-10 07:29:55 -07:00

63 lines
1.3 KiB
Plaintext

name: macaw-x86-symbolic
version: 0.0.1
author: Galois, Inc.
maintainer: jhendrix@galois.com
build-type: Simple
cabal-version: >= 1.10
license: BSD3
license-file: LICENSE
library
build-depends: base >= 4.13,
bv-sized >= 1.0.0,
crucible >= 0.4,
crucible-llvm,
flexdis86 >= 0.1.2,
lens,
macaw-base,
macaw-symbolic,
macaw-x86 >= 0.3.1,
mtl,
parameterized-utils,
prettyprinter >= 1.7.0,
vector,
what4 >= 0.4
hs-source-dirs: src
default-language: Haskell2010
exposed-modules:
Data.Macaw.X86.Symbolic
Data.Macaw.X86.Crucible
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,
crucible-llvm,
elf-edit,
filepath,
Glob >= 0.9 && < 0.11,
lens,
macaw-base,
macaw-symbolic,
macaw-x86,
macaw-x86-symbolic,
parameterized-utils,
prettyprinter,
tasty,
tasty-hunit,
text,
what4,
vector