summaryrefslogtreecommitdiffstats
path: root/compiler-rt
Commit message (Collapse)AuthorAgeFilesLines
* [ARM][Compiler-rt] Fix AEABI builtins to correctly pass arguments to ↵Oleg Ranevskyy2017-08-232-0/+18
| | | | | | | | | | | | | | | | | | | non-AEABI functions on HF targets Summary: This is a patch for PR34167. On HF targets functions like `__{eq,lt,le,ge,gt}df2` and `__{eq,lt,le,ge,gt}sf2` expect their arguments to be passed in d/s registers, while some of the AEABI builtins pass them in r registers. Reviewers: compnerd, peter.smith, asl Reviewed By: peter.smith, asl Subscribers: peter.smith, aemerson, dberris, javed.absar, llvm-commits, asl, kristof.beyls Differential Revision: https://reviews.llvm.org/D36675 llvm-svn: 311555
* [XRay][compiler-rt] Support sled versioning for custom event sledsDean Michael Berris2017-08-235-22/+85
| | | | | | | | | | | | | | | | | | | | | | Summary: This change introduces versions to the instrumentation map entries we emit for XRay instrumentaiton points. The status quo for the version is currently set to 0 (as emitted by the LLVM back-end), and versions will count up to 255 (unsigned char). This change is in preparation for supporting the newer version of the custom event sleds that will be emitted by the LLVM compiler. While we're here, we take the opportunity to stash more registers and align the stack properly in the __xray_CustomEvent trampoline. Reviewers: kpw, pcc, dblaikie Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D36816 llvm-svn: 311524
* [profile] Fix warning about C++ style comment in C fileHans Wennborg2017-08-221-8/+8
| | | | llvm-svn: 311496
* [esan] Use stack_t instead of struct sigaltstack (PR34011)Hans Wennborg2017-08-221-1/+1
| | | | | | | | | The struct tag is going away in soon-to-be-released glibc 2.26 and the stack_t typedef seems to have been there forever. Patch by Bernhard Rosenkraenzer! llvm-svn: 311495
* [SanitizerCoverage] Optimize stack-depth instrumentation.Matt Morehouse2017-08-222-5/+5
| | | | | | | | | | | | | | | | Summary: Use the initialexec TLS type and eliminate calls to the TLS wrapper. Fixes the sanitizer-x86_64-linux-fuzzer bot failure. Reviewers: vitalybuka, kcc Reviewed By: kcc Subscribers: hiraditya, llvm-commits Differential Revision: https://reviews.llvm.org/D37026 llvm-svn: 311490
* [libFuzzer] Move check for thread_local back into libFuzzer's CMake,George Karpenkov2017-08-222-10/+10
| | | | | | as it breaks builtin standalone build on some bots. llvm-svn: 311482
* [libFuzzer] disable a test failing on the botKostya Serebryany2017-08-221-3/+4
| | | | llvm-svn: 311427
* Revert "builtins: erase `struct` modifier for EH personality"Saleem Abdulrasool2017-08-221-25/+17
| | | | | | | | This reverts SVN r311425 which broke one of the buildbots. It is unclear what header is being used there. Revert it until that can be handled properly. llvm-svn: 311426
* builtins: erase `struct` modifier for EH personalitySaleem Abdulrasool2017-08-221-17/+25
| | | | | | | | | On ARM, the `_Unwind_Exception` is an alias for `struct _Unwind_Control_Block`. The extra `struct` modifier causes a warning due to the locally scoped type. Special case this to avoid the warning. NFC. llvm-svn: 311425
* [libFuzzer] fix the stack-depth initialization, add a lit test for ↵Kostya Serebryany2017-08-222-1/+7
| | | | | | DeepRecursionTest.cpp llvm-svn: 311421
* [libFuzzer] apply changes lost during the migration to compiler-rtKostya Serebryany2017-08-226-32/+108
| | | | llvm-svn: 311420
* [NFC] do not run linter on libFuzzer's tests.George Karpenkov2017-08-221-0/+1
| | | | llvm-svn: 311419
* [libFuzzer] better README.txtKostya Serebryany2017-08-221-2/+1
| | | | llvm-svn: 311418
* [libFuzzer] remove stale fileKostya Serebryany2017-08-221-122/+0
| | | | llvm-svn: 311417
* Remove check-fuzzer from check-all, as tests don't pass on some bots.George Karpenkov2017-08-221-0/+2
| | | | llvm-svn: 311415
* Move libFuzzer to compiler_rt.George Karpenkov2017-08-21201-5/+11012
| | | | | | | | | Resulting library binaries will be named libclang_rt.fuzzer*, and will be placed in Clang toolchain, allowing redistribution. Differential Revision: https://reviews.llvm.org/D36908 llvm-svn: 311407
* Fix ASan version list dependency in multi-arch builds.Evgeniy Stepanov2017-08-211-5/+6
| | | | | | | | Fixes PR32390. Patch by Andrey Krayniak. llvm-svn: 311394
* [sanitizer] Do not over-dup string flagsKostya Kortchinsky2017-08-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: String flags values appear to be duped twice. Once in `FlagParser::parse_flag` using the `LowLevelAllocator` via `ll_strndup`, once in `FlagHandler<const char *>::Parse` using the `InternalAllocator` via `internal_strdup`. It looks like the second one is redundant, as the memory for the first one is never freed and not used for anything else. Assigning the value to the flag instead of duping it has a few advantages: - if it was the only use of the `InternalAllocator` (which is the case for Scudo), then the related code will not be compiled it, which saves us a whole instantiation of the CombinedAllocator worth of extra code; - in the event a string flag is parsed, the `InternalAllocator` would have created a whole SizeClassAllocator32 region for a single allocation, which is kind of wasteful. - also, the string is dup'ed twice for the whole lifetime of a process. I tested check-{sanitizer,asan,tsan,ubsan,scudo} successfully, so as far as I can tell this doesn't appear to have bad side effects. Reviewers: eugenis, alekseyshl Reviewed By: eugenis Subscribers: kubamracek, llvm-commits Differential Revision: https://reviews.llvm.org/D36970 llvm-svn: 311386
* [NFC CMake] Do not relink test targets every time in compiler-rtGeorge Karpenkov2017-08-211-6/+9
| | | | | | | | | | | | | CMake's add_custom_target is considered to be *always* out of date. This patch changes it to a combination of add_custom_target and add_custom_command which actually tracks dependencies' timestamps. On my machine this reliably saves 6-7 seconds on each test group. This can be a large difference when debugging small tests. Differential Revision: https://reviews.llvm.org/D36912 llvm-svn: 311384
* Fix multi-architecture build for lib/xray.George Karpenkov2017-08-211-1/+1
| | | | | | Differential Revision: https://reviews.llvm.org/D36881 llvm-svn: 311379
* Remove "%T" from ASan Darwin tests.Kuba Mracek2017-08-203-23/+19
| | | | llvm-svn: 311298
* [TSan] Update test valuesVlad Tsyrklevich2017-08-181-1/+9
| | | | | | | | | | | | | | | | | Summary: This test was broken by the tail duplication logic being changed in r311139, update the test values and add a note about how to properly run a benchmark to verify that the values are safe to update. Reviewers: vitalybuka Reviewed By: vitalybuka Subscribers: dvyukov, kubamracek Differential Revision: https://reviews.llvm.org/D36889 llvm-svn: 311189
* [SanitizerCoverage] Add stack depth tracing instrumentation.Matt Morehouse2017-08-181-0/+32
| | | | | | | | | | | | | | | | | | | | | | Summary: Augment SanitizerCoverage to insert maximum stack depth tracing for use by libFuzzer. The new instrumentation is enabled by the flag -fsanitize-coverage=stack-depth and is compatible with the existing trace-pc-guard coverage. The user must also declare the following global variable in their code: thread_local uintptr_t __sancov_lowest_stack https://bugs.llvm.org/show_bug.cgi?id=33857 Reviewers: vitalybuka, kcc Reviewed By: vitalybuka Subscribers: kubamracek, hiraditya, cfe-commits, llvm-commits Differential Revision: https://reviews.llvm.org/D36839 llvm-svn: 311186
* [XRay][compiler-rt][NFC] Expand the PIC test case for XRayDean Michael Berris2017-08-181-1/+2
| | | | | | | | | | | | | Summary: Here we add a build with -ffunction-sections -fdata-sections and -Wl,--gc-sections to ensure that we're still able to generate XRay traces. This is just adding a test, no functional changes. Differential Revision: https://reviews.llvm.org/D36863 llvm-svn: 311145
* Add C++17 aligned new/delete interceptors to standalone lsanFrancis Ricci2017-08-161-3/+46
| | | | | | | | | | | | Summary: Based on r282019. Reviewers: kcc, jakubjelinek, alekseyshl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D36757 llvm-svn: 311030
* [scudo] Application & platform compatibility changesKostya Kortchinsky2017-08-166-59/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch changes a few (small) things around for compatibility purposes for the current Android & Fuchsia work: - `realloc`'ing some memory that was not allocated with `malloc`, `calloc` or `realloc`, while UB according to http://pubs.opengroup.org/onlinepubs/009695399/functions/realloc.html is more common that one would think. We now only check this if `DeallocationTypeMismatch` is set; change the "mismatch" error messages to be more homogeneous; - some sketchily written but widely used libraries expect a call to `realloc` to copy the usable size of the old chunk to the new one instead of the requested size. We have to begrundingly abide by this de-facto standard. This doesn't seem to impact security either way, unless someone comes up with something we didn't think about; - the CRC32 intrinsics for 64-bit take a 64-bit first argument. This is misleading as the upper 32 bits end up being ignored. This was also raising `-Wconversion` errors. Change things to take a `u32` as first argument. This also means we were (and are) only using 32 bits of the Cookie - not a big thing, but worth mentioning. - Includes-wise: prefer `stddef.h` to `cstddef`, move `scudo_flags.h` where it is actually needed. - Add tests for the memalign-realloc case, and the realloc-usable-size one. (Edited typos) Reviewers: alekseyshl Reviewed By: alekseyshl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D36754 llvm-svn: 311018
* Quickfix to the refactoring commit: typo in the link flags variableGeorge Karpenkov2017-08-151-1/+1
| | | | | | name. llvm-svn: 310973
* [sanitizers CMake] NFC Refactor the logic for compiling and generating testsGeorge Karpenkov2017-08-156-239/+190
| | | | | | | | | | | | | | | | | | | | | | | | | | into a function. Most CMake configuration under compiler-rt/lib/*/tests have almost-the-same-but-not-quite functions of the form add_X_[unit]tests for compiling and running the tests. Much of the logic is duplicated with minor variations across different sub-folders. This can harm productivity for multiple reasons: For newcomers, resulting CMake files are very large, hard to understand, and hide the intention of the code. Changes for enabling certain architectures end up being unnecessarily large, as they get duplicated across multiple folders. Adding new sub-projects requires more effort than it should, as a developer has to again copy-n-paste the configuration, and it's not even clear from which sub-project it should be copy-n-pasted. With this change the logic of compile-and-generate-a-set-of-tests is extracted into a function, which hopefully makes writing and reading CMake much easier. Differential Revision: https://reviews.llvm.org/D36116 llvm-svn: 310971
* [CMake compiler-rt] NFC: Minor CMake refactoring.George Karpenkov2017-08-152-8/+7
| | | | | | | | | Detect ObjC files in `clang_compile` and pass an appropriate flag to a compiler, also change `clang_compile` to a function. Differential Revision: https://reviews.llvm.org/D36727 llvm-svn: 310945
* [compiler-rt CMake] NFC: Minor CMake refactoring.George Karpenkov2017-08-151-9/+6
| | | | | | | | | | Change macro to a function, and use a generic variable instead of branching for handling multi-output build with CMAKE_CONFIGURATION_TYPES. Differential Revision: https://reviews.llvm.org/D36725 llvm-svn: 310944
* [compiler-rt CMake] CMake refactoring: create directories in helper func.George Karpenkov2017-08-152-10/+7
| | | | | | | | | Change macro to a function, move creating test directory into `add_compiler_rt_test`. Differential Revision: https://reviews.llvm.org/D36724 llvm-svn: 310943
* Revert: Enable profile on NetBSDKamil Rytarowski2017-08-152-2/+2
| | | | | | | | Requested by V.Kumar. Not all tests pass. llvm-svn: 310912
* Revert r310857 due to internal test failureXinliang David Li2017-08-153-36/+13
| | | | llvm-svn: 310907
* [builtins] fix build error on non-ARM for r310884Weiming Zhao2017-08-141-0/+2
| | | | llvm-svn: 310890
* [builtins][ARM] Select correct code fragments when compiling for ↵Weiming Zhao2017-08-1416-128/+95
| | | | | | | | | | | | | | | | | | | | | | | | | Thumb1/Thum2/ARM ISA Summary: Value of __ARM_ARCH_ISA_THUMB isn't based on the actual compilation mode (-mthumb, -marm), it reflect's capability of given CPU. Due to this: •use tbumb and thumb2 insteand of __ARM_ARCH_ISA_THUMB •use '.thumb' directive consistently in all affected files •decorate all thumb functions using DEFINE_COMPILERRT_THUMB_FUNCTION() (This is based off Michal's patch https://reviews.llvm.org/D30938) Reviewers: dim, rengolin, compnerd, strejda Reviewed By: compnerd Subscribers: peter.smith, kubamracek, mgorny, javed.absar, kristof.beyls, jamesduley, aemerson, llvm-commits Differential Revision: https://reviews.llvm.org/D31220 llvm-svn: 310884
* Fix a cmake typo.Evgeniy Stepanov2017-08-141-2/+2
| | | | | | Also add "libc++" to list of property values (AFAIK that only affects the cmake gui). llvm-svn: 310883
* [PGO] Add support for relocate profile dumping directoryXinliang David Li2017-08-143-13/+36
| | | | | | Differential Revsion: http://reviews.llvm.org/D36648 llvm-svn: 310857
* [sanitizers] Add a blocking boolean to GetRandom prototypeKostya Kortchinsky2017-08-146-23/+39
| | | | | | | | | | | | | | | | | | | | | | Summary: On platforms with `getrandom`, the system call defaults to blocking. This becomes an issue in the very early stage of the boot for Scudo, when the RNG source is not set-up yet: the syscall will block and we'll stall. Introduce a parameter to specify that the function should not block, defaulting to blocking as the underlying syscall does. Update Scudo to use the non-blocking version. Reviewers: alekseyshl Reviewed By: alekseyshl Subscribers: llvm-commits, kubamracek Differential Revision: https://reviews.llvm.org/D36399 llvm-svn: 310839
* [llvm-cov] Fix compiler-rt tests failing in build bots after rL310827.Sean Eveson2017-08-144-6/+6
| | | | | | | The compiler-rt tests used llvm-cov with -filename-equivelence, which was replaced with the new option -path-equivalence in rL310827. llvm-svn: 310836
* Enable profile on NetBSDKamil Rytarowski2017-08-132-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: make check-profile: Failing Tests (2): Profile-i386 :: instrprof-dlopen.test Profile-x86_64 :: instrprof-dlopen.test Expected Passes : 64 Unsupported Tests : 42 Unexpected Failures: 2 Sponsored by <The NetBSD Foundation> Reviewers: joerg, vitalybuka, kcc, filcab, fjricci Reviewed By: vitalybuka Subscribers: vsk, llvm-commits, srhines, mgorny, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36603 llvm-svn: 310800
* [compiler-rt] Add SANITIZER_CXX_ABI_LIBNAME=libc++ option.Evgeniy Stepanov2017-08-111-0/+2
| | | | | | | | | | | | Summary: This is to support Android where libc++abi is part of libc++. Reviewers: srhines, EricWF Subscribers: dberris, mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D36640 llvm-svn: 310769
* Enable ASAN on NetBSDKamil Rytarowski2017-08-101-3/+2
| | | | | | | | | | | | | | | | | | | Summary: This enables also static runtime option. Sponsored by <The NetBSD Foundation> Reviewers: joerg, vitalybuka, filcab, kcc, fjricci Reviewed By: vitalybuka Subscribers: mgorny, llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36490 llvm-svn: 310651
* Add NetBSD support in asan_linux.ccKamil Rytarowski2017-08-101-2/+15
| | | | | | | | | | | | | | | | | | | Summary: Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas. Sponsored by <The NetBSD Foundation> Reviewers: fjricci, vitalybuka, joerg, kcc, filcab Reviewed By: vitalybuka Subscribers: llvm-commits, kubamracek, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36488 llvm-svn: 310647
* Enable SafeStack on NetBSDKamil Rytarowski2017-08-103-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: make check-safestack: -- Testing: 8 tests, 8 threads -- Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. Testing Time: 0.44s Expected Passes : 7 Unsupported Tests : 1 Sponsored by <The NetBSD Foundation> Reviewers: joerg, vitalybuka, kcc, fjricci, filcab Reviewed By: vitalybuka Subscribers: mgorny, llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36542 llvm-svn: 310646
* [sanitizer_common] Update sanitizers w.r.t. the new comparisons ↵Alexander Potapenko2017-08-104-0/+20
| | | | | | | | | | | instrumentation API Added declarations of __sanitizer_cov_trace_const_cmp[1248] callbacks. For more details, please see https://reviews.llvm.org/D36465. Patch by Victor Chibotaru. llvm-svn: 310596
* [compiler-rt][ARM] Fix filtering of ARM targetsOleg Ranevskyy2017-08-101-2/+6
| | | | | | | | | | | | | | | | | Summary: Similarly to i686, the ARM build target has multiple names, such as armhf, armv7 and so on. Currently we get duplicated symbol definitions for these targets while compiling the library. Each duplicated definition has its generic version from `lib/builtins` and an ARM-specialized version from `lib/builtins/arm`. This patch fixes filtering for ARM to ignore the generic definitions if they have their ARM specializations. Reviewers: compnerd Reviewed By: compnerd Subscribers: aemerson, dberris, llvm-commits, mgorny, asl, kristof.beyls Differential Revision: https://reviews.llvm.org/D35336 llvm-svn: 310588
* [asan] Refactor thread creation bookkeepingVitaly Buka2017-08-095-23/+53
| | | | | | | | | | | | | | | | | | | | | | | | Summary: This is a pure refactoring change. It paves the way for OS-specific implementations, such as Fuchsia's, that can do most of the per-thread bookkeeping work in the creator thread before the new thread actually starts. This model is simpler and cleaner, avoiding some race issues that the interceptor code for thread creation has to do for the existing OS-specific implementations. Submitted on behalf of Roland McGrath. Reviewers: vitalybuka, alekseyshl, kcc Reviewed By: alekseyshl Subscribers: phosek, filcab, llvm-commits, kubamracek Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36385 llvm-svn: 310432
* [asan] Complete the Fuchsia portVitaly Buka2017-08-0910-7/+248
| | | | | | | | | | | | | | | | Submitted on behalf of Roland McGrath. Reviewers: kcc, eugenis, alekseyshl, vitalybuka Reviewed By: vitalybuka Subscribers: filcab, vitalybuka, srhines, kubamracek, mgorny, phosek, llvm-commits Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D35865 llvm-svn: 310431
* Try to appease compiler and break multiline comment.Kamil Rytarowski2017-08-081-2/+2
| | | | llvm-svn: 310428
* [winasan] Fix hotpatching ntdll!strcpy for Win10 creators editionReid Kleckner2017-08-081-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | The 9 byte nop is a suffix of the 10 byte nop, and we need at most 6 bytes. ntdll's version of strcpy is written in assembly and is very clever. strcat tail calls strcpy but with a slightly different arrangement of argument registers at an alternate entry point. It looks like this: ntdll!strcpy: 00007ffd`64e8a7a0 4c8bd9 mov r11,rcx ntdll!__entry_from_strcat_in_strcpy: 00007ffd`64e8a7a3 482bca sub rcx,rdx 00007ffd`64e8a7a6 f6c207 test dl,7 If we overwrite more than two bytes in our interceptor, that label will no longer be a valid instruction boundary. By recognizing the 9 byte nop, we use the two byte backwards branch to start our trampoline, avoiding this issue. Fixes https://github.com/google/sanitizers/issues/829 Patch by David Major llvm-svn: 310419
OpenPOWER on IntegriCloud