From 59ecb9e016953bcba93faaa200e15866bf1cfaca Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 5 Apr 2022 17:47:13 +0000 Subject: [PATCH] Revert "Produce mappings of hashes to elf symbols and r8 dictionaries" This reverts commit 3570b3ed86d0322a951a931487dd77e1e1a8e000. Reason for revert: b/228195288 Bug: 218888599 Change-Id: I17b38ca1b6f8940d682f2782515bfd5f8db1ce58 --- core/Makefile | 46 ++++++---------------------------- core/config.mk | 1 - core/definitions.mk | 44 -------------------------------- core/dynamic_binary.mk | 4 ++- core/main.mk | 7 ++---- core/soong_app_prebuilt.mk | 16 ++++-------- core/soong_cc_rust_prebuilt.mk | 2 +- core/soong_java_prebuilt.mk | 16 ++++-------- 8 files changed, 23 insertions(+), 113 deletions(-) diff --git a/core/Makefile b/core/Makefile index 7b9648258b..4c6ac37efc 100644 --- a/core/Makefile +++ b/core/Makefile @@ -6136,39 +6136,25 @@ dexpreopt_config_zip: $(DEXPREOPT_CONFIG_ZIP) # ----------------------------------------------------------------- # A zip of the symbols directory. Keep the full paths to make it # more obvious where these files came from. -# Also produces a textproto containing mappings from elf IDs to symbols -# filename, which will allow finding the appropriate symbols to deobfuscate -# a stack trace frame. # - name := $(TARGET_PRODUCT) ifeq ($(TARGET_BUILD_TYPE),debug) name := $(name)_debug endif +name := $(name)-symbols-$(FILE_NAME_TAG) -# The path to the zip file containing binaries with symbols. -SYMBOLS_ZIP := $(PRODUCT_OUT)/$(name)-symbols-$(FILE_NAME_TAG).zip -# The path to a file containing mappings from elf IDs to filenames. -SYMBOLS_MAPPING := $(PRODUCT_OUT)/$(name)-symbols-mapping-$(FILE_NAME_TAG).textproto -.KATI_READONLY := SYMBOLS_ZIP SYMBOLS_MAPPING +SYMBOLS_ZIP := $(PRODUCT_OUT)/$(name).zip # For apps_only build we'll establish the dependency later in build/make/core/main.mk. ifeq (,$(TARGET_BUILD_UNBUNDLED)) $(SYMBOLS_ZIP): $(INTERNAL_ALLIMAGES_FILES) $(updater_dep) endif $(SYMBOLS_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,symbols)/filelist -$(SYMBOLS_ZIP): PRIVATE_MAPPING_PACKAGING_DIR := $(call intermediates-dir-for,PACKAGING,elf_symbol_mapping) -$(SYMBOLS_ZIP): $(SOONG_ZIP) $(SYMBOLS_MAP) +$(SYMBOLS_ZIP): $(SOONG_ZIP) @echo "Package symbols: $@" $(hide) rm -rf $@ $(PRIVATE_LIST_FILE) - $(hide) mkdir -p $(TARGET_OUT_UNSTRIPPED) $(dir $(PRIVATE_LIST_FILE)) $(PRIVATE_MAPPING_PACKAGING_DIR) - # Find all of the files in the symbols directory and zip them into the symbols zip. + $(hide) mkdir -p $(dir $@) $(TARGET_OUT_UNSTRIPPED) $(dir $(PRIVATE_LIST_FILE)) $(hide) find -L $(TARGET_OUT_UNSTRIPPED) -type f | sort >$(PRIVATE_LIST_FILE) $(hide) $(SOONG_ZIP) --ignore_missing_files -d -o $@ -C $(OUT_DIR)/.. -l $(PRIVATE_LIST_FILE) - # Find all of the files in the symbols mapping directory and merge them into the symbols mapping textproto. - $(hide) find -L $(PRIVATE_MAPPING_PACKAGING_DIR) -type f | sort >$(PRIVATE_LIST_FILE) - $(hide) $(SYMBOLS_MAP) -merge $(SYMBOLS_MAPPING) -ignore_missing_files @$(PRIVATE_LIST_FILE) -$(SYMBOLS_ZIP): .KATI_IMPLICIT_OUTPUTS := $(SYMBOLS_MAPPING) - # ----------------------------------------------------------------- # A zip of the coverage directory. # @@ -6261,35 +6247,17 @@ endif # EMMA_INSTRUMENT=true #------------------------------------------------------------------ # A zip of Proguard obfuscation dictionary files. -# Also produces a textproto containing mappings from the hashes of the -# dictionary contents (which are also stored in the dex files on the -# devices) to the filename of the proguard dictionary, which will allow -# finding the appropriate dictionary to deobfuscate a stack trace frame. # - -# The path to the zip file containing proguard dictionaries. PROGUARD_DICT_ZIP := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-proguard-dict-$(FILE_NAME_TAG).zip -# The path to the zip file containing mappings from dictionary hashes to filenames. -PROGUARD_DICT_MAPPING := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-proguard-dict-mapping-$(FILE_NAME_TAG).textproto -.KATI_READONLY := PROGUARD_DICT_ZIP PROGUARD_DICT_MAPPING # For apps_only build we'll establish the dependency later in build/make/core/main.mk. ifeq (,$(TARGET_BUILD_UNBUNDLED)) $(PROGUARD_DICT_ZIP): $(INTERNAL_ALLIMAGES_FILES) $(updater_dep) endif $(PROGUARD_DICT_ZIP): PRIVATE_PACKAGING_DIR := $(call intermediates-dir-for,PACKAGING,proguard_dictionary) -$(PROGUARD_DICT_ZIP): PRIVATE_MAPPING_PACKAGING_DIR := $(call intermediates-dir-for,PACKAGING,proguard_dictionary_mapping) -$(PROGUARD_DICT_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,proguard_dictionary_filelist)/filelist -$(PROGUARD_DICT_ZIP): $(SOONG_ZIP) $(SYMBOLS_MAP) +$(PROGUARD_DICT_ZIP): $(SOONG_ZIP) @echo "Packaging Proguard obfuscation dictionary files." - rm -rf $@ $(PRIVATE_LIST_FILE) - mkdir -p $(PRIVATE_PACKAGING_DIR) $(PRIVATE_MAPPING_PACKAGING_DIR) $(dir $(PRIVATE_LIST_FILE)) - # Zip all of the files in the proguard dictionary directory. - $(SOONG_ZIP) --ignore_missing_files -d -o $@ -C $(PRIVATE_PACKAGING_DIR) -D $(PRIVATE_PACKAGING_DIR) - # Find all of the files in the proguard dictionary mapping directory and merge them into the mapping textproto. - # Strip the PRIVATE_PACKAGING_DIR off the filenames to match soong_zip's -C argument. - $(hide) find -L $(PRIVATE_MAPPING_PACKAGING_DIR) -type f | sort >$(PRIVATE_LIST_FILE) - $(SYMBOLS_MAP) -merge $(PROGUARD_DICT_MAPPING) -strip_prefix $(PRIVATE_PACKAGING_DIR)/ -ignore_missing_files @$(PRIVATE_LIST_FILE) -$(PROGUARD_DICT_ZIP): .KATI_IMPLICIT_OUTPUTS := $(PROGUARD_DICT_MAPPING) + mkdir -p $(dir $@) $(PRIVATE_PACKAGING_DIR) + $(SOONG_ZIP) --ignore_missing_files -d -o $@ -C $(PRIVATE_PACKAGING_DIR) -P out/target/common/obj -D $(PRIVATE_PACKAGING_DIR) #------------------------------------------------------------------ # A zip of Proguard usage files. diff --git a/core/config.mk b/core/config.mk index 205a2fbc70..e2bdcbd5b2 100644 --- a/core/config.mk +++ b/core/config.mk @@ -620,7 +620,6 @@ MAKE_RECOVERY_PATCH := $(HOST_OUT_EXECUTABLES)/make_recovery_patch$(HOST_EXECUTA OTA_FROM_TARGET_FILES := $(HOST_OUT_EXECUTABLES)/ota_from_target_files$(HOST_EXECUTABLE_SUFFIX) SPARSE_IMG := $(HOST_OUT_EXECUTABLES)/sparse_img$(HOST_EXECUTABLE_SUFFIX) CHECK_PARTITION_SIZES := $(HOST_OUT_EXECUTABLES)/check_partition_sizes$(HOST_EXECUTABLE_SUFFIX) -SYMBOLS_MAP := $(HOST_OUT_EXECUTABLES)/symbols_map PROGUARD_HOME := external/proguard PROGUARD := $(PROGUARD_HOME)/bin/proguard.sh diff --git a/core/definitions.mk b/core/definitions.mk index 2369a071d3..2711f57be4 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -3111,50 +3111,6 @@ done \ fi endef -# Copy an unstripped binary to the symbols directory while also extracting -# a hash mapping to the mapping directory. -# $(1): unstripped intermediates file -# $(2): path in symbols directory -define copy-unstripped-elf-file-with-mapping -$(call _copy-symbols-file-with-mapping,$(1),$(2),\ - elf,$(patsubst $(TARGET_OUT_UNSTRIPPED)/%,$(call intermediates-dir-for,PACKAGING,elf_symbol_mapping)/%,$(2).textproto)) -endef - -# Copy an R8 dictionary to the packaging directory while also extracting -# a hash mapping to the mapping directory. -# $(1): unstripped intermediates file -# $(2): path in packaging directory -# $(3): path in mappings packaging directory -define copy-r8-dictionary-file-with-mapping -$(call _copy-symbols-file-with-mapping,$(1),$(2),r8,$(3)) -endef - -# Copy an unstripped binary or R8 dictionary to the symbols directory -# while also extracting a hash mapping to the mapping directory. -# $(1): unstripped intermediates file -# $(2): path in symbols directory -# $(3): file type (elf or r8) -# $(4): path in the mappings directory -define _copy-symbols-file-with-mapping -$(2): .KATI_IMPLICIT_OUTPUTS := $(4) -$(2): $(SYMBOLS_MAP) -$(2): $(1) - @echo "Copy symbols with mapping: $$@" - $$(copy-file-to-target) - $(SYMBOLS_MAP) -$(strip $(3)) $(2) -write_if_changed $(4) -.KATI_RESTAT: $(2) -endef - -# Returns the directory to copy proguard dictionaries into -define local-proguard-dictionary-directory -$(call intermediates-dir-for,PACKAGING,proguard_dictionary)/out/target/common/obj/$(LOCAL_MODULE_CLASS)/$(LOCAL_MODULE)_intermediates -endef - -# Returns the directory to copy proguard dictionary mappings into -define local-proguard-dictionary-mapping-directory -$(call intermediates-dir-for,PACKAGING,proguard_dictionary_mapping)/out/target/common/obj/$(LOCAL_MODULE_CLASS)/$(LOCAL_MODULE)_intermediates -endef - ########################################################### ## Commands to call R8 diff --git a/core/dynamic_binary.mk b/core/dynamic_binary.mk index 0d2cd7f067..52d7ddc18f 100644 --- a/core/dynamic_binary.mk +++ b/core/dynamic_binary.mk @@ -55,7 +55,9 @@ my_unstripped_path := $(LOCAL_UNSTRIPPED_PATH) endif symbolic_input := $(inject_module) symbolic_output := $(my_unstripped_path)/$(my_installed_module_stem) -$(eval $(call copy-unstripped-elf-file-with-mapping,$(symbolic_input),$(symbolic_output))) +$(symbolic_output) : $(symbolic_input) + @echo "target Symbolic: $(PRIVATE_MODULE) ($@)" + $(copy-file-to-target) ########################################################### ## Store breakpad symbols diff --git a/core/main.mk b/core/main.mk index 6a2407c9b8..72958dab2d 100644 --- a/core/main.mk +++ b/core/main.mk @@ -1761,13 +1761,13 @@ else ifneq ($(TARGET_BUILD_APPS),) endif $(PROGUARD_DICT_ZIP) : $(apps_only_installed_files) - $(call dist-for-goals,apps_only, $(PROGUARD_DICT_ZIP) $(PROGUARD_DICT_MAPPING)) + $(call dist-for-goals,apps_only, $(PROGUARD_DICT_ZIP)) $(PROGUARD_USAGE_ZIP) : $(apps_only_installed_files) $(call dist-for-goals,apps_only, $(PROGUARD_USAGE_ZIP)) $(SYMBOLS_ZIP) : $(apps_only_installed_files) - $(call dist-for-goals,apps_only, $(SYMBOLS_ZIP) $(SYMBOLS_MAPPING)) + $(call dist-for-goals,apps_only, $(SYMBOLS_ZIP)) $(COVERAGE_ZIP) : $(apps_only_installed_files) $(call dist-for-goals,apps_only, $(COVERAGE_ZIP)) @@ -1818,9 +1818,7 @@ else ifeq ($(TARGET_BUILD_UNBUNDLED),$(TARGET_BUILD_UNBUNDLED_IMAGE)) $(INTERNAL_OTA_PARTIAL_PACKAGE_TARGET) \ $(INTERNAL_OTA_RETROFIT_DYNAMIC_PARTITIONS_PACKAGE_TARGET) \ $(SYMBOLS_ZIP) \ - $(SYMBOLS_MAPPING) \ $(PROGUARD_DICT_ZIP) \ - $(PROGUARD_DICT_MAPPING) \ $(PROGUARD_USAGE_ZIP) \ $(COVERAGE_ZIP) \ $(INSTALLED_FILES_FILE) \ @@ -1964,7 +1962,6 @@ sdk: $(ALL_SDK_TARGETS) $(call dist-for-goals,sdk, \ $(ALL_SDK_TARGETS) \ $(SYMBOLS_ZIP) \ - $(SYMBOLS_MAPPING) \ $(COVERAGE_ZIP) \ $(APPCOMPAT_ZIP) \ $(INSTALLED_BUILD_PROP_TARGET) \ diff --git a/core/soong_app_prebuilt.mk b/core/soong_app_prebuilt.mk index d771d22f8f..006e1dca24 100644 --- a/core/soong_app_prebuilt.mk +++ b/core/soong_app_prebuilt.mk @@ -100,24 +100,18 @@ ifdef LOCAL_SOONG_JACOCO_REPORT_CLASSES_JAR endif ifdef LOCAL_SOONG_PROGUARD_DICT - my_proguard_dictionary_directory := $(local-proguard-dictionary-directory) - my_proguard_dictionary_mapping_directory := $(local-proguard-dictionary-mapping-directory) $(eval $(call copy-one-file,$(LOCAL_SOONG_PROGUARD_DICT),\ $(intermediates.COMMON)/proguard_dictionary)) - $(eval $(call copy-r8-dictionary-file-with-mapping,\ - $(LOCAL_SOONG_PROGUARD_DICT),\ - $(my_proguard_dictionary_directory)/proguard_dictionary,\ - $(my_proguard_dictionary_mapping_directory)/proguard_dictionary.textproto)) + $(eval $(call copy-one-file,$(LOCAL_SOONG_PROGUARD_DICT),\ + $(call local-packaging-dir,proguard_dictionary)/proguard_dictionary)) $(eval $(call copy-one-file,$(LOCAL_SOONG_CLASSES_JAR),\ - $(my_proguard_dictionary_directory)/classes.jar)) + $(call local-packaging-dir,proguard_dictionary)/classes.jar)) $(call add-dependency,$(LOCAL_BUILT_MODULE),\ $(intermediates.COMMON)/proguard_dictionary) $(call add-dependency,$(LOCAL_BUILT_MODULE),\ - $(my_proguard_dictionary_directory)/proguard_dictionary) + $(call local-packaging-dir,proguard_dictionary)/proguard_dictionary) $(call add-dependency,$(LOCAL_BUILT_MODULE),\ - $(my_proguard_dictionary_mapping_directory)/proguard_dictionary.textproto) - $(call add-dependency,$(LOCAL_BUILT_MODULE),\ - $(my_proguard_dictionary_directory)/classes.jar) + $(call local-packaging-dir,proguard_dictionary)/classes.jar) endif ifdef LOCAL_SOONG_PROGUARD_USAGE_ZIP diff --git a/core/soong_cc_rust_prebuilt.mk b/core/soong_cc_rust_prebuilt.mk index 7a177ffd31..ca52374f12 100644 --- a/core/soong_cc_rust_prebuilt.mk +++ b/core/soong_cc_rust_prebuilt.mk @@ -184,7 +184,7 @@ ifndef LOCAL_IS_HOST_MODULE # drop /root as /root is mounted as / my_unstripped_path := $(patsubst $(TARGET_OUT_UNSTRIPPED)/root/%,$(TARGET_OUT_UNSTRIPPED)/%, $(my_unstripped_path)) symbolic_output := $(my_unstripped_path)/$(my_installed_module_stem) - $(eval $(call copy-unstripped-elf-file-with-mapping,$(LOCAL_SOONG_UNSTRIPPED_BINARY),$(symbolic_output))) + $(eval $(call copy-one-file,$(LOCAL_SOONG_UNSTRIPPED_BINARY),$(symbolic_output))) $(LOCAL_BUILT_MODULE): | $(symbolic_output) ifeq ($(BREAKPAD_GENERATE_SYMBOLS),true) diff --git a/core/soong_java_prebuilt.mk b/core/soong_java_prebuilt.mk index a8f475fd9a..b819cdc85c 100644 --- a/core/soong_java_prebuilt.mk +++ b/core/soong_java_prebuilt.mk @@ -62,24 +62,18 @@ ifdef LOCAL_SOONG_JACOCO_REPORT_CLASSES_JAR endif ifdef LOCAL_SOONG_PROGUARD_DICT - my_proguard_dictionary_directory := $(local-proguard-dictionary-directory) - my_proguard_dictionary_mapping_directory := $(local-proguard-dictionary-mapping-directory) $(eval $(call copy-one-file,$(LOCAL_SOONG_PROGUARD_DICT),\ $(intermediates.COMMON)/proguard_dictionary)) - $(eval $(call copy-r8-dictionary-file-with-mapping,\ - $(LOCAL_SOONG_PROGUARD_DICT),\ - $(my_proguard_dictionary_directory)/proguard_dictionary,\ - $(my_proguard_dictionary_mapping_directory)/proguard_dictionary.textproto)) + $(eval $(call copy-one-file,$(LOCAL_SOONG_PROGUARD_DICT),\ + $(call local-packaging-dir,proguard_dictionary)/proguard_dictionary)) $(eval $(call copy-one-file,$(LOCAL_SOONG_CLASSES_JAR),\ - $(my_proguard_dictionary_directory)/classes.jar)) + $(call local-packaging-dir,proguard_dictionary)/classes.jar)) $(call add-dependency,$(common_javalib.jar),\ $(intermediates.COMMON)/proguard_dictionary) $(call add-dependency,$(common_javalib.jar),\ - $(my_proguard_dictionary_directory)/proguard_dictionary) + $(call local-packaging-dir,proguard_dictionary)/proguard_dictionary) $(call add-dependency,$(common_javalib.jar),\ - $(my_proguard_dictionary_mapping_directory)/proguard_dictionary.textproto) - $(call add-dependency,$(common_javalib.jar),\ - $(my_proguard_dictionary_directory)/classes.jar) + $(call local-packaging-dir,proguard_dictionary)/classes.jar) endif ifdef LOCAL_SOONG_PROGUARD_USAGE_ZIP