From 843f590db47ba1cf349c9a21f106af64b4486cbf Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 17 Oct 2025 14:13:25 -1000 Subject: [PATCH] fix --- esphome/analyze_memory/cli.py | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/esphome/analyze_memory/cli.py b/esphome/analyze_memory/cli.py index b79a5b6d55..675e93ae07 100644 --- a/esphome/analyze_memory/cli.py +++ b/esphome/analyze_memory/cli.py @@ -313,14 +313,42 @@ def analyze_elf( def main(): """CLI entrypoint for memory analysis.""" if len(sys.argv) < 2: - print("Usage: analyze_memory.py ") + print( + "Usage: python -m esphome.analyze_memory [objdump_path] [readelf_path]" + ) + print("\nExample for ESP8266:") + print(" python -m esphome.analyze_memory firmware.elf \\") + print( + " ~/.platformio/packages/toolchain-xtensa/bin/xtensa-lx106-elf-objdump \\" + ) + print( + " ~/.platformio/packages/toolchain-xtensa/bin/xtensa-lx106-elf-readelf" + ) + print("\nExample for ESP32:") + print(" python -m esphome.analyze_memory firmware.elf \\") + print( + " ~/.platformio/packages/toolchain-xtensa-esp-elf/bin/xtensa-esp32-elf-objdump \\" + ) + print( + " ~/.platformio/packages/toolchain-xtensa-esp-elf/bin/xtensa-esp32-elf-readelf" + ) sys.exit(1) + elf_file = sys.argv[1] + objdump_path = sys.argv[2] if len(sys.argv) > 2 else None + readelf_path = sys.argv[3] if len(sys.argv) > 3 else None + try: - report = analyze_elf(sys.argv[1]) + report = analyze_elf(elf_file, objdump_path, readelf_path) print(report) except (subprocess.CalledProcessError, FileNotFoundError, OSError) as e: - print(f"Error: {e}") + print(f"Error: {e}", file=sys.stderr) + if "readelf" in str(e) or "objdump" in str(e): + print( + "\nHint: You need to specify the toolchain-specific tools.", + file=sys.stderr, + ) + print("See usage above for examples.", file=sys.stderr) sys.exit(1)