esp-rs / rust

Rust for the xtensa architecture. Built in targets for the ESP32 and ESP8266
https://www.rust-lang.org
Other
744 stars 39 forks source link

Link error when using some `std::fs` functions #100

Closed Eroc33 closed 2 years ago

Eroc33 commented 2 years ago

std::fs::File.set_len/ftruncate

When using std::fs::File.set_len anywhere in the project a link error occurs referencing ftruncate:

Relevant excerpt

/home/euan/esp-idf-ftruncate-link-bug-repro/.embuild/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libstd-d1f4638178e555e4.rlib(std-d1f4638178e555e4.std.43feb998-cgu.2.rcgu.o):(.literal._ZN3std3sys4unix5cvt_r17h6b170249ec86b082E+0x0): undefined reference to `ftruncate'
Full build output
euan@Euan-Desktop:~/esp-idf-ftruncate-link-bug-repro$ cargo build
    Blocking waiting for file lock on build directory
   Compiling bindgen v0.59.2
   Compiling embuild v0.27.1
   Compiling esp-idf-sys v0.28.3
   Compiling esp-idf-ftruncate-link-bug-repro v0.1.0 (/home/euan/esp-idf-ftruncate-link-bug-repro)
error: linking with `ldproxy` failed: exit status: 1
  |
  = note: "ldproxy" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_ftruncate_link_bug_repro-f438ed8d59ada69c.1iq3gu07s860atys.rcgu.o" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_ftruncate_link_bug_repro-f438ed8d59ada69c.1xhrgistnoo3vrvu.rcgu.o" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_ftruncate_link_bug_repro-f438ed8d59ada69c.3p5lv2lqfhd1l9sn.rcgu.o" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_ftruncate_link_bug_repro-f438ed8d59ada69c.3q5y8i7sp4xzdsye.rcgu.o" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_ftruncate_link_bug_repro-f438ed8d59ada69c.4qyt2qwp1t65e50g.rcgu.o" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_ftruncate_link_bug_repro-f438ed8d59ada69c.28w0hodb6thz5p10.rcgu.o" "-Wl,--as-needed" "-L" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps" "-L" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/debug/deps" "-L" "/home/euan/.rustup/toolchains/esp/lib/rustlib/xtensa-esp32-espidf/lib" "-Wl,-Bstatic" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libesp_idf_sys-c71515d603b41be1.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libmutex_trait-df9aa576e9040a2f.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libembedded_svc-2899069fe8327a24.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/liblog-bcbaccb88823ec70.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libcfg_if-935bd39d9f6427e5.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libanyhow-c3305a373346a996.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libenumset-7515a396e404b77d.rlib" "-Wl,--start-group" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libstd-d1f4638178e555e4.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libpanic_abort-45242a1e085ac8c1.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libstd_detect-0d85fdf205992f33.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/librustc_demangle-09912fe574e03e88.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libhashbrown-b84fbcd507543c60.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/librustc_std_workspace_alloc-6f53877691d2c88b.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libunwind-75acfd38a7bfff04.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libcfg_if-16b2675bf0230332.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/liblibc-a626876b7c2b7226.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/liballoc-5a1058ec08d59625.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/librustc_std_workspace_core-17c3abae709388e4.rlib" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libcore-8f5a7b792e1e0797.rlib" "-Wl,--end-group" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libcompiler_builtins-20ef2192007b875d.rlib" "-Wl,-Bdynamic" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/home/euan/.rustup/toolchains/esp/lib/rustlib/xtensa-esp32-espidf/lib" "-o" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_ftruncate_link_bug_repro-f438ed8d59ada69c" "-Wl,--gc-sections" "-no-pie" "-nodefaultlibs" "--ldproxy-linker" "/home/euan/esp-idf-ftruncate-link-bug-repro/.embuild/platformio/packages/toolchain-xtensa-esp32/bin/xtensa-esp32-elf-gcc" "--ldproxy-dedup-libs" "-L/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf" "-L/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug" "-L/home/euan/esp-idf-ftruncate-link-bug-repro/.embuild/platformio/packages/framework-espidf/components/esp_wifi/lib/esp32" "-L/home/euan/esp-idf-ftruncate-link-bug-repro/.embuild/platformio/packages/framework-espidf/components/esp_rom/esp32/ld" "-L/home/euan/esp-idf-ftruncate-link-bug-repro/.embuild/platformio/packages/framework-espidf/components/xtensa/esp32" "-L/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp32" "-L/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp32/ld" "-L/home/euan/esp-idf-ftruncate-link-bug-repro/.embuild/platformio/packages/framework-espidf/components/esp32/ld" "-Wl,--start-group" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_pm/libesp_pm.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/asio/libasio.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/cbor/libcbor.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/unity/libunity.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/cmock/libcmock.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/coap/libcoap.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/console/libconsole.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_adc_cal/libesp_adc_cal.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_hid/libesp_hid.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/protobuf-c/libprotobuf-c.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/protocomm/libprotocomm.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mdns/libmdns.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_local_ctrl/libesp_local_ctrl.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_websocket_client/libesp_websocket_client.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/expat/libexpat.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/wear_levelling/libwear_levelling.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/fatfs/libfatfs.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/freemodbus/libfreemodbus.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/jsmn/libjsmn.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/json/libjson.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/libsodium/liblibsodium.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mqtt/libmqtt.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/openssl/libopenssl.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/spiffs/libspiffs.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/wifi_provisioning/libwifi_provisioning.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/app_trace/libapp_trace.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/app_update/libapp_update.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/bootloader_support/libbootloader_support.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/cxx/libcxx.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/driver/libdriver.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/efuse/libefuse.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp-tls/libesp-tls.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp32/libesp32.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_common/libesp_common.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_eth/libesp_eth.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_event/libesp_event.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_gdbstub/libesp_gdbstub.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_http_client/libesp_http_client.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_http_server/libesp_http_server.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_https_ota/libesp_https_ota.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_hw_support/libesp_hw_support.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_ipc/libesp_ipc.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_netif/libesp_netif.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_ringbuf/libesp_ringbuf.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_rom/libesp_rom.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_serial_slave_link/libesp_serial_slave_link.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_system/libesp_system.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_timer/libesp_timer.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_wifi/libesp_wifi.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/espcoredump/libespcoredump.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/freertos/libfreertos.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/hal/libhal.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/heap/libheap.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/log/liblog.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/lwip/liblwip.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/libmbedtls.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/newlib/libnewlib.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/nghttp/libnghttp.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/nvs_flash/libnvs_flash.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/perfmon/libperfmon.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/pthread/libpthread.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/sdmmc/libsdmmc.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/soc/libsoc.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/spi_flash/libspi_flash.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/tcp_transport/libtcp_transport.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/tcpip_adapter/libtcpip_adapter.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/ulp/libulp.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/vfs/libvfs.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/wpa_supplicant/libwpa_supplicant.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/xtensa/libxtensa.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/mbedtls/library/libmbedcrypto.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/mbedtls/library/libmbedtls.a" "/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/mbedtls/library/libmbedx509.a" "-lcoexist" "-lcore" "-lespnow" "-lmesh" "-lnet80211" "-lpp" "-lsmartconfig" "-lwapi" "-lphy" "-lrtc" "-lxt_hal" "-lc" "-lm" "-lstdc++" "-lgcc" "-Wl,--end-group" "-T" "esp32_out.ld" "-u" "esp_app_desc" "-u" "pthread_include_pthread_impl" "-u" "pthread_include_pthread_cond_impl" "-u" "pthread_include_pthread_local_storage_impl" "-u" "ld_include_panic_highint_hdl" "-u" "start_app" "-u" "start_app_other_cores" "-T" "esp32.rom.ld" "-T" "esp32.rom.api.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-time.ld" "-u" "vfs_include_syscalls_impl" "-T" "esp32.project.ld" "-T" "esp32.peripherals.ld" "-u" "call_user_start_cpu0" "-u" "app_main" "-u" "newlib_include_heap_impl" "-u" "newlib_include_syscalls_impl" "-u" "newlib_include_pthread_impl" "-u" "__cxa_guard_dummy" "-u" "__cxx_fatal_exception" "-Wl,--Map=/home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf.map" "-Wl,--cref" "-Wl,--gc-sections" "-Wl,--undefined=uxTopUsedPriority" "-Wl,--wrap=_Unwind_Backtrace" "-Wl,--wrap=_Unwind_DeleteException" "-Wl,--wrap=_Unwind_FindEnclosingFunction" "-Wl,--wrap=_Unwind_Find_FDE" "-Wl,--wrap=_Unwind_ForcedUnwind" "-Wl,--wrap=_Unwind_GetCFA" "-Wl,--wrap=_Unwind_GetDataRelBase" "-Wl,--wrap=_Unwind_GetGR" "-Wl,--wrap=_Unwind_GetIP" "-Wl,--wrap=_Unwind_GetIPInfo" "-Wl,--wrap=_Unwind_GetLanguageSpecificData" "-Wl,--wrap=_Unwind_GetRegionStart" "-Wl,--wrap=_Unwind_GetTextRelBase" "-Wl,--wrap=_Unwind_RaiseException" "-Wl,--wrap=_Unwind_Resume" "-Wl,--wrap=_Unwind_Resume_or_Rethrow" "-Wl,--wrap=_Unwind_SetEnableExceptionFdeSorting" "-Wl,--wrap=_Unwind_SetGR" "-Wl,--wrap=_Unwind_SetIP" "-Wl,--wrap=__cxa_call_unexpected" "-Wl,--wrap=__deregister_frame_info" "-Wl,--wrap=__deregister_frame_info_bases" "-Wl,--wrap=__gxx_personality_v0" "-Wl,--wrap=__register_frame" "-Wl,--wrap=__register_frame_info" "-Wl,--wrap=__register_frame_info_bases" "-Wl,--wrap=__register_frame_info_table" "-Wl,--wrap=__register_frame_info_table_bases" "-Wl,--wrap=__register_frame_table" "-Wl,--wrap=longjmp" "-Wl,--wrap=mbedtls_mpi_exp_mod" "-Wno-frame-address" "-fno-lto" "-fno-rtti" "-mlongcalls" "-Og" "-g2" "-ggdb2"
  = note: Running ldproxy
          Error: Linker /home/euan/esp-idf-ftruncate-link-bug-repro/.embuild/platformio/packages/toolchain-xtensa-esp32/bin/xtensa-esp32-elf-gcc failed: exit status: 1
          STDERR OUTPUT:
          /home/euan/esp-idf-ftruncate-link-bug-repro/.embuild/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /home/euan/esp-idf-ftruncate-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libstd-d1f4638178e555e4.rlib(std-d1f4638178e555e4.std.43feb998-cgu.2.rcgu.o):(.literal._ZN3std3sys4unix5cvt_r17h6b170249ec86b082E+0x0): undefined reference to `ftruncate'
          collect2: error: ld returned 1 exit status

  = help: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
  = note: use the `-l` flag to specify native libraries to link
  = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)

error: could not compile `esp-idf-ftruncate-link-bug-repro` due to previous error

Repro project https://github.com/Eroc33/esp-idf-ftruncate-link-bug-repro

std::fs::symlink_metadata/lstat

When using std::fs::symlink_metadata anywhere in the project a link error occurs referencing lstat:

Relevant excerpt

/home/euan/esp-idf-lstat-link-bug-repro/.embuild/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libstd-d1f4638178e555e4.rlib(std-d1f4638178e555e4.std.43feb998-cgu.12.rcgu.o):(.literal._ZN3std3sys4unix2fs5lstat17ha8f4be7f0c78becbE+0x8): undefined reference to `lstat'
Full build output
euan@Euan-Desktop:~/esp-idf-lstat-link-bug-repro$ cargo build
   Compiling bindgen v0.59.2
   Compiling embuild v0.27.1
   Compiling esp-idf-sys v0.28.3
   Compiling esp-idf-lstat-link-bug-repro v0.1.0 (/home/euan/esp-idf-lstat-link-bug-repro)
error: linking with `ldproxy` failed: exit status: 1
  |
  = note: "ldproxy" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_lstat_link_bug_repro-0d01fa3dfdbe1c6a.2o61kwgqp73kz58p.rcgu.o" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_lstat_link_bug_repro-0d01fa3dfdbe1c6a.465x7843shr3wznz.rcgu.o" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_lstat_link_bug_repro-0d01fa3dfdbe1c6a.4tcrsw4dvi8kmynz.rcgu.o" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_lstat_link_bug_repro-0d01fa3dfdbe1c6a.56s06nqwa2qgwed3.rcgu.o" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_lstat_link_bug_repro-0d01fa3dfdbe1c6a.d98uauh4eugwm4e.rcgu.o" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_lstat_link_bug_repro-0d01fa3dfdbe1c6a.4gm7qzt072dn5wlv.rcgu.o" "-Wl,--as-needed" "-L" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps" "-L" "/home/euan/esp-idf-lstat-link-bug-repro/target/debug/deps" "-L" "/home/euan/.rustup/toolchains/esp/lib/rustlib/xtensa-esp32-espidf/lib" "-Wl,-Bstatic" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libesp_idf_sys-c71515d603b41be1.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libmutex_trait-df9aa576e9040a2f.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libembedded_svc-2899069fe8327a24.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/liblog-bcbaccb88823ec70.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libcfg_if-935bd39d9f6427e5.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libanyhow-c3305a373346a996.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libenumset-7515a396e404b77d.rlib" "-Wl,--start-group" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libstd-d1f4638178e555e4.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libpanic_abort-45242a1e085ac8c1.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libstd_detect-0d85fdf205992f33.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/librustc_demangle-09912fe574e03e88.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libhashbrown-b84fbcd507543c60.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/librustc_std_workspace_alloc-6f53877691d2c88b.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libunwind-75acfd38a7bfff04.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libcfg_if-16b2675bf0230332.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/liblibc-a626876b7c2b7226.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/liballoc-5a1058ec08d59625.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/librustc_std_workspace_core-17c3abae709388e4.rlib" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libcore-8f5a7b792e1e0797.rlib" "-Wl,--end-group" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libcompiler_builtins-20ef2192007b875d.rlib" "-Wl,-Bdynamic" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/home/euan/.rustup/toolchains/esp/lib/rustlib/xtensa-esp32-espidf/lib" "-o" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/esp_idf_lstat_link_bug_repro-0d01fa3dfdbe1c6a" "-Wl,--gc-sections" "-no-pie" "-nodefaultlibs" "--ldproxy-linker" "/home/euan/esp-idf-lstat-link-bug-repro/.embuild/platformio/packages/toolchain-xtensa-esp32/bin/xtensa-esp32-elf-gcc" "--ldproxy-dedup-libs" "-L/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf" "-L/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug" "-L/home/euan/esp-idf-lstat-link-bug-repro/.embuild/platformio/packages/framework-espidf/components/esp_wifi/lib/esp32" "-L/home/euan/esp-idf-lstat-link-bug-repro/.embuild/platformio/packages/framework-espidf/components/esp_rom/esp32/ld" "-L/home/euan/esp-idf-lstat-link-bug-repro/.embuild/platformio/packages/framework-espidf/components/xtensa/esp32" "-L/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp32" "-L/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp32/ld" "-L/home/euan/esp-idf-lstat-link-bug-repro/.embuild/platformio/packages/framework-espidf/components/esp32/ld" "-Wl,--start-group" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_pm/libesp_pm.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/asio/libasio.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/cbor/libcbor.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/unity/libunity.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/cmock/libcmock.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/coap/libcoap.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/console/libconsole.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_adc_cal/libesp_adc_cal.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_hid/libesp_hid.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/protobuf-c/libprotobuf-c.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/protocomm/libprotocomm.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mdns/libmdns.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_local_ctrl/libesp_local_ctrl.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_websocket_client/libesp_websocket_client.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/expat/libexpat.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/wear_levelling/libwear_levelling.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/fatfs/libfatfs.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/freemodbus/libfreemodbus.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/jsmn/libjsmn.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/json/libjson.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/libsodium/liblibsodium.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mqtt/libmqtt.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/openssl/libopenssl.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/spiffs/libspiffs.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/wifi_provisioning/libwifi_provisioning.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/app_trace/libapp_trace.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/app_update/libapp_update.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/bootloader_support/libbootloader_support.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/cxx/libcxx.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/driver/libdriver.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/efuse/libefuse.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp-tls/libesp-tls.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp32/libesp32.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_common/libesp_common.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_eth/libesp_eth.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_event/libesp_event.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_gdbstub/libesp_gdbstub.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_http_client/libesp_http_client.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_http_server/libesp_http_server.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_https_ota/libesp_https_ota.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_hw_support/libesp_hw_support.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_ipc/libesp_ipc.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_netif/libesp_netif.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_ringbuf/libesp_ringbuf.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_rom/libesp_rom.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_serial_slave_link/libesp_serial_slave_link.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_system/libesp_system.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_timer/libesp_timer.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/esp_wifi/libesp_wifi.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/espcoredump/libespcoredump.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/freertos/libfreertos.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/hal/libhal.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/heap/libheap.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/log/liblog.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/lwip/liblwip.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/libmbedtls.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/newlib/libnewlib.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/nghttp/libnghttp.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/nvs_flash/libnvs_flash.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/perfmon/libperfmon.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/pthread/libpthread.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/sdmmc/libsdmmc.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/soc/libsoc.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/spi_flash/libspi_flash.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/tcp_transport/libtcp_transport.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/tcpip_adapter/libtcpip_adapter.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/ulp/libulp.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/vfs/libvfs.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/wpa_supplicant/libwpa_supplicant.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/xtensa/libxtensa.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/mbedtls/library/libmbedcrypto.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/mbedtls/library/libmbedtls.a" "/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf/mbedtls/mbedtls/library/libmbedx509.a" "-lcoexist" "-lcore" "-lespnow" "-lmesh" "-lnet80211" "-lpp" "-lsmartconfig" "-lwapi" "-lphy" "-lrtc" "-lxt_hal" "-lc" "-lm" "-lstdc++" "-lgcc" "-Wl,--end-group" "-T" "esp32_out.ld" "-u" "esp_app_desc" "-u" "pthread_include_pthread_impl" "-u" "pthread_include_pthread_cond_impl" "-u" "pthread_include_pthread_local_storage_impl" "-u" "ld_include_panic_highint_hdl" "-u" "start_app" "-u" "start_app_other_cores" "-T" "esp32.rom.ld" "-T" "esp32.rom.api.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-time.ld" "-u" "vfs_include_syscalls_impl" "-T" "esp32.project.ld" "-T" "esp32.peripherals.ld" "-u" "call_user_start_cpu0" "-u" "app_main" "-u" "newlib_include_heap_impl" "-u" "newlib_include_syscalls_impl" "-u" "newlib_include_pthread_impl" "-u" "__cxa_guard_dummy" "-u" "__cxx_fatal_exception" "-Wl,--Map=/home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/build/esp-idf-sys-722ca5ac09ebffa5/out/esp-idf/.pio/build/debug/esp-idf.map" "-Wl,--cref" "-Wl,--gc-sections" "-Wl,--undefined=uxTopUsedPriority" "-Wl,--wrap=_Unwind_Backtrace" "-Wl,--wrap=_Unwind_DeleteException" "-Wl,--wrap=_Unwind_FindEnclosingFunction" "-Wl,--wrap=_Unwind_Find_FDE" "-Wl,--wrap=_Unwind_ForcedUnwind" "-Wl,--wrap=_Unwind_GetCFA" "-Wl,--wrap=_Unwind_GetDataRelBase" "-Wl,--wrap=_Unwind_GetGR" "-Wl,--wrap=_Unwind_GetIP" "-Wl,--wrap=_Unwind_GetIPInfo" "-Wl,--wrap=_Unwind_GetLanguageSpecificData" "-Wl,--wrap=_Unwind_GetRegionStart" "-Wl,--wrap=_Unwind_GetTextRelBase" "-Wl,--wrap=_Unwind_RaiseException" "-Wl,--wrap=_Unwind_Resume" "-Wl,--wrap=_Unwind_Resume_or_Rethrow" "-Wl,--wrap=_Unwind_SetEnableExceptionFdeSorting" "-Wl,--wrap=_Unwind_SetGR" "-Wl,--wrap=_Unwind_SetIP" "-Wl,--wrap=__cxa_call_unexpected" "-Wl,--wrap=__deregister_frame_info" "-Wl,--wrap=__deregister_frame_info_bases" "-Wl,--wrap=__gxx_personality_v0" "-Wl,--wrap=__register_frame" "-Wl,--wrap=__register_frame_info" "-Wl,--wrap=__register_frame_info_bases" "-Wl,--wrap=__register_frame_info_table" "-Wl,--wrap=__register_frame_info_table_bases" "-Wl,--wrap=__register_frame_table" "-Wl,--wrap=longjmp" "-Wl,--wrap=mbedtls_mpi_exp_mod" "-Wno-frame-address" "-fno-lto" "-fno-rtti" "-mlongcalls" "-Og" "-g2" "-ggdb2"
  = note: Running ldproxy
          Error: Linker /home/euan/esp-idf-lstat-link-bug-repro/.embuild/platformio/packages/toolchain-xtensa-esp32/bin/xtensa-esp32-elf-gcc failed: exit status: 1
          STDERR OUTPUT:
          /home/euan/esp-idf-lstat-link-bug-repro/.embuild/platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /home/euan/esp-idf-lstat-link-bug-repro/target/xtensa-esp32-espidf/debug/deps/libstd-d1f4638178e555e4.rlib(std-d1f4638178e555e4.std.43feb998-cgu.12.rcgu.o):(.literal._ZN3std3sys4unix2fs5lstat17ha8f4be7f0c78becbE+0x8): undefined reference to `lstat'
          collect2: error: ld returned 1 exit status

  = help: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
  = note: use the `-l` flag to specify native libraries to link
  = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)

error: could not compile `esp-idf-lstat-link-bug-repro` due to previous error

Repro project: https://github.com/Eroc33/esp-idf-lstat-link-bug-repro

As far as I can tell ftruncate and lstat simply don't exist in the esp-idf, so would need to be implemented there, or the libstd code that calls them would have to be implemented in terms of some other idf functions

(I saw these results when building using the pio option of embuild on WSL2/Ubuntu-20.04, but I think it should be the same on any configuration)

MabezDev commented 2 years ago

Thanks for the report @Eroc33, it's much appreciated! Sorry for the delay in getting to this.

The lstat fix is simple, as will be fixed in esp-idf in future releases, for now I have also patched it into esp-idf-sys, see https://github.com/esp-rs/esp-idf-sys/pull/75.

ftruncate is a bit more intricate, and will take a bit more time to get a patch prepared.

MabezDev commented 2 years ago

Hi @Eroc33, ftruncate is now implemented in esp-idf (backport to v4.4 will be available soon) which should solve the issues you've encountered. Thanks for your patience!