diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2020-04-22 11:27:55 +0900 |
---|---|---|
committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2020-06-29 15:51:50 +0900 |
commit | e8ad6168b0153e09f1a54ee887555db7833019df (patch) | |
tree | 3c0f14914adb4638dc288fe5fef1a9fa4d352dab | |
parent | edd8188d32eb989c069da185f47425ac739bfdfd (diff) | |
download | platform_external_arm-trusted-firmware-e8ad6168b0153e09f1a54ee887555db7833019df.tar.gz platform_external_arm-trusted-firmware-e8ad6168b0153e09f1a54ee887555db7833019df.tar.bz2 platform_external_arm-trusted-firmware-e8ad6168b0153e09f1a54ee887555db7833019df.zip |
linker_script: move .rela.dyn section to bl_common.ld.h
The .rela.dyn section is the same for BL2-AT-EL3, BL31, TSP.
Move it to the common header file.
I slightly changed the definition so that we can do "RELA_SECTION >RAM".
It still produced equivalent elf images.
Please note I got rid of '.' from the VMA field. Otherwise, if the end
of previous .data section is not 8-byte aligned, it fails to link.
aarch64-linux-gnu-ld.bfd: warning: changing start of section .rela.dyn by 4 bytes
aarch64-linux-gnu-ld.bfd: warning: changing start of section .rela.dyn by 4 bytes
aarch64-linux-gnu-ld.bfd: warning: changing start of section .rela.dyn by 4 bytes
make: *** [Makefile:1071: build/qemu/release/bl31/bl31.elf] Error 1
Change-Id: Iba7422d99c0374d4d9e97e6fd47bae129dba5cc9
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
-rw-r--r-- | bl2/bl2_el3.ld.S | 12 | ||||
-rw-r--r-- | bl31/bl31.ld.S | 12 | ||||
-rw-r--r-- | bl32/tsp/tsp.ld.S | 12 | ||||
-rw-r--r-- | include/common/bl_common.ld.h | 11 |
4 files changed, 14 insertions, 33 deletions
diff --git a/bl2/bl2_el3.ld.S b/bl2/bl2_el3.ld.S index 8c45d9898..bc1794c06 100644 --- a/bl2/bl2_el3.ld.S +++ b/bl2/bl2_el3.ld.S @@ -105,17 +105,7 @@ SECTIONS __DATA_RAM_START__ = __DATA_START__; __DATA_RAM_END__ = __DATA_END__; - /* - * .rela.dyn needs to come after .data for the read-elf utility to parse - * this section correctly. Ensure 8-byte alignment so that the fields of - * RELA data structure are aligned. - */ - . = ALIGN(8); - __RELA_START__ = .; - .rela.dyn . : { - } >RAM - __RELA_END__ = .; - + RELA_SECTION >RAM STACK_SECTION >RAM BSS_SECTION >RAM XLAT_TABLE_SECTION >RAM diff --git a/bl31/bl31.ld.S b/bl31/bl31.ld.S index 11e86a3c1..502650097 100644 --- a/bl31/bl31.ld.S +++ b/bl31/bl31.ld.S @@ -115,17 +115,7 @@ SECTIONS __RW_START__ = . ; DATA_SECTION >RAM - - /* - * .rela.dyn needs to come after .data for the read-elf utility to parse - * this section correctly. Ensure 8-byte alignment so that the fields of - * RELA data structure are aligned. - */ - . = ALIGN(8); - __RELA_START__ = .; - .rela.dyn . : { - } >RAM - __RELA_END__ = .; + RELA_SECTION >RAM #ifdef BL31_PROGBITS_LIMIT ASSERT(. <= BL31_PROGBITS_LIMIT, "BL31 progbits has exceeded its limit.") diff --git a/bl32/tsp/tsp.ld.S b/bl32/tsp/tsp.ld.S index bdcd2cf70..d86ae5587 100644 --- a/bl32/tsp/tsp.ld.S +++ b/bl32/tsp/tsp.ld.S @@ -71,17 +71,7 @@ SECTIONS __RW_START__ = . ; DATA_SECTION >RAM - - /* - * .rela.dyn needs to come after .data for the read-elf utility to parse - * this section correctly. Ensure 8-byte alignment so that the fields of - * RELA data structure are aligned. - */ - . = ALIGN(8); - __RELA_START__ = .; - .rela.dyn . : { - } >RAM - __RELA_END__ = .; + RELA_SECTION >RAM #ifdef TSP_PROGBITS_LIMIT ASSERT(. <= TSP_PROGBITS_LIMIT, "TSP progbits has exceeded its limit.") diff --git a/include/common/bl_common.ld.h b/include/common/bl_common.ld.h index 208e3d681..ab3391aa2 100644 --- a/include/common/bl_common.ld.h +++ b/include/common/bl_common.ld.h @@ -101,6 +101,17 @@ __DATA_END__ = .; \ } +/* + * .rela.dyn needs to come after .data for the read-elf utility to parse + * this section correctly. + */ +#define RELA_SECTION \ + .rela.dyn : ALIGN(STRUCT_ALIGN) { \ + __RELA_START__ = .; \ + *(.rela*) \ + __RELA_END__ = .; \ + } + #if !(defined(IMAGE_BL31) && RECLAIM_INIT_CODE) #define STACK_SECTION \ stacks (NOLOAD) : { \ |