Loading core/check_elf_file.mk 0 → 100644 +45 −0 Original line number Diff line number Diff line # Check the correctness of the prebuilt ELF files # # This check ensures that DT_SONAME matches with the filename, DT_NEEDED # matches the shared libraries specified in LOCAL_SHARED_LIBRARIES, and all # undefined symbols in the prebuilt binary can be found in one of the shared # libraries specified in LOCAL_SHARED_LIBRARIES. # # Inputs: # - LOCAL_ALLOW_UNDEFINED_SYMBOLS # - LOCAL_BUILT_MODULE # - LOCAL_IS_HOST_MODULE # - LOCAL_MODULE_CLASS # - intermediates # - my_installed_module_stem # - my_prebuilt_src_file ifndef LOCAL_IS_HOST_MODULE ifneq ($(filter $(LOCAL_MODULE_CLASS),SHARED_LIBRARIES EXECUTABLES NATIVE_TESTS),) check_elf_files_stamp := $(intermediates)/check_elf_files.timestamp $(check_elf_files_stamp): PRIVATE_SONAME := $(if $(filter $(LOCAL_MODULE_CLASS),SHARED_LIBRARIES),$(my_installed_module_stem)) $(check_elf_files_stamp): PRIVATE_ALLOW_UNDEFINED_SYMBOLS := $(LOCAL_ALLOW_UNDEFINED_SYMBOLS) $(check_elf_files_stamp): PRIVATE_SHARED_LIBRARY_FILES := # This variable will be set by `core/main.mk` $(check_elf_files_stamp): $(my_prebuilt_src_file) $(CHECK_ELF_FILE) $(LLVM_READOBJ) @echo Check prebuilt ELF binary: $< $(hide) mkdir -p $(dir $@) $(hide) rm -f $@ $(hide) $(CHECK_ELF_FILE) \ --skip-bad-elf-magic \ --skip-unknown-elf-machine \ $(if $(PRIVATE_SONAME),--soname $(PRIVATE_SONAME)) \ $(foreach l,$(PRIVATE_SHARED_LIBRARY_FILES),--shared-lib $(l)) \ $(if $(PRIVATE_ALLOW_UNDEFINED_SYMBOLS),--allow-undefined-symbols) \ --llvm-readobj=$(LLVM_READOBJ) \ $< $(hide) touch $@ ifneq ($(PRODUCT_CHECK_ELF_FILES)$(CHECK_ELF_FILES),) ifneq ($(LOCAL_CHECK_ELF_FILES),false) $(LOCAL_BUILT_MODULE): $(check_elf_files_stamp) check-elf-files: $(check_elf_files_stamp) endif # LOCAL_CHECK_ELF_FILES endif # PRODUCT_CHECK_ELF_FILES or CHECK_ELF_FILES endif # SHARED_LIBRARIES, EXECUTABLES, NATIVE_TESTS endif # !LOCAL_IS_HOST_MODULE core/clang/config.mk +2 −0 Original line number Diff line number Diff line ## Clang configurations. LLVM_READOBJ := $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-x86/$(LLVM_PREBUILTS_VERSION)/bin/llvm-readobj LLVM_RTLIB_PATH := $(LLVM_PREBUILTS_BASE)/linux-x86/$(LLVM_PREBUILTS_VERSION)/lib64/clang/$(LLVM_RELEASE_VERSION)/lib/linux/ define convert-to-clang-flags Loading core/clear_vars.mk +1 −0 Original line number Diff line number Diff line Loading @@ -304,6 +304,7 @@ LOCAL_WARNINGS_ENABLE:= LOCAL_WHOLE_STATIC_LIBRARIES:= LOCAL_XOM:= LOCAL_YACCFLAGS:= LOCAL_CHECK_ELF_FILES:= # TODO: deprecate, it does nothing OVERRIDE_BUILT_MODULE_PATH:= Loading core/config.mk +1 −0 Original line number Diff line number Diff line Loading @@ -707,6 +707,7 @@ JARJAR := $(HOST_OUT_JAVA_LIBRARIES)/jarjar.jar DATA_BINDING_COMPILER := $(HOST_OUT_JAVA_LIBRARIES)/databinding-compiler.jar FAT16COPY := build/make/tools/fat16copy.py CHECK_LINK_TYPE := build/make/tools/check_link_type.py CHECK_ELF_FILE := build/make/tools/check_elf_file.py LPMAKE := $(HOST_OUT_EXECUTABLES)/lpmake$(HOST_EXECUTABLE_SUFFIX) BUILD_SUPER_IMAGE := build/make/tools/releasetools/build_super_image.py Loading core/main.mk +37 −0 Original line number Diff line number Diff line Loading @@ -786,9 +786,43 @@ ifdef HOST_CROSS_OS $(call resolve-shared-libs-depes,HOST_CROSS_,,true) endif # Pass the shared libraries dependencies to prebuilt ELF file check. define add-elf-file-check-shared-lib $(1): PRIVATE_SHARED_LIBRARY_FILES += $(2) $(1): $(2) endef define resolve-shared-libs-for-elf-file-check $(foreach m,$($(if $(2),$($(1)2ND_ARCH_VAR_PREFIX))$(1)DEPENDENCIES_ON_SHARED_LIBRARIES),\ $(eval p := $(subst :,$(space),$(m)))\ $(eval mod := $(firstword $(p)))\ \ $(eval deps := $(subst $(comma),$(space),$(lastword $(p))))\ $(if $(2),$(eval deps := $(addsuffix $($(1)2ND_ARCH_MODULE_SUFFIX),$(deps))))\ $(eval root := $(1)OUT$(if $(call streq,$(1),TARGET_),_ROOT))\ $(eval deps := $(filter $($(root))/%$($(1)SHLIB_SUFFIX),$(call module-built-files,$(deps))))\ \ $(eval r := $(firstword $(filter \ $($(if $(2),$($(1)2ND_ARCH_VAR_PREFIX))TARGET_OUT_INTERMEDIATES)/EXECUTABLES/%\ $($(if $(2),$($(1)2ND_ARCH_VAR_PREFIX))TARGET_OUT_INTERMEDIATES)/NATIVE_TESTS/%\ $($(if $(2),$($(1)2ND_ARCH_VAR_PREFIX))TARGET_OUT_INTERMEDIATES)/SHARED_LIBRARIES/%,\ $(call module-built-files,$(mod)))))\ \ $(if $(r),\ $(eval stamp := $(dir $(r))check_elf_files.timestamp)\ $(eval $(call add-elf-file-check-shared-lib,$(stamp),$(deps)))\ )) endef $(call resolve-shared-libs-for-elf-file-check,TARGET_) ifdef TARGET_2ND_ARCH $(call resolve-shared-libs-for-elf-file-check,TARGET_,true) endif m := r := p := stamp := deps := add-required-deps := Loading Loading @@ -1529,6 +1563,9 @@ findbugs: $(INTERNAL_FINDBUGS_HTML_TARGET) $(INTERNAL_FINDBUGS_XML_TARGET) .PHONY: findlsdumps findlsdumps: $(FIND_LSDUMPS_FILE) .PHONY: check-elf-files check-elf-files: #xxx scrape this from ALL_MODULE_NAME_TAGS .PHONY: modules modules: Loading Loading
core/check_elf_file.mk 0 → 100644 +45 −0 Original line number Diff line number Diff line # Check the correctness of the prebuilt ELF files # # This check ensures that DT_SONAME matches with the filename, DT_NEEDED # matches the shared libraries specified in LOCAL_SHARED_LIBRARIES, and all # undefined symbols in the prebuilt binary can be found in one of the shared # libraries specified in LOCAL_SHARED_LIBRARIES. # # Inputs: # - LOCAL_ALLOW_UNDEFINED_SYMBOLS # - LOCAL_BUILT_MODULE # - LOCAL_IS_HOST_MODULE # - LOCAL_MODULE_CLASS # - intermediates # - my_installed_module_stem # - my_prebuilt_src_file ifndef LOCAL_IS_HOST_MODULE ifneq ($(filter $(LOCAL_MODULE_CLASS),SHARED_LIBRARIES EXECUTABLES NATIVE_TESTS),) check_elf_files_stamp := $(intermediates)/check_elf_files.timestamp $(check_elf_files_stamp): PRIVATE_SONAME := $(if $(filter $(LOCAL_MODULE_CLASS),SHARED_LIBRARIES),$(my_installed_module_stem)) $(check_elf_files_stamp): PRIVATE_ALLOW_UNDEFINED_SYMBOLS := $(LOCAL_ALLOW_UNDEFINED_SYMBOLS) $(check_elf_files_stamp): PRIVATE_SHARED_LIBRARY_FILES := # This variable will be set by `core/main.mk` $(check_elf_files_stamp): $(my_prebuilt_src_file) $(CHECK_ELF_FILE) $(LLVM_READOBJ) @echo Check prebuilt ELF binary: $< $(hide) mkdir -p $(dir $@) $(hide) rm -f $@ $(hide) $(CHECK_ELF_FILE) \ --skip-bad-elf-magic \ --skip-unknown-elf-machine \ $(if $(PRIVATE_SONAME),--soname $(PRIVATE_SONAME)) \ $(foreach l,$(PRIVATE_SHARED_LIBRARY_FILES),--shared-lib $(l)) \ $(if $(PRIVATE_ALLOW_UNDEFINED_SYMBOLS),--allow-undefined-symbols) \ --llvm-readobj=$(LLVM_READOBJ) \ $< $(hide) touch $@ ifneq ($(PRODUCT_CHECK_ELF_FILES)$(CHECK_ELF_FILES),) ifneq ($(LOCAL_CHECK_ELF_FILES),false) $(LOCAL_BUILT_MODULE): $(check_elf_files_stamp) check-elf-files: $(check_elf_files_stamp) endif # LOCAL_CHECK_ELF_FILES endif # PRODUCT_CHECK_ELF_FILES or CHECK_ELF_FILES endif # SHARED_LIBRARIES, EXECUTABLES, NATIVE_TESTS endif # !LOCAL_IS_HOST_MODULE
core/clang/config.mk +2 −0 Original line number Diff line number Diff line ## Clang configurations. LLVM_READOBJ := $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-x86/$(LLVM_PREBUILTS_VERSION)/bin/llvm-readobj LLVM_RTLIB_PATH := $(LLVM_PREBUILTS_BASE)/linux-x86/$(LLVM_PREBUILTS_VERSION)/lib64/clang/$(LLVM_RELEASE_VERSION)/lib/linux/ define convert-to-clang-flags Loading
core/clear_vars.mk +1 −0 Original line number Diff line number Diff line Loading @@ -304,6 +304,7 @@ LOCAL_WARNINGS_ENABLE:= LOCAL_WHOLE_STATIC_LIBRARIES:= LOCAL_XOM:= LOCAL_YACCFLAGS:= LOCAL_CHECK_ELF_FILES:= # TODO: deprecate, it does nothing OVERRIDE_BUILT_MODULE_PATH:= Loading
core/config.mk +1 −0 Original line number Diff line number Diff line Loading @@ -707,6 +707,7 @@ JARJAR := $(HOST_OUT_JAVA_LIBRARIES)/jarjar.jar DATA_BINDING_COMPILER := $(HOST_OUT_JAVA_LIBRARIES)/databinding-compiler.jar FAT16COPY := build/make/tools/fat16copy.py CHECK_LINK_TYPE := build/make/tools/check_link_type.py CHECK_ELF_FILE := build/make/tools/check_elf_file.py LPMAKE := $(HOST_OUT_EXECUTABLES)/lpmake$(HOST_EXECUTABLE_SUFFIX) BUILD_SUPER_IMAGE := build/make/tools/releasetools/build_super_image.py Loading
core/main.mk +37 −0 Original line number Diff line number Diff line Loading @@ -786,9 +786,43 @@ ifdef HOST_CROSS_OS $(call resolve-shared-libs-depes,HOST_CROSS_,,true) endif # Pass the shared libraries dependencies to prebuilt ELF file check. define add-elf-file-check-shared-lib $(1): PRIVATE_SHARED_LIBRARY_FILES += $(2) $(1): $(2) endef define resolve-shared-libs-for-elf-file-check $(foreach m,$($(if $(2),$($(1)2ND_ARCH_VAR_PREFIX))$(1)DEPENDENCIES_ON_SHARED_LIBRARIES),\ $(eval p := $(subst :,$(space),$(m)))\ $(eval mod := $(firstword $(p)))\ \ $(eval deps := $(subst $(comma),$(space),$(lastword $(p))))\ $(if $(2),$(eval deps := $(addsuffix $($(1)2ND_ARCH_MODULE_SUFFIX),$(deps))))\ $(eval root := $(1)OUT$(if $(call streq,$(1),TARGET_),_ROOT))\ $(eval deps := $(filter $($(root))/%$($(1)SHLIB_SUFFIX),$(call module-built-files,$(deps))))\ \ $(eval r := $(firstword $(filter \ $($(if $(2),$($(1)2ND_ARCH_VAR_PREFIX))TARGET_OUT_INTERMEDIATES)/EXECUTABLES/%\ $($(if $(2),$($(1)2ND_ARCH_VAR_PREFIX))TARGET_OUT_INTERMEDIATES)/NATIVE_TESTS/%\ $($(if $(2),$($(1)2ND_ARCH_VAR_PREFIX))TARGET_OUT_INTERMEDIATES)/SHARED_LIBRARIES/%,\ $(call module-built-files,$(mod)))))\ \ $(if $(r),\ $(eval stamp := $(dir $(r))check_elf_files.timestamp)\ $(eval $(call add-elf-file-check-shared-lib,$(stamp),$(deps)))\ )) endef $(call resolve-shared-libs-for-elf-file-check,TARGET_) ifdef TARGET_2ND_ARCH $(call resolve-shared-libs-for-elf-file-check,TARGET_,true) endif m := r := p := stamp := deps := add-required-deps := Loading Loading @@ -1529,6 +1563,9 @@ findbugs: $(INTERNAL_FINDBUGS_HTML_TARGET) $(INTERNAL_FINDBUGS_XML_TARGET) .PHONY: findlsdumps findlsdumps: $(FIND_LSDUMPS_FILE) .PHONY: check-elf-files check-elf-files: #xxx scrape this from ALL_MODULE_NAME_TAGS .PHONY: modules modules: Loading