46 lines
1.8 KiB
Makefile
46 lines
1.8 KiB
Makefile
# -*- makefile -*-
|
|
# Copyright 2018 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
#
|
|
# fuzzer binaries
|
|
#
|
|
|
|
fuzz-test-list-host =
|
|
# Fuzzers should only be built for architectures that support sanitizers.
|
|
ifeq ($(ARCH),amd64)
|
|
# TODO(crbug.com/911310) Fix the chromeos-ec build before adding cr50_fuzz back.
|
|
fuzz-test-list-host += cr50_fuzz host_command_fuzz usb_pd_fuzz
|
|
endif
|
|
|
|
# For fuzzing targets libec.a is built from the ro objects and hides functions
|
|
# that collide with stdlib. The rw only objects are then linked against libec.a
|
|
# with stdlib support. Therefore fuzzing targets that need to call this internal
|
|
# functions should be marked "-y" or "-ro", and fuzzing targets that need stdlib
|
|
# should be marked "-rw". In other words:
|
|
#
|
|
# Does your object file need to link against the Cr50 implementations of stdlib
|
|
# functions?
|
|
# Yes -> use <obj_name>-y
|
|
# Does your object file need to link against cstdlib?
|
|
# Yes -> use <obj_name>-rw
|
|
# Otherwise use <obj_name>-y
|
|
cr50_fuzz-rw = cr50_fuzz.o pinweaver_model.o mem_hash_tree.o nvmem_tpm2_mock.o
|
|
host_command_fuzz-y = host_command_fuzz.o
|
|
usb_pd_fuzz-y = usb_pd_fuzz.o
|
|
|
|
CR50_PROTO_HEADERS := $(out)/gen/fuzz/cr50_fuzz.pb.h \
|
|
$(out)/gen/fuzz/pinweaver/pinweaver.pb.h
|
|
$(out)/RW/fuzz/pinweaver_model.o: ${CR50_PROTO_HEADERS}
|
|
$(out)/RW/fuzz/cr50_fuzz.o: ${CR50_PROTO_HEADERS}
|
|
$(out)/RW/fuzz/cr50_fuzz.o: CPPFLAGS+=${LIBPROTOBUF_MUTATOR_CFLAGS}
|
|
|
|
TPM2_LIB_ROOT := $(CROS_WORKON_SRCROOT)/src/third_party/tpm2
|
|
$(out)/RW/fuzz/nvmem_tpm2_mock.o: CFLAGS += -I$(TPM2_LIB_ROOT)
|
|
|
|
$(out)/cr50_fuzz.exe: $(out)/cryptoc/libcryptoc.a \
|
|
$(out)/gen/fuzz/cr50_fuzz.pb.o \
|
|
$(out)/gen/fuzz/pinweaver/pinweaver.pb.o \
|
|
|
|
$(out)/cr50_fuzz.exe: LDFLAGS_EXTRA+=-lcrypto ${LIBPROTOBUF_MUTATOR_LDLIBS}
|