You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* error handling and performance tweaks
Sorry for a little bit dirty pull request featuring several
independent changes, but it is really tedious to split it into several
PRs.
The most important and controversial change is that we now capture
conflicts when disassemble. The conflict is reported, the instruction
is marked as invalid and the whole chain instructions that led to it,
is rejected. The previous behavior was terminating the program with
an error message, which to my taste is more correct, but is
unsatisfying from the user-perspective. We might return the old
behavior after the release, in the development version of bap, as most
of the conflicts are programmers' errors. The motivation for
capturing conflicts was introducing pattern-based instruction
encoding identification, which naturally can have false
positives (which we occasionally see in some ARM interworked
binaries).
The other changes concern how our lifters report and handle
errors. Since we can now have multiple lifters each supplying
semantics for a subset of the instruction set, we no longer assume
that an unhandled instruction is an error (it might be handled by some
other lifter). We still report errors on instructions that a lifter
claim to lift but failed to lift.
And since the log file is now much cleaner, I was able to detect some
missing cases, mostly for thumb2 (via arm) instructions, which are now
handled.
Finally, this PR removes the `is-valid` promise from thumb, which
wasn't necessary but was introducing a little bit of slowdown.
* fixes the empty instruction BIL intrinsic
0 commit comments