macaw/base/macaw-base.cabal
Joe Hendrix 46be7aa52b Implement new registerUse analysis.
The new registerUse analysis uses a three phase process:

Phase 1 computes invariants about the start state of each block.  It
will indicate when registers/stack locations store stack offsets, and
where callee saved registers are stashed.  It also memoizes
information about stack reads and writes to simplify later passes.

Phase 2 is a demand analysis that computes which registers and stack
locations must be available to execute the program.  It then
propagates those constraints across blocks in the function.

Phase 3 combines the information into a form relevant for function
recovery.
2020-02-06 19:26:46 -08:00

94 lines
2.5 KiB
Plaintext

name: macaw-base
version: 0.3.15.1
author: Galois, Inc.
maintainer: jhendrix@galois.com
build-type: Simple
cabal-version: >= 1.10
license: BSD3
license-file: LICENSE
description:
Macaw is a multi-architecture binary analysis library written in
Haskell. @macaw-base@ defines the core algorithms and data types
used across architectures. This includes:
.
* The control-flow graph data structure used to represent control-flow
graphs is defined in "Data.Macaw.CFG".
.
* The datatypes used to add support for new architectures are defined in
"Data.Macaw.Architecture".
.
* The datatypes used to represent memory are defined in "Data.Macaw.Memory".
Functions for constructing memory objects from Elf files are in
"Data.Macaw.Memory.ElfLoader".
.
* The main code discovery algorithm for discovering code are in
"Data.Macaw.Discovery".
.
* Declarations for working with Dwarf debug information are in "Data.Macaw.Dwarf".
library
build-depends:
base >= 4,
ansi-wl-pprint,
binary,
binary-symbols >= 0.1.3,
bytestring,
containers >= 0.5.8.1,
elf-edit >= 0.35,
galois-dwarf,
IntervalMap >= 0.5,
lens >= 4.7,
mtl,
parameterized-utils >= 2.0.0.0.104,
template-haskell,
text,
vector,
QuickCheck >= 2.7
hs-source-dirs: src
exposed-modules:
Data.Macaw.AbsDomain.AbsState
Data.Macaw.AbsDomain.CallParams
Data.Macaw.AbsDomain.JumpBounds
Data.Macaw.AbsDomain.Refine
Data.Macaw.AbsDomain.StackAnalysis
Data.Macaw.AbsDomain.StridedInterval
Data.Macaw.Analysis.FunctionArgs
Data.Macaw.Analysis.RegisterUse
Data.Macaw.Architecture.Info
Data.Macaw.CFG
Data.Macaw.CFG.App
Data.Macaw.CFG.AssignRhs
Data.Macaw.CFG.Block
Data.Macaw.CFG.Core
Data.Macaw.CFG.DemandSet
Data.Macaw.CFG.Rewriter
Data.Macaw.DebugLogging
Data.Macaw.Discovery
Data.Macaw.Discovery.AbsEval
Data.Macaw.Discovery.State
Data.Macaw.Dwarf
Data.Macaw.Fold
Data.Macaw.Memory
Data.Macaw.Memory.ElfLoader
Data.Macaw.Memory.LoadCommon
Data.Macaw.Memory.Permissions
Data.Macaw.Memory.Symbols
Data.Macaw.Types
Data.Macaw.Utils.Changed
Data.Macaw.Utils.Pretty
ghc-options: -Wall -Wcompat
ghc-options: -fno-warn-unticked-promoted-constructors
ghc-prof-options: -O2 -fprof-auto-top
default-language: Haskell2010
default-extensions:
GADTs
ScopedTypeVariables
TypeOperators
if impl(ghc >= 8.6)
default-extensions: NoStarIsType