From bf2af95f73ad446fb4596fa7e65d4fd67a1b2bc5 Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Tue, 30 Jul 2019 22:32:20 -0700 Subject: [PATCH] Explicitly add lld's relr relocation flags for Android Pie and above Bug: http://b/119086751 https://android-review.googlesource.com/c/837025 disabled lld relocation packing globally and enabled it for soong modules targeting pie and above. Turn it on for Android.mk modules as well. Test: grep for -Wl,pack-dyn-relocs=android in out/build-aosp_.ninja Change-Id: I81b8625073aa6b364219b8cf3122b69c95ec7589 --- core/binary.mk | 4 +++- core/pack_dyn_relocs_setup.mk | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/binary.mk b/core/binary.mk index 531e4c31d..8c271d12b 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -1614,7 +1614,9 @@ my_target_global_cppflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_$(my_prefix)GLO ifeq ($(my_use_clang_lld),true) my_target_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_$(my_prefix)GLOBAL_LLDFLAGS) include $(BUILD_SYSTEM)/pack_dyn_relocs_setup.mk - ifeq ($(my_pack_module_relocations),false) + ifeq ($(my_pack_module_relocations),true) + my_target_global_ldflags += -Wl,--pack-dyn-relocs=android+relr -Wl,--use-android-relr-tags + else my_target_global_ldflags += -Wl,--pack-dyn-relocs=none endif else diff --git a/core/pack_dyn_relocs_setup.mk b/core/pack_dyn_relocs_setup.mk index c5564b1ec..f86e11e40 100644 --- a/core/pack_dyn_relocs_setup.mk +++ b/core/pack_dyn_relocs_setup.mk @@ -32,3 +32,12 @@ ifdef LOCAL_IS_HOST_MODULE # Do not pack relocations on host modules my_pack_module_relocations := false endif + +# Lld relocation packing cannot be enabled for binaries before Android Pie. +ifneq ($(LOCAL_SDK_VERSION),) + ifneq ($(LOCAL_SDK_VERSION),current) + ifeq ($(call math_lt,$(LOCAL_SDK_VERSION),28),true) + my_pack_module_relocations := false + endif + endif +endif