summaryrefslogtreecommitdiff
path: root/bl31
diff options
context:
space:
mode:
authorSoby Mathew <soby.mathew@arm.com>2018-12-12 14:33:11 +0000
committerSoby Mathew <soby.mathew@arm.com>2018-12-17 15:25:49 +0000
commit5bfac4fc2f95647e57cc4e9ca3aaa46662890743 (patch)
treef7151060cd0c33415090c1a737bcf696f18b3037 /bl31
parent55cf015c20d6c768344338fd1215c729844a985f (diff)
BL31: correct GOT section omission
When the patch SHA 931f7c6 introduced PIE support for BL31, adding the GOT section when the SEPARATE_CODE_AND_RODATA=0 to the linker script was erroneously omitted. This patch corrects the same. Also the patch reduces the alignment requirement for GOT and RELA sections from 16 bytes to 8. Comments are added explain the intent for alignment. Change-Id: I8035cbf75f346f99bd56b13f32e0b3b70dd2fe6c Signed-off-by: Soby Mathew <soby.mathew@arm.com>
Diffstat (limited to 'bl31')
-rw-r--r--bl31/bl31.ld.S21
1 files changed, 16 insertions, 5 deletions
diff --git a/bl31/bl31.ld.S b/bl31/bl31.ld.S
index 43d0ed44..fd53ed82 100644
--- a/bl31/bl31.ld.S
+++ b/bl31/bl31.ld.S
@@ -66,11 +66,11 @@ SECTIONS
__CPU_OPS_END__ = .;
/*
- * Keep the .got section in the RO section as the it is patched
+ * Keep the .got section in the RO section as it is patched
* prior to enabling the MMU and having the .got in RO is better for
- * security.
+ * security. GOT is a table of addresses so ensure 8-byte alignment.
*/
- . = ALIGN(16);
+ . = ALIGN(8);
__GOT_START__ = .;
*(.got)
__GOT_END__ = .;
@@ -112,6 +112,16 @@ SECTIONS
KEEP(*(cpu_ops))
__CPU_OPS_END__ = .;
+ /*
+ * Keep the .got section in the RO section as it is patched
+ * prior to enabling the MMU and having the .got in RO is better for
+ * security. GOT is a table of addresses so ensure 8-byte alignment.
+ */
+ . = ALIGN(8);
+ __GOT_START__ = .;
+ *(.got)
+ __GOT_END__ = .;
+
/* Place pubsub sections for events */
. = ALIGN(8);
#include <pubsub_events.h>
@@ -165,11 +175,12 @@ SECTIONS
__DATA_END__ = .;
} >RAM
- . = ALIGN(16);
/*
* .rela.dyn needs to come after .data for the read-elf utility to parse
- * this section correctly.
+ * this section correctly. Ensure 8-byte alignment so that the fields of
+ * RELA data structure are aligned.
*/
+ . = ALIGN(8);
__RELA_START__ = .;
.rela.dyn . : {
} >RAM