feat(build): check that .text section starts at page boundary
Linker may decide to put new unspecified sections before .text
section. That will cause non-working image, because entry point isn't
at __BLXX_START__. Device just not booted with such image.
This happened for example with .note.gnu.build-id section generated
for LTO build in some cases. Now linker will report this situation as
an error.
```
/usr/lib/gcc-cross/aarch64-linux-gnu/13/../../../../aarch64-linux-gnu/bin/ld: .text is not aligned on a page boundary.
collect2: error: ld returned 1 exit status
```
Signed-off-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>
Change-Id: I5ae46ddd1e6e431e1df1715d1d301f6dd7181cc7
diff --git a/bl1/bl1.ld.S b/bl1/bl1.ld.S
index 49dda85..d25ec63 100644
--- a/bl1/bl1.ld.S
+++ b/bl1/bl1.ld.S
@@ -36,6 +36,9 @@
#if SEPARATE_CODE_AND_RODATA
.text . : {
+ ASSERT(. == ALIGN(PAGE_SIZE),
+ ".text address is not aligned on a page boundary.");
+
__TEXT_START__ = .;
*bl1_entrypoint.o(.text*)
@@ -80,6 +83,9 @@
} >ROM
#else /* SEPARATE_CODE_AND_RODATA */
.ro . : {
+ ASSERT(. == ALIGN(PAGE_SIZE),
+ ".ro address is not aligned on a page boundary.");
+
__RO_START__ = .;
*bl1_entrypoint.o(.text*)