• M
    build: use thin archives instead of incremental linking · 958f2e57
    Marek Behún 提交于
    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: NMarek Behún <marek.behun@nic.cz>
    Reviewed-by: NSimon Glass <sjg@chromium.org>
    958f2e57
Makefile 74.0 KB