From 9a83c3a1d69a5315d9f5fb87ff578ac2983b0894 Mon Sep 17 00:00:00 2001 From: Petro Karashchenko Date: Tue, 29 Aug 2023 14:52:59 +0300 Subject: [PATCH 01/11] tools/ci: ensure removing python and openssl related commands Signed-off-by: Petro Karashchenko --- tools/ci/cibuild.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/ci/cibuild.sh b/tools/ci/cibuild.sh index e96b9f45b39c0..7210a363f75aa 100755 --- a/tools/ci/cibuild.sh +++ b/tools/ci/cibuild.sh @@ -448,7 +448,6 @@ function u-boot-tools { if ! type mkimage &> /dev/null; then case ${os} in Darwin) - rm -f /usr/local/bin/openssl brew install u-boot-tools ;; Linux) @@ -563,6 +562,14 @@ case ${os} in install="arm-gcc-toolchain arm64-gcc-toolchain avr-gcc-toolchain binutils bloaty elf-toolchain gen-romfs gperf kconfig-frontends mips-gcc-toolchain python-tools riscv-gcc-toolchain rust xtensa-esp32-gcc-toolchain u-boot-tools wasi-sdk c-cache" mkdir -p "${tools}"/homebrew export HOMEBREW_CACHE=${tools}/homebrew + # https://github.com/apache/arrow/issues/15025 + rm -f /usr/local/bin/2to3* || : + rm -f /usr/local/bin/idle3* || : + rm -f /usr/local/bin/pydoc3* || : + rm -f /usr/local/bin/python3* || : + rm -f /usr/local/bin/python3-config || : + # same for openssl + rm -f /usr/local/bin/openssl || : ;; Linux) install="arm-clang-toolchain arm-gcc-toolchain arm64-gcc-toolchain avr-gcc-toolchain binutils bloaty clang-tidy gen-romfs gperf kconfig-frontends mips-gcc-toolchain python-tools riscv-gcc-toolchain rust rx-gcc-toolchain sparc-gcc-toolchain xtensa-esp32-gcc-toolchain u-boot-tools wasi-sdk c-cache" From 4d34201241eaf5481e2b7cca112ceebc0fbc27e7 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Wed, 13 Sep 2023 08:31:27 +0800 Subject: [PATCH 02/11] tools/ci: Unify the version print: command xxx --version Signed-off-by: Xiang Xiao --- tools/ci/cibuild.sh | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tools/ci/cibuild.sh b/tools/ci/cibuild.sh index 7210a363f75aa..5e02fc160e584 100755 --- a/tools/ci/cibuild.sh +++ b/tools/ci/cibuild.sh @@ -57,7 +57,7 @@ function arm-clang-toolchain { rm LLVMEmbeddedToolchainForArm-14.0.0-${flavor}.tar.gz fi - clang --version + command clang --version } function arm-gcc-toolchain { @@ -81,7 +81,7 @@ function arm-gcc-toolchain { rm arm-gnu-toolchain-12.3.rel1${flavor}-x86_64-arm-none-eabi.tar fi - arm-none-eabi-gcc --version + command arm-none-eabi-gcc --version } function arm64-gcc-toolchain { @@ -105,7 +105,7 @@ function arm64-gcc-toolchain { rm gcc-arm-11.2-2022.02-${flavor}-aarch64-none-elf.tar fi - aarch64-none-elf-gcc --version + command aarch64-none-elf-gcc --version } function avr-gcc-toolchain { @@ -121,7 +121,7 @@ function avr-gcc-toolchain { esac fi - avr-gcc --version + command avr-gcc --version } function binutils { @@ -140,7 +140,7 @@ function binutils { esac fi - objcopy --version + command objcopy --version } function bloaty { @@ -180,7 +180,7 @@ function c-cache { esac fi - ccache --version + command ccache --version } function clang-tidy { @@ -204,7 +204,7 @@ function elf-toolchain { esac fi - x86_64-elf-gcc --version + command x86_64-elf-gcc --version } function gen-romfs { @@ -264,11 +264,11 @@ function mips-gcc-toolchain { case ${os} in Darwin) add_path "${tools}"/pinguino-compilers/macosx/p32/bin - mips-elf-gcc --version + command mips-elf-gcc --version ;; Linux) add_path "${tools}"/pinguino-compilers/linux64/p32/bin - p32-gcc --version + command p32-gcc --version ;; esac } @@ -327,7 +327,7 @@ function riscv-gcc-toolchain { rm riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-${flavor}.tar.gz fi - riscv64-unknown-elf-gcc --version + command riscv64-unknown-elf-gcc --version } function rust { @@ -347,7 +347,7 @@ function rust { esac fi - rustc --version + command rustc --version } function rx-gcc-toolchain { @@ -398,7 +398,7 @@ function rx-gcc-toolchain { esac fi - rx-elf-gcc --version + command rx-elf-gcc --version } function sparc-gcc-toolchain { @@ -417,7 +417,7 @@ function sparc-gcc-toolchain { esac fi - sparc-gaisler-elf-gcc --version + command sparc-gaisler-elf-gcc --version } function xtensa-esp32-gcc-toolchain { @@ -441,7 +441,7 @@ function xtensa-esp32-gcc-toolchain { esac fi - xtensa-esp32-elf-gcc --version + command xtensa-esp32-elf-gcc --version } function u-boot-tools { @@ -486,8 +486,8 @@ function wasi-sdk { export WASI_SDK_PATH="${tools}/wasi-sdk" - ${WASI_SDK_PATH}/bin/clang --version - wamrc --version + command ${WASI_SDK_PATH}/bin/clang --version + command wamrc --version } function usage { From 01a6a483d6fbb20976af19e386ff1bb8495758c5 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Wed, 13 Sep 2023 08:17:27 +0800 Subject: [PATCH 03/11] tools/ci: Fix "flock: Command not found" on macOS Signed-off-by: Xiang Xiao --- tools/ci/cibuild.sh | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tools/ci/cibuild.sh b/tools/ci/cibuild.sh index 5e02fc160e584..b4ae9c55d5dfe 100755 --- a/tools/ci/cibuild.sh +++ b/tools/ci/cibuild.sh @@ -207,6 +207,22 @@ function elf-toolchain { command x86_64-elf-gcc --version } +function util-linux { + if ! type flock &> /dev/null; then + case ${os} in + Darwin) + brew tap discoteq/discoteq + brew install flock + ;; + Linux) + apt-get install -y util-linux + ;; + esac + fi + + command flock --version +} + function gen-romfs { if ! type genromfs &> /dev/null; then case ${os} in @@ -559,7 +575,7 @@ function install_tools { case ${os} in Darwin) - install="arm-gcc-toolchain arm64-gcc-toolchain avr-gcc-toolchain binutils bloaty elf-toolchain gen-romfs gperf kconfig-frontends mips-gcc-toolchain python-tools riscv-gcc-toolchain rust xtensa-esp32-gcc-toolchain u-boot-tools wasi-sdk c-cache" + install="arm-gcc-toolchain arm64-gcc-toolchain avr-gcc-toolchain binutils bloaty elf-toolchain gen-romfs gperf kconfig-frontends mips-gcc-toolchain python-tools riscv-gcc-toolchain rust xtensa-esp32-gcc-toolchain u-boot-tools util-linux wasi-sdk c-cache" mkdir -p "${tools}"/homebrew export HOMEBREW_CACHE=${tools}/homebrew # https://github.com/apache/arrow/issues/15025 @@ -572,7 +588,7 @@ case ${os} in rm -f /usr/local/bin/openssl || : ;; Linux) - install="arm-clang-toolchain arm-gcc-toolchain arm64-gcc-toolchain avr-gcc-toolchain binutils bloaty clang-tidy gen-romfs gperf kconfig-frontends mips-gcc-toolchain python-tools riscv-gcc-toolchain rust rx-gcc-toolchain sparc-gcc-toolchain xtensa-esp32-gcc-toolchain u-boot-tools wasi-sdk c-cache" + install="arm-clang-toolchain arm-gcc-toolchain arm64-gcc-toolchain avr-gcc-toolchain binutils bloaty clang-tidy gen-romfs gperf kconfig-frontends mips-gcc-toolchain python-tools riscv-gcc-toolchain rust rx-gcc-toolchain sparc-gcc-toolchain xtensa-esp32-gcc-toolchain u-boot-tools util-linux wasi-sdk c-cache" ;; esac From f1a08ded996418518173a0741fe8690792edbf93 Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Mon, 18 Sep 2023 18:20:53 +0800 Subject: [PATCH 04/11] tools: Use GCC 13.2 from xPack for risc-v --- arch/risc-v/src/common/Toolchain.defs | 13 +++++++++---- tools/ci/docker/linux/Dockerfile | 16 ++++++++-------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/arch/risc-v/src/common/Toolchain.defs b/arch/risc-v/src/common/Toolchain.defs index 9032d5a89d1c5..d874224947c36 100644 --- a/arch/risc-v/src/common/Toolchain.defs +++ b/arch/risc-v/src/common/Toolchain.defs @@ -133,12 +133,17 @@ endif ifeq ($(CONFIG_RISCV_TOOLCHAIN),GNU_RVG) - # Generic GNU RVG toolchain + # Generic GNU RVG toolchain, prefer to use riscv-none-elf-gcc from xPack + # if CROSSDEV is not defined. - ifeq ($(CONFIG_RISCV_TOOLCHAIN_GNU_RV32),y) - CROSSDEV ?= riscv32-unknown-elf- + ifeq ($(shell riscv-none-elf-gcc --version > /dev/null 2>&1; echo $$?), 0) + CROSSDEV ?= riscv-none-elf- else - CROSSDEV ?= riscv64-unknown-elf- + ifeq ($(CONFIG_RISCV_TOOLCHAIN_GNU_RV32),y) + CROSSDEV ?= riscv32-unknown-elf- + else + CROSSDEV ?= riscv64-unknown-elf- + endif endif # Detect cpu ISA support flags diff --git a/tools/ci/docker/linux/Dockerfile b/tools/ci/docker/linux/Dockerfile index e1e0467d18c5b..dbf5443ea61bd 100644 --- a/tools/ci/docker/linux/Dockerfile +++ b/tools/ci/docker/linux/Dockerfile @@ -168,10 +168,10 @@ RUN cd /tools/renesas-tools/build/gcc && \ # Build image for tool required by RISCV builds ############################################################################### FROM nuttx-toolchain-base AS nuttx-toolchain-riscv -# Download the latest RISCV GCC toolchain prebuilt by SiFive -RUN mkdir riscv64-unknown-elf-gcc && \ - curl -s -L "https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz" \ - | tar -C riscv64-unknown-elf-gcc --strip-components 1 -xz +# Download the latest RISCV GCC toolchain prebuilt by xPack +RUN mkdir riscv-none-elf-gcc && \ + curl -s -L "https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v13.2.0-1/xpack-riscv-none-elf-gcc-13.2.0-1-linux-x64.tar.gz" \ + | tar -C riscv-none-elf-gcc --strip-components 1 -xz ############################################################################### # Build image for tool required by SPARC builds @@ -350,8 +350,8 @@ COPY --from=nuttx-toolchain-renesas /tools/renesas-toolchain/rx-elf-gcc/ renesas ENV PATH="/tools/renesas-toolchain/rx-elf-gcc/bin:$PATH" # RISCV toolchain -COPY --from=nuttx-toolchain-riscv /tools/riscv64-unknown-elf-gcc/ riscv64-unknown-elf-gcc/ -ENV PATH="/tools/riscv64-unknown-elf-gcc/bin:$PATH" +COPY --from=nuttx-toolchain-riscv /tools/riscv-none-elf-gcc/ riscv-none-elf-gcc/ +ENV PATH="/tools/riscv-none-elf-gcc/bin:$PATH" # SPARC toolchain COPY --from=nuttx-toolchain-sparc /tools/sparc-gaisler-elf-gcc/ sparc-gaisler-elf-gcc/ @@ -393,8 +393,8 @@ RUN mkdir -p /tools/ccache/bin && \ ln -sf `which ccache` /tools/ccache/bin/g++ && \ ln -sf `which ccache` /tools/ccache/bin/p32-gcc && \ ln -sf `which ccache` /tools/ccache/bin/rx-elf-gcc && \ - ln -sf `which ccache` /tools/ccache/bin/riscv64-unknown-elf-gcc && \ - ln -sf `which ccache` /tools/ccache/bin/riscv64-unknown-elf-g++ && \ + ln -sf `which ccache` /tools/ccache/bin/riscv-none-elf-gcc && \ + ln -sf `which ccache` /tools/ccache/bin/riscv-none-elf-g++ && \ ln -sf `which ccache` /tools/ccache/bin/sparc-gaisler-elf-gcc && \ ln -sf `which ccache` /tools/ccache/bin/sparc-gaisler-elf-g++ && \ ln -sf `which ccache` /tools/ccache/bin/xtensa-esp32-elf-gcc && \ From 05ef2f2901ff691e08148be05d13976ca9ca3fce Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Tue, 19 Sep 2023 10:43:24 +0800 Subject: [PATCH 05/11] tools: Switch riscv GCC to 12.3 GCC13 have compatibility issue with libcxx (need libcxx 17+). Please refer to: https://github.com/llvm/llvm-project/issues/62396 Signed-off-by: Huang Qi --- tools/ci/docker/linux/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci/docker/linux/Dockerfile b/tools/ci/docker/linux/Dockerfile index dbf5443ea61bd..272d82ad97ee5 100644 --- a/tools/ci/docker/linux/Dockerfile +++ b/tools/ci/docker/linux/Dockerfile @@ -170,7 +170,7 @@ RUN cd /tools/renesas-tools/build/gcc && \ FROM nuttx-toolchain-base AS nuttx-toolchain-riscv # Download the latest RISCV GCC toolchain prebuilt by xPack RUN mkdir riscv-none-elf-gcc && \ - curl -s -L "https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v13.2.0-1/xpack-riscv-none-elf-gcc-13.2.0-1-linux-x64.tar.gz" \ + curl -s -L "https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v12.3.0-1/xpack-riscv-none-elf-gcc-12.3.0-1-linux-x64.tar.gz" \ | tar -C riscv-none-elf-gcc --strip-components 1 -xz ############################################################################### From a0cceee185fc2924e01123c38bb08bec413cc1a0 Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Tue, 19 Sep 2023 14:13:42 +0800 Subject: [PATCH 06/11] cibuild.sh: Using GCC from xPack for riscv Signed-off-by: Huang Qi --- tools/ci/cibuild.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/ci/cibuild.sh b/tools/ci/cibuild.sh index b4ae9c55d5dfe..a53b45cafa287 100755 --- a/tools/ci/cibuild.sh +++ b/tools/ci/cibuild.sh @@ -324,26 +324,26 @@ function python-tools { } function riscv-gcc-toolchain { - add_path "${tools}"/riscv64-unknown-elf-gcc/bin + add_path "${tools}"/riscv-none-elf-gcc/bin - if [ ! -f "${tools}/riscv64-unknown-elf-gcc/bin/riscv64-unknown-elf-gcc" ]; then + if [ ! -f "${tools}/riscv-none-elf-gcc/bin/riscv-none-elf-gcc" ]; then local flavor case ${os} in Darwin) - flavor=x86_64-apple-darwin + flavor=darwin-x64 ;; Linux) - flavor=x86_64-linux-ubuntu14 + flavor=linux-x64 ;; esac cd "${tools}" - wget --quiet https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-${flavor}.tar.gz - tar zxf riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-${flavor}.tar.gz - mv riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-${flavor} riscv64-unknown-elf-gcc - rm riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-${flavor}.tar.gz + wget --quiet https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v12.3.0-1/xpack-riscv-none-elf-gcc-12.3.0-1-${flavor}.tar.gz + tar zxf xpack-riscv-none-elf-gcc-12.3.0-1-${flavor}.tar.gz + mv xpack-riscv-none-elf-gcc-12.3.0-1 riscv-none-elf-gcc + rm xpack-riscv-none-elf-gcc-12.3.0-1-${flavor}.tar.gz fi - command riscv64-unknown-elf-gcc --version + command riscv-none-elf-gcc --version } function rust { From 77280f05f54962e244e41b29dff741e29f2457fb Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Wed, 20 Sep 2023 13:19:09 +0800 Subject: [PATCH 07/11] rv32m1: Fix compile error Follow other risc-v based chips, and fix: ``` chip/rv32m1_irq.c: In function 'up_irqinitialize': Error: chip/rv32m1_irq.c:98:3: error: array subscript -2048 is outside array bounds of 'uint8_t[2147483647]' {aka 'unsigned char[2147483647]'} [-Werror=array-bounds] 98 | riscv_stack_color(g_intstacktop - intstack_size, intstack_size); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /github/workspace/sources/nuttx/arch/risc-v/src/common/riscv_internal.h:40, from chip/rv32m1_irq.c:36: /github/workspace/sources/nuttx/arch/risc-v/src/common/riscv_common_memorymap.h:72:16: note: at offset -2048 into object 'g_intstacktop' of size [0, 2147483647] 72 | EXTERN uint8_t g_intstacktop[]; /* Initial top of interrupt stack */ | ^~~~~~~~~~~~~ cc1: all warnings being treated as errors ``` Signed-off-by: Huang Qi --- arch/risc-v/src/rv32m1/rv32m1_irq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/risc-v/src/rv32m1/rv32m1_irq.c b/arch/risc-v/src/rv32m1/rv32m1_irq.c index 9de192d2f879d..3f21f49721237 100644 --- a/arch/risc-v/src/rv32m1/rv32m1_irq.c +++ b/arch/risc-v/src/rv32m1/rv32m1_irq.c @@ -95,7 +95,7 @@ void up_irqinitialize(void) #if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15 size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15); - riscv_stack_color(g_intstacktop - intstack_size, intstack_size); + riscv_stack_color(g_intstackalloc, intstack_size); #endif /* Clear all pending flags */ From 42ab3f212abd45e7e0df4669f809e2c180dc912d Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Wed, 20 Sep 2023 14:29:54 +0800 Subject: [PATCH 08/11] espressif: Force cast param in libc stubs Fix: ``` chip/esp_libc_stubs.c: In function '__retarget_lock_init': Error: chip/esp_libc_stubs.c:246:14: error: passing argument 1 of '_lock_init' from incompatible pointer type [-Werror=incompatible-pointer-types] 246 | _lock_init(lock); | ^~~~ | | | struct __lock ** chip/esp_libc_stubs.c:181:26: note: expected 'int *' but argument is of type 'struct __lock **' 181 | void _lock_init(_lock_t *lock) | ^ chip/esp_libc_stubs.c: In function '__retarget_lock_init_recursive': Error: chip/esp_libc_stubs.c:251:24: error: passing argument 1 of '_lock_init_recursive' from incompatible pointer type [-Werror=incompatible-pointer-types] 251 | _lock_init_recursive(lock); | ^~~~ | | | struct __lock ** chip/esp_libc_stubs.c:187:36: note: expected 'int *' but argument is of type 'struct __lock **' 187 | void _lock_init_recursive(_lock_t *lock) | ^ chip/esp_libc_stubs.c: In function '__retarget_lock_close': Error: chip/esp_libc_stubs.c:256:15: error: passing argument 1 of '_lock_close' from incompatible pointer type [-Werror=incompatible-pointer-types] 256 | _lock_close(&lock); | ^~~~~ | | | struct __lock ** chip/esp_libc_stubs.c:193:27: note: expected 'int *' but argument is of type 'struct __lock **' 193 | void _lock_close(_lock_t *lock) ``` Signed-off-by: Huang Qi --- arch/risc-v/src/espressif/esp_libc_stubs.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/arch/risc-v/src/espressif/esp_libc_stubs.c b/arch/risc-v/src/espressif/esp_libc_stubs.c index f9b6c2897d960..da6eddf4c76c0 100644 --- a/arch/risc-v/src/espressif/esp_libc_stubs.c +++ b/arch/risc-v/src/espressif/esp_libc_stubs.c @@ -243,52 +243,52 @@ void _lock_release_recursive(_lock_t *lock) #if ESP_ROM_HAS_RETARGETABLE_LOCKING void __retarget_lock_init(_LOCK_T *lock) { - _lock_init(lock); + _lock_init((_lock_t *)lock); } void __retarget_lock_init_recursive(_LOCK_T *lock) { - _lock_init_recursive(lock); + _lock_init_recursive((_lock_t *)lock); } void __retarget_lock_close(_LOCK_T lock) { - _lock_close(&lock); + _lock_close((_lock_t *)&lock); } void __retarget_lock_close_recursive(_LOCK_T lock) { - _lock_close_recursive(&lock); + _lock_close_recursive((_lock_t *)&lock); } void __retarget_lock_acquire(_LOCK_T lock) { - _lock_acquire(&lock); + _lock_acquire((_lock_t *)&lock); } void __retarget_lock_acquire_recursive(_LOCK_T lock) { - _lock_acquire_recursive(&lock); + _lock_acquire_recursive((_lock_t *)&lock); } int __retarget_lock_try_acquire(_LOCK_T lock) { - return _lock_try_acquire(&lock); + return _lock_try_acquire((_lock_t *)&lock); } int __retarget_lock_try_acquire_recursive(_LOCK_T lock) { - return _lock_try_acquire_recursive(&lock); + return _lock_try_acquire_recursive((_lock_t *)&lock); } void __retarget_lock_release(_LOCK_T lock) { - _lock_release(&lock); + _lock_release((_lock_t *)&lock); } void __retarget_lock_release_recursive(_LOCK_T lock) { - _lock_release_recursive(&lock); + _lock_release_recursive((_lock_t *)&lock); } #endif From ebb99cdfc30c57fe9a8fd30c43d3f5db6766274d Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Wed, 20 Sep 2023 09:38:12 +0800 Subject: [PATCH 09/11] boards/riscv: Fix module linker target Fix: ``` riscv-none-elf-ld: sotest.o: ABI is incompatible with that of the selected emulation: target emulation `elf64-littleriscv' does not match `elf32-littleriscv' riscv-none-elf-ld: failed to merge target specific data of file sotest.o ``` Signed-off-by: Huang Qi --- boards/risc-v/c906/smartl-c906/scripts/Make.defs | 2 +- boards/risc-v/k210/maix-bit/scripts/Make.defs | 2 +- boards/risc-v/mpfs/icicle/scripts/Make.defs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boards/risc-v/c906/smartl-c906/scripts/Make.defs b/boards/risc-v/c906/smartl-c906/scripts/Make.defs index 13aa6816c17d4..a7b5ee48e8f83 100644 --- a/boards/risc-v/c906/smartl-c906/scripts/Make.defs +++ b/boards/risc-v/c906/smartl-c906/scripts/Make.defs @@ -49,7 +49,7 @@ AFLAGS += $(CFLAGS) -D__ASSEMBLY__ CMODULEFLAGS = $(CFLAGS) -LDMODULEFLAGS = -r -e module_initialize +LDMODULEFLAGS = -melf64lriscv -r -e module_initialize LDMODULEFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/libs/libc/modlib/gnu-elf.ld) # ELF module definitions diff --git a/boards/risc-v/k210/maix-bit/scripts/Make.defs b/boards/risc-v/k210/maix-bit/scripts/Make.defs index 10c24c8273208..d43da4aeeafa4 100644 --- a/boards/risc-v/k210/maix-bit/scripts/Make.defs +++ b/boards/risc-v/k210/maix-bit/scripts/Make.defs @@ -38,7 +38,7 @@ AFLAGS += $(CFLAGS) -D__ASSEMBLY__ CMODULEFLAGS = $(CFLAGS) -LDMODULEFLAGS = -r -e module_initialize +LDMODULEFLAGS = -melf64lriscv -r -e module_initialize LDMODULEFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/libs/libc/modlib/gnu-elf.ld) # ELF module definitions diff --git a/boards/risc-v/mpfs/icicle/scripts/Make.defs b/boards/risc-v/mpfs/icicle/scripts/Make.defs index c81ebf1a96b80..cc72427b79224 100644 --- a/boards/risc-v/mpfs/icicle/scripts/Make.defs +++ b/boards/risc-v/mpfs/icicle/scripts/Make.defs @@ -72,7 +72,7 @@ AFLAGS += $(CFLAGS) -D__ASSEMBLY__ CMODULEFLAGS = $(CFLAGS) -LDMODULEFLAGS = -r -e module_initialize +LDMODULEFLAGS = -melf64lriscv -r -e module_initialize LDMODULEFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/libs/libc/modlib/gnu-elf.ld) # ELF module definitions @@ -80,5 +80,5 @@ LDMODULEFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/libs/libc/modlib/gnu-elf.ld) CELFFLAGS = $(CFLAGS) CXXELFFLAGS = $(CXXFLAGS) -LDELFFLAGS = -r -e main +LDELFFLAGS = -melf64lriscv -r -e main LDELFFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/binfmt/libelf/gnu-elf.ld) From 05966c2c3e26ceb5c792c11b32a0923966137495 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Tue, 22 Aug 2023 19:32:17 +0800 Subject: [PATCH 10/11] boards/riscv: Add -melf64lriscv to 64bit USER_LDFLAGS/LDELFFLAGS Signed-off-by: Xiang Xiao --- boards/risc-v/c906/smartl-c906/kernel/Makefile | 2 +- boards/risc-v/c906/smartl-c906/scripts/Make.defs | 2 +- boards/risc-v/k210/maix-bit/kernel/Makefile | 2 +- boards/risc-v/k210/maix-bit/scripts/Make.defs | 2 +- boards/risc-v/mpfs/common/kernel/Makefile | 2 +- boards/risc-v/mpfs/m100pfsevp/scripts/Make.defs | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/boards/risc-v/c906/smartl-c906/kernel/Makefile b/boards/risc-v/c906/smartl-c906/kernel/Makefile index 6b4cb180ba601..9da36f4eee988 100644 --- a/boards/risc-v/c906/smartl-c906/kernel/Makefile +++ b/boards/risc-v/c906/smartl-c906/kernel/Makefile @@ -43,7 +43,7 @@ USER_HEXFILE += $(call CONVERT_PATH,$(TOPDIR)$(DELIM)nuttx_user.hex) USER_SRECFILE += $(call CONVERT_PATH,$(TOPDIR)$(DELIM)nuttx_user.srec) USER_BINFILE += $(call CONVERT_PATH,$(TOPDIR)$(DELIM)nuttx_user.bin) -USER_LDFLAGS = --undefined=$(ENTRYPT) --entry=$(ENTRYPT) $(USER_LDSCRIPT) +USER_LDFLAGS = -melf64lriscv --undefined=$(ENTRYPT) --entry=$(ENTRYPT) $(USER_LDSCRIPT) USER_LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(USERLIBS)))) USER_LIBGCC = "${shell "$(CC)" $(ARCHCPUFLAGS) -print-libgcc-file-name}" diff --git a/boards/risc-v/c906/smartl-c906/scripts/Make.defs b/boards/risc-v/c906/smartl-c906/scripts/Make.defs index a7b5ee48e8f83..61dd59b147e37 100644 --- a/boards/risc-v/c906/smartl-c906/scripts/Make.defs +++ b/boards/risc-v/c906/smartl-c906/scripts/Make.defs @@ -57,5 +57,5 @@ LDMODULEFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/libs/libc/modlib/gnu-elf.ld) CELFFLAGS = $(CFLAGS) CXXELFFLAGS = $(CXXFLAGS) -LDELFFLAGS = -r -e main +LDELFFLAGS = -melf64lriscv -r -e main LDELFFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/binfmt/libelf/gnu-elf.ld) diff --git a/boards/risc-v/k210/maix-bit/kernel/Makefile b/boards/risc-v/k210/maix-bit/kernel/Makefile index a78a4a69ecc7c..7df8fc03d6c3f 100644 --- a/boards/risc-v/k210/maix-bit/kernel/Makefile +++ b/boards/risc-v/k210/maix-bit/kernel/Makefile @@ -35,7 +35,7 @@ USER_HEXFILE += $(call CONVERT_PATH,$(TOPDIR)$(DELIM)nuttx_user.hex) USER_SRECFILE += $(call CONVERT_PATH,$(TOPDIR)$(DELIM)nuttx_user.srec) USER_BINFILE += $(call CONVERT_PATH,$(TOPDIR)$(DELIM)nuttx_user.bin) -USER_LDFLAGS = --undefined=$(ENTRYPT) --entry=$(ENTRYPT) $(USER_LDSCRIPT) +USER_LDFLAGS = -melf64lriscv --undefined=$(ENTRYPT) --entry=$(ENTRYPT) $(USER_LDSCRIPT) USER_LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(USERLIBS)))) USER_LIBGCC = "${shell "$(CC)" $(ARCHCPUFLAGS) -print-libgcc-file-name}" diff --git a/boards/risc-v/k210/maix-bit/scripts/Make.defs b/boards/risc-v/k210/maix-bit/scripts/Make.defs index d43da4aeeafa4..670e43d2b1052 100644 --- a/boards/risc-v/k210/maix-bit/scripts/Make.defs +++ b/boards/risc-v/k210/maix-bit/scripts/Make.defs @@ -46,5 +46,5 @@ LDMODULEFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/libs/libc/modlib/gnu-elf.ld) CELFFLAGS = $(CFLAGS) CXXELFFLAGS = $(CXXFLAGS) -LDELFFLAGS = -r -e main +LDELFFLAGS = -melf64lriscv -r -e main LDELFFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/binfmt/libelf/gnu-elf.ld) diff --git a/boards/risc-v/mpfs/common/kernel/Makefile b/boards/risc-v/mpfs/common/kernel/Makefile index 3447d2f7d18c2..0566d6873f90c 100644 --- a/boards/risc-v/mpfs/common/kernel/Makefile +++ b/boards/risc-v/mpfs/common/kernel/Makefile @@ -39,7 +39,7 @@ USER_HEXFILE += $(call CONVERT_PATH,$(TOPDIR)$(DELIM)nuttx_user.hex) USER_SRECFILE += $(call CONVERT_PATH,$(TOPDIR)$(DELIM)nuttx_user.srec) USER_BINFILE += $(call CONVERT_PATH,$(TOPDIR)$(DELIM)nuttx_user.bin) -USER_LDFLAGS = --undefined=$(ENTRYPT) --entry=$(ENTRYPT) $(USER_LDSCRIPT) +USER_LDFLAGS = -melf64lriscv --undefined=$(ENTRYPT) --entry=$(ENTRYPT) $(USER_LDSCRIPT) USER_LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(USERLIBS)))) USER_LIBGCC = "${shell "$(CC)" $(ARCHCPUFLAGS) -print-libgcc-file-name}" diff --git a/boards/risc-v/mpfs/m100pfsevp/scripts/Make.defs b/boards/risc-v/mpfs/m100pfsevp/scripts/Make.defs index b74eb4721a581..cd4f64c07200c 100644 --- a/boards/risc-v/mpfs/m100pfsevp/scripts/Make.defs +++ b/boards/risc-v/mpfs/m100pfsevp/scripts/Make.defs @@ -57,5 +57,5 @@ LDMODULEFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/libs/libc/modlib/gnu-elf.ld) CELFFLAGS = $(CFLAGS) CXXELFFLAGS = $(CXXFLAGS) -LDELFFLAGS = -r -e main +LDELFFLAGS = -melf64lriscv -r -e main LDELFFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/binfmt/libelf/gnu-elf.ld) From d232b45ba22dc63de8411a6f85671bbb3cfcddc9 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Tue, 22 Aug 2023 22:52:44 +0800 Subject: [PATCH 11/11] arch/riscv: Move -mcmodel=medany from Make.defs to Toolchain.defs to avoid the code duplication Signed-off-by: Xiang Xiao --- arch/risc-v/src/common/Toolchain.defs | 4 +++- boards/risc-v/c906/smartl-c906/scripts/Make.defs | 9 --------- boards/risc-v/jh7110/star64/scripts/Make.defs | 2 -- boards/risc-v/k210/maix-bit/scripts/Make.defs | 2 -- boards/risc-v/mpfs/icicle/scripts/Make.defs | 8 -------- boards/risc-v/mpfs/m100pfsevp/scripts/Make.defs | 9 --------- boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs | 2 -- 7 files changed, 3 insertions(+), 33 deletions(-) diff --git a/arch/risc-v/src/common/Toolchain.defs b/arch/risc-v/src/common/Toolchain.defs index d874224947c36..47fd54fca979e 100644 --- a/arch/risc-v/src/common/Toolchain.defs +++ b/arch/risc-v/src/common/Toolchain.defs @@ -183,12 +183,14 @@ ifeq ($(CONFIG_RISCV_TOOLCHAIN),GNU_RVG) ARCHTYPE = rv64 ARCHABITYPE = lp64 LLVM_ARCHTYPE := riscv64 + # https://www.sifive.com/blog/all-aboard-part-4-risc-v-code-models + ARCHCPUFLAGS = -mcmodel=medany endif # Construct arch flags ARCHCPUEXTFLAGS = i$(ARCHRVISAM)$(ARCHRVISAA)$(ARCHRVISAF)$(ARCHRVISAD)$(ARCHRVISAC)$(ARCHRVISAZ) - ARCHCPUFLAGS = -march=$(ARCHTYPE)$(ARCHCPUEXTFLAGS) + ARCHCPUFLAGS += -march=$(ARCHTYPE)$(ARCHCPUEXTFLAGS) # Construct arch abi flags diff --git a/boards/risc-v/c906/smartl-c906/scripts/Make.defs b/boards/risc-v/c906/smartl-c906/scripts/Make.defs index 61dd59b147e37..ee56bdbdb0cea 100644 --- a/boards/risc-v/c906/smartl-c906/scripts/Make.defs +++ b/boards/risc-v/c906/smartl-c906/scripts/Make.defs @@ -27,17 +27,8 @@ ifeq ($(CONFIG_C906_WITH_QEMU),y) else LDSCRIPT = ld.script endif - ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT) -# The following options are for the toolchain from T-HEAD. -# For more info ahout the T-HEAD ISA extensions, please refer to the C906 user guide. -# ARCHCPUFLAGS = -march=rv64gcxthead -mabi=lp64d -mtune=c906 -mcmodel=medany -# TODO: We are not going to enable this at this time for the CI compatibility. - -ARCHCPUFLAGS += -mcmodel=medany - - CFLAGS = $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS) CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe diff --git a/boards/risc-v/jh7110/star64/scripts/Make.defs b/boards/risc-v/jh7110/star64/scripts/Make.defs index 0048a3c6e0b70..4cdac79de7e8f 100644 --- a/boards/risc-v/jh7110/star64/scripts/Make.defs +++ b/boards/risc-v/jh7110/star64/scripts/Make.defs @@ -24,8 +24,6 @@ include $(TOPDIR)/arch/risc-v/src/common/Toolchain.defs LDSCRIPT = ld.script ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT) - -ARCHCPUFLAGS += -mcmodel=medany ARCHPICFLAGS = -fpic -msingle-pic-base CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe diff --git a/boards/risc-v/k210/maix-bit/scripts/Make.defs b/boards/risc-v/k210/maix-bit/scripts/Make.defs index 670e43d2b1052..f40ceb860b7fe 100644 --- a/boards/risc-v/k210/maix-bit/scripts/Make.defs +++ b/boards/risc-v/k210/maix-bit/scripts/Make.defs @@ -25,8 +25,6 @@ include $(TOPDIR)/arch/risc-v/src/common/Toolchain.defs LDSCRIPT = ld.script ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT) -ARCHCPUFLAGS += -mcmodel=medany -mstrict-align - CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS) CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe diff --git a/boards/risc-v/mpfs/icicle/scripts/Make.defs b/boards/risc-v/mpfs/icicle/scripts/Make.defs index cc72427b79224..f5a36739866af 100644 --- a/boards/risc-v/mpfs/icicle/scripts/Make.defs +++ b/boards/risc-v/mpfs/icicle/scripts/Make.defs @@ -53,14 +53,6 @@ ifneq ($(LDMEMORY),) endif ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT) -# The following options are for the toolchain from T-HEAD. -# For more info ahout the T-HEAD ISA extensions, please refer to the MPFS user guide. -# ARCHCPUFLAGS = -march=rv64gcxthead -mabi=lp64d -mcmodel=medany -# TODO: We are not going to enable this at this time for the CI compatibility. - -ARCHCPUFLAGS += -mcmodel=medany - - CFLAGS = $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS) CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe diff --git a/boards/risc-v/mpfs/m100pfsevp/scripts/Make.defs b/boards/risc-v/mpfs/m100pfsevp/scripts/Make.defs index cd4f64c07200c..e39fda5107ce6 100644 --- a/boards/risc-v/mpfs/m100pfsevp/scripts/Make.defs +++ b/boards/risc-v/mpfs/m100pfsevp/scripts/Make.defs @@ -27,17 +27,8 @@ ifeq ($(CONFIG_MPFS_BOOTLOADER),y) else LDSCRIPT = ld.script endif - ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT) -# The following options are for the toolchain from T-HEAD. -# For more info ahout the T-HEAD ISA extensions, please refer to the MPFS user guide. -# ARCHCPUFLAGS = -march=rv64gcxthead -mabi=lp64d -mcmodel=medany -# TODO: We are not going to enable this at this time for the CI compatibility. - -ARCHCPUFLAGS += -mcmodel=medany - - CFLAGS = $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS) CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe diff --git a/boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs b/boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs index ab13f19b9c6b9..453bad37bc62c 100644 --- a/boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs +++ b/boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs @@ -35,8 +35,6 @@ endif endif ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT) - -ARCHCPUFLAGS += -mcmodel=medany ARCHPICFLAGS = -fpic -msingle-pic-base CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe