diff --git a/core/binary.mk b/core/binary.mk index 4db3d5144..4986c85d6 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -57,6 +57,7 @@ my_generated_sources := $(LOCAL_GENERATED_SOURCES) my_additional_dependencies := $(LOCAL_ADDITIONAL_DEPENDENCIES) my_export_c_include_dirs := $(LOCAL_EXPORT_C_INCLUDE_DIRS) my_export_c_include_deps := $(LOCAL_EXPORT_C_INCLUDE_DEPS) +my_arflags := ifneq (,$(strip $(foreach dir,$(subst $(comma),$(space),$(COVERAGE_PATHS)),$(filter $(dir)%,$(LOCAL_PATH))))) my_native_coverage := true @@ -1736,6 +1737,7 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDFLAGS := $(my_ldflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDLIBS := $(my_ldlibs) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TIDY_CHECKS := $(my_tidy_checks) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TIDY_FLAGS := $(my_tidy_flags) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ARFLAGS := $(my_arflags) # this is really the way to get the files onto the command line instead # of using $^, because then LOCAL_ADDITIONAL_DEPENDENCIES doesn't work diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk index c9883d4c8..1046ff623 100644 --- a/core/config_sanitizers.mk +++ b/core/config_sanitizers.mk @@ -145,6 +145,7 @@ endif ifneq ($(filter cfi,$(my_sanitize)),) my_cflags += -flto -fsanitize-cfi-cross-dso -fvisibility=default my_ldflags += -flto -fsanitize-cfi-cross-dso -fsanitize=cfi -Wl,-plugin-opt,O1 -Wl,-export-dynamic-symbol=__cfi_check + my_arflags += --plugin $(LLVM_PREBUILTS_PATH)/../lib64/LLVMgold.so endif # If local or global modules need ASAN, add linker flags. diff --git a/core/definitions.mk b/core/definitions.mk index dd53e7e4c..d77cea998 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -1581,6 +1581,7 @@ define transform-o-to-static-lib $(extract-and-include-target-whole-static-libs) $(call split-long-arguments,$($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) \ $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \ + $(PRIVATE_ARFLAGS) \ $@,$(PRIVATE_ALL_OBJECTS)) endef