[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:60007] Pass the address where SIGSEGV happened to SIGSEGV handler


大橋です。

ページにmprotectをかけてSIGSEGVを発生させ、それが起こったアドレスを
SIGSEGVハンドラに渡したいのですがLinuxでの方法がわかりません。
OSはRedHat Linux 6.0(Kernel 2.2.5-15)をDOS/Vマシンで使っています。

FreeBSDではSIGSEGVハンドラに
void sigsegv_handler(int sig, int code, struct sigcontext *scp, char *addr)
のように引数を渡すことでaddrにアクセスのあったアドレスが渡されるのですが
Linuxでこのようにしてもアドレスは渡されないようです。

sigcontextの中に入っているのかもしれませんが、構造体の要素がどういう
意味を持っているかわからないため確認できません。

どうすればアドレスを渡すことができるのでしょうか?
よろしくお願いします。

     _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
                          Yusuke Ohashi
                        Seikei University
               Department of Industrial Engineering
                           & Information Sciences
                E-Mail : oha _at_ ypc.is.seikei.ac.jp
     _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」