unified: Add linker script support for all kernel object types
Enhance the linker script so that all statically-defined kernel objects of a given type are co-located. Note 1: This capability is needed so that static kernel objects can be added to the associated object tracing list. (Some kernel object types are already co-located to permit the kernel to do other initialzation on statically-defined objects.) Note 2: A follow-up commit is needed to ensure statically- defined kernel objects are placed in the sections referenced in the linker script. Note 3: The legacy script info remains for now to allow applications using the microkernel or nanokernel to continue to build. Change-Id: I40d831f9e183fb121c950e30fa8298b6d529375b Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
This commit is contained in:
parent
7dabe23485
commit
3f5c74c922
2 changed files with 98 additions and 2 deletions
|
@ -15,6 +15,98 @@
|
|||
SHELL_INIT_SECTIONS()
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_static_thread_area, (OPTIONAL),)
|
||||
{
|
||||
_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),)
|
||||
{
|
||||
_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),)
|
||||
{
|
||||
_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),)
|
||||
{
|
||||
KEEP(*(SORT_BY_NAME("._k_memory_pool.struct*")))
|
||||
_k_mem_pool_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_mem_pool.static.*")))
|
||||
_k_mem_pool_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_sem_area, (OPTIONAL),)
|
||||
{
|
||||
_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),)
|
||||
{
|
||||
_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),)
|
||||
{
|
||||
_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_fifo_area, (OPTIONAL),)
|
||||
{
|
||||
_k_fifo_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_fifo.static.*")))
|
||||
_k_fifo_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_lifo_area, (OPTIONAL),)
|
||||
{
|
||||
_k_lifo_list_start = .;
|
||||
KEEP(*(SORT_BY_NAME("._k_lifo.static.*")))
|
||||
_k_lifo_list_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
SECTION_DATA_PROLOGUE(_k_stack_area, (OPTIONAL),)
|
||||
{
|
||||
_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),)
|
||||
{
|
||||
_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),)
|
||||
{
|
||||
_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),)
|
||||
{
|
||||
_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_task_list, (OPTIONAL),)
|
||||
{
|
||||
_k_task_list_start = .;
|
||||
|
@ -72,4 +164,3 @@
|
|||
KEEP(*(SORT_BY_NAME("._k_memory_pool*")))
|
||||
_k_mem_pool_end = .;
|
||||
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
||||
|
||||
|
|
|
@ -460,7 +460,12 @@ class SizeCalculator:
|
|||
alloc_sections = ["bss", "noinit"]
|
||||
rw_sections = ["datas", "initlevel", "_k_mem_map_ptr", "_k_pipe_ptr",
|
||||
"_k_task_ptr", "_k_task_list", "_k_event_list",
|
||||
"_k_memory_pool", "exceptions", "initshell"]
|
||||
"_k_memory_pool", "exceptions", "initshell",
|
||||
"_static_thread_area", "_k_timer_area",
|
||||
"_k_mem_slab_area", "_k_mem_pool_area",
|
||||
"_k_sem_area", "_k_mutex_area", "_k_alert_area",
|
||||
"_k_fifo_area", "_k_lifo_area", "_k_stack_area",
|
||||
"_k_msgq_area", "_k_mbox_area", "_k_pipe_area"]
|
||||
# These get copied into RAM only on non-XIP
|
||||
ro_sections = ["text", "ctors", "init_array", "reset",
|
||||
"rodata", "devconfig"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue