aboutsummaryrefslogtreecommitdiff
path: root/core/pack_dyn_relocs_setup.mk
blob: f86e11e4066dd741752183230264bdd682535737 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#############################################################
## Set up my_pack_module_relocations
## Input variables:
##   DISABLE_RELOCATION_PACKER,
##   LOCAL_PACK_MODULE_RELOCATIONS*,
##   *TARGET_PACK_MODULE_RELOCATIONS,
##   LOCAL_MODULE_CLASS, HOST_OS
##   LOCAL_IS_HOST_MODULE
## Output variables:
##   my_pack_module_relocations, if false skip relocation_packer
#############################################################

my_pack_module_relocations := false
ifneq ($(DISABLE_RELOCATION_PACKER),true)
  my_pack_module_relocations := $(firstword \
    $(LOCAL_PACK_MODULE_RELOCATIONS_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) \
    $(LOCAL_PACK_MODULE_RELOCATIONS))
endif

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 ($(filter SHARED_LIBRARIES,$(LOCAL_MODULE_CLASS)),)
  my_pack_module_relocations := false
endif

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