GNU/Linux >> Linux の 問題 >  >> Linux

SIGILL ハンドラーで、問題のある命令をスキップするにはどうすればよいですか?

非常にハックで移植できませんが、

void sighandler (int signo, siginfo_t si, void *data) {
    ucontext_t *uc = (ucontext_t *)data;

    int instruction_length = /* the length of the "instruction" to skip */

    uc->uc_mcontext.gregs[REG_RIP] += instruction_length;
}

sighandler をインストールします そのように:

struct sigaction sa, osa;
sa.sa_flags = SA_ONSTACK | SA_RESTART | SA_SIGINFO;
sa.sa_sigaction = sighandler;
sigaction(SIGILL, &sa, &osa);

できる どこまでスキップすればよいか分かっていれば動作します (そしてそれは Intel proc です) :-)


Linux
  1. 前の bash コマンドの引数を思い出すにはどうすればよいですか?

  2. Linuxでキーボードの状態を取得するにはどうすればよいですか?

  3. コマンドラインから PHP コードを実行するにはどうすればよいですか?

  1. ファイルの各行の先頭に文字列を追加するにはどうすればよいですか?

  2. Bash変数の文字数をカウントするにはどうすればよいですか

  3. シェルコマンドの出力をループするにはどうすればよいですか?

  1. wgetで最新のAnacondaをインストールするにはどうすればよいですか

  2. コマンドラインでSVNにSSHパスワードを提供するにはどうすればよいですか?

  3. Linux で $PATH を編集するにはどうすればよいですか?