Commit Graph

4625 Commits

Author SHA1 Message Date
Alexey Samsonov 25c2224922 [UBSan] Introduce more flexible __ubsan_default_options function instead of UBSAN_DEFAULT_OPTIONS compile definition
llvm-svn: 218137
2014-09-19 18:54:52 +00:00
Alexey Samsonov 760750c44f [UBSan] Optionally report summary in UBSan error reports.
By default summary is not printed if UBSan is run in a standalone mode,
but is printed if it's combined with another sanitizer (like ASan).

llvm-svn: 218135
2014-09-19 18:33:45 +00:00
Evgeniy Stepanov a5d07482d9 [asan] asan_device_setup improvements.
* Allow user SEGV handler if Android-L-like setup is detected.
  Necessary for correctness.
* Change file context labels on the wrapper script to appease SELinux.

llvm-svn: 218124
2014-09-19 15:04:44 +00:00
Alexander Potapenko 53b85c25e0 [ASan] Print a hint when the program crashes accessing the zero page.
This may help some users figure out that the error report is valid.

llvm-svn: 218123
2014-09-19 12:37:00 +00:00
Saleem Abdulrasool 8bf8409be8 builtins: 80-column
Re-wrap a couple of lines.  NFC.

llvm-svn: 218096
2014-09-19 01:35:08 +00:00
Saleem Abdulrasool c5ff406f5f builtins: remove definition of __ARM_ARCH
__ARM_ARCH is part of the ACLE specification.  At least clang and GCC have
supported this part of the ACLE for some time now.  Let the compiler provide the
proper definition for the macro rather than try to guess it.

llvm-svn: 218095
2014-09-19 01:34:03 +00:00
Sergey Matveev 756afb2f82 [asan] Initialize logfile in asan_symbolize.py to sys.stdin.
llvm-svn: 218072
2014-09-18 20:01:28 +00:00
Sergey Matveev 4588de1c22 [asan] Fix a bug in asan_symbolize.py
Do not forget to add newlines between multiple symbolized lines corresponding to
a single input line (i.e. inlining).

llvm-svn: 218071
2014-09-18 19:16:44 +00:00
Dmitry Vyukov 59dce3d4d0 tsan: more careful handling of signals
On some tests we see that signals are not delivered
when a thread is blocked in epoll_wait. The hypothesis
is that the signal is delivered right before epoll_wait
call. The signal is queued as in_blocking_func is not set
yet, and then the thread just blocks in epoll_wait forever.
So double check pending signals *after* setting
in_blocking_func. This way we either queue a signal
and handle it in the beginning of a blocking func,
or process the signal synchronously if it's delivered
when in_blocking_func is set.

llvm-svn: 218070
2014-09-18 19:03:32 +00:00
Dmitry Vyukov c0ae07e98c tsan: fix signal_longjmp test in debug mode
In debug mode tsan checks that user accesses
access user memory. NULL is not user memory.
So the test fails. Allocate real inaccessible
memory for the test.

llvm-svn: 218069
2014-09-18 19:00:02 +00:00
Dmitry Vyukov 9767d2f8da tsan: fix double semicolon ;;
llvm-svn: 218067
2014-09-18 18:58:44 +00:00
Viktor Kutuzov ea66f5bc40 Enable Asan lit tests on FreeBSD.
Differential Revision: http://reviews.llvm.org/D5375

llvm-svn: 218042
2014-09-18 10:04:07 +00:00
Dmitry Vyukov 538ceee2b9 tsan: fix bug number in comment
llvm-svn: 217992
2014-09-17 22:57:57 +00:00
Alexey Samsonov 1947bf9921 PR20721: Don't let UBSan print inaccessible memory
Summary:
UBSan needs to check if memory snippet it's going to print resides
in addressable memory. Similar check might be helpful in ASan with
dump_instruction_bytes option (see http://reviews.llvm.org/D5167).

Instead of scanning /proc/self/maps manually, delegate this check to
the OS kernel: try to write this memory in a syscall and assume that
memory is inaccessible if the syscall failed (e.g. with EFAULT).

Fixes PR20721.

Test Plan: compiler-rt test suite

Reviewers: eugenis, glider

Reviewed By: glider

Subscribers: emaste, ygribov, llvm-commits, glider, rsmith

Differential Revision: http://reviews.llvm.org/D5253

llvm-svn: 217971
2014-09-17 17:56:15 +00:00
Viktor Kutuzov 68b3e87263 Do not link the dyndd runtime library against libdl on FreeBSD
Differential Revision: http://reviews.llvm.org/D5207

llvm-svn: 217944
2014-09-17 07:54:46 +00:00
Viktor Kutuzov 308b93f6e4 Add FreeBSD support to the address sanitizer's deep_call_stack.cc test case
Differential Revision: http://reviews.llvm.org/D4562

llvm-svn: 217943
2014-09-17 07:31:37 +00:00
Dmitry Vyukov 6466f43688 tsan: fix crash when a program registers zillions of atexit callbacks
I don't remember that crash on mmap in internal allocator
ever yielded anything useful, only crashes in rare wierd untested situations.
One of the reasons for crash was to catch if tsan starts allocating
clocks using mmap. Tsan does not allocate clocks using internal_alloc anymore.
Solve it once and for all by allowing mmaps.

llvm-svn: 217929
2014-09-17 00:12:50 +00:00
Dmitry Vyukov 69c4d37b45 tsan: support longjmp out of signal handlers
Fixes https://code.google.com/p/thread-sanitizer/issues/detail?id=75

llvm-svn: 217908
2014-09-16 21:48:22 +00:00
Kostya Serebryany 9fa2fc8357 [sanitizer] Fix global constructor warning in sanitizer; patch by Samuel F Antao
llvm-svn: 217904
2014-09-16 20:49:55 +00:00
Joerg Sonnenberger ed35a3e717 Implement floatsitf, floatunstfsi, which perform
(signed/unsigned)integer to quad-precision conversion.

Submitted by GuanHong Liu.

Differential Revision: http://reviews.llvm.org/D2805

llvm-svn: 217901
2014-09-16 20:34:41 +00:00
Evgeniy Stepanov 3905bb9150 [asan] De-flake one test.
This change replaces an in-test timeout with an unconditional blocking wait.
It speeds up normal execution significantly at the cost of hanging up indefinitely
in case of a failure. This is a very specific regression test and we don't
expect any failures in the future.

Another approach ould be increasing the timeout to ~8 seconds, which seems too
much for a lit test.

llvm-svn: 217870
2014-09-16 12:03:52 +00:00
Evgeniy Stepanov 6ef0106e43 [asan] Fix a comment in a test.
llvm-svn: 217869
2014-09-16 12:01:01 +00:00
Evgeniy Stepanov a59459de27 [asan] Fix a flaky test.
This test has a chance to hit some other random allocation
and get neither heap overflow nor SEGV.

Relax test condition to only check that there is no internal CHECK failure.

llvm-svn: 217769
2014-09-15 13:05:40 +00:00
Evgeniy Stepanov bc496dab07 [asan] Delay system log initialization on Android.
Writing to system log requires libc interceptors to be initialized.
Fixes crashes with verbosity=1 on newer Android builds.

llvm-svn: 217764
2014-09-15 11:37:40 +00:00
Ehsan Akhgari c4f23419bb Avoid calling strtoll and atoll in asan_str_test.cc on Windows for now
Summary:
These two functions are unavailable on MSVC2012, which breaks building the
ASAN tests with MSVC2012.  Since the tests required to run these functions
are disabled on Windows for now, avoid building them to fix the MSVC2012
builds.

Test Plan: This is needed in order to fix building the ASAN tests with MSVC2012.

Reviewers: timurrrr

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D5343

llvm-svn: 217763
2014-09-15 11:34:12 +00:00
Ehsan Akhgari 47d260962f Port the variadic std::tr1::tuple hack for building gtest for MSVC2012 to ASAN tests.
Summary: This is copied from llvm/utils/unittest/CMakeLists.txt.

Test Plan: This partly enables building ASAN tests with MSVC2012.

Reviewers: timurrrr

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D5342

llvm-svn: 217762
2014-09-15 11:33:50 +00:00
Evgeniy Stepanov 7a8330e7bf [asan] Fix path in test.
llvm-svn: 217754
2014-09-15 09:33:20 +00:00
Evgeniy Stepanov 207930d345 [asan] Disable wait4 test on Android.
https://code.google.com/p/memory-sanitizer/issues/detail?id=64

llvm-svn: 217753
2014-09-15 09:20:15 +00:00
Dmitry Vyukov e4b846e0d8 tsan: use growable vector for atexit callbacks
Most real programs setup much more than 1024 callbacks.

llvm-svn: 217713
2014-09-12 22:19:03 +00:00
Alexey Samsonov 0e8364e912 [UBSan] Don't overflow when calculating memory range that should be dumped
llvm-svn: 217703
2014-09-12 19:51:26 +00:00
Timur Iskhodzhanov 651725e191 [ASan/Win] Fix PR20918 -- SEH handler doesn't work with the MD runtime
llvm-svn: 217679
2014-09-12 14:01:30 +00:00
Timur Iskhodzhanov 92c0601d27 [ASan/Win] Rename asan_win_uar_thunk.lib to asan_win_dynamic_runtime_thunk.lib
It turned out that we have to bridge more stuff between the executable
and the ASan RTL DLL than just __asan_option_detect_stack_use_after_return.
See PR20918 for more details.

llvm-svn: 217673
2014-09-12 13:21:02 +00:00
Alexey Samsonov 74f07ed7fe Revert r217616. Problems and complexity it introduces negate its benefit
llvm-svn: 217652
2014-09-12 01:26:57 +00:00
Alexey Samsonov 5d2c0dfe4c [UBSan] Parse common flags from UBSAN_OPTIONS runtime variable even if
UBSan is combined with ASan.

llvm-svn: 217616
2014-09-11 18:20:11 +00:00
Evgeniy Stepanov e579c76bd5 [asan] Preserve existing LD_PRELOAD setting on Android.
llvm-svn: 217584
2014-09-11 12:20:29 +00:00
Alexey Samsonov 5c825967ea [TSan] Use common flags in the same way as all the other sanitizers
llvm-svn: 217559
2014-09-10 23:08:06 +00:00
Alexey Samsonov 611c906cb3 [Sanitizer] Get rid of Symbolizer::Get() and Symbolizer::GetOrNull().
We may as well just use Symbolizer::GetOrInit() in all the cases.
Don't call Symbolizer::Get() early in tools initialization: these days
it doesn't do any important setup work, and we may as well create the
symbolizer the first time it's actually needed.

llvm-svn: 217558
2014-09-10 22:45:09 +00:00
Alexey Samsonov 7f0f17b3fb [UBSan] Add noinline attribute to handlers that should never return.
FIx a problem reported by Jakub Jelinek: don't do early-exit from fatal
UBSan handlers: even if source location is disabled (i.e. acquired by
some other thread), we should continue the execution to make sure that:
a) some thread will print the error report before calling Die().
b) handler marked as noreturn will indeed not return.

Explicitly add "Die()" calls at the end of all fatal handlers to be
sure UBSan handlers don't introduce UB themselves.

llvm-svn: 217542
2014-09-10 20:43:36 +00:00
Alexey Samsonov b69d5dffc3 [UBSan] Add halt_on_error runtime flag
llvm-svn: 217535
2014-09-10 19:35:31 +00:00
Kuba Brecka fa2de77a14 Make compiler-rt tests work with relocatable SDKs on OS X
Reviewed at http://reviews.llvm.org/D4047

llvm-svn: 217523
2014-09-10 17:23:58 +00:00
Yuri Gorshenin 6118d07b00 [asan-assembly-instrumentation] Added end-to-end test for proper stack unwind for functions with inline assembly.
Summary: [asan-assembly-instrumentation] Added end-to-end test for proper stack unwind for functions with inline assembly.

Reviewers: eugenis

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D5260

llvm-svn: 217487
2014-09-10 10:44:35 +00:00
Alexey Samsonov 513e8a911f Remove extra semicolon [-Wpedantic]
llvm-svn: 217407
2014-09-08 23:37:09 +00:00
Alexey Samsonov 90452df7b1 Report source location of returns_nonnull attribute in UBSan reports.
llvm-svn: 217400
2014-09-08 20:17:19 +00:00
Alexey Samsonov c7c3ae0a8b Revert accidental change
llvm-svn: 217391
2014-09-08 17:52:48 +00:00
Alexey Samsonov 8e1162c71d Implement nonnull-attribute sanitizer
Summary:
This patch implements a new UBSan check, which verifies
that function arguments declared to be nonnull with __attribute__((nonnull))
are actually nonnull in runtime.

To implement this check, we pass FunctionDecl to CodeGenFunction::EmitCallArgs
(where applicable) and if function declaration has nonnull attribute specified
for a certain formal parameter, we compare the corresponding RValue to null as
soon as it's calculated.

Test Plan: regression test suite

Reviewers: rsmith

Reviewed By: rsmith

Subscribers: cfe-commits, rnk

Differential Revision: http://reviews.llvm.org/D5082

llvm-svn: 217389
2014-09-08 17:22:45 +00:00
Evgeniy Stepanov 256d5512e6 [msan] Fix wrong array index in io_submit interceptor.
llvm-svn: 217362
2014-09-08 09:28:25 +00:00
Evgeniy Stepanov 36974a7061 [msan] Make chained_origin_limits test faster.
llvm-svn: 217361
2014-09-08 09:04:45 +00:00
Saleem Abdulrasool c89ae72e43 builtins: replace section symbol with reference to spec
Removes a non-ascii character that was committed.

llvm-svn: 217353
2014-09-08 01:49:24 +00:00
Saleem Abdulrasool a0a5873e28 builtins: add AEABI div0 functions
Add the missing AEABI functions that are part of the base platform ABI
specification.  The provided implementation does the bare minimum to avoid
requiring libc headers.  This permits the use of compiler-rt on bare-metal
environments which conform to EABI.

llvm-svn: 217322
2014-09-06 21:34:02 +00:00
Saleem Abdulrasool b6a85b4f6a builtins: remove unnecessary COMPILER_RT_EXPORT
This macro did not do anything at this point, and is not particularly needed for
Windows unless building the builtins as a shared library.  NFC.

llvm-svn: 217321
2014-09-06 21:33:55 +00:00