Message ID | 20220926204740.861969-1-adelva@google.com |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
Series | Makefile: apply dynamic relocations for LLD | expand |
On Mon, Sep 26, 2022 at 08:47:40PM +0000, Alistair Delva wrote: > From: Nick Desaulniers <ndesaulniers@google.com> > > It seems that for aarch64, unless we apply dynamic relocations to the > location being relocated, we fail to boot. > > As Fangrui notes: > For dynamic relocations using the RELA format (readelf -Wr), GNU ld > sets the initial content to r_addend; ld.lld doesn't do that by > default (needs --apply-dynamic-relocs). > > Otherwise .rodata appears to be full of NUL-bytes before relocation, > causing crashes when trying to invoke the function pointers in > init_sequence_f from initcall_run_list(). > > Link: https://reviews.llvm.org/D42797 > Suggested-by: Fangrui Song <maskray@google.com> > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> > Signed-off-by: Alistair Delva <adelva@google.com> > Cc: Simon Glass <sjg@chromium.org> > Cc: Tom Rini <trini@konsulko.com> > Cc: Nick Desaulniers <ndesaulniers@google.com> Applied to u-boot/master, thanks!
diff --git a/Makefile b/Makefile index 010ace9d7c..af06b7aa19 100644 --- a/Makefile +++ b/Makefile @@ -1022,7 +1022,7 @@ LDFLAGS_u-boot += $(LDFLAGS_FINAL) LDFLAGS_u-boot += $(call ld-option, --no-dynamic-linker) # ld.lld support -LDFLAGS_u-boot += -z notext +LDFLAGS_u-boot += -z notext $(call ld-option,--apply-dynamic-relocs) LDFLAGS_u-boot += --build-id=none