From 3d42e16e831fbabc5905925958ee35882eabd6c3 Mon Sep 17 00:00:00 2001 From: Nick Terrell Date: Fri, 19 Feb 2021 13:11:29 -0800 Subject: [PATCH] [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. --- tests/fuzz/fuzz.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/fuzz/fuzz.py b/tests/fuzz/fuzz.py index b3aa2bdf603..135a618f527 100755 --- a/tests/fuzz/fuzz.py +++ b/tests/fuzz/fuzz.py @@ -183,11 +183,11 @@ def compiler_version(cc, cxx): 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'\s([0-9]+)\.([0-9]+)\.([0-9]+)\s' 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 +195,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 []