For online traces, adds the interrupted PC to kernel event entries.
For offline traces, updates the existing module offset stored inside kernel events (and previously used only for raw2trace) to become an absolute PC to help in core simulators and other trace consumers who want to know branch targets prior to kernel events.
This is a version change for offline traces, and the version is updated, with a named constant for the old version.
The raw offline's module offset is upgraded to become an index;offset pair, as that format is better suited for raw2trace and it avoids needing an extra entry nearly all of the time. The raw2trace postprocessing converts it to an absolute PC for the final trace. Since the 49 bits can take two raw entries, raw2trace is augmented to handle unreading such a double entry.
Adds a new TRACE_MARKER_TYPE_RSEQ_ABORT marker to further identify an rseq abort, in order to roll back the committing store in raw2trace (previously it used the lack of interrupted-PC to identify an rseq abort).
Adds support to the view tool for displaying the interrupted PC depending on the version.
Updates the drcachesim documentation with the new output of the interrupted PC from the view tool.
Fixes an issue in the reader where the first switch to a thread has the prior thread's identity in the two leading marker entries for version and filetype.
Adds tests of the interrupted PC to the trace_invariants test for signals, as well as ensuring that raw2trace has rolled back an rseq abort final instruction so that the abort appears to occur at a legitimate place inside the region.
Adds a test of the legacy version with just offsets by checking in raw files from a signal_invariants run, with fake libdrmemtrace.so and lidynamorio.so to keep the size down.
Fixes #4274 (closed)