summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2018-10-30 01:20:01 +0000
committerVitaly Buka <vitalybuka@google.com>2018-10-30 01:20:01 +0000
commit9817192691240c83755da6c1ad715cb4ff2ff7a6 (patch)
tree11840122b9f27a43c7131868e9deb9098b706b0f
parent0ae1b521864b0c2e598e66e67cf8560c3f902337 (diff)
downloadbcm5719-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.inc2
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc7
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
OpenPOWER on IntegriCloud