# ChangeLog ## v2.0.0 - 2026-10-14 * Validate ELF headers, file ranges, section names, symbol tables, and relocation write targets before loading both RISC-V and Xtensa images. * Validate forward-linked string table bounds and exported function addresses; enforce full-width Xtensa relocation targets and aligned embedded ELF buffers. * Generate aligned ELF embedding assembly on released ESP-IDF versions that do not support the ALIGN option in target_add_binary_data(). * Pre-index the loaded relocation regions to avoid quadratic validation time for ELF files containing many sections, segments, and relocation entries. * Reuse the indexed executable PT_LOAD ranges for exported-function checks instead of scanning every Program Header for each dynamic symbol. * Avoid repeated scans of long symbol names by validating string-table terminators before constant-time name-offset checks. * Accept entry-less shared libraries only when dynamic loading is enabled, without preventing ET_EXEC images from using a valid zero virtual entry point or allowing entry-less libraries to be invoked as executable applications. * Require uniquely named, correctly typed dynamic symbol tables before parsing shared-object exports. * Remap exported shared-library function addresses to executable aliases when code is loaded through a mirrored data/instruction bus (e.g. ESP32-S3 PSRAM). * Free dynamically allocated symbol tables after an export-name allocation failure, including failures before the first name is populated. * Bound locally mapped relocation symbols to loaded ELF memory. * Reject RISC-V relocation targets whose word-aligned virtual offsets map to misaligned allocated addresses, before performing any 32-bit write. * Reject ELF files whose sizes exceed loader allocation or read limits. * Require executable entry points to refer to file-backed code rather than uninitialized PT_LOAD memory. * Fix the first PT_LOAD base address and RISC-V relocation offset calculation; propagate unsupported architecture relocation errors. * Subtract ELF virtual load bases before forming in-memory pointers to loaded segments or exported functions, including ELF images with high virtual bases. * **API change:** `esp_elf_relocate()` now requires the ELF buffer length as its third argument. Applications must update existing calls. ## v1.3.5 - 2026-10-10 * Added support for ESP32-C5 * Reject SRAM executable ELF allocations when `CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT` is enabled (C5/C6/C61/P4/S31, etc.); document PMP / PSRAM requirements ## v1.3.4 - 2026-09-29 * Fixed ESP32-S3 PSRAM ELF relocation deadlock under multicore load by using ranged thread-safe cache synchronization * Fixed alignment of ELF data sections in allocated memory ## v1.3.3 - 2026-07-28 * Fixed intermittent crash during long-term ELF execution from PSRAM on ESP32-S31 (use full cache flush instead of ranged API) ## v1.3.2 - 2026-07-09 * Added support for ESP32-S31 * Fixed ELF execution from PSRAM on ESP32-S31 (enable IBUS1 instruction bus) ## v1.3.1 - 2026-02-10 * Added support for overriding symbol resolution with `elf_set_symbol_resolver()` ## v1.3.0 - 2026-01-08 * Added support for generating a shared library * Added support for dynamically loading shared objects ## v1.2.0 - 2026-01-05 * Support compiling ELF application into main binary firmware ## v1.1.1 - 2025-06-26 * Added support for ESP32-C61 ## v1.1.0 - 2025-05-06 * Added fast build for ELF application * Added a script to generate the symbol table for the ELF APP: * Supports generating symbols table based on ELF file * Supports generating symbols table based on static libraries ## v1.0.0 - 2024-12-09 * Added support for the following RISC-V chips: ESP32-P4 and ESP32-C6 * Added support for linking other components to ELF file * Fixed the issue of getting wrong symbol type ## v0.1.0 - 2023-08-14 * Add basic ELF loader component