You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
link.x.in: put most __[se] symbols back into sections
This puts most start/end address symbols back into the sections.
Only `__ebss` and `__edata` are kept outside their sections so that
potential user code with external libraries can inject stuff using
`INSERT AFTER .bss/.data` and profit from the .bss/.data zeroing/loading
mechanism. This also leads to the `__sbss` and `__veneer_base` symbols
having the right section type (B not D in nm).
Also the trust zone start and end address are aligned to 32 bytes as per
the requirements. That section does cost up to 28 byte of FLASH due to
that alignment even if empty.
The .rodata start is kep free for the linker to alocate it after .text.
This enables users to inject sections between .text and .rodata and
removes the chance to get overlapping address errors. With this the
linker will by default place .rodata after .text as before.
This commit also adds and exposes a few more stable address start/end symbols
(__[se]uninit, __stext, __srodata) that are usefull for debugging and hooking
into.
See
rust-embedded/cortex-m-rt#287 (comment)
for discussion of the issues and description of this compromise solution.
0 commit comments