[compiler-rt] r345556 - [sanitizer] Move interceptor initialization check into real_clock_gettime
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 29 18:20:01 PDT 2018
Author: vitalybuka
Date: Mon Oct 29 18:20:01 2018
New Revision: 345556
URL: http://llvm.org/viewvc/llvm-project?rev=345556&view=rev
Log:
[sanitizer] Move interceptor initialization check into real_clock_gettime
Reviewers: cryptoad, kubamracek
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D53777
Modified:
compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc
compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux_libcdep.cc
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc?rev=345556&r1=345555&r2=345556&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc Mon Oct 29 18:20:01 2018
@@ -2149,6 +2149,8 @@ INTERCEPTOR(int, clock_gettime, u32 clk_
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"
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux_libcdep.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux_libcdep.cc?rev=345556&r1=345555&r2=345556&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux_libcdep.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux_libcdep.cc Mon Oct 29 18:20:01 2018
@@ -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
More information about the llvm-commits
mailing list