| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Add the ability to suppress UBSan reports for files/functions/modules
at runtime. The user can now pass UBSAN_OPTIONS=suppressions=supp.txt
with the contents of the form:
signed-integer-overflow:file-with-known-overflow.cpp
alignment:function_doing_unaligned_access
vptr:shared_object_with_vptr_failures.so
Suppression categories match the arguments passed to -fsanitize=
flag (although, see below). There is no overhead if suppressions are
not provided. Otherwise there is extra overhead for symbolization.
Limitations:
1) sometimes suppressions need debug info / symbol table to function
properly (although sometimes frontend generates enough info to
do the match).
2) it's only possible to suppress recoverable UB kinds - if you've
built the code with -fno-sanitize-recover=undefined, suppressions
will not work.
3) categories are fine-grained check kinds, not groups like "undefined"
or "integer", so you can't write "undefined:file_with_ub.cc".
Reviewers: rsmith, kcc
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D15363
llvm-svn: 256018
|
| |
|
|
|
|
|
|
| |
function aren't called from ScopedInterceptor").
There are some test failures on the Linux buildbots.
llvm-svn: 255997
|
| |
|
|
|
|
|
|
|
|
| |
called from ScopedInterceptor
Interceptors using ScopedInteceptor should never call into user's code before the ScopedInterceptor is out of scope (and its destructor is called). Let's add a DCHECK to enforce that.
Differential Revision: http://reviews.llvm.org/D15381
llvm-svn: 255996
|
| |
|
|
|
|
|
|
| |
Some interceptors in tsan_libdispatch_mac.cc currently wrongly use TSAN_SCOPED_INTERCEPTOR/ScopedInterceptor. Its constructor can start ignoring memory accesses, and the destructor the stops this -- however, e.g. dispatch_sync can call user's code, so the ignoring will extend to user's code as well. This is not expected and we should only limit the scope of ScopedInterceptor to TSan code. This patch introduces annotations that mark the beginning and ending of a callback into user's code.
Differential Revision: http://reviews.llvm.org/D15419
llvm-svn: 255995
|
| |
|
|
| |
llvm-svn: 255938
|
| |
|
|
| |
llvm-svn: 255748
|
| |
|
|
|
|
|
| |
Split the CFI runtime in two: cfi and cfi_diag. The latter includes
UBSan runtime to allow printing diagnostics.
llvm-svn: 255735
|
| |
|
|
| |
llvm-svn: 255733
|
| |
|
|
|
|
| |
Mac is missing the driver support to link the CFI runtime library.
llvm-svn: 255730
|
| |
|
|
|
|
|
| |
The current check may break if the starting address in fill_shadow is
not page-aligned.
llvm-svn: 255725
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is an initial version of the runtime cross-DSO CFI support
library.
It contains a number of FIXMEs, ex. it does not support the
diagnostic mode nor dlopen/dlclose, but it works and can be tested.
Diagnostic mode, in particular, would require some refactoring (we'd
like to gather all CFI hooks in the UBSan library into one function
so that we could easier pass the diagnostic information down to
__cfi_check). It will be implemented later.
Once the diagnostic mode is in, I plan to create a second test
configuration to run all existing tests in both modes. For now, this
patch includes only a few new cross-DSO tests.
llvm-svn: 255695
|
| |
|
|
|
|
|
|
|
| |
Patch by: Johan Engelen
Introduce LLVM_LIBRARY_WEAK macro. Define LLVM_LIBRARY_WEAK
and LLVM_LIBRARY_VISIBIITY for MSVC
llvm-svn: 255688
|
| |
|
|
|
|
|
|
|
|
| |
Patch by: Johan Engelen
On windows, opening in text mode will result in
line ending chars to be appended leading to
profile corruption.
llvm-svn: 255684
|
| |
|
|
| |
llvm-svn: 255594
|
| |
|
|
| |
llvm-svn: 255588
|
| |
|
|
| |
llvm-svn: 255566
|
| |
|
|
| |
llvm-svn: 255507
|
| |
|
|
|
|
|
|
|
| |
Now with variadic support for msan on aarch6 there is no need for
XFAIL signal_stress_test anymore. Also to garantee aligned stores
for the FP/SIMD arguments enforce the '__msan_va_arg_tls' alignment
to sizeof the SIMD register (16).
llvm-svn: 255496
|
| |
|
|
|
|
|
|
|
|
| |
We're using the dispatch group itself to synchronize (to call Release() and Acquire() on it), but in dispatch group notifications, the group can already be disposed/deallocated. This causes a later assertion failure at `DCHECK_EQ(*meta, 0);` in `MetaMap::AllocBlock` when the same memory is reused (note that the failure only happens in debug builds).
Fixing this by retaining the group and releasing it in the notification. Adding a stress test case that reproduces this.
Differential Revision: http://reviews.llvm.org/D15380
llvm-svn: 255494
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The safestack overflow.c test is currently failing on an aarch64
buildbot with a segfault, but it is currently passing on other
configuration.
This patch silent the issue for now on aarch64 by setting to all
supported architectures the 'stable-runtime' configure and set
the test to requires it.
llvm-svn: 255491
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This patch enables the safestack for aarch64. The frontend already have
it enabled on all supported architectures and no adjustment is required
in llvm.
The compiler-rt adjustments are basically add on the cmake configuration
to enable the tests and fix the pagesize debug check by getting its
value at runtime (since aarch64 has multiple pagesize depending of
kernel configuration).
llvm-svn: 255345
|
| |
|
|
|
|
|
|
| |
Add a test case to cover profile dumping of functions with no
value sites, functions with value sites but no dynamic VP data,
and functions with runtime VP data.
llvm-svn: 255327
|
| |
|
|
|
|
|
|
|
| |
Value profile runtime depends on libc which breaks
buffer API implemenation with current file organization.
Test case is also updated to check more symbols.
llvm-svn: 255294
|
| |
|
|
| |
llvm-svn: 255293
|
| |
|
|
| |
llvm-svn: 255290
|
| |
|
|
|
|
|
|
| |
check_memcpy test added in r254959 fails on some configurations due to
memcpy() calls inserted by Clang. Try harder to avoid them by using
internal_memcpy() where applicable.
llvm-svn: 255287
|
| |
|
|
| |
llvm-svn: 255285
|
| |
|
|
|
|
|
|
|
| |
InstrProfiling.h file declares profile runtime public APIs.
It has become a dumping place for many different things, which
needs cleanups. In this change, core type declarations and
portability macros are moved to a new file InstrProfilingPort.h.
llvm-svn: 255270
|
| |
|
|
| |
llvm-svn: 255266
|
| |
|
|
|
|
|
| |
Several test cases that used to fail on both power LE and BE
now run correctly on LE.
llvm-svn: 255262
|
| |
|
|
|
|
|
|
|
| |
Some targets (e.g. Mips) don't have 64-bit atomics, so using atomic_uint64_t
leads to build failures. Use atomic_uintptr_t to avoid such errors.
Patch by Max Ostapenko.
llvm-svn: 255242
|
| |
|
|
|
|
| |
Patch by Max Ostapenko.
llvm-svn: 255230
|
| |
|
|
|
|
|
|
| |
Patch by Max Ostapenko.
Differential Revision: http://reviews.llvm.org/D15080
llvm-svn: 255228
|
| |
|
|
|
|
|
| |
Printf is a builtin, and the check fails with -Werror because of a clang
warning about an incompatible redeclaration.
llvm-svn: 255189
|
| |
|
|
|
|
|
|
| |
libraries."
This reverts r255170. This change caused a bunch of bot failures and needs to be revised.
llvm-svn: 255184
|
| |
|
|
|
|
| |
This makes debugging configuration issues way easier.
llvm-svn: 255183
|
| |
|
|
|
|
|
|
|
| |
This allows the profile runtime to pick the right impl
for cmp&swap for a given target.
Differential Revision: http://reviews.llvm.org/D15248
llvm-svn: 255173
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Rather than having to add new "experimental" options each time someone wants to work on bringing a sanitizer to a new platform, this patch makes options for all of them.
The default values for the options are set by the platform checks that would have enabled them, but they can be overridden on or off.
Reviewers: kubabrecka, samsonov
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14846
llvm-svn: 255170
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Android doesn't support __thread keyword. So move emptyset/oldset
from THREADLOCAL to ThreadSignalContext.
Reviewers: kcc, eugenis, dvyukov
Subscribers: llvm-commits, tberghammer, danalbert
Differential Revision: http://reviews.llvm.org/D15299
llvm-svn: 255168
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Android doesn't have __libc_malloc and related allocation
functions. As its dynamic linker doesn't use malloc, so
we can use REAL(malloc) to replace __libc_malloc safely.
Reviewers: kcc, eugenis, dvyukov
Subscribers: llvm-commits, tberghammer, danalbert, srhines
Differential Revision: http://reviews.llvm.org/D15297
llvm-svn: 255167
|
| |
|
|
|
|
|
|
|
|
|
| |
msse3 is a target dependent flag and must be guarded as check_cxx_compiler_flag()
checks only for compiler error messages and ignores warnings. Earlier COMPILER_RT_HAS_MSSE3_FLAG
is set to "TRUE" for all targets as clang emits warnings and the compilation spits unnecessary
warnings for non-X86 targets. This issue is fixed by coupling the flag with "-Werror"
Differential Revision: http://reviews.llvm.org/D15362
llvm-svn: 255165
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: kcc, eugenis, dvyukov
Subscribers: llvm-commits, tberghammer, danalbert, srhines
Differential Revision: http://reviews.llvm.org/D15295
llvm-svn: 255164
|
| |
|
|
|
|
|
| |
MSVC apparently makes atexit available even without including stdlib.h,
but clang-cl does not. This makes the file build also with clang-cl.
llvm-svn: 255160
|
| |
|
|
|
|
|
|
|
|
| |
check_memcpy test added in r254959 fails on some configurations due to
memset() calls inserted by Clang. Try harder to avoid them:
* Explicitly use internal_memset() instead of empty braced-initializer.
* Replace "new T()" with "new T", as the former generates zero-initialization
for structs in C++11.
llvm-svn: 255136
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: kcc, eugenis, dvyukov
Subscribers: llvm-commits, tberghammer, danalbert, srhines
Differential Revision: http://reviews.llvm.org/D15298
llvm-svn: 255135
|
| |
|
|
| |
llvm-svn: 255116
|
| |
|
|
|
|
|
|
|
|
|
| |
unrecoverable handlers.
Let unrecoverable handlers be responsbile for killing the
program with Die(), and let functions which print the error
report know if it's going to happen. Re-write the comments to
describe the situation.
llvm-svn: 255081
|
| |
|
|
| |
llvm-svn: 255076
|
| |
|
|
| |
llvm-svn: 255075
|
| |
|
|
|
|
|
|
|
| |
Currently, this is an NFC. However, knowing out the kind of error
report before we bring up all the reporting machinery (implemented in
ScopedReport class) is important once we teach UBSan runtime
suppressions.
llvm-svn: 255074
|