doc: release-notes: document aarch32 cortex_a_r linker command file changes
Document the changes implemented in #60368: * Placement of the .bss and .noinit sections at the end of the binary so that large zero-/uninitialized data structures such as heaps, arrays etc. don't have to be padded in the resulting binary. * Location of the z_mapped_start marker: prevents the assignment of the single 4k-page wide .vectors section right at the RAM base address as dynamic memory by the MMU at run-time. Instead of pointing to the start of the subsequent .text section, the z_mapped_start marker now covers all the data contained within the binary that ends up in RAM. Signed-off-by: Immo Birnbaum <mail@birnbaum.immo>
This commit is contained in:
parent
9e9e60b67f
commit
eb731abeb8
1 changed files with 24 additions and 1 deletions
|
@ -58,10 +58,33 @@ Kernel
|
||||||
Architectures
|
Architectures
|
||||||
*************
|
*************
|
||||||
|
|
||||||
* ARM
|
* ARC
|
||||||
|
|
||||||
* ARM
|
* ARM
|
||||||
|
|
||||||
|
* Fixed the Cortex-A/-R linker command file:
|
||||||
|
|
||||||
|
* The sections for zero-initialized (.bss) and uninitialized (.noinit) data
|
||||||
|
are now the last sections within the binary. This allows the linker to just
|
||||||
|
account for the required memory, but not having to actually include large
|
||||||
|
empty spaces within the binary. With the .bss and .noinit sections placed
|
||||||
|
somewhere in the middle of the resulting binary, as was the case with
|
||||||
|
previous releases, the linker had to pad the space for zero-/uninitialized
|
||||||
|
data due to subsequent sections containing initialized data. The inclusion
|
||||||
|
of large zero-initialized arrays or statically defined heaps reflected
|
||||||
|
directly in the size of the resulting binary, resulting in unnecessarily
|
||||||
|
large binaries, even when stripped.
|
||||||
|
* Fixed the location of the z_mapped_start address marker to point to the
|
||||||
|
base of RAM instead of to the start of the .text section. Therefore, the
|
||||||
|
single 4k page .vectors section, which is located right at the base of RAM
|
||||||
|
before the .text section and which was previously not included in the
|
||||||
|
mapped memory range, is now considered mapped and unavailable for dynamic
|
||||||
|
memory mapping via the MMU at run-time. This prevents the 4k page containing
|
||||||
|
the exception vectors data being mapped as regular memory at run-time, with
|
||||||
|
any subsequently mapped pages being located beyond the permanently mapped
|
||||||
|
memory regions (beyond z_mapped_end), resulting in non-contiguous memory
|
||||||
|
allocation for any first memory request greater than 4k.
|
||||||
|
|
||||||
* ARM64
|
* ARM64
|
||||||
|
|
||||||
* RISC-V
|
* RISC-V
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue