Ejemplo n.º 1
0
    def _perform_vex_stmt_Exit(self, guard_bundle, target_bundle, jumpkind):
        guard, guard_deps = guard_bundle
        target, target_deps = target_bundle

        if o.TRACK_JMP_ACTIONS in self.state.options:
            guard_ao = SimActionObject(guard, deps=guard_deps, state=self.state)
            target_ao = SimActionObject(target, deps=target_deps, state=self.state)
            self.state.history.add_action(SimActionExit(self.state, target=target_ao, condition=guard_ao, exit_type=SimActionExit.CONDITIONAL))

        super()._perform_vex_stmt_Exit(guard, target, jumpkind)
Ejemplo n.º 2
0
    def _perform_vex_defaultexit(self, target_bundle, jumpkind):
        if target_bundle is not None:
            target, target_deps = target_bundle

            if o.TRACK_JMP_ACTIONS in self.state.options:
                target_ao = SimActionObject(target, deps=target_deps, state=self.state)
                self.state.history.add_action(SimActionExit(self.state, target_ao, exit_type=SimActionExit.DEFAULT))
        else:
            target = None

        super()._perform_vex_defaultexit(target, jumpkind)
Ejemplo n.º 3
0
 def _exit_action(state, addr):
     if o.TRACK_JMP_ACTIONS in state.options:
         state.history.add_action(SimActionExit(state, addr))