summaryrefslogtreecommitdiff
path: root/lib/sanitizer_common/sanitizer_libignore.h
AgeCommit message (Collapse)Author
2017-01-11[tsan] Implement a 'ignore_noninstrumented_modules' flag to better suppress ↵Kuba Mracek
false positive races On Darwin, we currently use 'ignore_interceptors_accesses', which is a heavy-weight solution that simply turns of race detection in all interceptors. This was done to suppress false positives coming from system libraries (non-instrumented code), but it also silences a lot of real races. This patch implements an alternative approach that should allow us to enable interceptors and report races coming from them, but only if they are called directly from instrumented code. The patch matches the caller PC in each interceptors. For non-instrumented code, we call ThreadIgnoreBegin. The assumption here is that the number of instrumented modules is low. Most likely there's only one (the instrumented main executable) and all the other modules are system libraries (non-instrumented). Differential Revision: https://reviews.llvm.org/D28264 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@291631 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-19[Sanitizer] Drop LibIgnore dependency on SuppressionContext. NFC.Alexey Samsonov
Let each LibIgnore user (for now it's only TSan) manually go through SuppressionContext and pass ignored library templates to LibIgnore. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@229924 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-15tsan: resolve symlinks for called_from_lib suppressionsDmitry Vyukov
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@192688 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-03tsan: ignore interceptors coming from specified librariesDmitry Vyukov
LibIgnore allows to ignore all interceptors called from a particular set of dynamic libraries. LibIgnore remembers all "called_from_lib" suppressions from the provided SuppressionContext; finds code ranges for the libraries; and checks whether the provided PC value belongs to the code ranges. Also make malloc and friends interceptors use SCOPED_INTERCEPTOR_RAW instead of SCOPED_TSAN_INTERCEPTOR, because if they are called from an ignored lib, then must call our internal allocator instead of libc malloc. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@191897 91177308-0d34-0410-b5e6-96231b3b80d8