123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- # Copyright 2016 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- group("afl") {
- deps = [
- ":afl-cmin",
- ":afl-fuzz",
- ":afl-showmap",
- ":afl-tmin",
- ":afl_docs",
- ":afl_runtime",
- ]
- }
- source_set("afl_runtime") {
- # AFL needs this flag to be built with -Werror. This is because it uses u8*
- # and char* types interchangeably in its source code. The AFL Makefiles use
- # this flag.
- cflags = [ "-Wno-pointer-sign" ]
- configs -= [
- # These functions should not be compiled with sanitizers since they
- # are used by the sanitizers.
- "//build/config/sanitizers:default_sanitizer_flags",
- # Every function in this library should have "default" visibility.
- # Thus we turn off flags which make visibility "hidden" for functions
- # that do not specify visibility.
- # The functions in this library will not conflict with others elsewhere
- # because they begin with a double underscore and/or are static.
- "//build/config/gcc:symbol_visibility_hidden",
- ]
- sources = [ "src/llvm_mode/afl-llvm-rt.o.c" ]
- }
- afl_headers = [
- "src/alloc-inl.h",
- "src/config.h",
- "src/debug.h",
- "src/types.h",
- "src/hash.h",
- ]
- config("afl-tool") {
- cflags = [
- # Include flags from afl's Makefile.
- "-O3",
- "-funroll-loops",
- "-D_FORTIFY_SOURCE=2",
- # These flags are necessary to build with -Werror.
- "-Wno-sign-compare",
- "-Wno-pointer-sign",
- # afl_docs copies docs/ to this location.
- "-DDOC_PATH=\"$root_build_dir/afl/docs/\"",
- # This flag is needed for compilation but is only used for QEMU mode which
- # we do not use. Therefore its value is unimportant.
- "-DBIN_PATH=\"$root_build_dir\"",
- ]
- }
- copy("afl-cmin") {
- # afl-cmin is a bash script used to minimize the corpus, therefore we can just
- # copy it over.
- sources = [ "src/afl-cmin" ]
- outputs = [ "$root_build_dir/{{source_file_part}}" ]
- deps = [ ":afl-showmap" ]
- }
- copy("afl_docs") {
- # Copy the docs folder. This is so that we can use a real value for for
- # -DDOC_PATH when compiling.
- sources = [ "src/docs" ]
- outputs = [ "$root_build_dir/afl/{{source_file_part}}" ]
- }
- executable("afl-fuzz") {
- # Used to fuzz programs.
- configs -= [ "//build/config/sanitizers:default_sanitizer_flags" ]
- configs += [ ":afl-tool" ]
- no_default_deps = true
- sources = [ "src/afl-fuzz.c" ]
- sources += afl_headers
- }
- executable("afl-tmin") {
- configs -= [ "//build/config/sanitizers:default_sanitizer_flags" ]
- configs += [ ":afl-tool" ]
- no_default_deps = true
- sources = [ "src/afl-tmin.c" ]
- sources += afl_headers
- }
- executable("afl-showmap") {
- configs -= [ "//build/config/sanitizers:default_sanitizer_flags" ]
- configs += [ ":afl-tool" ]
- no_default_deps = true
- sources = [ "src/afl-showmap.c" ]
- sources += afl_headers
- }
|