Commit Graph

5908 Commits

Author SHA1 Message Date
Alexey Samsonov ee03b5bbb9 [CMake] Unify build rules for sanitizer_common for Apple and non-Apple platforms.
Additionally, link safestack runtime on OS X with nolibc version of
sanitizer_common runtime, as we do on Linux.

llvm-svn: 246227
2015-08-27 22:23:27 +00:00
Alexey Samsonov 2daddb05de [CMake] Delete unused variable and target.
llvm-svn: 246221
2015-08-27 22:04:02 +00:00
Alexey Samsonov 53b8750e7d [Sanitizers] Make abort_on_error common flag.
Summary:
Teach all sanitizers to call abort() instead of _exit() after printing
an error report, if requested. This behavior is the default on Mac OS.

Reviewers: kcc, kubabrecka

Subscribers: llvm-commits

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

llvm-svn: 246205
2015-08-27 20:40:24 +00:00
Chris Bieneman f12cf13f38 [CMake] Add ARCHS option to add_sanitizer_rt_symbols.
Summary:
This is another step in a multi-step refactoring to move add_sanitizer_rt_symbols in the direction of other add_* functions in compiler-rt.

Changes to CMakeLists files are all minimal except ubsan which tests the new ARCHS loop.

Further cleanup patches will follow.

Reviewers: filcab, bogner, kubabrecka, zaks.anna, glider, samsonov

Subscribers: llvm-commits

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

llvm-svn: 246199
2015-08-27 20:07:54 +00:00
Alexey Samsonov 34620a8e4f [Sanitizer] Use internal_memmove instead of the one implicitly generated by compiler.
llvm-svn: 246198
2015-08-27 20:07:28 +00:00
Evgeniy Stepanov b732e384e1 [sanitizer] Disable sem_* interceptors on Mac.
llvm-svn: 246190
2015-08-27 19:20:01 +00:00
Evgeniy Stepanov 533fde9f4d [sanitizer] Move sem_* to common interceptors.
llvm-svn: 246184
2015-08-27 18:51:18 +00:00
Chris Bieneman 2be86df4b1 [CMake] Add PARENT_TARGET option to add_sanitizer_rt_symbols.
Summary: This is another step in a multi-step refactoring to move add_sanitizer_rt_symbols in the direction of other add_* functions in compiler-rt.

Reviewers: filcab, bogner, kubabrecka, zaks.anna, glider, samsonov

Subscribers: llvm-commits

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

llvm-svn: 246178
2015-08-27 18:27:33 +00:00
Reid Kleckner 255ee043cb Unit test the CRLF change to suppression parsing
It's a simpler, faster, and more portable.

llvm-svn: 246171
2015-08-27 18:05:33 +00:00
Reid Kleckner 766e507784 [windows] Avoid unix2dos, it seems to not work on our bot
llvm-svn: 246162
2015-08-27 16:56:10 +00:00
Adhemerval Zanella 8ea893a57a [compiler-rt] [tsan] Fix GetTls for aarch64
This patch fix the function GetTls for aarch64, where it assumes it
follows the x86_64 way where the TLS initial address is at the end
of TLS.  Instead aarch64 set the TLS address as the thread pointer.

llvm-svn: 246148
2015-08-27 13:11:00 +00:00
Chris Bieneman bfc74bd3fc [CMake] Converting add_sanitizer_rt_symbols to use cmake_parse_arguments.
Summary: This is the first step in a multi-step refactoring to move add_sanitizer_rt_symbols in the direction of other add_* functions in compiler-rt.

Reviewers: filcab, bogner, kubabrecka, zaks.anna, glider, samsonov

Subscribers: llvm-commits

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

llvm-svn: 246102
2015-08-26 23:12:25 +00:00
Chris Bieneman 3454005b05 [CMake] Cleaning up ubsan to use OBJECT_LIBS and to not loop when calling add_compiler_rt_runtime.
llvm-svn: 246097
2015-08-26 22:36:31 +00:00
Reid Kleckner ac86c29bd0 Handle suppression files ending in CRLF (\r\n)
The gnuwin32 version of 'echo' appears to produce such files, causing a
test failure that only reproduced with gnuwin32.

llvm-svn: 246096
2015-08-26 22:23:50 +00:00
Alexey Samsonov 966eba0585 [Sanitizer] Test churn: use %env_tool_opts in sanitizer_common lit tests.
This follows the approach we use in ASan and UBSan lit tests to setup
tool options in a portable way, and to provide a nice way to specify
testsuite-wide defaults.

llvm-svn: 246058
2015-08-26 19:29:07 +00:00
Chris Bieneman 7173f07d70 [CMake] Add OBJECT_LIBS option to add_compiler_rt_runtime, and refactored asan call site to use it.
Summary: This is one more step to allow us to eliminate platform-specific code from the library CMakeLists files. Subsequent patches will refactor all call sites to use this and other new features.

Reviewers: filcab, bogner, kubabrecka, zaks.anna, glider, samsonov

Subscribers: llvm-commits

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

llvm-svn: 246047
2015-08-26 18:33:51 +00:00
Eric Fiselier 30130f2070 [compiler-rt] Add common interceptor for wcrtomb.
Summary: Currently there is a libc++ test failing under MSAN because wcrtomb is not intercepted. This patch adds an interceptor for it. 

Reviewers: samsonov, eugenis

Subscribers: tberghammer, danalbert, srhines, llvm-commits

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

llvm-svn: 245994
2015-08-26 00:14:08 +00:00
Evgeniy Stepanov f8af87957c [msan] Regression test for PR24561.
Fixed in r245980.

llvm-svn: 245981
2015-08-25 22:20:15 +00:00
Chris Bieneman f4b7bcec97 [CMake] fixing a typo that is breaking bots.
llvm-svn: 245971
2015-08-25 20:00:35 +00:00
Chris Bieneman d160260681 [CMake] merge add_compiler_rt_runtime and add_compiler_rt_darwin_runtime into a single function
Summary: This refactoring moves much of the Apple-specific behavior into a function in AddCompilerRT. The next cleanup patch will remove more of the if(APPLE) checks in the outlying CMakeLists.

This patch adds a bunch of new functionality to add_compiler_rt_runtime so that the target names don't need to be reconstructed outside the call. It also updates some of the call sites to exercise the new functionality, but does not update all uses fully. Subsequent patches will further update call sites and move to using the new features.

Reviewers: filcab, bogner, kubabrecka, zaks.anna, glider, samsonov

Subscribers: beanz, rengolin, llvm-commits

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

llvm-svn: 245970
2015-08-25 19:53:09 +00:00
Alexey Samsonov 47aa53e91c [UBSan] Test churn: use the approach from r244839 and r245962 in UBSan lit tests.
Introduce %env_ubsan_opts= substitution instead of specifying
UBSAN_OPTIONS manually in the RUN-lines. This will come in handy
once we introduce some default UBSAN_OPTIONS for the whole testsuite
(for instance, make abort_on_error common option).

llvm-svn: 245967
2015-08-25 19:01:44 +00:00
Alexey Samsonov 1130681716 [ASan] More ASAN_OPTIONS churn: use %env_asan_opts where applicable.
Reviewers: filcab, rnk, kubabrecka

Subscribers: tberghammer, danalbert, srhines, llvm-commits

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

llvm-svn: 245962
2015-08-25 18:27:53 +00:00
Alexey Samsonov f3b9c895fa [UBSan] Add the ability to print more precise error kind in summary line.
Reviewers: rsmith, pcc

Subscribers: cfe-commits

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

llvm-svn: 245897
2015-08-24 23:18:49 +00:00
Alexey Samsonov ab229c13a6 [Sanitizer] Dump coverage if we're killing the program with __sanitizer::Die().
Previously we had to call __sanitizer_cov_dump() from tool-specific
callbacks - instead, let sanitizer_common library handle this in a
single place.

This is a re-application of r245770, with slightly different approach
taken.

llvm-svn: 245890
2015-08-24 22:21:47 +00:00
Alexey Samsonov b92aa0fc3f [Sanitizers] Allow to install several internal Die callbacks.
This is required to properly re-apply r245770:
1) We should be able to dump coverage in __sanitizer::Die() if coverage
   collection is turned on.
2) We don't want to explicitly do this in every single
   sanitizer that supports it.
3) We don't want to link in coverage (and therefore symbolization) bits
   into small sanitizers that don't support it (safestack).

The solution is to make InitializeCoverage() register its own Die()
callback that would call __sanitizer_cov_dump(). This callback should be
executed in addition to another tool-specific die callbacks (if there
are any).

llvm-svn: 245889
2015-08-24 22:21:44 +00:00
Alexey Samsonov 87da1509e7 [autoconf] Properly exclude sanitizer_common nolibc sources from build.
llvm-svn: 245865
2015-08-24 19:38:59 +00:00
Adhemerval Zanella 2a1e58d000 [dfsan] Enable DFSan for AArch64/42-bit VMA
This patch adds support for dfsan on aarch64-linux with 42-bit VMA
(current default config for 64K pagesize kernels).  The support is
enabled by defining the SANITIZER_AARCH64_VMA to 42 at build time
for both clang/llvm and compiler-rt.  The default VMA is 39 bits.

llvm-svn: 245841
2015-08-24 13:50:14 +00:00
Alexey Samsonov 4369a3f4ad Revert r245770 and r245777.
These changes break both autoconf Mac OS X buildbot (linker errors
due to wrong Makefiles) and CMake buildbot (safestack test failures).

llvm-svn: 245784
2015-08-22 05:15:55 +00:00
Alexey Samsonov 74683fe519 Try to fix Mac build.
llvm-svn: 245777
2015-08-22 01:07:05 +00:00
Alexey Samsonov eb4fe7883f [TSan] Support __sanitizer_set_death_callback().
llvm-svn: 245776
2015-08-22 01:07:02 +00:00
Evgeniy Stepanov d6376d9875 [asan] Don't apply glibc-specific TLS calculations on Android.
This fixes an infinite recursion between GetTls and GetTlsSize on
Android-x86.

llvm-svn: 245773
2015-08-22 00:47:12 +00:00
Alexey Samsonov 8e38c71cb7 [Sanitizer] Dump coverage if we're killing the program with __sanitizer::Die().
Previously we had to call __sanitizer_cov_dump() from tool-specific
callbacks - instead, let sanitizer_common library handle this in a single place.

llvm-svn: 245770
2015-08-22 00:28:12 +00:00
Alexey Samsonov b6a604aea5 [DFSan] Remove nolibc build.
It's not used now, as is not even included in "dfsan" target.

llvm-svn: 245766
2015-08-21 23:58:45 +00:00
Alexey Samsonov fc95c85cb5 [LSan] Support __sanitizer_set_death_callback in standalone LSan.
llvm-svn: 245758
2015-08-21 23:00:30 +00:00
Alexey Samsonov 540ac1aab4 [MSan] Deprecate __msan_set_death_callback() in favor of __sanitizer_set_death_callback().
llvm-svn: 245754
2015-08-21 22:45:12 +00:00
Alexey Samsonov bb79b06f4e [Sanitizers] Unify the semantics and usage of "exitcode" runtime flag across all sanitizers.
Summary:
Merge "exitcode" flag from ASan, LSan, TSan and "exit_code" from MSan
into one entity. Additionally, make sure sanitizer_common now uses the
value of common_flags()->exitcode when dying on error, so that this
flag will automatically work for other sanitizers (UBSan and DFSan) as
well.

User-visible changes:
* "exit_code" MSan runtime flag is now deprecated. If explicitly
  specified, this flag will take precedence over "exitcode".
  The users are encouraged to migrate to the new version.
* __asan_set_error_exit_code() and __msan_set_exit_code() functions
  are removed. With few exceptions, we don't support changing runtime
  flags during program execution - we can't make them thread-safe.
  The users should use __sanitizer_set_death_callback()
  that would call _exit() with proper exit code instead.
* Plugin tools (LSan and UBSan) now inherit the exit code of the parent
  tool. In particular, this means that ASan would now crash the program
  with exit code "1" instead of "23" if it detects leaks.

Reviewers: kcc, eugenis

Subscribers: llvm-commits

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

llvm-svn: 245734
2015-08-21 20:49:37 +00:00
Dmitry Vyukov 7830c2d726 tsan: don't report any bugs when report_bugs=0 flag is set
llvm-svn: 245720
2015-08-21 18:21:24 +00:00
Chris Bieneman 2ac796d6cc [CMake] Need to filter out test architectures on ubsan as well.
llvm-svn: 245714
2015-08-21 18:06:00 +00:00
Chris Bieneman 797f5b3683 [CMake] Fixing haswell filtering.
Turns out this wasn't working at all.

llvm-svn: 245713
2015-08-21 18:05:57 +00:00
Adhemerval Zanella 36b5042753 [compiler-rt] [sanitizers] Add aarch64 syscall optimization support
This patch adds the inline syscall support for aarch64 instead of relying
on the syscall runtime function.

llvm-svn: 245702
2015-08-21 14:50:36 +00:00
Saleem Abdulrasool 0d6094b992 builtins: restrict aliases
MachO and COFF do not support aliases.  Restrict the alias to ELF targets.  This
should also fix the Darwin build.  Make the FNALIAS usage an error on non-ELF
targets.

llvm-svn: 245669
2015-08-21 04:39:52 +00:00
Josh Gao 772527c57b [compiler-rt] Add libgcc compatibility aliases for __cmp{s,d,f}f2.
Reviewers: compnerd

Subscribers: asl, llvm-commits

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

llvm-svn: 245663
2015-08-21 02:51:17 +00:00
Josh Gao 1108ae03b1 Implement __aeabi_c{d,f}{cmpeq,cmple,rcmple}.
Summary: Implement more missing ARM EABI runtime functions.

Reviewers: rengolin, compnerd

Subscribers: pirama, srhines, danalbert, aemerson, llvm-commits

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

llvm-svn: 245648
2015-08-21 00:25:37 +00:00
Chris Bieneman 4268d39436 [CMake] Turns out CMake was passing the space as part of the argument instead of separating two arguments.
llvm-svn: 245624
2015-08-20 22:06:46 +00:00
Adhemerval Zanella d46da9ac31 [asan] Fix build issue from r245596
This patch fixes the build issue for:

sanitizer_platform.h:88:4: error: #error "invalid SANITIZER_AARCH64_VMA size"

llvm-svn: 245614
2015-08-20 21:06:26 +00:00
Adhemerval Zanella eccc939e34 [asan] Enable ASan for AArch64/42-bit VMA
This patch adds support for asan on aarch64-linux with 42-bit VMA
(current default config for 64K pagesize kernels).  The support is
enabled by defining the SANITIZER_AARCH64_VMA to 42 at build time
for both clang/llvm and compiler-rt.  The default VMA is 39 bits.

For 42-bit VMA aarch64 uses SANITIZIER_CAN_USER_ALLOCATOR64.

llvm-svn: 245596
2015-08-20 18:49:40 +00:00
Chris Bieneman 2335bb7e16 [CMake] Fixing r245581 based on feedback from Filcab.
llvm-svn: 245582
2015-08-20 17:46:58 +00:00
Chris Bieneman 73107c6122 [CMake] [OS X] Don't require command line tools installations for running compiler-rt tests.
If you're on an Apple platform and /usr/include doesn't exist, we should set a sysroot flag when calling clang.

llvm-svn: 245581
2015-08-20 17:35:56 +00:00
Chris Bieneman 5eae197ab0 [CMake] Fix building unit tests on Darwin
Summary:
There are a number of issues with unit tests on Darwin. These patches address the following:
* Unit tests should be passed -arch (-m32/-m64 isn't sufficient)
* Unit tests should be passed ${DARWIN_osx_CFLAGS} because they're being built for OS X
* Test architectures should be filtered based on base system capabilities (i.e. don't try running x86_64h tests on pre-haswell hardware).

Reviewers: bogner, filcab, kubabrecka

Subscribers: llvm-commits

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

llvm-svn: 245580
2015-08-20 17:32:06 +00:00
Filipe Cabecinhas 3e96367e60 [cmake darwin] Use a STATUS message type. Explain where the arches came from.
llvm-svn: 245453
2015-08-19 16:23:19 +00:00