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