When a migration or context switch happens during rseq native execution, we now raise a kernel xfer event. The event is of a new type DR_XFER_RSEQ_ABORT.
To implement this, the native abort handler cannot be linked and must return to dispatch. The special-exit-reason feature is used for this purpose.
Adds a test. To force a migration we use a system call, which we do not normally allow inside an rseq region. I added a debug-build exception for this particular test by executable name, along with a syscall discovery workaround for the attach test.
Adds a client via static DR to api.rseq to test that the event is raised.
Adds handling to drmemtrace in the tracer and raw2trace. For raw2trace we walk backward to undo the committing store that was recorded, since a real rseq abort would happen before the final store. I would like to add on offline trace rseq regression test, but it hits
Issue; #2350 (closed), #4019 (closed), #4041 (closed) Fixes #4019 (closed)