Evgeniy Stepanov
f518a4e774
[asan] Add fast_unwind_on_check flag.
...
Allows to specify the unwinder to use for CHECK failures. Previous behaviour
was to use the "fatal" unwinder.
As compiler-rt is built without frame pointers, only the slow unwinder
really makes sense here, and it is the default.
llvm-svn: 219677
2014-10-14 09:36:24 +00:00
Evgeniy Stepanov
faef77480d
[asan] Minor tweak to asan_device_setup.
...
Add another wait-for-device which may fix a flaky setup error.
Fix output message.
llvm-svn: 219117
2014-10-06 12:45:39 +00:00
Evgeniy Stepanov
0b9109c803
[asan] Support Android/x86 in asan_device_setup.
...
llvm-svn: 218968
2014-10-03 08:57:11 +00:00
Alexey Samsonov
1b42bde30d
[ASan] Don't use large stack buffer for local variable name in stack frame description
...
llvm-svn: 218827
2014-10-01 21:28:54 +00:00
Alexey Samsonov
0470e24780
[ASan] Make stack-buffer-overflow reports more robust
...
Summary:
Fix the function that gets stack frame description by address in
thread stack, so that it clearly indicates failures. Make this error non-fatal,
and print as much information as we can in this case. Make all errors in
ParseFrameDescription non-fatal.
Test Plan: check-asan testsuite
Reviewers: kcc
Reviewed By: kcc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D5554
llvm-svn: 218819
2014-10-01 21:13:00 +00:00
Evgeniy Stepanov
0f7ab59adc
[sanitizer] Add i686 arch to compiler-rt.
...
This is needed so we can produce -i686- named libraries for
x86 Android (which is i686-linux-android).
An alternative solution would be keeping the "i386" name internally and
tweaking the OUTPUT_NAME of compiler-rt libraries.
llvm-svn: 218761
2014-10-01 12:55:06 +00:00
Kostya Serebryany
da9d495d03
[asan] add a test for array cookie if the operator new is defined inside the class (the cookie should not be poisoned in such case); update the related comment in asan_poisoning.cc
...
llvm-svn: 218620
2014-09-29 19:40:56 +00:00
Evgeniy Stepanov
9e922e7d24
[sanitizer] Android build cleanup.
...
* Detect Android toolchain target arch and set correct runtime library name.
* Merged a lot of Android and non-Android code paths.
* Android is only supported in standalone build of compiler-rt now.
* Linking lsan-common in ASan-Android (makes lsan annotations work).
* Relying on -fsanitize=address linker flag when building tests (again,
unification with non-Android path).
* Runtime library moved from lib/asan to lib/linux.
llvm-svn: 218605
2014-09-29 13:18:55 +00:00
Evgeniy Stepanov
3f11c0d79c
[asan] Fix SELinux setup on Android-K.
...
On pre-L devices SELinux is set up in such a way that zygote wrapper
has to be in system_file context, not zygote_exec.
llvm-svn: 218599
2014-09-29 09:48:13 +00:00
Kuba Brecka
7e38e429b7
[compiler-rt] recommit of r218481: ASan debugging API for report info extraction and locating addresses
...
Reviewed at http://reviews.llvm.org/D4527
Fixed a test case failure on 32-bit Linux, I did right shift on intptr_t, instead it should have been uintptr_t.
llvm-svn: 218538
2014-09-26 19:15:32 +00:00
Kuba Brecka
db22cd1721
[compiler-rt] revert r218481 due to test failure on sanitizer-x86_64-linux
...
llvm-svn: 218501
2014-09-26 05:25:37 +00:00
Kuba Brecka
e37e089b66
[compiler-rt] ASan debugging API for report info extraction and locating addresses
...
Reviewed at http://reviews.llvm.org/D4527
This patch is part of an effort to implement a more generic debugging API, as proposed in http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-July/074656.html , with first part reviewed at http://reviews.llvm.org/D4466 . Now adding several new APIs: __asan_report_present, __asan_get_report_{pc,bp,sp,address,type,size,description}, __asan_locate_address. These return whether an asan report happened yet, the PC, BP, SP, address, access type (read/write), access size and bug description (e.g. "heap-use-after-free"), __asan_locate_address takes a pointer and tries to locate it, i.e. say whether it is a heap pointer, a global or a stack, or whether it's a pointer into the shadow memory. If global or stack, tries to also return the variable name, address and size. If heap, tries to return the chunk address and size. Generally these should serve as an alternative to "asan_describe_address", which only returns all the data in text form. Having an API to get these data could allow having debugging scripts/extensions that could show additional information about a variable/expression/pointer. Test cases in test/asan/TestCases/debug_locate.cc and test/asan/TestCasea/debug_report.cc.
llvm-svn: 218481
2014-09-25 23:53:57 +00:00
Evgeniy Stepanov
c07dc68852
[asan] Fix one test on Android-L.
...
index() is deprecated.
llvm-svn: 218312
2014-09-23 15:42:04 +00:00
Alexander Potapenko
1aba330e52
[ASan] Introduce the dump_instruction_bytes flag to print the faulting instruction upon SIGSEGV
...
When dump_instruction_bytes=1 and the instruction pointer doesn't point to the zero page, ASan prints 16 bytes starting at the instruction point.
llvm-svn: 218243
2014-09-22 11:58:52 +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
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
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
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
Evgeniy Stepanov
e579c76bd5
[asan] Preserve existing LD_PRELOAD setting on Android.
...
llvm-svn: 217584
2014-09-11 12:20:29 +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
Kostya Serebryany
1fb81720ec
[asan] relax the assertion around array cookie load; still need to extract a reproducer where this assertion fails...
...
llvm-svn: 217215
2014-09-05 01:16:30 +00:00
Alexey Samsonov
f537aeaea1
[ASan] Remove the call to GetPageSizeCached from fast path of FastPoisonShadow
...
llvm-svn: 217194
2014-09-04 20:47:27 +00:00
Evgeniy Stepanov
21202ba8dd
[asan] Update asan_device_setup to support Android L Preview.
...
llvm-svn: 216884
2014-09-01 15:37:50 +00:00
Kostya Serebryany
c148f7c3af
[asan] enable poison_array_cookie back
...
llvm-svn: 216705
2014-08-29 01:16:18 +00:00
Kostya Serebryany
ac77055272
[asan] introduce __asan_load_cxx_array_cookie: check that the array cookie address is properly poisoned and return the cookie value. If not, return 0 to avoid infinite loop of DTORs (in case of use-after-free). Calls to this function will be inserted by clang (separate change)
...
llvm-svn: 216692
2014-08-28 22:28:04 +00:00
Kostya Serebryany
1e3b338606
[asan] disable poison_array_cookie while I am investigating a false positive on chromium (I suspect that LLVM looses nosanitizer metadata; no test yet)
...
llvm-svn: 216684
2014-08-28 20:24:05 +00:00
Timur Iskhodzhanov
737370da20
[ASan/Win] Add the -Zl flag to avoid /DEFAULTLIB:libcmt directive in the asan_win_uar_thunk object file
...
This directive results in 'symbol already defined' when linking DLLs that use -MD
llvm-svn: 216663
2014-08-28 12:28:04 +00:00
Alexander Potapenko
83061238d4
[ASan] Whitespace fix. No functionality change.
...
llvm-svn: 216544
2014-08-27 13:43:18 +00:00
Evgeniy Stepanov
8f4e736080
[asan] Restore asan-rt name on linux back to pre-r216380.
...
There is no reason to have different library names for shared and static
cases on linux. It also breaks Android where we install the shared asan-rt
library into the system and should keep the old name.
This change reverts most of r216380 limiting it to win32 targets only.
llvm-svn: 216533
2014-08-27 09:46:54 +00:00
Timur Iskhodzhanov
81885731a8
[ASan/Win] Rename asan_dll_thunk.cc to asan_win_dll_thunk.cc
...
llvm-svn: 216448
2014-08-26 10:21:37 +00:00
Timur Iskhodzhanov
6903e10ddf
[ASan/Win] Add an extra thunk.lib to handle stack-use-after-return option
...
With this patch, "check-asan" passes all the tests with both MT and MD ASan RTL if you set COMPILER_RT_BUILD_SHARED_ASAN to ON
(PR20214)
llvm-svn: 216447
2014-08-26 10:08:24 +00:00
Kostya Serebryany
74bd6bc9f9
[sanitizer] move mlock interceptor from asan/tsan/msan to common; no functionality change intended
...
llvm-svn: 216407
2014-08-25 20:57:59 +00:00
Timur Iskhodzhanov
dc8caada51
[ASan/Win] Add /DEBUG to the MD RTL link flags
...
llvm-svn: 216387
2014-08-25 16:45:53 +00:00
Timur Iskhodzhanov
2311f4dfaa
[ASan] Replace CMake if/APPEND/endif with append_if
...
llvm-svn: 216386
2014-08-25 16:40:39 +00:00
Timur Iskhodzhanov
0a88b25c43
[ASan/Win] Intercept memory allocation functions in the MD CRT
...
llvm-svn: 216382
2014-08-25 13:19:05 +00:00
Timur Iskhodzhanov
ea3ce790dc
[ASan] Rename the ASan dynamic RT
...
Reviewed at http://reviews.llvm.org/D5026
llvm-svn: 216380
2014-08-25 11:44:06 +00:00
Timur Iskhodzhanov
220ddacf8d
[ASan/Win] Land the trivial bits of -MD RTL support (PR20214)
...
llvm-svn: 216265
2014-08-22 12:38:07 +00:00
Timur Iskhodzhanov
f2d24473fe
[ASan] Use check_library_exists to determine if libc/libstdc++ are available
...
llvm-svn: 216264
2014-08-22 12:26:34 +00:00
Alexander Potapenko
373863d31e
Follow-up for r215436: use SIZE_T for strlen and wcslen interceptors.
...
llvm-svn: 216184
2014-08-21 16:12:46 +00:00
Timur Iskhodzhanov
a14ef30443
[ASan] Turns out we should always intercept __cxa_throw
...
At least check-asan works with this change.
If the change breaks anything, we'll need to add:
a) a comment describing why we have to use INTERCEPT_FUNCTION rather than
ASAN_INTERCEPT_FUNC
and
b) a test case.
llvm-svn: 216177
2014-08-21 13:33:39 +00:00
Alexey Samsonov
2e39027931
[LSan] Parse common flags from LSAN_OPTIONS even if LSan is combined with
...
another sanitizer.
A user may run both LSan and LSan+ASan. It is weird to pass path to leak
suppression file (or other common sanitizer flags, like "verbosity") in
"LSAN_OPTIONS" in the first case and in "ASAN_OPTIONS" in the second case.
llvm-svn: 215949
2014-08-18 23:39:47 +00:00
Timur Iskhodzhanov
48e21c07c1
Follow-up to r215724: fix a lint warning
...
llvm-svn: 215725
2014-08-15 16:10:02 +00:00
Timur Iskhodzhanov
5c84264194
[ASan/Win] Introduce a new macro for malloc-like function attributes; also, clang-format the definitions of these functions
...
llvm-svn: 215724
2014-08-15 16:08:53 +00:00
Timur Iskhodzhanov
f8b1cd210d
[ASan/Win] We don't really need to use .CRT to call __asan_init when using -MD
...
llvm-svn: 215719
2014-08-15 14:44:17 +00:00
Timur Iskhodzhanov
750f1cf9e4
[ASan/Win] Remove old, unused and non-functional code that will be re-written soon
...
llvm-svn: 215707
2014-08-15 12:56:52 +00:00
Alexey Samsonov
34e2b280da
[TSan] Share the code the setup code calling getrlim/setrlim with sanitizer_common
...
llvm-svn: 215481
2014-08-12 22:31:19 +00:00
Alexey Samsonov
d2d2457823
[Sanitizer] Make disable_coredump a common flag and use it in TSan
...
llvm-svn: 215479
2014-08-12 22:07:48 +00:00
Alexey Samsonov
b9ec65cd4d
[Sanitizer] Kill deprecated allocator interfaces in ASan, MSan and TSan in favor of
...
a unified interface in <sanitizer/allocator_interface.h>.
llvm-svn: 215469
2014-08-12 20:28:20 +00:00
Timur Iskhodzhanov
6963686c47
[ASan] Use more appropriate return types for strlen/wcslen to avoid MSVC warnings
...
llvm-svn: 215436
2014-08-12 11:02:53 +00:00
Alexey Samsonov
968a358974
[ASan] Add new options for asan_symbolize.py script.
...
The patch adds new features in asan-symbolizer script which are helpful for using ASan on embedded systems:
1) add cross-compile prefix for binutils
2) define path to sysroot with sanitized binaries
Features are enabled by command line options.
The patch also extends command line interface with help option.
Reviewed in http://reviews.llvm.org/D4703 .
Patch by Maria Guseva!
llvm-svn: 215381
2014-08-11 20:02:49 +00:00
Alexey Samsonov
408d2152c4
Fixup Android tests build rules
...
llvm-svn: 215264
2014-08-09 00:23:11 +00:00
Timur Iskhodzhanov
0575694729
[ASan/Win] Handle SEH exceptions even with -GS
...
This is a follow-up to r213654, r213656, r213667 and r213668.
llvm-svn: 214861
2014-08-05 13:26:26 +00:00
Kostya Serebryany
e9f24a9b3b
[asan] poison array cookies only on 64-bit arch
...
llvm-svn: 214713
2014-08-04 12:59:45 +00:00
Kostya Serebryany
522c35eb80
[asan] introduce __asan_poison_cxx_array_cookie. This is asan-rt part of PR19838 (Left OOB accesses on new[]-allocated arrays with array cookies are not detected). No tests yet. They will follow once I commit the clang part.
...
llvm-svn: 214711
2014-08-04 12:43:13 +00:00
Kostya Serebryany
1cd57ebb6b
[asan] intercept sized operator delete[]
...
llvm-svn: 214704
2014-08-04 10:10:50 +00:00
Alexey Samsonov
d9ad5cec0c
[ASan] Use metadata to pass source-level information from Clang to ASan.
...
Instead of creating global variables for source locations and global names,
just create metadata nodes and strings. They will be transformed into actual
globals in the instrumentation pass (if necessary). This approach is more
flexible:
1) we don't have to ensure that our custom globals survive all the optimizations
2) if globals are discarded for some reason, we will simply ignore metadata for them
and won't have to erase corresponding globals
3) metadata for source locations can be reused for other purposes: e.g. we may
attach source location metadata to alloca instructions and provide better descriptions
for stack variables in ASan error reports.
No functionality change.
llvm-svn: 214604
2014-08-02 00:35:50 +00:00
Ehsan Akhgari
9e5b6a08d4
[ASan] Support the asan_loadN/asan_storeN functions in the DLL thunk library
...
Summary:
This is required for linking DLLs with large functions exceeding
san-instrumentation-with-call-threshold. One such function is
vp9_fdct16x16_sse2 in libvpx.
Reviewers: timurrrr
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D4758
llvm-svn: 214532
2014-08-01 18:04:53 +00:00
Evgeniy Stepanov
1cd9e019da
[asan] End-to-end test for REP MOVS instrumentation.
...
Patch by Yuri Gorshenin.
llvm-svn: 214396
2014-07-31 09:12:20 +00:00
Kostya Serebryany
e7532e59c0
[asan] rename new-delete-size-mismatch to new-delete-type-mismatch and make the report more verbose
...
llvm-svn: 214299
2014-07-30 11:20:37 +00:00
Kostya Serebryany
69852a843c
[asan] add a feature to detect new-delete-size-mismatch (when used with -Xclang -fsized-deallocation). Not yet on Mac. Also, remove some unused code.
...
llvm-svn: 214296
2014-07-30 09:48:23 +00:00
Alexey Samsonov
1440105338
[Sanitizer] Simplify Symbolizer creation interface.
...
Get rid of Symbolizer::Init(path_to_external) in favor of
thread-safe Symbolizer::GetOrInit(), and use the latter version
everywhere. Implicitly depend on the value of external_symbolizer_path
runtime flag instead of passing it around manually.
No functionality change.
llvm-svn: 214005
2014-07-26 01:37:23 +00:00
Alexey Samsonov
2178054216
[Sanitizer] Introduce SANITIZER_CAN_USE_PREINIT_ARRAY definition and use it across sanitizers.
...
Get rid of ASAN_USE_PREINIT_ARRAY and LSAN_USE_PREINIT_ARRAY - just always
use .preinit_array if it's available. This mode seems stable enough, and
we've been relying on default values of these macro for a long time.
llvm-svn: 213980
2014-07-25 22:05:02 +00:00
Viktor Kutuzov
d712403b98
Allow initialization of Asan interceptors before the general Asan initialization takes place on FreeBSD
...
Differential Revision: http://reviews.llvm.org/D4496
llvm-svn: 213941
2014-07-25 12:45:36 +00:00
Timur Iskhodzhanov
cb5bf58f3d
[ASan/Win] Add SEH handling to the DLL thunk as well
...
llvm-svn: 213656
2014-07-22 14:02:53 +00:00
Timur Iskhodzhanov
6d4a6cd68f
[ASan/Win] Handle SEH exceptions (best-effort, similar to longjmp)
...
llvm-svn: 213654
2014-07-22 13:44:18 +00:00
Timur Iskhodzhanov
f2b96e3009
[ASan/Win] Add handling of C++ exceptions to the RTL
...
Also add a longjmp() test
llvm-svn: 213649
2014-07-22 12:37:51 +00:00
Alexey Samsonov
a89ad664b1
[ASan] Fix __asan_describe_address and add a test for it.
...
llvm-svn: 213583
2014-07-21 21:33:46 +00:00
Viktor Kutuzov
5f5adb8ed5
Add FreeBSD support to the Asan symbolization script
...
Differential Revision: http://reviews.llvm.org/D4560
llvm-svn: 213370
2014-07-18 12:07:00 +00:00
Evgeniy Stepanov
92d20f3f90
[asan] Remove leftover debug printf.
...
llvm-svn: 213264
2014-07-17 13:05:21 +00:00
Evgeniy Stepanov
f62cd5559e
[asan] Fix malloc interception on Android L Preview.
...
Format of __libc_malloc_dispatch has changed in Android L.
While we are moving towards a solution that does not depend on bionic
internals, here is something to support both K* and L releases.
llvm-svn: 213263
2014-07-17 12:48:45 +00:00
Kuba Brecka
033890cd0a
[compiler-rt] [asan] Refactor DescribeAddressIfStack to allow reuse for debugging API
...
Refactoring the DescribeAddressIfStack function in asan_report.cc to be able to reuse it for http://reviews.llvm.org/D4527 .
Reviewed at http://reviews.llvm.org/D4545 .
llvm-svn: 213215
2014-07-17 00:18:03 +00:00
Alexander Potapenko
9c62a6d8a2
[ASan] Factor out SymbolizationLoop.process_line() function to let Python
...
scripts that import asan_symbolize to symbolize their reports line by line.
llvm-svn: 213136
2014-07-16 11:00:16 +00:00
Kuba Brecka
58f44dce96
[ASan] Add ASan debugging API to get malloc/free stack traces and shadow memory mapping info
...
Reviewed at http://reviews.llvm.org/D4466
llvm-svn: 213080
2014-07-15 17:33:23 +00:00
Timur Iskhodzhanov
9e4580c8ee
[ASan] Only define macros in asan_init_version.h, move the __asan_init declaration back to asan_interface_internal.h
...
This fixes the issues we've uncovered after landing r212815.
Reviewed at http://reviews.llvm.org/D4500
llvm-svn: 213053
2014-07-15 08:16:04 +00:00
Alexey Samsonov
ae9d59e8c4
[ASan] Improve ODR-violation error reports.
...
Demangle names of involved globals. Print a more consistent summary line.
llvm-svn: 212857
2014-07-11 23:34:26 +00:00
Kostya Serebryany
8e9a5b1899
[asan] fix x32 build, patch by H.J. Lu
...
llvm-svn: 212823
2014-07-11 15:22:45 +00:00
Timur Iskhodzhanov
03f1e408de
[ASan/Win] Don't apply dllexport to __asan_init in the DLL thunk
...
This fixes '___asan_init_v4 already defined' errors when linking some of Chromium DLLs.
Looks like one of the DLL is using a .lib produced while linking another DLL and it exploded after r212699.
I'm trying to come up with a small testcase...
llvm-svn: 212815
2014-07-11 13:46:05 +00:00
Timur Iskhodzhanov
f6827cef73
[ASan] Print register values in a consistent way
...
llvm-svn: 212809
2014-07-11 12:14:46 +00:00
Timur Iskhodzhanov
19853dd28c
[ASan/Win] Catch NULL derefs and page faults
...
Reviewed at http://reviews.llvm.org/D4471
llvm-svn: 212807
2014-07-11 11:57:41 +00:00
Timur Iskhodzhanov
3eb1f4bb90
[ASan/Win] Don't hardcode ASan runtime version in ASan dll thunk
...
Reviewed at http://reviews.llvm.org/D4459
llvm-svn: 212699
2014-07-10 10:33:48 +00:00
Alexey Samsonov
020ac94665
[ASan] Force the compiler to generate frame pointer in certain Mac-specific interceptors.
...
Patch by Kuba Brecka!
llvm-svn: 212664
2014-07-10 00:06:53 +00:00
Alexey Samsonov
58a046fe56
[ASan] Clean up leftovers from assembly instrumentation helpers
...
llvm-svn: 212471
2014-07-07 18:11:24 +00:00
Alexey Samsonov
91bb8e0e3a
Generalize sanitizer allocator public interface.
...
Introduce new public header <sanitizer/allocator_interface.h> and a set
of functions __sanitizer_get_ownership(), __sanitizer_malloc_hook() etc.
that will eventually replace their tool-specific equivalents
(__asan_get_ownership(), __msan_get_ownership() etc.). Tool-specific
functions are now deprecated and implemented as stubs redirecting
to __sanitizer_ versions (which are implemented differently in each tool).
Replace all uses of __xsan_ versions with __sanitizer_ versions in unit
and lit tests.
llvm-svn: 212469
2014-07-07 17:39:31 +00:00
Evgeniy Stepanov
86c077b3a2
[asan] Remove runtime assembly helpers.
...
Remove helper functions that were used in assembly instrumentation.
Patch by Yuri Gorshenin.
llvm-svn: 212456
2014-07-07 13:59:12 +00:00
Kostya Serebryany
7c163a44aa
[sanitizer] support c11 aligned_alloc, Linux only for now
...
llvm-svn: 212322
2014-07-04 07:30:34 +00:00
Evgeniy Stepanov
4af9c0ea80
[asan] i686-linux-android support.
...
Large part of this change is required due to
https://code.google.com/p/android/issues/detail?id=61799
dlsym() crashes when symbol resolution fails, which means
we have to limit the interceptor list instead of relying on
runtime detection.
There are minor differencies in system headers, too.
llvm-svn: 212273
2014-07-03 14:20:56 +00:00
Alexey Samsonov
4f319cca42
[ASan] Print exact source location of global variables in error reports.
...
See https://code.google.com/p/address-sanitizer/issues/detail?id=299 for the
original feature request.
Introduce llvm.asan.globals metadata, which Clang (or any other frontend)
may use to report extra information about global variables to ASan
instrumentation pass in the backend. This metadata replaces
llvm.asan.dynamically_initialized_globals that was used to detect init-order
bugs. llvm.asan.globals contains the following data for each global:
1) source location (file/line/column info);
2) whether it is dynamically initialized;
3) whether it is blacklisted (shouldn't be instrumented).
Source location data is then emitted in the binary and can be picked up
by ASan runtime in case it needs to print error report involving some global.
For example:
0x... is located 4 bytes to the right of global variable 'C::array' defined in '/path/to/file:17:8' (0x...) of size 40
These source locations are printed even if the binary doesn't have any
debug info.
This is an ABI-breaking change. ASan initialization is renamed to
__asan_init_v4(). Pre-built libraries compiled with older Clang will not work
with the fresh runtime.
llvm-svn: 212188
2014-07-02 16:54:41 +00:00
Kostya Serebryany
cd60ed53f6
[asan] when reporting an ODR violation, also print the stack traces where the globals have been registered (thus show the name of shared library or exe to which the global belongs). The reports become a bit too verbose but I do not see any *simple* way to make them more compact. This should be especially helpful when the ODR happens because the same .cc file is used twice in the project in differend DSOs
...
llvm-svn: 211343
2014-06-20 08:24:12 +00:00
Viktor Kutuzov
1f386f0f36
Fix getting IP, BP and SP for address sanitizer's needs on FreeBSD in 32-bit mode
...
llvm-svn: 210988
2014-06-15 13:56:28 +00:00
Dan Albert
1c71fde161
Exclude Android from the tests for valloc/pvalloc.
...
These functions are being removed from Android because they were removed
from POSIX 2004.
llvm-svn: 210962
2014-06-14 00:50:03 +00:00
Evgeniy Stepanov
63ece03c57
[asan] Add malloc_usable_size to android malloc dispatch.
...
llvm-svn: 210452
2014-06-09 08:36:14 +00:00
Evgeniy Stepanov
e5c34ace7f
[asan] Make ReplaceSystemMalloc optional on Android.
...
Don't fail if __libc_malloc_dispatch is missing; continue running
with normal linux interceptors instead.
llvm-svn: 210322
2014-06-06 10:57:21 +00:00
Kostya Serebryany
558b3363a7
[asan] initialize fake_stack_ to 0 before we call SetThreadStackAndTls, because that may actually try to use fake_stack_ (still don't know how). Yet another case where we desperately want https://sourceware.org/glibc/wiki/ThreadPropertiesAPI
...
llvm-svn: 210315
2014-06-06 07:35:35 +00:00
Evgeniy Stepanov
57eba53a01
[asan] asan_device_setup: extend search path
...
In standalone build asan-rt is stored in yet another path.
llvm-svn: 210259
2014-06-05 12:49:35 +00:00
Evgeniy Stepanov
3641cd43b2
[asan] Use -pthread instead of -lpthread in tests.
...
llvm-svn: 210255
2014-06-05 12:22:37 +00:00
Greg Fitzgerald
a1b620051f
[asan] Add install rule for Android runtime
...
llvm-svn: 210216
2014-06-04 21:05:01 +00:00
Evgeniy Stepanov
fe18102649
[sancov] Handle fork.
...
Reset coverage data on fork().
For memory-mapped mode (coverage_direct=1) this helps avoid loss of data
(before this change two processes would write to the same file simultaneously).
For normal mode, this reduces coverage dump size, because PCs from the parent
process are no longer inherited by the child.
llvm-svn: 210180
2014-06-04 12:13:54 +00:00
Kostya Serebryany
7d4fc2c6a7
[asan] enable detect_odr_violation=2; https://code.google.com/p/address-sanitizer/wiki/OneDefinitionRuleViolation . This feature has been working quite well so far, found a few bugs and zero false positives. The main problem is that there could be lots of true positives and users will have to disable this checking until the bugs are fixed.
...
llvm-svn: 210106
2014-06-03 15:06:13 +00:00
Timur Iskhodzhanov
b1415c46fb
[ASan Win] Manually call __asan_init early in the DLL initialization process to avoid a null function call in cout/cerr constructors
...
llvm-svn: 210030
2014-06-02 14:40:07 +00:00
Kostya Serebryany
5181dd3a56
[asan] Improve vDSO check in AsanCheckDynamicRTPrereqs; patch by Yuri Gribov
...
llvm-svn: 210012
2014-06-02 10:39:40 +00:00
Timur Iskhodzhanov
1b42b81549
[Sanitizers Win] Move duplicate Windows-specific compiler flags to a common CMake variable
...
Reviewed at http://reviews.llvm.org/D3952
llvm-svn: 209889
2014-05-30 12:42:57 +00:00
Timur Iskhodzhanov
5bed4206c8
[ASan Win] DLL thunk: make each INTERFACE_FUNCTION unique to prevent ICF linker optimizations
...
llvm-svn: 209881
2014-05-30 09:01:17 +00:00
Evgeniy Stepanov
dd7cb28572
[asan] Enable ASan on PowerPC.
...
Patch by Peter Bergner.
llvm-svn: 209879
2014-05-30 08:52:03 +00:00
Greg Fitzgerald
cd1a131c61
Moved the builtins documentation to lib/builtins/
...
And fixed typos in the ASan readme.
Differential Revision: http://reviews.llvm.org/D3927
llvm-svn: 209778
2014-05-28 23:09:45 +00:00
Timur Iskhodzhanov
82ee0433da
[ASan/Win] Use clang rather than clang-cl by default for lit tests. Make Windows-only tests explicitly use clang-cl.
...
Reviewed at http://reviews.llvm.org/D3893
llvm-svn: 209719
2014-05-28 08:38:13 +00:00
Evgeniy Stepanov
d74bdccafe
[asan] Add a dll thunk for __sanitizer_cov_module_init.
...
llvm-svn: 209718
2014-05-28 08:34:53 +00:00
Evgeniy Stepanov
567e516015
[asancov] Write coverage directly to a memory-mapped file.
...
This way does not require a __sanitizer_cov_dump() call. That's
important on Android, where apps can be killed at arbitrary time.
We write raw PCs to disk instead of module offsets; we also write
memory layout to a separate file. This increases dump size by the
factor of 2 on 64-bit systems.
llvm-svn: 209653
2014-05-27 12:37:52 +00:00
Kostya Serebryany
e1e9a4e2ec
[asan] fix a test following r209508
...
llvm-svn: 209509
2014-05-23 11:52:38 +00:00
Kostya Serebryany
e31d5b6a2c
[asan] relax the test for long double
...
llvm-svn: 209445
2014-05-22 14:50:14 +00:00
Timur Iskhodzhanov
b2eb3131f4
[ASan/Win] Make sure the list of wrappers exported by the main module and imported by the DLL thunk always matches
...
llvm-svn: 209444
2014-05-22 14:49:56 +00:00
Timur Iskhodzhanov
8ff177ede3
[ASan/Win] Thread more library functions from the DLL thunk to the main module
...
llvm-svn: 209441
2014-05-22 13:57:22 +00:00
Timur Iskhodzhanov
0c7c78f1d1
[ASan/Win] Use the new function interception approach to handle function wrappers too; wrap strlen() in DLLs
...
Reviewed at http://reviews.llvm.org/D3871
llvm-svn: 209427
2014-05-22 12:03:40 +00:00
Timur Iskhodzhanov
94ffc5bc12
[ASan/Win] Don't use INTERCEPTOR_ATTRIBUTE for operator new/delete on Windows
...
Reviewed at http://reviews.llvm.org/D3870
llvm-svn: 209416
2014-05-22 11:31:21 +00:00
Timur Iskhodzhanov
818b2e8f71
[ASan/Win] Add a comment about DCL-using-static vs threads
...
llvm-svn: 209414
2014-05-22 10:24:48 +00:00
Evgeniy Stepanov
208aae8ee0
[msan] Chained origins re-design.
...
Generalize StackDepot and create a new specialized instance of it to
efficiently (i.e. without duplicating stack trace data) store the
origin history tree.
This reduces memory usage for chained origins roughly by an order of
magnitude.
Most importantly, this new design allows us to put two limits on
stored history data (exposed in MSAN_OPTIONS) that help avoid
exponential growth in used memory on certain workloads.
See comments in lib/msan/msan_origin.h for more details.
llvm-svn: 209284
2014-05-21 09:02:13 +00:00
Evgeniy Stepanov
687933f55d
[asan] Fix x86 asm instrumentation to preserve flags.
...
This change also enables asm instrumentation in asan tests that was
accidentally disabled yearlier, and adds a sanity test for that.
Patch by Yuri Gorshenin.
llvm-svn: 209282
2014-05-21 08:21:14 +00:00
Timur Iskhodzhanov
e7894f3b14
[ASan Win] Simplify and improve the way we forward ASan interface calls from DLLs
...
Reviewed at http://reviews.llvm.org/D3848
llvm-svn: 209210
2014-05-20 14:26:19 +00:00
Kostya Serebryany
6c039b3459
[asan] update asan_symbolize.py to use the new llvm-symbolizer flag syntax
...
llvm-svn: 209116
2014-05-19 08:30:51 +00:00
Timur Iskhodzhanov
930ffe94aa
[Sanitizer tests] Don't need to use -lstdc++ thanks to --driver-mode=g++
...
Reviewed at http://reviews.llvm.org/D3796
llvm-svn: 209115
2014-05-19 08:19:38 +00:00
Alp Toker
1ee7fc7a1a
Fix typos
...
llvm-svn: 208841
2014-05-15 02:22:34 +00:00
Kostya Serebryany
b9e31d7fcd
[asan] use some LIKELY/UNLIKELY
...
llvm-svn: 208776
2014-05-14 14:03:31 +00:00
Timur Iskhodzhanov
86e2470a5b
[ASan/Win] Enable demangling of global variable names
...
llvm-svn: 208775
2014-05-14 13:55:59 +00:00
Kostya Serebryany
7534a60753
[asan] Respect personality in kernel area detector, patch by Yuri Gribov
...
llvm-svn: 208760
2014-05-14 08:13:11 +00:00
Timur Iskhodzhanov
339e8c98f8
[Sanitizer tests] Add sanitizer_test_config.h to make the inclusion of gtest.h conditional
...
Reviewed at http://reviews.llvm.org/D3744
llvm-svn: 208696
2014-05-13 13:25:12 +00:00
Timur Iskhodzhanov
2e9136c2da
[Sanitizer/ASan tests] Automatically detect the presence of libstdc++
...
llvm-svn: 208695
2014-05-13 12:57:50 +00:00
Timur Iskhodzhanov
7d07fe20a0
[ASan tests] Add Windows-specific flags to lib/asan/tests/CMakeLists.txt
...
Reviewed at http://reviews.llvm.org/D3720
llvm-svn: 208682
2014-05-13 10:33:42 +00:00
Timur Iskhodzhanov
711269966c
[Sanitizer tests] Make simple pthread tests compile and pass on Windows
...
Reviewed at http://reviews.llvm.org/D3725
llvm-svn: 208674
2014-05-13 08:07:09 +00:00
Alexey Samsonov
1866b58885
[ASan] Split static ASan runtime in two parts: asan and asan_cxx.
...
asan_cxx containts replacements for new/delete operators, and should
only be linked in C++ mode. We plan to start building this part
with exception support to make new more standard-compliant.
See https://code.google.com/p/address-sanitizer/issues/detail?id=295
for more details.
llvm-svn: 208609
2014-05-12 18:39:22 +00:00
Timur Iskhodzhanov
a9e9e9d640
[ASan tests] Don't define __asan_default_options in tests on Windows as it is not supported
...
llvm-svn: 208575
2014-05-12 15:12:44 +00:00
Timur Iskhodzhanov
90278c626f
[ASan] Add references to the issue tracker about malloc/free/new/delete mismatch check on Mac and Windows
...
llvm-svn: 208574
2014-05-12 15:06:59 +00:00
Timur Iskhodzhanov
d5d5f6a8b9
[ASan tests] Exclude/simplify a bunch of tests to make them build on Windows
...
(This also requires D3720, D3725 and a few more small changes to land)
llvm-svn: 208573
2014-05-12 15:04:25 +00:00
Timur Iskhodzhanov
9bd988b33b
[ASan tests] Don't run FakeStack.CreateDestroy on Windows as it OOMs
...
llvm-svn: 208572
2014-05-12 14:49:17 +00:00
Timur Iskhodzhanov
9a205ed8ee
[ASan tests] Use the proper attribute on RunStrChrTest helper functions to avoid "unused function" warnings
...
llvm-svn: 208568
2014-05-12 14:31:57 +00:00
Sergey Matveev
f37bd92c3a
[asan] Move the "coverage" flag to common flags.
...
The implementation lives in sanitizer_common and will need to access that flag.
llvm-svn: 208566
2014-05-12 14:27:36 +00:00
Kostya Serebryany
118d469660
[asan] one more attempt to enable lsan by default (PR19521)
...
llvm-svn: 208545
2014-05-12 12:49:48 +00:00
Viktor Kutuzov
626edb6f49
Add FreeBSD support to address sanitizer process mapping facilities
...
llvm-svn: 208537
2014-05-12 11:03:46 +00:00
Kostya Serebryany
9c81b31568
[asan] define ASAN_DYNAMIC=1 if PIC is defined
...
llvm-svn: 208530
2014-05-12 09:45:39 +00:00
Kostya Serebryany
d7992fc921
[asan] fix a self deadlock when printing stats; add a relevant test, cleanup that test while at it to remove linux/darwin differences. Fixes http://code.google.com/p/address-sanitizer/issues/detail?id=306
...
llvm-svn: 208525
2014-05-12 08:01:51 +00:00
Timur Iskhodzhanov
e153347cc5
[ASan tests] Fix non-Windows breakage
...
llvm-svn: 208332
2014-05-08 15:59:35 +00:00
Timur Iskhodzhanov
21a22d34be
[ASan tests] More progress towards Windows support
...
llvm-svn: 208326
2014-05-08 15:13:26 +00:00
Timur Iskhodzhanov
48253ed689
[ASan tests] More progress towards Windows support
...
llvm-svn: 208325
2014-05-08 15:05:42 +00:00
Timur Iskhodzhanov
498052b8eb
[ASan tests] More progress towards Windows support
...
llvm-svn: 208323
2014-05-08 15:01:29 +00:00
Timur Iskhodzhanov
fddadefc33
[ASan tests] Auto-define ASAN_NEEDS_SEGV rather than hardcode it in cmake
...
llvm-svn: 208322
2014-05-08 14:53:59 +00:00
Timur Iskhodzhanov
76f43eecb0
[ASan] Update sanitizer_common and asan test_util headers to support building on Windows
...
llvm-svn: 208306
2014-05-08 12:43:33 +00:00
Timur Iskhodzhanov
6d58e0726d
Ignore stack-buffer-overflow in std::_Find_elem<*> / std::num_get<...>::_Getifld
...
Reviewed at http://reviews.llvm.org/D3650
llvm-svn: 208215
2014-05-07 14:40:23 +00:00
Evgeniy Stepanov
7d46040ff2
[sanitizer] Replace a macro with a function.
...
llvm-svn: 208207
2014-05-07 13:24:28 +00:00
Evgeniy Stepanov
c087df0655
[asan] Include asm instrumentation source in Makefile build.
...
llvm-svn: 208172
2014-05-07 08:55:46 +00:00
Kostya Serebryany
7a733480c8
[asan] introduce interface function __sanitizer_verify_contiguous_container to verify annotations in vector-like containers
...
llvm-svn: 208092
2014-05-06 14:41:01 +00:00
Timur Iskhodzhanov
7d5c81db0a
[ASan/Win] Don't crash when ASAN_OPTIONS have disable_core=1
...
Reviewed at http://reviews.llvm.org/D3610
llvm-svn: 208070
2014-05-06 08:21:50 +00:00
Timur Iskhodzhanov
7721eb3f9d
[ASan/Win] Add DLL thunks for the fake stack interface
...
llvm-svn: 207960
2014-05-05 12:26:04 +00:00
Kostya Serebryany
8b530e10a1
[asan] make AsanCoverage lock-free (and AS-safe)
...
llvm-svn: 207630
2014-04-30 10:40:48 +00:00
Kostya Serebryany
4f9c31a2fa
[asan] split detect_odr_violation into two: =2 detects all ODR violations, =1 detects only those where the variable sizes are different. BTW, the detector seems to be working well and finding nice bugs. Early adopters are welcome.
...
llvm-svn: 207415
2014-04-28 12:47:58 +00:00
Viktor Kutuzov
f9eba2f51d
Fix building Asan and common sanitizers tests on FreeBSD 9.2
...
llvm-svn: 207408
2014-04-28 10:33:01 +00:00
Kostya Serebryany
e91930a7e6
[asan] implement an experimental detector of ODR violations. Not tested yet outside of a tiny test, may need tuning.
...
llvm-svn: 207210
2014-04-25 08:58:28 +00:00
Timur Iskhodzhanov
34ad1a1085
Add DLL thunks for recently-added memcpy, memset and memmove ASan intrinsics
...
llvm-svn: 207113
2014-04-24 12:58:26 +00:00
Alexander Potapenko
a51e483846
[ASan] Move the shadow range on 32-bit iOS (and iOS Simulator)
...
to 0x40000000-0x60000000 to avoid address space clash with system libraries.
The solution has been proposed by tahabekireren@gmail.com in https://code.google.com/p/address-sanitizer/issues/detail?id=210
This is also known to fix some Chromium iOS tests.
llvm-svn: 207002
2014-04-23 17:14:45 +00:00
Kostya Serebryany
8cd3d27879
[asan] disable lsan back. :( -- It appears that quite a few lit tests have leaks and they were not covered by out buildbot
...
llvm-svn: 206955
2014-04-23 08:15:16 +00:00
Kostya Serebryany
c9db838267
[asan] enable LeakSanitizer (LSan) by default in asan. This only affects Linux x86_64. LSan has been used in various projects for more than half a year and we now consider it quite stable to be on by default.
...
llvm-svn: 206896
2014-04-22 13:56:56 +00:00
Kostya Serebryany
38bb53b2c5
[asan] add a run-time flag detect_container_overflow=true/false
...
llvm-svn: 206753
2014-04-21 14:18:45 +00:00
Kostya Serebryany
632751539e
[asan] add __asan_memset and friends
...
llvm-svn: 206748
2014-04-21 11:58:25 +00:00
Kostya Serebryany
74f8d65ae4
[asan] add one more mode to run asan tests with '-with-calls', i.e. using -mllvm -asan-instrumentation-with-call-threshold=0. This is very unfortunate since it effectively doubles the number of gunit asan tests that need to be built and run, but as long as we need out-lined calls (PR17409) I see no other way to test this workaround
...
llvm-svn: 206742
2014-04-21 10:31:35 +00:00
Kostya Serebryany
3d2629c514
[asan] implement __asan_loadN/__asan_storeN for out-lined asan checks
...
llvm-svn: 206733
2014-04-21 07:09:01 +00:00
Evgeniy Stepanov
561c4db707
[asan] Reenable tests that should pass since PR19207 is fixed.
...
llvm-svn: 206593
2014-04-18 13:24:03 +00:00
Alexander Potapenko
da1c510ea6
[ASan] Change AddressSanitizer.LoadStoreCallbacks to use asan_malloc and asan_free.
...
Interceptors don't really work on OSX in asan_noinst_test.cc (this is more or less intentional),
so one shouldn't call intercepted functions in this test -- added a comment about this.
llvm-svn: 206477
2014-04-17 17:29:07 +00:00
Kostya Serebryany
664b1e2f9b
[asan] fix a bug in outlined asan checks and in the corresponding test (ouch)
...
llvm-svn: 206470
2014-04-17 14:38:25 +00:00
Kostya Serebryany
ae401ca5e7
[asan] add __asan_load1/__asan_store1/... callbacks to asan-rt; together with -mllvm -asan-instrumentation-with-call-threshold=N this will be a workaround for PR17409
...
llvm-svn: 206387
2014-04-16 13:52:28 +00:00
Kostya Serebryany
d4b1b2068e
[asan] fix the alloctor code to not use opaque data structure, which was larger than needed. This was a leftover of the allocator1=>allocator2 migration; thanks Yuri Gribov for reminding
...
llvm-svn: 206280
2014-04-15 13:30:32 +00:00
Kostya Serebryany
bcfbea6d4e
[asan] added internal flag mmap_limit_mb
...
llvm-svn: 206178
2014-04-14 14:51:01 +00:00
Kostya Serebryany
90527cb324
[asan] don't use bool in public interface, make sure the interface headers are usable in plain C
...
llvm-svn: 206160
2014-04-14 11:16:53 +00:00
Kostya Serebryany
f694ab1f18
[asan] provide better reports for cases where memcpy/etc get negative size parameter. Also fix a typo found by Tetsuo Kiso
...
llvm-svn: 206158
2014-04-14 09:50:52 +00:00
Viktor Kutuzov
82185a2088
Declare _DYNAMIC and dl_phdr_info in asan_linux.cc on FreeBSD
...
llvm-svn: 205852
2014-04-09 13:37:19 +00:00
Kostya Serebryany
9f20c9b17c
[asan] fix a leak in __tls_get_addr handler; introduce a run-time flag to disable this handler completely; remove a workaround for a bug fixed in glibc
...
llvm-svn: 205617
2014-04-04 09:10:58 +00:00
Alexey Samsonov
11ff0a26a4
[ASan] Fix incompatible runtimes check: don't iterate /proc/self/maps on every call to __asan_init
...
llvm-svn: 205418
2014-04-02 13:09:22 +00:00
Alexey Samsonov
2c66a22e56
[ASan] One more attempt to fix Android build
...
llvm-svn: 205411
2014-04-02 09:36:36 +00:00
Alexey Samsonov
107e4abfd0
[ASan] Fix Android build
...
llvm-svn: 205311
2014-04-01 13:42:16 +00:00
Alexey Samsonov
56b6ee9833
[ASan] Optional support for dynamic ASan runtime on Linux.
...
Based on http://llvm-reviews.chandlerc.com/D3042 by Yuri Gribov!
llvm-svn: 205308
2014-04-01 13:16:30 +00:00
Alexey Samsonov
78a8435fd6
[CMake] Rename add_compiler_rt_static_runtime to add_compiler_rt_runtime.
...
Soon there will be an option to build compiler-rt parts as shared libraries
on Linux. Extracted from http://llvm-reviews.chandlerc.com/D3042
by Yuri Gribov.
llvm-svn: 205183
2014-03-31 13:45:36 +00:00
Timur Iskhodzhanov
e6303d1224
Add support for _expand[_dbg] so we don't crash when _aligned_* allocation functions are used
...
llvm-svn: 204925
2014-03-27 14:01:11 +00:00
Kostya Serebryany
88d0eac412
[asan] Do not sanitize kernel area on 32-bit targets, patch by Yuri Gribov
...
llvm-svn: 204897
2014-03-27 07:36:26 +00:00
Alexander Potapenko
7caa0b9e36
[ASan] Fix a thinko spotted by Evgeniy Stepanov: use REAL(memcpy) on non-OSX systems.
...
llvm-svn: 204794
2014-03-26 11:18:25 +00:00
Alexey Samsonov
c41ca6d31a
[CMake] Rename the variable
...
llvm-svn: 204602
2014-03-24 13:29:20 +00:00
Alexey Samsonov
1847401332
[CMake] Respect CMAKE_CXX_FLAGS in custom clang_compile commands
...
llvm-svn: 204593
2014-03-24 09:42:12 +00:00
Evgeniy Stepanov
ce002ad3b2
[asan] Disable setjmp/sigsetjmp tests.
...
Failing due to PR19207.
llvm-svn: 204590
2014-03-24 08:30:59 +00:00
Evgeniy Stepanov
d7f06ee3c7
[asan] Fix a comment.
...
llvm-svn: 204589
2014-03-24 08:27:31 +00:00
Alexander Potapenko
c6afaace15
[ASan] Move the flag descriptions from comments to ParseFlag arguments.
...
llvm-svn: 204440
2014-03-21 08:37:59 +00:00
Alexander Potapenko
1296436cbf
[libsanitizer] Introduce flag descriptions.
...
Extend ParseFlag to accept the |description| parameter, add dummy values for all existing flags.
As the flags are parsed their descriptions are stored in a global linked list.
The tool can later call __sanitizer::PrintFlagDescriptions() to dump all the flag names and their descriptions.
Add the 'help' flag and make ASan, TSan and MSan print the flags if 'help' is set to 1.
llvm-svn: 204339
2014-03-20 12:52:52 +00:00
Alexey Samsonov
a2fdd8e253
[CMake] Fix build of ASan tests on Mac
...
llvm-svn: 204238
2014-03-19 14:45:40 +00:00
Alexey Samsonov
17703c1092
[CMake] Build sanitizer unit tests with -std=c++11
...
llvm-svn: 204234
2014-03-19 13:57:33 +00:00
Alexander Potapenko
9c97e0de24
[ASan] Remove the unneeded ASAN_RUNTIME_LDFLAGS.
...
llvm-svn: 203913
2014-03-14 10:16:59 +00:00
Timur Iskhodzhanov
28bc2f7a14
Work around PR19125: -Wconstant-logical-operand false positive
...
llvm-svn: 203782
2014-03-13 10:43:02 +00:00
Timur Iskhodzhanov
5c40cc3549
Disable fast shadow zero'ing on Windows
...
llvm-svn: 203778
2014-03-13 10:15:10 +00:00
Timur Iskhodzhanov
e8bd672d31
FastPoisonShadow: check for MmapFixedNoReserve failures
...
llvm-svn: 203776
2014-03-13 10:08:45 +00:00
Alexey Samsonov
32956d651a
[CMake] Make append_if semantics similar to those used in LLVM
...
llvm-svn: 203773
2014-03-13 09:31:36 +00:00
Viktor Kutuzov
ebb00e1553
Add FreeBSD 9.2 support to asan_linux.cc
...
llvm-svn: 203658
2014-03-12 12:44:36 +00:00
Alexander Potapenko
a0c5a6763a
[ASan] Don't build the ASan runtime with -undefined dynamic_lookup, which isn't necessary anymore.
...
Fixes https://code.google.com/p/address-sanitizer/issues/detail?id=266 .
llvm-svn: 203572
2014-03-11 14:04:09 +00:00
Alexey Samsonov
fefeecc7b0
[ASan] Better way to disable tests for functions unavailable on certain platforms
...
llvm-svn: 203224
2014-03-07 09:39:01 +00:00
Evgeniy Stepanov
72a9d25060
[sanitizer] Simplify interceptors with user callbacks.
...
Get rid of the context argument in UNPOISON_PARAM and INITIALIZE_RANGE.
Get rid of all the thread-local contexts in interceptors.
llvm-svn: 203119
2014-03-06 13:26:09 +00:00
Alexey Samsonov
5ec35b75ef
[FreeBSD] Provide FreeBSD-specific things for ASan.
...
Patch by Viktor Kutuzov!
llvm-svn: 203100
2014-03-06 09:05:52 +00:00
Alexey Samsonov
921f5a529e
asan_symbolize.py: use llvm-symbolizer results even if it returned function name w/o file/line info
...
llvm-svn: 202983
2014-03-05 15:18:50 +00:00
Alexey Samsonov
8ad7a05bb4
Improve llvm-symbolizer discovery in asan_symbolize.py
...
llvm-svn: 202982
2014-03-05 15:00:36 +00:00
Alexey Samsonov
359c105c92
Fix StackTrace::LocatePcInTrace, add more unit tests for generic StackTrace
...
llvm-svn: 202849
2014-03-04 14:06:11 +00:00
Alexey Samsonov
d964e7cd81
[CMake] Test for libdl and libpthread presence
...
llvm-svn: 202847
2014-03-04 13:28:21 +00:00
Alexey Samsonov
3d9adc0a73
[ASan] Speed up stack trace unwinding for stacks of size 2.
...
Summary:
We don't need to do any work in this case - just take
the current PC and caller PC.
Reviewers: eugenis, ygribov
Reviewed By: eugenis
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2936
llvm-svn: 202845
2014-03-04 13:12:25 +00:00
Alexey Samsonov
a7c602ac29
A set of trivial changes to support sanitizers on FreeBSD.
...
Patch by Viktor Kutuzov!
llvm-svn: 202801
2014-03-04 08:55:41 +00:00
Kostya Serebryany
796f6557bf
[asan] *experimental* implementation of invalid-pointer-pair detector (finds when two unrelated pointers are compared or subtracted). This implementation has both false positives and false negatives and is not tuned for performance. A bug report for a proper implementation will follow.
...
llvm-svn: 202389
2014-02-27 12:45:36 +00:00
Evgeniy Stepanov
322e89c4e2
[asan] Install asan_device_setup to bin/ when targetting Android.
...
asan_device_setup is a utility that prepares a device to run code built with
ASan. Essentially, it installs ASan runtime library into the system. For this
reason, it has to be at a predictable relative path from the runtime library
itself. We also plan to distribute this utility, packaged with runtime library
and maybe llvm-symbolizer, to the users.
llvm-svn: 202362
2014-02-27 08:41:40 +00:00
Joerg Sonnenberger
9d09e2fe90
Reapply r201910. MSVC gets __func__ defined explicitly, even though it
...
can't build anything here.
llvm-svn: 202297
2014-02-26 20:33:22 +00:00
Kostya Serebryany
78443cfda6
[asan] remove UB (comparison of two unrelated pointers) from a test
...
llvm-svn: 202266
2014-02-26 13:53:23 +00:00
Evgeniy Stepanov
3ff723f373
[asan] asan_device_setup: fix a typo in usage text
...
llvm-svn: 202246
2014-02-26 08:12:28 +00:00
Evgeniy Stepanov
84610ed7bf
[asan] Remove .sh extension from asan_device_setup.
...
llvm-svn: 202245
2014-02-26 08:10:03 +00:00
Alexander Potapenko
2d4b60f9a3
[ASan] Don't set rpath when building ASan runtime libraries.
...
This should fix the issues with `make check-asan` on OS X.
llvm-svn: 202144
2014-02-25 11:54:25 +00:00
Kostya Serebryany
a1a6391d19
[asan] Fix for size_t in Asan's new and delete operators on x64 FreeBSD in 32-bit mode, only for FreeBSD <= 9.2; patch by Viktor Kutuzov
...
llvm-svn: 202124
2014-02-25 08:45:59 +00:00
Kostya Serebryany
cc92c79531
[asan] simplify the code that compute the shadow offset; get rid of two internal flags that allowed to override it. The tests pass, but still this change might break asan on some platform not covered by tests. If you see this, please submit a fix with a test.
...
llvm-svn: 202033
2014-02-24 13:40:24 +00:00
Reid Kleckner
324eee45a7
Revert "Replace __FUNCTION__ with __func__, the latter being standard C99/C++11."
...
This reverts commit r201910.
While __func__ may be standard in C++11, it was only recently added to
MSVC in 2013 CTP, and LLVM supports MSVC 2012. __FUNCTION__ may not be
standard, but it's *very* portable.
llvm-svn: 201916
2014-02-22 00:37:45 +00:00
Joerg Sonnenberger
b15779f307
Replace __FUNCTION__ with __func__, the latter being standard C99/C++11.
...
llvm-svn: 201910
2014-02-21 23:55:15 +00:00
Alexey Samsonov
11705b2f10
[CMake] break dependency between unit tests and runtimes in standalone build
...
llvm-svn: 201778
2014-02-20 12:03:56 +00:00
Evgeniy Stepanov
0f56a71859
[asan] Changes to asm instrumentation must be done through the generator script.
...
llvm-svn: 201766
2014-02-20 07:56:58 +00:00
Evgeniy Stepanov
8126e76a8a
[asan] Do all calls to __asan_report_* through PLT.
...
This matters when runtime is built as a shared library. Even though calling
code is itself part of the same library, these symbols are public and can
(theoretically) be interposed.
It might be better to declare hidden aliases for asan_report_* and call them
directly, but
(a) they are (noreturn), so performance does not matter, and
(b) it may be potentially less portable.
llvm-svn: 201764
2014-02-20 07:54:29 +00:00
Evgeniy Stepanov
cba008e9c5
[asan] A different way of detectinb stack overflow.
...
Instead of checking stack limits that are not well defined for the main thread,
we rely on siginfo::si_code and distance from SP.
llvm-svn: 201673
2014-02-19 13:40:41 +00:00
Alexey Samsonov
cd8535a96d
[CMake] Introduce COMPILER_RT_INCLUDE_TESTS option
...
llvm-svn: 201666
2014-02-19 11:18:47 +00:00
Evgeniy Stepanov
2274ba7716
[asan] Improve stack overflow detection.
...
There are more cases when those manifest as an access below SP.
llvm-svn: 201664
2014-02-19 11:02:46 +00:00
Evgeniy Stepanov
caaaac8c30
[asan] Disable asm instrumentation and tests on Mac.
...
Move asm tests to their own file.
llvm-svn: 201653
2014-02-19 09:14:39 +00:00
Evgeniy Stepanov
182319f7ba
[asan] Fix build on ARM.
...
llvm-svn: 201652
2014-02-19 09:01:14 +00:00
Evgeniy Stepanov
2169c6bba4
[asan] Added assembly functions for x86/amd64 asan.
...
These are runtime support functions for inline assembly instrumentation.
This is a re-submit of r201402.
Patch by Yuri Gorshenin.
llvm-svn: 201650
2014-02-19 08:30:39 +00:00
Timur Iskhodzhanov
cb9dc67a5e
[ASan/Win] Add a couple more DLL thunks
...
llvm-svn: 201580
2014-02-18 15:31:29 +00:00
Evgeniy Stepanov
65b959afad
[asan] Stack overflow detection.
...
Report segmentation faults near or below stack bottom as stack-overflow
(not stack-buffer-overflow!).
llvm-svn: 201565
2014-02-18 11:49:52 +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
b73db72a17
[CMake] Simplify setting compile flag disabling RTTI
...
llvm-svn: 201547
2014-02-18 07:52:40 +00:00
Alexey Samsonov
9a1ffce25a
[CMake] Simplify code for detecting/setting compiler flags
...
llvm-svn: 201543
2014-02-18 07:26:58 +00:00
Alexey Samsonov
9a70077b47
[ASan] Rename asan_runtime_libraries to asan. Re-enable tests on Android.
...
llvm-svn: 201417
2014-02-14 14:45:13 +00:00
Alexey Samsonov
9f20d67034
Move ASan lit-tests under test/asan
...
llvm-svn: 201413
2014-02-14 14:06:10 +00:00
Evgeniy Stepanov
0de2b9b1e2
[asan] Revert r201402, r201404.
...
Test fails in bootstrap build.
llvm-svn: 201411
2014-02-14 12:37:41 +00:00
Evgeniy Stepanov
d2821f5af0
[asan] Disable assembly on windows.
...
llvm-svn: 201404
2014-02-14 12:07:22 +00:00
Evgeniy Stepanov
f335bd9c69
[asan] Added assembly functions for x86/amd64 asan.
...
These are runtime support functions for inline assembly instrumentation.
Patch by Yuri Gorshenin.
llvm-svn: 201402
2014-02-14 11:55:53 +00:00
Evgeniy Stepanov
05938a23f5
[sanitizer] Use mmap to zero-fill large shadow regions.
...
This is covered by existing ASan test.
This does not change anything for TSan by default (but provides a flag to
change the threshold size).
Based on a patch by florent.bruneau here:
https://code.google.com/p/address-sanitizer/issues/detail?id=256
llvm-svn: 201400
2014-02-14 11:41:26 +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
Evgeniy Stepanov
aa9d74cc5d
[asan] Android test runner for ASan lit tests.
...
This change replaces 32- and 64- bit config.in-s with a single config template
that is used to generate both 32 and 64 bits configs as well as the new
arm-android config. Arm-android config is special because it can run tests on
a remote device over adb (android debug bridge).
We replace %clang with a script that run the compiler, upload the result to
the device, and replaces it with another script. The second script runs the
binary on the device and delivers stdout/stderr/exitcode back.
llvm-svn: 201394
2014-02-14 09:22:10 +00:00
Alexander Potapenko
0b28ea9c47
[libsanitizer] Create SanitizerCommonDecorator which provides the Warning() and EndWarning() methods
...
(needed for SEGV handling in sanitizer_common)
llvm-svn: 201392
2014-02-14 08:59:42 +00:00
Evgeniy Stepanov
5cb24b8ca9
[asan] Disable 1 test on Android.
...
llvm-svn: 201332
2014-02-13 14:37:25 +00:00
Evgeniy Stepanov
4e6096b859
[asan] Remove extra clone() arguments in test.
...
Android headers define clone() as a 4-argument function without ellipsis.
llvm-svn: 201331
2014-02-13 14:37:04 +00:00
Evgeniy Stepanov
f79669a323
[asan] Enable signal and sigaction interceptors on Android.
...
Fixes AddressSanitizer.SignalTest breakage.
llvm-svn: 201330
2014-02-13 14:33:24 +00:00
Evgeniy Stepanov
8978389a32
[asan] Enable SEGV handler on Android by default.
...
Seems stable enough.
Fixes null_deref.cc test.
llvm-svn: 201326
2014-02-13 13:43:47 +00:00
Evgeniy Stepanov
391f0234eb
[asan] Fix null_deref test with zero base shadow.
...
With zero base shadow, shadow for near-zero access is itself at near-zero
location. As a result, this test crashes on the shadow access, and not on the
app access.
Relax a check to match this behavior.
llvm-svn: 201324
2014-02-13 13:04:39 +00:00
Evgeniy Stepanov
788527d9cd
Remove a check from strerror_r test.
...
It's not always true: on Android, strerror_r with invalid errno
prints "Unknown error ..." to the buffer and returns 0.
This test now only checks that strerror_r does not crash.
llvm-svn: 201321
2014-02-13 12:24:10 +00:00
Evgeniy Stepanov
14ca0627d5
[asan] Avoid deadlock in CovDump.
...
llvm-svn: 201304
2014-02-13 08:50:36 +00:00
Kostya Serebryany
c98ce28533
[sanitizer] AArch64 sanitizer support; patch by Christophe Lyon and Yvan Roux
...
llvm-svn: 201303
2014-02-13 07:50:20 +00:00
Evgeniy Stepanov
254c7636cf
[sanitizer] Fix wait4 interceptor on Android.
...
It's called __wait4 there.
llvm-svn: 201235
2014-02-12 13:05:17 +00:00
Evgeniy Stepanov
769d46f373
[sanitizer] Use system unwinder in signal handlers on Android.
...
Because of the way Bionic sets up signal stack frames, libc unwinder is unable
to step through it, resulting in broken SEGV stack traces.
Luckily, libcorkscrew.so on Android implements an unwinder that can start with
a signal context, thus sidestepping the issue.
llvm-svn: 201151
2014-02-11 13:38:57 +00:00
Evgeniy Stepanov
6db97e82a4
Add a copy of missing <ucontext.h> for Android and enable ASan SEGV handler.
...
This change adds a copy of <ucontext.h> for Android found in google-breakpad
that is missing from the official NDK.
ASan SEGV handler is still disabled by default and can be enabled with
ASAN_OPTIONS=handle_segv.
llvm-svn: 201084
2014-02-10 13:34:43 +00:00
Nick Lewycky
c0930b808b
Stick to C++98 for this.
...
llvm-svn: 201015
2014-02-08 01:36:21 +00:00
Nick Lewycky
fff46e01fd
Update these declarations of operator delete (and delete[]) to have noexcept,
...
as required per core issue 1552 and warned about with
-Wimplicit-exception-spec-mismatch.
llvm-svn: 201014
2014-02-08 01:29:07 +00:00
Kostya Serebryany
1f5d17c57d
[asan] fix testing on Mac
...
llvm-svn: 200910
2014-02-06 07:19:52 +00:00
Kostya Serebryany
1ee681305f
[asan] introduce two functions that will allow implementations of C++ garbage colection to work with asan's fake stack
...
llvm-svn: 200908
2014-02-06 06:56:22 +00:00
Kostya Serebryany
9ebd483017
[sanitizer] hide two functions in the __sanitizer namespace to avoid exporting them (gold complained)
...
llvm-svn: 200844
2014-02-05 15:06:32 +00:00
Timur Iskhodzhanov
4a25d42a3c
[ASan/Win] Add DLL thunks for __asan_{,un}poison_memory_region
...
llvm-svn: 200809
2014-02-04 23:54:26 +00:00
Alexander Potapenko
4672bacaef
[ASan] Get rid of asan_mac.h, which contents have been moved to sanitizer_mac.h
...
llvm-svn: 200757
2014-02-04 11:35:59 +00:00
Alexander Potapenko
844a3cf77e
[ASan] Use replace_str=0 and replace_intrin=0 in printf-{2,4}.c to avoid triggering a buffer overflow in strlen and memcpy.
...
This change fixes printf-2.c and printf-4.c under OSX.
llvm-svn: 200756
2014-02-04 11:32:05 +00:00
Alexander Potapenko
40fcff653c
[ASan] Fix printf-5.c on OSX: fix a compiler warning, avoid intercepting memcpy (which triggers the error report before printf does).
...
llvm-svn: 200751
2014-02-04 10:36:55 +00:00
Alexander Potapenko
768e315a74
[ASan] Move GetMacosVersion() to sanitizer_common.
...
llvm-svn: 200700
2014-02-03 15:32:19 +00:00
Evgeniy Stepanov
1fc9e61356
[asan] asan_device_setup.sh: allow overriding adb path.
...
llvm-svn: 200698
2014-02-03 15:12:09 +00:00
Evgeniy Stepanov
756e1c1e4b
[asan] Reinitialize allocator quarantine on activation.
...
This is covered by AddressSanitizer.UAF_* tests in asan_test
with start_deactivated=1.
llvm-svn: 200696
2014-02-03 14:19:08 +00:00
Evgeniy Stepanov
bd2b3177da
[sanitizer] Resubmit r200683: disable -ffunction-sections.
...
llvm-svn: 200686
2014-02-03 11:16:41 +00:00
Evgeniy Stepanov
fe437f0a8f
Revert r200683.
...
-fno-function-sections is broken in Clang.
llvm-svn: 200684
2014-02-03 10:52:53 +00:00
Evgeniy Stepanov
aa0d7dee77
[sanitizer] Disable -ffunction-sections.
...
It breaks when a binary is linked with --gc-sections: parts of sanitizer
interface get thrown away and inaccessible from dlopen-ed libs.
llvm-svn: 200683
2014-02-03 10:15:08 +00:00
Alexander Potapenko
ea4a0dbb8d
[ASan] Implement __sanitizer::InstallDeadlySignalHandlers() and __asan::AsanOnSIGSEGV() on Windows.
...
llvm-svn: 200554
2014-01-31 15:11:11 +00:00
Alexander Potapenko
c6864e9039
[ASan] Add a failing test that demonstrates that ASan currently breaks dead code stripping on Linux.
...
See https://code.google.com/p/address-sanitizer/issues/detail?id=260 for more info.
llvm-svn: 200553
2014-01-31 14:58:54 +00:00
Evgeniy Stepanov
01cd8ae204
[asan] Read extra flags from a system property on activation on Android.
...
llvm-svn: 200550
2014-01-31 14:36:55 +00:00
Alexander Potapenko
789e3e1b7c
[ASan] Move the SIGSEGV/SIGBUS handling to sanitizer_common
...
This change is a part of refactoring intended to have common signal handling behavior in all tools.
This particular CL moves InstallSignalHandlers() into sanitizer_common (making it InstallDeadlySignalHandlers()), but doesn't enable default signal handlers for any tool other than ASan.
llvm-svn: 200542
2014-01-31 13:10:07 +00:00
Alexey Samsonov
fd99206ee4
[ASan] Run LSan for ASan unit tests only on 64-bit Linux
...
llvm-svn: 200537
2014-01-31 11:44:32 +00:00
Timur Iskhodzhanov
00aa75b774
Move /FS to SANITIZER_COMMON_CFLAGS
...
llvm-svn: 200485
2014-01-30 19:48:13 +00:00
Timur Iskhodzhanov
a1f31460d8
Add an /FS flag to the ASan RTL CMake to make it buildable with VS2013
...
llvm-svn: 200474
2014-01-30 18:08:41 +00:00
Evgeniy Stepanov
3f6af151df
[sanitizer] Fix typo that breaks shmctl() interceptor.
...
https://code.google.com/p/address-sanitizer/issues/detail?id=259
llvm-svn: 200468
2014-01-30 14:31:26 +00:00
Kostya Serebryany
b22298af9a
[asan] re-enable __tls_get_addr interceptor with a proper fix (use __attribute__((tls_model(initial-exec))))
...
llvm-svn: 200463
2014-01-30 09:25:48 +00:00
Kostya Serebryany
409d26ac5e
[asan] disable __tls_get_addr interceptor while I am investigating why it causes trouble; few more debugging
...
llvm-svn: 200462
2014-01-30 09:00:42 +00:00
Kostya Serebryany
336d97146a
[asan] increase the buffer size for printing asan legend, add a test for legend
...
llvm-svn: 200387
2014-01-29 11:12:09 +00:00
Kostya Serebryany
71788fac2a
[asan] experimental intercetor for __tls_get_addr. So far it does nothing interesting, actual usage will come later. See https://groups.google.com/forum/#!topic/address-sanitizer/BfwYD8HMxTM for background
...
llvm-svn: 200384
2014-01-29 09:29:16 +00:00
Evgeniy Stepanov
422944fdbd
[asan] Fix asan_device_setup.sh failure on userdebug Android.
...
llvm-svn: 200382
2014-01-29 09:16:48 +00:00
Alexander Potapenko
b0930f5c04
[ASan] Reinstate ASAN_LOW_MEMORY, which has nothing to do with signal handling and thus should not be moved to common.
...
llvm-svn: 200319
2014-01-28 14:17:16 +00:00
Alexander Potapenko
77f5c20a5b
[ASan] Fix compilation.
...
llvm-svn: 200312
2014-01-28 12:23:14 +00:00
Alexander Potapenko
d8d490ed50
[ASan] Move the sigaltstack() bits to sanitizer_common.
...
This change is a part of refactoring intended to have common signal handling behavior in all tools.
Note that this particular change doesn't enable use_sigaltstack support in every tool.
llvm-svn: 200310
2014-01-28 11:12:29 +00:00
Alexander Potapenko
cf4bef3161
[ASan] Move the signal handling-related flags to sanitizer_common.
...
This change is a part of refactoring intended to have common signal handling behavior in all tools.
llvm-svn: 200295
2014-01-28 09:28:57 +00:00
Evgeniy Stepanov
aecead9d4f
[asan] Android setup: do "adb root" before "adb remount".
...
llvm-svn: 200199
2014-01-27 08:20:28 +00:00
Evgeniy Stepanov
9504304f2d
[asan] Add an ASan-on-Android installation script.
...
llvm-svn: 200009
2014-01-24 15:24:24 +00:00
Alexey Samsonov
1d028b8a9f
[Sanitizer] Fix false positive in snprintf interceptor - take the number of actually written symbols from real snprintf call.
...
llvm-svn: 199899
2014-01-23 15:09:38 +00:00
Evgeniy Stepanov
20513c0937
[asan] More buffering in report printing.
...
llvm-svn: 199888
2014-01-23 11:51:03 +00:00
Evgeniy Stepanov
350fe4b1af
[asan] Android logging.
...
This change duplicates all ASan output to system log on Android.
llvm-svn: 199887
2014-01-23 11:34:41 +00:00
Evgeniy Stepanov
631bd92292
[asan] Print shadow memory and legend as a single printf call.
...
llvm-svn: 199878
2014-01-23 10:52:33 +00:00
Evgeniy Stepanov
4819d28e53
[asan] clang-format part of asan_report.cc
...
llvm-svn: 199877
2014-01-23 10:49:47 +00:00
Evgeniy Stepanov
1a9f5720d8
[asan] Enable replacement new/delete on Android.
...
New/delete implementations in system libraries almost always are built without
frame pointers. As we switched to frame pointer based unwinder on ARM, they no
longer work for us, resulting in broken allocation/deallocation stacks.
Note that this does not work with statically linked
libstdc++/libc++/libstlport.
llvm-svn: 199872
2014-01-23 08:14:20 +00:00
Dmitry Vyukov
db1ad12ae2
asan: fix atomic operations on ARM
...
implement correct atomic load/store for ARM
add test for atomic load/store
http://llvm-reviews.chandlerc.com/D2582
llvm-svn: 199802
2014-01-22 14:13:37 +00:00
Alexey Samsonov
00cd273c46
Sanitize printf functions.
...
Intercept and sanitize arguments passed to printf functions in ASan and TSan
(don't do this in MSan for now). The checks are controlled by runtime flag
(off by default for now).
Patch http://llvm-reviews.chandlerc.com/D2480 by Yuri Gribov!
llvm-svn: 199729
2014-01-21 11:58:33 +00:00
Kostya Serebryany
9fcb4c4a6e
[asan] one more test for https://code.google.com/p/address-sanitizer/issues/detail?id=258
...
llvm-svn: 199723
2014-01-21 10:57:07 +00:00
Kostya Serebryany
4871067a55
[asan] relax the checks inside __sanitizer_annotate_contiguous_container: they are too optimistic due to https://code.google.com/p/address-sanitizer/issues/detail?id=258 .
...
llvm-svn: 199715
2014-01-21 09:53:49 +00:00
Kostya Serebryany
123994c4a6
[asan] use correct type when computing shadow address in allocator (caused SEGV when asan run-time is built with gcc 4.8.2 on 32-bit arch)
...
llvm-svn: 199544
2014-01-18 09:38:31 +00:00
Evgeniy Stepanov
877bb8ba59
[asan] Fix a build warning on windows.
...
llvm-svn: 199390
2014-01-16 14:21:17 +00:00
Evgeniy Stepanov
364bfdf4c9
[asan] Fix a bunch of style issues.
...
llvm-svn: 199380
2014-01-16 13:17:13 +00:00
Evgeniy Stepanov
fe906a1df6
[asan] Restore lost -pie in Android tests.
...
llvm-svn: 199379
2014-01-16 13:11:37 +00:00
Evgeniy Stepanov
c61623b170
[asan] Implement delayed activation of AddressSanitizer
...
This change adds ASAN_OPTIONS=start_deactivated=1 flag. When present, ASan will
start in "deactivated" mode, with no heap poisoning, no quarantine, no stack
trace gathering, and minimal redzones. All this features come back when
__asan_init is called for the constructor of an instrumented library.
The primary use case for this feature is Android. Code itself is not
Android-specific, and this patch includes a Linux test for it.
llvm-svn: 199377
2014-01-16 12:31:50 +00:00
Evgeniy Stepanov
780d85a8ef
[asan] Remove leftover use of -fsanitize-address-zero-base-shadow.
...
llvm-svn: 199373
2014-01-16 11:42:40 +00:00
Evgeniy Stepanov
e259b658e4
[asan] Nuke ASAN_FLEXIBLE_MAPPING_AND_OFFSET.
...
llvm-svn: 199370
2014-01-16 10:16:19 +00:00
Kostya Serebryany
2b76278d38
[lsan] handle 'new T[0]' where T is a type with DTOR; fixes https://code.google.com/p/address-sanitizer/issues/detail?id=257
...
llvm-svn: 198932
2014-01-10 10:48:01 +00:00
Evgeniy Stepanov
219719a2da
[asan] Implement max_redzone runtime flag.
...
llvm-svn: 198873
2014-01-09 14:41:03 +00:00
Alexander Potapenko
c87794d055
[ASan] Delete asan_intercepted_functions.h, move the code into asan_interceptors.h
...
Fixes https://code.google.com/p/address-sanitizer/issues/detail?id=188 .
llvm-svn: 198048
2013-12-26 15:34:31 +00:00
Kostya Serebryany
2b5fddbc75
[asan] allow asan to use SizeClassAllocator32 on a 64-bit platform (if SANITIZER_CAN_USE_ALLOCATOR64=0). No functionality change by default is intended
...
llvm-svn: 198044
2013-12-26 13:52:38 +00:00
Alexander Potapenko
9d989d6b05
[ASan] Add a test for __asan_gen_ globals labels on Darwin.
...
Per Nick Kledzik (http://llvm.org/bugs/show_bug.cgi?id=17976 ):
"""
For MacOSX, the labels in __cstring section should be 'L' labels, and the labels
in the __const section should be non-L or 'l' labels. The later ('l') will cause
the linker to remove the label in the final executable.
"""
, so we need to ensure that the globals emitted by ASan have appropriate labels.
llvm-svn: 198022
2013-12-25 17:20:22 +00:00
Alexander Potapenko
4f0335f863
[ASan] Fix the test for __asan_gen_ globals and actually fix http://llvm.org/bugs/show_bug.cgi?id=17976
...
by setting the correct linkage (as stated in the bug).
llvm-svn: 198018
2013-12-25 16:46:27 +00:00
Alexander Potapenko
daf96ae81b
[ASan] Make sure none of the __asan_gen_ global strings end up in the symbol table, add a test.
...
This should fix http://llvm.org/bugs/show_bug.cgi?id=17976
Another test checking for the global variables' locations and prefixes on Darwin will be committed separately.
llvm-svn: 198017
2013-12-25 14:22:15 +00:00
Kostya Serebryany
6f69c73db1
[asan] clean up at the end of the shmget/shmctl test
...
llvm-svn: 197901
2013-12-23 07:32:23 +00:00
Kostya Serebryany
a650116adb
[asan] convert a CHECK failure in __sanitizer_annotate_contiguous_container into a proper warning message
...
llvm-svn: 197899
2013-12-23 07:01:43 +00:00
Evgeniy Stepanov
42cebb00da
[sanitizer] Use the new sanitizer_interception.h header in all interceptors.
...
llvm-svn: 197808
2013-12-20 13:17:31 +00:00
Alexey Samsonov
f2c7659cf8
[ASan] Get rid of ASan-specific functions for printing stack traces
...
llvm-svn: 197672
2013-12-19 11:25:05 +00:00
Alexey Samsonov
cef2e14382
[ASan] Get rid of __asan_symbolize function
...
llvm-svn: 197670
2013-12-19 11:08:47 +00:00
Timur Iskhodzhanov
1c84bd64db
[Sanitizer] Implement Symbolizer class on Windows
...
llvm-svn: 197571
2013-12-18 14:29:16 +00:00
Alexey Samsonov
25d010a98d
[Sanitizer] Always initialize a Symbolizer (even if 'symbolize' is false).
...
If 'symbolize' flag is not set, we still want to transform virtual address
to module+offset pair in the call to Symbolizer::SymbolizeCode().
See https://code.google.com/p/address-sanitizer/issues/detail?id=251 for
more details.
llvm-svn: 197491
2013-12-17 11:15:39 +00:00
Kostya Serebryany
4eaa0492ca
[asan] fix the test so that it works even if stack size is unlimited by default
...
llvm-svn: 197372
2013-12-16 09:09:31 +00:00
Kostya Serebryany
1aedf6c9e6
[asan] replace the flag uar_stack_size_log with two flags min_uar_stack_size_log/max_uar_stack_size_log
...
llvm-svn: 197370
2013-12-16 08:42:08 +00:00
Kostya Serebryany
57bfdb080b
[asan] add flag uar_noreserve to use noreserve mmap for fake stack. uar_noreserve=1 will save some memory but also negatively affect performance
...
llvm-svn: 197233
2013-12-13 15:03:49 +00:00
Kostya Serebryany
e55d388e71
[asan] when a fake stack is being unmapped also flush the corresponding shadow
...
llvm-svn: 197040
2013-12-11 14:26:41 +00:00
Kostya Serebryany
7a3a93f112
[asan] if verbosity>=2, print the fake stack usage stats at thread exit; No functionality change in non-verboze mode
...
llvm-svn: 197037
2013-12-11 13:54:01 +00:00
Kostya Serebryany
b00a0e2971
[asan] relax HugeMallocTest so that it does not fail on small-RAM machines
...
llvm-svn: 196904
2013-12-10 10:34:55 +00:00
Kostya Serebryany
b2eb3d3177
[asan] remove one test from SizedStackTest which relied on a now-wrong assumption that the left stack redzone is >= 32 bytes (PR18195)
...
llvm-svn: 196900
2013-12-10 09:49:31 +00:00
Chandler Carruth
736f9fd229
Revert three patches which were committed without explicit contribution
...
by their authors.
This may break builds where others added code relying on these patches,
but please *do not* revert this commit. Instead, we will prepare patches
which fix the failures.
Reverts the following commits:
r168306: "[asan] support x32 mode in the fast stack unwinder. Patch by H.J. Lu"
r168356: "[asan] more support for powerpc, patch by Peter Bergner"
r196489: "[sanitizer] fix the ppc32 build (patch by Jakub Jelinek)"
llvm-svn: 196802
2013-12-09 19:25:51 +00:00
Sergey Matveev
47b02994f1
Fix Windows build.
...
llvm-svn: 196780
2013-12-09 13:24:44 +00:00
Sergey Matveev
b1b8d1aa47
[lsan] Make LSan ignore memory poisoned by ASan.
...
Summary:
No more (potenital) false negatives due to red zones or fake stack
frames.
Reviewers: kcc, samsonov
Reviewed By: samsonov
CC: llvm-commits, samsonov
Differential Revision: http://llvm-reviews.chandlerc.com/D2359
llvm-svn: 196778
2013-12-09 13:12:10 +00:00
Kostya Serebryany
3429f78289
[asan] in SizedStackTest check the death string, also restrict one of the checks to 64-bit
...
llvm-svn: 196576
2013-12-06 09:33:36 +00:00
Kostya Serebryany
cab32309f8
[asan] rewrite asan's stack frame layout, compiler-rt part
...
llvm-svn: 196569
2013-12-06 09:00:25 +00:00
Sergey Matveev
9be70fbda9
[sanitizer] Introduce VReport and VPrintf macros and use them in sanitizer code.
...
Instead of "if (common_flags()->verbosity) Report(...)" we now have macros.
llvm-svn: 196497
2013-12-05 12:04:51 +00:00
Kostya Serebryany
d4af5c241d
[asan] revert files which I accidentally commited in r196490
...
llvm-svn: 196491
2013-12-05 09:47:21 +00:00
Kostya Serebryany
9ffa232f06
[tsan] fix the include path that is broken in configure/make build but works in cmake build (PR18144). This is a quick fix. Will need to fix the configure/make build properly
...
llvm-svn: 196490
2013-12-05 09:42:59 +00:00
Timur Iskhodzhanov
b8c367b49d
[ASan] Use 'extern "C"' rather than 'extern' for global variables exposed in the interface
...
llvm-svn: 196379
2013-12-04 12:51:42 +00:00
Kostya Serebryany
5b66bad259
[asan] require __i686__ for the SSE test; also make weaker claims about stack buffer overflows in another test
...
llvm-svn: 196375
2013-12-04 10:48:16 +00:00
Kostya Serebryany
32b0b21790
[asan] revert 196373: committed to many files by mistake
...
llvm-svn: 196374
2013-12-04 10:47:14 +00:00
Kostya Serebryany
0060391a63
[asan] require __i686__ for the SSE test; also make weaker claims about stack buffer overflows in another test
...
llvm-svn: 196373
2013-12-04 10:44:13 +00:00
Alexey Samsonov
e958f9e480
[ASan] Return interface attribute to __sanitizer_print_stack_trace
...
llvm-svn: 196364
2013-12-04 08:17:45 +00:00
Sergey Matveev
12d2143dbc
[asan] Fix build error.
...
llvm-svn: 196303
2013-12-03 18:44:50 +00:00
Sergey Matveev
d8fb4d8f91
[sanitizer] Expose __sanitizer_print_stack_trace().
...
Expose a new interface function for debugging code built with sanitizer tools.
Add an ASan implementation.
llvm-svn: 196302
2013-12-03 18:24:28 +00:00
Kostya Serebryany
5236c79932
[asan] disable AddressSanitizer.HugeMallocTest if ASAN_AVOID_EXPENSIVE_TESTS is set
...
llvm-svn: 196097
2013-12-02 13:22:27 +00:00
Kostya Serebryany
dc58090213
[asan] dump coverage even if asan has reported an error
...
llvm-svn: 195959
2013-11-29 14:49:32 +00:00
Kostya Serebryany
5774faf5b0
[sanitizer] disable shmctl intercetor in 32-bit -- it is rotten (bug filed)
...
llvm-svn: 195958
2013-11-29 14:09:13 +00:00
Timur Iskhodzhanov
a10c46f2ae
Fix current stack unwinding when using DRASan
...
llvm-svn: 195956
2013-11-29 12:53:30 +00:00
Timur Iskhodzhanov
c085e99385
Add a DLL thunk for __asan_handle_no_return
...
llvm-svn: 195845
2013-11-27 14:36:44 +00:00
Alexey Samsonov
e0e31c4a30
[ASan] Clarify that AsanThread objects are allocated only via mmap(). No functionality change.
...
llvm-svn: 195840
2013-11-27 13:22:21 +00:00
Dmitry Vyukov
7bd319cc08
tsan: fix flags parsing
...
- running_on_valgrind was not parsed in some contexts
- refactor code a bit
- add comprehensive tests for flags parsing
llvm-svn: 195831
2013-11-27 09:54:10 +00:00
Alexander Potapenko
32474d6226
[ASan] Fix large_allocator_unpoisons_on_free.cc to pass correct parameters to mmap() on OSX.
...
llvm-svn: 195443
2013-11-22 11:19:28 +00:00
Kostya Serebryany
67968632ba
[asan] rename contiguous-container-buffer-overflow (too long) to container-overflow
...
llvm-svn: 195352
2013-11-21 12:23:52 +00:00
Evgeniy Stepanov
3e29c6bf22
[asan] Fix OSX tests.
...
llvm-svn: 195250
2013-11-20 14:21:56 +00:00