platform_build/core/fuzz_test.mk
Zach Riggle 70299e9a8c Move fuzzers to include fuzz engine in pathname, default to 64-bit
Old: /data/nativetest64/fuzzers/ID3_fuzzer/ID3_fuzzer
New: /data/nativetest64/fuzzers/libFuzzer/ID3_fuzzer

This allows having both the honggfuzz and libFuzzer variants built
and flashed at the same time.  It also means we don't have to rely
on 'strings' to determine which type a given fuzzer is.

Test: SANITIZE_TARGET=address mmma vendor/google/tools/security/fuzzers/libFuzzer/sanitycheck_fuzzer \
      && test -e $ANDROID_PRODUCT_OUT/data/nativetest64/fuzzers/libFuzzer/sanitycheck_fuzzer
Change-Id: Ic0899fe8f471cc63d11d810e5fd16b6c6f621bc1
2018-04-05 20:03:26 +00:00

81 lines
2.4 KiB
Makefile

###########################################
## A thin wrapper around BUILD_EXECUTABLE
## Common flags for fuzz tests are added.
###########################################
$(call record-module-type,FUZZ_TEST)
ifdef LOCAL_SDK_VERSION
$(error $(LOCAL_PATH): $(LOCAL_MODULE): NDK fuzz tests are not supported.)
endif
my_fuzzer:=libFuzzer
ifdef LOCAL_FUZZ_ENGINE
my_fuzzer:=$(LOCAL_FUZZ_ENGINE)
else ifdef TARGET_FUZZ_ENGINE
my_fuzzer:=$(TARGET_FUZZ_ENGINE)
endif
LOCAL_CFLAGS += -fsanitize-coverage=trace-pc-guard,indirect-calls,trace-cmp
ifeq ($(my_fuzzer),libFuzzer)
LOCAL_STATIC_LIBRARIES += libFuzzer
else ifeq ($(my_fuzzer),honggfuzz)
LOCAL_STATIC_LIBRARIES += honggfuzz_libhfuzz
LOCAL_REQUIRED_MODULES += honggfuzz
LOCAL_LDFLAGS += \
"-Wl,--wrap=strcmp" \
"-Wl,--wrap=strcasecmp" \
"-Wl,--wrap=strncmp" \
"-Wl,--wrap=strncasecmp" \
"-Wl,--wrap=strstr" \
"-Wl,--wrap=strcasestr" \
"-Wl,--wrap=memcmp" \
"-Wl,--wrap=bcmp" \
"-Wl,--wrap=memmem" \
"-Wl,--wrap=ap_cstr_casecmp" \
"-Wl,--wrap=ap_cstr_casecmpn" \
"-Wl,--wrap=ap_strcasestr" \
"-Wl,--wrap=apr_cstr_casecmp" \
"-Wl,--wrap=apr_cstr_casecmpn" \
"-Wl,--wrap=CRYPTO_memcmp" \
"-Wl,--wrap=OPENSSL_memcmp" \
"-Wl,--wrap=OPENSSL_strcasecmp" \
"-Wl,--wrap=OPENSSL_strncasecmp" \
"-Wl,--wrap=xmlStrncmp" \
"-Wl,--wrap=xmlStrcmp" \
"-Wl,--wrap=xmlStrEqual" \
"-Wl,--wrap=xmlStrcasecmp" \
"-Wl,--wrap=xmlStrncasecmp" \
"-Wl,--wrap=xmlStrstr" \
"-Wl,--wrap=xmlStrcasestr"
else
$(call pretty-error, Unknown fuzz engine $(my_fuzzer))
endif
ifdef LOCAL_MODULE_PATH
$(error $(LOCAL_PATH): Do not set LOCAL_MODULE_PATH when building test $(LOCAL_MODULE))
endif
ifdef LOCAL_MODULE_PATH_32
$(error $(LOCAL_PATH): Do not set LOCAL_MODULE_PATH_32 when building test $(LOCAL_MODULE))
endif
ifdef LOCAL_MODULE_PATH_64
$(error $(LOCAL_PATH): Do not set LOCAL_MODULE_PATH_64 when building test $(LOCAL_MODULE))
endif
LOCAL_MODULE_PATH_64 := $(TARGET_OUT_DATA_NATIVE_TESTS)/fuzzers/$(my_fuzzer)/$(LOCAL_MODULE)
LOCAL_MODULE_PATH_32 := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS)/fuzzers/$(my_fuzzer)/$(LOCAL_MODULE)
ifndef LOCAL_MULTILIB
ifndef LOCAL_32_BIT_ONLY
LOCAL_MULTILIB := 64
endif
endif
ifndef LOCAL_STRIP_MODULE
LOCAL_STRIP_MODULE := keep_symbols
endif
include $(BUILD_EXECUTABLE)