summaryrefslogtreecommitdiffstats
path: root/results/scraper/fex/1217
blob: 94b9f97dc0b6870f5f9425379ee2f4dd4b8c141b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Support SIGILL to the guest
Currently FEX will just close an application if it encounters a block with an invalid instruction.
We can support giving the guest a SIGILL.
This should be done in two steps to reduce the amount of immediate work

1) Support the use-case of SIGILL + guest handler terminate
  - This means that once the frontend encounters and invalid operation.
  - Save Thread state
  - End the Block
  - Call a SIGILL host side handler
  - Pass the signal information to the guest
  - Invoke the guests signal handler with the known good information
  - Guest will invoke terminate, thus taking down the application and FEX with it
 2) Once step 1 is done, support use cases where an application is testing for instructions and safely recovering
  - Guest will modify the passed in ucontext once it has caught the sigill
  - Most likely modifying RIP to jump past the instruction, or using longjump to escape
  - Will likely also modify another GPR to know the failure case
  - Once the guest has returned from its signal, we need to read the state back in to our context and safely continue
  - This can benefit more than SIGILL later once we have some form of state recovery for the other signals.