(elf_path: Path, addresses: list)
| 46 | |
| 47 | |
| 48 | def decode_addresses(elf_path: Path, addresses: list) -> dict: |
| 49 | addr2line = find_addr2line() |
| 50 | if not addr2line: |
| 51 | raise RuntimeError("addr2line not found. Set ADDR2LINE or install toolchain.") |
| 52 | |
| 53 | if not addresses: |
| 54 | raise RuntimeError("No addresses to decode.") |
| 55 | |
| 56 | cmd = [addr2line, "-e", str(elf_path), "-f", "-C", *addresses] |
| 57 | result = subprocess.run(cmd, capture_output=True, text=True) |
| 58 | if result.returncode != 0: |
| 59 | raise RuntimeError(result.stderr.strip() or "addr2line failed") |
| 60 | |
| 61 | return { |
| 62 | "addr2line": addr2line, |
| 63 | "decoded": result.stdout.strip(), |
| 64 | } |
| 65 | |
| 66 | |
| 67 | @app.after_request |
no test coverage detected