Check that logfile exists before trying to register callbacks to avoid crash.
pandroid: Android keycode state is just a bool

Don't make serialization difficult with a useless struct
pandroid: savevm handler for goldfish_events
pandroid: add cpu_memory_rw for goldfish_nand
Goldfish's NAND hardware is writing to virtual addresses.
Worse, it was doing so in a way that evaded record/replay capture.
Pandroid: use cpu_memory_rw() in all goldfish hw that touches virtual memory.
ARM: support mem callbacks on ARM
Commit work by Sam and I that starts instrumentation and taint modeling of IN and OUT x86 instructions.
Always verify LLVM code during generation.
Finish adding x86 port support in dynamic logging, taint processor, shadow memory.
pandroid: prevent double "boot properties initialized" message
pandroid: include the system time in snapshots

The timer previously only fixed up its current next interrupt.
Anything reading the time skipped from the host's clock at savevm
to the host's clock at loadvm.
After this change, it the clock after a load snapshot will be counting
from the time at saving the snapshot.
pandroid: remove memcpy calls from qemu_pipe and qemud

QEMUD pipe code currently directly reads and writes the guest's physical memory.
Instead we'll access the guest's memory using APIs which capture data for the
nondeterminism log for record/replay.

This fixes Android record/replay.
qemu_pipe: Re-enable qemud pipe names in snapshots

Pipe names are serialized and deserialized using qemu_get_string and
qemu_put_string, which were added by the Android team, and are only enabled
when building with CONFIG_ANDROID.

Current (modern) Qemu devices use a higher-level API, and don't directly call
qemu_get_* and qemu_put_*.
Update Android readme
Force TB flush on every loadvm.

This resolves a mysterious issue with Android, where dalvik segfaults
trying to access cached JITed code after loadvm.
Monitor command for recording from an existing snapshot.
pandroid: Android console now quits by asking QEMU to shut down cleanly

The standard Android console (and thus adb emu kill) quit the emulator
with a call to exit(). During record, this does not trigger end_record.
Now the console will properly shut down QEMU and cleanly end the record.
rr: command line options for recording from a snapshot and replaying

-record-from <snapshot> will load the VM state at <snapshot> and
begin a new recording at <snapshot>-rr-nondet.log
-replay <recording> will load the VM state at <recording>-rr-snp and
load the nondeterministic IO from <recording>-rr-nondet.log

-loadvm, -record-from, and -replay are mutually exclusive options
snapshots: return error codes on failure loading or saving

Also support this in RR.
Begin_replay() and begin_record() don't actually fail because of this yet.
record_from: do a new snapshot before beginning a recording

Before a recording from <snapshot>, save a new snapshot named
<snapshot>-rr-snp, so that replay will be able to load it without any
modifications.