aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv64/source.mk
diff options
context:
space:
mode:
Diffstat (limited to 'arch/riscv64/source.mk')
-rw-r--r--arch/riscv64/source.mk18
1 files changed, 9 insertions, 9 deletions
diff --git a/arch/riscv64/source.mk b/arch/riscv64/source.mk
index 8c1dfcb..fcb7f69 100644
--- a/arch/riscv64/source.mk
+++ b/arch/riscv64/source.mk
@@ -3,17 +3,17 @@ KERNEL_SOURCES += $(KERNEL_LOCAL)
INIT_SOURCES += $(ARCH_SOURCE)/init/*.[cS]
# this doesn't work for rv32, but fine for now */
-CLEANUP_CMD := $(ARCH_SOURCE)/conf/rmimage.sh
-
ARCH_CFLAGS := -mcmodel=medany
-ARCH_LDFLAGS :=
+ARCH_LDFLAGS := -fuse-ld=bfd
+
+# slightly hacky but bfd is currently the only compiler that correctly handles
+# riscv relocations, but it doesn't recognise LLVM lto files, so if we're
+# doing an LLVM compilation, remove lto support
+DEBUGFLAGS != [ $(LLVM) ] && echo $(DEBUGFLAGS:-flto=) || echo $(DEBUGFLAGS)
-# llvm compilation doesn't seem to work, either bfd reads the object files wrong
-# and outputs incorrect symbols or lld handles relocations in a dumb way. Only
-# GCC compiles the kernel correctly at the moment (on RISCV, at least). I'll
-# look into this later, but for now I'll just use GCC. The code does _compile_
-# with clang, it just won't link.
-#LINKFLAGS := -fuse-ld=bfd
+# llvm-objcopy is buggy, use gnu tools instead
+# christ, not much LLVM tooling available for RISCV :D
+OBJCOPY := $(CROSS_COMPILE)-objcopy
run:
$(ARCH_SOURCE)/conf/mkimage.sh