Commit Graph

620 Commits

Author SHA1 Message Date
Kevin Quick
01b8175e7f
[x86_symbolic] Update cabal specification for compliance. 2018-11-25 22:01:40 -08:00
Kevin Quick
0ee3f7df2d
[x86_symbolic] more info for unimplemented statement and termstmt semantics. 2018-11-25 22:00:19 -08:00
Kevin Quick
3f77e763e9
Implement NoStarIsType for GHC 8.6. 2018-11-21 18:27:42 +00:00
Kevin Quick
1d7cdc87eb
Implement NoStarIsType and MonadFail for GHC 8.6. 2018-11-21 00:08:33 +00:00
Kevin Quick
7a64cb614f
Explicit NoStarIsType with Data.Kind.Type and increasing do indentation (for GHC 8.6) 2018-11-20 09:43:48 +00:00
Joe Hendrix
1547712176
Bump parameterized-util version. 2018-11-17 16:03:34 -08:00
Joe Hendrix
87e69bdfc8
Merge remote-tracking branch 'public/master' into jhx/plt-support 2018-11-17 15:59:28 -08:00
Joe Hendrix
127e7fbe34
Bump submodules. 2018-11-17 15:52:14 -08:00
Joe Hendrix
c4b7252c77
Add specialized terminal statement for PLT stubs. 2018-11-16 13:40:40 -05:00
Rob Dockins
5f75652a37 Update crucible and parameterized-utils submodules 2018-11-14 10:33:10 -08:00
Joe Hendrix
23fe50bd45
Fix stack offset. 2018-11-12 15:28:32 -05:00
Joe Hendrix
bb63f9f859
This fixes tail call detection, and allows architecture-specific checks. 2018-11-12 11:56:44 -05:00
Joe Hendrix
6a1a4162f1
Merge pull request #15 from GaloisInc/jhx/fix-graphmod
Fix graphmod script
2018-11-12 11:13:03 -05:00
Joe Hendrix
cbbb6c8b0a
Merge branch 'master' into jhx/fix-graphmod 2018-11-12 10:33:21 -05:00
Joe Hendrix
b9ffb894cf
Merge pull request #16 from GaloisInc/jhx/fix-travis
Fix travis builds.
2018-11-12 10:32:36 -05:00
Joe Hendrix
6ce5a95b83
Fix travis builds. 2018-11-12 09:58:10 -05:00
Joe Hendrix
3c594dc6f8
Fix graphmod script 2018-11-12 09:42:06 -05: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
Kevin Quick
8e55f1644f
[base] Remove obsolete/unused GaloisDwarf.hs file. 2018-11-02 15:56:20 -07:00
Kevin Quick
ceba0bfa67
[x86] Update memory references to remove deprecated uses. 2018-10-31 13:48:06 -07:00
Kevin Quick
db17327121
[x86] Add andnps semantics with consolidation of binary bitwise support. 2018-10-31 11:50:15 -07:00
Kevin Quick
6d996f7739
[x86] Add shld and shrd instruction semantics. 2018-10-31 11:49:14 -07:00
Kevin Quick
1ca2c5582c
[x86] Fix cvtsd2ss instruction mnemonic. 2018-10-31 11:48:18 -07:00
Kevin Quick
3c76f404af
[x86] Comment fixes. 2018-10-31 11:47:52 -07:00
Kevin Quick
6212a69233
[x86] Add semantics for sqrtss and sqrtsd. 2018-10-31 11:46:01 -07:00
Nathan Collins
aa87eb9a45 Delete top-level stack.yaml symlink
To avoid conflicting stack.yaml files when crucible is used a
submodule in another repo with a top level stack.yaml.

Also, update the README to include creating a stack.yaml symlink
before building with stack the first time.
2018-10-30 16:12:16 -07:00
Joe Hendrix
8ce9d06d27
Fix handling for non-position independent, but dynamically linked executables. 2018-10-25 13:49:21 -07:00
Joe Hendrix
4594938dfd
Make decoding position independent; Support translating fixed blocks. 2018-10-25 13:36:21 -07:00
Tristan Ravitch
0513ae7a39 x86: Add some more missing signed immediate handling cases in getAddrRegSegmentOrImm
This is not currently an error, as this function is only used in the definition
of the semantics for push, which doesn't accept a signed immediate value.  This
fix is defensive in case someone decides to re-use this helper in another
context where the missing cases could cause a problem.
2018-10-24 10:25:18 -07:00
Tristan Ravitch
d6060e51be x86: Fix a bug affecting imul (and add a test case)
We were hitting a translation error for imul in another application - this test
case is a reduced example demonstrating the problem.

The root cause was that there were a few missing cases for the new signed
immediate values from flexdis; this caused a fallthrough that mis-identified
signed immediates as non-immediates, triggering an error.
2018-10-24 10:23:51 -07:00
Tristan Ravitch
cc165d7316 x86: Make the test suite more verbose on translation errors
This makes debugging easier
2018-10-24 10:22:21 -07:00
Tristan Ravitch
563547fee5 Add semantics for minss, maxss, minsp, and maxsp (x86) 2018-10-23 15:18:40 -07:00
Joe Hendrix
2e93d42893
Merge remote-tracking branch 'public/master' 2018-10-22 13:04:30 -07:00
Joe Hendrix
aa6da4193b
Merge branch 'jhx/memory-cleanup' 2018-10-22 13:03:58 -07:00
Daniel Wagner
290b66588e Merge branch 'dmwit/renovate-loop-perf-2' 2018-10-22 15:04:30 -04:00
Kevin Quick
46a2c1c72a
Minor spelling fix in Types haddock docs. 2018-10-18 22:31:13 -07:00
Joe Hendrix
3948314813
Export AddrSymMap 2018-10-18 12:59:53 -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
Luke Maurer
8b0c58c661 Make architecture type families injective
This should cut down on the number of proxies/explicit type arguments
needed when dealing with these types.

Awkwardly, ArchTermStmt isn't injective, because PPC32 and PPC64 happen
to use exactly the same type. We could add an argument to that type and
then all the families could be injective.
2018-10-12 15:23:13 -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
Joe Hendrix
18e36f84aa
Ensure X86 register names are unique 2018-10-03 11:36:44 -07:00
Andrei Stefanescu
30b54e399a Translate PopCount to Crucible. 2018-09-28 20:25:18 -07:00
Andrei Stefanescu
9c64a192d2 Evaluate PopCount and Bsr with concrete arguments. 2018-09-27 23:23:25 -07:00
Joey Dodds
1d3ce2ce77 add back import 2018-09-27 16:48:05 -07:00
Joey Dodds
d681046ddd removed an extra space 2018-09-27 16:15:18 -07:00
Joey Dodds
4f1f8656dd Merge branch 'master' of https://github.com/GaloisInc/macaw into HEAD 2018-09-27 15:39:01 -07:00
Joey Dodds
82b60bc315 add memory command to return all symbols as opposed to just function symbols 2018-09-27 15:18:15 -07:00
Daniel Wagner
d3f19048ce don't double-offset in pretty-printer
The pretty-printer for Stmts takes a pretty-printer function as an
argument. This used when a Stmt stores an offset from the beginning of a
block can, but we don't have information about that block internally in
the Stmt.

An ArchState Stmt stores an ArchMemAddr, which is independent of the
block it's in. Previously we were treating the ArchMemAddr as an offset
and passing it to the pretty-printer function for offsets; in practice
this means most of them were printed as values about twice as big as
they were supposed to be.
2018-09-26 16:29:26 -04:00
Andrei Stefanescu
59b756c185 Add symbolic semantics for X86 sse_ucomis and sse_cvttsx2si. 2018-09-19 18:47:47 -07:00