SIGSEGV si_trapno on ARM

私はarmhf DebianにSIGSEGV用のシグナルハンドラを書いています。 siginfo_tsi_trapno メンバーは、ARM(eglibcの /usr/include/asm-generic/siginfo.h )では利用できないようです):

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

私の質問はなぜですか?なぜこのマクロはARM用に定義されていないのですか?この種の情報を渡すにはMMUがあまりにも愚かですか?

0
あなたは正確に何を見つけようとしていますか? si_addr もx86と比べてARM上で動作が異なることに注意してください。
追加された 著者 FrankH.,

1 答え

ARMだけではありません。 sigaction(2)

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

カーネルソースコードを見てみると、Alpha、Sparc、およびTileにしか存在しないことがわかります。 (見ているヘッダーは、/usr/include/asm/usr/include/asm-generic のすべてのファイルと同様にLinuxカーネルから来ます/usr/include/linux )。

したがって、このフィールドがARM上に存在しない理由は問題ではありません。あなたが見ることができるように、そのデフォルト状態は存在しないので、なぜそれがARM上に存在するのでしょうか?私は、AlphaとSparcの両方で、同じハードウェア上の古いUnixとの互換性のために追加されたと思います。なぜタイルがそれを追加することにしたのか、私は考えていません。

1
追加された