Skip to content

uwplse/SaltShaker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SaltShaker is a solver-aided tool that checks, for all possible machine states, that an x86 instruction executed by RockSalt’s Coq x86 semantics behaves according to its instruction specifications extracted from STOKE. SaltShaker verified the RockSalt semantics of over 15,000 instruction instantiations in under 2h, found 7 bugs in RockSalt, and found 1 bug in STOKE. We reported these bugs, and they were subsequently fixed by the respective developers.

Running

Checkout the project with:

git clone --recursive git@github.com:uwplse/SaltShaker

Build with:

docker build -t x86sem .

Verify a couple of instruction variants with:

docker run x86sem

Development

Run development environment console:

docker rm -f x86sem; docker run --name x86sem --entrypoint /bin/bash -v $(pwd):/x86sem -ti x86sem

If you like the fish shell (i do) run:

docker rm -f x86sem; docker run --name x86sem --entrypoint /usr/bin/fish -v (pwd):/x86sem -ti x86sem

Build project in development environment console:

make -C /x86sem

Connect emacs to development environment locally:

emacs /docker:x86sem:/x86sem/src/coq/Compare.v

Connect emacs to development environment remotely:

emacs "/ssh:user@machine|docker:x86sem:/x86sem/src/coq/Compare.v"

Make sure your emacs has ProofGeneral and docker-tramp installed, and enable-remote-dir-locals must be set.