Thanks a lot for your reply. I used menuconfig to generate the .config file this time and noticed the elf relocation error for 64 bit. So I enabled the option "Build 32-bit simulation on 64-bit machine" under System Type to set CONFIG_SIM_M32.
I now get the following linker error: LD: nuttx /usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libz.so when searching for -lz /usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libz.a when searching for -lz /usr/bin/ld: cannot find -lz /usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libz.so when searching for -lz collect2: error: ld returned 1 exit status make[1]: *** [Makefile:323: nuttx] Error 1 make[1]: Leaving directory '/home/tanushreebaindur/nuttx-code/nuttx/arch/sim/src' make: *** [tools/Makefile.unix:422: nuttx] Error 2 Are you using a 32 bit libz? I just compiled a 32 bit libz. Is there a path setting to pick up the libz from a custom directory? I searched for it, but couldn't find one. Thanks again, Tanushree On Mon, Apr 12, 2021 at 2:58 AM Brennan Ashton <bash...@brennanashton.com> wrote: > Tanushree, > Couple notes to get you going here. First off you really want to > avoid editing the .config file directly and instead use menuconfig so > that the dependencies are handled correctly. You can use "/" to > search for config settings. > I tweaked the nsh config like this and was able to make it work. The > error you were seeing is unrelated to elf, it has to do with the NSH > script support, which is also using romfs. The two images are > overwriting each other during the build. > I did notice what looks like a bug to me, the elf relocation seems to > have an issue with the 64bit build, so this config you will notice I > set CONFIG_SIM_M32. I will open a bug on that. > > ❯ diff boards/sim/sim/sim/configs/elf/defconfig > boards/sim/sim/sim/configs/nsh/defconfig > 16d15 > < CONFIG_BOARDCTL_ROMDISK=y > 23,26d21 > < CONFIG_ELF=y > < CONFIG_EXAMPLES_ELF=y > < CONFIG_EXAMPLES_ELF_DEVMINOR=6 > < CONFIG_EXAMPLES_ELF_DEVPATH="/dev/ram6" > 28,29d22 > < CONFIG_EXECFUNCS_HAVE_SYMTAB=y > < CONFIG_EXECFUNCS_SYSTEM_SYMTAB=y > 33a27 > > CONFIG_FS_BINFS=y > 37a32 > > CONFIG_LIBC_EXECFUNCS=y > 41a37 > > CONFIG_NSH_ARCHROMFS=y > 42a39,40 > > CONFIG_NSH_CONSOLE_LOGIN=y > > CONFIG_NSH_FATDEVNO=2 > 46a45,46 > > CONFIG_NSH_ROMFSDEVNO=1 > > CONFIG_NSH_ROMFSETC=y > 54d53 > < CONFIG_SIM_M32=y > > > --------------------------------------------------------------------------------------- > NuttShell (NSH) NuttX-10.0.1 > MOTD: username=admin password=Administrator > nsh> ? > help usage: help [-v] [<cmd>] > > . cd echo hexdump mkfatfs poweroff sleep > umount > [ cp exec kill mkrd ps source > unset > ? cmp exit losetup mh pwd test > usleep > basename dirname false ls mount rm time > xd > break dd free mb mv rmdir true > cat df help mkdir mw set uname > > Builtin Apps: > elf hello nsh sh > nsh> elf > Initial memory usage: 1124560 > Registering romdisk at /dev/ram6 > > Memory Usage after romdisk_register: > Before: 1124560 After: 1124640 Change: 80 > Mounting ROMFS filesystem at target=/mnt/romfs with source=/dev/ram6 > > Memory Usage after mount: > Before: 1124640 After: 1124784 Change: 144 > > > **************************************************************************** > * Executing errno > > **************************************************************************** > > > Memory Usage after exec: > Before: 1124784 After: 1192000 Change: 67216 > Wait a bit for test completion > Hello, World on stdout > Hello, World on stderr > We failed to open "aflav-sautga-ay!" errno is 2 > > Memory Usage after program execution: > Before: 1192000 After: 1190560 Change: -1440 > > > > <-------snip-------> > nsh> /mnt/romfs/hello > Getting ready to say "Hello, world" > > Hello, world! > It has been said. > > argc = 1 > argv = 0x0xf3e3bb30 > argv[0] = (0x0xf3e3bb38) "/mnt/romfs/hello" > argv[1] = 0x0 > Goodbye, world! > > On Sun, Apr 11, 2021 at 9:24 PM Tanushree Baindur > <tanushree.bain...@gmail.com> wrote: > > > > Hi, > > > > I am trying to run the hello world example in > > /apps/examples/elf/tests/hello in the simulator. I cleared the existing > > configuration using make distclean and then regenerated the .config file > > for sim:nsh configuration. I have added the following lines to the end of > > the .config file: > > > > CONFIG_LIBC_ARCH_ELF=y > > CONFIG_ELF=y > > CONFIG_EXAMPLES_ELF=y > > CONFIG_EXAMPLES_ELF_ROMFS=y > > CONFIG_EXAMPLES_ELF_DEVPATH="/dev/ram6" > > CONFIG_EXAMPLES_ELF_DEVMINOR=6 > > CONFIG_ELF_SYMBOL_CACHECOUNT=256 > > CONFIG_ELF_RELOCATION_BUFFERCOUNT=256 > > CONFIG_LIBC_ARCH_ELF_64BIT=y > > > > When I run the simulator after a make I get the following error: > > nsh: init: fopen failed: 2 > > > > Could you please let me know if I am missing more configuration settings? > > > > Thanks, > > Tanushree >