summaryrefslogtreecommitdiff
path: root/lib/sanitizer_common/sanitizer_syscall_generic.inc
diff options
context:
space:
mode:
authorKostya Kortchinsky <kostyak@google.com>2017-12-11 19:23:12 +0000
committerKostya Kortchinsky <kostyak@google.com>2017-12-11 19:23:12 +0000
commit313d4281293b9be28bc0a6af624c4729e4faae21 (patch)
tree09b12b80ba7450cd7208acc6a7e912c82d5035a9 /lib/sanitizer_common/sanitizer_syscall_generic.inc
parentb3c6c0c00d983413de921cbf5a139f0c6edcc72c (diff)
[sanitizer] Introduce a vDSO aware time function, and use it in the allocator [redo]
Summary: Redo of D40657, which had the initial discussion. The initial code had to move into a libcdep file, and things had to be shuffled accordingly. `NanoTime` is a time sink when checking whether or not to release memory to the OS. While reducing the amount of calls to said function is in the works, another solution that was found to be beneficial was to use a timing function that can leverage the vDSO. We hit a couple of snags along the way, like the fact that the glibc crashes when clock_gettime is called from a preinit_array, or the fact that `__vdso_clock_gettime` is mangled (for security purposes) and can't be used directly, and also that clock_gettime can be intercepted. The proposed solution takes care of all this as far as I can tell, and significantly improve performances and some Scudo load tests with memory reclaiming enabled. @mcgrathr: please feel free to follow up on https://reviews.llvm.org/D40657#940857 here. I posted a reply at https://reviews.llvm.org/D40657#940974. Reviewers: alekseyshl, krytarowski, flowerhack, mcgrathr, kubamracek Reviewed By: alekseyshl, krytarowski Subscribers: #sanitizers, mcgrathr, srhines, llvm-commits, kubamracek Differential Revision: https://reviews.llvm.org/D40679 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@320409 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/sanitizer_common/sanitizer_syscall_generic.inc')
-rw-r--r--lib/sanitizer_common/sanitizer_syscall_generic.inc1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/sanitizer_common/sanitizer_syscall_generic.inc b/lib/sanitizer_common/sanitizer_syscall_generic.inc
index 138d5ca90..ccc6dc360 100644
--- a/lib/sanitizer_common/sanitizer_syscall_generic.inc
+++ b/lib/sanitizer_common/sanitizer_syscall_generic.inc
@@ -36,6 +36,7 @@
# define SYS_sigaltstack SYS___sigaltstack14
# define SYS_sigprocmask SYS___sigprocmask14
# define SYS_nanosleep SYS___nanosleep50
+# define SYS_clock_gettime SYS___clock_gettime50
# if SANITIZER_WORDSIZE == 64
# define internal_syscall_ptr __syscall
# else