diff options
author | Dean Michael Berris <dberris@google.com> | 2017-05-22 03:23:54 +0000 |
---|---|---|
committer | Dean Michael Berris <dberris@google.com> | 2017-05-22 03:23:54 +0000 |
commit | 06f1c090cb4e27ea82320bfa7af1e3cfb681edeb (patch) | |
tree | 43a0c793d3120a110cf9d45318ed7c364d83626c | |
parent | 0793ce266476247913c67258562069bad41260f9 (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.h | 4 | ||||
-rw-r--r-- | lib/xray/xray_interface.cc | 5 | ||||
-rw-r--r-- | test/xray/TestCases/Linux/custom-event-logging.cc | 2 |
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... |