Commit Graph

1377 Commits

Author SHA1 Message Date
Alexey Samsonov fead612a02 [ASan] Disable back init-order checker. Make strict_init_order imply check_initialization_order
llvm-svn: 194125
2013-11-06 04:27:09 +00:00
Alexey Samsonov b0bad7b3b8 [ASan] Make sure slow stack unwinder doesn't return empty stacks.
llvm-svn: 194107
2013-11-05 23:29:12 +00:00
Alexey Samsonov c5e1b16d0c [ASan] Kill use_stack_depot runtime flag and stack trace compression routines.
llvm-svn: 193868
2013-11-01 17:23:22 +00:00
Alexey Samsonov 5dc6cff06a [Sanitizer] Unify summary reporting across all sanitizers.
This change unifies the summary printing across sanitizers:
now each tool uses specific version of ReportErrorSummary() method,
which deals with symbolization of the top frame and formatting a
summary message. This change modifies the summary line for ASan+LSan mode:
now the summary mentions "AddressSanitizer" instead of "LeakSanitizer".

llvm-svn: 193864
2013-11-01 17:02:14 +00:00
Alexey Samsonov 4708c5912b Consistently use StackTrace::PrintStack in ASan, LSan and MSan
llvm-svn: 193834
2013-11-01 00:19:46 +00:00
Alexander Potapenko d29853564d [ASan] Make asan_symbolize.py fall back to ASAN_SYMBOLIZER_PATH (which is used when ASAN_OPTIONS=symbolize=1) if LLVM_SYMBOLIZER_PATH is empty.
llvm-svn: 193758
2013-10-31 16:08:09 +00:00
Alexey Samsonov 85cee41633 [ASan] Turn on (non-strict) initialization order checker by default for all ASan users
llvm-svn: 193729
2013-10-31 00:40:15 +00:00
Evgeniy Stepanov e8cd2fad0e [asan] Maybe fix test failures on lld bots.
llvm-svn: 193647
2013-10-29 20:06:12 +00:00
Evgeniy Stepanov 7d24620b6d [asan] Fix build.
llvm-svn: 193635
2013-10-29 18:29:39 +00:00
Evgeniy Stepanov 02839ced75 [sanitizer] Fix build warnings.
llvm-svn: 193634
2013-10-29 18:24:06 +00:00
Kostya Serebryany 2a9b70cb4c [asan] increase the max malloc size from 8Gb to 64Gb
llvm-svn: 193615
2013-10-29 15:16:54 +00:00
Dmitry Vyukov 3e8432ee6c tsan/asan: support pthread_setname_np to set thread names
llvm-svn: 193602
2013-10-29 10:30:39 +00:00
Alexey Samsonov a687d2593f [Sanitizer] Simplify StackTrace::PrintStack interface: prefer common flags to turn on/off the symbolization
llvm-svn: 193587
2013-10-29 05:31:25 +00:00
Alexey Samsonov 590fe110f9 [Sanitizer] Revert r193501 and properly fix r193448
llvm-svn: 193522
2013-10-28 16:31:39 +00:00
Dmitry Vyukov cf7259c094 asan/msan: separate different report blocks with new lines
this makes the reports consistent with tsan, and much more readable.

llvm-svn: 193520
2013-10-28 13:05:32 +00:00
Timur Iskhodzhanov a1d048acb7 Work around ASan/Win breakage by r193448
llvm-svn: 193501
2013-10-27 13:37:23 +00:00
Peter Collingbourne cbdea323ac Add a CMake option COMPILER_RT_DEBUG for building runtimes with full debug info.
Differential Revision: http://llvm-reviews.chandlerc.com/D1984

llvm-svn: 193449
2013-10-25 23:03:34 +00:00
Peter Collingbourne 791e65dcfb Overhaul the symbolizer interface.
This moves away from creating the symbolizer object and initializing the
external symbolizer as separate steps.  Those steps now always take place
together.

Sanitizers with a legacy requirement to specify their own symbolizer path
should use InitSymbolizer to initialize the symbolizer with the desired
path, and GetSymbolizer to access the symbolizer.  Sanitizers with no
such requirement (e.g. UBSan) can use GetOrInitSymbolizer with no need for
initialization.

The symbolizer interface has been made thread-safe (as far as I can
tell) by protecting its member functions with mutexes.

Finally, the symbolizer interface no longer relies on weak externals, the
introduction of which was probably a mistake on my part.

Differential Revision: http://llvm-reviews.chandlerc.com/D1985

llvm-svn: 193448
2013-10-25 23:03:29 +00:00
Evgeniy Stepanov c2b6cb0747 [sanitizer] Intercept pthread_attr_get*.
llvm-svn: 193405
2013-10-25 13:01:31 +00:00
Peter Collingbourne 50cb32e614 Introduce an operator new for LowLevelAllocator, and convert most users to it.
llvm-svn: 193308
2013-10-24 06:23:39 +00:00
Alexey Samsonov 857e3ece9b [ASan] ASan can be combined with LSan and UBSan, so export symbol from them as well.
llvm-svn: 193245
2013-10-23 15:36:22 +00:00
Nick Lewycky d27d668342 Make sure ASan always emits an error summary if it reports an error.
llvm-svn: 193229
2013-10-23 06:19:04 +00:00
Peter Collingbourne 90a0876ae7 Runtime support for the indirect function call checker.
Differential Revision: http://llvm-reviews.chandlerc.com/D1339

llvm-svn: 193060
2013-10-20 21:29:46 +00:00
Kostya Serebryany 8bb5d60235 [asan] fix stack trace printing on Mac
llvm-svn: 192990
2013-10-18 17:46:43 +00:00
Kostya Serebryany f11e485d60 [asan] allocate AsanThreadContext using LowLevelAllocator instead of mmap to save space
llvm-svn: 192980
2013-10-18 15:07:07 +00:00
Kostya Serebryany 9628839869 [asan] reduce the size of AsanThreadContext by storing the stack trace in the stack depot
llvm-svn: 192979
2013-10-18 14:50:44 +00:00
Alexander Potapenko 2fe16d720c [ASan] fix compilation of atexit_stats.cc on OSX
llvm-svn: 192973
2013-10-18 14:12:15 +00:00
Kostya Serebryany e2007b706e [asan] fix a test on Mac
llvm-svn: 192960
2013-10-18 09:42:24 +00:00
Kostya Serebryany 4bf67d99f4 [asan] fix atexit stats
llvm-svn: 192956
2013-10-18 07:57:59 +00:00
Alexander Potapenko 1f5573cca2 [ASan] fix assign_large_valloc_to_global.cc to use the correct header for valloc() on OSX.
llvm-svn: 192901
2013-10-17 15:48:24 +00:00
Kostya Serebryany 8e2881d0c2 [asan] fix a failure with ASAN_OPTIONS=verbosity=1:use_sigaltstack=1
llvm-svn: 192892
2013-10-17 13:18:21 +00:00
Kostya Serebryany f04ae33106 [asan] Fix a deadlock between asan's allocator and lsan
Summary:
This fixes a deadlock which happens in lsan
on a large memalign-allocated chunk that resides in lsan's root set.

Reviewers: samsonov, earthdok

Reviewed By: earthdok

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1957

llvm-svn: 192885
2013-10-17 11:18:11 +00:00
Will Dietz ece9ede240 Use configured PYTHON in asan lit tests.
llvm-svn: 192870
2013-10-17 05:33:22 +00:00
Kostya Serebryany 442c4e4b1a [asan] introduce run-time flag 'poison_partial'
llvm-svn: 192793
2013-10-16 13:49:01 +00:00
Evgeniy Stepanov ec8ec333f0 [asan] Remove CallocOverflow32 test from asan_test.
The same as with MSan, this test behavior depends on ASAN_OPTIONS, and we've
got a lit_test that covers this.

llvm-svn: 192777
2013-10-16 08:34:31 +00:00
Dmitry Vyukov 52ca74ec61 tsan: move verbosity flag to CommonFlags
llvm-svn: 192701
2013-10-15 13:28:51 +00:00
Evgeniy Stepanov 3feb458a56 Fix a typo.
llvm-svn: 192685
2013-10-15 11:22:33 +00:00
Alexey Samsonov d2ddcf575d [ASan] Make test from r192581 Linux-only, as wild memory contents is less predictable on Mac
llvm-svn: 192677
2013-10-15 07:54:27 +00:00
Sergey Matveev 43d90cbd86 [lsan] Support ASan's stack-use-after-return mode in LSan.
Treat the fake stack as live memory.

llvm-svn: 192593
2013-10-14 14:04:50 +00:00
Sergey Matveev da9f5e7e7f [asan] Improve thread lifetime tracking on POSIX systems.
Call AsanThread::Destroy() from a late-running TSD destructor.
Previously we called it before any user-registered TSD destructors, which caused
false positives in LeakSanitizer.

llvm-svn: 192585
2013-10-14 12:01:05 +00:00
Alexey Samsonov df6e6569c0 [ASan] Don't die with internal ASan error on large buffer overflows
Summary:
Out-of-bound access may touch not-yet allocated or already freed
and recycled from quarantine chunks. We should treat this situation as
a "free-range memory access" and avoid printing any data about that
irrelevant chunk (which may be inconsistent).

This should fix https://code.google.com/p/address-sanitizer/issues/detail?id=183

Reviewers: kcc

Reviewed By: kcc

CC: timurrrr, llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1893

llvm-svn: 192581
2013-10-14 11:13:54 +00:00
Alexey Samsonov c129e65661 [Sanitizer] Turn GetStackTrace() into StackTrace::Unwind()
llvm-svn: 192533
2013-10-12 12:23:00 +00:00
Alexey Samsonov f2b811a618 Refactor the usage of strip_path_prefix option and make it more consistent across sanitizers
llvm-svn: 191943
2013-10-04 08:55:03 +00:00
Dmitry Vyukov 19a1302046 asan/msan: fix "unused function 'OnExit'" warning
llvm-svn: 191904
2013-10-03 15:43:59 +00:00
Dmitry Vyukov fdfb2ade8f asan/msan/tsan: move _exit interceptor to common interceptors
llvm-svn: 191903
2013-10-03 15:22:29 +00:00
Kostya Serebryany 3c42ce1516 [asan] introduce run-time flag uar_stack_size_log to control the size of FakeStack; don't crash when the fake stack is exhausted, move some code to .cc file
llvm-svn: 191510
2013-09-27 11:37:23 +00:00
Alexander Potapenko ae49e8c34a [ASan] Fix GCD tests by spinning forever in the main thread.
Since the error is always reported by one of the GCD workers, this will help avoid premature program termination with exit code 0.

llvm-svn: 191294
2013-09-24 12:42:25 +00:00
Kostya Serebryany 01ff028814 [asan] remove -fsanitize=use-after-return from the tests (this flag now comes with asan by default)
llvm-svn: 191204
2013-09-23 14:34:06 +00:00
Timur Iskhodzhanov 7f92aa687a [ASan/Win] Slightly optimize the DLL thunk
llvm-svn: 191190
2013-09-23 11:40:58 +00:00
Timur Iskhodzhanov e2b207cfd2 [ASan] Fix a compile-time warning
llvm-svn: 191189
2013-09-23 11:19:43 +00:00
Timur Iskhodzhanov d6c93c7b4d [ASan] Add DLL thunks for the new stack UAR interface
llvm-svn: 191188
2013-09-23 11:05:41 +00:00
Alexander Potapenko 92b566b0e4 [ASan] Fix the interface test on Darwin.
llvm-svn: 191187
2013-09-23 10:38:23 +00:00
Kostya Serebryany b997c543fc [asan] disable the detect_stack_use_after_return run-time flag by default and enable it explicitly in tests. This is done in preparation to enabling the -fsanitize=use-after-return compile-time flag by default when -fsanitize=address is present.
llvm-svn: 191184
2013-09-23 08:58:14 +00:00
Alexander Potapenko 6c49695e7a [ASan] Remove a complex multiline comment that baffles lint.
That comment is repeated in another function below.

llvm-svn: 191085
2013-09-20 11:33:14 +00:00
Alexander Potapenko bff7e64a3f [ASan] Fix compilation of asan_str_test.cc on non-Darwin.
llvm-svn: 191083
2013-09-20 11:03:27 +00:00
Alexander Potapenko 7be1a632b2 [ASan] Enforce the memmove semantics for both memcpy() and memmove() interceptors on Darwin.
Due to bugs in the interposition of resolver functions on 10.7 and 10.8 both memcpy() and memmove()
were previously intercepted by INTERCEPTOR(memcpy), which led to false positives and crashes (see http://llvm.org/bugs/show_bug.cgi?id=16362)
We choose to use a memmove-like function in both cases. This effectively disables the overlap checks in memcpy(), but the overlaps
aren't possible in practice, because memcpy() and memmove() are the same function on Darwin.

Once the interposition is fixed in 10.9, we'll need to revisit this issue, see https://code.google.com/p/address-sanitizer/issues/detail?id=226

llvm-svn: 191081
2013-09-20 10:56:34 +00:00
Kostya Serebryany 2ab5a48dbe [asan] nuke yet another async-signal-safety bug in UAR (oh, my)
llvm-svn: 191080
2013-09-20 09:16:21 +00:00
Alexander Potapenko 8f5d907aea [ASan] Fix init-order-dlopen.cc test to not depend on the -Wl,-undefined,dynamic_lookup being passed to the linker.
llvm-svn: 191012
2013-09-19 17:12:45 +00:00
Kostya Serebryany f8bbdfaf95 [asan] fix one more async-signal-safety issue with use-after-return
llvm-svn: 191004
2013-09-19 14:59:52 +00:00
Kostya Serebryany c3d43ca3ec [asan] add a run-time option detect_stack_use_after_return, add verbosity output for fake stack
llvm-svn: 190932
2013-09-18 10:35:12 +00:00
Alexey Samsonov c947eb08b5 [ASan] Don't add SANITIZER_INTERFACE_ATTRIBUTE for internal ASan functions
llvm-svn: 190860
2013-09-17 09:42:03 +00:00
Alexey Samsonov a7f35c06dc [ASan] Enable fake stack test on Mac and Android, as no-instrumentation tests are now fixed
llvm-svn: 190856
2013-09-17 08:40:32 +00:00
Alexey Samsonov 676c109c24 [ASan] Link tests with -pie if ASan runtime uses zero-base shadow
llvm-svn: 190853
2013-09-17 07:50:12 +00:00
Kostya Serebryany 2f5c2be6bd [asan] further speedup use-after-return: simplify deallocation of fake frames. ~ 20% speedup.
llvm-svn: 190852
2013-09-17 07:42:54 +00:00
Alexey Samsonov f71c88910c [ASan] Don't link with pthread on Android
llvm-svn: 190794
2013-09-16 16:51:49 +00:00
Alexey Samsonov 036a5bef2d [ASan] Split ASan unit tests into two different binaries:
(1) instrumented, i.e. compiled and linked with -fsanitize=address
(2) not instrumented, compiled w/o -fsanitize=address and linked with ASan runtime statically.

llvm-svn: 190788
2013-09-16 15:50:53 +00:00
Alexey Samsonov 48e256466a [ASan] Check that getSymbolizer() is defined. Turn magic mapping constants into named variables
llvm-svn: 190787
2013-09-16 15:45:06 +00:00
Kostya Serebryany 3bee8efc95 [asan] Android does not have TLS
llvm-svn: 190669
2013-09-13 08:58:22 +00:00
Alexey Samsonov 70c93d3b1c [ASan] Temporary disable UAR unit test on Android due to https://code.google.com/p/address-sanitizer/issues/detail?id=222
llvm-svn: 190667
2013-09-13 08:07:21 +00:00
Kostya Serebryany 9583b87077 [asan] don't record the class_id in FakeFrame (scratching the last bits of performance)
llvm-svn: 190666
2013-09-13 07:50:44 +00:00
Kostya Serebryany 4117bdbbbc [asan] more performance to FakeStack: a) don't used atomic exchange, instead rely on regular load and store and other signal-safe logic; b) remove allocated_from_size_class_mask_ which is not helping much anyway; Another 10% speedup
llvm-svn: 190664
2013-09-13 07:20:35 +00:00
Kostya Serebryany 43c4493b44 [asan] second attempt to use TLS with fake stack. This time it looks (more) async-signal safe.
llvm-svn: 190663
2013-09-13 06:32:26 +00:00
Kostya Serebryany c19851ab6c [asan] undo the previous commit since TLS hack breaks with signals... :(
llvm-svn: 190662
2013-09-13 06:15:02 +00:00
Kostya Serebryany 096413ba3b [asan] use TLS on Linux to get the FakeStack. Saves 15% performance
llvm-svn: 190661
2013-09-13 06:04:18 +00:00
Kostya Serebryany 77caab4d7b [asan] inline PoisonShadow in FakeStack to get ~10% speedup
llvm-svn: 190660
2013-09-13 05:57:58 +00:00
Kostya Serebryany 7638aa135e [asan] a bit of performance improvement in fake stack, generalized one test, fixed android build of another test
llvm-svn: 190606
2013-09-12 14:41:10 +00:00
Kostya Serebryany 627ea6391e [asan] add a test for use-after-return and exceptions and fix it. Not 100% sure this is a complete fix, will keep looking for harder cases.
llvm-svn: 190603
2013-09-12 13:25:29 +00:00
Alexander Potapenko 9caa10d0c7 [ASan] Do not build asan_fake_stack_test.cc on OSX until https://code.google.com/p/address-sanitizer/issues/detail?id=222 is fixed.
llvm-svn: 190597
2013-09-12 09:46:56 +00:00
Kostya Serebryany 79d98a851b [asan] limit the size of the fake stack with a reasonable constant. This fixes a failure when the main thread's stack is considered unlimited (very large).
llvm-svn: 190596
2013-09-12 09:08:13 +00:00
Kostya Serebryany 44441cc34b [asan] (part 2) don't lazy-init fake_stack if we only need to check that fake_stack exists (should fix 32-bit builds)
llvm-svn: 190594
2013-09-12 08:47:00 +00:00
Kostya Serebryany 736bd08e05 [asan] don't lazy-init fake_stack if we only need to check that fake_stack exists (should fix 32-bit builds)
llvm-svn: 190593
2013-09-12 08:43:44 +00:00
Kostya Serebryany 628cda7367 [asan] hopefully make the FakeStack async-signal safe, enable the related test
llvm-svn: 190592
2013-09-12 08:34:50 +00:00
Evgeniy Stepanov 58dbe06230 [asan] Fix deadlock in stack unwinder on android/x86.
Fixes PR17116.
Patch by 林作健 (manjian2006 at gmail.com).

llvm-svn: 190590
2013-09-12 08:16:28 +00:00
Kostya Serebryany e8f961e847 [asan] use xchg instead of CAS in FakeStack::Allocate (5% faster for this case)
llvm-svn: 190589
2013-09-12 07:28:42 +00:00
Kostya Serebryany 729c8dc65b [asan] fully re-implement the FakeStack (use-after-return) to make it faster and async-signal-safe. The implementation is not yet complete (see FIXMEs) but the existing tests pass.
llvm-svn: 190588
2013-09-12 07:11:58 +00:00
Timur Iskhodzhanov 92702d8401 [ASan] Remove the explicit function prototypes for intercepted functions on Windows
llvm-svn: 190411
2013-09-10 14:42:15 +00:00
Alexey Samsonov 7a36e6126b [Sanitizer] Refactor symbolization interface: use class instead of several functions. Move some code around to get rid of extra source files
llvm-svn: 190410
2013-09-10 14:36:16 +00:00
Kostya Serebryany 8fc35ca008 [asan] refactor the use-after-return API so that the size class is computed at compile time instead of at run-time. compiler-rt part
llvm-svn: 190406
2013-09-10 13:16:26 +00:00
Timur Iskhodzhanov 190784b21b [ASan] Don't crash in DescribeHeapAddress if we don't know the current thread's ID
Also make DescribeThread easier to use.
This was firing on Dr.ASan runs, not sure how to repro InvalidTID in a simple test.

llvm-svn: 190392
2013-09-10 08:36:21 +00:00
Evgeniy Stepanov cf02f171a9 [sanitizer] Fix PR17138.
strerror_r on OSX returns a positive error code when the errno value is
unknown. Buffer contents are initialized in any case.

llvm-svn: 190295
2013-09-09 08:58:54 +00:00
Alexey Samsonov 77029be19a [ASan] fix one more memory leak in test case
llvm-svn: 190277
2013-09-08 14:01:07 +00:00
Alexey Samsonov 071cc9e89d [ASan] turn on leak checking for ASan tests and fix a few discovered leaks
llvm-svn: 190274
2013-09-08 13:23:29 +00:00
Evgeniy Stepanov 5c1035e7fa [sanitizer] A bunch of linux system call handlers.
llvm-svn: 190157
2013-09-06 14:20:01 +00:00
Alexander Potapenko 2a54274c25 [ASan] make the check for NULL more portable.
llvm-svn: 190139
2013-09-06 12:04:37 +00:00
Alexey Samsonov 6985f3f67b Fix compiler warning introduced in r190022
llvm-svn: 190137
2013-09-06 11:08:12 +00:00
Alexey Samsonov 16516b9b00 Migrate ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS to new spelling - ATTRIBUTE_NO_SANITIZE_ADDRESS
llvm-svn: 190136
2013-09-06 11:07:33 +00:00
Kostya Serebryany e009ef4ac1 [asan] make calloc crash instead of returning 0 on overflow (controlled by the allocator_may_return_null flag)
llvm-svn: 190128
2013-09-06 09:51:50 +00:00
Kostya Serebryany ada5a7b7ef [sanitizer] make the allocator crash instead of returning 0 on huge size (controlled by the allocator_may_return_null flag)
llvm-svn: 190127
2013-09-06 09:25:11 +00:00
Reid Kleckner 0071525492 asan: Add a wcslen interceptor mirroring strlen
Tested on Linux, since I can't build the tests on Windows yet.

llvm-svn: 190022
2013-09-05 01:13:49 +00:00
Kostya Serebryany 2e57127cf7 [asan] add a test that demonstrates why the current use-after-return is not signal-safe
llvm-svn: 189943
2013-09-04 14:39:43 +00:00
Kostya Serebryany 1f13414d45 [asan] make use-after-return handle very deep recursion; fixes 483.xalancbmk in UAR mode
llvm-svn: 189929
2013-09-04 10:59:32 +00:00
Timur Iskhodzhanov 2b8d35f8ac [asan] Hopefully fix the RTL build on Windows (part 2)
llvm-svn: 189817
2013-09-03 15:09:21 +00:00
Kostya Serebryany 14b7caca13 [asan] attemping to fix the Windows build
llvm-svn: 189814
2013-09-03 14:53:02 +00:00
Kostya Serebryany 6bafcd1949 implement PR17059: more visible diagnostics for stack-buffer-overflow
llvm-svn: 189806
2013-09-03 13:58:04 +00:00
Sergey Matveev b9d34443f2 [lsan] Colorize LSan reports.
llvm-svn: 189804
2013-09-03 13:31:03 +00:00
Alexey Samsonov 5b5c99d219 ASan, LSan, MSan: try to find llvm-symbolizer binary in PATH if it is not provided. Now we don't need to explicitly set the location of llvm-symbolizer in lit test configs.
llvm-svn: 189801
2013-09-03 13:22:51 +00:00
Kostya Serebryany 8d42228e47 fix PR17061 (and pleeease, don't ask me for a test, this is just a minor output formatting issue :)
llvm-svn: 189783
2013-09-03 09:44:56 +00:00
Alexey Samsonov bbd5f46696 [ASan] Make blacklist test more robust
llvm-svn: 189748
2013-09-02 09:17:51 +00:00
Alexey Samsonov 4b16885839 Improve collecting malloc stats in ASan
Summary:
This change makes races between updates of thread-local stats and
merging all the thread-local stats together less harmful.

Reviewers: kcc

Reviewed By: kcc

CC: dvyukov, llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1572

llvm-svn: 189744
2013-09-02 08:39:07 +00:00
Kostya Serebryany fab9336413 [asan]: fix a CHECK failure in use-after-return mode; enable and fix stack-use-after-return.cc; add a test for UAR mode in asan_noinst_test
llvm-svn: 189457
2013-08-28 08:59:23 +00:00
Alexey Samsonov 0803953cea Generate list of symbols exported from sanitizer runtimes only on 64-bit Unix
llvm-svn: 189454
2013-08-28 08:07:04 +00:00
Alexey Samsonov acab30e927 Properly generate lists of exported symbols for sanitizer runtimes
This change adds a Python script that is invoked for
the just-built sanitizer runtime to generate the list of exported symbols
passed to the linker. By default, it contains interceptors and sanitizer
interface functions, but can be extended with tool-specific lists.

llvm-svn: 189356
2013-08-27 15:08:02 +00:00
Hans Wennborg 67c6e5041b cmake: fix the compiler-rt build with MSVC
This sets flags and excludes things that aren't working with MSVC yet,
allowing us to build the ASan runtime as part of the cmake build.

Differential Revision: http://llvm-reviews.chandlerc.com/D1525

llvm-svn: 189304
2013-08-27 01:24:01 +00:00
Timur Iskhodzhanov 10286e1e59 [ASan/RTL] Disable colored reporting on Windows
llvm-svn: 188545
2013-08-16 11:26:26 +00:00
Timur Iskhodzhanov 51cda144ae [ASan/RTL] Disable alloc_dealloc_mismatch by default on Windows
llvm-svn: 188541
2013-08-16 11:04:59 +00:00
Timur Iskhodzhanov 9dc34adf36 [ASan/Win] Oops, forgot to add the attributes to the memory allocations functions
llvm-svn: 188290
2013-08-13 16:48:18 +00:00
Timur Iskhodzhanov 7757073c21 [ASan/Win] Hook some memory allocation functions; passes simple sanity test now
llvm-svn: 188278
2013-08-13 15:29:42 +00:00
Timur Iskhodzhanov 3fdabf8965 [ASan/Win] Add the first version of the RTL thunk that should be linked with instrumented DLLs
llvm-svn: 188267
2013-08-13 13:47:03 +00:00
Timur Iskhodzhanov eee13914e2 Define SANITIZER_INTERFACE_ATTRIBUTE on Windows and fix all the places where SANITIZER_INTERFACE_ATTRIBUTE or SANITIZER_ATTRIBUTE_WEAK are used
llvm-svn: 188261
2013-08-13 11:42:45 +00:00
Evgeniy Stepanov 64cace0687 [sanitizer] Intercept poll/ppoll.
llvm-svn: 188177
2013-08-12 13:19:53 +00:00
Daniel Dunbar bc5dbc435e [tests] Update to use lit_config and lit package, as appropriate.
llvm-svn: 188116
2013-08-09 22:14:01 +00:00
Evgeniy Stepanov 7ea4795ed3 [sanitizer] ASan/MSan tests for r187967.
r187967: Disable inlining between sanitized and non-sanitized functions.
llvm-svn: 187971
2013-08-08 09:23:19 +00:00
Alexey Samsonov f502fd75ab ASan: fix one more test case for pipefail
llvm-svn: 187881
2013-08-07 10:41:49 +00:00
Alexey Samsonov 15d5eefc65 Distinguish 32-bit ASan from 64-bit ASan in lit configs
llvm-svn: 187878
2013-08-07 09:31:28 +00:00
Alexey Samsonov 4431d2d566 Enable pipefail for ASan tests
llvm-svn: 187877
2013-08-07 09:14:30 +00:00
Sergey Matveev 6459a370a7 [lsan] Add leak_check_at_exit flag.
We needed a way to tell LSan to invoke leak checking only if __do_leak_check()
is called explicitly. This can now be achieved by setting
leak_check_at_exit=false.

llvm-svn: 187578
2013-08-01 14:57:07 +00:00
Evgeniy Stepanov d8a1798b47 [asan] Limit fake stack size to a reasonable value when running with unlimited stack.
llvm-svn: 187411
2013-07-30 11:50:26 +00:00
Rafael Espindola 48e479291e disable pipefail on asan for now.
llvm-svn: 187269
2013-07-26 23:19:33 +00:00
Sergey Matveev 9c012165ad [lsan] Make __lsan_do_leak_check() honor the detect_leaks flag.
Also move detect_leaks to common flags.

llvm-svn: 186821
2013-07-22 12:38:17 +00:00
Hans Wennborg 2e304b6ffd Use --driver-mode=g++ instead of -ccc-cxx; required after Clang r186605
llvm-svn: 186607
2013-07-18 20:48:50 +00:00
Alexey Samsonov 79d79da0e1 [ASan] Fix leaks in ASan tests found by LSan
llvm-svn: 186577
2013-07-18 12:59:52 +00:00
Alexey Samsonov 9916aa2d95 [Sanitizer] move strcpy and strncpy to common interceptors
llvm-svn: 186408
2013-07-16 12:51:53 +00:00
Timur Iskhodzhanov 4245f78fdd [ASan] Use less shadow on Win 32-bit
llvm-svn: 186393
2013-07-16 09:47:39 +00:00
Alexander Potapenko 27155281db [ASan] Cache the OSX version to avoid calling sysctl() on every GetMacosVersion() call.
llvm-svn: 186389
2013-07-16 09:29:48 +00:00
Alexander Potapenko b137ca157b [ASan] Add support for OS X Mavericks to GetMacosVersion.
llvm-svn: 186386
2013-07-16 08:35:42 +00:00
Timur Iskhodzhanov d7eb67774e Fix check_lint warnings in sanitizers' runtime libraries
llvm-svn: 186328
2013-07-15 16:11:39 +00:00
Chandler Carruth 1a48dc5ed6 Fix a veritable conucopia of bugs in the readdir_r interceptors.
First, the reason I came here: I forgot to look at readdir64_r which had
the exact same bug as readdir_r. However, upon applying the same
quick-fix and testing it I discovered that it still didn't work at all.
As a consequence, I spent some time studying the code and thinking about
it and fixed several other problems.

Second, the code was checking for a null entry and result pointer, but
there is no indication that null pointers are viable here. Certainly,
the spec makes it extremely clear that there is no non-error case where
the implementation of readdir_r fails to dereference the 'result'
pointer and store NULL to it. Thus, our checking for a non-null 'result'
pointer before reflecting that write in the instrumentation was
trivially dead. Remove it.

Third, the interceptor was marking the write to the actual dirent struct
by looking at the entry pointer, but nothing in the spec requires that
the dirent struct written is actually written into the entry structure
provided. A threadlocal buffer would be just as conforming, and the spec
goes out of its way to say the pointer to the *actual* result dirent
struct is stored into *result, so *that* is where the interceptor should
reflect a write occuring. This also obviates the need to even consider
whether the 'entry' parameter is null.

Fourth, I got to the bottom of why nothing at all worked in readdir64_r
-- the interceptor structure for dirent64 was completely wrong in that
it was the same as dirent. I fixed this struct to be correct (64-bit
inode and 64-bit offset! just a 64-bit offset isn't enough!) and added
several missing tests for the size and layout of this struct.

llvm-svn: 186109
2013-07-11 18:51:40 +00:00
Chandler Carruth 28c1b294b8 Fix a bug in the readdir_r interceptor: when we reach the end of the
directory stream, the entry is not written to, instead *result is set to
NULL and the entry is not written to at all.

I'm still somewhat suspicious of the correct instrumention here --
I feel like it should be marking the written range as the pointer in
*result and the length (*result)->d_reclen in case the implementation
decides not to use the passed-in entry (if that's even allowed).
Finally, the definition of 'struct dirent' analog used in the
interceptor is wrong in 32-bit mode with _FILE_OFFSET_BITS=64 as it hard
codes the use of a pointer-sized offset.

I've added a somewhat goofy test for the bug I fixed via ASan --
suggestions on how to better test the interceptor logic itself welcome.

llvm-svn: 185998
2013-07-10 09:50:29 +00:00
Peter Collingbourne 2c60538ddd [asan] Update blacklists to use categories.
Differential Revision: http://llvm-reviews.chandlerc.com/D1094

llvm-svn: 185980
2013-07-09 22:04:28 +00:00
Evgeniy Stepanov faba61a7bc [sanitizer] Support GLOB_ALTDIRFUNC in glob interceptor.
llvm-svn: 185932
2013-07-09 12:07:59 +00:00
Evgeniy Stepanov 77ef78a0a5 [sanitizer] Intercept realpath and canonicalize_file_name.
Handle realpath(path, NULL) form.

llvm-svn: 185921
2013-07-09 09:53:37 +00:00
Evgeniy Stepanov 8495b84076 [asan] Fix windows build.
llvm-svn: 185917
2013-07-09 09:29:19 +00:00
Sergey Matveev bdeff959a1 [lsan] Handle fork() correctly.
Update the main thread's os_id on every pthread_create, and before
initiating leak checking. This ensures that we have the correct os_id even if we
have forked after Init().

llvm-svn: 185815
2013-07-08 12:57:24 +00:00
Alexander Potapenko 4f73dea69d [ASan] Close stderr before launching atos in asan_symbolize.py
llvm-svn: 185631
2013-07-04 14:21:49 +00:00
Alexander Potapenko d0c91acb58 [ASan] Do not protect the malloc zone created by malloc_zone_create() on Snow Leopard and earlier systems.
Fixes https://code.google.com/p/address-sanitizer/issues/detail?id=208

llvm-svn: 185621
2013-07-04 10:16:12 +00:00
Alexey Samsonov 4798a08df8 [ASan] try to fix Windows build
llvm-svn: 185345
2013-07-01 16:38:38 +00:00
Alexey Samsonov 9857ca2564 [ASan] Properly disable strict init-order checking when pthread_create is called
llvm-svn: 185342
2013-07-01 16:16:41 +00:00
Alexander Potapenko 0fde89f2aa [ASan] Cache atos processes to make Darwin symbolication faster.
Patch by Jesse Ruderman<jruderman@gmail.com>

llvm-svn: 185325
2013-07-01 10:51:31 +00:00
Alexey Samsonov c3832f7788 [ASan] Add sanity test for asan_symbolize.py script
llvm-svn: 185318
2013-07-01 09:15:19 +00:00
Alexey Samsonov cc510707af [ASan] Remove leading underscores from function names in output tests
llvm-svn: 185315
2013-07-01 08:41:45 +00:00
Alexey Samsonov 8918140809 Hide mlock/munlock info message under verbosity flag.
llvm-svn: 185314
2013-07-01 08:25:29 +00:00
Alexey Samsonov e71f37c1cd Define the path to llvm-symbolizer tool in a common config to reduce copy-paste
llvm-svn: 185286
2013-06-30 14:47:38 +00:00
Alexey Samsonov 13f89cd19b [ASan] Remove %symbolize from lit tests: we now use external symbolizer instead of python script
llvm-svn: 185163
2013-06-28 15:52:44 +00:00
Alexey Samsonov 002d764f21 [ASan] Migrate lit tests to external symbolizer from asan_symbolize.py script
llvm-svn: 185148
2013-06-28 12:50:12 +00:00
Evgeniy Stepanov dec0f76c14 [sanitizer] Intercept ptrace.
llvm-svn: 185142
2013-06-28 11:02:43 +00:00
Alexander Potapenko 2b064a2b4e [ASan][OSX] Make sure the zones created by malloc_create_zone() are write-protected.
Add a test.

llvm-svn: 185140
2013-06-28 10:01:09 +00:00
Alexander Potapenko 593f833e9b [ASan][OSX] Fix the incorrect malloc_create_zone() implementation that led to out-of-bounds mprotect()s
(https://code.google.com/p/address-sanitizer/issues/detail?id=203)
Add a test.

llvm-svn: 185138
2013-06-28 09:21:31 +00:00
Kostya Serebryany 6a068a715d [asan] initialize fake_stack lazily and increase its maximal size. This makes -fsanitize=address,use-after-return more robust: all SPEC tests pass now. In the default mode thread stacks become a bit smaller.
llvm-svn: 184934
2013-06-26 12:16:05 +00:00
Evgeniy Stepanov 982d56abb8 [sanitizer] Move log_path to common flag and use it in MSan.
llvm-svn: 184836
2013-06-25 13:50:44 +00:00
Evgeniy Stepanov 0e8053af08 [sanitizer] Intercept readv, preadv, writev, pwritev.
llvm-svn: 184717
2013-06-24 10:43:23 +00:00
Sergey Matveev 4e0215a71c Revert to C-style callbacks for iteration over allocator chunks.
Also clean up LSan code, fix some comments and replace void* with uptr
to bring down the number of reinterpret_casts.

llvm-svn: 184700
2013-06-24 08:34:50 +00:00
Alexey Samsonov 43937b3758 Add cmake rules for building LSan common on Mac OS
llvm-svn: 184639
2013-06-22 16:33:52 +00:00
Sergey Matveev 38fa1ff710 [lsan] Try REALLY hard to fix Win build.
llvm-svn: 184557
2013-06-21 15:50:49 +00:00
Sergey Matveev b94d5e2d1c [asan] Move lsan_disabled out of thread context.
Fix for the case where disabler is used in pthread key destructor.

llvm-svn: 184553
2013-06-21 14:51:52 +00:00
Alexey Samsonov a9db3f9757 [ASan] reimplement strdup() interceptor to get nicer stack traces for memory chunks allocated there
llvm-svn: 184546
2013-06-21 14:41:59 +00:00
Alexey Samsonov f9e6624663 [ASan] make test for LSan annotations Linux-only for now
llvm-svn: 184541
2013-06-21 12:18:52 +00:00
Alexey Samsonov ad25b50a89 [ASan] Check that ASan user may include and use LSan headers
llvm-svn: 184540
2013-06-21 11:11:44 +00:00
Sergey Matveev 5e6b9eccce [asan] Define LSan annotations as no-ops if leak detection is not supported.
llvm-svn: 184422
2013-06-20 13:39:42 +00:00
Alexey Samsonov 686c229b03 [ASan] Clear allocation magic value before recycling the chunk. This led to spurious crashes in LSan when it walked through reused chunks. Don't know how to create not-brittle test case for this.
llvm-svn: 184404
2013-06-20 08:13:06 +00:00
Alexander Potapenko 29b9fcf0a8 [ASan] Delete excessive 'extern "C"' around mlock* interceptors.
llvm-svn: 184294
2013-06-19 11:36:51 +00:00
Evgeniy Stepanov 8fa046e288 [sanitizer] Symbolic ioctl names.
Replace hardcoded ioctl request ids with symbolic names.
Disable certain ioctls on platforms where such names are not found in the
system headers.
Fix a bug in ioctl_lookup.
Reenable ioctl test on Mac.

llvm-svn: 184183
2013-06-18 09:22:24 +00:00
Alexey Samsonov 7e325fb477 Properly install LSan interface header, rely on sanitizer header presence in lit tests
llvm-svn: 183977
2013-06-14 11:45:36 +00:00
Alexey Samsonov b0d92b3312 [Sanitizer] Rename InternalVector to InternalMmapVector
llvm-svn: 183972
2013-06-14 09:59:40 +00:00
Richard Trieu 5685aa6845 Fix broken header guard.
llvm-svn: 183873
2013-06-12 22:37:22 +00:00
Sergey Matveev 978460c12c [lsan] Harmonized some naming inconsistencies.
llvm-svn: 183748
2013-06-11 15:26:20 +00:00
Alexey Samsonov c8e7364763 [Sanitizer] support running external llvm-symbolizer on Mac
llvm-svn: 183730
2013-06-11 08:13:36 +00:00
Alexander Potapenko 152f7edf24 [ASan] Fix unset-insert-libraries-on-exec.cc on 32-bit Darwin.
The test used to execute a 64-bit /bin/bash binary and preload a 32-bit dynamic library into it.
Now the arch-specific version of echo-env is executed instead.

llvm-svn: 183662
2013-06-10 14:47:43 +00:00
Alexey Samsonov f67191b4c3 [ASan] mark ioctl test as xfailing on darwin. remove redundant semicolons
llvm-svn: 183655
2013-06-10 14:17:08 +00:00
Kostya Serebryany 02062becea [asan] fix Android build (mark asan_malloc_usable_size as an interface function)
llvm-svn: 183651
2013-06-10 13:28:33 +00:00
Kostya Serebryany e71982d589 [asan] fix the bug with memalign and malloc_usable_size (http://code.google.com/p/address-sanitizer/issues/detail?id=193); also fix lint
llvm-svn: 183647
2013-06-10 10:46:27 +00:00
Alexey Samsonov 4c0ea93725 [ASan] don't use -m{32,64} flag in test case, as it can be run in both 32- and 64-bit modes
llvm-svn: 183638
2013-06-10 07:55:12 +00:00
Alexey Samsonov 4fdf8d66a9 [ASan] fix test case to use absolute paths
llvm-svn: 183527
2013-06-07 15:44:21 +00:00
Alexander Potapenko 6af3fce55e [ASan] An early return from InitializeAsanInterceptors() on Mac has been considered unobvious.
Remove it and replace ASAN_INTERCEPT_FUNC with a no-op if SANITIZER_MAC==1.

llvm-svn: 183524
2013-06-07 15:10:02 +00:00
Evgeniy Stepanov 0b1f41b6f4 [sanitizer] ioctl interceptor.
ASan: disabled by default
MSan: enabled by default
TSan: disabled
llvm-svn: 183517
2013-06-07 13:00:47 +00:00
Alexey Samsonov 575c599554 Drop support for 32-bit PowerPC in sanitizer tools.
llvm-svn: 183499
2013-06-07 09:44:43 +00:00
Alexey Samsonov 889e3ab83c [ASan] create separate configs for running ASan lit tests in both 32- and 64-bit mode. Clean up RUN-lines in tests.
llvm-svn: 183498
2013-06-07 09:38:55 +00:00
Sergey Matveev 1c4e214c32 [lsan] Put SANITIZER_INTERFACE_ATTRIBUTE on LSan interface functions.
llvm-svn: 183429
2013-06-06 18:40:55 +00:00
Sergey Matveev ecc4f5ba8e [lsan] Implement __lsan_ignore_object().
Leak annotation similar to HeapChecker's IgnoreObject().

llvm-svn: 183412
2013-06-06 14:17:56 +00:00
Alexey Samsonov e674320ade [ASan] make pthread_getschedparam test more robust
llvm-svn: 183411
2013-06-06 14:08:40 +00:00
Alexey Samsonov f6630ecee9 Simplify lit configs for asan/lsan/msan unit tests
llvm-svn: 183410
2013-06-06 13:48:20 +00:00
Alexey Samsonov c05aba7eaa [ASan] create common autogenerated config for running compiler-rt unit tests, and use it in ASan
llvm-svn: 183401
2013-06-06 12:48:20 +00:00
Alexey Samsonov 6a65b18992 [ASan] lit tests: create common autogenerated config for running compiler-rt lit tests, and use it in ASan
llvm-svn: 183400
2013-06-06 12:35:48 +00:00
Alexey Samsonov 2874f70250 [ASan] move all lit_tests under TestCases
llvm-svn: 183395
2013-06-06 09:23:34 +00:00
Alexey Samsonov b42b2f5c69 [ASan] Add a few tests for use-after-scope mode
llvm-svn: 183391
2013-06-06 08:30:26 +00:00
Alexey Samsonov 7a75e16c27 [ASan] One more fix for realloc: check that reallocated chunk is valid before calling memcpy
llvm-svn: 183390
2013-06-06 08:25:31 +00:00
Alexey Samsonov 87a59e5652 [ASan] make free_hook_realloc test more robust
llvm-svn: 183387
2013-06-06 07:58:00 +00:00
Evgeniy Stepanov 56050e8f69 [sanitizer] Fix __sanitizer_unaligned_* to work with unaligned data types.
llvm-svn: 183224
2013-06-04 13:49:10 +00:00
Alexey Samsonov 8f5138a23f Call __asan_free_hook() before marking the chunk quarantinned
Summary:
With this change, the user may safely call __asan_get_ownership()
from malloc/free hooks and assume it would return "true". If there is a
realloc/free race, free hook might be called twice, but I think it's acceptable,
as it's a data race and would later be reported anyway.

This change also fixes a bug when failing realloc incorrectly marked the
original memory as "quarantinned".

Reviewers: timurrrr, kcc, samsonov

Reviewed By: samsonov

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D913

llvm-svn: 183220
2013-06-04 12:19:31 +00:00
Sergey Matveev b256ac7584 [asan] Fix invalid thread registry access when checking if LSan is disabled.
llvm-svn: 183218
2013-06-04 10:39:24 +00:00
Timur Iskhodzhanov baf90ccfac Fix ALIGNED misuse in asan_thread.cc (built on all platforms); also, add a comment to the ALIGNED macro describing the correct usage
llvm-svn: 183214
2013-06-04 08:25:17 +00:00
Kostya Serebryany c1aa0e8f69 [asan] ASan Linux MIPS32 support (compiler-rt part), patch by Jyun-Yan Y
llvm-svn: 183105
2013-06-03 14:49:25 +00:00
Sergey Matveev 17ee1abfa7 [lsan] Add __lsan_disable() and __lsan_enable().
Objects allocated after a call to __lsan_disable() will be treated as
live memory. Also add a ScopedDisabler.

llvm-svn: 183099
2013-06-03 11:21:34 +00:00
Alexander Potapenko 41cd6102e9 [ASan] Do not buffer stdin in asan_symbolize.py
llvm-svn: 183006
2013-05-31 14:55:06 +00:00
Sergey Matveev 69f11803ec [lsan] Use the fast version of GetBlockBegin for leak checking in LSan and ASan.
llvm-svn: 182994
2013-05-31 11:13:45 +00:00
Kostya Serebryany 831a1d7cec [sanitizer] introduce LargeMmapAllocator::GetBlockBeginFastSingleThreaded, required for LeakSanitizer to work faster. Also fix lint.
llvm-svn: 182917
2013-05-30 08:43:30 +00:00
Alexander Potapenko a8b41762e4 [ASan] Minor cleanup: remove a couple of unused variables.
llvm-svn: 182915
2013-05-30 07:30:07 +00:00
Timur Iskhodzhanov 013da5cb37 Replaced 'bool .* = 0;' with '... = false;'
llvm-svn: 182868
2013-05-29 17:26:25 +00:00
Sergey Matveev 6a0c722c23 [asan] Fix r182858.
llvm-svn: 182862
2013-05-29 15:31:52 +00:00
Sergey Matveev 4161813a50 [asan] Fix r182854: run the unpoison_tls test only on Linux.
llvm-svn: 182858
2013-05-29 14:37:04 +00:00
Timur Iskhodzhanov cc61eefd4b Fix MSVC W3 compiler warnings
llvm-svn: 182857
2013-05-29 14:11:44 +00:00
Sergey Matveev 09886cd17a [asan] Make ASan report the correct thread address ranges to LSan.
This CL enables thread support in LSan when used on top of ASan.

llvm-svn: 182854
2013-05-29 13:09:44 +00:00
Evgeniy Stepanov 08f662845d [sanitizer] Share TSan accept & accept4 interceptors with other sanitizers.
llvm-svn: 182835
2013-05-29 09:09:58 +00:00
Sergey Matveev 39e8a6d87e [lsan] Begin converting LSan tests to output tests.
In this CL all old tests are removed and one LIT test is added.

llvm-svn: 182730
2013-05-27 11:41:46 +00:00
Alexey Samsonov 9c2bcf8c15 Improve support for compiler-rt tests in CMake build.
Now compiler-rt tests run correctly if compiler-rt is checked out into
arbitrary directory (not necessarily projects/compiler-rt).
Patch by Greg Fitzgerald!

llvm-svn: 182726
2013-05-27 09:35:24 +00:00
Alexey Samsonov 646ec67e25 Disable init-order checking before destructors are run.
We don't want to report initialization-order bugs when a destructor of a global
variable accesses dynamically initialized global from another
(not necessarily initialized) module. We do this by intercepting __cxa_atexit and
registrering our own callback that unpoisons shadow for all dynamically initialized
global variables.

llvm-svn: 182637
2013-05-24 11:46:56 +00:00
Alexander Potapenko fd7d9f45dd [ASan] Rename __asan_preinit to __local_asan_preinit to avoid warnings from the linker which is trying to export all the __asan_* symbols
llvm-svn: 182567
2013-05-23 09:15:20 +00:00
Kostya Serebryany 6ca6ba2f2c [asan] fix the reported PCs for powerpc64
llvm-svn: 182477
2013-05-22 14:21:34 +00:00
Alexey Samsonov 49eb5700e2 Revert r182465 and add lsan-common library to makefile-based build
llvm-svn: 182470
2013-05-22 13:20:37 +00:00
Alexey Samsonov 155dd46e04 [ASan] Temporary remove leak checking from ASan, while we don't have makefile-based build for LSan
llvm-svn: 182465
2013-05-22 12:44:57 +00:00
Kostya Serebryany 15fd53fa39 [asan] enhance stack-overflow.cc test: check that the location frame is properly symbolized
llvm-svn: 182463
2013-05-22 11:00:56 +00:00
Kostya Serebryany b93ae15205 [asan] attempting to fix the debian bot (on ubuntu the test builds; on debian it complains that _SC_PAGESIZE is unknown)
llvm-svn: 182462
2013-05-22 10:38:51 +00:00
Kostya Serebryany 62debd6d6a [asan] fix dlclose-test to work with non-4K pages. Properly disable interface_symbols_linux on non-x86
llvm-svn: 182461
2013-05-22 10:20:10 +00:00
Kostya Serebryany 8410a867eb [asan] workaround for asan bug 189 (swapcontext followed by throw gets OOM kill). Also, disable swapcontext_test on non-x86. Fix lint
llvm-svn: 182456
2013-05-22 08:54:30 +00:00
Sergey Matveev 20ccf95f80 [lsan] Invoke leak detection with atexit().
Keeps it consistent between ASan and LSan.

llvm-svn: 182399
2013-05-21 17:56:45 +00:00
Sergey Matveev 17f5705d3c [asan] Do not invoke LSan hooks unless CAN_SANITIZE_LEAKS.
llvm-svn: 182389
2013-05-21 15:35:34 +00:00
Sergey Matveev 8c235f40d7 [asan] LSan hooks in asan_rtl.
llvm-svn: 182384
2013-05-21 14:15:35 +00:00
Sergey Matveev 620744556a [lsan] Change CMakeLists to build the common LSan module for ASan.
Also, define CAN_SANITIZE_LEAKS.

llvm-svn: 182383
2013-05-21 14:12:11 +00:00
Alexey Samsonov b99085b0b8 [MSan] Add empty default blacklist for MSan
llvm-svn: 182382
2013-05-21 13:55:56 +00:00
Alexey Samsonov e838135b6c [ASan] create default (empty) ASan blacklist file in resource directory
llvm-svn: 182380
2013-05-21 13:48:27 +00:00
Sergey Matveev 7159b2a382 [asan] LSan hooks in asan_allocator2.cc
llvm-svn: 182379
2013-05-21 13:46:41 +00:00
Sergey Matveev 65dd62abe5 [asan] LSan hooks in asan_thread.cc
llvm-svn: 182378
2013-05-21 13:40:13 +00:00
Alexey Samsonov 3677b18388 [ASan] Mark init-order test as XFAIL on Darwin
llvm-svn: 182365
2013-05-21 10:11:17 +00:00
Alexey Samsonov af456d0c40 [ASan] Don't run fast unwinder tests on 32-bit Linux as fast unwinder may be unexpectedly smart on some hosts
llvm-svn: 182363
2013-05-21 09:35:48 +00:00
Alexey Samsonov 1c26f007ed [ASan] Mark some tests as working only on x86_64 and i386 arches
llvm-svn: 182360
2013-05-21 09:01:13 +00:00
Alexey Samsonov 4ca93997f7 Add lit config feature <target>-supported-target to mark target-specific tests
llvm-svn: 182355
2013-05-21 08:22:03 +00:00
Evgeniy Stepanov 970be35808 [sanitizer] Intercept pthread_getschedparam.
llvm-svn: 182353
2013-05-21 08:12:08 +00:00
Timur Iskhodzhanov 67c918a424 Fix realloc'ing freed/invalid pointers
See https://code.google.com/p/address-sanitizer/issues/detail?id=187 for the details

llvm-svn: 182255
2013-05-20 13:05:58 +00:00
Sergey Matveev 6a6c5b6dee [asan] Modify ASan metadata atomically.
We need this to avoid races when ASan and LSan are used together.

llvm-svn: 182252
2013-05-20 11:25:18 +00:00
Timur Iskhodzhanov 667cae7b69 [ASan] Remove an unused ChunkBase field
Also fix wrong alignment maths and an outdated comment

llvm-svn: 182238
2013-05-20 08:20:17 +00:00
Kostya Serebryany 3469375e4f [sanitizer] factor out ByteMap from SizeClassAllocator32 so that it can be later replaced with a more memory-efficient implementation on 64-bit.
llvm-svn: 182234
2013-05-20 07:29:21 +00:00
Timur Iskhodzhanov 836a4f3643 Replace CHECK(a == b); with CHECK_EQ(a, b); throughout asan_allocator2.cc
llvm-svn: 182198
2013-05-18 18:27:33 +00:00
Peter Collingbourne ffaf2eac4d [nolibc] Move all platforms to internal_getpid.
Before, we had an unused internal_getpid function for Linux, and a
platform-independent GetPid function.  To make the naming conventions
consistent for syscall-like functions, the GetPid syscall wrapper
in sanitizer_posix.cc is moved to sanitizer_mac.cc, and GetPid is
renamed to internal_getpid, bringing the Linux variant into use.

llvm-svn: 182132
2013-05-17 16:56:53 +00:00
Peter Collingbourne 6d4a7d3723 [nolibc] Begin moving sanitizer_common's libc-dependent code to a separate library
Introduce a new object library, RTSanitizerCommonLibc, which will contain
the subset of sanitizer_common with libc dependencies. RTSanitizerCommon
contains the remainder of sanitizer_common, and is intended to have no
libc dependencies. Begin moving code to RTSanitizerCommonLibc, starting
with sanitizer_common.cc, whose libc-dependent portion is moved to
sanitizer_common_libcdep.cc, the first member of the new library.

This split affects the CMake build only.  The makefile build continues
to produce the full sanitizer_common library.

llvm-svn: 182118
2013-05-17 16:17:19 +00:00
Alexander Potapenko dd3c583211 [ASan] Make the regression test for time(NULL) Linux-specific, as it crashes on Darwin (and the problem used to occur on Linux).
Do not use zero-based shadow for the time() test.

llvm-svn: 182107
2013-05-17 15:11:26 +00:00
Alexander Potapenko 00b44ba778 [ASan] Fix allow_user_segv.cc on Darwin (32-bit build required a SIGBUS handler instead of the SIGSEGV one)
llvm-svn: 182080
2013-05-17 08:08:50 +00:00
Alexander Potapenko 12d09f3a3d [ASan] Fix init-order-dlopen.cc to pass under Mac OS.
llvm-svn: 182010
2013-05-16 14:51:01 +00:00
Alexander Potapenko 3917fe0d94 [ASan] Fix interface_symbols_darwin to pass a correct flag to nm.
llvm-svn: 182008
2013-05-16 13:49:12 +00:00
Kostya Serebryany aaf7275677 [asan] symbolize when possible, even if ASAN_SYMBOLIZER_PATH is not provided. On Linux this will use dl_iterate_phdr instead of /proc/self/maps, even if the symbolizer is not installed
llvm-svn: 182005
2013-05-16 13:04:29 +00:00
Kostya Serebryany b7ca536888 [asan] fix ShadowGapTest on PowerPC64
llvm-svn: 181991
2013-05-16 07:54:28 +00:00
Kostya Serebryany 2b824f3575 [asan] disable BuiltinLongJmpTest on PowerPC
llvm-svn: 181890
2013-05-15 15:01:14 +00:00