From d37f8def8814586f00c1f860019538f41fc5cf7d Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Sat, 5 Sep 2020 18:23:03 +0300 Subject: [PATCH] Fix FTBFS due to LTO being more sensitive to file order When a symbol is used from inline assembly, LTO compiling and linking process becomes more picky with regard to the order of compile/linking units. Specifically, when FreeRTOS/Source/portable/GCC/ARM_CM3/port.c comes before FreeRTOS/Source/tasks.c in find results, the build fails with undefined reference to `pxCurrentTCB' error. To workaround the issue, do the same as we already have for vTaskSwitchContext. Note: different order affects resulting binary (.text section) size: 39924 with the wrong order and 39884 with the correct. Fixes #685. --- workspace/TS100/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workspace/TS100/Makefile b/workspace/TS100/Makefile index 20c43f58..31aec7e0 100644 --- a/workspace/TS100/Makefile +++ b/workspace/TS100/Makefile @@ -95,7 +95,9 @@ LINKER_FLAGS=-Wl,--gc-sections \ -Wl,--wrap=free \ -o$(OUT_HEXFILE).elf \ -Wl,-Map=$(OUT_HEXFILE).map \ - -lm -Wl,--undefined=vTaskSwitchContext \ + -lm \ + -Wl,--undefined=vTaskSwitchContext \ + -Wl,--undefined=pxCurrentTCB \ -Wl,--defsym=__FLASH_SIZE__=$(flash_size) \ -Wl,--defsym=__BOOTLDR_SIZE__=$(bootldr_size) \ --specs=nano.specs