Abstractions for dealing with object files and debug information.
This module defines the
Object type, which is an abstraction over various object file
formats used in different platforms. Also, since executables on MacOS might contain multiple
object files (called a “Fat MachO”), there is an
Archive type, that provides a uniform
interface with access to an objects iterator in all platforms.
Most processing of object files will happen on the
Object type or its concrete implementation
for one platform. To allow abstraction over this, there is the
ObjectLike trait. It defines
common attributes and gives access to a
DebugSession, which can be used to perform more
stateful handling of debug information.
Object for the full API, or use one of the modules for direct access to the
The functionality of
symbolic::debuginfo is conceptionally similar to the
However, there are key differences that warranted a separate implementation:
objecthas a stronger focus on executable formats, while
symbolicfocusses on debugging information. This is why
symbolicalso includes a variant for PDBs and Breakpad objects, where
objectinstead has a WASM variant.
objectcontains far more generic access to the data within objects at the cost of performance.
symbolictries to optimize for debugging scenarios at the cost of generic usage.
symboliccontains an abstraction for multi-object files (
Archive), which is not easily possible in
objectdue to the use of lifetimes on the
Support for Breakpad ASCII symbols, used by the Breakpad and Crashpad libraries.
Support for DWARF debugging information, common to ELF and MachO.
Support for the Executable and Linkable Format, used on Linux.
Support for Mach Objects, used on macOS and iOS.
Support for Program Database, the debug companion format on Windows.
Support for Portable Executables, an extension of COFF used on Windows.
Support for Source Bundles, a proprietary archive containing source code.
Support for WASM Objects (WebAssembly).
A generic archive that can contain one or more object files.
File information comprising a compilation directory, relative path and name.
Debug information for a function.
File and line number mapping for an instruction address.
A symbol from a symbol table.
A sorted list of symbols, suitable for quick lookups.
An error returned for unknown or invalid
Represents the physical object file format.
A generic object file providing uniform access to various file formats.
A generic debugging session.
Represents the designated use of the object file and hints at its contents.
A generic symbol iterator
A stateful session for interfacing with debug information.
An object containing debug information.
Tries to infer the object type from the start of the given buffer.