From 853782b2512a1cee4b2a17f4d599e9cbbe2f0380 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 15 Apr 2026 15:59:26 -1000 Subject: [PATCH] libretiny: exclude veneer symbols from post-link IRAM fallback Linker-generated interworking veneers (e.g. ___ZN...enable_loop_soon_ any_context_veneer at 0x9b062588) contain the same function name substrings but live at unrelated addresses, producing a bogus multi-GB range in the summary. Filter them out. --- esphome/components/libretiny/patch_linker.py.script | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esphome/components/libretiny/patch_linker.py.script b/esphome/components/libretiny/patch_linker.py.script index 1fcad920d97..45b04e8f961 100644 --- a/esphome/components/libretiny/patch_linker.py.script +++ b/esphome/components/libretiny/patch_linker.py.script @@ -148,7 +148,7 @@ def _post_link(target, source, env): start = int(addr_str, 16) elif name == "__esphome_sram_text_end": end = int(addr_str, 16) - elif any(s in name for s in _FALLBACK_SUBSTRINGS): + elif "veneer" not in name and any(s in name for s in _FALLBACK_SUBSTRINGS): fallback.append(int(addr_str, 16)) print("ESPHome: IRAM_ATTR placement summary ({}):".format(_variant)) if start is not None and end is not None: