llvm-project/compiler-rt/test/xray
Dean Michael Berris 52517d7cf7 [XRay][compiler-rt] Implement XRay Basic Mode Filtering
Summary:
This change implements the basic mode filtering similar to what we do in
FDR mode. The implementation is slightly simpler in basic-mode filtering
because we have less details to remember, but the idea is the same. At a
high level, we do the following to decide when to filter function call
records:

  - We maintain a per-thread "shadow stack" which keeps track of the
    XRay instrumented functions we've encountered in a thread's
    execution.
  - We push an entry onto the stack when we enter an XRay instrumented
    function, and note the CPU, TSC, and type of entry (whether we have
    payload or not when entering).
  - When we encounter an exit event, we determine whether the function
    being exited is the same function we've entered recently, was
    executing in the same CPU, and the delta of the recent TSC and the
    recorded TSC at the top of the stack is less than the equivalent
    amount of microseconds we're configured to ignore -- then we un-wind
    the record offset an appropriate number of times (so we can
    overwrite the records later).

We also support limiting the stack depth of the recorded functions,
so that we don't arbitrarily write deep function call stacks.

Reviewers: eizan, pelikan, kpw, dblaikie

Subscribers: llvm-commits

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

llvm-svn: 319762
2017-12-05 12:21:14 +00:00
..
TestCases/Linux [XRay][compiler-rt] Implement XRay Basic Mode Filtering 2017-12-05 12:21:14 +00:00
Unit [XRay][compiler-rt] Enable the XRay compiler-rt unit tests. 2017-08-31 00:50:12 +00:00
CMakeLists.txt [XRay][compiler-rt] XRay Flight Data Recorder Mode 2017-01-25 03:50:46 +00:00
lit.cfg Revert "[XRay][darwin] Initial XRay in Darwin Support" 2017-11-10 07:00:55 +00:00
lit.site.cfg.in [XRay][compiler-rt] Enable the XRay compiler-rt unit tests. 2017-08-31 00:50:12 +00:00