[XRay] Bug fixes for FDR custom event and arg-logging
authorDean Michael Berris <dberris@google.com>
Thu, 13 Sep 2018 09:25:42 +0000 (09:25 +0000)
committerDean Michael Berris <dberris@google.com>
Thu, 13 Sep 2018 09:25:42 +0000 (09:25 +0000)
commit90a46bdec21948821194af711af732a3871438c2
treefd00ec6e9ebacb650509b82c0d65d7083fdef6c3
parent7e9649b86fdecf3ddae119a28f93f8a803dc1006
[XRay] Bug fixes for FDR custom event and arg-logging

Summary:
This change has a number of fixes for FDR mode in compiler-rt along with
changes to the tooling handling the traces in llvm.

In the runtime, we do the following:

- Advance the "last record" pointer appropriately when writing the
  custom event data in the log.

- Add XRAY_NEVER_INSTRUMENT in the rewinding routine.

- When collecting the argument of functions appropriately marked, we
  should not attempt to rewind them (and reset the counts of functions
  that can be re-wound).

In the tooling, we do the following:

- Remove the state logic in BlockIndexer and instead rely on the
  presence/absence of records to indicate blocks.

- Move the verifier into a loop associated with each block.

Reviewers: mboerger, eizan

Subscribers: llvm-commits, hiraditya

Differential Revision: https://reviews.llvm.org/D51965

llvm-svn: 342122
compiler-rt/lib/xray/xray_fdr_logging.cc
llvm/include/llvm/XRay/BlockIndexer.h
llvm/lib/XRay/BlockIndexer.cpp
llvm/lib/XRay/Trace.cpp