Commit Graph

1087 Commits

Author SHA1 Message Date
Alexander Potapenko
81a1ec8ea6 Do not attempt to intercept mlock and friends on Windows.
llvm-svn: 161939
2012-08-15 09:46:45 +00:00
Alexander Potapenko
785f8bc4ec Use the common interception machinery for mlock/munlock/mlockall/munlockall.
llvm-svn: 161938
2012-08-15 09:22:57 +00:00
Alexey Samsonov
0e056762ef [ASan] use clangxx_asan instead of clang_asan for C++ lit tests
llvm-svn: 161936
2012-08-15 08:54:14 +00:00
Alexey Samsonov
6016486a16 [ASan] port remaining output and feature tests to lit. TODO: we should in fact run most of the tests for 32/64 bits and for all optimization levels
llvm-svn: 161935
2012-08-15 08:29:17 +00:00
Alexey Samsonov
5717f4c1eb [ASan] port interception and shared library tests to lit
llvm-svn: 161933
2012-08-15 07:13:51 +00:00
Alexey Samsonov
682a07cbe1 [ASan] move declaration of __asan_default_options to interface header
llvm-svn: 161932
2012-08-15 07:11:14 +00:00
Kostya Serebryany
ad855e9438 [asan] better diagnostics for mmap failure
llvm-svn: 161874
2012-08-14 15:18:40 +00:00
Alexey Samsonov
517842b2fc [ASan] make sure __asan_default_options symbol is exported
llvm-svn: 161873
2012-08-14 15:03:24 +00:00
Alexey Samsonov
eb39adc9fa [ASan] make sure __asan_default_options gets default visibility, port corresponding test to lit
llvm-svn: 161869
2012-08-14 13:54:28 +00:00
Alexey Samsonov
bf2bfa5aa4 [ASan] support for running OS-specific tests using lit, port clone_test as an example
llvm-svn: 161864
2012-08-14 13:22:58 +00:00
Alexey Samsonov
ef7758f561 [Sanitizer] move OS-dependent pieces of symbolizer to separate source files
llvm-svn: 161862
2012-08-14 13:00:32 +00:00
Dmitry Vyukov
81a78ad59c tsan: handle larger number of goroutines + fix a memory leak of goroutine descriptors
llvm-svn: 161770
2012-08-13 18:44:44 +00:00
Alexey Samsonov
b39b0fa9a0 [ASan] add __asan_set_on_error_callback into force_interface_symbols (thanks to cool test by glider@)
llvm-svn: 161756
2012-08-13 14:05:00 +00:00
Alexey Samsonov
f87ff74075 [ASan] Add __asan_set_on_error_callback() interface function that allows user to set a callback to be called right when ASan detects an error
llvm-svn: 161754
2012-08-13 11:23:40 +00:00
Alexey Samsonov
a72c7cf227 [ASan] If ASan finds second error report, wait for some time and die (instead of running in a busy loop) to make sure ASan won't hang if it finds error while reporting an error in the same thread
llvm-svn: 161749
2012-08-13 09:57:19 +00:00
Alexey Samsonov
d33973edb4 [Sanitizer] Return cmake support for setting compile definitions for sanitizer_common library
llvm-svn: 161747
2012-08-13 07:41:43 +00:00
Dmitry Vyukov
2bee426ed6 tsan: fix parameter type for pwrite64() interceptor
llvm-svn: 161741
2012-08-12 11:08:30 +00:00
Alexey Samsonov
b93df94238 [ASan] share code executed at the beginning/end of printing error reports
llvm-svn: 161666
2012-08-10 15:13:05 +00:00
Alexey Samsonov
fb844c7eff [ASan] CMake support for building ASan runtime as a universal binary on Mac
llvm-svn: 161665
2012-08-10 14:45:52 +00:00
Alexander Potapenko
33c028fa05 Remove the setjmp.h dependency, fix the comment.
llvm-svn: 161662
2012-08-10 12:46:39 +00:00
Alexander Potapenko
2cdd4f165e Temporary fix for http://code.google.com/p/address-sanitizer/issues/detail?id=99:
when trying to free memory that actually belongs to the system purgeable zone, use malloc_zone_free(malloc_default_purgeable_zone(), ptr) instead of asan_free().

llvm-svn: 161661
2012-08-10 11:33:01 +00:00
Alexander Potapenko
8aba007fe1 Add a test checking that all the "__asan_" interface functions are present in a binary built with -dead_strip.
Fix force_interface_symbols() so that none of the interface symbols is stripped.

llvm-svn: 161582
2012-08-09 16:05:17 +00:00
Alexander Potapenko
03ee064845 Make the non-interface mach_override functions static to avoid name clashes with user code that may contain its own mach_override.
llvm-svn: 161577
2012-08-09 13:33:02 +00:00
Alexey Samsonov
f343eb7df4 [ASan] Move mac-specific error reports to asan_report.cc as well
llvm-svn: 161576
2012-08-09 12:15:40 +00:00
Alexey Samsonov
b53a670817 [ASan] Small fix to please tests on Windows, where stack unwinding using provided pc/bp works too bad
llvm-svn: 161575
2012-08-09 11:29:13 +00:00
Alexey Samsonov
f688412b8c [ASan] Move __asan_report_error implementation to asan_report.cc
llvm-svn: 161574
2012-08-09 10:56:57 +00:00
Alexander Potapenko
ba6174889c Use a switch instead of a simple condition in force_interface_symbols().
Otherwise Clang eliminates everything after the first interface symbol that is marked noreturn.

llvm-svn: 161573
2012-08-09 09:46:12 +00:00
Alexey Samsonov
65b9acf0af [ASan] move code that describes globals to asan_report.cc
llvm-svn: 161572
2012-08-09 09:27:24 +00:00
Alexey Samsonov
4ce12349d6 [ASan] move some functions that describe addresses to asan_report.cc
llvm-svn: 161571
2012-08-09 09:06:52 +00:00
Alexey Samsonov
c0ff933d8b [ASan] Move error reporting code away from file with interceptors
llvm-svn: 161570
2012-08-09 08:32:33 +00:00
Alexey Samsonov
b4b316fc5b [ASan] Move error reports away from ASan allocator. Add new source file to CMakeLists as well
llvm-svn: 161569
2012-08-09 08:15:46 +00:00
Alexey Samsonov
aa05110a17 [ASan] Create new files asan_report.{h,cc} as a preparation for refactoring of ASan error reporting code.
Currently ASan reports many kinds of errors, and the code that actually prints error messages can
be found inside allocator, OS-specific files, interceptors code etc.

An example of maintenance troubles this situation causes:
There is currently an ASan interface function that registers
callback which should take the char buffer with error report printed by ASan.
This function is now broken, as one has to insert callback calls to all the places in
ASan code where the error reports are printed, surprisingly it is not only
"__asan_report_error" function...

llvm-svn: 161568
2012-08-09 07:40:58 +00:00
Alexey Samsonov
4750230ac6 [Sanitizer] cleanup CMake files for interception and sanitizer_common helper libraries
llvm-svn: 161485
2012-08-08 09:46:51 +00:00
Alexey Samsonov
36796b4899 [compiler-rt] CMake build: if LLVM_BUILD_32_BITS is on, then -m32 is added to llvm definitions. Let us override this by explicitly adding -m64 compiler flag when building compiler-rt libraries for x86_64 target
llvm-svn: 161415
2012-08-07 12:14:29 +00:00
Alexey Samsonov
0317b8bbc0 [ASan] simplify cmake rules for adding lit testsuites
llvm-svn: 161412
2012-08-07 11:09:41 +00:00
Alexey Samsonov
1e6c947a4c [ASan] add llvm_tools_dir to lit.site.cfg for ASan and add it to PATH
llvm-svn: 161411
2012-08-07 11:00:19 +00:00
Alexey Samsonov
59c33c0c9a [ASan] Add support for running unit tests by lit (as a part of 'make check-asan' command)
llvm-svn: 161406
2012-08-07 08:59:15 +00:00
Alexey Samsonov
941a6ec9bb [ASan] fix names of malloc/free replacements on Android
llvm-svn: 161322
2012-08-06 15:13:22 +00:00
Alexey Samsonov
0295edbfd5 [ASan] add new ASan option 'strip_path_prefix' to remove useless prefices from filenames in stack traces
llvm-svn: 161321
2012-08-06 13:00:21 +00:00
Alexander Potapenko
8f6dd3537c AllocationSize(ptr) should check that |ptr| actually points to the beginning of the chunk it belongs to.
Fixes http://code.google.com/p/address-sanitizer/issues/detail?id=86

llvm-svn: 161320
2012-08-06 12:24:39 +00:00
Alexander Potapenko
879b1ffca7 Implement LinuxSymbolizer instead of symbolize_addr2line.
llvm-svn: 161181
2012-08-02 14:58:04 +00:00
Alexander Potapenko
be84ac8ff3 Some refactoring for asan_symbolize.py: introduced the Symbolizer class and implemented DarwinSymbolizer for atos-based symbolization, BreakpadSymbolizer for breakpad-based symbolization (files produced by the dump_syms tool, http://code.google.com/p/google-breakpad/source/browse/#svn%2Ftrunk%2Fsrc%2Ftools%2Fmac%2Fdump_syms) and ChainSymbolizer to allow falling back if a symbolizer hadn't succeeded.
Fixed pylint warnings.

llvm-svn: 161176
2012-08-02 13:59:23 +00:00
Alexey Samsonov
2e62a9a765 [Sanitizer] fix windows build
llvm-svn: 161170
2012-08-02 11:38:58 +00:00
Alexey Samsonov
9d74295078 Follow-up for r161168 for Windows
llvm-svn: 161169
2012-08-02 11:29:14 +00:00
Alexey Samsonov
0f840bd240 [Sanitizer] Workaround for a compiler warning - ISO C++ forbids casting pointer-to-function to pointer-to-object, so we use cast via integral type
llvm-svn: 161168
2012-08-02 11:19:13 +00:00
Alexander Potapenko
33824c54f6 Make strcat() and strncat() more standard-compliant (check for invalid parameters even if zero bytes is copied, more accurate overlap check)
Fix the tests that were relying on the incorrect behavior.

llvm-svn: 161167
2012-08-02 10:25:46 +00:00
Alexey Samsonov
ce8d497aaf [Sanitizer] Fix warnings to please cmake build
llvm-svn: 161166
2012-08-02 10:09:31 +00:00
Alexander Potapenko
40b48ccae2 Add support for "movsbl %sil,%ecx" (x86_64) and "movsbl $imm(%ebp), %edx" (i386) to our fork of mach_override.
This is an extended version of a patch by Rafael Avila de Espindola (rafael.espindola@gmail.com)

llvm-svn: 161116
2012-08-01 16:35:48 +00:00
Alexey Samsonov
139a7c0575 [Sanitizer] Make ASan/TSan sources depend on headers from interception library
llvm-svn: 161113
2012-08-01 14:55:49 +00:00
Alexey Samsonov
cc7ea4269a [ASan] cleanup interceptors code - prefer ASAN_INTERCEPT_FUNCTION_NAME macro to _WIN32, __APPLE__ etc.
llvm-svn: 161109
2012-08-01 11:17:00 +00:00