1#ifndef ARION_SIGNAL_MANAGER_HPP
2#define ARION_SIGNAL_MANAGER_HPP
6#include <arion/unicorn/unicorn.h>
22 std::map<int, std::shared_ptr<struct arion_lnx_type::ksigaction>>
sighandlers;
28 static std::map<int, std::string>
signals;
35 static void intr_hook(std::shared_ptr<Arion>
arion, uint32_t intno,
void *user_data);
47 int64_t val,
void *user_data);
116 void set_sighandler(
int signo, std::shared_ptr<struct arion_lnx_type::ksigaction> sighandler);
This class manages signal handling within an Arion emulation session.
Definition signal_manager.hpp:17
static std::unique_ptr< SignalManager > initialize(std::weak_ptr< Arion > arion)
void handle_signal(pid_t source_pid, int signo)
static void intr_hook(std::shared_ptr< Arion > arion, uint32_t intno, void *user_data)
static bool invalid_insn_hook(std::shared_ptr< Arion > arion, void *user_data)
std::weak_ptr< Arion > arion
The Arion instance associated with this instance.
Definition signal_manager.hpp:20
std::map< int, std::shared_ptr< struct arion_lnx_type::ksigaction > > sighandlers
A map identifying a ksigaction structure given its associated signal number.
Definition signal_manager.hpp:22
std::shared_ptr< struct arion_lnx_type::ksigaction > get_sighandler(int signo)
bool has_sighandler(int signo)
static bool invalid_memory_hook(std::shared_ptr< Arion > arion, uc_mem_type access, uint64_t addr, int size, int64_t val, void *user_data)
static std::map< int, std::string > signals
A map identifying a signal description string given its signal number.
Definition signal_manager.hpp:28
std::map< pid_t, pid_t > sigwait_list
A map identifying a process (ID) given the process (ID) it is waiting for.
Definition signal_manager.hpp:24
void print_signal(std::shared_ptr< Arion > arion, std::string sig_name)
SignalManager(std::weak_ptr< Arion > arion)
void set_sighandler(int signo, std::shared_ptr< struct arion_lnx_type::ksigaction > sighandler)
void handle_sigchld(pid_t source_pid)
std::unique_ptr< std::map< REG, RVAL > > ucontext_regs
A map identifying a saved register value to be restored, given the Unicorn register it is associated ...
Definition signal_manager.hpp:26
void wait_for_sig(pid_t target_tid, pid_t source_pid, ADDR wait_status_addr)
bool handle_sighandler(pid_t source_pid, int signo)
Definition arch_x86-64.hpp:11
uint64_t ADDR
Identifies a memory address.
Definition global_defs.hpp:36