# SPDX-License-Identifier: Apache-2.0 # The contents of this file is based on include/zephyr/linker/kobject-data.ld # Please keep in sync if(CONFIG_USERSPACE) zephyr_linker_section(NAME kobject_data GROUP ${K_OBJECTS_GROUP} ALIGN_WITH_INPUT NOINPUT) zephyr_linker_section_configure( SECTION kobject_data SYMBOLS z_kobject_data_begin ) if(CONFIG_DYNAMIC_OBJECTS) # generated by gperf, this avoids errors for the first build. # Also, we dont have KOBJECT_DATA_SZ for the first build zephyr_linker_section_configure( SECTION kobject_data SYMBOLS _thread_idx_map MIN_SIZE ${CONFIG_MAX_THREAD_BYTES} PASS NOT LINKER_ZEPHYR_PREBUILT LINKER_ZEPHYR_FINAL ) zephyr_linker_section_configure( SECTION kobject_data SYMBOLS _kobject_data_area_start _kobject_data_area_end PASS NOT LINKER_ZEPHYR_PREBUILT LINKER_ZEPHYR_FINAL ) endif() # 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_DYNAMIC_OBJECTS) # in LINKER_ZEPHYR_PREBUILT there is no object file defining _thread_idx_map # so we must have a synthetic one. Note that the size is not set here, # since the space is provided in the section below: zephyr_linker_section_configure( SECTION kobject_data SYMBOLS _thread_idx_map PASS LINKER_ZEPHYR_PREBUILT ) endif() zephyr_linker_section_configure( SECTION kobject_data INPUT ".kobject_data.data*" ".kobject_data.sdata*" PASS LINKER_ZEPHYR_PREBUILT LINKER_ZEPHYR_FINAL ALIGN @KOBJECT_DATA_ALIGN,undef:4@ MIN_SIZE @KOBJECT_DATA_SZ@ MAX_SIZE @KOBJECT_DATA_SZ@ SYMBOLS _kobject_data_area_start _kobject_data_area_end ) endif()