1# Copyright (c) 2024 Nordic Semiconductor 2# 3# SPDX-License-Identifier: Apache-2.0 4 5check_set_linker_property(TARGET linker PROPERTY base 6 ${LINKERFLAGPREFIX},--gc-sections 7 ${LINKERFLAGPREFIX},--build-id=none 8) 9 10check_set_linker_property(TARGET linker PROPERTY baremetal 11 -nostdlib 12 -static 13 ${LINKERFLAGPREFIX},-X 14 ${LINKERFLAGPREFIX},-N 15) 16 17check_set_linker_property(TARGET linker PROPERTY orphan_warning 18 ${LINKERFLAGPREFIX},--orphan-handling=warn 19) 20 21check_set_linker_property(TARGET linker PROPERTY orphan_error 22 ${LINKERFLAGPREFIX},--orphan-handling=error 23) 24 25check_set_linker_property(TARGET linker PROPERTY memusage "${LINKERFLAGPREFIX},--print-memory-usage") 26 27check_set_linker_property(TARGET linker PROPERTY sanitizer_undefined -fsanitize=undefined) 28check_set_linker_property(TARGET linker PROPERTY sanitizer_undefined_trap -fsanitize-undefined-trap-on-error) 29check_set_linker_property(TARGET linker PROPERTY sanitizer_undefined_library) 30 31# -no-pie is not supported until binutils 2.37. 32# If -no-pie is passed to old binutils <= 2.36, it is parsed 33# as separate arguments -n and -o, which results in output file 34# called "-pie". 35if("${GNULD_VERSION_STRING}" VERSION_GREATER_EQUAL 2.37) 36 set_property(TARGET linker PROPERTY no_position_independent "${LINKERFLAGPREFIX},-no-pie") 37else() 38 set_property(TARGET linker PROPERTY no_position_independent) 39endif() 40 41set_property(TARGET linker PROPERTY partial_linking "-r") 42 43set_property(TARGET linker PROPERTY lto_arguments -flto=auto -fno-ipa-sra -ffunction-sections -fdata-sections) 44 45check_set_linker_property(TARGET linker PROPERTY no_relax ${LINKERFLAGPREFIX},--no-relax) 46 47check_set_linker_property(TARGET linker PROPERTY sort_alignment 48 ${LINKERFLAGPREFIX},--sort-common=descending 49 ${LINKERFLAGPREFIX},--sort-section=alignment 50) 51 52# Some linker flags might not be purely ld specific, but a combination of 53# linker and compiler, such as: 54# --coverage for clang 55# --gcov for gcc 56# So load those flags now. 57include(${ZEPHYR_BASE}/cmake/linker/${LINKER}/${COMPILER}/linker_flags.cmake OPTIONAL) 58