Skip to content

Latest commit

 

History

History
965 lines (604 loc) · 39.9 KB

CHANGELOG.md

File metadata and controls

965 lines (604 loc) · 39.9 KB

Changelog

Unreleased

Internal

  • Update tokio to latest version (#833)
  • Fix infinite recursion caused by indirect self-references when resolving function names (#836)
  • Switch to workspace dependencies (#841)

Fixes

  • sourcebundles: Only valid UTF-8 files can be written into sourcebundles (#816)
  • Fix an issue when extracting the name of the debug file from a PE object (#825)

Features

12.8.0

Internal

Fixes

Features

  • Make mapping by params initialization optional (#823)

12.7.1

Internal

  • Update crate dependencies, in particular gimli to fix performance/OOM problems related to duplicated abbreviations (#822)

12.7.0

Fixes

  • Fix empty parameters list issue (#821)

12.6.0

Features

  • Add support for parameters param in the remap_frame to allow deobfuscation when line is not available (#820)

12.5.0

Internal

  • Emit a MODULE record for PE files (#814)

Features

  • Update proguard and add remap_method fn (#818)

12.4.1

Fixes

  • sourcebundles: Don't write empty source_links maps (#813)

12.4.0

Fixes

  • discover_sourcemaps_location returns source mapping URLs without query parameters or fragments (#809)

Internal

  • Updated gimli, goblin, indexmap, and minidump dependencies (#811)
  • Cargo.lock is now included in the repository (#811)

12.3.0

Features

  • Add sourcelink functionality to symbolic-common (#803)
  • Add sourcelink support to sourcebundles (#804)

Fixes

  • Documentation fixes contributed by fzyzcjy

12.2.0

Features

  • Add some mypy typing to symbolic (#797)

12.1.6

Updating

  • Require python 3.8+ for python bindings (#793)

12.1.5

Fixes:

  • sourcemapcache: Improved scope name resolution. (#786)

12.1.4

Fixes:

  • Optimize SourceBundle/DebugSession (#787)

12.1.3

Fixes:

  • Correctly resolve sourceMappingURL references for "source" files.
  • Allow parsing the DebugId of a PS4 executable.

12.1.2

Fixes:

  • PPDB files report has_sources() = true even when they only contain source links (#774)
  • Make SourceBundle writer deterministic (#778)
  • Increase IL2CPPP source mapping boundary (#776)

12.1.1

Features:

  • Skip hidden sequence points when creating PortablePDB cache. (#769)

12.1.0

Features:

  • Replace internal usage of LazyCell by OnceCell and make SourceBundleDebugSession: Send, Sync and AsSelf. (#767)

12.0.0

Features:

  • Added debug IDs to source bundle JavaScript files and source maps. (#762)
  • Add support for embedded debug IDs in minified files (#765)

Breaking changes:

  • Change DebugSession::source_by_path() to return a SourceFileDescriptor containing either file content or a URL to fetch it from. (#758,#762)
  • Change SourceBundleWriter::write_object_with_filter() filter callback to take SourceFileDescriptor, allowing to include/exclude embedded sources. (#764,#762)

Fixes:

  • Make sure to parse PortablePdb streams in the correct order. (#760)

11.1.0

Features:

  • Correctly read the debug_id of Deterministic PE files (#658)
  • Gracefully handle invalid PPDBs (#751)
  • Support embedded PortablePDB in DLLs (#752, #757)

11.0.0

Fixes:

  • Discard invalid line records and inlinees when parsing functions. (#747)

Features:

  • PortablePdbDebugSession now returns files referenced in the Portable PDB file. (#729)
  • PortablePdbDebugSession now returns source files embedded in the Portable PDB file. (#734)
  • Implement symbolic_common::AsSelf for SourceMapCache (#742)
  • Debug information can now be retrieved from PE's with DWARF debug info. (#744)

Breaking changes:

  • Demangling functionality is removed from C and Python bindings. (#730)
  • The fields of FileInfo and the compilation_dir field on FileEntry are now private. (#729)
  • PortablePdbDebugSession now has a lifetime parameter. (#729)
  • PeDebugSession placeholder has been removed. (#744)

Thank you:

Features, fixes and improvements in this release have been contributed by:

10.2.1

Features:

  • PortablePdbCache now implements Clone, PartialEq, Eq, and AsSelf. (#726, #727)

10.2.0

Features:

  • Add inlinee overlap checks in symbolic-debuginfo. (#718)

Fixed:

  • Ensure proper inlinee nesting in symbolic-debuginfo. (#720)
  • Split lines in more cases in symbolic-debuginfo. (#717)

Internal

  • Add a debuginfo_debug example. (#716)
  • Update js-source-scopes to 0.3.1. (#721)

10.1.5

Internal

  • Update js-source-scopes to 0.3.0. (#715)

10.1.4

Internal

  • Update js-source-scopes to 0.2.2. (#714)

10.1.3

Internal

  • Python/CABI bindings will use a tempfile instead of holding SourceMapCache in memory. (#711)

10.1.2

Internal

  • Updated goblin, cpp_demangle and wasmparser dependencies. (#709)

10.1.1

Fixed:

  • Rebuild C headers for SourceMapCache to expose token name (#704)

10.1.0

Features:

  • Add name to SourceMapCacheToken Python bindings (#703)

10.0.0

Features:

  • Added an Object type for Portable PDB files. (#696)
  • Version 2 of the sourcemapcache format additionally saves the names of source locations. (#698)

9.2.1

Fixes:

  • Fixed a bug in Unreal Engine log parsing by updating the anylog dependency. (#695)

9.2.0

Features:

  • Added a new sub-crate for working with JavaScript SourceMaps: symbolic-sourcemapcache. (#688)
  • This new sourcemap handling is also exposed via the symbolic Python bindings.
  • The new version 8 of the symcache format saves strings slightly more compactly. Reading of version 7 is still supported. (#670)
  • symbolic-ppdb incorporated into symbolic (behind the ppdb feature flag) (#687)

Internal:

  • Use the watto library for de/serialization of symcache and ppdbcache. (#670)

9.1.4

Fixes:

  • Be more lenient when eagerly parsing DWARF Abbreviations. (#685)

9.1.3

Fixes:

  • Be stricter about demangling only _Z prefixed C++ names. (#681)
  • Work around a pathological case in DWARF processing that could lead to slowness and high memory usage. (#683)

9.1.2

Fixes:

  • Correctly resolve the DW_AT_producer attribute of DWARF files (#676)
  • Improve _sigtramp workaround and explanation (#662)
  • Slightly lower demangling recursion limit (#655)

9.1.1

Fixes:

  • Allow underflows in Windows x64 CFI to allow restoring registers from outside of the current stack frame. (#645)
  • Rework the SymCache Writer for correctness. (#648)
  • Undecorate Windows symbols when writing SymCache. (#649)
  • Correctly use the .debug_addr section needed for DWARF5. (#652)

Internal:

  • Remove outdated and unused il2cpp/usym-related code. (#650)

Thank you:

Features, fixes and improvements in this release have been contributed by:

9.1.0

Features:

  • Added a new subcrate for working with Portable PDB files: symbolic-ppdb (#621)
  • Added support for breakpad sym files containing INLINE_ORIGIN and INLINE records. (#605)
  • Most function names from PDBs will now include function arguments. (#426)

Fixes:

  • Improved DWARF handling to create more consistent inlinee and line information. (#607, #633)
  • Improved PDB handling to include more symbols and create more consistent inlinee and line information. (#622, #627, #636, #641)
  • Fixed a typo in DWARF 5 addrx parsing which caused incorrect address ranges. (#608)
  • symcache generation now handles more cases of line / inlinee information correctly. (#637)
  • Improved arm64 CFI for macOS system libraries by translating UnwindOp::None into trivial CFI. (#619)
  • Improved arm64 CFI for macOS _sigtramp by restricting a workaround to x86_64. (#625)
  • Improved MIPS CFI by always generating .ra CFI. (#612)
  • Fixed il2cpp lookup to discard information for unrelated lines. (#617)
  • Leading underscores are no longer stripped from PDB symbols. (#642)
  • MSVC demangled functions now look more visually pleasing. (#640)
  • Updated wasmparser dependency to 0.85.0. (#624)

9.0.0

Breaking changes:

  • Updated the debugid dependency to 0.8.
  • Updated the uuid dependency to 1.0.
  • Updated the pdb dependency to 0.8.
  • Removed the public method symbolic_common::CpuFamily::cfi_register_name.
  • The symbolic-minidump crate has been dropped. The CFI functionality that was contained in symbolic-minidump now resides in its own crate, symbolic-cfi.
  • The symbolic-unwind crate has been dropped.
  • The symbolic-sourcemap crate has been dropped. Since it was only used in symbolic-cabi, its functionality has been incorporated into symbolic-cabi.
  • Support for symcache versions before v7 has been dropped. This entails a number of changes in the public API of symbolic-symcache:
    • Removed support for symcache binary formats prior to v7.
    • Removed SymCacheWriter.
    • Removed SymCacheError.
    • Removed SymCacheErrorKind.
    • Removed Line.
    • Removed Lines.
    • Removed LineInfo.
    • Removed Lookup.
    • Removed Function::id.
    • Removed Function::parent_id.
    • Removed Function::address.
    • Removed Function::symbol.
    • Removed Function::compilation_dir.
    • Removed Function::lines.
    • Removed SymCache::has_line_info.
    • Removed SymCache::has_file_info.
    • Changed return type of Function::name to string slice.
    • Changed return type of SymCache::lookup to SourceLocations.
    • Added Function::name_for_demangling with the previous signature and behavior of Function::name.
    • Added Function::entry_pc.
    • Added SymCacheConverter.
    • Added Error.
    • Added ErrorKind.
    • Added File.
    • Added Files.
    • Added FilesDebug.
    • Added FunctionsDebug.
    • Added SourceLocation.
    • Added SourceLocations.
    • Added SymCache::files.
    • Added lifetime parameter to Transformers.
    • Undeprecated Function and Functions.
    • Undeprecated SymCache::functions.
  • Some C and Python bindings have been dropped or adjusted. Concretely:
    • symbolic-cabi::minidump and the corresponding Python functionality has been removed. The CFI functionality that was contained therein now resides in symbolic-cabi::cfi and symbolic.cfi, respectively.
    • symbolic-cabi::unreal and the corresponding Python functionality has been removed.
    • symbolic-cabi::symcache::SymbolicLineInfo has been replaced with SymbolicSourceLocation, which has a different interface. Likewise, symbolic.symcache.LineInfo has been replaced with SourceLocation.
    • symbolic-cabi::symcache::symbolic_symcache_has_file_info and symbolic_symcache_has_line_info have been removed, likewise for symbolic.symcache.SymCache.has_line_info and has_file_info.

8.8.0

Features:

  • Optionally collect referenced C# file sources when creating a source bundle. (#516)

Fixes:

  • Only skip one function when encountering unknown Unwind Codes on Windows x64. (#588)
  • Skip over low_pc sentinels instead of erroring. (#590)

8.7.3

Fixes:

  • Make CFI generation for Windows x64 more accurate, restoring all possible registers and supporting frame pointer unwinding. (#549)

8.7.2

Fixes:

  • Make sure to correctly parse Unreal crash reports with zero-length files (#565)

8.7.1

Fixes:

  • Updated wasmparser dependency to 0.83.0 (#557)
  • Updated rust-sourcemap dependency to hopefully speed up sourcemap parsing (#559)
  • Match symbol names by exact addresses from symbol table (#510)
  • Return a more correct function_size when dealing with split functions (#522)

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.7.0

Features:

  • Added a new SymCache Transformer, which can be used to apply Function or SourceLocation transformations. (#496)
  • Turn the breakpad-based minidump processor into an optional feature flag. (#519)

Fixes:

  • Fixed CFI STACK WIN records being written correctly. (#513)
  • Do not consider empty files as valid BcSymbolMaps anymore. (#523)
  • Fix wasm parsing rejecting valid wasm files with non-default features. (#520)

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.6.1

Fixes:

  • Update goblin which received fixes to avoid panics and unreasonable memory allocations based on invalid input. (#503)
  • Fix wrong instruction addresses of the first frame in ARM and ARM64 minidumps. The addresses were incorrectly incremented by one instruction size. (#504)
  • Correctly skip ELF sections with an offset of 0 instead of ignoring all following sections. This bug may have lead to missing unwind or debug information. (#505)
  • Detect unwind information when linking with gold. (#505)

8.6.0

Features:

  • Added a new SymCache binary format which is fundamentally based around instruction addr ranges.
  • Add ElfObject::debug_link that allows recovering the debug link from an Elf if present. (#450)
  • Updated Swift demangler to 5.5.1. (#465)
  • Support split functions. (#441)
  • Refactor symbolic-debuginfo feature flags. (#470)
  • Rewrite wasm parser. (#474)

Fixes:

  • Make SourceBundle ordering deterministic. (#489)
  • Replace unmaintained dependencies.
  • Better guard against invalid input that could lead to unreasonable memory allocations, panics or infinite loops.

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.5.0

Features:

  • Add ByteView::map_file_ref constructor which does not consume the File passed to it. (#448)

Fixes:

  • Support Unreal Engine 5 crash reporter. (#449)

8.4.0

Features:

  • Add Unreal4Crash::parse_with_limit which allows specifying a maximum allocation size when extracting compressed UE4 crash archives. (#447)

Fixes:

  • Apply speculative handling of stackless functions only on amd64 when creating CFI caches. (#445)

8.3.2

Features:

  • Build and publish binary wheels for arm64 / aarch64 on macOS and Linux. (#442)

Fixes:

  • Don’t prefix ARM registers with $ for CFI files. (#443)

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.3.1

Fixes:

  • Avoid panic when looking for hex suffixes in multibyte character strings in the demangler. (#430)
  • Allow processing of ELF files as long as they have valid program and section headers. (#434)
  • Expose dynamic symbols in ELF files. (#421)
  • Make dsym_parent accept .framework.dSYM. (#425)

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.3.0

Features:

  • Write versioned CFI Cache files. Reading those files is only supported with symbolic versions >= 8.2.1, so trying to use a CFI Cache file with an older version of symbolic will fail with a CfiErrorKind::BadFileMagic error.

Fixes:

  • Correctly restore callee saves registers when using compact unwind info.
  • Correctly map all DWARF information when using BcSymbolMaps.
  • Allow processing of PDB files that have broken inlinee file references.
  • Skip duplicated DWARF functions which can lead to inline parent offset overflows.

8.2.1

Features:

  • Add support for reading versioned CFI Cache files.

Fixes:

  • Avoid quadratic slowdown when using compact unwind info on macOS.

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.2.0

Caution:

  • Relevant dependencies such as gimli, goblim, and wasm-related libraries were updated.

Features:

  • Support for compact unwind info in MachO files was added, along with special casing of some well known macOS system functions.
  • The parser of the Breakpad Format was rewritten.

Bug Fixes:

  • All valid STACK WIN record types are being parsed correctly. This did add new variants to the BreakpadStackWinRecordType enum. Technically a breaking change, but we do not consider the Breakpad Parser types as adhering to strict SemVer rules.

Thank you:

Features, fixes and improvements in this release have been contributed by:

8.1.0

Features:

  • Add support for loading BCSymbolMaps into MachObjects to un-obfuscate symbol names in bitcode builds. (#336)

Bug Fixes:

  • Handle too many files more gracefully. (#374)
  • Parse .pdb files containing modules without symbols. (pdb#102)

8.0.5

Bug Fixes:

  • Fix detecting hidden Swift symbols in MachObject::requires_symbolmap. Additionally, the MachO symbol iterator no longer strips underscores from __hidden# symbols. (#316)

8.0.4

Manylinux2010 has dropped support for Python 2.7. As a result, we're no longer building or testing the Python package with Python 2.7. This and future releases require at least Python 3.6.

Bug Fixes:

  • Compute correct line offsets in symcaches with large gaps between line records. (#319)
  • Support symcache lookups for public symbols larger than 65k. (#320)
  • Fixed bug that caused functions to have a length of 0 in symcaches. (#324)
  • Support debug_addr indexes in DWARF functions. (#326)

8.0.3

Bug Fixes:

  • Support DWARF information from MIPS compilers in SHT_MIPS_DWARF sections. (#317)
  • Remove a duplicate dependency to two versions of walrus for WASM parsing. (#312)

8.0.2

Bug Fixes:

  • Include third-party submodules to allow the Python sdist to build again. (#310)

8.0.1

Bug Fixes:

  • Compute correct debug identifiers when proessing a Minidump from a machine with opposite endianness. This particularly allows to process MIPS minidumps on little-endian hosts. (#281)
  • Update the breakpad processor with better stack scanning heuristics. Some false-positive frames are avoided during stack scanning now. (#281)
  • Avoid panics when processing UE4 crash logs containing ambiguous local times. (#307)

8.0.0

Breaking Changes:

  • Usage of failure was removed, and all error types were changed to only implement std::error::Error and related traits.
  • symbolic-proguard was removed in favor of the proguard crate. Proguard is still supported via symbolic-cabi and the python API however.
  • Deprecated APIs have been removed:
    • InstructionInfo's fields are no longer public.
    • pointer_size, instruction_alignment and ip_register_name have moved from Arch to CpuFamily.
    • Arch::register_name as been moved to CpuFamily::cfi_register_name.
    • Dwarf::raw_data and Dwarf::section_data have been replaced with the raw_section and section APIs.
    • Unreal4ContextRuntimeProperties::misc_primary_cpu_brand is has been removed.
  • Deprecated Python APIs have been removed:
    • CodeModule.id and CodeModule.name Use debug_id and code_file, respectively.
  • DemangleFormat and public fields of DemangleOptions have been removed in favor of builder methods on DemangleOptions.
  • Name::new now takes both the NameMangling state, and the Language explicitly.

Features:

  • Add support for the wasm32 architecture. (#166)
  • Support demangling for Swift 5.3. (#282)

Bug Fixes:

  • Detect mangled anonymous namespaces in PDB inlinees (#261)
  • Fix a panic due to undefined behavior. (#287)
  • Skip line program sequences at 0. (#291)
  • Prefer DWARF names for Dart functions. (#293)

7.5.0

Changes:

  • Add missing unreal data attributes (EngineData and GameData). (#257)
  • Expose binary names for ELF and MachO (#252)
  • Mark enums as non_exhaustive. (#256)
  • Add method to create Archive from bytes. (#250)

Bug Fixes:

  • Fix compilation errors on nightly Rust due to a lifetime mismatch. This is temporarily solved with a statically verified unsafe transmute, which will be replaced in an upcoming breaking change. (#258)

7.4.0

Deprecations:

  • pointer_size, instruction_alignment and ip_register_name have moved from Arch to CpuFamily.
  • Arch::register_name as been moved to CpuFamily::cfi_register_name.
  • Field access on InstructionInfo has been deprecated and replaced with a builder.

Changes:

  • More detailed documentation and examples on all types and functions in symbolic-common. (#246)

Bug Fixes:

  • CpuFamily::cfi_register_name returns None instead of Some("") for some unknown registers.
  • Update cpp_demangle again after the previous release was yanked. (#247)

7.3.6

Bug Fixes:

  • Update the cpp_demangle dependency to fix broken builds after a breaking change. (#244, thanks @o0Ignition0o)

7.3.5

Bug Fixes:

  • Update the proguard dependency to fix line info detection. (#242)

7.3.4

Deprecations:

  • symbolic-proguard is now deprecated and will be removed in the next major release. Use the proguard crate directly. The C-bindings and Python interface will remain. (#240)

Python:

  • Switch the C-ABI and python to proguard 4.0.0 which supports frame remapping. (#240)

Bug Fixes:

  • Fix broken links in docs on ByteView, SelfCell and AsSelf. (#241)

7.3.3

Bug Fixes:

  • Update broken doc comments for SelfCell and debuginfo::dwarf (#238)
  • Fix holes in line records of inline parents in DWARF (#239)

7.3.2

Bug Fixes:

  • Fix line information of inline parents in DWARF (#237). Many thanks to @calixteman!

7.3.1

Bug Fixes:

  • Skip invalid PE runtime function entries (#230)
  • Support demangling of block invocation functions (#229)
  • Skip invalid CFI entries instead of erroring out (#232)
  • Detect stub DLLs and skip CFI generation (#233)
  • Skip functions with unknown unwind codes (#234)
  • Update goblin to fix panics in PE unwinding (#231)
  • Update gimli to to support eh_frame CIE version 3 (#231)
  • Update cpp_demangle (#231)

7.3.0

Build Changes:

To build with the demangle feature, a C++14 compiler is now required.

Features:

  • Support Swift 5.2 mangling (#208)
  • Inline docs from sub-crates (#209)
  • Add Path utilities for dSYM structures (#212)
  • Updated C++ demangler (#215)

Bug Fixes:

  • Do not error in functions iterator on name errors (#201)
  • Avoid infinite recursion in DWARF because of self references (#202)
  • Do not skip symbols from SHT_NOBIT sections (#207)
  • Do not assume sorted DWARF compilation units (#214)
  • Skip eliminated functions in linked objects (#216)
  • Avoid panics for UTF-8 characters in paths (#217)
  • Get CFI info from eh_frame even if err in debug_frame (#218)
  • Avoid TooManyRegisterRules errors in CFI (#219)
  • Calculate correct line record sizes for DWARF (#220)
  • Detect all scopes to fix incorrect inlinee hierarchies (#221)
  • Patch all parent line records of inlinees in DWARF (#223)
  • Fix broken compilation with -Clink-dead-code (#225)
  • Return the same instruction address for inlinees in symcaches (#226)

7.2.0

Features:

  • Upgrade UUID-related dependencies (#199)

7.1.1

Features:

  • Implement serde::{Deserialize, Serialize} for ProcessResult (#188)
  • Implement serde::{Deserialize, Serialize} for Name (#191)
  • Update the gimli, goblin and pdb libraries (#196)

Bug Fixes:

  • Do not skip DWARF units with a DW_AT_low_pc of 0 (#173)
  • Search for MachO sections in all segments (#173)
  • Fix processing Hermes source maps with non-hermes stack frames (#189)
  • Fix decompression of GNU compressed debug sections (.zdebug_info) (#192)

7.1.0

This release is not available on crates.io

Features:

  • Support skipping over files when creating source bundles (#167)
  • Support for React Native Hermes source maps (#187)

Bug Fixes:

  • Resolved an error in processing DWARF CFI
  • Resolved an error reading ELF fiels with stripped PT_DYNAMIC header
  • Support for Breakpad functions without names
  • Multiple fixes in PDB and PE file processing
  • Fix compilation with MSVC (#164)
  • Added unmapped MachO object types (#169)
  • Proper detection for ELF stripped debug companion files (#170)
  • Detect Java class files which share the same magic as MachO files (#172)
  • Fix memory leaks in the python binding (#180)

7.0.0

This release is not available on crates.io

New Features:

  • A new API to parse Unreal Engine 4 Crash reports (#152).
  • Source bundles to resolve source code for stack frames (#154).
  • Inline functions for Microsoft PDBs (#160).
  • Improved demangling of C++ symbols.

Bug Fixes:

  • Resolved unexpected EOF when parsing certain PDBs.
  • Restored compatibility with Python 3 (#158).

6.1.4

Common:

  • Add ARM64_32 (ILP32 ABI on 64-bit ARM) (#149).
  • Support architecture names from apple crash reports (#151).

DebugInfo:

  • Fix invalid memory addresses for some ELF files (#148).
  • Prefer a PDB's age from the DBI stream (#150).
  • Do not emit default CFI for the .ra register (#157).

Minidump:

  • Fix a memory leak when processing minidumps (#146).

SymCache:

  • Add is_latest() to symcaches and CFI caches.
  • Support functions with more than 65k line records (#155).

6.1.3

Common:

  • Support MIPS and MIPS64 (#141).

DebugInfo:

  • Fix code identifiers for PE files and do not return empty ones (#139, #142).
  • Support Breakpad debug identifiers without an age field (#140).
  • Add Archive::is_multi to check for multi-architecture archives (#143).

Minidump:

  • Add more trait implementations to minidump processor types.
  • Process minidumps without thread lists (#144).
  • Update the breakpad processor. This allows to stackwalk Unreal Engine 4 minidumps (#145).

6.1.2

  • Demangling support for Swift 5.
  • Fix a performance regression in 6.1.1

6.1.1

  • Expose PDB file names from PE object files.
  • Fix incorrect CFI extraction from ELF files.
  • Fix broken symcache lookups for certain optimized files.

6.1.0

  • Support PDB file and line information.
  • Support stack unwind info in PDB files (32-bit).
  • Support stack unwind info in PE files (64-bit).
  • Fix breakpad CFI generation for functions pushing machine frames.

6.0.6

  • Add normalize_code_id in the Python package and C layer.
  • Add ByteView::map_file to create a memory map directly from a file handle.
  • Add size attribute to streams returned from Minidumps / UE4 crash reports.

6.0.5

  • Normalize code identifiers to lowercase (#133).

6.0.4

  • Exposes code identifiers and debug file names for minidumps in Python. Previously, this was only available in the Rust Crate.
  • ObjectLookup now supports code_file and debug_id in in Python.

6.0.3

Re-release on crates.io.

6.0.2

This release is broken on crates.io

  • Fix Rust features: The serde feature activated minidump and unreal unintentionally. This is addressed by providing separate features for modules with serde. See the Readme for more information.
  • Include breakpad sources in symbolic-minidump.

6.0.0

This is a complete rewrite of symbolic. The aim of this release is to make the Rust version, the C-API and the Python package more convenient to use in different scenarios. As a result, there have been quite a few breaking changes.

Breaking Changes:

  • ByteViewHandle has been replaced with the slightly safer type SelfCell. It allows to create a self-referential pair of an owning object and a derived object.
  • Archive and Object are the new types to interface with debug information. There are also direct types exposed for Breakpad, ELF, MachO, PE and PDB; as well as traits to abstract over them.
  • SymCache has a cleaner API, and the writing part has been moved to SymCacheWriter.
  • Some common types have received better names: ObjectKind is now called FileFormat. ObjectClass is now called ObjectKind.
  • Many more small signature changes, such as zero-copy return values or iterators instead of collections.

New Features:

  • Initial support for PE and PDB is here. It is not complete yet, and will be expanded over the next releases.
  • Symbol tables for ELF are now supported. On the bottom line, this will improve symbolication results on Linux.
  • GNU-style compressed debug information (e.g. .zdebug_info) is now supported.
  • Support for most of DWARF 5, thanks to the amazing work on the gimli crate.
  • More lenient parsing of Breakpad symbols now handles certain edge cases more gracefully and gives much better error messages.
  • More utilities to join or split paths from any platform.

Bug Fixes:

  • Fix invalid function name resolution for certain DWARF files.
  • Fix errors on DWARF files generated with LTO.
  • Fix memory leaks when processing Minidumps from Python.
  • Skip STAB symbol entries in MachO files, potentially leading to wrong function names.
  • Do not error on "negative" line numbers in Breakpad symbols.

Internal Changes:

  • Greatly simplified build process and better documentation for the C library.
  • Improved test suite, docs and READMEs. While there can never be enough tests, this is a significant step to improving the overall quality of symbolic.
  • Automatic cloning of submodules during the build. This should make it easier to start developing on symbolic.