| # 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() |