From: Nick Terrell Date: Fri, 19 Feb 2021 21:11:29 +0000 (-0800) Subject: [fuzz] Fix compiler detection & update ubsan flags X-Git-Tag: v1.4.9^2~10^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F2503%2Fhead;p=thirdparty%2Fzstd.git [fuzz] Fix compiler detection & update ubsan flags * Fix compiler version regex, which was broken for multi-digit versions. * Fix compiler detection for gcc. * Disable `pointer-overflow` instead of `integer-overflow` for gcc versions newer than 8.0.0. --- diff --git a/tests/fuzz/fuzz.py b/tests/fuzz/fuzz.py index b3aa2bdf6..05a778738 100755 --- a/tests/fuzz/fuzz.py +++ b/tests/fuzz/fuzz.py @@ -180,14 +180,15 @@ def compiler_version(cc, cxx): cxx_version_bytes = subprocess.check_output([cxx, "--version"]) compiler = None version = None + print("{} --version:\n{}".format(cc, cc_version_bytes.decode('ascii'))) if b'clang' in cc_version_bytes: assert(b'clang' in cxx_version_bytes) compiler = 'clang' - elif b'gcc' in cc_version_bytes: + elif b'gcc' in cc_version_bytes or b'GCC' in cc_version_bytes: assert(b'gcc' in cxx_version_bytes or b'g++' in cxx_version_bytes) compiler = 'gcc' if compiler is not None: - version_regex = b'([0-9])+\.([0-9])+\.([0-9])+' + version_regex = b'([0-9]+)\.([0-9]+)\.([0-9]+)' version_match = re.search(version_regex, cc_version_bytes) version = tuple(int(version_match.group(i)) for i in range(1, 4)) return compiler, version @@ -195,9 +196,9 @@ def compiler_version(cc, cxx): def overflow_ubsan_flags(cc, cxx): compiler, version = compiler_version(cc, cxx) - if compiler == 'gcc': + if compiler == 'gcc' and version < (8, 0, 0): return ['-fno-sanitize=signed-integer-overflow'] - if compiler == 'clang' and version >= (5, 0, 0): + if compiler == 'gcc' or (compiler == 'clang' and version >= (5, 0, 0)): return ['-fno-sanitize=pointer-overflow'] return []