diff options
author | Vitaly Buka <vitalybuka@google.com> | 2018-10-30 01:20:01 +0000 |
---|---|---|
committer | Vitaly Buka <vitalybuka@google.com> | 2018-10-30 01:20:01 +0000 |
commit | 9817192691240c83755da6c1ad715cb4ff2ff7a6 (patch) | |
tree | 11840122b9f27a43c7131868e9deb9098b706b0f | |
parent | 0ae1b521864b0c2e598e66e67cf8560c3f902337 (diff) | |
download | bcm5719-llvm-9817192691240c83755da6c1ad715cb4ff2ff7a6.tar.gz bcm5719-llvm-9817192691240c83755da6c1ad715cb4ff2ff7a6.zip |
[sanitizer] Move interceptor initialization check into real_clock_gettime
Reviewers: cryptoad, kubamracek
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D53777
llvm-svn: 345556
-rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc | 2 | ||||
-rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc | 7 |
2 files changed, 4 insertions, 5 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc index 530469997c7..5dbc100149b 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc @@ -2149,6 +2149,8 @@ INTERCEPTOR(int, clock_gettime, u32 clk_id, void *tp) { namespace __sanitizer { extern "C" { int real_clock_gettime(u32 clk_id, void *tp) { + if (COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED) + return internal_clock_gettime(clk_id, tp); return REAL(clock_gettime)(clk_id, tp); } } // extern "C" diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc index 93b68ed4b67..7859557c82d 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc @@ -782,15 +782,12 @@ INLINE bool CanUseVDSO() { // MonotonicNanoTime is a timing function that can leverage the vDSO by calling // clock_gettime. real_clock_gettime only exists if clock_gettime is -// intercepted, so define it weakly and use it if available. MonotonicNanoTime -// might also be called when interceptors are not yet initialized, so check for -// that as well. +// intercepted, so define it weakly and use it if available. extern "C" SANITIZER_WEAK_ATTRIBUTE int real_clock_gettime(u32 clk_id, void *tp); -namespace __interception { int (*real_clock_gettime)(u32 clk_id, void *tp); } u64 MonotonicNanoTime() { timespec ts; - if (CanUseVDSO() && __interception::real_clock_gettime) { + if (CanUseVDSO()) { if (&real_clock_gettime) real_clock_gettime(CLOCK_MONOTONIC, &ts); else |