summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2021-01-13 19:13:21 -0800
committerJulius Werner <jwerner@chromium.org>2021-01-22 02:13:11 +0000
commit7d4ef16efebe489b247b55740bc284b36d6879e2 (patch)
tree7c17bb38511d4ec77011137fec55fd55689e8a00
parent88615629c051de0833e690463cef6967f0708c0c (diff)
downloadcoreboot-7d4ef16efebe489b247b55740bc284b36d6879e2.tar.gz
coreboot-7d4ef16efebe489b247b55740bc284b36d6879e2.tar.bz2
coreboot-7d4ef16efebe489b247b55740bc284b36d6879e2.zip
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>
-rw-r--r--Makefile.inc8
1 files changed, 7 insertions, 1 deletions
diff --git a/Makefile.inc b/Makefile.inc
index f0cbb34e380c..54adaa220bce 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -484,7 +484,13 @@ ADAFLAGS_common += -gnatwa.eeD.HHTU.U.W.Y
# 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