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
>

Reply via email to