blob: f4c8a8998708ee478f425b3cf4a88b999fc5b801 [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
11zephyr_linker_section(NAME device KVMA RAM_REGION GROUP RODATA_REGION)
Gerard Marull-Paretase42f58e2022-10-11 17:17:18 +020012zephyr_linker_section_obj_level(SECTION device LEVEL EARLY)
Torsten Rasmussen38040292021-05-06 11:49:35 +020013zephyr_linker_section_obj_level(SECTION device LEVEL PRE_KERNEL_1)
14zephyr_linker_section_obj_level(SECTION device LEVEL PRE_KERNEL_2)
15zephyr_linker_section_obj_level(SECTION device LEVEL POST_KERNEL)
16zephyr_linker_section_obj_level(SECTION device LEVEL APPLICATION)
17zephyr_linker_section_obj_level(SECTION device LEVEL SMP)
18
19if(CONFIG_GEN_SW_ISR_TABLE AND NOT CONFIG_DYNAMIC_INTERRUPTS)
20 # ld align has been changed to subalign to provide identical behavior scatter vs. ld.
21 zephyr_linker_section(NAME sw_isr_table KVMA FLASH GROUP RODATA_REGION SUBALIGN ${CONFIG_ARCH_SW_ISR_TABLE_ALIGN} NOINPUT)
22 zephyr_linker_section_configure(
23 SECTION sw_isr_table
24 INPUT ".gnu.linkonce.sw_isr_table*"
25 )
26endif()
27
28zephyr_linker_section(NAME initlevel_error KVMA RAM_REGION GROUP RODATA_REGION NOINPUT)
29zephyr_linker_section_configure(SECTION initlevel_error INPUT ".z_init_[_A-Z0-9]*" KEEP SORT NAME)
30# How to do cross linker ?
31# ASSERT(SIZEOF(initlevel_error) == 0, "Undefined initialization levels used.")
32
33
34if(CONFIG_CPLUSPLUS)
35 zephyr_linker_section(NAME ctors KVMA RAM_REGION GROUP RODATA_REGION NOINPUT)
36 #
37 # The compiler fills the constructor pointers table below,
38 # hence symbol __CTOR_LIST__ must be aligned on word
Nazar Kazakov9713f0d2022-02-24 12:00:55 +000039 # boundary. To align with the C++ standard, the first element
Torsten Rasmussen38040292021-05-06 11:49:35 +020040 # of the array contains the number of actual constructors. The
41 # last element is NULL.
42 #
43# ToDo: Checkup on scatter loading. How to manage ?
44# https://www.keil.com/support/man/docs/armlink/armlink_pge1362066006368.htm
45# https://developer.arm.com/documentation/dui0378/g/The-ARM-C-and-C---Libraries
46# if(CONFIG_64BIT)
47# . = ALIGN(8);
48# __CTOR_LIST__ = .;
49# QUAD((__CTOR_END__ - __CTOR_LIST__) / 8 - 2)
50# KEEP(*(SORT_BY_NAME(".ctors*")))
51# QUAD(0)
52# __CTOR_END__ = .;
53# else()
54# . = ALIGN(4);
55# __CTOR_LIST__ = .;
56# LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
57# KEEP(*(SORT_BY_NAME(".ctors*")))
58# LONG(0)
59# __CTOR_END__ = .;
60# endif()
61# } GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
62#
63# SECTION_PROLOGUE(init_array,,)
64# {
65# . = ALIGN(4);
66# __init_array_start = .;
67# KEEP(*(SORT_BY_NAME(".init_array*")))
68# __init_array_end = .;
69# } GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
70endif()
71
72if(CONFIG_USERSPACE)
73 # Build-time assignment of permissions to kernel objects to
74 # threads declared with K_THREAD_DEFINE()
75 zephyr_linker_section(
76 NAME z_object_assignment_area
77 VMA FLASH NOINPUT
78 SUBALIGN 4
79 )
80 zephyr_linker_section_configure(
81 SECTION z_object_assignment
82 INPUT ".z_object_assignment.static.*"
83 KEEP SORT NAME
84 )
85endif()
86
87zephyr_linker_section(
88 NAME app_shmem_regions
89 KVMA RAM_REGION GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT}
90)
91zephyr_linker_section_configure(
92 SECTION app_shmem_regions
93 INPUT ".app_regions.*"
94 KEEP SORT NAME
95)
96
97if(CONFIG_NET_SOCKETS)
98 zephyr_iterable_section(NAME net_socket_register KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
99endif()
100
101
102if(CONFIG_NET_L2_PPP)
103 zephyr_iterable_section(NAME ppp_protocol_handler KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
104endif()
105
106zephyr_iterable_section(NAME bt_l2cap_fixed_chan KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
107
108if(CONFIG_BT_BREDR)
109 zephyr_iterable_section(NAME bt_l2cap_br_fixed_chan KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
110endif()
111
112if(CONFIG_BT_CONN)
113 zephyr_iterable_section(NAME bt_conn_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
114endif()
115
116zephyr_iterable_section(NAME bt_gatt_service_static KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
117
118if(CONFIG_BT_MESH)
119 zephyr_iterable_section(NAME bt_mesh_subnet_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
120 zephyr_iterable_section(NAME bt_mesh_app_key_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
121
122 zephyr_iterable_section(NAME bt_mesh_hb_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
123endif()
124
125if(CONFIG_BT_MESH_FRIEND)
126 zephyr_iterable_section(NAME bt_mesh_friend_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
127endif()
128
129if(CONFIG_BT_MESH_LOW_POWER)
130 zephyr_iterable_section(NAME bt_mesh_lpn_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
131endif()
132
133if(CONFIG_BT_MESH_PROXY)
134 zephyr_iterable_section(NAME bt_mesh_proxy_cb KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
135endif()
136
137if(CONFIG_EC_HOST_CMD)
138 zephyr_iterable_section(NAME ec_host_cmd_handler KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
139endif()
140
141if(CONFIG_SETTINGS)
142 zephyr_iterable_section(NAME settings_handler_static KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
143endif()
144
Maureen Helmeee3d8f2022-08-16 19:09:18 -0500145if(CONFIG_SENSOR_INFO)
146 zephyr_iterable_section(NAME sensor_info KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
147endif()
148
Jamie McCraed7557102022-12-09 09:42:17 +0000149if(CONFIG_MCUMGR)
150 zephyr_iterable_section(NAME mcumgr_handler KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
151endif()
152
Torsten Rasmussen38040292021-05-06 11:49:35 +0200153zephyr_iterable_section(NAME k_p4wq_initparam KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
154
155if(CONFIG_EMUL)
Abe Levkoy63d75cc2022-05-23 12:28:48 -0600156 zephyr_linker_section(NAME emulators_section GROUP RODATA_REGION ${XIP_ALIGN_WITH_INPUT})
157 zephyr_linker_section_configure(SECTION emulators_section INPUT ".emulators" KEEP SORT NAME)
Torsten Rasmussen38040292021-05-06 11:49:35 +0200158endif()
159
160if(CONFIG_DNS_SD)
161 zephyr_iterable_section(NAME dns_sd_rec KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
162endif()
163
164if(CONFIG_PCIE)
165 zephyr_linker_section(NAME irq_alloc GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT})
166 zephyr_linker_section_configure(SECTION irq_alloc INPUT ".irq_alloc*" KEEP SORT NAME)
167endif()
168
169zephyr_linker_section(NAME log_strings KVMA RAM_REGION GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT})
170zephyr_linker_section_configure(SECTION log_strings INPUT ".log_strings*" KEEP SORT NAME)
171
172zephyr_linker_section(NAME log_const KVMA RAM_REGION GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT})
173zephyr_linker_section_configure(SECTION log_const INPUT ".log_const_*" KEEP SORT NAME)
174
175zephyr_linker_section(NAME log_backends KVMA RAM_REGION GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT})
176zephyr_linker_section_configure(SECTION log_backends INPUT ".log_backends.*" KEEP)
177
178zephyr_iterable_section(NAME shell KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
179
180zephyr_linker_section(NAME shell_root_cmds KVMA RAM_REGION GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT})
181zephyr_linker_section_configure(SECTION shell_root_cmds INPUT ".shell_root_cmd_*" KEEP SORT NAME)
182
183zephyr_linker_section(NAME font_entry KVMA RAM_REGION GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT})
184zephyr_linker_section_configure(SECTION font_entry INPUT "._cfb_font.*" KEEP SORT NAME)
185
186zephyr_iterable_section(NAME tracing_backend KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN 4)
187
188zephyr_linker_section(NAME zephyr_dbg_info KVMA RAM_REGION GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT})
189zephyr_linker_section_configure(SECTION zephyr_dbg_info INPUT ".zephyr_dbg_info" KEEP)
190
191zephyr_linker_section(NAME device_handles KVMA RAM_REGION GROUP RODATA_REGION NOINPUT ${XIP_ALIGN_WITH_INPUT} ENDALIGN 16)
Jordan Yates28b2e552021-10-20 20:19:28 +1000192zephyr_linker_section_configure(SECTION device_handles INPUT .__device_handles_pass1* KEEP SORT NAME PASS LINKER_DEVICE_HANDLES_PASS1)
193zephyr_linker_section_configure(SECTION device_handles INPUT .__device_handles_pass2* KEEP SORT NAME PASS NOT LINKER_DEVICE_HANDLES_PASS1)