forked from OSchip/llvm-project
16 lines
420 B
C++
16 lines
420 B
C++
|
#include <atomic>
|
||
|
#include <xray/xray_interface.h>
|
||
|
|
||
|
namespace __xray {
|
||
|
|
||
|
extern std::atomic<void (*)(int32_t, XRayEntryType)> XRayPatchedFunction;
|
||
|
|
||
|
// Implement this in C++ instead of assembly, to avoid dealing with ToC by hand.
|
||
|
void CallXRayPatchedFunction(int32_t FuncId, XRayEntryType Type) {
|
||
|
auto fptr = __xray::XRayPatchedFunction.load();
|
||
|
if (fptr != nullptr)
|
||
|
(*fptr)(FuncId, Type);
|
||
|
}
|
||
|
|
||
|
} // namespace __xray
|