All in all this makes cmake linker generator able to work for at least most of the kernel tests and samples, on cortex m4. Make the cmake linker generator have a file-structure more similar to the ld-skeletons. Add or edit groups, sections and logic to make the generator reflect what the ld-skeletons do, esp. for kobjects and APP_SMEM, nonint and some other details are also effected. Use the new zephyr_linker_include_generated() and zephyr_linker_include_var() functions to to handle ${DEVICE_API_LINKER_SECTIONS_CMAKE}, the kobject-prebuilt-*.h files and APP_SMEM partition. Essentially the output from gen_app_partitions.py, gen_kobject_placeholders.py. Add ALIGN_WITH_INPUT on sections being put into DATA_REGION. This makes the init layout work for ld. This leverages the updates in gen_app_partitions.py to generate its output as cmake linker generator sections too, and puts them into a group defined in linker.cmake Setup generator variables for alignment of APP_SMEM. Note that this does not yet handle MPU_ALIGN which depends on the size of the section... Fix broken k_object_assignment iterable section Signed-off-by: Björn Bergman <bjorn.bergman@iar.com>
20 lines
816 B
CMake
20 lines
816 B
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
# The contents of this file is based on include/zephyr/linker/kobject-rom.ld
|
|
# Please keep in sync
|
|
|
|
# During LINKER_KOBJECT_PREBUILT and LINKER_ZEPHYR_PREBUILT,
|
|
# space needs to be reserved for the rodata that will be
|
|
# produced by gperf during the final stages of linking.
|
|
# The alignment and size are produced by
|
|
# scripts/build/gen_kobject_placeholders.py. These are here
|
|
# so the addresses to kobjects would remain the same
|
|
# during the final stages of linking (LINKER_ZEPHYR_FINAL).
|
|
|
|
if(CONFIG_USERSPACE)
|
|
# By the magic of MIN_SIZE the space will be there
|
|
zephyr_linker_section_configure(SECTION .rodata KEEP INPUT ".kobject_data.rodata*"
|
|
MIN_SIZE @KOBJECT_RODATA_SZ@
|
|
ALIGN @KOBJECT_RODATA_ALIGN@
|
|
PASS LINKER_ZEPHYR_PREBUILT LINKER_ZEPHYR_FINAL
|
|
)
|
|
endif()
|