Skip to content

Commit d8545f4

Browse files
committed
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 <[email protected]>
1 parent 9b4fede commit d8545f4

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

doc/releases/release-notes-3.5.rst

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,33 @@ Kernel
4444
Architectures
4545
*************
4646

47-
* ARM
47+
* ARC
4848

4949
* ARM
5050

51+
* Fixed the Cortex-A/-R linker command file:
52+
53+
* The sections for zero-initialized (.bss) and uninitialized (.noinit) data
54+
are now the last sections within the binary. This allows the linker to just
55+
account for the required memory, but not having to actually include large
56+
empty spaces within the binary. With the .bss and .noinit sections placed
57+
somewhere in the middle of the resulting binary, as was the case with
58+
previous releases, the linker had to pad the space for zero-/uninitialized
59+
data due to subsequent sections containing initialized data. The inclusion
60+
of large zero-initialized arrays or statically defined heaps reflected
61+
directly in the size of the resulting binary, resulting in unnecessarily
62+
large binaries, even when stripped.
63+
* Fixed the location of the z_mapped_start address marker to point to the
64+
base of RAM instead of to the start of the .text section. Therefore, the
65+
single 4k page .vectors section, which is located right at the base of RAM
66+
before the .text section and which was previously not included in the
67+
mapped memory range, is now considered mapped and unavailable for dynamic
68+
memory mapping via the MMU at run-time. This prevents the 4k page containing
69+
the exception vectors data being mapped as regular memory at run-time, with
70+
any subsequently mapped pages being located beyond the permanently mapped
71+
memory regions (beyond z_mapped_end), resulting in non-contiguous memory
72+
allocation for any first memory request greater than 4k.
73+
5174
* ARM64
5275

5376
* RISC-V

0 commit comments

Comments
 (0)