Commit Graph

780 Commits

Author SHA1 Message Date
Max Moroz 72b82ee08f [infra] Code Coverage: use -close_fd_mask=3 to speed up noisy fuzz targets. 2018-08-31 15:43:07 -07:00
Max Moroz 733c896ce5
[infra] Support extra coverage args in project.yaml (fix #1726, follow-up #1547). (#1774)
* [infra] Support extra coverage args in project.yaml (fix #1726, follow-up #1547).

* Update the documentation page.

* Fix review comments by Jonathan.
2018-08-30 09:46:14 -07:00
Max Moroz c5a9204ae7
[infra] Code Coverage: copy /usr/include headers and upload logs to GCS (follow-up #1547). (#1764) 2018-08-27 08:25:29 -07:00
Max Moroz 1bc9bb0b65
[infra] Update build_status to support two build types + cleanup (#1743, #1547). (#1758)
* [infra] Update build_status to support two build types + cleanup (#1743, #1547).

* Minor fixes.

* Remove default value for status_filename argument.
2018-08-27 06:46:17 -07:00
Max Moroz 23a04ab280
[infra] Use 'coverage' and 'fuzzing' tags to filter builds (follow-up #1547). (#1751)
* [infra] Use 'coverage' and 'fuzzing' tags to filter builds (follow-up #1547).

* Remove unintentional print call.

* Remove a variable that is not used anympre.
2018-08-23 19:14:09 -07:00
Max Moroz 649d3a7708
[infra] use -src-root-dir=/ and fail hard on errors (follow-up #1547). (#1746) 2018-08-23 08:09:52 -07:00
Max Moroz 7c476809f3
[infra] Skip code coverage job for projects that are disabled (#1743, #1547). (#1745)
* [infra] Skip code coverage job for projects that are disabled.

* Remove unintentional change.

* Address review feedback.
2018-08-22 14:14:02 -07:00
Max Moroz 204110f6bb
[infra] Skip coverage job for projects w/o fuzz targets (fix #1743, follow-up #1547). (#1744)
* [infra] Skip coverage job for projects w/o fuzz targets (fix #1743, follow-up #1547).

* Use build_id=0 and a more generic message.
2018-08-22 08:55:59 -07:00
Max Moroz d22e0cb352 [infra] Suppress errors from $COPY_SOURCES_CMD (follow-up #1741, #1547). 2018-08-22 07:20:09 -07:00
Max Moroz 17a6cfbd40
[infra] Use coverage utils from Chromium and other fixes (follow-up #1547). (#1741)
* [infra] Use coverage utils from Chromium and other fixes (follow-up #1547).

* Sort dependencies in an alpha order plus make more readable.

* Re-order arguments passed to coverage_helper script.

* Rename REPORT_DIR variable and put summary.json into platform specific dir.

* Fix -src-root-dir value.
2018-08-21 14:02:48 -07:00
Max Moroz e4d8b665f5 [infra] Add missing targets_list_filename calculation in build_project.py (follow-up #1547). 2018-08-20 12:29:35 -07:00
Max Moroz 3c6e2bc79a [infra] Bring -ldl flag back and suppress warning messages (follow-up #1547). 2018-08-20 10:56:51 -07:00
Max Moroz 113274a890 [infra] Fix check for qualified target name: include "_" (follow-up #1547). 2018-08-20 10:35:10 -07:00
Max Moroz ab17c5f915 [infra] Do not mark coverage job as failed when there are no targets list (follow-up for #1547). 2018-08-20 10:26:27 -07:00
Max Moroz 696c46cedd [infra] Use correct directory name for coverage jobs (follow-up for #1738). 2018-08-20 07:22:24 -07:00
Max Moroz 903c07ae69
[infra] Set up project dir for coverage job properly. (#1738)
* [infra] Set up project dir for coverage job properly.

* Fix weird typo.
2018-08-20 07:15:54 -07:00
Max Moroz 4574ff8bdb
[infra] Add the build configuration and other pieces for clang code coverage. (#1547)
* [infra] Add the build configuration and other pieces for clang code coverage.

* Address the initial feedback, still a draft with some pieces missing.

* Trying to test things locally.

* Work in progress, now able to test the build process.

* Rebase and fix a comment.

* Figure out how to upload report, but still have issues with GCS access.

* Remove unnecessary debug prints.

* WIP: adding targets list reading + minor clean up.

* WIP

* WIP: now it works end to end but is very dirty and has limitations.

* WIP: use rsync -r -d to overwrite older reports (if any)

* WIP: trying to use a helper script for bulk corpus download.

* WIP: download corpus in batches passed via args.

* WIP: testing corpus downloading in batches.

* WIP: woohoo, now it works!

* Some cleanup for a high level review.

* Address review comments and add FAQ entry.

* Update FAQ.md as per comments by Oliver.
2018-08-20 06:42:45 -07:00
Max Moroz 80ea4a427a
[infra] Coverage: handle shared libraries via coverage_helper script. (#1727)
* [infra] Coverage: handle shared libraries and provide per directory view.

* Add coverage_helper script for detecting shared libraries.

* Address review feedback.
2018-08-17 15:15:08 -07:00
Max Moroz f021e50a21
[infra] Coverage: export stats for individual fuzzers (to be uploaded in #1547). (#1722) 2018-08-16 21:23:56 -07:00
Max Moroz f1e7093d22
[infra] profile command: do not fail hard if some fuzz targets have no corpus. (#1719)
* [infra] profile command: do not fail hard if some fuzz targets have no corpus.

* Change listing to corpus_listing to be more explicit.

* Address review comment from Abhishek
2018-08-16 11:41:39 -07:00
Max Moroz 137bc2c9de
[infra] Add UBSAN_OPTIONS=\"silence_unsigned_overflow=1\" to base-builder image (#1715). (#1717) 2018-08-15 15:36:37 -07:00
Max Moroz e1aa07c491
[infra] Add script for downloading a batch of corpus backups (for #1547). (#1713)
* [infra] Add script for downloading a batch of corpus backups (for #1547).

* Add missing wget dependency and replace a tab with spaces.

* Convert more tabs to spaces.
2018-08-15 06:34:10 -07:00
Max Moroz e6bf26c8dd
[infra] Bump LLVM revision to r338452. (#1708) 2018-08-13 07:44:21 -07:00
Max Moroz d747892866
[infra] Update coverage script to support sources white listing. (#1707) 2018-08-12 10:19:40 -07:00
Max Moroz dc8b440fe9
[infra] Follow-up for the incorrect extraction of WORKDIR from a Dockerfile (#1699). (#1702)
* [infra] Follow-up for the incorrect extraction of WORKDIR from a Dockerfile (#1699).

* Return an error if local checkout used with "WORKDIR /src".
2018-08-09 18:04:37 -07:00
Max Moroz 8d3e462bd6
[infra] Prevent mounting local checkout to $SRC + clean up Dockerfiles (#1699). (#1700) 2018-08-09 12:29:31 -07:00
Max Moroz b8a87a862e
[infra] Coverage: always exclude libFuzzer source from the report. (#1697) 2018-08-09 10:45:05 -07:00
Max Moroz 0fe45f59a7
[infra] Re-enable UIO for UBSan in a non-faulting mode (#910). (#1690) 2018-08-07 10:04:25 -07:00
Evgeny Vereshchagin d2d9860ecd [infra] skip the rest of check_instrumentation if grep hasn't found anything (#1689)
When a fuzzer is seriously broken (which happens occasionally during debug),
it's unlikely to start properly let alone provide some meaningful
output. In this case, it seems reasonable to skip some checks and prevent bash
from encountering the following syntax error:
```
/usr/local/bin/bad_build_check: line 68: ((: < 100 : syntax error: operand expected (error token is "< 100 ")
```
2018-08-04 18:14:29 -07:00
Max Moroz 815727b0b3
[infra] Add retry wrapper to LLVM checkout commands. (#1668)
* [infra] Add retry wrapper to LLVM checkout commands.

* Fix a typo.

* Clean up the retry wrapper as per discussion with Abhishek.

* Fix disabling / enabling exit-on-error mode, bash is hard!

* Fix a comment.
2018-07-27 14:19:32 -07:00
Max Moroz dbe2731d93
[infra] Print logs URL for base images and msan libs. (#1666) 2018-07-27 10:07:54 -07:00
Max Moroz 6b761f3826
[infra] Export coverage data in JSON format for picking up by CF. (#1665) 2018-07-27 07:34:02 -07:00
Oliver Chang 180c87f194 gcb: add env to targets_list step 2018-07-27 15:34:24 +10:00
Oliver Chang 2ef8e32bfa Move targets_list to base-runner. 2018-07-27 14:59:02 +10:00
Oliver Chang bf75778262 pyformat python code in gcb dir. 2018-07-27 13:32:39 +10:00
Oliver Chang 60fb6a8d7b
Generate and upload targets list during build. (#1660) 2018-07-27 13:29:51 +10:00
Abhishek Arya c328ff7518
Speculative fix for firefox build fix. (#1661)
* Speculative fix for firefox build fix.

* Use a yaml attribute.
2018-07-26 19:49:56 -07:00
Max Moroz 704da2ddac
[infra] Do not force our LLVM revision. (#1653) 2018-07-26 10:01:41 -07:00
Max Moroz 218f5dc3cf
[infra] Add an option to disable serving coverage report over HTTP (needed for #1547). (#1635) 2018-07-20 15:43:08 -07:00
Max Moroz 645a0375fe
[infra] Support extra arguments for llvm-cov + update the binaries. (#1629)
* [infra] Support extra arguments for llvm-cov + update the binaries.

* Slightly change the doc to be less confusing.
2018-07-19 15:58:58 -07:00
Oliver Chang 40326f9520 Add libcap2 to base-runner image. 2018-07-09 17:22:15 +10:00
Oliver Chang 621cb43076
helper: Better support for building from local source (#1589). (#1595)
Parse WORKDIR from the Dockerfile and use that to mount in the local
source.
2018-07-04 14:23:23 +10:00
Abhishek Arya 12982882b8
Fix #1591 2018-07-03 09:26:51 -07:00
Abhishek Arya 3af21b0252
Don't check for LLVMFuzzerTestOneInput when there is no fuzzing engine. (#1579) 2018-06-28 07:08:57 -07:00
Abhishek Arya 4e87bd622d
Revert "Add support for running perffuzz in infra/helper.py (#1540)" (#1578)
This reverts commit 7f26e2fd92.
2018-06-28 06:11:32 -07:00
Abhishek Arya d24dfd4971
Revert #1560 2018-06-27 08:27:13 -07:00
Abhishek Arya bcf3d1dfa8
Revert "[infra] Compile fuzzing engine without SANITIZER_FLAGS unless MSan is used. (#1522)" (#1574)
This reverts commit 63d9392e59.
2018-06-26 13:08:14 -07:00
jonathanmetzman 9c2fe11666
Fix check for LLVMFuzzerTestOneInput (#1572) 2018-06-26 08:23:56 -07:00
jonathanmetzman 5ea8600f84
Remove test_report since it isn't usable from anywhere (#1569) 2018-06-25 16:59:21 -07:00
jonathanmetzman 36e576467c
Fix bad build check. (#1568)
* Fix bad build check.

Bad build checks previously just checked that a file is an executable
ELF. This is insufficient because libraries are also executable ELFs.
Add a check that the file contains LLVMFuzzerTestOneInput, in order
to consider a fuzz target.

Also update coverage and test_report for consistency.
2018-06-25 16:35:28 -07:00