You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/05/03 05:57:30 UTC

[incubator-nuttx] branch master updated: boards: rv-virt: Add support ELF to nsh and nsh64 defconfigs

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 0908c67d73 boards: rv-virt: Add support ELF to nsh and nsh64 defconfigs
0908c67d73 is described below

commit 0908c67d7398ef5bd7ee7bbe1a19aea7a38f3590
Author: Masayuki Ishikawa <ma...@gmail.com>
AuthorDate: Tue May 3 06:31:28 2022 +0900

    boards: rv-virt: Add support ELF to nsh and nsh64 defconfigs
    
    Summary:
    - This commit adds support ELF to nsh and nsh64 defconfigs
    
    Impact:
    - None
    
    Testing:
      nsh> mount -t hostfs -o fs=../apps/bin /system/bin
      nsh> hello
      Hello, World!!
    
    Signed-off-by: Masayuki Ishikawa <Ma...@jp.sony.com>
---
 .../risc-v/qemu-rv/rv-virt/configs/nsh/defconfig   | 25 +++++++++------------
 .../risc-v/qemu-rv/rv-virt/configs/nsh64/defconfig | 26 ++++++++++------------
 boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs    | 16 +++++++++++++
 3 files changed, 39 insertions(+), 28 deletions(-)

diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/nsh/defconfig b/boards/risc-v/qemu-rv/rv-virt/configs/nsh/defconfig
index 0979291bd8..53d6647db8 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/nsh/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/nsh/defconfig
@@ -6,18 +6,7 @@
 # modifications.
 #
 # CONFIG_DISABLE_OS_API is not set
-# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
-# CONFIG_NSH_DISABLEBG is not set
-# CONFIG_NSH_DISABLE_CAT is not set
-# CONFIG_NSH_DISABLE_CD is not set
-# CONFIG_NSH_DISABLE_FREE is not set
-# CONFIG_NSH_DISABLE_HELP is not set
 # CONFIG_NSH_DISABLE_LOSMART is not set
-# CONFIG_NSH_DISABLE_LS is not set
-# CONFIG_NSH_DISABLE_MOUNT is not set
-# CONFIG_NSH_DISABLE_PS is not set
-# CONFIG_NSH_DISABLE_PSSTACKUSAGE is not set
-# CONFIG_NSH_DISABLE_UNAME is not set
 CONFIG_16550_ADDRWIDTH=0
 CONFIG_16550_UART0=y
 CONFIG_16550_UART0_BASE=0x10000000
@@ -37,28 +26,33 @@ CONFIG_ARCH_CHIP_QEMU_RV_ISA_M=y
 CONFIG_ARCH_INTERRUPTSTACK=2048
 CONFIG_ARCH_RISCV=y
 CONFIG_ARCH_STACKDUMP=y
-CONFIG_BINFMT_DISABLE=y
 CONFIG_BOARD_LOOPSPERMSEC=6366
 CONFIG_BUILTIN=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
-CONFIG_DEFAULT_SMALL=y
 CONFIG_DEV_ZERO=y
+CONFIG_ELF=y
+CONFIG_EXAMPLES_HELLO=m
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
 CONFIG_INIT_ENTRYPOINT="nsh_main"
 CONFIG_INTELHEX_BINARY=y
+CONFIG_LIBC_ENVPATH=y
+CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LIBC_FLOATINGPOINT=y
 CONFIG_LIBC_PERROR_STDOUT=y
 CONFIG_LIBC_STRERROR=y
 CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6
 CONFIG_NSH_ARCHINIT=y
 CONFIG_NSH_BUILTIN_APPS=y
-CONFIG_NSH_FILEIOSIZE=64
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_READLINE=y
+CONFIG_PATH_INITIAL="/system/bin"
 CONFIG_PREALLOC_TIMERS=0
 CONFIG_RAM_SIZE=33554432
 CONFIG_RAM_START=0x80000000
+CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
 CONFIG_SCHED_WAITPID=y
@@ -66,6 +60,9 @@ CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
 CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
+CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_NSH_SYMTAB=y
+CONFIG_SYSTEM_NSH_SYMTAB_ARRAYNAME="g_symtab"
 CONFIG_TESTING_OSTEST=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/nsh64/defconfig b/boards/risc-v/qemu-rv/rv-virt/configs/nsh64/defconfig
index 64ad892c91..ee1c89c4d0 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/nsh64/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/nsh64/defconfig
@@ -6,18 +6,7 @@
 # modifications.
 #
 # CONFIG_DISABLE_OS_API is not set
-# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
-# CONFIG_NSH_DISABLEBG is not set
-# CONFIG_NSH_DISABLE_CAT is not set
-# CONFIG_NSH_DISABLE_CD is not set
-# CONFIG_NSH_DISABLE_FREE is not set
-# CONFIG_NSH_DISABLE_HELP is not set
 # CONFIG_NSH_DISABLE_LOSMART is not set
-# CONFIG_NSH_DISABLE_LS is not set
-# CONFIG_NSH_DISABLE_MOUNT is not set
-# CONFIG_NSH_DISABLE_PS is not set
-# CONFIG_NSH_DISABLE_PSSTACKUSAGE is not set
-# CONFIG_NSH_DISABLE_UNAME is not set
 CONFIG_16550_ADDRWIDTH=0
 CONFIG_16550_UART0=y
 CONFIG_16550_UART0_BASE=0x10000000
@@ -37,29 +26,34 @@ CONFIG_ARCH_CHIP_QEMU_RV_ISA_M=y
 CONFIG_ARCH_INTERRUPTSTACK=2048
 CONFIG_ARCH_RISCV=y
 CONFIG_ARCH_STACKDUMP=y
-CONFIG_BINFMT_DISABLE=y
 CONFIG_BOARD_LOOPSPERMSEC=6366
 CONFIG_BUILTIN=y
 CONFIG_DEBUG_FULLOPT=y
 CONFIG_DEBUG_SYMBOLS=y
-CONFIG_DEFAULT_SMALL=y
 CONFIG_DEV_ZERO=y
+CONFIG_ELF=y
+CONFIG_EXAMPLES_HELLO=m
 CONFIG_FS_HOSTFS=y
 CONFIG_FS_PROCFS=y
 CONFIG_IDLETHREAD_STACKSIZE=2048
 CONFIG_INIT_ENTRYPOINT="nsh_main"
 CONFIG_INIT_STACKSIZE=3072
 CONFIG_INTELHEX_BINARY=y
+CONFIG_LIBC_ENVPATH=y
+CONFIG_LIBC_EXECFUNCS=y
 CONFIG_LIBC_FLOATINGPOINT=y
 CONFIG_LIBC_PERROR_STDOUT=y
 CONFIG_LIBC_STRERROR=y
 CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6
 CONFIG_NSH_ARCHINIT=y
 CONFIG_NSH_BUILTIN_APPS=y
-CONFIG_NSH_FILEIOSIZE=64
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_READLINE=y
+CONFIG_PATH_INITIAL="/system/bin"
 CONFIG_PREALLOC_TIMERS=0
 CONFIG_RAM_SIZE=33554432
 CONFIG_RAM_START=0x80000000
+CONFIG_READLINE_CMD_HISTORY=y
 CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
 CONFIG_RR_INTERVAL=200
 CONFIG_SCHED_WAITPID=y
@@ -67,7 +61,11 @@ CONFIG_SERIAL_UART_ARCH_MMIO=y
 CONFIG_STACK_COLORATION=y
 CONFIG_START_MONTH=12
 CONFIG_START_YEAR=2021
+CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_NSH_STACKSIZE=3072
+CONFIG_SYSTEM_NSH_SYMTAB=y
+CONFIG_SYSTEM_NSH_SYMTAB_ARRAYNAME="g_symtab"
+CONFIG_SYSTEM_NSH_SYMTAB_COUNTNAME="g_nsymbols"
 CONFIG_TESTING_OSTEST=y
 CONFIG_USEC_PER_TICK=1000
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 82eb316db4..596a800bbb 100644
--- a/boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs
+++ b/boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs
@@ -40,6 +40,22 @@ CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
 CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
 AFLAGS += $(CFLAGS) -D__ASSEMBLY__
 
+# ELF module definitions
+
+CELFFLAGS = $(CFLAGS)
+CXXELFFLAGS = $(CXXFLAGS)
+
+ifeq ($(CONFIG_ARCH_RV32),y)
+  LDELFFLAGS = --oformat elf32-littleriscv
+else
+  LDELFFLAGS = --oformat elf64-littleriscv
+endif
+
+LDELFFLAGS += -r -e main
+LDELFFLAGS += -T $(call CONVERT_PATH,$(TOPDIR)/binfmt/libelf/gnu-elf.ld)
+
+# File extensions
+
 ifeq ($(CONFIG_ARCH_RV32),y)
 LDFLAGS += -melf32lriscv
 else