ARM上的SIGSEGV si_trapno

时间:2011-11-12 23:52:24

标签: linux memory-management segmentation-fault arm signals

我正在为armhf Debian上的SIGSEGV写一个信号处理程序。似乎si_trapno的{​​{1}}成员在ARM上不可用(来自eglibc的siginfo_t):

/usr/include/asm-generic/siginfo.h

我的问题是为什么?为什么没有为ARM定义此宏? MMU太愚蠢了,无法传递这种信息吗?

1 个答案:

答案 0 :(得分:1)

不只是ARM。来自sigaction(2)

               int      si_trapno;   /* Trap number that caused
                                        hardware-generated signal
                                        (unused on most architectures) */

快速浏览一下内核源代码,可以看出它只存在于Alpha,Sparc和Tile上。 (您正在查看的标题来自Linux内核,/usr/include/asm/usr/include/asm-generic/usr/include/linux上的所有文件也是如此。

所以,问题不在于ARM上不存在这个字段的原因;问题是为什么它会存在于ARM中,因为正如您所看到的,它的默认状态不存在。我想在Alpha和Sparc上都添加了它,以便在同一硬件上兼容旧的Unix变种;我不知道为什么Tile决定添加它。