summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDean Michael Berris <dberris@google.com>2017-05-22 03:23:54 +0000
committerDean Michael Berris <dberris@google.com>2017-05-22 03:23:54 +0000
commit06f1c090cb4e27ea82320bfa7af1e3cfb681edeb (patch)
tree43a0c793d3120a110cf9d45318ed7c364d83626c
parent0793ce266476247913c67258562069bad41260f9 (diff)
[XRay][compiler-rt] Add __xray_remove_customevent_handler(...)
This change adds __xray_remove_customevent_handler(...) to be consistent with other APIs that add/remove handlers. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@303526 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/xray/xray_interface.h4
-rw-r--r--lib/xray/xray_interface.cc5
-rw-r--r--test/xray/TestCases/Linux/custom-event-logging.cc2
3 files changed, 10 insertions, 1 deletions
diff --git a/include/xray/xray_interface.h b/include/xray/xray_interface.h
index c3833f0be..dc0c277aa 100644
--- a/include/xray/xray_interface.h
+++ b/include/xray/xray_interface.h
@@ -69,6 +69,10 @@ extern int __xray_remove_handler_arg1();
/// Provide a function to invoke when XRay encounters a custom event.
extern int __xray_set_customevent_handler(void (*entry)(void*, std::size_t));
+/// This removes whatever the currently provided custom event handler is.
+/// Returns 1 on success, 0 on error.
+extern int __xray_remove_customevent_handler();
+
enum XRayPatchingStatus {
NOT_INITIALIZED = 0,
SUCCESS = 1,
diff --git a/lib/xray/xray_interface.cc b/lib/xray/xray_interface.cc
index 523ed16b9..e912b6e47 100644
--- a/lib/xray/xray_interface.cc
+++ b/lib/xray/xray_interface.cc
@@ -119,10 +119,15 @@ int __xray_set_customevent_handler(void (*entry)(void *, size_t))
return 0;
}
+
int __xray_remove_handler() XRAY_NEVER_INSTRUMENT {
return __xray_set_handler(nullptr);
}
+int __xray_remove_customevent_handler() XRAY_NEVER_INSTRUMENT {
+ return __xray_set_customevent_handler(nullptr);
+}
+
__sanitizer::atomic_uint8_t XRayPatching{0};
using namespace __xray;
diff --git a/test/xray/TestCases/Linux/custom-event-logging.cc b/test/xray/TestCases/Linux/custom-event-logging.cc
index b1a766d46..9bb5d44e1 100644
--- a/test/xray/TestCases/Linux/custom-event-logging.cc
+++ b/test/xray/TestCases/Linux/custom-event-logging.cc
@@ -33,7 +33,7 @@ int main() {
// CHECK-NEXT: after calling the custom logging...
printf("removing custom event handler...\n");
// CHECK-NEXT: removing custom event handler...
- __xray_set_customevent_handler(nullptr);
+ __xray_remove_customevent_handler();
foo();
// CHECK-NEXT: before calling the custom logging...
// CHECK-NEXT: after calling the custom logging...