Allow usage of SIGILL for signal trampolines (#963)
authorXiaozhu Meng <mxz297@gmail.com>
Wed, 21 Apr 2021 21:54:17 +0000 (16:54 -0500)
committerGitHub <noreply@github.com>
Wed, 21 Apr 2021 21:54:17 +0000 (16:54 -0500)
commit7ce24bf14a7745492754adb5ede560dd343e6585
tree326e2e82ef381a741a3dc1c56798c92231efcd41
parentdeecbde8265630fc5dcac87afc51bca7f696511f
Allow usage of SIGILL for signal trampolines (#963)

We only used SIGTRAP as the signal for tramopline.
However, SIGTRAP is always intercepted by GDB, causing it is
almost impossible to debug through signal trampolines.

In this commit, we add a new environment variable DYNINST_SIGNAL_TRAMPOLINE_SIGILL
to control whether we use SIGILL as the signal for trampolines.

If DYNINST_SIGNAL_TRAMPOLINE_SIGILL is set, we use SIGILL as signal trampolines
and the mutator will generate illegal instructions in the mutatee.

In the case of binary rewriting, DYNINST_SIGNAL_TRAMPOLINE_SIGILL should be
consistently set or unset when rewriting the binary and running the rewritten binaries.
dyninstAPI/src/addressSpace.C
dyninstAPI/src/addressSpace.h
dyninstAPI/src/binaryEdit.C
dyninstAPI/src/dynProcess.C
dyninstAPI_RT/src/RTposix.c