Commit Graph

1746 Commits

Author SHA1 Message Date
Daniel Matichuk
70d35d44e4 parameterize ArchInfo and ArchVals over mem type 2020-09-02 10:21:39 -07:00
Daniel Matichuk
84f2fac999 cleanup unused language extensions 2020-09-01 17:55:11 -07:00
Daniel Matichuk
6109731324 create valid solver symbol for PPC registers 2020-09-01 17:09:49 -07:00
Daniel Matichuk
2da172b3ea generalize ArchInfo over memory model 2020-09-01 17:07:04 -07:00
Sam Breese
b248cf7f45
x86: Add semantics for vpunpckhqdq, vxorps, vpaddb, and movbe (#155)
* Add semantics for vpunpckhqdq

* Add semantics for movbe

* Add semantics for vxorps and vpaddb
2020-08-20 14:50:20 -04:00
Kevin Quick
4713bc91c7
Merge pull request #157 from GaloisInc/llvm_annotations_upd
Update for addition of badBehaviorMap implicit for LLVM annotations.
2020-08-11 11:08:57 -07:00
Kevin Quick
de31610929
Update submodules. 2020-08-10 17:47:35 -07:00
Kevin Quick
1db2d1669c
[symbolic] Defer badBehaviorMap creation to caller instead. 2020-08-10 14:50:45 -07:00
Kevin Quick
fc419e4c18
[refinement] update for badBehaviorMap implicit parameter. 2020-08-10 13:47:44 -07:00
Kevin Quick
22f2a3122c
[x86_symbolic] Create badBehaviorMap earlier in test. 2020-08-10 09:48:50 -07:00
Kevin Quick
ad46e191c6
Update for addition of badBehaviorMap implicit for LLVM annotations.
See https://github.com/GaloisInc/crucible/pull/453
2020-08-08 22:16:48 -07:00
Daniel Matichuk
cd4dd31343
Merge pull request #156 from GaloisInc/feature/smartmux
aarch32: support non-concrete conditional writes
2020-08-06 14:19:03 -07:00
Daniel Matichuk
75d998f719 aarch32: avoid symbolic addresses
this changes the write action model to instead index
writes based on the macaw term representing the address
to be written
2020-08-05 16:53:27 -07:00
Daniel Matichuk
b42cce3f1c aarch32: support non-concrete conditional writes 2020-08-04 23:57:50 -07:00
Daniel Matichuk
f74cd557d5
Merge pull request #154 from GaloisInc/feature/normflat2
Update macaw-aarch32 for changes to the ASL translator
2020-08-03 15:04:03 -07:00
Daniel Matichuk
68193b9ef9 bump submodules 2020-07-31 00:33:10 -07:00
Daniel Matichuk
53db924e77 add macaw-asl-tests to travis CI 2020-07-31 00:31:29 -07:00
Daniel Matichuk
f1d3bb61da delete dead code 2020-07-31 00:31:29 -07:00
Daniel Matichuk
f2defdcdc4 aarch32: use empty tuple for unit type 2020-07-31 00:31:29 -07:00
Daniel Matichuk
204efeed42 Merge remote-tracking branch 'origin/master' into feature/normflat2 2020-07-28 12:43:24 -07:00
Daniel Matichuk
626071e459 bump submodules 2020-07-28 12:40:52 -07:00
Daniel Matichuk
44c2536f30 add default arch type override for ppc 2020-07-28 11:57:07 -07:00
Daniel Matichuk
dd8b78bb7b aarch32: fix floating point uf calls 2020-07-28 11:57:07 -07:00
Daniel Matichuk
278d365a31 aarch32: simplify write action representation 2020-07-28 11:57:07 -07:00
Daniel Matichuk
f53ea84cd9 module import cleanup 2020-07-28 11:57:07 -07:00
Daniel Matichuk
6e54d1488b avoid redundant let-bindings 2020-07-28 11:57:07 -07:00
Daniel Matichuk
468c329fa1 use compilation-friendly boolean and bitvector ops 2020-07-28 11:57:07 -07:00
Daniel Matichuk
838ef3924d aarch32: wrap up stateful operations as values 2020-07-28 11:57:07 -07:00
Daniel Matichuk
3e03ec11ab allow for arch-specific type translation 2020-07-28 11:57:07 -07:00
Daniel Matichuk
dcd5339b5a allow for manual bind pattern 2020-07-28 11:57:07 -07:00
Daniel Matichuk
98a429b7e0 avoid using applicative binds for eager values 2020-07-28 11:57:07 -07:00
Daniel Matichuk
62dd08f5a1 add more cases for simplifying boolean Muxes 2020-07-28 11:57:07 -07:00
Sam Breese
547796118d x86: Add semantics for some AVX2 instructions (#149)
* x86: Add semantics for the vpsrld and vpsrlq instructions

* x86: Add semantics for vpaddq

* Fix Haddock for PointwiseLogicalShiftR

* x86: Change vpsubd to PtSub rather than PtAdd
2020-07-28 11:57:07 -07:00
Kevin Quick
0cb0a89748
Update submodules. 2020-07-20 14:18:35 -07:00
Kevin Quick
f695c4d4c1
[macaw-refinement] updates for app-refactor what4 changes. 2020-07-17 17:30:44 -07:00
Kevin Quick
5b93b1fa00
[macaw-semmc] updates for app-refactor what4 changes
See https://github.com/GaloisInc/what4/pull/55
2020-07-16 23:08:58 -07:00
Sam Breese
48737990f3
x86: Add semantics for some AVX2 instructions (#149)
* x86: Add semantics for the vpsrld and vpsrlq instructions

* x86: Add semantics for vpaddq

* Fix Haddock for PointwiseLogicalShiftR

* x86: Change vpsubd to PtSub rather than PtAdd
2020-07-14 14:41:16 -04:00
Kevin Quick
f9959ecc33
Merge pull request #150 from GaloisInc/submods_20200713
Update submodules per successful master HEADs build.
2020-07-13 13:03:19 -07:00
Kevin Quick
d675f5c97b
Update submodules per successful master HEADs build. 2020-07-13 09:29:17 -07:00
Tristan Ravitch
b160e480a7
x86: Add semantics for the endbr instructions (#147)
This change treats them as no-ops (which is what they do on all released
hardware).  We could represent them with arch extensions.  This has a supporting
change in flexdis86 (included as a submodule).
2020-06-25 13:43:15 -07:00
Ben Selfridge
039b8497fc
updates what4, crucible, etc. (#146)
* update to bv-sized branch of what4 and other things

* removed parameterized-utils submodule completely

* Updates submodules

* Fixes macaw-symbolic w.r.t. crucible-llvm changes

Co-authored-by: Ben Selfridge <ben@000548-benselfridge.local>
2020-06-16 16:49:55 -07:00
Tristan Ravitch
5ba28484f9
symbolic: Add some documentation on pointer operations (#145)
symbolic: Add some documentation on pointer operations

Their behavior is not entirely obvious, so hopefully this should be useful to
someone in the future.
2020-06-13 10:27:43 -07:00
Tristan Ravitch
7ec8df5e92
aarch32: Two bug fixes
* Fix block size accounting in the disassembler

The value in the early failure combinator is used as the *block size* in the
resulting macaw block.  The code was actually using the offset from the
beginning of the segment, which is wrong.  This produced very large blocks that
didn't reflect the results of code discovery and led to decode errors later in
the pipeline.

* Do not throw an error if concreteIte has a symbolic argument

The `concreteIte` combinator turns formula conditionals with concrete operands
into Haskell-level conditional execution.  It would fail because we believed
that there were no cases that could fail to satisfy that condition.  That
assumption was not true - we need to fall back to generating a mux when we have
a symbolic condition.
2020-06-11 15:28:23 -07:00
Kevin Quick
b82ca35564
Merge pull request #142 from GaloisInc/ghc_8_4
Update for GHC 8.4 type management.
2020-06-04 21:47:48 -07:00
Kevin Quick
2c23067318 Update submodules. 2020-06-03 21:37:37 -07:00
Kevin Quick
c625c2cf92
Update for GHC 8.4 type management.
Under GHC8.4, a let binding is independent of the surrounding context,
so the let statements encountered errors related to type matching on
synthesized internal type parameters that could not be identified as
the same due to rigid skolem type binding inside the let.
2020-06-02 11:35:40 -07:00
Sam Breese
02c6cc3cb5
Handle bitwise operations on stack offset abstract values (#136)
- Generalize handling of bitwise operations to also apply them to stack offsets
- Use the extended bitwise handling on AND
2020-05-28 14:04:06 -04:00
Tristan Ravitch
89fc5a73f7
Tr/full arm intrinsics (#137)
Improve the TH codegen for macaw-semmc

This change lazily translates as much as possible.  It also generates somewhat more compact code. This change also finishes implementing primitives for the aarch32 backend.  Complementing the aarch32 changes, the macaw-semmc interface has been modified to allow macaw-aarch32 to avoid a redundant serialize-deserialize round.

Co-authored-by: Kevin Quick <kquick@galois.com>
2020-05-26 09:24:45 -07:00
Kevin Quick
162d7f0c2c
Merge pull request #138 from GaloisInc/release_2_1_0
Update submodules for parameterized-utils release 2.1.0 compatibility.
2020-05-22 14:57:59 -07:00
Kevin Quick
e78c6ad8b5 Merge branch 'release_2_1_0' of github.com:galoisinc/macaw into release_2_1_0 2020-05-22 14:28:47 -07:00