mirror of
https://github.com/angr/pyvex
synced 2026-06-21 13:47:01 +00:00
23503e7919
* Use black * Fix the lint error
32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
class PyVEXError(Exception):
|
|
pass
|
|
|
|
|
|
class SkipStatementsError(PyVEXError):
|
|
pass
|
|
|
|
|
|
#
|
|
# Exceptions and notifications that post-processors can raise
|
|
#
|
|
|
|
|
|
class LiftingException(Exception):
|
|
pass
|
|
|
|
|
|
class NeedStatementsNotification(LiftingException):
|
|
"""
|
|
A post-processor may raise a NeedStatementsNotification if it needs to work with statements, but the current IRSB
|
|
is generated without any statement available (skip_stmts=True). The lifter will re-lift the current block with
|
|
skip_stmts=False upon catching a NeedStatementsNotification, and re-run the post-processors.
|
|
|
|
It's worth noting that if a post-processor always raises this notification for every basic block without statements,
|
|
it will essentially disable the skipping statement optimization, and it is bad for performance (especially for
|
|
CFGFast, which heavily relies on this optimization). Post-processor authors are encouraged to at least filter the
|
|
IRSBs based on available properties (jumpkind, next, etc.). If a post-processor must work with statements for the
|
|
majority of IRSBs, the author should implement it in PyVEX in C for the sake of a better performance.
|
|
"""
|
|
|
|
pass
|