From c3f7409cded0b73b906bf31a998126e8aee41c8c Mon Sep 17 00:00:00 2001 From: Luke Craig Date: Fri, 3 Apr 2026 12:53:29 -0400 Subject: [PATCH 1/2] dffi: fixup platform to work on osx as well --- src/dwarffi/dffi.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/dwarffi/dffi.py b/src/dwarffi/dffi.py index 9fef3c6..5d95f71 100644 --- a/src/dwarffi/dffi.py +++ b/src/dwarffi/dffi.py @@ -1,4 +1,5 @@ import fnmatch +import sys import json import lzma import os @@ -1159,17 +1160,22 @@ def cdef( f"Compilation failed:\nCommand: {' '.join(cmd_compile)}\nStderr: {e.stderr}" ) from e - # 2) Run dwarf2json (types first; fallback to --elf if needed) - cmd_d2j = [dwarf2json_cmd, "linux", "--elf-types", o_file] + # 2) Run dwarf2json (types first; fallback to full object if needed) + if sys.platform == "darwin": + cmd_d2j = [dwarf2json_cmd, "mac", "--macho-types", o_file] + cmd_fallback = [dwarf2json_cmd, "mac", "--macho", o_file] + else: + cmd_d2j = [dwarf2json_cmd, "linux", "--elf-types", o_file] + cmd_fallback = [dwarf2json_cmd, "linux", "--elf", o_file] + try: res = subprocess.run(cmd_d2j, check=True, capture_output=True, text=True) except subprocess.CalledProcessError: - cmd_d2j = [dwarf2json_cmd, "linux", "--elf", o_file] try: - res = subprocess.run(cmd_d2j, check=True, capture_output=True, text=True) + res = subprocess.run(cmd_fallback, check=True, capture_output=True, text=True) except subprocess.CalledProcessError as e: raise RuntimeError( - f"dwarf2json failed:\nCommand: {' '.join(cmd_d2j)}\nStderr: {e.stderr}" + f"dwarf2json failed:\nCommand: {' '.join(cmd_fallback)}\nStderr: {e.stderr}" ) from e # 3) Parse From bd387909696fe49843908e16440dfa1576eff8a0 Mon Sep 17 00:00:00 2001 From: Luke Craig Date: Fri, 3 Apr 2026 12:57:16 -0400 Subject: [PATCH 2/2] ruff --- src/dwarffi/dffi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dwarffi/dffi.py b/src/dwarffi/dffi.py index 5d95f71..2aad0ad 100644 --- a/src/dwarffi/dffi.py +++ b/src/dwarffi/dffi.py @@ -1,5 +1,4 @@ import fnmatch -import sys import json import lzma import os @@ -7,6 +6,7 @@ import shutil import struct import subprocess +import sys import tempfile from functools import lru_cache from typing import Any, Callable, Dict, List, Optional, Tuple, Union, cast