From 5fb1af3ab12880331fb1e2150aa23b1278e60ddd Mon Sep 17 00:00:00 2001 From: Kimplul Date: Thu, 5 May 2022 23:19:42 +0300 Subject: riscv64 boots with clang (sort of) --- arch/riscv64/source.mk | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'arch/riscv64/source.mk') 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 -- cgit v1.3