zephyr/scripts/build
Grzegorz Swiderski 460b6ef122 code_relocation: Add NOKEEP option
When using the code and data relocation feature, every relocated symbol
would be marked with `KEEP()` in the generated linker script. Therefore,
if any input files contained unused code, then it wouldn't be discarded
by the linker, even when invoked with `--gc-sections`.

This can cause unexpected bloat, or other link-time issues stemming from
some symbols being discarded and others not.

On the other hand, this behavior has been present since the feature's
introduction, so it should remain default for the users who rely on it.

This patch introduces support for `zephyr_code_relocate(... NOKEEP)`.
This will suppress the generation of `KEEP()` statements for all symbols
in a particular library or set of files.

Much like `NOCOPY`, the `NOKEEP` flag is passed to `gen_relocate_app.py`
in string form. The script is now equipped to handle multiple such flags
when passed from CMake as a semicolon-separated list, like so:

   "SRAM2:NOCOPY;NOKEEP:/path/to/file1.c;/path/to/file2.c"

Documentation and tests are updated here as well.

Signed-off-by: Grzegorz Swiderski <grzegorz.swiderski@nordicsemi.no>
2024-01-15 13:20:17 +01:00
..
check_init_priorities.py scripts: check_init_priorities: rework the error messages 2023-11-03 11:45:23 +01:00
check_init_priorities_test.py scripts: check_init_priorities: rework the error messages 2023-11-03 11:45:23 +01:00
dir_is_writeable.py scripts: move dir_is_writeable.py to scripts/build 2022-07-12 10:03:45 +02:00
elf_parser.py scripts/build/elf_parser.py: make dependency graph output deterministic 2023-12-04 14:24:32 +01:00
file2hex.py scripts: build: file2hex: Add optional offset and length parameters 2023-09-15 13:23:30 +02:00
gen_app_partitions.py treewide: Disable automatic argparse argument shortening 2023-01-26 20:12:36 +09:00
gen_cfb_font_header.py scripts: Update CFB font generator 2023-09-13 14:40:00 -07:00
gen_device_deps.py scripts: build: gen_device_deps: s/--dynamic-handles/--dynamic-deps 2023-06-21 09:32:05 +02:00
gen_image_info.py treewide: Disable automatic argparse argument shortening 2023-01-26 20:12:36 +09:00
gen_isr_tables.py scripts: build: gen_isr_tables: add some debug prints 2023-12-18 15:09:19 -05:00
gen_kobject_list.py syscall: rename Z_SYSCALL_DRIVER_ -> K_SYSCALL_DRIVER_ 2023-11-03 11:46:52 +01:00
gen_kobject_placeholders.py treewide: Disable automatic argparse argument shortening 2023-01-26 20:12:36 +09:00
gen_offset_header.py treewide: Disable automatic argparse argument shortening 2023-01-26 20:12:36 +09:00
gen_relocate_app.py code_relocation: Add NOKEEP option 2024-01-15 13:20:17 +01:00
gen_strerror_table.py treewide: Disable automatic argparse argument shortening 2023-01-26 20:12:36 +09:00
gen_strsignal_table.py posix: signal: implement strsignal 2023-07-18 15:35:42 -04:00
gen_syscalls.py syscall: rename Z_OOPS -> K_OOPS 2023-11-03 11:46:52 +01:00
mergehex.py treewide: Disable automatic argparse argument shortening 2023-01-26 20:12:36 +09:00
parse_syscalls.py scripts/build: make struct_tags.json deterministic 2023-12-11 09:51:22 +01:00
process_gperf.py syscall: rename z_object_find -> k_object_find 2023-11-03 11:46:52 +01:00
subfolder_list.py treewide: Disable automatic argparse argument shortening 2023-01-26 20:12:36 +09:00
uf2conv.py treewide: Disable automatic argparse argument shortening 2023-01-26 20:12:36 +09:00
user_wordsize.py scripts: move user_wordsize.py to scripts/build/user_wordsize.py 2022-07-12 10:03:45 +02:00