isr_tables: don't whole-archive library
As of today we have a bit weird situation with generated sw_isr_table / irq_vector_table tables. On the final linkage stage we pass two files which content section with sw_isr_table / irq_vector_table. They are * libarch__common.a (with an outdated tables from the first linkage stage) * isr_tables.c.obj (with an actual tables) The sections where tables are located are marked with ".gnu.linkonce" prefix. That means: <<<As a GNU extension, if the name begins with .gnu.linkonce, we only link a single copy of the section.>>> However the "libarch__common.a" is passed to linker with "--whole-archive" option which means <<<include every object file in the archive in the link, rather than searching the archive for the required object files>>> That combination confuses MWDT linker and breaks linkage with MWDT toolchain. As a simple fix we can move the sw_isr_table / irq_vector_table sections to their own library and link this library with "--no-whole-archive" option. Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
This commit is contained in:
parent
53e1d9866f
commit
a28ec6201f
1 changed files with 13 additions and 1 deletions
|
|
@ -5,7 +5,6 @@ if(CONFIG_GEN_ISR_TABLES OR CONFIG_EXECUTION_BENCHMARKING)
|
|||
|
||||
zephyr_library_sources_ifdef(
|
||||
CONFIG_GEN_ISR_TABLES
|
||||
isr_tables.c
|
||||
sw_isr_common.c
|
||||
)
|
||||
|
||||
|
|
@ -39,3 +38,16 @@ if (DEFINED CONFIG_ARM OR DEFINED CONFIG_X86
|
|||
OR DEFINED CONFIG_SOC_OPENISA_RV32M1_RISCV32)
|
||||
zephyr_linker_sources(ROM_START SORT_KEY 0x0 rom_start_offset.ld)
|
||||
endif()
|
||||
|
||||
|
||||
# isr_tables is a normal CMake library and not a zephyr_library because it
|
||||
# should not be --whole-archive'd
|
||||
if (CONFIG_GEN_ISR_TABLES)
|
||||
add_library(isr_tables
|
||||
isr_tables.c
|
||||
)
|
||||
|
||||
add_dependencies(isr_tables zephyr_generated_headers)
|
||||
target_link_libraries(isr_tables zephyr_interface)
|
||||
zephyr_library_link_libraries(isr_tables)
|
||||
endif()
|
||||
|
|
|
|||
Loading…
Reference in a new issue