Hello Xiang Xiao,

Alan has approved pull

  https://github.com/apache/incubator-nuttx/pull/4173

There is question what to do with SIM target and others
in the longer term. I have removed them from the pull
which has been merged.

I resent text from previous email with correct identity
to pass to the list this time and document isssues.

On Sunday 18 of July 2021 18:39:12 Pavel Pisa wrote:
> From the search, it seems that mips renesas risc-v x86_64 xtensa has not
> switched to linking by GCC.... so I hope I have not break something there.

For example, correction of SIM target seems to be walk in
the minefield.

macOS (sim-02)
Configuration/Tool: sim/sotest
------------------------------------------------------------------------------------
  Cleaning...
  Configuring...
  Building NuttX...
x86_64-elf-ld: unrecognised emulation mode: cmodel=large
Supported emulations: elf_x86_64 elf_i386 elf_iamcu elf32_x86_64 elf_l1om 
elf_k1om
make[5]: *** [sotest] Error 1
make[5]: Target `install' not remade because of errors.
make[4]: *** [sotest_install] Error 2
x86_64-elf-ld: unrecognised emulation mode: cmodel=large
Supported emulations: elf_x86_64 elf_i386 elf_iamcu elf32_x86_64 elf_l1om 
elf_k1om
make[5]: *** [modprint] Error 1
make[5]: Target `install' not remade because of errors.
make[4]: *** [modprint_install] Error 2
make[4]: Target `all' not remade because of errors.
make[3]: *** [build] Error 2
make[3]: Target `all' not remade because of errors.
make[2]: *** 
[/Users/runner/work/incubator-nuttx/incubator-nuttx/sources/apps/examples/sotest_all]
 Error 2
make[2]: Target 
`/Users/runner/work/incubator-nuttx/incubator-nuttx/sources/apps/libapps.a' not 
remade because of errors.
make[1]: *** [all] Error 2
make: *** 
[/Users/runner/work/incubator-nuttx/incubator-nuttx/sources/apps/libapps.a] 
Error 2
make: Target `all' not remade because of errors.
/Users/runner/work/incubator-nuttx/incubator-nuttx/sources/nuttx/tools/testbuild.sh:
 line 
252: 
/Users/runner/work/incubator-nuttx/incubator-nuttx/sources/nuttx/../nuttx/nuttx.manifest:
 No such file or directory
  Normalize sim/sotest

As I have checked most of the architectures does not use
GCC as LD or doesnot define LDMODULEFLAGS or LDELFFLAGS.

So it seems that changes to other ten ARM architectures
do not have purpose for now.

The sim target is special

It defines GCC as LD at top

CC = $(CROSSDEV)cc
CXX = $(CROSSDEV)c++
CPP = $(CROSSDEV)cc -E -P -x c
LD = $(CROSSDEV)cc

but then plain LD in MAC OS case 

# NuttX modules are ELF binaries.
# Non-ELF platforms like macOS need to use a separate ELF toolchain.
ifeq ($(CONFIG_HOST_MACOS),y)
  # eg. brew install x86_64-elf-gcc
  MODULECC = x86_64-elf-gcc
  MODULELD = x86_64-elf-ld
  MODULESTRIP = x86_64-elf-strip --strip-unneeded
endif

So I can add 

LDMODULEFLAGS += ...

in else when not on MAC OS....

I have removed sim change from the pull request.

Really there should be define which allows to distinguish
which link slution is used and select right behavior...

Best wishes,

Pavel

Reply via email to