Alexey Samsonov
97c22f79e1
Enable UBSan on FreeBSD. Patch by Viktor Kutuzov.
...
llvm-svn: 202122
2014-02-25 08:29:36 +00:00
Alexey Samsonov
63a4af7346
[CMake] Add top-level target for each compiler-rt library, and add 'compiler-rt' target encompassing them all.
...
llvm-svn: 201556
2014-02-18 09:33:45 +00:00
Alexey Samsonov
ba869e79a0
Move UBSan test suite under test/
...
llvm-svn: 201401
2014-02-14 11:42:22 +00:00
Alexey Samsonov
81a2b466e9
Move shared configs for lit test suites to test/ and unittests/ directories
...
llvm-svn: 201399
2014-02-14 11:00:07 +00:00
Alexey Samsonov
c34a997669
[UBSan] Parse common runtime flags before using a symbolizer
...
llvm-svn: 201217
2014-02-12 08:21:44 +00:00
Alexey Samsonov
c496eba75f
Don't create check-ubsan and check-dfsan commands if they are not supported on this platform
...
llvm-svn: 199979
2014-01-24 08:06:21 +00:00
Timur Iskhodzhanov
b5f983e4b0
[Sanitizers] Rename Symbolizer::SymbolizeCode to Symbolizer::SymbolizePC
...
llvm-svn: 197569
2013-12-18 14:17:39 +00:00
Will Dietz
3177a7f38a
ubsan: Fix typo in 'TypeCheck/vptr.cpp' test to resolve 32bit failure.
...
llvm-svn: 196799
2013-12-09 19:04:33 +00:00
Will Dietz
186507dac6
Fix integer tests on platforms where uint64_t is 'unsigned long long'.
...
llvm-svn: 196612
2013-12-06 21:49:18 +00:00
Alexey Samsonov
c700e76278
[UBSan] Fix warning by specifying __extension__ before __int128
...
llvm-svn: 195648
2013-11-25 15:12:40 +00:00
Alexey Samsonov
164841036d
[UBSan] Make sure ASan and UBSan interact properly by running each test from UBSan test suite with and without ASan
...
llvm-svn: 194698
2013-11-14 12:30:09 +00:00
Alexey Samsonov
84dbdc0d8e
[UBSan] Update UBSan location rendering to match r194686
...
llvm-svn: 194687
2013-11-14 09:54:10 +00:00
Peter Collingbourne
791e65dcfb
Overhaul the symbolizer interface.
...
This moves away from creating the symbolizer object and initializing the
external symbolizer as separate steps. Those steps now always take place
together.
Sanitizers with a legacy requirement to specify their own symbolizer path
should use InitSymbolizer to initialize the symbolizer with the desired
path, and GetSymbolizer to access the symbolizer. Sanitizers with no
such requirement (e.g. UBSan) can use GetOrInitSymbolizer with no need for
initialization.
The symbolizer interface has been made thread-safe (as far as I can
tell) by protecting its member functions with mutexes.
Finally, the symbolizer interface no longer relies on weak externals, the
introduction of which was probably a mistake on my part.
Differential Revision: http://llvm-reviews.chandlerc.com/D1985
llvm-svn: 193448
2013-10-25 23:03:29 +00:00
Peter Collingbourne
90a0876ae7
Runtime support for the indirect function call checker.
...
Differential Revision: http://llvm-reviews.chandlerc.com/D1339
llvm-svn: 193060
2013-10-20 21:29:46 +00:00
Peter Collingbourne
b714e7e12a
[ubsan] Introduce %clangxx substitution for all C++ tests.
...
llvm-svn: 193059
2013-10-20 21:29:32 +00:00
Richard Smith
c1d5471291
Make the big array in the UBSan C++ runtime be zero-initialized to dramatically
...
shrink the binary size of the ubsan runtime.
Also fix a bug where long-running processes could eventually trigger a crash in
the runtime by filling up the cache. I've not found a nice way to add a test for
this crasher; ideas welcome.
llvm-svn: 192931
2013-10-17 22:51:04 +00:00
Alexey Samsonov
f2b811a618
Refactor the usage of strip_path_prefix option and make it more consistent across sanitizers
...
llvm-svn: 191943
2013-10-04 08:55:03 +00:00
Nick Lewycky
f60d8ae155
This fixme is resolved, fix the test.
...
llvm-svn: 191810
2013-10-02 05:05:28 +00:00
Nick Lewycky
b7aa592c19
Make the InvalidValueData take a SourceLocation.
...
llvm-svn: 191807
2013-10-02 02:29:47 +00:00
Alexey Samsonov
7a36e6126b
[Sanitizer] Refactor symbolization interface: use class instead of several functions. Move some code around to get rid of extra source files
...
llvm-svn: 190410
2013-09-10 14:36:16 +00:00
Alexey Samsonov
0803953cea
Generate list of symbols exported from sanitizer runtimes only on 64-bit Unix
...
llvm-svn: 189454
2013-08-28 08:07:04 +00:00
Alexey Samsonov
acab30e927
Properly generate lists of exported symbols for sanitizer runtimes
...
This change adds a Python script that is invoked for
the just-built sanitizer runtime to generate the list of exported symbols
passed to the linker. By default, it contains interceptors and sanitizer
interface functions, but can be extended with tool-specific lists.
llvm-svn: 189356
2013-08-27 15:08:02 +00:00
Rui Ueyama
633ec6848b
Add "CHECK-" prefix to un-break buildbot failure.
...
After r188221, the prefix given by --check-prefix must match with the label
as a whole. Substring is not considered to be a correct label anymore.
llvm-svn: 188227
2013-08-12 23:43:19 +00:00
Daniel Dunbar
bc5dbc435e
[tests] Update to use lit_config and lit package, as appropriate.
...
llvm-svn: 188116
2013-08-09 22:14:01 +00:00
Rafael Espindola
f4fa0d8d9f
disable pipefail for ubsan.
...
llvm-svn: 187273
2013-07-26 23:40:17 +00:00
Hans Wennborg
cb445d882e
Fix another instance of -ccc-cxx vs. --driver-mode=g++
...
llvm-svn: 186609
2013-07-18 21:09:03 +00:00
Alexey Samsonov
889e3ab83c
[ASan] create separate configs for running ASan lit tests in both 32- and 64-bit mode. Clean up RUN-lines in tests.
...
llvm-svn: 183498
2013-06-07 09:38:55 +00:00
Alexey Samsonov
e3bf521b7c
Remove a bunch of copy-paste: use common config for sanitizer lit/unit tests
...
llvm-svn: 183407
2013-06-06 13:28:37 +00:00
Alexey Samsonov
9c2bcf8c15
Improve support for compiler-rt tests in CMake build.
...
Now compiler-rt tests run correctly if compiler-rt is checked out into
arbitrary directory (not necessarily projects/compiler-rt).
Patch by Greg Fitzgerald!
llvm-svn: 182726
2013-05-27 09:35:24 +00:00
Alexey Samsonov
9f3938e271
Explicitly list all sanitizer headers in CMake build rules. Make sure sanitizer lit_tests depend on fresh headers.
...
llvm-svn: 179293
2013-04-11 15:49:52 +00:00
Alexey Samsonov
734aab4066
[Sanitizer] Use a common mutex to prevent mixing reports from different sanitizers. This fixes PR15516
...
llvm-svn: 178853
2013-04-05 07:30:29 +00:00
Richard Smith
74e3d39710
compiler-rt part of r178194. Remove ubsan test for diagnostic on inf/nan conversion between floating-point types.
...
llvm-svn: 178195
2013-03-27 23:21:10 +00:00
Richard Smith
c91e327cba
Build and install .syms files alongside sanitizer runtimes. These are used to
...
specify which symbols are exported to DSOs when the sanitizer is statically
linked into a binary.
llvm-svn: 177784
2013-03-23 00:31:07 +00:00
Richard Smith
b30d11194c
ubsan: Pass floating-point arguments to the runtime by value if they fit the
...
value argument.
llvm-svn: 177689
2013-03-22 00:47:05 +00:00
Richard Smith
b6f3905450
Per discussion on cxx-abi-dev, switch from comparing type_info objects to
...
comparing type_info names, since the latter have better uniqueness guarantees
in practice.
llvm-svn: 177618
2013-03-21 00:42:03 +00:00
Richard Smith
e86b7b0bb9
Split ubsan runtime into three pieces (compiler-rt part):
...
* libclang_rt-san-* is sanitizer_common, and is linked in only if no other
sanitizer runtime is present.
* libclang_rt-ubsan-* is the piece of the runtime which doesn't depend on
a C++ ABI library, and is always linked in.
* libclang_rt-ubsan_cxx-* is the piece of the runtime which depends on a
C++ ABI library, and is only linked in when linking a C++ binary.
The Darwin ubsan runtime is unchanged.
For more details, see Clang change r177605.
llvm-svn: 177606
2013-03-20 23:49:17 +00:00
Richard Smith
807e4dced5
Update ubsan test for clang change r177362.
...
llvm-svn: 177363
2013-03-19 00:04:20 +00:00
Alexey Samsonov
46a36d5019
[UBSan] Use common report decorator to print colorful diagnostics in UBSan, and be more consistent w/ Printf/RawWrite
...
llvm-svn: 176182
2013-02-27 12:58:24 +00:00
Richard Smith
0404ec8396
ubsan: Runtime handlers for array indexing checks.
...
llvm-svn: 175948
2013-02-23 02:40:07 +00:00
Richard Smith
6d9f13127c
ubsan: Add checking for invalid downcasts. Per [expr.static.cast]p2 and p11,
...
base-to-derived casts have undefined behavior if the object is not actually an
instance of the derived type. Runtime library part.
llvm-svn: 175079
2013-02-13 21:18:23 +00:00
Richard Smith
60261eadbd
Highlight caret in bold green, to match Clang diagnostics.
...
llvm-svn: 175013
2013-02-12 22:12:10 +00:00
Alexey Samsonov
b399118cad
CMake: add functions creating universal runtime libraries for several architectures on OS X and use them in ASan and UBSan build rules
...
llvm-svn: 173011
2013-01-21 08:12:20 +00:00
Alexey Samsonov
b068483d4d
CMake: Generalize build rules for different arches for sanitizer_common, asan, ubsan
...
llvm-svn: 172829
2013-01-18 16:51:07 +00:00
Alexey Samsonov
193b45f4fe
CMake variables renaming: X86_64->x86_64 I386->i386
...
llvm-svn: 172812
2013-01-18 12:45:44 +00:00
Will Dietz
149d952e86
[ubsan] Add SANITIZER_INTERFACE_ATTRIBUTE to __ubsan_vptr_type_cache
...
Missed this one previously.
llvm-svn: 172730
2013-01-17 17:14:12 +00:00
Will Dietz
9d3209b5c7
[ubsan] Use __sanitizer::atomic_exchange(), prefer shared impl.
...
Specify weaker memory order in case we optimize for it in the future,
presently still doing same __sync_lock_test_and_set() as before.
Change suggested by Alexey Samsonov, thanks!
llvm-svn: 172429
2013-01-14 16:13:52 +00:00
Richard Smith
ffbe87eba2
UBSan: use %p not 0x%zx when printing pointers.
...
llvm-svn: 172129
2013-01-10 22:39:40 +00:00
Will Dietz
ad5180d774
[ubsan] Move attribute specifier to fix build with gcc.
...
llvm-svn: 172078
2013-01-10 17:01:13 +00:00
Will Dietz
e4b1d2e32c
[ubsan] Give entry methods default (not hidden) visibility.
...
Fixes using ubsan on shared libraries in linux, for example.
llvm-svn: 172041
2013-01-10 03:37:30 +00:00
Will Dietz
b50565b21a
[ubsan] Drop use of __atomic_exchange_n for now to fix build for some.
...
Need a more reliable way to check for support of this intrinsic.
llvm-svn: 171955
2013-01-09 06:18:40 +00:00
Will Dietz
765c266892
[ubsan] Add deduplication functionality, always enabled.
...
llvm-svn: 171948
2013-01-09 03:40:03 +00:00
Will Dietz
2b40b7ef84
[ubsan] Check for appropriate types on compound assignment overflow diagnostics.
...
llvm-svn: 171802
2013-01-07 22:25:54 +00:00
Will Dietz
82f61bf4b6
[ubsan] Don't suggest casting to unsigned for unsigned unary minus overflow.
...
Fixed version of r171273.
llvm-svn: 171278
2012-12-31 06:36:44 +00:00
Chandler Carruth
5f8061bc36
Revert r171273 which doesn't actually compile.
...
Original commit message:
[ubsan] Don't suggest casting to unsigned for unsigned unary minus overflow.
llvm-svn: 171277
2012-12-31 06:16:47 +00:00
Will Dietz
d6cd3203f6
[ubsan] Don't suggest casting to unsigned for unsigned unary minus overflow.
...
llvm-svn: 171273
2012-12-31 02:20:55 +00:00
Will Dietz
2a5f569d88
[ubsan] Update test now that check recovery is default and has driver flag.
...
llvm-svn: 171265
2012-12-30 20:53:39 +00:00
Alexey Samsonov
c20f5d2246
Define COMPILER_RT_CAN_EXECUTE_TESTS variable on platforms where we can produce working binaries and use it in build rules for sanitizers tests
...
llvm-svn: 171160
2012-12-27 13:19:23 +00:00
Richard Smith
64e25ce53d
Move C++ name demangling support from ubsan into sanitizer_common.
...
llvm-svn: 170666
2012-12-20 05:00:13 +00:00
Alexey Samsonov
f37c45c20d
[Sanitizer] Expose StackTrace::GetPreviousInstructionPc() to get PC of call instruction from return address
...
llvm-svn: 170424
2012-12-18 09:57:34 +00:00
Richard Smith
7e45562ad0
ubsan: Demangle class names, and be more informative when a reinterpret_cast
...
has got us to the wrong offset within an object.
llvm-svn: 170423
2012-12-18 09:30:21 +00:00
Richard Smith
cf56ebd52a
ubsan: When diagnosing something wrong somewhere in memory, emit a note
...
pointing at the bad location and a snippet of nearby memory values. This is
strictly best-effort; reading these bytes to display the note could lead to a
seg fault, and that's explicitly OK.
llvm-svn: 170415
2012-12-18 06:30:32 +00:00
Richard Smith
52987120f9
ubsan: if the frontend didn't provide us with a source location, try to work
...
one out from the return address. Currently, we can only resolve this address to
a file and line number if we have an external symbolizer.
llvm-svn: 170407
2012-12-18 04:23:18 +00:00
Richard Smith
37a913ae8f
Rein ubsan's vptr sanitizer back a bit. Per core issue 453, binding a reference
...
to an object outside its lifetime does not have undefined behavior.
llvm-svn: 170388
2012-12-18 00:23:12 +00:00
Richard Smith
177f80376d
ubsan unit tests for -fsanitize=bool and -fsanitize=enum.
...
llvm-svn: 170109
2012-12-13 07:12:20 +00:00
Richard Smith
32952215b6
ubsan: Add -fsanitize=bool and -fsanitize=enum, which check for loads of
...
bit-patterns which are not valid values for enumerated or boolean types.
These checks are the ubsan analogue of !range metadata.
llvm-svn: 170107
2012-12-13 07:00:14 +00:00
Will Dietz
2c36c71f5b
[ubsan] Refactor handlers to have separate entry points for aborting.
...
If user specifies aborting after a recoverable failed check is
appropriate, frontend should emit call to the _abort variant.
Test this behavior with newly added -fsanitize-recover flag.
llvm-svn: 169113
2012-12-02 19:47:29 +00:00
Will Dietz
b28179be10
[ubsan] Replace "fatal error" with "runtime error".
...
llvm-svn: 169112
2012-12-02 18:43:33 +00:00
Richard Smith
57000c38fc
ubsan: Disable __int128 tests if the host Clang does not support it. These
...
tests will still fail if compiler-rt was built with a compiler without __int128
support, but the host compiler has __int128 support.
llvm-svn: 168955
2012-11-29 23:03:58 +00:00
Richard Smith
99507e6c10
ubsan: Don't assume that Clang provides __int128 unless it advertises that it does.
...
llvm-svn: 168857
2012-11-29 05:59:30 +00:00
Will Dietz
2631aaf939
ubsan: Support unsigned overflows, and divide-by-zero int/float split.
...
llvm-svn: 168700
2012-11-27 15:01:43 +00:00
Alexey Samsonov
56f1ef7d3b
ubsan: fix broken test case by using brand new [[ @LINE ]] FileCheck feature
...
llvm-svn: 168170
2012-11-16 13:38:03 +00:00
Alexey Samsonov
be9a293dda
UBSan: enable CMake build on Darwin. Fix two failing tests and disable the test which produces linker errors on Darwin.
...
llvm-svn: 168169
2012-11-16 12:57:07 +00:00
Richard Smith
2674c6e39b
Fix typo from code review (thanks to Alexey Samsonov). This is also caught by the existing tests when building for i386.
...
llvm-svn: 167890
2012-11-13 23:58:20 +00:00
Richard Smith
6122d0692b
Support for building the ubsan runtime when using the autoconf build system on
...
Darwin. Patch by Jean-Daniel Dupas, tweaked by Jonathan Sauer, simplified
somewhat by me.
llvm-svn: 167889
2012-11-13 23:55:06 +00:00
Richard Smith
05dce7e644
-fsanitize=undefined: Switch to using sanitizer_common for output. This gets us much closer to not depending on any system headers.
...
llvm-svn: 167888
2012-11-13 23:42:05 +00:00
Richard Smith
77930919ad
Update compiler-rt tests to match flag renaming/deprecation in Clang.
...
llvm-svn: 167434
2012-11-06 02:31:42 +00:00
Richard Smith
8f4d7eb518
Consistently declare 'extern "C"' variable in namespace __ubsan. No functionality change.
...
llvm-svn: 166966
2012-10-29 21:01:59 +00:00
Richard Smith
f0aac0b99e
Don't define an extern "C" variable in its first declaration, to appease a
...
bogus gcc warning. Take this opportunity to move the declaration to the header,
since it's part of the API of this file.
llvm-svn: 166965
2012-10-29 20:54:34 +00:00
Richard Smith
2f0d7d564c
-fcatch-undefined-behavior checking for appropriate vptr value: library side.
...
llvm-svn: 166660
2012-10-25 02:07:02 +00:00
Richard Smith
feea5d6fb4
Provide a slightly more helpful diagnostic if -fcatch-undefined-behavior finds
...
a problem with __int128 arithmetic but the runtime was not built with __int128
support.
llvm-svn: 165913
2012-10-14 23:53:37 +00:00
Richard Smith
130b748b72
Use a better test for __int128 support, which works on old GCC versions.
...
llvm-svn: 165912
2012-10-14 23:28:55 +00:00
Chandler Carruth
eea8a48218
Fix the bootstrap of CompilerRT with host compilers that don't support
...
emulating 128-bit arithmetic on 32-bit x86 targets. This should get the
bootstrap back for GCC 4.6 at least.
Suggestions on better ways to do the detection here are welcome...
llvm-svn: 165863
2012-10-13 02:30:10 +00:00
Richard Smith
7247b23efc
-fcatch-undefined-behavior: Runtime library support for trapping conversions to or
...
from a floating-point type where the source value is not in the range of
representable values of the destination type.
llvm-svn: 165844
2012-10-12 22:57:15 +00:00
Richard Smith
22cc16462e
-fcatch-undefined-behavior: handler for VLA bound which evaluates to a non-positive value.
...
llvm-svn: 165582
2012-10-10 01:10:59 +00:00
Richard Smith
b6fb381dba
-fcatch-undefined-behavior: store the type name directly at the end of a type descriptor. 5% binary size reduction due to fewer relocations.
...
llvm-svn: 165571
2012-10-09 23:55:18 +00:00
Richard Smith
68b3014cd3
Add a runtime diagnostics library for Clang's -fcatch-undefined-behavior.
...
llvm-svn: 165533
2012-10-09 19:34:32 +00:00