Skip to content

Commit dbe4c7d

Browse files
committed
Use lld and compiler-rt
1 parent c3356a4 commit dbe4c7d

File tree

5 files changed

+74
-6
lines changed

5 files changed

+74
-6
lines changed

Makefile.isp

+2-4
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,16 @@ endif
1515
BUILD_TYPE ?= debug
1616

1717
COMMON_CMAKE_FLAGS += -G "Ninja"
18-
COMMON_CMAKE_FLAGS += -DLLVM_ENABLE_PROJECTS="clang"
18+
COMMON_CMAKE_FLAGS += -DLLVM_ENABLE_PROJECTS="clang;lld;llvm"
1919
COMMON_CMAKE_FLAGS += -DCMAKE_MAKE_PROGRAM=$(NINJA)
2020
COMMON_CMAKE_FLAGS += -DCMAKE_INSTALL_PREFIX=$(ISP_PREFIX)
2121
COMMON_CMAKE_FLAGS += -DCMAKE_C_COMPILER=clang
2222
COMMON_CMAKE_FLAGS += -DCMAKE_CXX_COMPILER=clang++
23-
COMMON_CMAKE_FLAGS += -DLLVM_BINUTILS_INCDIR=/usr/include
2423
COMMON_CMAKE_FLAGS += -DBUILD_SHARED_LIBS=True
2524
COMMON_CMAKE_FLAGS += -DLLVM_OPTIMIZED_TABLEGEN=True
2625
COMMON_CMAKE_FLAGS += -DLLVM_BUILD_TESTS=True
27-
COMMON_CMAKE_FLAGS += -DDEFAULT_SYSROOT=$(ISP_PREFIX)/riscv64-unknown-elf
28-
COMMON_CMAKE_FLAGS += -DLLVM_DEFAULT_TARGET_TRIPLE="riscv64-unknown-elf"
2926
COMMON_CMAKE_FLAGS += -DLLVM_TARGETS_TO_BUILD="RISCV"
27+
COMMON_CMAKE_FLAGS += -DCLANG_DEFAULT_RTLIB=compiler-rt
3028

3129
DEBUG_CMAKE_FLAGS := -DCMAKE_BUILD_TYPE=Debug
3230
DEBUG_CMAKE_FLAGS += -DLLVM_ENABLE_ASSERTIONS=ON

compiler-rt/.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@ clang_darwin
44
multi_arch
55
*.sw?
66
*.pyc
7+
build32
8+
build64

compiler-rt/Makefile.isp

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
.PHONY: all
2+
.PHONY: install
3+
.PHONY: clean
4+
.PHONY: rv32 rv64
5+
6+
export ISP_PREFIX ?= $(HOME)/.local/isp/
7+
8+
NINJA := ninja
9+
10+
COMMON_FLAGS += -G "Ninja"
11+
COMMON_FLAGS += -DCMAKE_C_COMPILER=$(ISP_PREFIX)/bin/clang
12+
COMMON_FLAGS += -DCMAKE_CXX_COMPILER=$(ISP_PREFIX)/bin/clang++
13+
COMMON_FLAGS += -DCMAKE_AR=$(ISP_PREFIX)/bin/llvm-ar
14+
COMMON_FLAGS += -DCMAKE_NM=$(ISP_PREFIX)/bin/llvm-nm
15+
COMMON_FLAGS += -DCMAKE_RANLIB=$(ISP_PREFIX)/bin/llvm-ranlib
16+
COMMON_FLAGS += -DCMAKE_INSTALL_PREFIX=$(ISP_PREFIX)
17+
COMMON_FLAGS += -DCMAKE_VERBOSE_MAKEFILE=ON
18+
COMMON_FLAGS += -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld"
19+
COMMON_FLAGS += -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY
20+
COMMON_FLAGS += -DCOMPILER_RT_OS_DIR=baremetal -DCOMPILER_RT_BAREMETAL_BUILD=ON
21+
COMMON_FLAGS += -DCOMPILER_RT_BUILD_SANITIZERS=OFF -DCOMPILER_RT_BUILD_XRAY=OFF
22+
COMMON_FLAGS += -DCOMPILER_RT_BUILD_LIBFUZZER=OFF -DCOMPILER_RT_BUILD_PROFILE=OFF
23+
24+
RV32_TARGET_FLAGS += --target=riscv32-unknown-elf -march=rv32ima -mabi=ilp32
25+
RV32_TARGET_FLAGS += -mno-relax
26+
RV32_FLAGS += -DCMAKE_C_FLAGS=$(RV32_TARGET_FLAGS)
27+
RV32_FLAGS += -DCMAKE_CXX_FLAGS=$(RV32_TARGET_FLAGS)
28+
RV32_FLAGS += -DCMAKE_ASM_FLAGS=$(RV32_TARGET_FLAGS)
29+
RV32_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_ARCH=riscv32
30+
RV32_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=riscv32-unknown-elf
31+
RV32_FLAGS += -DCMAKE_SYSROOT=$(ISP_PREFIX)/clang_sysroot/riscv32-unknown-elf
32+
33+
RV64_TARGET_FLAGS += --target=riscv64-unknown-elf -march=rv64imafd -mabi=lp64d
34+
RV64_TARGET_FLAGS += -mno-relax -mcmodel=medany
35+
RV64_FLAGS += -DCMAKE_C_FLAGS=$(RV64_TARGET_FLAGS)
36+
RV64_FLAGS += -DCMAKE_CXX_FLAGS=$(RV64_TARGET_FLAGS)
37+
RV64_FLAGS += -DCMAKE_ASM_FLAGS=$(RV64_TARGET_FLAGS)
38+
RV64_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_ARCH=riscv64
39+
RV64_FLAGS += -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=riscv64-unknown-elf
40+
RV64_FLAGS += -DCMAKE_SYSROOT=$(ISP_PREFIX)/clang_sysroot/riscv64-unknown-elf
41+
42+
all: rv32 rv64
43+
44+
rv32: build32/build.ninja
45+
$(NINJA) -v -C build32
46+
47+
rv64: build64/build.ninja
48+
$(NINJA) -v -C build64
49+
50+
build32/build.ninja:
51+
mkdir -p build32
52+
cd build32; cmake $(COMMON_FLAGS) $(RV32_FLAGS) ..
53+
54+
build64/build.ninja:
55+
mkdir -p build64
56+
cd build64; cmake $(COMMON_FLAGS) $(RV64_FLAGS) ..
57+
58+
install:
59+
$(NINJA) -v -C build32 install
60+
$(NINJA) -v -C build64 install
61+
mkdir -p $(ISP_PREFIX)/lib/clang/11.0.0/lib
62+
cp $(ISP_PREFIX)/lib/baremetal/* $(ISP_PREFIX)/lib/clang/11.0.0/lib
63+
64+
clean:
65+
$(RM) -r build32 build64

compiler-rt/lib/builtins/CMakeLists.txt

+5
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,12 @@ else ()
645645
# double routines.
646646
if("${arch}" STREQUAL "riscv32")
647647
list(APPEND BUILTIN_CFLAGS -fforce-enable-int128)
648+
list(APPEND BUILTIN_CFLAGS -march=rv32ima -mabi=ilp32)
648649
endif()
650+
if("${arch}" STREQUAL "riscv64")
651+
list(APPEND BUILTIN_CFLAGS -march=rv64imafd -mabi=lp64d)
652+
endif()
653+
list(APPEND BUILTIN_CFLAGS -mno-relax)
649654

650655
add_compiler_rt_runtime(clang_rt.builtins
651656
STATIC

llvm/lib/Target/RISCV/MCTargetDesc/ISPELFStreamer.cpp

-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ void ISPTargetELFStreamer::EmitSSITHMetadataHeader(MCObjectStreamer &Streamer){
3737
SmallString<256> Code;
3838
raw_svector_ostream VecOS(Code);
3939

40-
printf("emitting metadata header!\n");
41-
4240
//Emit the Metadata tag
4341
uint8_t MD = DMD_SET_BASE_ADDRESS_OP;
4442
support::endian::write(VecOS, MD, support::little);

0 commit comments

Comments
 (0)