From a814c4605907f68db593344facbf2541c4beedc2 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 30 Jul 2025 13:14:21 +0100 Subject: [PATCH] [riscv] Place explicitly zero-initialised variables in the .data section Variables in the .bss section cannot be relied upon to have zero values during early initialisation, before we have relocated ourselves to somewhere suitable in RAM and zeroed the .bss section. Place any explicitly zero-initialised variables in the .data section rather than in .bss, so that we can rely on their values even during this early initialisation stage. Signed-off-by: Michael Brown --- src/arch/riscv/Makefile.sbi | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/arch/riscv/Makefile.sbi b/src/arch/riscv/Makefile.sbi index d748ef42e..5e5dc9a6b 100644 --- a/src/arch/riscv/Makefile.sbi +++ b/src/arch/riscv/Makefile.sbi @@ -7,6 +7,13 @@ CFLAGS += -mcmodel=medany -fpie LDFLAGS += -pie --no-dynamic-linker -z combreloc +# Place explicitly zero-initialised variables in the .data section +# rather than in .bss, so that we can rely on their values even during +# parsing of the system memory map prior to relocation (and therefore +# prior to explicit zeroing of the .bss section). +# +CFLAGS += -fno-zero-initialized-in-bss + # Linker script # LDSCRIPT = arch/riscv/scripts/sbi.lds