arch/sim/src/Makefile: Fix build issues with clang on linux
This commit fixes at least two issues. * Fix a build with clang on linux ``` /usr/bin/ld: cannot open linker script file nuttx.ld: No such file or directory clang: error: linker command failed with exit code 1 (use -v to see invocation) ``` * Restore symbol renaming for clang on linux I guess it actually depends on the linker. For now, use CONFIG_HOST_MACOS. This fixed the following crash seen with sim/linux built with clang. ``` #135462 0x0000000000404a81 in nxtask_exithook (tcb=0x48f310 <g_idletcb>, status=1, nonblocking=0 '\000') at task/task_exithook.c:618 #135463 0x0000000000402aed in exit (status=1) at task/exit.c:103 #135464 0x0000000000475833 in host_abort (status=1) at sim/up_hostmisc.c:48 #135465 0x000000000040e6c6 in up_assert (filename=0x47b167 "semaphore/sem_wait.c", lineno=113) at sim/up_assert.c:126 #135466 0x000000000040850b in _assert (filename=0x47b167 "semaphore/sem_wait.c", linenum=113) at assert/lib_assert.c:36 #135467 0x0000000000403a40 in nxsem_wait (sem=0x7fca38b1c2d0) at semaphore/sem_wait.c:113 #135468 0x0000000000403b43 in sem_wait (sem=0x7fca38b1c2d0) at semaphore/sem_wait.c:271 #135469 0x000000000040aad3 in lib_stream_semtake (list=0x7fca38b1c2d0) at stdio/lib_libstream.c:159 #135470 0x000000000040a8e7 in lib_flushall (list=0x7fca38b1c2d0) at stdio/lib_libflushall.c:61 #135471 0x0000000000404c3c in nxtask_flushstreams (tcb=0x48f310 <g_idletcb>) at task/task_exithook.c:520 #135472 0x0000000000404a81 in nxtask_exithook (tcb=0x48f310 <g_idletcb>, status=1, nonblocking=0 '\000') at task/task_exithook.c:618 #135473 0x0000000000402aed in exit (status=1) at task/exit.c:103 #135474 0x0000000000475833 in host_abort (status=1) at sim/up_hostmisc.c:48 #135475 0x000000000040e6c6 in up_assert (filename=0x47b167 "semaphore/sem_wait.c", lineno=113) at sim/up_assert.c:126 #135476 0x000000000040850b in _assert (filename=0x47b167 "semaphore/sem_wait.c", linenum=113) at assert/lib_assert.c:36 #135477 0x0000000000403a40 in nxsem_wait (sem=0x7fca38b1c2d0) at semaphore/sem_wait.c:113 #135478 0x0000000000403b43 in sem_wait (sem=0x7fca38b1c2d0) at semaphore/sem_wait.c:271 #135479 0x000000000040aad3 in lib_stream_semtake (list=0x7fca38b1c2d0) at stdio/lib_libstream.c:159 #135480 0x000000000040a8e7 in lib_flushall (list=0x7fca38b1c2d0) at stdio/lib_libflushall.c:61 #135481 0x0000000000404c3c in nxtask_flushstreams (tcb=0x48f310 <g_idletcb>) at task/task_exithook.c:520 ```
This commit is contained in:
parent
7fcfe40821
commit
85af0f37ad
@ -285,11 +285,14 @@ board/libboard$(LIBEXT):
|
||||
nuttx-names.dat: nuttx-names.in
|
||||
$(call PREPROCESS, nuttx-names.in, nuttx-names.dat)
|
||||
|
||||
# Note: Use objcopy for Linux because for some reasons visibility=hidden
|
||||
# stuff doesn't work there as we expect.
|
||||
# Note: _stext stuff is for CONFIG_CXX_INITIALIZE_SINIT, which in not
|
||||
# necessary for macOS.
|
||||
nuttx$(EXEEXT): libarch$(LIBEXT) board/libboard$(LIBEXT) $(HEADOBJ) $(LINKOBJS) $(HOSTOBJS) nuttx-names.dat
|
||||
$(Q) echo "LD: nuttx$(EXEEXT)"
|
||||
$(Q) $(LD) -r $(LDLINKFLAGS) $(RELPATHS) $(EXTRA_LIBPATHS) -o nuttx.rel $(REQUIREDOBJS) $(LDSTARTGROUP) $(RELLIBS) $(EXTRA_LIBS) $(LDENDGROUP)
|
||||
ifeq ("$(shell $(CC) --version | grep clang)","")
|
||||
# none clang based native compilers need opjcopy to build simulation
|
||||
ifneq ($(CONFIG_HOST_MACOS),y)
|
||||
$(Q) $(OBJCOPY) --redefine-syms=nuttx-names.dat nuttx.rel
|
||||
$(Q) $(CC) $(CCLINKFLAGS) -Wl,-verbose 2>&1 | \
|
||||
sed -e '/====/,/====/!d;//d' -e 's/__executable_start/_stext/g' -e 's/__init_array_start/_sinit/g' \
|
||||
|
Loading…
x
Reference in New Issue
Block a user