• A
    x86: Fix linking u-boot with ld.lld · 58772283
    Alistair Delva 提交于
    When linking the final u-boot binary with LLD, the following link errors
    are seen:
    
    ld.lld: error: can't create dynamic relocation R_386_32 against local
                   symbol in readonly segment; recompile object files with
                   -fPIC or pass '-Wl,-z,notext' to allow text relocations
                   in the output
    >>> defined in arch/x86/cpu/start.o
    >>> referenced by arch/x86/cpu/start.o:(.text.start+0x32)
    [...]
    >>> defined in arch/x86/cpu/start16.o
    >>> referenced by arch/x86/cpu/start16.o:(.start16+0x1C)
    
    According to Nick Desaulniers:
    
    "This is a known difference between GNU and LLVM linkers; the GNU
     linkers permit relocations in readonly segments (making them not read
     only), LLVM does not (by default)."
    
    Since U-Boot apparently seems to use relocations in readonly segments,
    change the global linker flags to permit them when linking with LLD by
    specifying '-z notext'.
    Signed-off-by: NAlistair Delva <adelva@google.com>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Simon Glass <sjg@chromium.org>
    Cc: Bin Meng <bmeng.cn@gmail.com>
    Reviewed-by: NSimon Glass <sjg@chromium.org>
    58772283
Makefile 75.8 KB