zephyr/cmake
Ederson de Souza 321e395a8f linker: Include libkernel.a in the whole-archive when llext is enabled
Differently from other libraries, which are included whole in the final
Zephyr ELF, libkernel.a itself isn't. Assuming this is intended to
enable optimisations (if it isn't, this patch will break things) - linker
can remove parts of the kernel that are not used by the application.

However, when considering Linkable Loadable Extensions (llext), this
optimisations can be counterproductive: for instance, syscalls that are
not used by the application won't be available for extensions. It won't
matter if someone "EXPORT_SYMBOL" for them, or even try to keep them
using LINKER_KEEP, they'll be gone.

To avoid that, this patches includes, when CONFIG_LLEXT=y, libkernel.a
inside the linker "whole-archive" block. This ends up making it consider
libkernel.a as a library whose all symbols should be kept. Note this
doesn't mean that all symbols will be there - things compiled out via
Kconfig will naturally still be out.

Signed-off-by: Ederson de Souza <ederson.desouza@intel.com>
2024-03-26 19:31:56 -04:00
..
app cmake: function to update Zephyr_DIR when loading old Zephyr packages 2022-03-07 16:35:54 +01:00
bintools buildsystem: Add an option to enable LTO 2024-02-02 19:49:36 +01:00
compiler cmake clang/compiler_flags.cmake: Clarify comment for native targets 2024-03-20 15:43:05 +01:00
emu config: qemu: Add QEMU_EXTRA_FLAGS config option 2023-10-20 15:03:55 +02:00
flash west runner: Add exe file to configuration 2023-10-10 15:26:09 +02:00
ide license: cleanup: add SPDX Apache-2.0 license identifier 2019-04-07 08:45:22 -04:00
linker linker: Include libkernel.a in the whole-archive when llext is enabled 2024-03-26 19:31:56 -04:00
linker_script input: rename the internal callback struct to input_callback 2024-03-19 14:30:39 +01:00
makefile_exports cmake: using zephyr_get_compile_options_for_lang_as_string for export 2020-12-15 08:37:54 -05:00
modules cmake: boards: Error out if multiple boards use the same name 2024-03-26 16:20:08 -04:00
reports scripts: size_report: Add support for TF-M and BL2 image size reports 2022-03-09 14:03:52 -05:00
sca cmake: sca: codechecker: Allow processing results even on errors 2024-03-11 10:39:48 -04:00
toolchain kconfig: llvm: riscv: Advertise TLS support when using llvm for RISC-V 2024-03-18 13:16:06 +01:00
usage cmake: add initlevels to usage 2023-11-24 11:39:21 +01:00
util license: cleanup: add SPDX Apache-2.0 license identifier 2019-04-07 08:45:22 -04:00
cfb.cmake scripts: move gen_cfb_font_header.py to scripts/build 2022-07-12 10:03:45 +02:00
extra_flags.cmake cmake: extra_flags: Use zephyr_get 2023-10-24 11:35:27 +02:00
gcc-m-cpu.cmake soc: arm64: Add agilex5 soc folder and its configurations 2023-07-25 16:58:01 +00:00
gcc-m-fpu.cmake cmake: gcc: Fix Cortex-R52 FPU type 2022-10-19 00:28:33 +09:00
gen_version_h.cmake cmake: generalize VERSION infrastructure for better reuse 2023-05-17 13:56:58 +02:00
hex.cmake cmake: hex: deprecate use of to_hex() and from_hex() utility functions 2024-01-22 09:48:33 +00:00
kobj.cmake scripts: move gen_kobject_list.py to scripts/build/gen_kobject_list.py 2022-07-12 10:03:45 +02:00
mcuboot.cmake cmake: mcuboot: set align to 1 for overwrite only mode 2024-01-12 09:59:51 +01:00
package_helper.cmake cmake: stub zephyr_set(... SCOPE ...) function in package helper 2023-10-05 09:43:28 +01:00
pristine.cmake cmake: pristine.cmake requires SOURCE_DIR and BINARY_DIR as arguments 2021-01-23 08:31:13 -05:00
target_toolchain_flags.cmake everywhere: fix typos 2022-03-14 20:22:24 -04:00
verify-toolchain.cmake cmake: rework of host tools and generic toolchain handling 2022-09-01 15:59:43 +02:00
vif.cmake USB-C: genVIF: Cleanup and add support to pick static data from input 2023-05-26 13:54:43 -04:00