mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-24 23:41:23 +01:00

The linker sections .sdata and .sbss are missing from the linker script fw_base.ldS. Add them to the .data and .bss sections. On current builds, most variables are in the .sbss section. They are not correctly initialized to zero, because they are not within the boundaries indicated by _bss_start and _bss_end. Currently, this does not cause any issues, however with relocation support lock-ups may occur due to incorrectly initialized lock variables. Signed-off-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de> Acked-by: Anup Patel <anup.patel@wdc.com>
82 lines
1.4 KiB
Plaintext
82 lines
1.4 KiB
Plaintext
/*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*
|
|
* Copyright (c) 2019 Western Digital Corporation or its affiliates.
|
|
*
|
|
* Authors:
|
|
* Anup Patel <anup.patel@wdc.com>
|
|
*/
|
|
|
|
. = FW_TEXT_START;
|
|
|
|
PROVIDE(_fw_start = .);
|
|
|
|
. = ALIGN(0x1000); /* Need this to create proper sections */
|
|
|
|
/* Beginning of the code section */
|
|
|
|
.text :
|
|
{
|
|
PROVIDE(_text_start = .);
|
|
*(.entry)
|
|
*(.text)
|
|
. = ALIGN(8);
|
|
PROVIDE(_text_end = .);
|
|
}
|
|
|
|
. = ALIGN(0x1000); /* Ensure next section is page aligned */
|
|
|
|
/* End of the code sections */
|
|
|
|
/* Beginning of the read-only data sections */
|
|
|
|
. = ALIGN(0x1000); /* Ensure next section is page aligned */
|
|
|
|
.rodata :
|
|
{
|
|
PROVIDE(_rodata_start = .);
|
|
*(.rodata .rodata.*)
|
|
. = ALIGN(8);
|
|
PROVIDE(_rodata_end = .);
|
|
}
|
|
|
|
/* End of the read-only data sections */
|
|
|
|
/* Beginning of the read-write data sections */
|
|
|
|
. = ALIGN(0x1000); /* Ensure next section is page aligned */
|
|
|
|
.data :
|
|
{
|
|
PROVIDE(_data_start = .);
|
|
|
|
*(.sdata)
|
|
*(.sdata.*)
|
|
*(.data)
|
|
*(.data.*)
|
|
*(.readmostly.data)
|
|
*(*.data)
|
|
. = ALIGN(8);
|
|
|
|
PROVIDE(_data_end = .);
|
|
}
|
|
|
|
. = ALIGN(0x1000); /* Ensure next section is page aligned */
|
|
|
|
.bss :
|
|
{
|
|
PROVIDE(_bss_start = .);
|
|
*(.sbss)
|
|
*(.sbss.*)
|
|
*(.bss)
|
|
*(.bss.*)
|
|
. = ALIGN(8);
|
|
PROVIDE(_bss_end = .);
|
|
}
|
|
|
|
/* End of the read-write data sections */
|
|
|
|
. = ALIGN(0x1000); /* Need this to create proper sections */
|
|
|
|
PROVIDE(_fw_end = .);
|