diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2020-03-26 10:57:12 +0900 |
---|---|---|
committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2020-04-02 13:30:17 +0900 |
commit | 0a0a7a9ac82cb79af91f098cedc69cc67bca3978 (patch) | |
tree | f20e3a4f33e02cafc1c6f888c2c6567938795ed4 /bl2 | |
parent | 9fb288a03ed2ced7706defbbf78f008e921e17e2 (diff) | |
download | trusted-firmware-a-0a0a7a9ac82cb79af91f098cedc69cc67bca3978.tar.gz |
linker_script: replace common read-only data with RODATA_COMMON
The common section data are repeated in many linker scripts (often
twice in each script to support SEPARATE_CODE_AND_RODATA). When you
add a new read-only data section, you end up with touching lots of
places.
After this commit, you will only need to touch bl_common.ld.h when
you add a new section to RODATA_COMMON.
Replace a series of RO section with RODATA_COMMON, which contains
6 sections, some of which did not exist before.
This is not a big deal because unneeded data should not be compiled
in the first place. I believe this should be controlled by BL*_SOURCES
in Makefiles, not by linker scripts.
When I was working on this commit, the BL1 image size increased
due to the fconf_populator. Commit c452ba159c14 ("fconf: exclude
fconf_dyn_cfg_getter.c from BL1_SOURCES") fixed this issue.
I investigated BL1, BL2, BL2U, BL31 for plat=fvp, and BL2-AT-EL3,
BL31, BL31 for plat=uniphier. I did not see any more unexpected
code addition.
Change-Id: I5d14d60dbe3c821765bce3ae538968ef266f1460
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Diffstat (limited to 'bl2')
-rw-r--r-- | bl2/bl2.ld.S | 6 | ||||
-rw-r--r-- | bl2/bl2_el3.ld.S | 8 |
2 files changed, 4 insertions, 10 deletions
diff --git a/bl2/bl2.ld.S b/bl2/bl2.ld.S index afb0133900..dc5165280d 100644 --- a/bl2/bl2.ld.S +++ b/bl2/bl2.ld.S @@ -45,8 +45,7 @@ SECTIONS __RODATA_START__ = .; *(SORT_BY_ALIGNMENT(.rodata*)) - FCONF_POPULATOR - PARSER_LIB_DESCS + RODATA_COMMON . = ALIGN(PAGE_SIZE); __RODATA_END__ = .; @@ -58,8 +57,7 @@ SECTIONS *(SORT_BY_ALIGNMENT(.text*)) *(SORT_BY_ALIGNMENT(.rodata*)) - FCONF_POPULATOR - PARSER_LIB_DESCS + RODATA_COMMON *(.vectors) __RO_END_UNALIGNED__ = .; diff --git a/bl2/bl2_el3.ld.S b/bl2/bl2_el3.ld.S index d237990291..3c27443694 100644 --- a/bl2/bl2_el3.ld.S +++ b/bl2/bl2_el3.ld.S @@ -53,9 +53,7 @@ SECTIONS __RODATA_START__ = .; *(SORT_BY_ALIGNMENT(.rodata*)) - PARSER_LIB_DESCS - CPU_OPS - GOT + RODATA_COMMON . = ALIGN(PAGE_SIZE); __RODATA_END__ = .; @@ -73,9 +71,7 @@ SECTIONS *(SORT_BY_ALIGNMENT(.text*)) *(SORT_BY_ALIGNMENT(.rodata*)) - CPU_OPS - PARSER_LIB_DESCS - GOT + RODATA_COMMON *(.vectors) __RO_END_UNALIGNED__ = .; |