Commit Graph

321 Commits

Author SHA1 Message Date
Kevin Quick
419b977d6b
Add the new function handle return type, used for recursion bounding. 2019-08-07 09:51:57 -07:00
Kevin Quick
2353ad9f6d
Merge branch 'master' into nonce_handle_deparameterize 2019-07-19 17:06:50 -07:00
Kevin Quick
48c3ba1fed
[symbolic] additional nonce-related adjustments from 'ST h' to 'IO'. 2019-07-19 09:40:24 -07:00
Kevin Quick
80de5d94e5
[symbolic] update for use of safe Nonce in crucible.
Update for compatibility with Crucible changes in
https://github.com/GaloisInc/crucible/pull/285.
2019-07-19 00:13:00 -07:00
Kevin Quick
f525351621
Handle conversions for Float Mux in macaw-ppc. 2019-07-11 13:55:01 -07:00
Joe Hendrix
6a4b75852f
Fix missing case in macaw-symbolic 2019-05-30 23:39:38 -07:00
Joe Hendrix
c6a7ba7cd6
Rename pblock fields to be more descriptive. 2019-04-29 22:21:10 -07:00
Joe Hendrix
315cd2f9f0
Cleanups to macaw-symbolic 2019-04-29 21:30:59 -07:00
Joe Hendrix
70ea5b9036
Remove ParsedIte 2019-04-29 20:46:54 -07:00
Joe Hendrix
8aa4650683
Introduce ParsedBranch constructor. 2019-04-29 10:49:00 -07:00
Joe Hendrix
3331a19571
Drop support for branches within blocks. 2019-04-28 13:19:20 -07:00
Joe Hendrix
15676a2e45
Bump versions; Update macaw-symbol for conditional write. 2019-04-17 21:36:49 -07:00
Joe Hendrix
4267dca987
Get x86_symbolic test cases in runable state. 2019-03-25 20:29:35 -07:00
Joe Hendrix
82b96fb62a
Fix warnings; improve PLTStub comment. 2019-03-25 19:27:46 -07:00
Aaron Tomb
70981ba8ea Initial attempt at adapting to structured errors 2019-03-06 10:26:41 -08:00
Iavor Diatchki
65ca5447ea Merge branch 'master' of github.com:GaloisInc/macaw 2019-02-27 16:20:55 -08:00
Iavor Diatchki
1471740282 Only skip assignment if we are assigned to our own initial value. 2019-02-27 15:45:12 -08:00
Kevin Quick
45f5c5e7af
Update cabal version for fields used. 2019-02-27 11:52:18 -08:00
Kevin Quick
f8fce2175e
Sorting of pragma declarations in CrucGen. 2019-02-27 11:51:53 -08:00
Kevin Quick
b53b79471c
Add NondecreasingIndentation pragma to match code formatting. 2019-02-27 11:51:16 -08:00
Kevin Quick
60a3d39e98
More haddock updates for function argument information. 2019-02-27 11:35:20 -08:00
Kevin Quick
fcff1b7c3d
Update all source files for NoStarIsType pragma. 2019-02-27 11:35:09 -08:00
Kevin Quick
8ea677f7ed
[symbolic] Haddock fixes. 2019-02-27 09:30:55 -08:00
Kevin Quick
a1e6f1b841
Update NoStarIsType spec for backward compatibility. 2019-02-27 09:30:26 -08:00
Joe Hendrix
89ffdf088a
Fix macaw-x86-symbolic and update crucible. 2019-02-27 01:43:53 -08:00
Joe Hendrix
e8d2efcaae
Implement bitcast changes to macaw-symbolic 2019-02-26 17:53:34 -08:00
Kevin Quick
b80ab8fb67
[symbolic] update to latest crucible. 2019-02-19 08:24:45 -08:00
Luke Maurer
b23ba5820d CrucGen: Support for jump tables
This needed a bit more surgery than one would like, since we need to
translate the indirect jump to an if-else chain, which means creating a
bunch of "extra" blocks from within the `CrucGen` monad.
2019-02-15 18:35:25 -08:00
Tristan Ravitch
1d3610a783 Revert "Fill in undefineds with nonsense so pretty printing works"
This reverts commit 86ef62645d.

This commit generates invalid Crucible CFGs, which causes downstream analysis to
fail.  Reverting the commit will allow downstream clients to discard invalid CFGs.
2019-02-15 08:35:17 -08:00
Langston Barrett
274808a8ae update parameterized-utils submodule 2019-02-11 11:47:19 -08:00
Kevin Quick
5f12c3da88
[symbolic] Remove unneeded debug import. 2019-02-08 17:31:30 -08:00
Kevin Quick
edb486c6b3
Added toCrucibleEndian in symbolic and use for memory setup in refinement.
Requires updated macaw-loader BinaryFormat information.
2019-02-08 17:30:18 -08:00
Andrei Stefanescu
45e4251bf3 [refinement] Add an unbounded memory allocation at the bottom of the allocation stack. 2019-02-07 17:23:02 -08:00
Andrei Stefanescu
cca17b1c39 [refinement] Handle a code address as an LLVM pointer. 2019-02-06 20:13:47 -08:00
Andrei Stefanescu
cb8245d009 Map each memory segment in the binary using a What4 array. 2019-02-05 20:53:40 -08:00
Andrei Stefanescu
f7f7b6cac3 Merge branch 'master' into refinement 2019-02-04 15:39:19 -08:00
Andrei Stefanescu
87fc7c5439 Fix termStmtToJump. 2019-02-04 13:36:48 -08:00
Andrei Stefanescu
595c98efb8 Add proper mkBlockPathCFG. 2019-02-01 16:13:35 -08:00
Andrei Stefanescu
8ee9196cf6 Add Crucible translation of block paths. 2019-01-31 21:48:44 -08:00
Andrei Stefanescu
620b54e5af Handle all ParsedTermStmt constructors in termStmtToReturn. 2019-01-30 20:24:03 -08:00
Luke Maurer
957addd204 CrucGen: Use SetStruct rather than making a new one from scratch
This means far fewer instructions (and hence fewer registers), and in
turn a lot less heap space.  Peak memory usage is cut in half running
Brittle on a PPC64 exe with standard library.
2019-01-29 10:37:38 -08:00
Luke Maurer
b049a52ae9 CrucGen: Cache BV<->Ptr conversions
There was a fair amount of churn in generated Crucible CFGs due to
values redundantly getting converted back and forth.
2019-01-29 10:01:36 -08:00
Andrei Stefanescu
533dc131a4 Add register lookup and update functions in ArchVals. 2019-01-29 01:21:25 -08:00
Luke Maurer
5a8fba6d08 Cache TypeRepr and Position values
Generating the type of the register structure on demand was causing
`TypeRepr` to be the biggest chunk of the heap.  Similarly, we only need
to create a new `Position` when we change the offset.
2019-01-28 14:47:06 -08:00
Luke Maurer
12daa3a17b Make CrucGen stricter
Most crucially, make the `CrucGen` monad itself strict.  The heap was
filling up with old `CrucGenState`s being held onto by unevaluated
computations, since *every* computation was lazy.  Plugged a few other
sources of `CrucGenState` leaks as well.
2019-01-28 14:47:06 -08:00
Andrei Stefanescu
d0dd34a5bd [refinement] Initial setup for symbolic execution of a parsed block. 2019-01-25 22:46:57 -08:00
Joe Hendrix
ab066e2743
Merge remote-tracking branch 'public/master' into jhx/block-addr-removal 2019-01-22 11:12:25 -05:00
Joe Hendrix
8bf0d00e66
Fix warnings; crucible changes. 2019-01-22 10:25:45 -05:00
Joe Hendrix
0eac4d6b49
Remove blockAddr; update dependencies 2019-01-22 05:07:52 -05:00
Kevin Quick
7eabf2d01a
Handle additional side conditions returned by loadRawWithSideConditions. 2019-01-21 12:20:48 -08:00
Kevin Quick
f2b98011ce
Use initSimContext to create a Crucible SimContext.
This helps to immunize against changes in SimContext... e.g. the
addition on the profilingMetrics field that initSimContext provides a
default value for.
2019-01-21 12:20:00 -08:00
Nathan Collins
86ef62645d Fill in undefineds with nonsense so pretty printing works 2019-01-17 14:25:59 -08:00
Kevin Quick
190ed07121
[symbolic] add imports for mappend operator for GHC 8.2.2. 2019-01-12 18:10:16 -08:00
Tristan Ravitch
379f89ee78 Update to the latest crucible version
The llvm memory model was extended with better diagnostics and configurable
handling of undefined behavior.  macaw-symbolic uses no undefined behavior
checking, as those operations are only undefined in C.
2019-01-11 23:01:07 -08:00
Tristan Ravitch
7b57ac0c34 Additional haddocks 2019-01-11 13:58:15 -08:00
Tristan Ravitch
bda8ace256 symbolic: Clean up the memory mapping API
The API is now cleaner and includes more documentation (with an example).  Some
unnecessary types are removed/combined.
2019-01-11 13:21:04 -08:00
Tristan Ravitch
81f8f5a849 Add an extra comment to the backend docs 2019-01-11 13:11:40 -08:00
Tristan Ravitch
68c5578f03 symbolic: Translate the InstructionStart metadata statement into Crucible
Before, we just discarded them during the translation.  They are useful metadata
for generating diagnostics in Crucible, so this commit translates them.  They
are no-ops during symbolic evaluation.

To make them truly useful, they need to include the address of the block that
they belong to (their data payload in macaw is just an offset from the start of
a block).  This information wasn't available before, so it has to be plumbed
through in macaw-x86.
2019-01-10 22:23:39 -08:00
Tristan Ravitch
694e463e5d symbolic: Export another useful value wrapper in the user-facing API
This is a data wrapper used to convert macaw to crucible values
2019-01-10 22:22:44 -08:00
Tristan Ravitch
cc85cfe657 Clean up and document the macaw-symbolic API
This cleanup consolidates the interface to macaw symbolic into two (and a half)
modules:

 - Data.Macaw.Symbolic for clients who just need to symbolically simulate
   machine code
 - Data.Macaw.Symbolic.Backend for clients that need to implement new
   architectures
 - Data.Macaw.Symbolic.Memory provides a reusable example implementation of
   machine pointer to LLVM memory model pointer mapping

Most functions are now documented and are grouped by use case.  There are two
worked (compiling) examples in the haddocks that show how to translate Macaw
into Crucible and then symbolically simulate the results (including setting up
all aspects of Crucible).  The examples are included in the symbolic/examples
directory and can be loaded with GHCi to type check them.

The Data.Macaw.Symbolic.Memory module still needs a worked example.

There were very few changes to actual code as part of this overhaul, but there
are a few places where complicated functions were hidden behind newtypes, as
users never need to construct the values themselves (e.g., MacawArchEvalFn and
MacawSymbolicArchFunctions).  There was also a slight consolidation of
constraint synonyms to reduce duplication.  All callers will have to be updated.

There is also now a README for macaw-symbolic that explains its purpose and
includes pointers to the new haddocks.

This commit also fixes up the (minor) breakage in the macaw-x86-symbolic
implementation from the API changes.
2019-01-10 18:20:54 -08:00
Kevin Quick
98807daee2
Added -Wcompat for warnings about future compatibility. 2019-01-10 13:43:27 -08:00
Kevin Quick
b5ef20067d
Explicit results checking instead of implicit pattern monad fail. 2019-01-10 13:39:09 -08:00
Kevin Quick
16a867efd2
Haddock and README fixes. 2019-01-08 16:38:38 -08:00
Tristan Ravitch
b398db41b2 Merge branch 'master' of github.com:GaloisInc/macaw into HEAD 2019-01-07 20:43:32 -08:00
Tristan Ravitch
9c19e1b37d macaw-symbolic: Export an extra constructor
This constructor is very useful for traversing terms externally
2019-01-07 20:42:52 -08:00
Luke Maurer
46cdd8be82 Adapt to Nonce-based registerized CFGs 2019-01-03 12:10:24 -08:00
Luke Maurer
c43a0c24d8 Add INLINE pragmas to CrucGen monad instance 2018-12-26 18:42:50 -08:00
Brian Huffman
8dc4a54ca2 Use new constant noAlignment instead of literal 0 :: Alignment. 2018-12-20 14:03:38 -08:00
Brian Huffman
00c08376e5 Bump crucible version; adapt to crucible-llvm changes. 2018-12-18 17:47:50 -08:00
Brian Huffman
7e6582fa07 Bump submodules, adapt to changes in crucible-llvm api. 2018-12-18 13:47:51 -08:00
Andrei Stefanescu
3f39c614e9 Add support for RepMovs and RepStos. 2018-11-27 02:23:36 -08:00
Rob Dockins
5f75652a37 Update crucible and parameterized-utils submodules 2018-11-14 10:33:10 -08:00
Luke Maurer
1d88f1fe98 Emit ErrorStmt rather than failing when an instruction has no successor
We were getting "Unterminated crucible block" errors for any code
containing the X86 HLT instruction.  An ErrorStmt is perhaps not
precisely what HLT means, but we're going with that for the moment.
2018-11-08 16:07:21 -08:00
Joe Hendrix
2e93d42893
Merge remote-tracking branch 'public/master' 2018-10-22 13:04:30 -07:00
Joe Hendrix
c886c19b03
Rename Memory exports.
This update renames many of the declarations exported by
Data.Macaw.Memory so that we have more consistent names.

The majority of the existing names are now exported with DEPRECATION
warnings.  Some of the symbol declarations that were not used by the
Memory datatype have been moved to other modules.

The minor version of macaw-base has been incremented.
2018-10-18 10:07:20 -07:00
Daniel Wagner
062242e8e6 implement conversion from macaw bit-scan functions to crucible 2018-10-12 13:33:13 -04:00
Daniel Wagner
5cacfec77a syscall fallthrough in CFG creation 2018-10-10 15:04:04 -04:00
Andrei Stefanescu
30b54e399a Translate PopCount to Crucible. 2018-09-28 20:25:18 -07:00
Andrei Stefanescu
59b756c185 Add symbolic semantics for X86 sse_ucomis and sse_cvttsx2si. 2018-09-19 18:47:47 -07:00
Luke Maurer
5c78e9258b
Merge pull request #11 from GaloisInc/cfg-rewriting
Adapt to changes to Crucible for CFG rewriting
2018-09-06 16:46:24 -07:00
Luke Maurer
e08fdf6efa Merge remote-tracking branch 'origin/master' into cfg-rewriting 2018-08-28 13:26:43 -07:00
Andrei Stefanescu
786a45c5e0 Handle float type in Macaw Symbolic. 2018-08-27 11:37:01 -07:00
Brian Huffman
8199a9a088 Merge branch 'master' into saw-script
# Conflicts:
#	symbolic/src/Data/Macaw/Symbolic.hs
#	symbolic/src/Data/Macaw/Symbolic/MemOps.hs
#	x86_symbolic/src/Data/Macaw/X86/Crucible.hs
2018-08-27 11:21:13 -07:00
Brian Huffman
c29d4c924a Merge branch 'master' into saw-script 2018-08-27 10:27:00 -07:00
Luke Maurer
abd51d835d Merge remote-tracking branch 'origin/master' into cfg-rewriting 2018-08-23 14:16:46 -07:00
Brian Huffman
a33202b583 Adapt to changes in crucible-llvm package. 2018-08-20 16:38:20 -07:00
Kevin Quick
05a4d96cd7
Update register CFG initialization for new label and value fields. 2018-08-10 15:06:04 -07:00
Luke Maurer
0c2076d54d Merge remote-tracking branch 'origin/master' into cfg-rewriting 2018-07-24 17:11:20 -07:00
Tristan Ravitch
4d1299a6d2 Merge branch 'master' into breaking-change/symbolic-global-map 2018-07-24 16:53:51 -07:00
Joe Hendrix
dc4a4f0f5f
Merge remote-tracking branch 'public/stable' into jhx-x86-improvements 2018-07-20 20:32:09 -07:00
Rob Dockins
f14222e4a4 Update to track crucible API changes 2018-07-20 18:41:54 -07:00
Luke Maurer
03dc25c6b3 Set new cfgNextLabel field in generated CFG 2018-07-20 11:38:15 -07:00
Luke Maurer
bd9d77ed93 Set new cfgNextValue field in generated CFG 2018-07-17 11:09:10 -07:00
Luke Maurer
b1c5bcfd25 Expose the registerized forms of produced CFGs
Now one can either directly produce an SSA CFG or produce a registerized
one, perhaps mess with it (as with the new
`Lang.Crucible.Utils.RegRewrite` module), then translate it to SSA.
2018-07-16 13:34:03 -07:00
Tristan Ravitch
ed52c54162 Revise the function handle lookup operation
It needs to take (and return) a Crucible state so that we can insert the new
function handle into the handle map (so that the Crucible Call statement can
find it).
2018-07-05 15:16:17 -07:00
Tristan Ravitch
dd53e4231f Revise the GlobalMap API
The GlobalMap is mapping from virtual addresses computed by a program to the
corresponding logical address in the LLVM memory model during symbolic
simulation.  It is needed because addresses in binaries are computed from
bitvectors, which are not valid pointers in the LLVM memory model.

This change turns the GlobalMap from a Data.Map into a function, which is more
flexible and allows for a wider range of possible implementations of this
functionality, especially implementations that introduce numerous disjoint
segments for the original binary contents.
2018-06-19 17:27:30 -07:00
Joe Hendrix
494f6c176d
Updates to Macaw. 2018-06-06 11:48:45 -07:00
Simon Winwood
6a29ed6e56 Added function to convert a single block to Crucible. 2018-06-01 10:54:27 -07:00
Tristan Ravitch
493377cbb9 symbolic: Rewrite the translation of macaw calls into crucible
The former strategy was to represent macaw calls using a macaw-specific
MacawCall statement, which was interpreted by a call handler (which took
registers+memory as input and produced new registers+memory as an output).  This
worked for cases where the callee had a summary, but did not allow for
simulating the called function inline.  Moreover, the OverrideSim monad doesn't
admit recursive calls in this context (we can make the call, but we can't get
the final simulator state out, which we would need to implement a call handler
in macaw-symbolic).

The new strategy is to translate macaw calls into two separate statements:

1. A `LookupFunctionHandle` call, which returns a Crucible FunctionHandle, and
2. A normal Crucible `Call`

The interpretation of LookupFunctionHandle has the full register+memory state
available, and can inspect the IP to determine which function has been
called (and provide the necessary FunctionHandle, which will be interpreted by
Crucible in the standard way).  Note that the handler is in IO, so client code
can translate functions being simulated into Crucible on-demand.
2018-05-25 18:19:19 -07:00
Rob Dockins
c382b59bed Bump crucible submodule to pull in crucible/what4 split refactor,
and update macaw-symbolic and macax-x86-symbolic.
2018-05-15 15:58:14 -07:00
Rob Dockins
643989f4b6 Update Macaw libraries for recent Crucible changes 2018-05-02 17:21:26 -07:00
Joe Hendrix
9047cb41fb
Fix warnings in macaw-base; Fix errors in macaw-symbolic.
This also makes some changes to eliminate a couple redundent
type-class constraints in CrucGen.hs which propagated to other changes.
2018-04-24 01:17:03 -07:00
Joe Hendrix
052506f202
Remove PhaseHolderStmt. 2018-04-23 11:35:31 -07:00
Tristan Ravitch
b2d955cb3e symbolic: export macawExtensions
This makes it easier (possible?) to call the simulator with a more custom setup
than is supported by runCodeBlock
2018-04-13 11:52:30 -07:00
Tristan Ravitch
9f93fd09c9 symbolic: Expose the constructor for MacawSimulatorState
This is needed to run the simulator
2018-04-13 09:06:03 -07:00
Tristan Ravitch
a229951066 symbolic: Re-export MacawExt to make it easier to use Data.Macaw.Symbolic 2018-04-02 14:20:43 -07:00
Tristan Ravitch
1517bf64b4 symbolic: Translate the macaw ArchState statement into crucible
This commit introduces a new syntax extension for the macaw translation to
represent the ArchState statement: MacawArchStateUpdate.

Also adds some new instances for MacawCrucibleValue.
2018-04-02 09:14:17 -07:00
Jason Dagit
372d7d7208 Add a new macaw statement to record updates to machine registers
The new statement is called `ArchState`, and has two fields: an address and a
map.  The address is the address of the instruction it is standing in for.  The
map contains a mapping from the *machine registers* that the instruction updated
to the *macaw values* that were assigned to those locations.

This is useful metadata for debugging, but is also required to do some types of
architecture-independent analysis (where we can still reason about machine
register contents).
2018-03-29 09:53:08 -07:00
Iavor Diatchki
3736ce137a Remove some warnings. 2018-03-23 14:37:08 -07:00
Iavor Diatchki
2f070f99f0 Setup LLVM intrinsics, and make sure to use the config as the one for the sym. 2018-03-23 14:34:38 -07:00
Iavor Diatchki
79a4cdf39e Add support for forcing allocation of fresh bits (as opposed to pointer/bits) 2018-03-22 13:11:22 -07:00
Iavor Diatchki
cf34388d41 Don't validate pointer after alignment.
We validate only when using pointers.
2018-03-22 13:10:58 -07:00
Iavor Diatchki
21ffae1ebe Prefix fresh names with macaw
Hopefully, this will avoid clashes with keywords.
2018-03-21 16:14:31 -07:00
Iavor Diatchki
36e6c8f7b9 Export GlobalMap 2018-03-20 19:56:52 -07:00
Iavor Diatchki
cec6f52e0f Merge branch 'master' of github.com:GaloisInc/macaw 2018-03-20 19:04:05 -07:00
Iavor Diatchki
20135c91ae Generate fresh symbolic values. 2018-03-20 19:03:50 -07:00
Joe Hendrix
77f518a9ab
Merge pull request #3 from robdockins/master
Minor update to track crucible API
2018-03-20 15:03:29 -07:00
Iavor Diatchki
4988297429 Change semantics for pointers!
When computing pointers we don't always check that the results are valid.
Instead, we do the check whenever we use the pointers.

The reason is to support code where pointers are temporarily "bad"
but are never used that way.  For example:


   subq $10, %aex   # aex contains a pointer
Loop:
   addq $10, %aex
   ...
2018-03-16 16:14:25 -07:00
Iavor Diatchki
1ea6792f28 Add special treatment for "aligning" pointers.
We don't really do anything with alignment, but sometime asm code
ands pointers to align them.  For example `andq $(-64), %rsp`
aligns the pointer to a multiple of 64.

To support code like this we treat "and"-ing a pointer with a special
constant of the form 0xFFFF...FF000  (i.e., and alignment) as a subtracting
`0x0000...00XXX`  where the `XXX` is symbolic.

This looses some information (i.e., we don't know that the result is aligned).
However, it is good enough for checking memory safety, as it covers
all possible results of the alignment.
2018-03-16 13:35:58 -07:00
Rob Dockins
4a4b9d7a8a Minor update to track crucible API 2018-03-15 17:21:42 -07:00
Iavor Diatchki
f8dfc368c6 Allow reading from raw global addresses. 2018-03-14 17:20:22 -07:00
Iavor Diatchki
9c7070f8e6 Haddock comments fixes, thanks to Brian 2018-03-09 09:51:55 -08:00
Iavor Diatchki
89529ed7e3 Be more lenient when interpreting bogus expressions.
Previously we were asserting that some bogus-y things don't happen.
Unfortunately, these expressions can occur in code that was not
directly written by the user (e.g., comparisons for setting various
machine flags).   To allow for that, we allow the expressions, but
give them undefined values.  So the proof will succeed only if it
does not depend on the values of these bogus comparisons.
2018-03-07 10:22:46 -08:00
Iavor Diatchki
417c34429d Add some support for function calls.
We basically punt, by passing-in a function to use as the implementation of
all functions.  This function is supposed to look at the IP, and
decide what to do.
2018-03-05 16:29:15 -08:00
Iavor Diatchki
32710829f6 Use pointer addition, only when the value is not a bit-vector.
The other version was getting confusing by the NULL pointer.
2018-03-05 13:47:55 -08:00
Iavor Diatchki
4fa262a14c Implement MacawFresh for booleans. 2018-03-05 13:47:21 -08:00
Iavor Diatchki
9094d1bd91 Improve failure message. 2018-03-01 14:36:24 -08:00
Iavor Diatchki
c69349e957 Add support for global memory regions. 2018-03-01 10:00:32 -08:00
Joe Hendrix
54038b5f20
Merge branch 'mem-model' of github.com:GaloisInc/macaw into mem-model 2018-02-26 12:44:07 -08:00
Joe Hendrix
fa6f74b583
Remove unused freshVarsForRegs 2018-02-26 12:42:08 -08:00
Iavor Diatchki
aac5a3e00f Commit the bug fix. 2018-02-21 15:24:25 -08:00
Iavor Diatchki
e3f4e0875b Bugfix and show more info when failing. 2018-02-21 15:06:18 -08:00
Iavor Diatchki
8bf523f8b1 Fill in imitted lemma 2018-02-21 09:47:53 -08:00
Joe Hendrix
0f6d030c86
Initialize variable for storing registers before use. 2018-02-19 12:48:59 -08:00
Iavor Diatchki
b8aa67918b Assocaite global memory varaible name with its value. 2018-02-13 16:44:35 -08:00
Iavor Diatchki
470182dccb Only pass around the memory var during execution, not CFG generation. 2018-02-13 10:14:22 -08:00
Iavor Diatchki
ad5f7ceddb Add write operation 2018-02-12 10:28:39 -08:00
Iavor Diatchki
b57483b1f8 Start on writeMem 2018-02-09 16:59:42 -08:00
Iavor Diatchki
1c07b88ae7 Implement conditional read. 2018-02-09 15:30:06 -08:00
Iavor Diatchki
3c2fdeafe4 Implement reading from memory. 2018-02-09 14:13:39 -08:00
Iavor Diatchki
86c730043e Cleanup pointer manipulation operations. 2018-02-09 11:41:39 -08:00
Iavor Diatchki
c7bb8d87c4 More memory model. 2018-02-08 16:49:42 -08:00
Iavor Diatchki
561d211972 Get started on integrating the LLVM memory model. 2018-02-06 16:47:13 -08:00
Joe Hendrix
e1e558239e
Minor cleanups. 2018-01-29 01:06:59 -08:00
Joe Hendrix
cfeabfde05
Minor cleanups. 2018-01-24 10:49:12 -08:00
Joe Hendrix
679108d73e
Merge branch 'master' of github.com:GaloisInc/macaw 2018-01-23 15:17:12 -08:00
Joe Hendrix
e94689bd7a
Continued macaw-symbolic progress. 2018-01-23 15:16:26 -08:00
Iavor Diatchki
8d4e940bb7 More simplifications; revert back to original.
It would appear that once the lifted wrapper functions were
in places, the types happen to match.
2018-01-23 15:09:38 -08:00
Iavor Diatchki
66ad7e521b Define the traversableFC instance. 2018-01-23 14:30:29 -08:00
Joe Hendrix
d1bdff9866
Additional code for macaw-symbolic. 2018-01-22 16:58:33 -08:00
Joe Hendrix
365aa7fb39
Additional macaw-symbolic progress. 2018-01-22 16:38:17 -08:00
Joe Hendrix
8b97faa731
More progress on Macaw symbolic; compile fixes for Macaw changes. 2018-01-22 15:28:20 -08:00
Joe Hendrix
b7e06e64ee
Progress on macaw-symbolic and macaw-x86-symbolic. 2018-01-16 15:06:31 -08:00
Joe Hendrix
f6699b1b57
Port to use crucible syntax extensions. 2018-01-09 10:40:14 -08:00
Joe Hendrix
9530bf97bb
Update for crucible syntax-extensions. 2018-01-08 13:45:32 -08:00
Joe Hendrix
7ee4f6ef28
Start support for ParsedBlock. 2018-01-05 11:02:11 -08:00
Joe Hendrix
250c41d40b
Progrsss on symbolic and fixes to x86-support. 2018-01-03 13:18:13 -08:00
Joe Hendrix
cbcd835f48
Fix macaw-symbolic compilation bugs. 2018-01-02 22:26:17 -08:00
Joe Hendrix
deab99869d
Update for parameterized-utils compat. 2018-01-02 17:31:42 -08:00
Joe Hendrix
a15fc42ed4
Minor updates. 2017-12-21 15:42:33 -08:00
Joe Hendrix
478e7db31a
Refactor X86 semantics types; add tuples to Macaw. 2017-12-01 13:58:20 -08:00
Joe Hendrix
2bd710b49d
Move global function argument analysis to Macaw; Syscall changes
We also moved the syscall interface to be X86 specific to be compat
with earlier changes.
2017-11-22 14:07:55 -08:00
Joe Hendrix
9b2b95512d
Add support for memory "regions" to better support relocatable files. 2017-11-07 13:15:03 -08:00
Joe Hendrix
f34642e398
Fix macaw-symbolic to work with macaw-base changes. 2017-10-27 16:40:21 -07:00
Joe Hendrix
3f9e470b84
Fix macaw-symbolic compile error. 2017-10-17 14:09:48 -07:00
Joe Hendrix
135add62ae
Minor refactorings so ARM disassembler doesn't need MemSegmentOff. 2017-10-12 23:34:39 -07:00
Joe Hendrix
b17122e4c5
Fix macaw-symbolic compile error; add additional operands. 2017-10-06 14:35:22 -07:00
Joe Hendrix
dd7c817702
Modify BVTestBit to require arguments have same width. 2017-10-06 11:22:55 -07:00
Joe Hendrix
c77d1ac421
Remove generic quot/rem ops, and BoolMux; Refactor macaw-symbolic. 2017-10-02 14:40:14 -07:00
Joe Hendrix
7c33bf82e4
Update license information. 2017-09-27 15:59:06 -07:00
Joe Hendrix
0242a88fa6
Rename macaw to macaw-base and move directory. 2017-09-27 15:41:37 -07:00