Julius Werner has submitted this change. ( https://review.coreboot.org/c/coreboot/+/49449 )
Change subject: Makefile.inc: Avoid --emit-relocs on RISC-V ......................................................................
Makefile.inc: Avoid --emit-relocs on RISC-V
There seems to be a bug[1] in the GNU linker for the RISC-V architecture triggered by symbols that are more than 2GB offset from the program counter. My next patch is introducing symbols like that and stuck on this problem. The code path that runs into the issue is only taken when passing the --emit-relocs flag, which is really only needed for building rmodules. Since RISC-V platforms don't use any rmodules at the moment, let's disable the flag on RISC-V until the issue can be fixed in the toolchain.
[1]: https://sourceware.org/bugzilla/show_bug.cgi?id=27180
Signed-off-by: Julius Werner jwerner@chromium.org Change-Id: I784a506034325c0ba937589416acaafbf80080e2 Reviewed-on: https://review.coreboot.org/c/coreboot/+/49449 Reviewed-by: Angel Pons th3fanbus@gmail.com Tested-by: build bot (Jenkins) no-reply@coreboot.org --- M Makefile.inc 1 file changed, 7 insertions(+), 1 deletion(-)
Approvals: build bot (Jenkins): Verified Angel Pons: Looks good to me, approved
diff --git a/Makefile.inc b/Makefile.inc index f0cbb34..54adaa2 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -484,7 +484,13 @@ # Disable style checks for now ADAFLAGS_common += -gnatyN
-LDFLAGS_common := --gc-sections -nostdlib -nostartfiles -static --emit-relocs +LDFLAGS_common := --gc-sections -nostdlib -nostartfiles -static + +# Workaround for RISC-V linker bug, merge back into above line when fixed. +# https://sourceware.org/bugzilla/show_bug.cgi?id=27180 +ifneq ($(CONFIG_ARCH_RISCV),y) +LDFLAGS_common += --emit-relocs +endif
ifeq ($(CONFIG_WARNINGS_ARE_ERRORS),y) CFLAGS_common += -Werror