diff options
author | jonathanmetzman <31354670+jonathanmetzman@users.noreply.github.com> | 2021-03-02 09:20:40 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-02 09:20:40 -0800 |
commit | f5901265d100cfbcb91d05cd97dab308a3d300d6 (patch) | |
tree | 962771ac9d88ff80dc43f6d07aa866fb9cea2d46 /infra | |
parent | 0e8a05d04c4b790f5b35fb037bedea49f2a5d80f (diff) |
[TSAN] Support TSAN (#5266)
We aren't planning on suppoting TSAN on ClusterFuzz.
But we can support in CIFuzz since Skia wants it.
Diffstat (limited to 'infra')
-rw-r--r-- | infra/base-images/base-builder/Dockerfile | 2 | ||||
-rwxr-xr-x | infra/base-images/base-runner/bad_build_check | 4 | ||||
-rwxr-xr-x | infra/helper.py | 9 |
3 files changed, 12 insertions, 3 deletions
diff --git a/infra/base-images/base-builder/Dockerfile b/infra/base-images/base-builder/Dockerfile index fbfb8990..b726812e 100644 --- a/infra/base-images/base-builder/Dockerfile +++ b/infra/base-images/base-builder/Dockerfile @@ -131,6 +131,8 @@ ENV SANITIZER_FLAGS_memory "-fsanitize=memory -fsanitize-memory-track-origins" ENV SANITIZER_FLAGS_dataflow "-fsanitize=dataflow" +ENV SANITIZER_FLAGS_thread "-fsanitize=thread" + # Do not use any sanitizers in the coverage build. ENV SANITIZER_FLAGS_coverage "" diff --git a/infra/base-images/base-runner/bad_build_check b/infra/base-images/base-runner/bad_build_check index 759985c2..01f8fbba 100755 --- a/infra/base-images/base-runner/bad_build_check +++ b/infra/base-images/base-runner/bad_build_check @@ -334,6 +334,7 @@ function check_mixed_sanitizers { local MSAN_CALLS=$(objdump -dC $FUZZER | egrep "${CALL_INSN}__msan" -c) local UBSAN_CALLS=$(objdump -dC $FUZZER | egrep "${CALL_INSN}__ubsan" -c) + if [[ "$SANITIZER" = address ]]; then check_asan_build $FUZZER $ASAN_CALLS $DFSAN_CALLS $MSAN_CALLS $UBSAN_CALLS result=$? @@ -346,6 +347,9 @@ function check_mixed_sanitizers { elif [[ "$SANITIZER" = undefined ]]; then check_ubsan_build $FUZZER $ASAN_CALLS $DFSAN_CALLS $MSAN_CALLS $UBSAN_CALLS result=$? + elif [[ "$SANITIZER" = thread ]]; then + # TODO(metzman): Implement this. + result=0 fi return $result diff --git a/infra/helper.py b/infra/helper.py index 6ac03776..82761210 100755 --- a/infra/helper.py +++ b/infra/helper.py @@ -61,6 +61,8 @@ PROJECT_LANGUAGE_REGEX = re.compile(r'\s*language\s*:\s*([^\s]+)') # Languages from project.yaml that have code coverage support. LANGUAGES_WITH_COVERAGE_SUPPORT = ['c', 'c++', 'go'] +# pylint: disable=too-many-lines + def main(): # pylint: disable=too-many-branches,too-many-return-statements,too-many-statements """Get subcommand from program arguments and do it.""" @@ -112,8 +114,9 @@ def main(): # pylint: disable=too-many-branches,too-many-return-statements,too- _add_engine_args( check_build_parser, choices=['libfuzzer', 'afl', 'honggfuzz', 'dataflow', 'none']) - _add_sanitizer_args(check_build_parser, - choices=['address', 'memory', 'undefined', 'dataflow']) + _add_sanitizer_args( + check_build_parser, + choices=['address', 'memory', 'undefined', 'dataflow', 'thread']) _add_environment_args(check_build_parser) check_build_parser.add_argument('project_name', help='name of the project') check_build_parser.add_argument('fuzzer_name', @@ -335,7 +338,7 @@ def _add_engine_args(parser, def _add_sanitizer_args(parser, choices=('address', 'memory', 'undefined', 'coverage', - 'dataflow')): + 'dataflow', 'thread')): """Add common sanitizer args.""" parser.add_argument( '--sanitizer', |