From 0a7b65ef5e965c1e4a85e414129e3006e69b3c30 Mon Sep 17 00:00:00 2001 From: Eugeniy Paltsev Date: Wed, 2 Sep 2020 16:52:09 +0300 Subject: [PATCH] linker: tweak section naming to feet all linkers MWDT toolchain adds additional suffix to sections name in case of ffunction-sections / fdata-sections are enabled. As proposed by Andy Ross let's pick a single set of rules and syntax that work. Suggested-by: Andy Ross Signed-off-by: Eugeniy Paltsev --- include/linker/common-noinit.ld | 2 +- include/linker/common-rom.ld | 2 +- include/linker/intlist.ld | 8 ++++---- include/linker/linker-defs.h | 6 +++--- include/linker/sections.h | 4 ++-- scripts/gen_app_partitions.py | 6 +++--- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/include/linker/common-noinit.ld b/include/linker/common-noinit.ld index cc1b69a5536..a2fe9cd9d59 100644 --- a/include/linker/common-noinit.ld +++ b/include/linker/common-noinit.ld @@ -14,7 +14,7 @@ SECTION_PROLOGUE(_NOINIT_SECTION_NAME,(NOLOAD),) *(".noinit.*") #ifdef CONFIG_USERSPACE z_user_stacks_start = .; - *(.user_stacks) + *(.user_stacks*) z_user_stacks_end = .; #endif /* CONFIG_USERSPACE */ diff --git a/include/linker/common-rom.ld b/include/linker/common-rom.ld index 7636648b4e5..c01bebe0317 100644 --- a/include/linker/common-rom.ld +++ b/include/linker/common-rom.ld @@ -82,7 +82,7 @@ SECTION_PROLOGUE(app_shmem_regions,,) { __app_shmem_regions_start = .; - KEEP(*(SORT(".app_regions.*"))); + KEEP(*(SORT(.app_regions.*))); __app_shmem_regions_end = .; } GROUP_LINK_IN(ROMABLE_REGION) diff --git a/include/linker/intlist.ld b/include/linker/intlist.ld index d04a193221f..1eced6b623d 100644 --- a/include/linker/intlist.ld +++ b/include/linker/intlist.ld @@ -34,13 +34,13 @@ #ifndef LINKER_PASS2 SECTION_PROLOGUE(.intList,,) { - KEEP(*(.irq_info)) - KEEP(*(.intList)) + KEEP(*(.irq_info*)) + KEEP(*(.intList*)) } GROUP_LINK_IN(IDT_LIST) #else /DISCARD/ : { - KEEP(*(.irq_info)) - KEEP(*(.intList)) + KEEP(*(.irq_info*)) + KEEP(*(.intList*)) } #endif diff --git a/include/linker/linker-defs.h b/include/linker/linker-defs.h index 1bd9bd6249a..3fdcc9d0d79 100644 --- a/include/linker/linker-defs.h +++ b/include/linker/linker-defs.h @@ -39,7 +39,7 @@ #ifdef _LINKER #define Z_LINK_ITERABLE(struct_type) \ _CONCAT(_##struct_type, _list_start) = .; \ - KEEP(*(SORT_BY_NAME(._##struct_type##.static.*))); \ + KEEP(*(SORT_BY_NAME(._##struct_type.static.*))); \ _CONCAT(_##struct_type, _list_end) = . /* Define an output section which will set up an iterable area @@ -74,8 +74,8 @@ */ #define CREATE_OBJ_LEVEL(object, level) \ __##object##_##level##_start = .; \ - KEEP(*(SORT(.##object##_##level[0-9]))); \ - KEEP(*(SORT(.##object##_##level[1-9][0-9]))); + KEEP(*(SORT(.object##_##level[0-9]*))); \ + KEEP(*(SORT(.object##_##level[1-9][0-9]*))); /* * link in shell initialization objects for all modules that use shell and diff --git a/include/linker/sections.h b/include/linker/sections.h index 30265a1ebaa..96a9f419516 100644 --- a/include/linker/sections.h +++ b/include/linker/sections.h @@ -31,8 +31,8 @@ #define _UNDEFINED_SECTION_NAME undefined /* Interrupts */ -#define _IRQ_VECTOR_TABLE_SECTION_NAME .gnu.linkonce.irq_vector_table -#define _SW_ISR_TABLE_SECTION_NAME .gnu.linkonce.sw_isr_table +#define _IRQ_VECTOR_TABLE_SECTION_NAME .gnu.linkonce.irq_vector_table* +#define _SW_ISR_TABLE_SECTION_NAME .gnu.linkonce.sw_isr_table* /* Architecture-specific sections */ #if defined(CONFIG_ARM) diff --git a/scripts/gen_app_partitions.py b/scripts/gen_app_partitions.py index 1e94142cc10..38758f1a459 100644 --- a/scripts/gen_app_partitions.py +++ b/scripts/gen_app_partitions.py @@ -52,7 +52,7 @@ data_template = """ /* Auto generated code do not modify */ SMEM_PARTITION_ALIGN(z_data_smem_{0}_bss_end - z_data_smem_{0}_part_start); z_data_smem_{0}_part_start = .; - KEEP(*(data_smem_{0}_data)) + KEEP(*(data_smem_{0}_data*)) """ library_data_template = """ @@ -61,7 +61,7 @@ library_data_template = """ bss_template = """ z_data_smem_{0}_bss_start = .; - KEEP(*(data_smem_{0}_bss)) + KEEP(*(data_smem_{0}_bss*)) """ library_bss_template = """ @@ -92,7 +92,7 @@ size_cal_string = """ z_data_smem_{0}_bss_size = z_data_smem_{0}_bss_end - z_data_smem_{0}_bss_start; """ -section_regex = re.compile(r'data_smem_([A-Za-z0-9_]*)_(data|bss)') +section_regex = re.compile(r'data_smem_([A-Za-z0-9_]*)_(data|bss)*') elf_part_size_regex = re.compile(r'z_data_smem_(.*)_part_size')