Skip to content

Commit 616cf40

Browse files
committed
cmake: define linker argument for undefined symbol
Specifying undefined symbol on linker invocation requests the linker to search and include the symbol. This ensures the symbol will be present in final output. Signed-off-by: Torsten Rasmussen <[email protected]>
1 parent 88d8f1e commit 616cf40

File tree

6 files changed

+15
-0
lines changed

6 files changed

+15
-0
lines changed

arch/common/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ if (CONFIG_GEN_ISR_TABLES)
109109
add_dependencies(isr_tables zephyr_generated_headers)
110110
target_link_libraries(isr_tables zephyr_interface)
111111
zephyr_library_link_libraries(isr_tables)
112+
113+
zephyr_link_libraries($<TARGET_PROPERTY:linker,undefined>_sw_isr_table)
114+
zephyr_link_libraries($<TARGET_PROPERTY:linker,undefined>_irq_vector_table)
112115
endif()
113116

114117
if(CONFIG_COVERAGE)

cmake/linker/arcmwdt/linker_flags.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ check_set_linker_property(TARGET linker PROPERTY orphan_error
4141
${LINKERFLAGPREFIX},--orphan-handling=error
4242
)
4343

44+
check_set_linker_property(TARGET linker PROPERTY undefined ${LINKERFLAGPREFIX},-u)
45+
4446
set_property(TARGET linker PROPERTY partial_linking "-r")
4547

4648
# Extra warnings options for twister run
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2025 Nordic Semiconductor
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
set_property(TARGET linker PROPERTY undefined --undefined=)

cmake/linker/iar/linker_flags.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ set_property(TARGET linker PROPERTY optimization_speed --entry_list_in_address_o
2323
set_property(TARGET linker PROPERTY optimization_size --entry_list_in_address_order)
2424
set_property(TARGET linker PROPERTY optimization_size_aggressive --entry_list_in_address_order)
2525

26+
set_linker_property(TARGET linker PROPERTY undefined "--keep;")
2627

2728
string(APPEND CMAKE_C_LINK_FLAGS --no-wrap-diagnostics)
2829

cmake/linker/ld/linker_flags.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ check_set_linker_property(TARGET linker PROPERTY orphan_error
2222
${LINKERFLAGPREFIX},--orphan-handling=error
2323
)
2424

25+
set_property(TARGET linker PROPERTY undefined ${LINKERFLAGPREFIX},--undefined=)
26+
2527
check_set_linker_property(TARGET linker PROPERTY memusage "${LINKERFLAGPREFIX},--print-memory-usage")
2628

2729
check_set_linker_property(TARGET linker PROPERTY sanitizer_undefined -fsanitize=undefined)

cmake/linker/xt-ld/linker_flags.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,5 @@ check_set_linker_property(TARGET linker PROPERTY sort_alignment
3434
${LINKERFLAGPREFIX},--sort-common=descending
3535
${LINKERFLAGPREFIX},--sort-section=alignment
3636
)
37+
38+
set_property(TARGET linker PROPERTY undefined ${LINKERFLAGPREFIX},--undefined=)

0 commit comments

Comments
 (0)