summaryrefslogtreecommitdiffstats
path: root/compiler-rt
Commit message (Collapse)AuthorAgeFilesLines
* Use binary write mode in WriteToFile function to avoid appended \r ↵Vitaly Buka2019-04-053-1/+38
| | | | | | | | | | | | | | | | | | | | | characters on Windows Summary: When using libfuzzer on Windows, in the contents of a crash sample, bytes that can be mistaken for a \n are replaced by a \r\n sequence. As a consequence, crashes are not reproducible. This patch will open files in binary mode to fix this issue. The patch does not affect POSIX systems. Patch by tuktuk Reviewers: kcc, vitalybuka Reviewed By: vitalybuka Subscribers: dexonsmith, jdoerfert, llvm-commits, #sanitizers Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D60008 llvm-svn: 357807
* [Sanitizers] Provide __internal_dup on SolarisRainer Orth2019-04-051-0/+4
| | | | | | | | | | | | | | | | | | | | Both LLVM 8.0.0 and current trunk fail to link libclang_rt.ubsan.standalone-*.so on Solaris 11/x86 with GCC 8.1.0: Undefined first referenced symbol in file Scanning dependencies of target clang_rt.asan_cxx-x86_64 __sanitizer::internal_dup(int) ../sanitizer_common/CMakeFiles/RTSanitizerCommon.i386.dir/sanitizer_posix.cc.o ld: fatal: symbol referencing errors collect2: error: ld returned 1 exit status make[2]: *** [projects/compiler-rt/lib/ubsan/CMakeFiles/clang_rt.ubsan_standalone-dynamic-i386.dir/build.make:233: lib/clang/9.0.0/lib/sunos/libclang_rt.ubsan_standalone-i386.so] Error 1 Fixed by providing an implementation, which allowed the i386-pc-solaris2.11 build to finish. Differential Revision: https://reviews.llvm.org/D60045 llvm-svn: 357753
* [Sanitizers] Fix sanitizer_linux_libcdep.cc compilation on SolarisRainer Orth2019-04-051-0/+1
| | | | | | | | | | | | | | | | | | | | | Both LLVM 8.0.0 and current trunk fail to compile on Solaris 11/x86 with GCC 8.1.0: /vol/llvm/src/llvm/dist/projects/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc: In function ‘void __sanitizer::ReExec()’: /vol/llvm/src/llvm/dist/projects/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc:831:14: error: ‘getexecname’ was not declared in this scope pathname = getexecname(); ^~~~~~~~~~~ /vol/llvm/src/llvm/dist/projects/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc:831:14: note: suggested alternative: ‘gethostname’ pathname = getexecname(); ^~~~~~~~~~~ gethostname This is easily fixed by including <stdlib.h> which declares that function. With that patch, compilation continues. Differential Revision: https://reviews.llvm.org/D60044 llvm-svn: 357751
* [TSan][libdispatch] Make test work on Linux, pt. 2Julian Lettner2019-04-051-2/+2
| | | | llvm-svn: 357741
* [libFuzzer] Another follow up fix for Data Flow scripts in Py3.Max Moroz2019-04-041-2/+6
| | | | | | | | | | | | | | Reviewers: Dor1s Reviewed By: Dor1s Subscribers: delcypher, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D60289 llvm-svn: 357732
* [libFuzzer] Fix output format in data flow merge script after Py3 change.Max Moroz2019-04-041-1/+1
| | | | | | | | | | | | | | Reviewers: Dor1s Reviewed By: Dor1s Subscribers: delcypher, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D60288 llvm-svn: 357730
* [TSan][libdispatch] Make test work on LinuxJulian Lettner2019-04-041-3/+4
| | | | llvm-svn: 357729
* Remove unneeded ymath.h include from int_math.hReid Kleckner2019-04-041-1/+0
| | | | | | | | | | | | This avoids a conflict between stdbool.h, which defines bool to _Bool in xkeycheck.h. From what I can tell, ymath.h is an internal header, and the intention is that users should include math.h directly instead. It doesn't appear to provide declarations of anything required for our builtins. This include was added back in r249513 from 2015, and it's possible that ymath.h provided something this code needed at the time, but today it does not. llvm-svn: 357728
* [TSan][libdispatch] Stricter checks via `--implicit-check-not`Julian Lettner2019-04-047-16/+8
| | | | | | | | `--implicit-check-not='ThreadSanitizer'` checks in the entire output while `// CHECK-NOT: ThreadSanitizer` only checks after (before) the previous (next) match. llvm-svn: 357727
* [libFuzzer] Make DataFlow scripts Python3 compatible.Max Moroz2019-04-042-6/+8
| | | | | | | | | | | | | | | | | | | Summary: Python2 will hit end of life soon: https://pythonclock.org/ This change also makes the integration with OSS-Fuzz a bit simpler: https://github.com/google/oss-fuzz/issues/1632 Reviewers: morehouse, kcc Reviewed By: morehouse Subscribers: delcypher, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D60282 llvm-svn: 357726
* [winasan] Fix strrchr interception with vs2019 CRTReid Kleckner2019-04-041-0/+2
| | | | | | | | | | | | | | strrchr in vs2019 CRT begins with unrecognized instructions. VCRUNTIME140!strrchr: 4533c9 xor r9d, r9d 4c8bc1 mov r8, rcx Patch by Christopher Reid! Differential Revision: https://reviews.llvm.org/D60217 llvm-svn: 357725
* [TSan][libdispatch] Specify libdispatch header dir for lit testsJulian Lettner2019-04-043-11/+14
| | | | | | | | | Specify libdispatch header dir (include path) for lit tests. This is the last missing piece in order to run the libdispatch tests on Linux even when libdispatch is installed in a custom path instead of a default (system) location. llvm-svn: 357707
* [NFC][TSan][libdispatch] Better CMake variable namesJulian Lettner2019-04-044-8/+8
| | | | llvm-svn: 357664
* [TSan][libdispatch] Add Cmake option for libdispatch install pathJulian Lettner2019-04-041-12/+5
| | | | llvm-svn: 357657
* Fix typos in tests. NFC.Xing GUO2019-04-031-1/+1
| | | | | | | | | | | | | | Reviewers: Higuoxing Reviewed By: Higuoxing Subscribers: kubamracek, cfe-commits, #sanitizers, llvm-commits Tags: #clang, #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D60183 llvm-svn: 357577
* [NFC][TSan][libdispatch] Cleanup testJulian Lettner2019-04-021-6/+6
| | | | llvm-svn: 357530
* [NFC] Test is C++, not CJulian Lettner2019-04-021-0/+0
| | | | llvm-svn: 357524
* [TSan][libdispatch] We don't require any setup on DarwinJulian Lettner2019-04-021-1/+1
| | | | llvm-svn: 357519
* [NFC][libdispatch] Improve a few testsJulian Lettner2019-04-023-6/+7
| | | | llvm-svn: 357510
* Fix problem with ar_to_bc.sh script introduced by r357450.Peter Collingbourne2019-04-021-2/+2
| | | | | | | The new code wasn't matching absolute paths correctly. Should unbreak sanitizer-x86_64-linux bot. llvm-svn: 357502
* Fix tests after r357452Hans Wennborg2019-04-022-4/+4
| | | | llvm-svn: 357462
* ar_to_bc.sh: replace readlink -f with custom relative path resolutionFangrui Song2019-04-021-2/+2
| | | | | | | | | | llvm-ar is a crunchgen-style executable dispatching to dlltool,ranlib,lib,ar based on argv[0]. In our content-addressable storage, readlink -f resolves paths to some digest and thus lost the original "llvm-ar" filename. Replace it with a custom path resolution to fix the problem. llvm-svn: 357450
* [compiler-rt][test] Make instrprof-set-dir-mode test tolerant of group IDMatt Davis2019-04-021-1/+5
| | | | | | | | | | | | | | | | | | | Patch from 'troyj': Hi, I ran into a problem with this test when the source was located in certain directories. The mkdir(2) man page states that the set-group-ID bit is inherited from the parent directory, but this test was written in such a way that it assumes the bit is unset. Whether that assumption is true depends on where the checkout lives, which leads to some people being able to reproduce the problem whereas others cannot. I think the correct fix is to exclude the bit from the check. Making probinson a reviewer since they reviewed the original test. Patch landed for troyj, thanks! Differential Revision: D53832 llvm-svn: 357449
* [cmake] Change deprecated $<CONFIG> to $<CONFIGURATION>. NFCFangrui Song2019-03-301-1/+1
| | | | | | | See rL357338 for a similar change. The informational expression $<CONFIGURATION> has been deprecated since CMake 3.0 llvm-svn: 357348
* [Sanitizer] Add interceptor for wctombPavel Labath2019-03-294-0/+50
| | | | | | | | | | | | | | | | | Summary: This is required to avoid msan false positives for code using this function (although generally one should avoid using this function in favor of wcrtomb). Reviewers: eugenis, EricWF, vitalybuka Subscribers: srhines, kubamracek, fedor.sergeev, delcypher, llvm-commits, #sanitizers Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D59548 llvm-svn: 357240
* Revert "[builtins] Rounding mode support for addxf3/subxf3"Yi Kong2019-03-2714-241/+16
| | | | | | | | This reverts commit 2cabea054e40ae2837da959d0ca89ae25cf1b1f1. Test failure on buildbots. llvm-svn: 357048
* [builtins] Rounding mode support for addxf3/subxf3Yi Kong2019-03-2614-16/+241
| | | | | | | | | | | | | | | | | Implement rounding mode support for addxf3/subxf3. On architectures that implemented the support, this will access the corresponding floating point environment register to apply the correct rounding. For other architectures, it will keep the current behaviour and use IEEE-754 default rounding mode (to nearest, ties to even). ARM32/AArch64 support implemented in this change. i386 and AMD64 will be added in a follow up change. Differential Revision: https://reviews.llvm.org/D57143 llvm-svn: 357035
* Fix typos in compiler-rt/lib/builtins/atomic.cHubert Tong2019-03-231-1/+10
| | | | | | | | | | | | | | | | | | | Summary: This patch fixes typos in file compiler-rt/lib/builtins/atomic.c. Reviewers: jasonliu, hubert.reinterpretcast, jfb Reviewed By: jfb Subscribers: t.p.northover, theraven, dberris, jfb, jdoerfert, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D59228 Patch by Xing Xue. llvm-svn: 356844
* [NFC][TSan][libdispatch] Don't use ignore_noninstrumented_modules on LinuxJulian Lettner2019-03-221-3/+0
| | | | llvm-svn: 356728
* Enable `asan/TestCases/Posix/start-deactivated.cc` test for iOS.Dan Liew2019-03-212-2/+1
| | | | | | | | | | | | | | | | | | | Summary: To make this test pass it was necesary to change `iossim_run.py` to propagate the `ASAN_ACTIVATION_OPTIONS` environment variable into the testing environment. rdar://problem/49114807 Reviewers: kubamracek, yln, serge-sans-paille Subscribers: #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D59660 llvm-svn: 356701
* Make __cpu_model a hidden symbol, to match libgcc.Sterling Augustine2019-03-201-0/+10
| | | | | | | | | | | | | | | Also hide __cpu_inicator_init and __cpu_features2 for similar reasons. Summary: Make __cpu_model a hidden symbol, to match libgcc. Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59561 llvm-svn: 356581
* [scudo][standalone] Add error reportsKostya Kortchinsky2019-03-206-37/+339
| | | | | | | | | | | | | | | | | | | | | Summary: This change adds fatal error messages for various error conditions that will be added later in the code. This also addresses a `TODO` now that we have `reportCheckFailed` (which lead me to notice a few variables that were not cased properly so I changed that as well). Reviewers: morehouse, hctim, vitalybuka Reviewed By: morehouse, hctim, vitalybuka Subscribers: mgorny, delcypher, jfb, jdoerfert, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D59551 llvm-svn: 356556
* [builtins] Divide shouldn't underflow if rounded result would be normal.Eli Friedman2019-03-196-2/+133
| | | | | | | | | | | We were treating certain edge cases that are actually normal as denormal results, and flushing them to zero; we shouldn't do that. Not sure this is the cleanest way to implement this edge case, but I wanted to avoid adding any code on the common path. Differential Revision: https://reviews.llvm.org/D59070 llvm-svn: 356529
* [TSan][libdispatch] Avoid infinite recursion in dispatch_apply[_f] interceptorsJulian Lettner2019-03-191-9/+29
| | | | | | | | | | | | | | | | | In libdispatch, dispatch_apply is implemented in terms of dispatch_apply_f. Unfortunately, this means that we can't implement the interceptor for dispatch_apply_f by forwarding to the dispatch_apply interceptor. In the interceptor dispatch_apply_f, we can't use WRAP(dispatch_apply). WRAP(dispatch_apply) -> REAL(dispatch_apply_f). Requires duplication of some setup code. Reviewed By: kubamracek Differential Revision: https://reviews.llvm.org/D59526 llvm-svn: 356467
* [scudo][standalone] Add string utility functionsKostya Kortchinsky2019-03-197-13/+385
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: Add some string utility functions, notably to format strings, get lengths, convert a string to a number. Those functions will be used in reports and flags (coming up next). They were mostly borrowed from sanitizer_common. Make use of the string length function in a couple places in the platform code that was checked in with inlined version of it. Add some tests. Reviewers: morehouse, eugenis, vitalybuka, hctim Reviewed By: morehouse, vitalybuka Subscribers: mgorny, delcypher, jdoerfert, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D59262 llvm-svn: 356457
* [asan] Disable -Wfortify-source in intentional OOB testsReid Kleckner2019-03-182-4/+4
| | | | | | Needed after r356397 llvm-svn: 356426
* [NFC][TSan][libdispatch] Fix test for dispatch_apply[_f]Julian Lettner2019-03-181-12/+18
| | | | | | | | | | | | | | | | * Array index out of bounds: 100 iterations, but size of array is 2. * Unmatched barrier_init (2) with barrier_wait (200) * Number of iterations must be smaller than the available parallelism for the queue, otherwise we deadlock (since every barrier_wait call blocks the thread). Scary: All of this worked reliably in gcd-apply.mm (for Darwin) Rievewed By: kubamracek Differential Revision: https://reviews.llvm.org/D59510 llvm-svn: 356418
* [TSan][libdispatch] Configure libdispatch lit testsJulian Lettner2019-03-161-1/+6
| | | | llvm-svn: 356311
* [CMake] Fix broken uses of `try_compile_only()` and improve the function.Dan Liew2019-03-153-4/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: There were existing calls to `try_compile_only()` with arguments not prefixed by `SOURCE` or `FLAGS`. These were silently being ignored. It looks like the `SOURCE` and `FLAGS` arguments were first introduced in r278454. One implication of this is that for a builtins only build for Darwin (see `darwin_test_archs()`) it would mean we weren't actually passing `-arch <arch>` to the compiler). This would result in compiler-rt claiming all supplied architectures could be targetted provided the compiler could build for Clang's default architecture. This patch fixes this in several ways. * Fixes all incorrect calls to `try_compile_only()`. * Adds code to `try_compile_only()` to check for unhandled arguments and raises a fatal error if this occurs. This should stop any incorrect calls in the future. * Improve the documentation on `try_compile_only()` which seemed completely wrong. rdar://problem/48928526 Reviewers: beanz, fjricci, dsanders, kubamracek, yln, dcoughlin Subscribers: mgorny, jdoerfert, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D59429 llvm-svn: 356295
* [TSan][libdispatch] Enable linking and running of tests on LinuxJulian Lettner2019-03-155-5/+26
| | | | | | | | | | | | | | | | | | | | | When COMPILER_RT_INTERCEPT_LIBDISPATCH is ON the TSan runtime library now has a dependency on the blocks runtime and libdispatch. Make sure we set all the required linking options. Also add cmake options for specifying additional library paths to instruct the linker where to search for libdispatch and the blocks runtime. This allows us to build TSan runtime with libdispatch support without installing those libraries into default linker library paths. `CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY` is necessary to avoid aborting the build due to failing the link step in CMake's check_c_compiler test. Reviewed By: dvyukov, kubamracek Differential Revision: https://reviews.llvm.org/D59334 llvm-svn: 356281
* [msan] Fix BMI2 detection in msan tests, take 2.Jonas Hahnfeld2019-03-151-1/+1
| | | | | | | It's not enough if only one bit is present, we need to check that both are set. This finally fixes the test failures for me. llvm-svn: 356242
* [NFC][TSan] Move libdispatch tests into their own subfolderJulian Lettner2019-03-1414-31/+18
| | | | | | | | | | | | | | | | | Remove 'gcd' file prefix. GCD stands for Grand Central Dispatch, which is another name for libdispatch. https://apple.github.io/swift-corelibs-libdispatch/ Remove `REQUIRE: dispatch` from tests. Also rename lit feature 'dispatch' -> 'libdispatch' to be more explicit what this is about. Reviewed By: kubamracek Differential Revision: https://reviews.llvm.org/D59341 llvm-svn: 356202
* [TSan][libdispatch] Remove dependency on system headersJulian Lettner2019-03-142-15/+75
| | | | | | | | | | | | | | | | | | | | | | | Including <dispatch/dispatch.h> and <Blocks.h> transitively pulls in other system headers. Let's try to avoid that. Blocks.h: compiler-rt already includes a blocks runtime. Just use the header file that comes with it. dispatch.h: Declare the bare minimum required for our implementation, i.e., everything needed to define the interceptors, but not the interceptors themselves. See tsan_dispatch_defs.h. I spotted a few other places in compile-rt, where we declare libdispatch types. Maybe this file can be moved to sanitizer_common if we deem it useful enough. tsan_libdispatch.cc now compiles on Linux/Clang (requires support for -fblocks). Linking still requires some manual configuration. Reviewed By: kubamracek Differential Revision: https://reviews.llvm.org/D59145 llvm-svn: 356201
* [HWASan] Use less Printf() calls in register dump.Mitch Phillips2019-03-141-16/+22
| | | | | | | | | | | | | | | | | | | | Summary: Explicitly print 4 registers/line in each iteration during register dump. Reduces logcat spam as we get a single logcat message per call to Printf(), even if the output isn't newline-terminated. This brings the output format in logcat closer to that of the normal textual dump. Reviewers: eugenis, pcc Reviewed By: pcc Subscribers: kubamracek, #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D59320 llvm-svn: 356166
* AddressSanitizer: 64-bit SPARC/Linux portVitaly Buka2019-03-123-1/+118
| | | | | | | | | | | | | | | | | | | Summary: This patch contains the bits required to make the AddressSanitizer work on SPARC64/Linux (SPARC-T4 and later). Patch by Eric Botcazou. Reviewers: #sanitizers, vitalybuka, krytarowski Reviewed By: #sanitizers, vitalybuka Subscribers: brad, vitalybuka, ro, jyknight, kubamracek, fedor.sergeev, jdoerfert, llvm-commits, #sanitizers Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D58434 llvm-svn: 355980
* AddressSanitizer: fix for SPARC with GCCVitaly Buka2019-03-121-0/+4
| | | | | | | | | | | | | | | | | | | Summary: This patch contains a fixlet for the AddressSanitizer on the SPARC with GCC, which would otherwise generate a problematic call to the intercepted memcpy routine. It was tested with GCC on SPARC/Solaris and SPARC/Linux. Patch by Eric Botcazou. Reviewers: #sanitizers, vitalybuka Reviewed By: #sanitizers, vitalybuka Subscribers: vitalybuka, ro, jyknight, kubamracek, fedor.sergeev, jdoerfert, llvm-commits, #sanitizers Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D58433 llvm-svn: 355979
* SanitizerCommon: 64-bit SPARC/Linux portVitaly Buka2019-03-123-0/+20
| | | | | | | | | | | | | | | | | | | Summary: This patch contains the bits required to make the common 32-bit allocator work on SPARC64/Linux. Patch by Eric Botcazou. Reviewers: #sanitizers, vitalybuka Reviewed By: #sanitizers, vitalybuka Subscribers: krytarowski, vitalybuka, ro, jyknight, kubamracek, fedor.sergeev, jdoerfert, llvm-commits, #sanitizers Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D58432 llvm-svn: 355978
* SanitizerCommon: fixes for unwinding & backtrace on SPARCVitaly Buka2019-03-125-35/+75
| | | | | | | | | | | | | | | | | | | Summary: This patch contains various fixes for the unwinding and backtrace machinery on the SPARC, which doesn't work correctly in various cases. It was tested with GCC on SPARC/Solaris and SPARC/Linux. Patch by Eric Botcazou. Reviewers: #sanitizers, vitalybuka Reviewed By: #sanitizers, vitalybuka Subscribers: jrtc27, delcypher, vitalybuka, ro, jyknight, kubamracek, fedor.sergeev, jdoerfert, llvm-commits, #sanitizers Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D58431 llvm-svn: 355965
* [scudo][standalone] Implement checksumming functionsKostya Kortchinsky2019-03-126-0/+216
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This CL implements the checksumming functions. This departs from the current Scudo code in one aspect: the software version is no longer CRC32 but a BSD checksum. This is because the software CRC32 was too impactful in terms of performances, the BSD checksum has no array lookup which is better (and saves 1KB of data). As with the current version, we only flip the CRC compiler flag for a single compilation unit by default, to allow for a library compiled with HW CRC32 to work on a system without HW CRC32. There is some platform & hardware specific code in those files, but since departs from a mere platform split, it felt right to me to have it that way. Reviewers: morehouse, eugenis, vitalybuka, hctim, mcgrathr Reviewed By: morehouse Subscribers: mgorny, delcypher, jfb, jdoerfert, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D59116 llvm-svn: 355923
* [msan] Fix BMI2 detection in msan tests.Evgeniy Stepanov2019-03-121-1/+1
| | | | llvm-svn: 355885
OpenPOWER on IntegriCloud