Commit Graph

141 Commits

Author SHA1 Message Date
Ben Selfridge
8d530b4f3f Deleted old export of PPCWidth from PPCReg.hs 2017-11-03 15:23:24 -07:00
Ben Selfridge
eff3fa6425 Consolidated constraints into one: PPCArchConstraints 2017-11-03 15:20:46 -07:00
Ben Selfridge
7dd2a2a385 Merge branch 'master' of gitlab-ext.galois.com:macaw/macaw-semmc 2017-11-03 15:19:51 -07:00
Ben Selfridge
889c988d4b Added Base.hs, for some reason magit didn't warn me it hadn't been added 2017-11-03 15:18:05 -07:00
Tristan Ravitch
0e9b739503 Implement test_bit_dynamic in the TH translation of semantics
It translates to a BVTestBit (since here we know which bit to extract, whereas
we don't in the semantics).
2017-11-03 15:07:52 -07:00
Ben Selfridge
a7c7600a20 Removed unused functions from TH.hs and put them in a standalone module 2017-11-02 11:43:27 -07:00
Tristan Ravitch
c788aebab8 Update the dismantle submodule
This fixes a bug in parsing the stdu instruction that was causing our test to
implode.  It still isn't right, but it gets farther (and parses two instructions
out of the block).
2017-10-31 22:23:57 -07:00
Tristan Ravitch
81310c9c0f Implement a very simple simplifier for use in the disassembler
This simplifier just evaluates some constant forms that appear as IP value
updates.  This is enough to let us pass the check we need to without relying on
the full rewriter, which is too heavyweight for our needs.  Furthermore, macaw
itself calls the rewriter, so duplicating that effort is very wasteful.
2017-10-31 22:04:28 -07:00
David Johnson
c611717735
Tracing to track rewriting bug 2017-10-31 18:52:12 -07:00
Ben Selfridge
f3f07ff099 Adding rewriting to macaw-ppc translation 2017-10-27 21:08:47 -07:00
Ben Selfridge
16839e30c1 Test runs, fails at identifyCall 2017-10-27 14:29:04 -07:00
Ben Selfridge
bc2dc76be6 Working on findElfEntryPoint, which does a double-lookup for PowerPC. 2017-10-26 18:38:47 -07:00
Ben Selfridge
0a1d46c581 Finally have an actual PPC binary for test-just-exit test. 2017-10-25 15:02:16 -07:00
Ben Selfridge
be61b37569 fixed test case, which was x86. now it's powerpc. test still fails. 2017-10-24 17:22:57 -07:00
Ben Selfridge
2ada779a1f test-just-exit 2017-10-24 17:21:00 -07:00
Ben Selfridge
2a7213f416 Added a simple test, which fails. 2017-10-24 16:36:36 -07:00
Tristan Ravitch
0fb90e5d6b Update dismantle and semmc
This adds some more general instances needed for higher-level dependencies
2017-10-23 18:06:32 -07:00
Tristan Ravitch
8379d76da5 [ppc] Fix a bug in the translation of BVConcat
The second bitvector was never actually used
2017-10-23 09:47:12 -07:00
Tristan Ravitch
dd91bc2fe8 Rename the cabal.project file
Users should symlink the file the correct name locally; this makes it easier to
use the project as a submodule
2017-10-23 09:46:00 -07:00
Tristan Ravitch
ffaa912b74 Convert from applicative to nested binds in the TH code
This makes the generated splices much easier to read, which will be helpful for debugging.
2017-10-18 22:40:53 -07:00
Tristan Ravitch
28b7b68881 Fill out more of the PPC semantics translation
This covers all of the floating point used so far, as well as memory operations.
Note that this commit relies on changes that aren't pushed to macaw yet.
2017-10-18 17:48:07 -07:00
Tristan Ravitch
d893ce8dcb Fix the BVConcat translation 2017-10-18 17:47:29 -07:00
Tristan Ravitch
601ea06e07 Fix a TH bug
We were generating a literal TH expression when we meant to generate a splice
2017-10-18 17:46:47 -07:00
Tristan Ravitch
344b253bf8 Add missing cases for the XER reg 2017-10-18 17:42:42 -07:00
Tristan Ravitch
f2f3b33fca Convert floating point round to single precision 2017-10-18 17:42:42 -07:00
Ben Selfridge
74b5d85beb Added test skeleton, rearranged some TH stuff 2017-10-18 14:27:29 -07:00
Tristan Ravitch
ace4520846 Update to the latest macaw 2017-10-18 10:29:57 -07:00
Tristan Ravitch
49545299d9 Add cases for FP operation translation 2017-10-18 08:49:09 -07:00
Tristan Ravitch
13def38f25 Fix some compilation errors with an improved evaluator in semmc 2017-10-17 21:38:53 -07:00
Tristan Ravitch
2a7c5bd541 Extend the uninterpreted function evaluator
It is currently very messy because the ppc.is_r0 function breaks some
abstraction boundaries that make it very irregular.  There is some common code
that can probably be factored out, but it will still be a mess.

The other big change is handling the read_mem calls.
2017-10-17 19:16:31 -07:00
Tristan Ravitch
eb8b78b372 Add support for a number of new uninterpreted functions
This covers evaluating all of the statically-evaluated functions in expression
contexts (e.g., is_r0 and the memory reference extraction functions).

The expansion seems pretty reasonable.

There are still some cases to handle w.r.t. floating point elementary functions
and memory reads and writes, which need to be handled a bit differently.

Note: we also have to call the formula simplifier soon.
2017-10-17 17:07:03 -07:00
Ben Selfridge
ccd344f027 Merge branch 'master' of gitlab-ext.galois.com:macaw/macaw-semmc 2017-10-17 12:32:40 -07:00
Ben Selfridge
0649ea4f0c Nearly done with semmc->macaw, need to complete addEltTH function 2017-10-17 12:27:57 -07:00
Tristan Ravitch
07c48afe46 Add instantiations for some uninterpreted functions
This covers functions that are used to isolate locations to be defined from
composite operands (e.g., the base registers of memrr and memri operands).
2017-10-17 11:51:11 -07:00
Tristan Ravitch
db2da637b0 Update the semmc submodule 2017-10-16 23:27:44 -07:00
Tristan Ravitch
cf0a6df0da Simplify the sequencing of our generated monadic PPCGenerator actions
We were building up a list and calling sequence; instead, just generate a single
do block directly
2017-10-16 19:51:32 -07:00
Ben Selfridge
1a5946bd0d Nearly done with semmc -> macaw, need to complete a few more cases 2017-10-16 16:40:51 -07:00
Ben Selfridge
e2121de437 Finished bound variable case in addEltTH 2017-10-16 15:53:28 -07:00
Ben Selfridge
17e44dae2a Merge branch 'master' of gitlab-ext.galois.com:macaw/macaw-semmc 2017-10-16 15:37:49 -07:00
Ben Selfridge
fdf03c5c80 Rearranged a few things 2017-10-16 15:37:19 -07:00
Tristan Ravitch
792eb1aaf9 [ppc] Add a helper for turning operands into bitvectors
The main function is 'extractValue', which takes an operand and returns a macaw
bitvector for it (in the PPCGenerator monad).

There are still some missing cases for the memory operands.
2017-10-16 15:11:16 -07:00
Ben Selfridge
690687b0b6 started fixing up the BoundVar case 2017-10-16 14:15:12 -07:00
Ben Selfridge
62d26946dc merging because semmc is being weird 2017-10-16 11:38:38 -07:00
Ben Selfridge
ebe47b74fc work in progress TH translation 2017-10-16 11:35:12 -07:00
Tristan Ravitch
cc00389c44 [ppc] Update the PPC semantics 2017-10-13 17:05:45 -07:00
Ben Selfridge
d48f30f173 Filled out some TH stuff 2017-10-13 14:26:39 -07:00
Tristan Ravitch
1017c51ead Update the semmc submodule to include the FP base set 2017-10-13 14:20:22 -07:00
Ben Selfridge
80d0fb26a6 merging 2017-10-13 13:15:10 -07:00
Ben Selfridge
50884f8af8 merging 2017-10-13 13:14:58 -07:00
Tristan Ravitch
27a81db23f Update the semmc and dismantle submodules
These include changes necessary for floating point support
2017-10-13 11:42:00 -07:00