Source code for angr.analyses.data_dep.sim_act_location

[docs]class SimActLocation: """ Structure-like class used to bundle the instruction address and statement index of a given SimAction in order to uniquely identify a given SimAction """
[docs] def __init__(self, bbl_addr: int, ins_addr: int, stmt_idx: int): self.bbl_addr = bbl_addr self.ins_addr = ins_addr self.stmt_idx = stmt_idx
def __repr__(self): return f"SimActLocation<{hex(self.bbl_addr)}.{hex(self.ins_addr)}.{hex(self.stmt_idx)}>" def __hash__(self): return hash((self.bbl_addr, self.ins_addr, self.stmt_idx)) def __eq__(self, other): if not isinstance(other, SimActLocation): return False return self.bbl_addr == other.bbl_addr and self.ins_addr == other.ins_addr and self.stmt_idx == other.stmt_idx
# def __add__(self, other): # if not isinstance(other, int): # return # # self._stmt_idx += other DEFAULT_LOCATION = SimActLocation(0, 0, 0) # To be used when a location isn't necessary (eg, ConstantDepNode)
[docs]class ParsedInstruction: """ Used by parser to facilitate linking with recent ancestors in an efficient manner """
[docs] def __init__( self, ins_addr: int, # Instruction that was parsed min_stmt_idx: int, # Index of first statement in instruction max_stmt_idx: int, ): # Index of last statement in instruction self.ins_addr = ins_addr self.min_stmt_idx = min_stmt_idx self.max_stmt_idx = max_stmt_idx