I have a not-very-complex firmware project where the bulk of code space is taken up by the Google IoT Core library and its many dependencies. The final binary is slightly above 1 MB (although my own code is only around 15 KB) and doesn't fit into the default partition scheme. Although I could go and resize the partitions, this is still a very heavy image and I'd like to reduce it first.
To reduce size, an obvious remedy is switching to the "nano" version of newlib which has reduced output formatting. Note that _before_ enabling the "nano" option, the binary linked just fine, but was a bit too large to fit into the 1 MB partition:
Code: Select all
Total sizes:
DRAM .data size: 16536 bytes
DRAM .bss size: 29544 bytes
Used static DRAM: 46080 bytes ( 134656 available, 25.5% used)
Used static IRAM: 90127 bytes ( 40945 available, 68.8% used)
Flash code: 762267 bytes
Flash rodata: 207484 bytes
Total image size:~1076414 bytes (.bin may be padded larger)
Code: Select all
$ ESPBAUD=921600 idf.py -p /dev/EWK001_uart size flash monitor
Adding "size"'s dependency "app" to list of commands with default set of options.
Adding "flash"'s dependency "all" to list of commands with default set of options.
Executing action: app
Running ninja in directory /home/tarmo/projects/ubik/dcov/src/fv_comms/build
Executing "ninja app"...
[0/1] Re-running CMake...
-- Project version: a142608
-- Building ESP-IDF components for target esp32
Loading defaults file /home/tarmo/projects/ubik/dcov/src/fv_comms/sdkconfig.defaults...
-- Adding linker script /home/tarmo/projects/ubik/dcov/src/fv_comms/build/esp-idf/esp32/esp32_out.ld
-- Adding linker script /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp32/ld/esp32.project.ld.in
-- Adding linker script /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp32/ld/esp32.peripherals.ld
-- Adding linker script /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-time.ld
-- Adding linker script /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
-- Adding linker script /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
-- Adding linker script /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld
-- Adding linker script /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_rom/esp32/ld/esp32.rom.syscalls.ld
-- Adding linker script /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
-- Adding linker script /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-nano.ld
-- Components: app_trace app_update bootloader bootloader_support cxx driver efuse esp32 esp_common esp_eth esp_event esp_netif esp_ringbuf esp_rom esp_wifi espcoredump esptool_py freertos gcp_iot_sdk heap log l
wip main mbedtls newlib nvs_flash partition_table perfmon pthread soc spi_flash tcpip_adapter vfs wpa_supplicant xtensa
-- Component paths: /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/app_trace /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/app_update /home/tarmo/projects/ubik/scov/lib/src/esp-idf/compone
nts/bootloader /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/bootloader_support /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/cxx /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components
/driver /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/efuse /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp32 /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_common /home/
tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_eth /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_event /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_netif /home/tarmo/pro
jects/ubik/scov/lib/src/esp-idf/components/esp_ringbuf /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_rom /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi /home/tarmo/projects/ub
ik/scov/lib/src/esp-idf/components/espcoredump /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esptool_py /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/freertos /home/tarmo/projects/ubik/dc
ov/src/fv_comms/components/gcp_iot_sdk /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/heap /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/log /home/tarmo/projects/ubik/scov/lib/src/esp-idf/
components/lwip /home/tarmo/projects/ubik/dcov/src/fv_comms/main /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/mbedtls /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/newlib /home/tarmo/pro
jects/ubik/scov/lib/src/esp-idf/components/nvs_flash /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/partition_table /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/perfmon /home/tarmo/projec
ts/ubik/scov/lib/src/esp-idf/components/pthread /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/soc /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/spi_flash /home/tarmo/projects/ubik/scov/li
b/src/esp-idf/components/tcpip_adapter /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/vfs /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/wpa_supplicant /home/tarmo/projects/ubik/scov/lib/sr
c/esp-idf/components/xtensa
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tarmo/projects/ubik/dcov/src/fv_comms/build
...
[556/557] Linking CXX executable fv_comms.elf
FAILED: fv_comms.elf
: && /home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++ -mlongcalls -Wno-frame-address CMakeFiles/fv_comms.elf.dir/project_elf_src.c.obj CMakeFiles/fv_comms.elf.dir/gcp_private_key.pem.S.obj -o fv_comms.elf esp-idf/xtensa/libxtensa.a esp-idf/esp_ringbuf/libesp_ringbuf.a esp-idf/app_update/libapp_update.a esp-idf/spi_flash/libspi_flash.a esp-idf/bootloader_support/libbootloader_support.a esp-idf/efuse/libefuse.a esp-idf/driver/libdriver.a esp-idf/nvs_flash/libnvs_flash.a esp-idf/pthread/libpthread.a esp-idf/espcoredump/libespcoredump.a esp-idf/perfmon/libperfmon.a esp-idf/esp32/libesp32.a esp-idf/esp_common/libesp_common.a esp-idf/soc/libsoc.a esp-idf/esp_eth/libesp_eth.a esp-idf/tcpip_adapter/libtcpip_adapter.a esp-idf/esp_netif/libesp_netif.a esp-idf/esp_event/libesp_event.a esp-idf/wpa_supplicant/libwpa_supplicant.a esp-idf/esp_wifi/libesp_wifi.a esp-idf/lwip/liblwip.a esp-idf/log/liblog.a esp-idf/heap/libheap.a esp-idf/app_trace/libapp_trace.a esp-idf/freertos/libfreertos.a esp-idf/vfs/libvfs.a esp-idf/newlib/libnewlib.a esp-idf/cxx/libcxx.a esp-idf/gcp_iot_sdk/libgcp_iot_sdk.a esp-idf/main/libmain.a -Wl,--cref -Wl,--Map=/home/tarmo/projects/ubik/dcov/src/fv_comms/build/fv_comms.map -fno-rtti -fno-lto -Wl,--start-group esp-idf/gcp_iot_sdk/libgcp_iot_sdk.a esp-idf/xtensa/libxtensa.a esp-idf/esp_ringbuf/libesp_ringbuf.a esp-idf/app_update/libapp_update.a esp-idf/spi_flash/libspi_flash.a esp-idf/bootloader_support/libbootloader_support.a esp-idf/efuse/libefuse.a esp-idf/driver/libdriver.a esp-idf/nvs_flash/libnvs_flash.a esp-idf/pthread/libpthread.a esp-idf/espcoredump/libespcoredump.a esp-idf/perfmon/libperfmon.a esp-idf/esp32/libesp32.a esp-idf/esp_common/libesp_common.a esp-idf/soc/libsoc.a esp-idf/esp_eth/libesp_eth.a esp-idf/tcpip_adapter/libtcpip_adapter.a esp-idf/esp_netif/libesp_netif.a esp-idf/esp_event/libesp_event.a esp-idf/wpa_supplicant/libwpa_supplicant.a esp-idf/esp_wifi/libesp_wifi.a esp-idf/lwip/liblwip.a esp-idf/log/liblog.a esp-idf/heap/libheap.a esp-idf/app_trace/libapp_trace.a esp-idf/freertos/libfreertos.a esp-idf/vfs/libvfs.a esp-idf/newlib/libnewlib.a esp-idf/cxx/libcxx.a esp-idf/mbedtls/mbedtls/library/libmbedtls.a esp-idf/mbedtls/mbedtls/library/libmbedcrypto.a esp-idf/mbedtls/mbedtls/library/libmbedx509.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libcoexist.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libcore.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libespnow.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libmesh.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libnet80211.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libpp.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/librtc.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libsmartconfig.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libphy.a esp-idf/xtensa/libxtensa.a esp-idf/esp_ringbuf/libesp_ringbuf.a esp-idf/app_update/libapp_update.a esp-idf/spi_flash/libspi_flash.a esp-idf/bootloader_support/libbootloader_support.a esp-idf/efuse/libefuse.a esp-idf/driver/libdriver.a esp-idf/nvs_flash/libnvs_flash.a esp-idf/pthread/libpthread.a esp-idf/espcoredump/libespcoredump.a esp-idf/perfmon/libperfmon.a esp-idf/esp32/libesp32.a esp-idf/esp_common/libesp_common.a esp-idf/soc/libsoc.a esp-idf/esp_eth/libesp_eth.a esp-idf/tcpip_adapter/libtcpip_adapter.a esp-idf/esp_netif/libesp_netif.a esp-idf/esp_event/libesp_event.a esp-idf/wpa_supplicant/libwpa_supplicant.a esp-idf/esp_wifi/libesp_wifi.a esp-idf/lwip/liblwip.a esp-idf/log/liblog.a esp-idf/heap/libheap.a esp-idf/app_trace/libapp_trace.a esp-idf/freertos/libfreertos.a esp-idf/vfs/libvfs.a esp-idf/newlib/libnewlib.a esp-idf/cxx/libcxx.a esp-idf/mbedtls/mbedtls/library/libmbedtls.a esp-idf/mbedtls/mbedtls/library/libmbedcrypto.a esp-idf/mbedtls/mbedtls/library/libmbedx509.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libcoexist.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libcore.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libespnow.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libmesh.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libnet80211.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libpp.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/librtc.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libsmartconfig.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libphy.a esp-idf/xtensa/libxtensa.a esp-idf/esp_ringbuf/libesp_ringbuf.a esp-idf/app_update/libapp_update.a esp-idf/spi_flash/libspi_flash.a esp-idf/bootloader_support/libbootloader_support.a esp-idf/efuse/libefuse.a esp-idf/driver/libdriver.a esp-idf/nvs_flash/libnvs_flash.a esp-idf/pthread/libpthread.a esp-idf/espcoredump/libespcoredump.a esp-idf/perfmon/libperfmon.a esp-idf/esp32/libesp32.a esp-idf/esp_common/libesp_common.a esp-idf/soc/libsoc.a esp-idf/esp_eth/libesp_eth.a esp-idf/tcpip_adapter/libtcpip_adapter.a esp-idf/esp_netif/libesp_netif.a esp-idf/esp_event/libesp_event.a esp-idf/wpa_supplicant/libwpa_supplicant.a esp-idf/esp_wifi/libesp_wifi.a esp-idf/lwip/liblwip.a esp-idf/log/liblog.a esp-idf/heap/libheap.a esp-idf/app_trace/libapp_trace.a esp-idf/freertos/libfreertos.a esp-idf/vfs/libvfs.a esp-idf/newlib/libnewlib.a esp-idf/cxx/libcxx.a esp-idf/mbedtls/mbedtls/library/libmbedtls.a esp-idf/mbedtls/mbedtls/library/libmbedcrypto.a esp-idf/mbedtls/mbedtls/library/libmbedx509.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libcoexist.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libcore.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libespnow.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libmesh.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libnet80211.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libpp.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/librtc.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libsmartconfig.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libphy.a esp-idf/xtensa/libxtensa.a esp-idf/esp_ringbuf/libesp_ringbuf.a esp-idf/app_update/libapp_update.a esp-idf/spi_flash/libspi_flash.a esp-idf/bootloader_support/libbootloader_support.a esp-idf/efuse/libefuse.a esp-idf/driver/libdriver.a esp-idf/nvs_flash/libnvs_flash.a esp-idf/pthread/libpthread.a esp-idf/espcoredump/libespcoredump.a esp-idf/perfmon/libperfmon.a esp-idf/esp32/libesp32.a esp-idf/esp_common/libesp_common.a esp-idf/soc/libsoc.a esp-idf/esp_eth/libesp_eth.a esp-idf/tcpip_adapter/libtcpip_adapter.a esp-idf/esp_netif/libesp_netif.a esp-idf/esp_event/libesp_event.a esp-idf/wpa_supplicant/libwpa_supplicant.a esp-idf/esp_wifi/libesp_wifi.a esp-idf/lwip/liblwip.a esp-idf/log/liblog.a esp-idf/heap/libheap.a esp-idf/app_trace/libapp_trace.a esp-idf/freertos/libfreertos.a esp-idf/vfs/libvfs.a esp-idf/newlib/libnewlib.a esp-idf/cxx/libcxx.a esp-idf/mbedtls/mbedtls/library/libmbedtls.a esp-idf/mbedtls/mbedtls/library/libmbedcrypto.a esp-idf/mbedtls/mbedtls/library/libmbedx509.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libcoexist.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libcore.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libespnow.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libmesh.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libnet80211.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libpp.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/librtc.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libsmartconfig.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32/libphy.a /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/xtensa/esp32/libhal.a -u esp_app_desc -u pthread_include_pthread_impl -u pthread_include_pthread_cond_impl -u pthread_include_pthread_local_storage_impl -L /home/tarmo/projects/ubik/dcov/src/fv_comms/build/esp-idf/esp32 -T esp32_out.ld -u app_main -L /home/tarmo/projects/ubik/dcov/src/fv_comms/build/esp-idf/esp32/ld -T esp32.project.ld -L /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp32/ld -T esp32.peripherals.ld -u call_user_start_cpu0 -u ld_include_panic_highint_hdl -Wl,--gc-sections -L /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_rom/esp32/ld -T esp32.rom.newlib-time.ld -T esp32.rom.ld -T esp32.rom.libgcc.ld -T esp32.rom.newlib-data.ld -T esp32.rom.syscalls.ld -T esp32.rom.newlib-funcs.ld -T esp32.rom.newlib-nano.ld -L /home/tarmo/projects/ubik/scov/lib/src/esp-idf/components/esp_wifi/lib/esp32 esp-idf/app_trace/libapp_trace.a -lgcov esp-idf/app_trace/libapp_trace.a -lgcov -Wl,--undefined=uxTopUsedPriority -u vfs_include_syscalls_impl -lc_nano -lm esp-idf/newlib/libnewlib.a -u newlib_include_locks_impl -u newlib_include_heap_impl -u newlib_include_syscalls_impl -u newlib_include_pthread_impl -lgcc -u __cxa_guard_dummy -lstdc++ esp-idf/pthread/libpthread.a -u __cxx_fatal_exception && :
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/lib/no-rtti/libc.a(lib_a-svfiprintf.o): in function `__ssprint_r':
/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:272: multiple definition of `__ssprint_r'; /home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/lib/no-rtti/libc_nano.a(lib_a-nano-svfprintf.o):/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/nano-vfprintf.c:248: first defined here
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/lib/no-rtti/libc.a(lib_a-svfiprintf.o): in function `_svfiprintf_r':
/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:661: multiple definition of `_svfiprintf_r'; /home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/lib/no-rtti/libc_nano.a(lib_a-nano-svfprintf.o):/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/nano-vfprintf.c:472: first defined here
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/lib/no-rtti/libc.a(lib_a-svfiprintf.o): in function `_svfiprintf_r':
/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:922:(.text+0x6aa): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1685:(.text+0x21cd): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1685:(.text+0x221d): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1689:(.text+0x2272): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1691:(.text+0x22be): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1695:(.text+0x2311): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1695:(.text+0x2365): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1698:(.text+0x23b1): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1698:(.text+0x2401): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1764:(.text+0x244e): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1768:(.text+0x24a9): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1768:(.text+0x24ea): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1773:(.text+0x2516): dangerous relocation: call8: call target out of range: __ssprint_r
/home/tarmo/projects/ubik/scov/bin/espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld: /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfprintf.c:1781:(.text+0x2535): dangerous relocation: call8: call target out of range: __ssprint_r
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
ninja failed with exit code 1
Firstly, both libc.a and libc_nano.a are linked in simultaneously and have conflicting definitions of __ssprint_r and a few other functions. I don't understand how that happens, because the linker command line doesn't specify either of those libraries.
Secondly, there seem to be some library compiled without "-mlongcalls" so it can't address far-laying functions. It seems to me that the culprit is libc itself. This could be a side-effect of the first problem.
Anyway, this is a C++ project on ESP IDF 4.1 (latest code and tools from git branch "release/v4.1").
What could I do to solve this issue?