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

标签 c linux assembly powerpc

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

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

最佳答案

我不知道这在任何地方都有记录。然而,setup_sigcontext对于 ppc64,填充来自 struct pt_regsgp_regs 数组构成任务状态的一部分。因此,该结构可以作为寄存器的指南。在该结构的定义下方还有一组 PT_Rxxx 定义,它确认了从结构中不是很明显的映射位(例如,通用寄存器 1 确实在 gp_regs[1] 中) ).

关于c - 在信号处理程序 (ppc64) 中提取程序计数器(指令指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48526785/

相关文章:

C公式帮助圆形定位

c - 9 键键盘打印 qwerty 键的逻辑

c - 用于检测内存损坏的 Linux C 调试库

c - 实现我自己的 ps 命令

linux - 自动硬链接(hard link)文件,但只有一次

c - 从TCP套接字接收用户和密码并检查

gcc - 从 64 位汇编调用 C 函数

c - 显示文件指针位置

assembly - 交换汇编语言中字符串中的字母 8086

c++ - 了解 C/C++ 中 Windows/MSVC 的一些 Antidebug 内联汇编