On Wed, 20 Oct 2021 at 15:31, Alistair Delva <ade...@google.com> wrote: > > 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: Alistair Delva <ade...@google.com> > Cc: Nick Desaulniers <ndesaulni...@google.com> > Cc: Simon Glass <s...@chromium.org> > Cc: Bin Meng <bmeng...@gmail.com> > --- > Makefile | 3 +++ > 1 file changed, 3 insertions(+)
Reviewed-by: Simon Glass <s...@chromium.org> > Applied to u-boot-dm, thanks!