Khem Raj
unread,May 14, 2021, 4:57:00 PM5/14/21Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to linux...@lists.infradead.org, clang-bu...@googlegroups.com, Khem Raj, Paul Walmsley, Palmer Dabbelt, Albert Ou, Nathan Chancellor, Nick Desaulniers
lld does not implement the RISCV relaxation optimizations like GNU ld
therefore disable it when building with LLVM=1, Also pass it to
assembler when using external GNU assembler ( LLVM_IAS != 1 ), this
ensures that relevant assembler option is also enabled along. if these
options are not used then we see following relocations in objects
0000000000000000 R_RISCV_ALIGN *ABS*+0x0000000000000002
These are then rejected by lld
ld.lld: error: capability.c:(.fixup+0x0): relocation R_RISCV_ALIGN requires unimplemented linker relaxation; recompile with -mno-relax but the .o is already compiled with -mno-relax
Signed-off-by: Khem Raj <
raj....@gmail.com>
Cc: Paul Walmsley <
paul.w...@sifive.com>
Cc: Palmer Dabbelt <
pal...@dabbelt.com>
Cc: Albert Ou <
a...@eecs.berkeley.edu>
Cc: Nathan Chancellor <
nat...@kernel.org>
Cc: Nick Desaulniers <
ndesau...@google.com>
---
arch/riscv/Makefile | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
index 3eb9590a0775..519f133e0d53 100644
--- a/arch/riscv/Makefile
+++ b/arch/riscv/Makefile
@@ -38,6 +38,15 @@ else
KBUILD_LDFLAGS += -melf32lriscv
endif
+ifeq ($(LLVM),1)
+ KBUILD_CFLAGS += -mno-relax
+ KBUILD_AFLAGS += -mno-relax
+ifneq ($(LLVM_IAS),1)
+ KBUILD_CFLAGS += -Wa,-mno-relax
+ KBUILD_AFLAGS += -Wa,-mno-relax
+endif
+endif
+
# ISA string setting
riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima
riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima
--
2.31.1