[PATCH 1/3] firmware: Remove ALIGN in .rela.dyn in linker script

Vivian Wang dramforever at live.com
Sun Sep 17 10:52:49 PDT 2023


The .rela.dyn section should be exactly the size of the relocations,
without padding. On RV64, .rela* sections are already aligned and
there's no need for padding. On RV32, this adds padding up to 4 bytes,
which, if present, confuses the relocation loop into processing an extra
entry past the end of .rela*, and it crashes with an invalid memory
access.

Fixes: 0f20e8adcf42 ("firmware: Support position independent execution")
Signed-off-by: Vivian Wang <dramforever at live.com>
---
 firmware/fw_base.ldS | 1 -
 1 file changed, 1 deletion(-)

diff --git a/firmware/fw_base.ldS b/firmware/fw_base.ldS
index 3d68484..88b8dfd 100644
--- a/firmware/fw_base.ldS
+++ b/firmware/fw_base.ldS
@@ -49,7 +49,6 @@
 	.rela.dyn : {
 		PROVIDE(__rel_dyn_start = .);
 		*(.rela*)
-		. = ALIGN(8);
 		PROVIDE(__rel_dyn_end = .);
 	}
 
-- 
2.41.0




More information about the opensbi mailing list