forked from openkylin/platform_build
Make backend for shared library fuzzing.
Additional context (for Googlers): go/android-fuzzing-shared This patch adds the Make support for automatically installing sanitized dependent shared libraries. 'make $module' will find all the shared library dependencies in soong, and create the rules to install them. We simply need to add the <install sanitized shared library> rule that's made by Soong as a dependency of the module's phony. We also now change 'm fuzz' to not just build the fuzz packages, but to build all fuzz targets into the respective $ANDROID_PRODUCT_OUT/data/fuzz and $ANDROID_HOST_OUT/fuzz directories. Bug: N/A Test: Build fuzz target with shared libs, note the contents of $ANDROID_PRODUCT_OUT/data/fuzz/lib and out/soong/fuzz-target-*.zip now has shared libraries. Change-Id: I74def02fee663ef788ee25ec0d5106faf474c2a6
This commit is contained in:
parent
65e4ce6ebc
commit
3adbcb31ea
|
@ -5107,6 +5107,19 @@ ifneq ($(sdk_repo_goal),)
|
|||
include $(TOPDIR)development/build/tools/sdk_repo.mk
|
||||
endif
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Soong generates the list of all shared libraries that are depended on by fuzz
|
||||
# targets. It saves this list as a source:destination pair to
|
||||
# FUZZ_TARGET_SHARED_DEPS_INSTALL_PAIRS, where the source is the path to the
|
||||
# build of the unstripped shared library, and the destination is the
|
||||
# /data/fuzz/$ARCH/lib (for device) or /fuzz/$ARCH/lib (for host) directory
|
||||
# where fuzz target shared libraries are to be "reinstalled". The
|
||||
# copy-many-files below generates the rules to copy the unstripped shared
|
||||
# libraries to the device or host "reinstallation" directory. These rules are
|
||||
# depended on by each module in soong_cc_prebuilt.mk, where the module will have
|
||||
# a dependency on each shared library that it needs to be "reinstalled".
|
||||
FUZZ_SHARED_DEPS := $(call copy-many-files,$(strip $(FUZZ_TARGET_SHARED_DEPS_INSTALL_PAIRS)))
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# The rule to build all fuzz targets, and package them.
|
||||
# Note: The packages are created in Soong, and in a perfect world,
|
||||
|
@ -5118,5 +5131,5 @@ endif
|
|||
# directory`, because kati will see 'fuzz' as being a file, not a
|
||||
# phony target.
|
||||
.PHONY: fuzz
|
||||
fuzz: $(SOONG_FUZZ_PACKAGING_ARCH_MODULES)
|
||||
fuzz: $(SOONG_FUZZ_PACKAGING_ARCH_MODULES) $(ALL_FUZZ_TARGETS)
|
||||
$(call dist-for-goals,fuzz,$(SOONG_FUZZ_PACKAGING_ARCH_MODULES))
|
||||
|
|
|
@ -106,6 +106,7 @@ LOCAL_FULL_LIBS_MANIFEST_FILES:=
|
|||
LOCAL_FULL_MANIFEST_FILE:=
|
||||
LOCAL_FULL_TEST_CONFIG:=
|
||||
LOCAL_FUZZ_ENGINE:=
|
||||
LOCAL_FUZZ_INSTALLED_SHARED_DEPS:=
|
||||
LOCAL_GCNO_FILES:=
|
||||
LOCAL_GENERATED_SOURCES:=
|
||||
# Group static libraries with "-Wl,--start-group" and "-Wl,--end-group" when linking.
|
||||
|
|
|
@ -220,3 +220,9 @@ installed_static_library_notice_file_targets := \
|
|||
|
||||
$(notice_target): | $(installed_static_library_notice_file_targets)
|
||||
$(LOCAL_INSTALLED_MODULE): | $(notice_target)
|
||||
|
||||
# Reinstall shared library dependencies of fuzz targets to /data/fuzz/ (for
|
||||
# target) or /data/ (for host).
|
||||
ifdef LOCAL_IS_FUZZ_TARGET
|
||||
$(LOCAL_INSTALLED_MODULE): $(LOCAL_FUZZ_INSTALLED_SHARED_DEPS)
|
||||
endif
|
||||
|
|
Loading…
Reference in New Issue