When compiling LTP there are missing symbols because the Make.dep file is being built incorrectly.
For example see these entries that are all overriding each other:
❯ grep "12-1\.home" -A 2 ./Make.dep
12-1.home.bashton.nuttx.wrk.apps.testing.ltp.o: \
ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_create/12-1.c \
/usr/include/stdc-predef.h \
--
12-1.home.bashton.nuttx.wrk.apps.testing.ltp.o: \
ltp/testcases/open_posix_testsuite/conformance/interfaces/mq_open/12-1.c \
/usr/include/stdc-predef.h /home/bashton/nuttx/wrk/nuttx/include/stdio.h \
--
12-1.home.bashton.nuttx.wrk.apps.testing.ltp.o: \
ltp/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/speculative/12-1.c \
/usr/include/stdc-predef.h /home/bashton/nuttx/wrk/nuttx/include/time.h \
--
12-1.home.bashton.nuttx.wrk.apps.testing.ltp.o: \
ltp/testcases/open_posix_testsuite/conformance/interfaces/sem_wait/12-1.c \
/usr/include/stdc-predef.h /home/bashton/nuttx/wrk/nuttx/include/stdio.h \
--
12-1.home.bashton.nuttx.wrk.apps.testing.ltp.o: \
ltp/testcases/open_posix_testsuite/conformance/interfaces/mmap/12-1.c \
/usr/include/stdc-predef.h /home/bashton/nuttx/wrk/nuttx/include/stdio.h \
--
12-1.home.bashton.nuttx.wrk.apps.testing.ltp.o: \
ltp/testcases/open_posix_testsuite/conformance/interfaces/mq_receive/12-1.c \
/usr/include/stdc-predef.h /home/bashton/nuttx/wrk/nuttx/include/stdio.h \
--
12-1.home.bashton.nuttx.wrk.apps.testing.ltp.o: \
ltp/testcases/open_posix_testsuite/conformance/interfaces/sigqueue/12-1.c \
/usr/include/stdc-predef.h \
--
12-1.home.bashton.nuttx.wrk.apps.testing.ltp.o: \
ltp/testcases/open_posix_testsuite/conformance/interfaces/mq_timedsend/12-1.c \
/usr/include/stdc-predef.h /home/bashton/nuttx/wrk/nuttx/include/stdio.h \
This results in a lot of missing symbols, for example:
/usr/bin/ld: nuttx.rel:(.rodata+0xf52c): undefined reference to `ltp_timer_create_speculative_15_1_main'
/usr/bin/ld: nuttx.rel:(.rodata+0xf53c): undefined reference to `ltp_timer_create_speculative_2_1_main'
/usr/bin/ld: nuttx.rel:(.rodata+0xf54c): undefined reference to `ltp_timer_create_speculative_5_1_main'
/usr/bin/ld: nuttx.rel:(.rodata+0xf55c): undefined reference to `ltp_timer_delete_speculative_5_1_main'
/usr/bin/ld: nuttx.rel:(.rodata+0xf56c): undefined reference to `ltp_timer_delete_speculative_5_2_main'
/usr/bin/ld: nuttx.rel:(.rodata+0xf57c): undefined reference to `ltp_timer_getoverrun_speculative_6_1_main'
/usr/bin/ld: nuttx.rel:(.rodata+0xf58c): undefined reference to `ltp_timer_getoverrun_speculative_6_2_main'
/usr/bin/ld: nuttx.rel:(.rodata+0xf5ac): undefined reference to `ltp_timer_gettime_speculative_6_1_main'
/usr/bin/ld: nuttx.rel:(.rodata+0xf5bc): undefined reference to `ltp_timer_gettime_speculative_6_2_main'
/usr/bin/ld: nuttx.rel:(.rodata+0xf5cc): undefined reference to `ltp_timer_gettime_speculative_6_3_main'
/usr/bin/ld: nuttx.rel:(.rodata+0xf5ec): undefined reference to `ltp_timer_settime_speculative_12_1_main'
Additionally I had to make these to be able to support the large amount of command line arguments:
Changes to the OS:
diff --git a/tools/Config.mk b/tools/Config.mk
index 6adbebf21a..6400121281 100644
--- a/tools/Config.mk
+++ b/tools/Config.mk
@@ -328,9 +328,13 @@ endef
#
# CONFIG_WINDOWS_NATIVE - Defined for a Windows native build
+define NL
+
+
+endef
+
define ARCHIVE_ADD
- @echo "AR (add): ${shell basename $(1)} $(2)"
- $(Q) $(AR) $1 $(2)
+ $(Q) $(AR) $1 $(2) $(NL)
endef
# ARCHIVE - Same as above, but ensure the archive is
@@ -467,12 +471,13 @@ define CLEAN
$(Q) if exist *$(LIBEXT) (del /f /q *$(LIBEXT))
$(Q) if exist *~ (del /f /q *~)
$(Q) if exist (del /f /q .*.swp)
- $(Q) if exist $(OBJS) (del /f /q $(OBJS))
+ $(Q) $(foreach OBJ, $(OBJS), $(if exist $(OBJS) (del /f /q $(OBJ))))
$(Q) if exist $(BIN) (del /f /q $(BIN))
endef
else
define CLEAN
- $(Q) rm -f *$(OBJEXT) *$(LIBEXT) *~ .*.swp $(OBJS) $(BIN)
+ $(Q) rm -f *$(OBJEXT) *$(LIBEXT) *~ .*.swp $(BIN)
+ $(Q) $(foreach OBJ, $(OBJS), $(rm -f $(OBJ)))
endef
endif
And these changes to apps:
diff --git a/Application.mk b/Application.mk
index d1dba985..f606398d 100644
--- a/Application.mk
+++ b/Application.mk
@@ -140,9 +140,9 @@ $(CXXOBJS): %$(SUFFIX)$(OBJEXT): %$(CXXEXT)
archive:
ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
- $(call ARCHIVE_ADD, "${shell cygpath -w $(BIN)}", $(OBJS))
+ $(foreach OBJ, $(OBJS), $(call ARCHIVE_ADD, "${shell cygpath -w $(BIN)}", $(OBJ)))
else
- $(call ARCHIVE_ADD, $(BIN), $(OBJS))
+ $(foreach OBJ, $(OBJS), $(call ARCHIVE_ADD, $(BIN) $(OBJ)))
endif
ifeq ($(BUILD_MODULE),y)
The defconfig for the sim is here that I used:
defconfig.txt
When compiling LTP there are missing symbols because the Make.dep file is being built incorrectly.
For example see these entries that are all overriding each other:
This results in a lot of missing symbols, for example:
Additionally I had to make these to be able to support the large amount of command line arguments:
Changes to the OS:
And these changes to apps:
The defconfig for the sim is here that I used:
defconfig.txt