u-boot-brain/arch/sandbox
Marek Behún 958f2e57ef build: use thin archives instead of incremental linking
Currently we use incremental linking (ld -r) to link several object
files from one directory into one built-in.o object file containing the
linked code from that directory (and its subdirectories).

Linux has, some time ago, moved to thin archives instead.

Thin archives are archives (.a) that do not really contain the object
files, only references to them.

Using thin archives instead of incremental linking
- saves disk space
- apparently works better with dead code elimination
- makes things easier for LTO

The third point is the important one for us. With incremental linking
there are several options how to do LTO, and that would unnecessarily
complicate things.

We have to use the --whole-archive/--no-whole-archive linking option
instead of --start-group/--end-group, otherwise linking may fail because
of unresolved symbols, or the resulting binary will be unusable.

We also need to use the P flag for ar, otherwise final linking may fail.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Simon Glass <sjg@chromium.org>
2021-05-24 14:21:30 -04:00
..
cpu sandbox: define __dyn_sym_start, dyn_sym_end 2021-03-27 16:26:48 +13:00
dts pytest: add sandbox test for "extension" command 2021-05-13 13:09:09 -04:00
include/asm treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00
lib treewide: Convert macro and uses of __section(foo) to __section("foo") 2021-05-24 14:21:30 -04:00
config.mk build: use thin archives instead of incremental linking 2021-05-24 14:21:30 -04:00
Kconfig sandbox: add handler for exceptions 2020-12-13 07:58:17 -07:00
Makefile sandbox: Use 'extras' to specify 'head' files 2018-12-05 06:01:34 -07:00