mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-24 13:55:56 +00:00
FVP: Enable PIE for RESET_TO_BL31=1
This patch enabled PIE for FVP when RESET_TO_BL31=1. The references to BL31_BASE are replaced by BL31_START as being a symbol exported by the linker, will create a dynamic relocation entry in .rela.dyn and hence will be fixed up by dynamic linker at runtime. Also, we disable RECLAIM_INIT_CODE when PIE is enabled as the init section overlay creates some static relocations which cannot be handled by the dynamic linker currently. Change-Id: I86df1b0a8b2a8bbbe7c3f3c0b9a08c86c2963ec0 Signed-off-by: Soby Mathew <soby.mathew@arm.com>
This commit is contained in:
parent
bd83b39621
commit
fc922ca87c
3 changed files with 11 additions and 2 deletions
|
@ -202,7 +202,9 @@ ENABLE_AMU := 1
|
||||||
DYNAMIC_WORKAROUND_CVE_2018_3639 := 1
|
DYNAMIC_WORKAROUND_CVE_2018_3639 := 1
|
||||||
|
|
||||||
# Enable reclaiming of BL31 initialisation code for secondary cores stacks for FVP
|
# Enable reclaiming of BL31 initialisation code for secondary cores stacks for FVP
|
||||||
|
ifneq (${RESET_TO_BL31},1)
|
||||||
RECLAIM_INIT_CODE := 1
|
RECLAIM_INIT_CODE := 1
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq (${ENABLE_AMU},1)
|
ifeq (${ENABLE_AMU},1)
|
||||||
BL31_SOURCES += lib/cpus/aarch64/cortex_a75_pubsub.c \
|
BL31_SOURCES += lib/cpus/aarch64/cortex_a75_pubsub.c \
|
||||||
|
|
|
@ -25,11 +25,13 @@
|
||||||
static entry_point_info_t bl32_image_ep_info;
|
static entry_point_info_t bl32_image_ep_info;
|
||||||
static entry_point_info_t bl33_image_ep_info;
|
static entry_point_info_t bl33_image_ep_info;
|
||||||
|
|
||||||
|
#if !RESET_TO_BL31
|
||||||
/*
|
/*
|
||||||
* Check that BL31_BASE is above ARM_TB_FW_CONFIG_LIMIT. The reserved page
|
* Check that BL31_BASE is above ARM_TB_FW_CONFIG_LIMIT. The reserved page
|
||||||
* is required for SOC_FW_CONFIG/TOS_FW_CONFIG passed from BL2.
|
* is required for SOC_FW_CONFIG/TOS_FW_CONFIG passed from BL2.
|
||||||
*/
|
*/
|
||||||
CASSERT(BL31_BASE >= ARM_TB_FW_CONFIG_LIMIT, assert_bl31_base_overflows);
|
CASSERT(BL31_BASE >= ARM_TB_FW_CONFIG_LIMIT, assert_bl31_base_overflows);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Weak definitions may be overridden in specific ARM standard platform */
|
/* Weak definitions may be overridden in specific ARM standard platform */
|
||||||
#pragma weak bl31_early_platform_setup2
|
#pragma weak bl31_early_platform_setup2
|
||||||
|
@ -38,8 +40,8 @@ CASSERT(BL31_BASE >= ARM_TB_FW_CONFIG_LIMIT, assert_bl31_base_overflows);
|
||||||
#pragma weak bl31_plat_get_next_image_ep_info
|
#pragma weak bl31_plat_get_next_image_ep_info
|
||||||
|
|
||||||
#define MAP_BL31_TOTAL MAP_REGION_FLAT( \
|
#define MAP_BL31_TOTAL MAP_REGION_FLAT( \
|
||||||
BL31_BASE, \
|
BL31_START, \
|
||||||
BL31_END - BL31_BASE, \
|
BL31_END - BL31_START, \
|
||||||
MT_MEMORY | MT_RW | MT_SECURE)
|
MT_MEMORY | MT_RW | MT_SECURE)
|
||||||
#if RECLAIM_INIT_CODE
|
#if RECLAIM_INIT_CODE
|
||||||
IMPORT_SYM(unsigned long, __INIT_CODE_START__, BL_INIT_CODE_BASE);
|
IMPORT_SYM(unsigned long, __INIT_CODE_START__, BL_INIT_CODE_BASE);
|
||||||
|
|
|
@ -130,6 +130,11 @@ ARM_CRYPTOCELL_INTEG := 0
|
||||||
$(eval $(call assert_boolean,ARM_CRYPTOCELL_INTEG))
|
$(eval $(call assert_boolean,ARM_CRYPTOCELL_INTEG))
|
||||||
$(eval $(call add_define,ARM_CRYPTOCELL_INTEG))
|
$(eval $(call add_define,ARM_CRYPTOCELL_INTEG))
|
||||||
|
|
||||||
|
# Enable PIE support for RESET_TO_BL31 case
|
||||||
|
ifeq (${RESET_TO_BL31},1)
|
||||||
|
ENABLE_PIE := 1
|
||||||
|
endif
|
||||||
|
|
||||||
# CryptoCell integration relies on coherent buffers for passing data from
|
# CryptoCell integration relies on coherent buffers for passing data from
|
||||||
# the AP CPU to the CryptoCell
|
# the AP CPU to the CryptoCell
|
||||||
ifeq (${ARM_CRYPTOCELL_INTEG},1)
|
ifeq (${ARM_CRYPTOCELL_INTEG},1)
|
||||||
|
|
Loading…
Add table
Reference in a new issue