338 Commits

Author SHA1 Message Date
Reid Kleckner
d6780ccb60 [Fuzzer] Flush std::cout before aborting in CxxStringEqTest
On Windows, abort() does not appear to flush std::cout. Should fix red
sanitizer-windows bot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299398 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-03 23:00:25 +00:00
Kostya Serebryany
e857d23c61 [libFuzzer] tests: don't test 64-bit comparison on 32-bit builds
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299179 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-31 03:51:40 +00:00
Kostya Serebryany
15e73a64fc [libFuzzer] ensure that strncmp is not inlined in a test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299177 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-31 03:34:33 +00:00
Kostya Serebryany
e10396a06a [libFuzzer] try to fix value-profile-strncmp on the Mac bot
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299145 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-31 00:52:39 +00:00
Kostya Serebryany
5b2ce7b2d4 [libFuzzer] remove a stale flag from tests, run value-profile-strncmp.test longer (hopefully, will fix the OSX bot)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299051 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-30 04:22:20 +00:00
Kostya Serebryany
2d9dd043ff [libFuzzer] best effort support for -fsanitize-coverage=trace-pc instrumentation. It is less efficient and precise than -fsanitize-coverage=trace-pc-guard, but still works
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299046 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-30 01:27:20 +00:00
Juergen Ributzka
26cbef5f44 [libfuzzer] Remove XFAIL for OutOfMemory test.
This test is now passing on Darwin.

See rdar://problem/31282257.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298886 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-27 22:33:05 +00:00
Vitaly Buka
cc4a0d11e4 [libFuzzer] Fix test on Windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298757 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-25 01:19:45 +00:00
Kostya Serebryany
2061be0b30 [libFuzzer] read asan's dedup_token while minimizing a crash and stop minimization if another bug was found during minimization (https://github.com/google/oss-fuzz/issues/452)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298755 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-25 00:56:08 +00:00
Kostya Serebryany
e1646b6e51 [libFuzzer] be more careful when calling strlen of strcmp parameters, PR32357
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298746 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-24 22:19:52 +00:00
Kostya Serebryany
a149d64a7e [libFuzzer] honor -exact_artifact_path for all intermediate files during crash minimization (https://github.com/google/oss-fuzz/issues/250)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298740 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-24 21:09:16 +00:00
Kostya Serebryany
3519a8a96e [libFuzzer] split two tests to get more parallelism in test runs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298673 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-24 00:51:18 +00:00
Kostya Serebryany
300f834d9e [libFuzzer] increase kFeatureSetSize to 2^21 and make InputCorpus scale to that size. This will potentially make libFuzzer more sensitive on targets with lots of signals
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298671 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-24 00:45:15 +00:00
Kostya Serebryany
ce68a403f2 [libFuzzer] fix non-linux build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298666 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-23 23:48:47 +00:00
Kostya Serebryany
550e23d356 [libFuzzer] create experimental support for user-provided coverage signal
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298654 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-23 22:43:12 +00:00
Kostya Serebryany
5db3fb7fb6 [libFuzzer] add two experimental flags to make corpus merging more scalable: -save_coverage_summary/-load_coverage_summary. This is still WIP, the documentation will come later if these flags survive
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298548 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-22 20:32:44 +00:00
Kostya Serebryany
6ee36bcf11 [libFuzzer] add a test with two different bugs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298030 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-17 01:33:16 +00:00
Kostya Serebryany
d18970b6b1 [libFuzzer] remove stale code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297781 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-14 21:30:14 +00:00
Vitaly Buka
f6fe3416fb [libFuzzer] Reorder includes in test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297692 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-13 23:49:00 +00:00
Vitaly Buka
29082d9fca [libFuzzer] Fix compilation of CustomCrossOverAndMutateTest on Windows
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297690 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-13 23:46:30 +00:00
Kostya Serebryany
cef724571c [libFuzzer] add more iterations to LLVMFuzzer-Memcmp64BytesTest
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297554 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-11 05:14:49 +00:00
Kostya Serebryany
47ec3386d2 [libFuzzer] add test/LargeTest.cpp, mostly for manual experiments with large number of edges, not yet suitable for unit testing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297544 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-11 01:54:06 +00:00
Kostya Serebryany
f0f231aaf9 [libFuzzer] remove fuzzer-jobs.test which is flaky and not very useful
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297543 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-11 01:48:54 +00:00
Vitaly Buka
c3e4809203 [fuzzer] Don't crash if LLVMFuzzerMutate was called by CustomCrossOver
Reviewers: kcc

Subscribers: llvm-commits, mgorny

Differential Revision: https://reviews.llvm.org/D30682

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297202 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-07 20:37:38 +00:00
Kuba Mracek
66193c91b4 Un-XFAIL Fuzzer/test/dump_coverage.test. This now passes on Darwin (after r297094).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297110 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-07 01:01:38 +00:00
Mike Aizatsky
a5015a4186 [libfuzzer] do not use xargs for shell expansion
Summary:
After https://reviews.llvm.org/rL296904 xargs shouldn't be necesssary.

Differential Revision: https://reviews.llvm.org/D30371

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297094 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-06 23:42:14 +00:00
Mehdi Amini
a5db565998 un-Xfail Fuzzer test that decided to pass on Green Dragon
It may be flacky, I'll turn it into unsupported if it fails again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296913 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-03 21:28:05 +00:00
Mehdi Amini
00684f5d0c Mark some libFuzzer tests as XFAIL'd on Darwin
We're bringing up a bot on Green Dragon right now:

http://green.lab.llvm.org/green/view/Experimental/job/libFuzzer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296526 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-28 21:45:59 +00:00
Justin Bogner
af8c7cedc1 [libFuzzer] Update traces hooks test after r293741
This test now passes on darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295902 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-22 23:12:36 +00:00
Justin Bogner
28c53fa4a0 [libFuzzer] Mark a test that infinite loops as unsupported
We need to investigate this, but for now it just causes too much
headache when trying to run these tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295900 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-22 23:05:17 +00:00
Kostya Serebryany
8a5fe4855b [libFuzzer] increase the size of FixedWord from 27 to 64, see PR31950
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295117 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-14 23:02:37 +00:00
Marcos Pividori
671eb85b72 [libFuzzer] Export external functions on tests.
We need to export external functions so they are found when calling
GetProcAddress() on Windows. But we can't use `__declspec(dllexport)` because
we want the targets to be completely independent from the fuzz engines and don't
depend on other header files. Also, we don't want to include platform specific
code managed with conditional macros.
So, the solution is to add the exported symbols with linker flags in cmake.

Differential revision: https://reviews.llvm.org/D29752

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294688 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-10 01:40:28 +00:00
Marcos Pividori
2ee8a5f7b7 [libFuzzer] Use long long to ensure 64 bits.
We should always use unsigned long long to ensure 64 bits. On Windows, unsigned
long is 4 bytes. This was the reason why value-profile-cmp4.test was failing on
Windows.

Differential Revision: https://reviews.llvm.org/D29617

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294390 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:03:31 +00:00
Marcos Pividori
7a5e009266 [libFuzzer] Use custom target instead of list of binaries for tests.
Update cmake to use a custom target TestBinaries instead of a list of targets.
This simplifies cmake, and fix some errors. This way, we don't have to propagate
the values into parents directories. We only need to use add_dependencies.

Differential Revision: https://reviews.llvm.org/D29593

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294389 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:03:26 +00:00
Marcos Pividori
255eed0380 [libFuzzer] Change Uninstrumented test name.
On Windows, executables with the word "uninst" included in their names are
associated with administrator privileges.

Differential Revision: https://reviews.llvm.org/D29549

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294387 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:03:13 +00:00
Marcos Pividori
ec59eb9d58 [libFuzzer] fuzzer-jobs requires posix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294386 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:03:07 +00:00
Marcos Pividori
1ff471105f [libFuzzer] Update fuzzer.test to properly set environment variables.
Use env to set environment variables, so it works on Windows and Linux.

Differential Revision: https://reviews.llvm.org/D29537

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294385 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:03:03 +00:00
Marcos Pividori
155c4aab57 [libFuzzer] Don't add newline character when using echo in tests.
Add the option "-n", so we don't add a new line character at the end of the file
when using echo. (on Windows this means 2 characters).

Differential Revision: https://reviews.llvm.org/D29536

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294384 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:02:59 +00:00
Marcos Pividori
fbc422e6ba [libFuzzer] Disable ulimit test on windows.
Differential Revision: https://reviews.llvm.org/D29535

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294383 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:02:54 +00:00
Marcos Pividori
44933aa735 [libFuzzer] Remove ? wildcard on tests.
We can not use the wildcard ? on Windows.

Differential Revision: https://reviews.llvm.org/D29534

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294382 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:02:50 +00:00
Marcos Pividori
6cf9872a5e [libFuzzer] Update fuzzer-segv to set environment variables.
Use env to set environment variables, so it works on Linux and Windows.

Differential Revision: https://reviews.llvm.org/D29533

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294381 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:02:45 +00:00
Marcos Pividori
75241a8855 [libFuzzer] Properly configure tests for Windows.
This configuration is necessary, and is included in all tests suites.
We need to execute: `config.test_format = lit.formats.ShTest(False)`
Otherwise, lit will try to use bash, which generates many problems.

Differential Revision: https://reviews.llvm.org/D29529

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294380 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:02:41 +00:00
Marcos Pividori
ddc6c083cf [libFuzzer] Simplify dump_coverage test.
Environment variables are handled differently on Windows. In this case it is not
necessary to use environment variables. So, I simplify the test to work on
Windows.

Differential Revision: https://reviews.llvm.org/D29532

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294379 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:02:36 +00:00
Marcos Pividori
a8f8ed08cc [libFuzzer] Update Load test to work on 32 bits.
We should ensure the size of the variable `a` is 8 bytes. Otherwise, this
generates a stack buffer overflow inside the memcpy call in 32 bits machines.
(We write more bytes than the size of a, when it is 4 bytes)

Differential Revision: https://reviews.llvm.org/D29602

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294378 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:02:32 +00:00
Marcos Pividori
f78e1b3b9d [libFuzzer] Update test to consider different exceptions.
Differential Revision: https://reviews.llvm.org/D29531

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294377 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08 00:02:25 +00:00
Marcos Pividori
f7fdc84b39 [libFuzzer] Disable afl tests on non-posix systems.
AflDriver is not supported on non posix systems.

Differential Revision: https://reviews.llvm.org/D29422

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293830 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-01 22:40:50 +00:00
Marcos Pividori
b2df6a0c9b [libFuzzer] Disable equivalence tests on non posix systems.
We can not run this test until we implement shared memory on Windows.

Differential Revision: https://reviews.llvm.org/D29421

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293829 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-01 22:40:45 +00:00
Marcos Pividori
98399aa4b2 [libFuzzer] Isolate merge tests that require posix.
Differential Revision: https://reviews.llvm.org/D29420

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293828 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-01 22:40:40 +00:00
Marcos Pividori
b928b9b13e [libFuzzer] Add features windows and posix for lit tests.
Add 2 features: posix and windows.
Sometimes we want some specific tests only for posix and we use:
 REQUIRES: posix
Sometimes we want some specific tests only for windows and we use:
 REQUIRES: windows

Differential Revision: https://reviews.llvm.org/D29418

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293827 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-01 22:40:34 +00:00
Marcos Pividori
adb057cab2 [libFuzzer] Accept different extensions.
Differential Revision: https://reviews.llvm.org/D29417

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293826 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-01 22:40:29 +00:00