4

sa_sigaction の 3 番目のパラメーターは、マシン依存の を指すポインターです。struct ucontextから何をダンプできるか知りたいstruct ucontextです。

void (*sa_sigaction)(int signum, siginfo_t *info, void *ucontext)

struct ucontext {
        unsigned long     uc_flags;
        struct ucontext  *uc_link;
        stack_t           uc_stack;
        struct sigcontext uc_mcontext;
        sigset_t          uc_sigmask;   /* mask last for extensibility */
};

特に uc_mcontext を介して (他のデータ メンバーについて詳しく知ることができる場所を教えてくれれば、それは素晴らしいことです)、人々は通常、uc_mcontextこのようにホスト レジスタをダンプするために使用します。

ucontext->uc_mcontext.gregs[REG_EIP]

uc_mcontextタイプは中古ですのでstruct sigcontext、中古で拝見してstruct sigcontextおりarch/x86/include/asm/sigcontext.hます。

struct sigcontext {
        unsigned short gs, __gsh;
        unsigned short fs, __fsh;
        unsigned short es, __esh;
        unsigned short ds, __dsh;

        ... snip ...
};

gregsに表示されないので、それは正しいものstruct sigcontextですか? どんな提案でも大歓迎です。

4

1 に答える 1

7

sigcontext の Linux カーネル定義を見ています。struct ucontext の C ライブラリ ヘッダーを見ているは​​ずです。/usr/include/sys/ucontext.h ファイルで定義されています

これはアーキテクチャ固有のものであることに注意してください。たとえば、x86 と PPC のフィールドはまったく異なります。

于 2012-09-10T10:30:50.010 に答える