summaryrefslogtreecommitdiffstats
path: root/compiler-rt
Commit message (Collapse)AuthorAgeFilesLines
* compiler-rt: add support for mingw-w64 in builtinsReid Kleckner2015-07-173-2/+28
| | | | | | | | | | | | | | | | | The is so that we can avoid using libgcc and use compiler-rt with mingw-w64. Related driver patch http://reviews.llvm.org/D11077 I have tested this with mingw-w64 and everything seems to be in order. I also sent this patch to the mingw-w64 mailing list for them to look at. Patch by Martell Malone. Differential Revision: http://reviews.llvm.org/D11085 llvm-svn: 242539
* [msan] Fix open_memstream handling.Evgeniy Stepanov2015-07-172-17/+28
| | | | | | | | For open_memstream() files, buffer pointer is only valid immediately after fflush() or fclose(). Fix the fclose() interceptor to unpoison after the REAL(fclose) call, not before it. llvm-svn: 242535
* [ASan] PR24150: restrict test case to i386.Alexey Samsonov2015-07-161-1/+1
| | | | llvm-svn: 242449
* [CMake] One more attempt to fix PR24144.Alexey Samsonov2015-07-161-2/+1
| | | | | | This time, exclude ExternalProject from build using set_target_properties. llvm-svn: 242444
* [CMake] Workaround for PR24144: avoid installing libcxx_tsan and libcxx_msan ↵Alexey Samsonov2015-07-161-0/+2
| | | | | | | | | | | | | | | | by default "ninja install" command. Summary: Exclude external libc++ builds from "all" target, so that they are only build on demand, and are not installed together with LLVM/Clang. Reviewers: hans Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D11252 llvm-svn: 242424
* [CMake] Revisit PR23539: allow to override SANITIZER_MIN_OSX_VERSION at ↵Alexey Samsonov2015-07-161-10/+12
| | | | | | | | | | | | | configure time. Some users may need to configure Clang/compiler-rt with -DMACOSX_DEPLOYMENT_TARGET=10.6, as they expect Clang to produce working (non-sanitized) binaries on 10.6. In this case they would need to additionally provide -DSANITIZER_MIN_OSX_VERSION=10.7 to mark that sanitizer runtimes may only be used on 10.7+ (where they are supported). llvm-svn: 242363
* [probile] Fix memory leak introduced in r241824.Alexey Samsonov2015-07-151-0/+1
| | | | llvm-svn: 242350
* CFI: Add a default blacklist.Peter Collingbourne2015-07-153-0/+12
| | | | | | Differential Revision: http://reviews.llvm.org/D11095 llvm-svn: 242287
* [Sanitizer] Fix fopencookie() interceptor to work with null hook functions.Alexey Samsonov2015-07-142-7/+15
| | | | llvm-svn: 242193
* profile: Autoconf build system support for r241824Justin Bogner2015-07-132-2/+2
| | | | | | | r241824 didn't update the autoconf build system to handle the new file in the profile library. llvm-svn: 242013
* sanitizer_common: Only use _ReadWriteBarrier when targeting MSVC cl.exe.Peter Collingbourne2015-07-131-1/+1
| | | | | | Fixes check-ubsan when self hosting on Windows. llvm-svn: 242003
* sanitizer_common: Fix implementation of bit count operations on 64-bit Windows.Peter Collingbourne2015-07-131-11/+9
| | | | llvm-svn: 242002
* Temporarily disable check-sanitizer tests on 64-bit Windows.Peter Collingbourne2015-07-101-1/+3
| | | | llvm-svn: 241940
* [TSan] Fix dl_iterate_phdr callback for the case when info->dlpi_name is ↵Alexey Samsonov2015-07-102-4/+10
| | | | | | overwritten by user. llvm-svn: 241876
* Add support for generating profiles in a given directory.Diego Novillo2015-07-099-27/+92
| | | | | | | | | | When the file is initialized, this patch checks whether the path specifies a directory. If so, it creates the directory tree before truncating the file. Use default.profdata instead of pgo-data for default indexed profile name. llvm-svn: 241824
* UBSan: Simplify logic for locating the RTTI object.Peter Collingbourne2015-07-081-7/+16
| | | | | | | | | The image-relative complete object locator contains a reference to itself, which we can use to compute the image base without using VirtualQuery. Spotted by David Majnemer. llvm-svn: 241758
* [asan] relax the test case to allow either 'malloc' or ↵Kostya Serebryany2015-07-081-1/+1
| | | | | | '__interceptor_malloc' ; PR22681 llvm-svn: 241755
* CFI: Get check-cfi passing on Windows.Peter Collingbourne2015-07-0819-455/+570
| | | | | | | | | | | | | | | | | | | | Specifically: - Start using %expect_crash. - Provide an implementation of __ubsan::getDynamicTypeInfoFromVtable for the Microsoft C++ ABI. This is all that is needed for CFI diagnostics; UBSan's -fsanitize=vptr also requires an implementation of __ubsan::checkDynamicType. - Build the sanitizer runtimes against the release version of the C runtime, even in debug builds. - Accommodate demangling differences in tests. Differential Revision: http://reviews.llvm.org/D11029 llvm-svn: 241745
* [asan] Add missing $ASAN_OPTIONS to some test casesKuba Brecka2015-07-079-9/+9
| | | | | | | | Since http://reviews.llvm.org/D10294, ASan test cases now respect default env. options via `ASAN_OPTION=$ASAN_OPTIONS:additional_options=xxx`. This patch adds this to a few test cases where it's still missing. Differential Revision: http://reviews.llvm.org/D10988 llvm-svn: 241571
* [asan] Add OS X 10.11's new dyld interposition supportKuba Brecka2015-07-062-4/+40
| | | | | | | | On OS X 10.11 (which is currently a public beta), the dynamic linker has been improved so that it doesn't require the use of DYLD_INSERT_LIBRARIES in order for interposition/wrappers to work. This patch adds support of this behavior into ASan – we no longer need to re-exec in case the env. variable is not set. Reviewed at http://reviews.llvm.org/D10924 llvm-svn: 241487
* [asan] Fix an OS X startup crash when an empty section is presentKuba Brecka2015-07-062-0/+13
| | | | | | | | On OS X, when the main instrumented binary contains a custom section with zero length, ASan will crash (assert failure) early in the initialization. Reviewed at http://reviews.llvm.org/D10944 llvm-svn: 241474
* Enable this test for PPC64.Jay Foad2015-07-051-1/+1
| | | | llvm-svn: 241400
* UBSan: Enable runtime library tests on Windows, and get most tests passing.Peter Collingbourne2015-07-0221-59/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | Specifically: - Disable int128 tests on Windows, as MSVC cl.exe does not support int128, so we might not have been able to build the runtime with int128 support. - XFAIL the vptr tests as we lack Microsoft ABI support. - XFAIL enum.cpp as UBSan fails to add the correct instrumentation code for some reason. - Modify certain tests that build executables multiple times to use unique names for each executable. This works around a race condition observed on Windows. - Implement IsAccessibleMemoryRange for Windows to fix the last misaligned.cpp test. - Introduce a substitution for testing crashes on Windows using KillTheDoctor. Differential Revision: http://reviews.llvm.org/D10864 llvm-svn: 241303
* [sanitizer] add #ifdefs around slow unwinder to fix OS X debug buildKuba Brecka2015-07-021-0/+4
| | | | | | | | | | A recent change in slow unwinder causes the OS X build to fail when using COMPILER_RT_DEBUG=On. Let's fix this by #ifdef'ing it with #if SANITIZER_CAN_SLOW_UNWIND. See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20150622/284294.html Reviewed at http://reviews.llvm.org/D10870 llvm-svn: 241261
* Add declaration of _ReadWriteBarrier. Fixes build of asan tests on Windows.Peter Collingbourne2015-07-021-0/+5
| | | | llvm-svn: 241227
* Re-apply r241217 with build fixes:Peter Collingbourne2015-07-027-24/+63
| | | | | | | - Disable building of the interceptor library on 64-bit Windows. - Mangle names in /alternatename directive for 32-bit Windows. llvm-svn: 241224
* Revert r241217, it breaks the build on Windows.Nico Weber2015-07-026-48/+23
| | | | llvm-svn: 241219
* ubsan: Port runtime library to (32- and 64-bit) Windows.Peter Collingbourne2015-07-026-23/+48
| | | | | | Differential Revision: http://reviews.llvm.org/D10856 llvm-svn: 241217
* [asan] Suppress read_binary_name_regtest.c test failure on unsupported hosts.Evgeniy Stepanov2015-06-301-2/+4
| | | | | | | read_binary_name_regtest.c requires seccomp kernel headers. Make the test pass if <linux/seccomp.h> is missing. llvm-svn: 241119
* Revert part of r240623 (Enable memory sanitizer for PPC64) because theJay Foad2015-06-301-2/+1
| | | | | | buildbots are still failing in check-ubsan. llvm-svn: 241113
* tsan: fix handling of condition variable destructionDmitry Vyukov2015-06-302-2/+55
| | | | | | | | | | | | POSIX states that "It shall be safe to destroy an initialized condition variable upon which no threads are currently blocked", and later clarifies "A condition variable can be destroyed immediately after all the threads that are blocked on it are awakened) (in examples section). Tsan reported such destruction as a data race. Fixes https://llvm.org/bugs/show_bug.cgi?id=23616 Reviewed in http://reviews.llvm.org/D10693 llvm-svn: 241082
* [ASan] Add a regression test for r240960 (https://crbug.com/502974)Alexander Potapenko2015-06-301-0/+48
| | | | | | | The test simulates a sandbox that prevents the program from calling readlink(). ASan is supposed to still be able to print the executable name regardless of that. llvm-svn: 241072
* [asan] Fix SanitizerCommon.PthreadDestructorIterations test on Android L.Evgeniy Stepanov2015-06-298-28/+37
| | | | | | | On Android L, TSD destructors run 8 times instead of 4. Back to 4 times on the current master branch (as well as on K). llvm-svn: 240992
* [asan] Re-enable clang_gcc_abi test at higher opt levels.Evgeniy Stepanov2015-06-291-5/+5
| | | | | | PR23971 is fixed. llvm-svn: 240975
* sanitizer_common: fix and re-enable signal_segv_handler testDmitry Vyukov2015-06-291-2/+3
| | | | | | | | | struct sigaction was not initialized. As the result if SA_RESETHAND is set in sa_flags, then the handler is reset after first invocation leading to crash. Initialize struct sigaction to zero. Reviewed in http://reviews.llvm.org/D10803 llvm-svn: 240965
* [libsanitizer] Replace ReadBinaryName() with ReadBinaryNameCached(),Alexander Potapenko2015-06-294-3/+16
| | | | | | | | | which caches the executable name upon the first invocation. This is necessary because Google Chrome (and potentially other programs) restrict the access to /proc/self/exe on linux. This change should fix https://code.google.com/p/chromium/issues/detail?id=502974 llvm-svn: 240960
* tsan: implement suppressions for top frame onlyDmitry Vyukov2015-06-294-13/+83
| | | | | | | | | | The new suppression type is called "race_top" and is matched only against top frame in report stacks. This is required for situations when we want to suppress a race in a "thread pool" or "event loop" implementation. If we simply use "race:ThreadPool::Execute" suppression, that can suppress everything in the program. Reviewed in http://reviews.llvm.org/D10686 llvm-svn: 240949
* tsan: fix flaky testDmitry Vyukov2015-06-291-4/+24
| | | | | | See the comment for explanation. llvm-svn: 240943
* [msan] Fix infinite recursion when _Unwind_Backtrace calls memcpyJay Foad2015-06-271-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: On PPC64, half the msan tests fail with an infinite recursion through GetStackTrace like this: #0 __msan::GetStackTrace #1 __msan_memcpy #2 ?? () from /lib64/libgcc_s.so.1 #3 ?? () from /lib64/libgcc_s.so.1 #4 _Unwind_Backtrace #5 __sanitizer::BufferedStackTrace::SlowUnwindStack #6 __sanitizer::BufferedStackTrace::Unwind #7 __msan::GetStackTrace #8 __interceptor_calloc #9 _dl_allocate_tls #10 pthread_create@@GLIBC_2.17 #11 __interceptor_pthread_create #12 main The problem is that we call _Unwind_Backtrace to get a stack trace; but _Unwind_Backtrace calls memcpy, which we intercept and try to get another stack trace. This patch fixes it in __msan_memcpy by skipping the stack trace if IsInSymbolizer(). This works because GetStackTrace already creates a SymbolizerScope to "block reports from our interceptors during _Unwind_Backtrace". Reviewers: samsonov, wschmidt, eugenis Reviewed By: eugenis Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10762 llvm-svn: 240878
* [asan] Disable 3 tests on Android.Evgeniy Stepanov2015-06-263-1/+8
| | | | | | Different reasons for failing; see source file comments. llvm-svn: 240858
* [asan] Add -pie to uninstrumented executables on interface_test.ccEvgeniy Stepanov2015-06-261-2/+2
| | | | | | This helps Android (which only support PIE) and does not hurt anything else. llvm-svn: 240857
* [asan] Enable 2 tests on Android.Evgeniy Stepanov2015-06-262-8/+0
| | | | | | Due to bionic improvements and "recent" sized-delete changes in clang. llvm-svn: 240856
* [asan] Disable -O1,-O2,-O3 in clang_gcc_abi.cc test.Evgeniy Stepanov2015-06-261-3/+4
| | | | | | | A workaround for PR23971. Fixes the test on Android. llvm-svn: 240855
* [asan] Disable glibc-specific code chunk on Android.Evgeniy Stepanov2015-06-261-1/+1
| | | | | | Fixes quarantine_size_mb.cc test on the Android bot. llvm-svn: 240854
* [asan] Link sanitizer_common tests on Android as -pie.Evgeniy Stepanov2015-06-261-0/+4
| | | | llvm-svn: 240825
* [ASan] Clean up obsolete stats.Alexey Samsonov2015-06-264-18/+6
| | | | | | | | Remove stats that we no longer collect after the allocator change. Use proper constant SizeClassMap::kNumClasses to fix potential buffer overflow (https://code.google.com/p/address-sanitizer/issues/detail?id=397). llvm-svn: 240816
* [libsanitizer] Delete the unused GetBinaryName() function.Alexander Potapenko2015-06-262-5/+0
| | | | llvm-svn: 240767
* [asan] Do not unset DYLD_ROOT_PATH before calling atos on DarwinAnna Zaks2015-06-253-7/+26
| | | | | | | | | | | | | | | | | We were unsetting DYLD_ROOT_PATH before calling atos on Darwin in order to address it not working for symbolicating 32 bit binaries. (atos essentiall tries to respawn as a 32 bit binary and it's disallowed to respawn if DYLD_ROOT_PATH is set ... ) However, processes rely on having DYLD_ROOT_PATH set under certain conditions, so this is not the right fix. In particular, this always crashes when running ASanified process under the debugger in Xcode with iOS simulator, which is a very important workflow for us to support. This patch reverts the unsetting of the DYLD_ROOT_PATH. The correct fix to the misbehavior on 32-bit binaries should happen inside atos. http://reviews.llvm.org/D10722 llvm-svn: 240724
* [msan] Teach sanitizers about the PPC64 ptrace syscallJay Foad2015-06-254-9/+19
| | | | | | | | | | | | | | | | | Summary: This fixes test/msan/Linux/syscalls.cc, and should also fix the ppc64 sanitizer buildbots which are currently failing in "make check-sanitizer". Reviewers: samsonov, wschmidt, eugenis Reviewed By: eugenis Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10734 llvm-svn: 240692
* [msan] Fix SetShadow for mappings at the end of the application address spaceJay Foad2015-06-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | Summary: On PPC64 if you disable ASLR (or run under gdb) you're likely to see mmap returning a mapping right at the end of the application address space region. This caused SetShadow to call MEM_TO_SHADOW() on the last+1 address in the region, which seems wrong to me; how can MEM_TO_SHADOW() distinguish this from the first address in the following region? Fixed by only calling MEM_TO_SHADOW() once, on the start address. Reviewers: samsonov, wschmidt, eugenis Reviewed By: eugenis Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10735 llvm-svn: 240690
OpenPOWER on IntegriCloud