tests: sniff for libfuzzer actually being available in test-fuzz-targets.t stable
authorAugie Fackler <augie@google.com>
Wed, 14 Nov 2018 10:12:43 -0500
branchstable
changeset 40727 d9fc51f77cc5
parent 40726 6c01fad8de32
child 40787 d1bda397df73
tests: sniff for libfuzzer actually being available in test-fuzz-targets.t When I upgraded the FreeBSD buildbot to 11.2 it seems we picked up clang6, but the default clang on FreeBSD doesn't include libfuzzer. I can't find a way to sniff for libfuzzer without running a compile, so here we are. Differential Revision: https://phab.mercurial-scm.org/D5270
tests/test-fuzz-targets.t
--- a/tests/test-fuzz-targets.t	Wed Nov 14 10:11:37 2018 -0500
+++ b/tests/test-fuzz-targets.t	Wed Nov 14 10:12:43 2018 -0500
@@ -11,10 +11,26 @@
   >     MAKE=make
   > fi
 
+  $ havefuzz() {
+  >     cat > $TESTTMP/dummy.cc <<EOF
+  > #include <stdlib.h>
+  > #include <stdint.h>
+  > int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { return 0; }
+  > int main(int argc, char **argv) {
+  >     const char data[] = "asdf";
+  >     return LLVMFuzzerTestOneInput((const uint8_t *)data, 4);
+  > }
+  > EOF
+  >     $CXX $TESTTMP/dummy.cc -o $TESTTMP/dummy \
+  >        -fsanitize=fuzzer-no-link,address || return 1
+  > }
+
 #if clang-libfuzzer
+  $ CXX=clang++ havefuzz || exit 80
   $ $MAKE -s clean all
 #endif
 #if no-clang-libfuzzer clang-6.0
+  $ CXX=clang++-6.0 havefuzz || exit 80
   $ $MAKE -s clean all CC=clang-6.0 CXX=clang++-6.0
 #endif
 #if no-clang-libfuzzer no-clang-6.0