macaw/macaw-ppc-symbolic/macaw-ppc-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

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