blob: d81b215faccd11dc3fb1cd808a0a2f79267b8d7e [file] [log] [blame]
Torsten Rasmussen38040292021-05-06 11:49:35 +02001# originates from common-rom.ld
2
3zephyr_linker_section(NAME init KVMA RAM_REGION GROUP RODATA_REGION)
Gerard Marull-Paretase42f58e2022-10-11 17:17:18 +02004zephyr_linker_section_obj_level(SECTION init LEVEL EARLY)
Torsten Rasmussen38040292021-05-06 11:49:35 +02005zephyr_linker_section_obj_level(SECTION init LEVEL PRE_KERNEL_1)
6zephyr_linker_section_obj_level(SECTION init LEVEL PRE_KERNEL_2)
7zephyr_linker_section_obj_level(SECTION init LEVEL POST_KERNEL)
8zephyr_linker_section_obj_level(SECTION init LEVEL APPLICATION)
9zephyr_linker_section_obj_level(SECTION init LEVEL SMP)
10
Gerard Marull-Paretasd0e58ad2023-04-26 10:30:28 +020011zephyr_iterable_section(NAME device NUMERIC KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
Torsten Rasmussen38040292021-05-06 11:49:35 +020012
13if(CONFIG_GEN_SW_ISR_TABLE AND NOT CONFIG_DYNAMIC_INTERRUPTS)
14 # ld align has been changed to subalign to provide identical behavior scatter vs. ld.
15 zephyr_linker_section(NAME sw_isr_table KVMA FLASH GROUP RODATA_REGION SUBALIGN ${CONFIG_ARCH_SW_ISR_TABLE_ALIGN} NOINPUT)
16 zephyr_linker_section_configure(
17 SECTION sw_isr_table
18 INPUT ".gnu.linkonce.sw_isr_table*"
19 )
20endif()
21
22zephyr_linker_section(NAME initlevel_error KVMA RAM_REGION GROUP RODATA_REGION NOINPUT)
23zephyr_linker_section_configure(SECTION initlevel_error INPUT ".z_init_[_A-Z0-9]*" KEEP SORT NAME)
24# How to do cross linker ?
25# ASSERT(SIZEOF(initlevel_error) == 0, "Undefined initialization levels used.")
26
27
Stephanos Ioannidis4a64bfe2022-12-09 06:16:44 +090028if(CONFIG_CPP)
Torsten Rasmussen38040292021-05-06 11:49:35 +020029 zephyr_linker_section(NAME ctors KVMA RAM_REGION GROUP RODATA_REGION NOINPUT)
30 #
31 # The compiler fills the constructor pointers table below,
32 # hence symbol __CTOR_LIST__ must be aligned on word
Nazar Kazakov9713f0d2022-02-24 12:00:55 +000033 # boundary. To align with the C++ standard, the first element
Torsten Rasmussen38040292021-05-06 11:49:35 +020034 # of the array contains the number of actual constructors. The
35 # last element is NULL.
36 #
37# ToDo: Checkup on scatter loading. How to manage ?
38# https://www.keil.com/support/man/docs/armlink/armlink_pge1362066006368.htm
39# https://developer.arm.com/documentation/dui0378/g/The-ARM-C-and-C---Libraries
40# if(CONFIG_64BIT)
41# . = ALIGN(8);
42# __CTOR_LIST__ = .;
43# QUAD((__CTOR_END__ - __CTOR_LIST__) / 8 - 2)
44# KEEP(*(SORT_BY_NAME(".ctors*")))
45# QUAD(0)
46# __CTOR_END__ = .;
47# else()
48# . = ALIGN(4);
49# __CTOR_LIST__ = .;
50# LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
51# KEEP(*(SORT_BY_NAME(".ctors*")))
52# LONG(0)
53# __CTOR_END__ = .;
54# endif()
55# } GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
56#
57# SECTION_PROLOGUE(init_array,,)
58# {
59# . = ALIGN(4);
60# __init_array_start = .;
61# KEEP(*(SORT_BY_NAME(".init_array*")))
62# __init_array_end = .;
63# } GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
64endif()
65
66if(CONFIG_USERSPACE)
67 # Build-time assignment of permissions to kernel objects to
68 # threads declared with K_THREAD_DEFINE()
69 zephyr_linker_section(
70 NAME z_object_assignment_area
71 VMA FLASH NOINPUT
72 SUBALIGN 4
73 )
74 zephyr_linker_section_configure(
75 SECTION z_object_assignment
76 INPUT ".z_object_assignment.static.*"
77 KEEP SORT NAME
78 )
79endif()
80
81zephyr_linker_section(
82 NAME app_shmem_regions
83 KVMA RAM_REGION GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT}
84)
85zephyr_linker_section_configure(
86 SECTION app_shmem_regions
87 INPUT ".app_regions.*"
88 KEEP SORT NAME
89)
90
91if(CONFIG_NET_SOCKETS)
92 zephyr_iterable_section(NAME net_socket_register KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
93endif()
94
95
96if(CONFIG_NET_L2_PPP)
97 zephyr_iterable_section(NAME ppp_protocol_handler KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
98endif()
99
100zephyr_iterable_section(NAME bt_l2cap_fixed_chan KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
101
102if(CONFIG_BT_BREDR)
103 zephyr_iterable_section(NAME bt_l2cap_br_fixed_chan KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
104endif()
105
106if(CONFIG_BT_CONN)
107 zephyr_iterable_section(NAME bt_conn_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
108endif()
109
110zephyr_iterable_section(NAME bt_gatt_service_static KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
111
112if(CONFIG_BT_MESH)
113 zephyr_iterable_section(NAME bt_mesh_subnet_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
114 zephyr_iterable_section(NAME bt_mesh_app_key_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
115
116 zephyr_iterable_section(NAME bt_mesh_hb_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
117endif()
118
119if(CONFIG_BT_MESH_FRIEND)
120 zephyr_iterable_section(NAME bt_mesh_friend_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
121endif()
122
123if(CONFIG_BT_MESH_LOW_POWER)
124 zephyr_iterable_section(NAME bt_mesh_lpn_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
125endif()
126
127if(CONFIG_BT_MESH_PROXY)
128 zephyr_iterable_section(NAME bt_mesh_proxy_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
129endif()
130
131if(CONFIG_EC_HOST_CMD)
132 zephyr_iterable_section(NAME ec_host_cmd_handler KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
133endif()
134
135if(CONFIG_SETTINGS)
136 zephyr_iterable_section(NAME settings_handler_static KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
137endif()
138
Guangfu Hu335278d2023-05-19 10:26:13 +0800139if(CONFIG_SENSING)
140 zephyr_iterable_section(NAME sensing_sensor_info KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
141endif()
142
Maureen Helmeee3d8f2022-08-16 19:09:18 -0500143if(CONFIG_SENSOR_INFO)
144 zephyr_iterable_section(NAME sensor_info KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
145endif()
146
Yuval Peressed380de2023-04-25 23:17:46 -0600147if(CONFIG_SENSOR_ASYNC_API)
148 zephyr_iterable_section(NAME sensor_decoder_api KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
149endif()
150
Jamie McCraed7557102022-12-09 09:42:17 +0000151if(CONFIG_MCUMGR)
152 zephyr_iterable_section(NAME mcumgr_handler KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
153endif()
154
Torsten Rasmussen38040292021-05-06 11:49:35 +0200155zephyr_iterable_section(NAME k_p4wq_initparam KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
156
157if(CONFIG_EMUL)
Kumar Gala5c4d1842023-04-07 11:39:45 -0500158 zephyr_iterable_section(NAME emul KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
Torsten Rasmussen38040292021-05-06 11:49:35 +0200159endif()
160
161if(CONFIG_DNS_SD)
162 zephyr_iterable_section(NAME dns_sd_rec KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
163endif()
164
165if(CONFIG_PCIE)
Kumar Gala7469ad42023-04-18 15:48:56 -0500166 zephyr_iterable_section(NAME irq_alloc KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
Torsten Rasmussen38040292021-05-06 11:49:35 +0200167endif()
168
Kumar Galacaea9dc2023-03-16 05:55:18 +0000169zephyr_iterable_section(NAME log_strings KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
Torsten Rasmussen38040292021-05-06 11:49:35 +0200170
Kumar Galabae0a5b2023-03-16 05:50:14 +0000171zephyr_iterable_section(NAME log_const KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
Torsten Rasmussen38040292021-05-06 11:49:35 +0200172
Torsten Rasmussen38040292021-05-06 11:49:35 +0200173zephyr_iterable_section(NAME shell KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
174
Kumar Gala6b5139c2023-03-15 22:41:45 +0000175zephyr_iterable_section(NAME shell_root_cmds KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
176
177zephyr_iterable_section(NAME shell_subcmds KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
178
179zephyr_iterable_section(NAME shell_dynamic_subcmds KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
180
Kumar Gala47cf0002023-04-18 13:56:26 -0500181zephyr_iterable_section(NAME cfb_font KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
Torsten Rasmussen38040292021-05-06 11:49:35 +0200182
183zephyr_iterable_section(NAME tracing_backend KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
184
185zephyr_linker_section(NAME zephyr_dbg_info KVMA RAM_REGION GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT})
186zephyr_linker_section_configure(SECTION zephyr_dbg_info INPUT ".zephyr_dbg_info" KEEP)
187
Gerard Marull-Paretas48b201c2023-06-14 14:30:41 +0200188if (CONFIG_DEVICE_DEPS)
189 zephyr_linker_section(NAME device_deps KVMA RAM_REGION GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT} ENDALIGN 16)
190 zephyr_linker_section_configure(SECTION device_deps INPUT .__device_deps_pass1* KEEP SORT NAME PASS LINKER_DEVICE_DEPS_PASS1)
191 zephyr_linker_section_configure(SECTION device_deps INPUT .__device_deps_pass2* KEEP SORT NAME PASS NOT LINKER_DEVICE_DEPS_PASS1)
192endif()
Kumar Gala61f9d4b2023-03-17 15:27:31 +0000193
194zephyr_iterable_section(NAME _static_thread_data KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
Kumar Galaddddfd52023-03-16 17:52:14 +0000195
196if (CONFIG_BT_IAS)
197 zephyr_iterable_section(NAME bt_ias_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
198endif()
199
200if (CONFIG_LOG)
201 zephyr_iterable_section(NAME log_link KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
Kumar Gala9a77f3d2023-03-16 18:01:20 +0000202 zephyr_iterable_section(NAME log_backend KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
Kumar Galaddddfd52023-03-16 17:52:14 +0000203endif()
204
205if (CONFIG_HTTP_SERVER)
206 zephyr_iterable_section(NAME http_service_desc KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
207endif()
208
209if(CONFIG_INPUT)
210 zephyr_iterable_section(NAME input_listener KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
211endif()
212
213if(CONFIG_USBD_MSC_CLASS)
214 zephyr_iterable_section(NAME usbd_msc_lun KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
215endif()
Rodrigo Peixoto7e444692023-07-22 12:55:48 -0300216
217if(CONFIG_ZBUS)
218 zephyr_iterable_section(NAME zbus_channel KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
219 zephyr_iterable_section(NAME zbus_channel_observation KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
220endif()