This convenience macro wraps Z_DECL_ALIGN() and __in_section() to simplify static definitions of structure instances gathered in dedicated sections. Most of the time those go together, and the section name is already closely related to the struct type, so abstracting things behind a simpler interface reduces probability of mistakes and makes the code clearer. A few input section names have been adjusted accordingly. Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
138 lines
3.5 KiB
Text
138 lines
3.5 KiB
Text
/* SPDX-License-Identifier: Apache-2.0 */
|
|
|
|
#if defined(CONFIG_GEN_ISR_TABLES) && !defined(CONFIG_DYNAMIC_INTERRUPTS)
|
|
SECTION_PROLOGUE(sw_isr_table,,)
|
|
{
|
|
*(SW_ISR_TABLE)
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
#endif
|
|
#ifdef CONFIG_CPLUSPLUS
|
|
SECTION_PROLOGUE(_CTOR_SECTION_NAME,,)
|
|
{
|
|
/*
|
|
* The compiler fills the constructor pointers table below,
|
|
* hence symbol __CTOR_LIST__ must be aligned on 4 byte
|
|
* boundary. To align with the C++ standard, the first elment
|
|
* of the array contains the number of actual constructors. The
|
|
* last element is NULL.
|
|
*/
|
|
. = ALIGN(4);
|
|
__CTOR_LIST__ = .;
|
|
LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
|
|
KEEP(*(SORT_BY_NAME(".ctors*")))
|
|
LONG(0)
|
|
__CTOR_END__ = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
|
|
SECTION_PROLOGUE(init_array,,)
|
|
{
|
|
. = ALIGN(4);
|
|
__init_array_start = .;
|
|
KEEP(*(SORT_BY_NAME(".init_array*")))
|
|
__init_array_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
#endif
|
|
#ifdef CONFIG_USERSPACE
|
|
/* Build-time assignment of permissions to kernel objects to
|
|
* threads declared with K_THREAD_DEFINE()
|
|
*/
|
|
SECTION_PROLOGUE(object_access,,)
|
|
{
|
|
__object_access_start = .;
|
|
KEEP(*(".__k_object_assignment.*"))
|
|
__object_access_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
#endif
|
|
|
|
SECTION_PROLOGUE(app_shmem_regions,,)
|
|
{
|
|
__app_shmem_regions_start = .;
|
|
KEEP(*(SORT(".app_regions.*")));
|
|
__app_shmem_regions_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
|
|
SECTION_PROLOGUE (devconfig,,)
|
|
{
|
|
__devconfig_start = .;
|
|
*(".devconfig.*")
|
|
KEEP(*(SORT_BY_NAME(".devconfig*")))
|
|
__devconfig_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
|
|
SECTION_PROLOGUE(net_l2,,)
|
|
{
|
|
__net_l2_start = .;
|
|
*(".net_l2.init")
|
|
KEEP(*(SORT_BY_NAME(".net_l2.init*")))
|
|
__net_l2_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
|
|
#if defined(CONFIG_NET_SOCKETS)
|
|
SECTION_PROLOGUE(net_socket_register,,)
|
|
{
|
|
__net_socket_register_start = .;
|
|
*(".net_socket_register.init")
|
|
KEEP(*(SORT_BY_NAME(".net_socket_register.init*")))
|
|
__net_socket_register_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
#endif
|
|
|
|
SECTION_DATA_PROLOGUE(_bt_channels_area,,SUBALIGN(4))
|
|
{
|
|
_bt_channels_start = .;
|
|
KEEP(*(SORT_BY_NAME("._bt_channels.static.*")))
|
|
_bt_channels_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
|
|
#if defined(CONFIG_BT_BREDR)
|
|
SECTION_DATA_PROLOGUE(_bt_br_channels_area,,SUBALIGN(4))
|
|
{
|
|
_bt_br_channels_start = .;
|
|
KEEP(*(SORT_BY_NAME("._bt_br_channels.static.*")))
|
|
_bt_br_channels_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
#endif
|
|
|
|
SECTION_DATA_PROLOGUE(_bt_services_area,,SUBALIGN(4))
|
|
{
|
|
_bt_services_start = .;
|
|
KEEP(*(SORT_BY_NAME("._bt_services.static.*")))
|
|
_bt_services_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
|
|
#if defined(CONFIG_BT_SETTINGS)
|
|
SECTION_DATA_PROLOGUE(_bt_settings_area,,SUBALIGN(4))
|
|
{
|
|
_bt_settings_start = .;
|
|
KEEP(*(SORT_BY_NAME("._bt_settings_handler.static.*")))
|
|
_bt_settings_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
#endif
|
|
|
|
SECTION_DATA_PROLOGUE(log_const_sections,,)
|
|
{
|
|
__log_const_start = .;
|
|
KEEP(*(SORT(.log_const_*)));
|
|
__log_const_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
|
|
SECTION_DATA_PROLOGUE(log_backends_sections,,)
|
|
{
|
|
__log_backends_start = .;
|
|
KEEP(*(".log_backends"));
|
|
__log_backends_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
|
|
SECTION_DATA_PROLOGUE(shell_root_cmds_sections,,)
|
|
{
|
|
__shell_root_cmds_start = .;
|
|
KEEP(*(SORT(.shell_root_cmd_*)));
|
|
__shell_root_cmds_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|
|
|
|
SECTION_DATA_PROLOGUE(font_entry_sections,,)
|
|
{
|
|
__font_entry_start = .;
|
|
KEEP(*(SORT_BY_NAME(".font_entry.*")))
|
|
__font_entry_end = .;
|
|
} GROUP_LINK_IN(ROMABLE_REGION)
|