linker/common-ram.ld: force input section align
These special kernel sections represent arrays of kernel objects than are iterated over at runtime to perform initialization. The code expects all the data in these sections to be in the form of an array of that section type, with each element sizeof(type) bytes apart. Unfortunately, the linker sometimes has other plans and in some cases was defaulting to aligning the data to some large power-of-two value, such as 64 bytes. This causes any attempt to iterate over these sections to fail as they are not a proper array. Use the ld SUBALIGN() directive to force the alignment of these input sections to 4 bytes. Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
parent
65a9d2a94a
commit
02f021068f
1 changed files with 21 additions and 21 deletions
|
@ -15,28 +15,28 @@
|
|||
SHELL_INIT_SECTIONS()
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_static_thread_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_static_thread_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_static_thread_data_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._static_thread_data.static.*")))
|
||||
_static_thread_data_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_timer_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_timer_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_timer_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_timer.static.*")))
|
||||
_k_timer_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_mem_slab_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_mem_slab_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_mem_slab_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_mem_slab.static.*")))
|
||||
_k_mem_slab_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_mem_pool_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_mem_pool_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
KEEP(*(SORT_BY_NAME("._k_memory_pool.struct*")))
|
||||
_k_mem_pool_list_start = .;
|
||||
|
@ -44,70 +44,70 @@
|
|||
_k_mem_pool_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_sem_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_sem_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_sem_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_sem.static.*")))
|
||||
_k_sem_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_mutex_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_mutex_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_mutex_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_mutex.static.*")))
|
||||
_k_mutex_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_alert_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_alert_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_alert_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_alert.static.*")))
|
||||
_k_alert_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_queue_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_queue_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_queue_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_queue.static.*")))
|
||||
_k_queue_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_stack_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_stack_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_stack_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_stack.static.*")))
|
||||
_k_stack_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_msgq_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_msgq_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_msgq_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_msgq.static.*")))
|
||||
_k_msgq_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_mbox_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_mbox_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_mbox_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_mbox.static.*")))
|
||||
_k_mbox_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_pipe_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_pipe_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_pipe_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_pipe.static.*")))
|
||||
_k_pipe_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_work_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_work_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_work_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_work.static.*")))
|
||||
_k_work_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_task_list, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_task_list, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_task_list_start = .;
|
||||
*(._k_task_list.public.*)
|
||||
|
@ -118,7 +118,7 @@
|
|||
_k_task_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_event_list, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_event_list, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_k_event_list_start = .;
|
||||
*(._k_event_list.event.*)
|
||||
|
@ -126,7 +126,7 @@
|
|||
_k_event_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_memory_pool, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_k_memory_pool, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
*(._k_memory_pool.struct*)
|
||||
KEEP(*(SORT_BY_NAME("._k_memory_pool.struct*")))
|
||||
|
@ -137,13 +137,13 @@
|
|||
_k_mem_pool_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_net_buf_pool_area, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(_net_buf_pool_area, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
_net_buf_pool_list = .;
|
||||
KEEP(*(SORT_BY_NAME("._net_buf_pool.static.*")))
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(net_if, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(net_if, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
__net_if_start = .;
|
||||
*(".net_if.*")
|
||||
|
@ -151,7 +151,7 @@
|
|||
__net_if_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(net_if_event, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(net_if_event, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
__net_if_event_start = .;
|
||||
*(".net_if_event.*")
|
||||
|
@ -160,7 +160,7 @@
|
|||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
#if defined(CONFIG_NET_SHELL)
|
||||
SECTION_DATA_PROLOGUE(net_stack, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(net_stack, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
__net_stack_start = .;
|
||||
*(".net_stack.*")
|
||||
|
@ -169,7 +169,7 @@
|
|||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
#endif /* CONFIG_NET_SHELL */
|
||||
|
||||
SECTION_DATA_PROLOGUE(net_l2_data, (OPTIONAL),)
|
||||
SECTION_DATA_PROLOGUE(net_l2_data, (OPTIONAL), SUBALIGN(4))
|
||||
{
|
||||
__net_l2_data_start = .;
|
||||
*(".net_l2.data")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue