Add non-module support to offline traces
Split from #1729 (closed)
What about DGC from a JIT, or vsyscall?
We need to store the type (read/write/prefetch*) and size for a memref, and the size of every single ifetch.
For memrefs, we may have to use double entries, with the first one having an escape type and the address and the second having the full type and size.
For ifetch, perhaps we can fit multiple sizes in one entry. Modidx will be a sentinel, so we have the 45 modoffs bits. We will want 4 bits for each instr size (ok to assume 16-byte max instr, even though technically there can be 17 and an illegal instr could be even bigger) so we can fit the sizes of 11 instrs there. We'll zero the rest.
The vdso shows up as a module but is harder to decode. We have two choices for vdso:
- Treat as non-module and record type info in the trace. The tracer will need to look for "[vdso]" which will require changing drmodtrack.
- Assume raw2trace is run on a machine w/ the same vdso code and try to decode from its own vdso via special code in raw2trace.