macaw/x86
Tristan Ravitch 2c85dce18e Expose block classification in the ArchitectureInfo
This change makes the block classifier heuristic part of the `ArchitectureInfo`
structure.  This enables clients and architecture backends to customize the
block classification heuristics.  This is most useful for architectures that
have complex architecture-specific block terminators that require analysis to
generate (e.g., conditional returns).  It will also make macaw-refinement
simpler in the future, as the SMT-based refinement is just an additional block
classifier (but is currently implemented via a hacky side channel).

This change introduces an ancillary change, which should not be very
user-visible.

It splits the Macaw.Discovery and Macaw.Discovery.State modules to break
module import cycles in a way that enables us to expose the classifier.  This
should not be user-visible, as Macaw.Discovery still exports the same
names (with one minor exception that should not appear in user code).

It also moves the definition of the `ArchBlockPrecond` type family; the few
affected places should be updated. User code should probably not be able to see
this.
2021-11-05 18:25:03 -07:00
..
src/Data/Macaw Expose block classification in the ArchitectureInfo 2021-11-05 18:25:03 -07:00
support Add x86-support to travis 2019-03-26 08:21:01 -07:00
tests Fixes for jump table tests. 2020-11-12 11:25:30 -08:00
x86_tests Segment register updates; stack offset calculation. 2019-09-20 13:58:05 -07:00
.gitignore Add x86 specific code. 2017-09-27 15:54:43 -07:00
LICENSE Update license information. 2017-09-27 15:59:06 -07:00
macaw-x86.cabal Update to more recent flexdis 2021-06-14 13:22:46 -07:00