diff options
Diffstat (limited to 'core/dynamic_binary.mk')
-rw-r--r-- | core/dynamic_binary.mk | 70 |
1 files changed, 36 insertions, 34 deletions
diff --git a/core/dynamic_binary.mk b/core/dynamic_binary.mk index fe498ed..38c0cbe 100644 --- a/core/dynamic_binary.mk +++ b/core/dynamic_binary.mk @@ -39,6 +39,40 @@ include $(BUILD_SYSTEM)/binary.mk ################################### ########################################################### +## Pack relocation tables +########################################################### +relocation_packer_input := $(linked_module) +relocation_packer_output := $(intermediates)/PACKED/$(my_built_module_stem) + +my_pack_module_relocations := $(LOCAL_PACK_MODULE_RELOCATIONS) + +ifeq ($(my_pack_module_relocations),) + my_pack_module_relocations := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_PACK_MODULE_RELOCATIONS) +endif + +# Do not pack relocations for executables. Because packing results in +# non-zero p_vaddr which causes kernel to load executables to lower +# address (starting at 0x8000) http://b/20665974 +ifeq ($(LOCAL_MODULE_CLASS),EXECUTABLES) + my_pack_module_relocations := false +endif + +# TODO (dimitry): Relocation packer is not yet available for darwin +ifneq ($(HOST_OS),linux) + my_pack_module_relocations := false +endif + +ifeq (true,$(my_pack_module_relocations)) +# Pack relocations +$(relocation_packer_output): $(relocation_packer_input) | $(ACP) + $(pack-elf-relocations) +else +$(relocation_packer_output): $(relocation_packer_input) | $(ACP) + @echo "target Unpacked: $(PRIVATE_MODULE) ($@)" + $(copy-file-to-target) +endif + +########################################################### ## Store a copy with symbols for symbolic debugging ########################################################### ifeq ($(LOCAL_UNSTRIPPED_PATH),) @@ -46,7 +80,7 @@ my_unstripped_path := $(TARGET_OUT_UNSTRIPPED)/$(patsubst $(PRODUCT_OUT)/%,%,$(m else my_unstripped_path := $(LOCAL_UNSTRIPPED_PATH) endif -symbolic_input := $(linked_module) +symbolic_input := $(relocation_packer_output) symbolic_output := $(my_unstripped_path)/$(my_installed_module_stem) $(symbolic_output) : $(symbolic_input) | $(ACP) @echo "target Symbolic: $(PRIVATE_MODULE) ($@)" @@ -57,7 +91,7 @@ $(symbolic_output) : $(symbolic_input) | $(ACP) ## Strip ########################################################### strip_input := $(symbolic_output) -strip_output := $(intermediates)/STRIPPED/$(my_built_module_stem) +strip_output := $(LOCAL_BUILT_MODULE) my_strip_module := $(LOCAL_STRIP_MODULE) ifeq ($(my_strip_module),) @@ -107,38 +141,6 @@ $(strip_output): $(strip_input) endif endif # my_strip_module -########################################################### -## Pack relocation tables -########################################################### -relocation_packer_input := $(strip_output) -relocation_packer_output := $(LOCAL_BUILT_MODULE) - -my_pack_module_relocations := $(LOCAL_PACK_MODULE_RELOCATIONS) - -ifeq ($(my_pack_module_relocations),) - my_pack_module_relocations := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_PACK_MODULE_RELOCATIONS) -endif - -# Do not pack relocations for static executables. -ifeq ($(LOCAL_FORCE_STATIC_EXECUTABLE),true) - my_pack_module_relocations := false -endif - -# TODO (dimitry): Relocation packer is not yet available for darwin -ifneq ($(HOST_OS),linux) - my_pack_module_relocations := false -endif - -ifeq (true,$(my_pack_module_relocations)) -# Pack relocations -$(relocation_packer_output): $(relocation_packer_input) | $(ACP) - $(pack-elf-relocations) -else -$(relocation_packer_output): $(relocation_packer_input) | $(ACP) - @echo "target Unpacked: $(PRIVATE_MODULE) ($@)" - $(copy-file-to-target) -endif - $(cleantarget): PRIVATE_CLEAN_FILES += \ $(linked_module) \ $(symbolic_output) \ |