19#ifndef ZEPHYR_INCLUDE_LINKER_LINKER_DEFS_H_
20#define ZEPHYR_INCLUDE_LINKER_LINKER_DEFS_H_
26#include <zephyr/offsets.h>
36#ifdef DT_NODE_HAS_STATUS
37#undef DT_NODE_HAS_STATUS
39#define DT_NODE_HAS_STATUS(node, status) 0
41#ifdef DT_NODE_HAS_STATUS_OKAY
42#undef DT_NODE_HAS_STATUS_OKAY
44#define DT_NODE_HAS_STATUS_OKAY(node) 0
54#define PLACE_SYMBOL_HERE(symbol) \
56 PROVIDE(_CONCAT(_, symbol) = symbol)
58#define PLACE_SYMBOL_HERE(symbol) symbol = .
70#define CREATE_OBJ_LEVEL(object, level) \
71 PLACE_SYMBOL_HERE(__##object##_##level##_start);\
72 KEEP(*(SORT(.z_##object##_##level##_P_?_*))); \
73 KEEP(*(SORT(.z_##object##_##level##_P_??_*))); \
74 KEEP(*(SORT(.z_##object##_##level##_P_???_*)));
82#elif defined(_ASMLANGUAGE)
88GDATA(__data_region_load_start)
89GDATA(__data_region_start)
90GDATA(__data_region_num_words)
107extern char _app_smem_start[];
108extern char _app_smem_end[];
109extern char _app_smem_size[];
110extern char _app_smem_rom_start[];
111extern char _app_smem_num_words[];
123extern char __kernel_ram_start[];
124extern char __kernel_ram_end[];
125extern char __kernel_ram_size[];
128extern char __bss_start[];
129extern char __bss_end[];
133extern char __data_region_load_start[];
134extern char __data_region_start[];
135extern char __data_region_end[];
140extern char z_mapped_start[];
141extern char z_mapped_end[];
145extern char __rom_region_start[];
146extern char __rom_region_end[];
147extern char __rom_region_size[];
150extern char _flash_used[];
153extern char _image_ram_start[];
154extern char _image_ram_end[];
155extern char _image_ram_size[];
157extern char __text_region_start[];
158extern char __text_region_end[];
159extern char __text_region_size[];
161extern char __rodata_region_start[];
162extern char __rodata_region_end[];
163extern char __rodata_region_size[];
165extern char _vector_start[];
166extern char _vector_end[];
168#ifdef CONFIG_SW_VECTOR_RELAY
169extern char __vector_relay_table[];
172#ifdef CONFIG_SRAM_VECTOR_TABLE
173extern char _sram_vector_start[];
174extern char _sram_vector_end[];
175extern char _sram_vector_size[];
178#ifdef CONFIG_COVERAGE_GCOV
179extern char __gcov_bss_start[];
180extern char __gcov_bss_end[];
181extern char __gcov_bss_size[];
187#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_itcm)))
188extern char __itcm_start[];
189extern char __itcm_end[];
190extern char __itcm_size[];
191extern char __itcm_load_start[];
194#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_dtcm)))
195extern char __dtcm_data_start[];
196extern char __dtcm_data_end[];
197extern char __dtcm_bss_start[];
198extern char __dtcm_bss_end[];
199extern char __dtcm_noinit_start[];
200extern char __dtcm_noinit_end[];
201extern char __dtcm_data_load_start[];
202extern char __dtcm_start[];
203extern char __dtcm_end[];
206#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_ocm)))
207extern char __ocm_data_start[];
208extern char __ocm_data_end[];
209extern char __ocm_bss_start[];
210extern char __ocm_bss_end[];
211extern char __ocm_start[];
212extern char __ocm_end[];
213extern char __ocm_size[];
219#ifdef CONFIG_ARM_FIRMWARE_HAS_SECURE_ENTRY_FUNCS
220extern char __sg_start[];
221extern char __sg_end[];
222extern char __sg_size[];
234#ifdef CONFIG_NOCACHE_MEMORY
235extern char _nocache_ram_start[];
236extern char _nocache_ram_end[];
237extern char _nocache_ram_size[];
238extern char _nocache_noload_ram_start[];
239extern char _nocache_noload_ram_end[];
240extern char _nocache_noload_ram_size[];
241extern char _nocache_load_ram_start[];
242extern char _nocache_load_ram_end[];
243extern char _nocache_load_ram_size[];
244extern char _nocache_load_rom_start[];
253#ifdef CONFIG_ARCH_HAS_RAMFUNC_SUPPORT
254extern char __ramfunc_region_start[];
255extern char __ramfunc_start[];
256extern char __ramfunc_end[];
257extern char __ramfunc_size[];
258extern char __ramfunc_load_start[];
267#ifdef CONFIG_USERSPACE
268extern char z_priv_stacks_ram_start[];
269extern char z_priv_stacks_ram_end[];
270extern char z_user_stacks_start[];
271extern char z_user_stacks_end[];
272extern char z_kobject_data_begin[];
275#if defined(CONFIG_STACK_CANARIES_TLS_PREPEND)
277extern char __stack_chk_start[];
278extern char __stack_chk_end[];
279extern char __stack_chk_size[];
280extern char __stack_chk_align[];
283#ifdef CONFIG_THREAD_LOCAL_STORAGE
284extern char __tdata_start[];
285extern char __tdata_end[];
286extern char __tdata_size[];
287extern char __tdata_align[];
288extern char __tbss_start[];
289extern char __tbss_end[];
290extern char __tbss_size[];
291extern char __tbss_align[];
292extern char __tls_start[];
293extern char __tls_end[];
294extern char __tls_size[];
297#ifdef CONFIG_LINKER_USE_BOOT_SECTION
301extern char lnkr_boot_start[];
302extern char lnkr_boot_end[];
304extern char lnkr_boot_text_start[];
305extern char lnkr_boot_text_end[];
306extern char lnkr_boot_text_size[];
307extern char lnkr_boot_data_start[];
308extern char lnkr_boot_data_end[];
309extern char lnkr_boot_data_size[];
310extern char lnkr_boot_rodata_start[];
311extern char lnkr_boot_rodata_end[];
312extern char lnkr_boot_rodata_size[];
313extern char lnkr_boot_bss_start[];
314extern char lnkr_boot_bss_end[];
315extern char lnkr_boot_bss_size[];
316extern char lnkr_boot_noinit_start[];
317extern char lnkr_boot_noinit_end[];
318extern char lnkr_boot_noinit_size[];
321#ifdef CONFIG_LINKER_USE_ONDEMAND_SECTION
327extern char lnkr_ondemand_start[];
328extern char lnkr_ondemand_end[];
329extern char lnkr_ondemand_load_start[];
331extern char lnkr_ondemand_text_start[];
332extern char lnkr_ondemand_text_end[];
333extern char lnkr_ondemand_text_size[];
334extern char lnkr_ondemand_rodata_start[];
335extern char lnkr_ondemand_rodata_end[];
336extern char lnkr_ondemand_rodata_size[];
342#undef DT_NODE_HAS_STATUS
343#undef DT_NODE_HAS_STATUS_OKAY
Definitions of various linker Sections.