Update -fno-pie to only be added when relevant. This fixes native_posix builds on Debian hosts. * Debian and other Linux distributions have ld with --warn-textrel as default. * The option generates a warning when linking on x86. * The warning make scripts/twister fail because we treat all warnings as error. * The warning is issued when no PIE objects are linked against PIE library. * PIE (Position Independent Executable) or not can be seen with the following command. * When you want to generate non PIE, link with `-no-pie.` Non PIE $ readelf -l build/zephyr/zephyr.elf | grep 'Elf file type is' Elf file type is EXEC (Executable file) PIE $ readelf -l /lib/x86_64-linux-gnu/libc.so.6 | \ grep 'Elf file type is' Elf file type is DYN (Shared object file) Issue #35244 Signed-off-by: Yuval Peress <peress@google.com>
32 lines
869 B
CMake
32 lines
869 B
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# See root CMakeLists.txt for description and expectations of these macros
|
|
|
|
macro(toolchain_ld_base)
|
|
|
|
if(NOT PROPERTY_LINKER_SCRIPT_DEFINES)
|
|
set_property(GLOBAL PROPERTY PROPERTY_LINKER_SCRIPT_DEFINES -D__GCC_LINKER_CMD__)
|
|
endif()
|
|
|
|
# TOOLCHAIN_LD_FLAGS comes from compiler/gcc/target.cmake
|
|
# LINKERFLAGPREFIX comes from linker/ld/target.cmake
|
|
zephyr_ld_options(
|
|
-no-pie
|
|
${TOOLCHAIN_LD_FLAGS}
|
|
)
|
|
|
|
zephyr_ld_options(
|
|
${LINKERFLAGPREFIX},--gc-sections
|
|
${LINKERFLAGPREFIX},--build-id=none
|
|
)
|
|
|
|
# Sort the common symbols and each input section by alignment
|
|
# in descending order to minimize padding between these symbols.
|
|
zephyr_ld_option_ifdef(
|
|
CONFIG_LINKER_SORT_BY_ALIGNMENT
|
|
${LINKERFLAGPREFIX},--sort-common=descending
|
|
${LINKERFLAGPREFIX},--sort-section=alignment
|
|
)
|
|
|
|
endmacro()
|