在信号处理程序中提取程序计数器(指令指针)(ppc64)

时间:2018-01-30 17:01:55

标签: c linux assembly powerpc

在Linux下的信号处理程序中,可以访问挂起线程的已保存上下文(所有寄存器值)。这些寄存器值显然取决于架构。例如,对于PowerPC Little Endian(ppcle)架构, ucontext-> uc_regs-> gp_regs 是一个包含通用寄存器值的数组。

对于某些体系结构,还有定义(例如,用于x86-64的REG_XXX定义),用于标识寄存器的用途。对于ppc64le,缺少这样的定义。我怎样才能确定哪个寄存器是哪个?可用的小IBM文档没有帮助......

1 个答案:

答案 0 :(得分:2)

我不知道这在任何地方都有记录。但是,ppc64的setup_sigcontext会填充构成任务状态一部分的struct pt_regsgp_regs数组。因此,该结构可以作为哪些寄存器的指南。在该结构的定义下面还有一组PT_Rxxx定义,它确认了从结构中看不到的映射位(例如,通用寄存器1确实在gp_regs [1]中)。 / p>