【发布时间】:2011-12-27 20:26:50
【问题描述】:
我正在为 armhf Debian 上的 SIGSEGV 编写信号处理程序。看来siginfo_t 的si_trapno 成员在ARM 上不可用(来自eglibc 的/usr/include/asm-generic/siginfo.h):
[...]
#ifdef __ARCH_SI_TRAPNO
int _trapno; /* TRAP # which caused the signal */
#endif
我的问题是为什么?为什么这个宏没有为 ARM 定义? MMU 是不是太笨了,无法传递这种信息?
【问题讨论】:
-
您到底想知道什么?请注意,与 x86 相比,
si_addr在 ARM 上的行为也有所不同,请参见例如stackoverflow.com/questions/5964642/… - 如果您的信号处理程序想要深入研究“原因”,您可能需要为您想要支持的每个硬件架构编写一个特定的。
标签: linux memory-management segmentation-fault arm signals