Add branch target address to drmemtrace traces for use without instruction encodings
When a drmemtrace and associated application binaries are available to supply the instruction encodings, the targets of non-taken branches are obtained from the encodings (and targets of taken branches from the subsequent PC -- which has complications across intervening kernel transfers, solved with special kernel transfer fields, and across thread interleavings, solved by tweaking those in raw2trace for offline at least). However, the binaries not always available (e.g., the Google workload traces).
Adding the target of every conditional branch could be done in raw2trace. The main cost would be a size increase. If the average block is 5 instrs + 2 addrs then this would be a 14% increase scaled down a little since not all branches are conditional, but still a non-trivial increase of likely >10% by this un-measured back-of-envelope estimate anyway.
Presumably we would implement this in post-processing, waiting for the next block, rather than having online instrumentation deduce the target before the branch occurs.