СИГСЕГВ си_трапно на ARM - PullRequest
       37

СИГСЕГВ си_трапно на ARM

0 голосов
/ 13 ноября 2011

Я пишу обработчик сигнала для SIGSEGV на armhf Debian.Кажется, что si_trapno член siginfo_t недоступен на ARM (/usr/include/asm-generic/siginfo.h от eglibc):

[...]
#ifdef __ARCH_SI_TRAPNO
                    int _trapno;    /* TRAP # which caused the signal */
#endif

Мой вопрос почему ?Почему этот макрос не определен для ARM?MMU слишком глуп, чтобы передавать такую ​​информацию?

1 Ответ

1 голос
/ 13 ноября 2011

Это не просто 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 на одном и том же оборудовании; Я понятия не имею, почему Тайл решил добавить его.

...