Skip to content

Session

A DecompilerSession owns one native bridge session and amortizes library initialization, runtime data resolution, and language/compiler enumeration across multiple calls. Use it as a context manager for deterministic cleanup, or manage the lifecycle manually with close().

For one-off operations, the module-level convenience functions create a short-lived session, run one operation, and tear it down immediately.

Session API

flatline.DecompilerSession

DecompilerSession(runtime_data_dir: str | Path | None = None, *, _bridge_session: BridgeSession | None = None)

Long-lived decompiler session owning one native bridge session.

A session amortizes startup costs (library initialization, runtime data resolution, language/compiler enumeration) across calls. Use it as a context manager for deterministic resource cleanup, or call close() explicitly when done.

Parameters:

Name Type Description Default
runtime_data_dir str | Path | None

Path to the Ghidra runtime data directory containing processor .sla files and compiler specs. When None (default), the directory is auto-discovered from the installed ghidra-sleigh package.

None
Example
with DecompilerSession() as session:
    result = session.decompile_function(request)
    pairs = session.list_language_compilers()

Attributes

is_closed property

is_closed: bool

Report whether close() has already been called.

Functions

decompile_function

decompile_function(request: DecompileRequest) -> DecompileResult

Decompile a single function described by request.

Parameters:

Name Type Description Default
request DecompileRequest

A DecompileRequest specifying the memory image, addresses, and target architecture.

required

Returns:

Type Description
DecompileResult

A DecompileResult containing the decompiled C code, structured FunctionInfo, warnings, and any error information.

Raises:

Type Description
InvalidArgumentError

If the session has been closed or the request contains invalid arguments.

UnsupportedTargetError

If the language_id or compiler_spec is not recognized.

InvalidAddressError

If the function address is outside the memory image.

DecompileFailedError

If the decompiler engine fails internally.

list_language_compilers

list_language_compilers() -> list[LanguageCompilerPair]

Enumerate valid language/compiler pairs available in this session.

Returns only pairs whose backing assets (.sla files and compiler specs) are present in the session's runtime data directory. Covers all bundled ISAs including x86, ARM, RISC-V, MIPS, and others.

Returns:

Type Description
list[LanguageCompilerPair]

List of LanguageCompilerPair entries.

Raises:

Type Description
InvalidArgumentError

If the session has been closed.

close

close() -> None

Release session resources. Safe to call multiple times.

One-Shot Functions

flatline.decompile_function

decompile_function(request: DecompileRequest) -> DecompileResult

Decompile a single function (one-shot convenience wrapper).

Creates a short-lived DecompilerSession, runs the decompilation, and closes the session deterministically.

Parameters:

Name Type Description Default
request DecompileRequest

A DecompileRequest specifying the memory image, addresses, and target architecture.

required

Returns:

Type Description
DecompileResult

A DecompileResult with decompiled output.

Raises:

Type Description
InvalidArgumentError

If the request contains invalid arguments.

UnsupportedTargetError

If the target is not recognized.

InvalidAddressError

If the function address is unmapped.

DecompileFailedError

If decompilation fails internally.

flatline.list_language_compilers

list_language_compilers(runtime_data_dir: str | Path | None = None) -> list[LanguageCompilerPair]

Enumerate valid language/compiler pairs (one-shot convenience wrapper).

Creates a short-lived DecompilerSession, runs the enumeration, and closes the session deterministically.

Parameters:

Name Type Description Default
runtime_data_dir str | Path | None

Optional path to the Ghidra runtime data directory. When None, auto-discovered from ghidra-sleigh.

None

Returns:

Type Description
list[LanguageCompilerPair]

List of LanguageCompilerPair entries.

flatline.get_version_info

get_version_info() -> VersionInfo

Report runtime version information.

Returns:

Type Description
VersionInfo

The installed flatline package version and the underlying Ghidra decompiler engine version.

Return Types

flatline.LanguageCompilerPair dataclass

LanguageCompilerPair(language_id: str, compiler_spec: str)

One valid language/compiler pair known to the runtime data directory.

Attributes:

Name Type Description
language_id str

Language identifier (e.g. "x86:LE:64:default").

compiler_spec str

Compiler specification (e.g. "gcc").

flatline.VersionInfo dataclass

VersionInfo(flatline_version: str, decompiler_version: str)

Runtime version information.

Attributes:

Name Type Description
flatline_version str

The installed flatline package version.

decompiler_version str

The underlying Ghidra decompiler engine version (e.g. "ghidra-6.1").