• Masahiro Yamada's avatar
    PIE: pass PIE options only to BL31 · 320920c1
    Masahiro Yamada authored
    
    
    docs/getting_started/build-options.rst clearly says ENABLE_PIE is
    currently only supported in BL31, but in fact, it has a stronger
    limitation:
    
      Defining ENABLE_PIE may corrupt BL1 and BL2. So, ENABLE_PIE is
      supported only for platforms where BL31 is the only image built
      in the TF-A tree.
    
    Currently, ENABLE_PIE is enabled by two platforms,
    plat/arm/common/arm_common.mk and ti/k3/common/plat_common.mk,
    both of which enable ENABLE_PIE together with RESET_TO_BL31.
    
    For platforms with the full boot sequence, ENABLE_PIE may break earlier
    BL stages. For example, if I build PLAT=qemu with ENABLE_PIE=1, it
    fails in BL1.
    
    When ENABLE_PIE is enabled, PIE options are added to TF_CFLAGS and
    TF_LDFLAGS, so all BL images are affected. It is problematic because
    currently only the BL31 linker script handles it. Even if BL1/BL2
    works, the image size would increase needlessly, at least.
    
    Pass the PIE options only to BL images that support it.
    
    Change-Id: I550e95148aa3c63571c8ad2081082c554a848f57
    Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
    320920c1
Makefile 35.8 KB