Skip to content

Commit

Permalink
Merge branch 'master' into fix/demangle-recursion
Browse files Browse the repository at this point in the history
* master:
  release: 7.5.0
  meta: Update changelog for 7.5.0
  feat: Unsafe transmute for PDB symbols (#258)
  doc: Update changelog for 7.5.0
  feat(unreal): Add unreal data bags (#257)
  fix: Mark enums as non_exhaustive (#256)
  • Loading branch information
jan-auer committed Aug 21, 2020
2 parents 8315cd0 + 7b319e4 commit 333d47d
Show file tree
Hide file tree
Showing 29 changed files with 160 additions and 57 deletions.
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# Changelog

## 7.5.0

**Changes**:

- Add missing unreal data attributes (`EngineData` and `GameData`). ([#257](https://github.com/getsentry/symbolic/pull/257))
- Expose binary names for ELF and MachO ([#252](https://github.com/getsentry/symbolic/pull/252))
- Mark enums as `non_exhaustive`. ([#256](https://github.com/getsentry/symbolic/pull/256))
- Add method to create Archive from bytes. ([#250](https://github.com/getsentry/symbolic/pull/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](https://github.com/getsentry/symbolic/pull/258))

## 7.4.0

**Deprecations**:
Expand Down
18 changes: 9 additions & 9 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "symbolic"
version = "7.4.0"
version = "7.5.0"
license = "MIT"
authors = [
"Armin Ronacher <armin.ronacher@active-4.com>",
Expand Down Expand Up @@ -45,14 +45,14 @@ unreal = ["symbolic-unreal"]
unreal-serde = ["unreal", "common-serde", "symbolic-unreal/with-serde"]

[dependencies]
symbolic-common = { version = "7.4.0", path = "common" }
symbolic-debuginfo = { version = "7.4.0", path = "debuginfo", optional = true }
symbolic-demangle = { version = "7.4.0", path = "demangle", optional = true }
symbolic-minidump = { version = "7.4.0", path = "minidump", optional = true }
symbolic-proguard = { version = "7.4.0", path = "proguard", optional = true }
symbolic-sourcemap = { version = "7.4.0", path = "sourcemap", optional = true }
symbolic-symcache = { version = "7.4.0", path = "symcache", optional = true }
symbolic-unreal = { version = "7.4.0", path = "unreal", optional = true }
symbolic-common = { version = "7.5.0", path = "common" }
symbolic-debuginfo = { version = "7.5.0", path = "debuginfo", optional = true }
symbolic-demangle = { version = "7.5.0", path = "demangle", optional = true }
symbolic-minidump = { version = "7.5.0", path = "minidump", optional = true }
symbolic-proguard = { version = "7.5.0", path = "proguard", optional = true }
symbolic-sourcemap = { version = "7.5.0", path = "sourcemap", optional = true }
symbolic-symcache = { version = "7.5.0", path = "symcache", optional = true }
symbolic-unreal = { version = "7.5.0", path = "unreal", optional = true }

[dev-dependencies]
clap = "2.33.0"
Expand Down
20 changes: 10 additions & 10 deletions cabi/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions cabi/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "symbolic-cabi"
version = "7.4.0"
version = "7.5.0"
license = "MIT"
authors = [
"Armin Ronacher <armin.ronacher@active-4.com>",
Expand Down Expand Up @@ -29,5 +29,5 @@ lto = true
serde_json = "1.0.40"
failure = "0.1.5"
apple-crash-report-parser = { version = "0.4.0", features = ["with_serde"] }
symbolic = { version = "7.4.0", path = "..", features = ["debuginfo", "demangle", "minidump", "proguard", "sourcemap", "symcache", "unreal-serde"] }
symbolic = { version = "7.5.0", path = "..", features = ["debuginfo", "demangle", "minidump", "proguard", "sourcemap", "symcache", "unreal-serde"] }
proguard = { version = "4.0.1", features = ["uuid"] }
7 changes: 6 additions & 1 deletion cabi/include/symbolic.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#ifndef SYMBOLIC_H_INCLUDED
#define SYMBOLIC_H_INCLUDED

/* Generated with cbindgen:0.14.2 */
/* Generated with cbindgen:0.14.3 */

/* Warning, this file is autogenerated. Do not modify this manually. */

Expand All @@ -25,18 +25,21 @@ enum SymbolicErrorCode {
SYMBOLIC_ERROR_CODE_PARSE_DEBUG_ID_ERROR = 1003,
SYMBOLIC_ERROR_CODE_UNKNOWN_OBJECT_KIND_ERROR = 2001,
SYMBOLIC_ERROR_CODE_UNKNOWN_FILE_FORMAT_ERROR = 2002,
SYMBOLIC_ERROR_CODE_OBJECT_ERROR_UNKNOWN = 2100,
SYMBOLIC_ERROR_CODE_OBJECT_ERROR_UNSUPPORTED_OBJECT = 2101,
SYMBOLIC_ERROR_CODE_OBJECT_ERROR_BAD_BREAKPAD_OBJECT = 2102,
SYMBOLIC_ERROR_CODE_OBJECT_ERROR_BAD_ELF_OBJECT = 2103,
SYMBOLIC_ERROR_CODE_OBJECT_ERROR_BAD_MACH_O_OBJECT = 2104,
SYMBOLIC_ERROR_CODE_OBJECT_ERROR_BAD_PDB_OBJECT = 2105,
SYMBOLIC_ERROR_CODE_OBJECT_ERROR_BAD_PE_OBJECT = 2106,
SYMBOLIC_ERROR_CODE_OBJECT_ERROR_BAD_SOURCE_BUNDLE = 2107,
SYMBOLIC_ERROR_CODE_DWARF_ERROR_UNKNOWN = 2200,
SYMBOLIC_ERROR_CODE_DWARF_ERROR_INVALID_UNIT_REF = 2201,
SYMBOLIC_ERROR_CODE_DWARF_ERROR_INVALID_FILE_REF = 2202,
SYMBOLIC_ERROR_CODE_DWARF_ERROR_UNEXPECTED_INLINE = 2203,
SYMBOLIC_ERROR_CODE_DWARF_ERROR_INVERTED_FUNCTION_RANGE = 2204,
SYMBOLIC_ERROR_CODE_DWARF_ERROR_CORRUPTED_DATA = 2205,
SYMBOLIC_ERROR_CODE_CFI_ERROR_UNKNOWN = 3000,
SYMBOLIC_ERROR_CODE_CFI_ERROR_MISSING_DEBUG_INFO = 3001,
SYMBOLIC_ERROR_CODE_CFI_ERROR_UNSUPPORTED_DEBUG_FORMAT = 3002,
SYMBOLIC_ERROR_CODE_CFI_ERROR_BAD_DEBUG_INFO = 3003,
Expand All @@ -52,6 +55,7 @@ enum SymbolicErrorCode {
SYMBOLIC_ERROR_CODE_PROCESS_MINIDUMP_ERROR_DUPLICATE_REQUESTING_THREADS = 4006,
SYMBOLIC_ERROR_CODE_PROCESS_MINIDUMP_ERROR_SYMBOL_SUPPLIER_INTERRUPTED = 4007,
SYMBOLIC_ERROR_CODE_PARSE_SOURCE_MAP_ERROR = 5001,
SYMBOLIC_ERROR_CODE_SYM_CACHE_ERROR_UNKNOWN = 6000,
SYMBOLIC_ERROR_CODE_SYM_CACHE_ERROR_BAD_FILE_MAGIC = 6001,
SYMBOLIC_ERROR_CODE_SYM_CACHE_ERROR_BAD_FILE_HEADER = 6002,
SYMBOLIC_ERROR_CODE_SYM_CACHE_ERROR_BAD_SEGMENT = 6003,
Expand All @@ -64,6 +68,7 @@ enum SymbolicErrorCode {
SYMBOLIC_ERROR_CODE_SYM_CACHE_ERROR_VALUE_TOO_LARGE = 6010,
SYMBOLIC_ERROR_CODE_SYM_CACHE_ERROR_WRITE_FAILED = 6011,
SYMBOLIC_ERROR_CODE_SYM_CACHE_ERROR_TOO_MANY_VALUES = 6012,
SYMBOLIC_ERROR_CODE_UNREAL4_ERROR_UNKNOWN = 7001,
SYMBOLIC_ERROR_CODE_UNREAL4_ERROR_EMPTY = 7002,
SYMBOLIC_ERROR_CODE_UNREAL4_ERROR_BAD_COMPRESSION = 7004,
SYMBOLIC_ERROR_CODE_UNREAL4_ERROR_INVALID_XML = 7005,
Expand Down
10 changes: 10 additions & 0 deletions cabi/src/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -152,20 +152,23 @@ pub enum SymbolicErrorCode {
// symbolic::debuginfo
UnknownObjectKindError = 2001,
UnknownFileFormatError = 2002,
ObjectErrorUnknown = 2100,
ObjectErrorUnsupportedObject = 2101,
ObjectErrorBadBreakpadObject = 2102,
ObjectErrorBadElfObject = 2103,
ObjectErrorBadMachOObject = 2104,
ObjectErrorBadPdbObject = 2105,
ObjectErrorBadPeObject = 2106,
ObjectErrorBadSourceBundle = 2107,
DwarfErrorUnknown = 2200,
DwarfErrorInvalidUnitRef = 2201,
DwarfErrorInvalidFileRef = 2202,
DwarfErrorUnexpectedInline = 2203,
DwarfErrorInvertedFunctionRange = 2204,
DwarfErrorCorruptedData = 2205,

// symbolic::minidump::cfi
CfiErrorUnknown = 3000,
CfiErrorMissingDebugInfo = 3001,
CfiErrorUnsupportedDebugFormat = 3002,
CfiErrorBadDebugInfo = 3003,
Expand All @@ -187,6 +190,7 @@ pub enum SymbolicErrorCode {
ParseSourceMapError = 5001,

// symbolic::symcache
SymCacheErrorUnknown = 6000,
SymCacheErrorBadFileMagic = 6001,
SymCacheErrorBadFileHeader = 6002,
SymCacheErrorBadSegment = 6003,
Expand All @@ -201,6 +205,7 @@ pub enum SymbolicErrorCode {
SymCacheErrorTooManyValues = 6012,

// symbolic::unreal
Unreal4ErrorUnknown = 7001,
Unreal4ErrorEmpty = 7002,
Unreal4ErrorBadCompression = 7004,
Unreal4ErrorInvalidXml = 7005,
Expand Down Expand Up @@ -269,8 +274,10 @@ impl SymbolicErrorCode {
SymbolicErrorCode::DwarfErrorInvertedFunctionRange
}
DwarfErrorKind::CorruptedData => SymbolicErrorCode::DwarfErrorCorruptedData,
_ => SymbolicErrorCode::DwarfErrorUnknown,
},
ObjectError::SourceBundle(_) => SymbolicErrorCode::ObjectErrorBadSourceBundle,
_ => SymbolicErrorCode::ObjectErrorUnknown,
};
}

Expand All @@ -286,6 +293,7 @@ impl SymbolicErrorCode {
CfiErrorKind::InvalidAddress => SymbolicErrorCode::CfiErrorInvalidAddress,
CfiErrorKind::WriteError => SymbolicErrorCode::CfiErrorWriteError,
CfiErrorKind::BadFileMagic => SymbolicErrorCode::CfiErrorBadFileMagic,
_ => SymbolicErrorCode::CfiErrorUnknown,
};
}

Expand Down Expand Up @@ -352,6 +360,7 @@ impl SymbolicErrorCode {
SymCacheErrorKind::TooManyValues(_) => {
SymbolicErrorCode::SymCacheErrorTooManyValues
}
_ => SymbolicErrorCode::SymCacheErrorUnknown,
};
}

Expand All @@ -368,6 +377,7 @@ impl SymbolicErrorCode {
Unreal4Error::InvalidLogEntry(_) => {
SymbolicErrorCode::Unreal4ErrorInvalidLogEntry
}
_ => SymbolicErrorCode::Unreal4ErrorUnknown,
};
}

Expand Down
2 changes: 1 addition & 1 deletion common/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "symbolic-common"
version = "7.4.0"
version = "7.5.0"
license = "MIT"
authors = [
"Armin Ronacher <armin.ronacher@active-4.com>",
Expand Down
36 changes: 19 additions & 17 deletions common/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

use std::borrow::Cow;
use std::fmt;
use std::mem;
use std::str;

use failure::Fail;
Expand Down Expand Up @@ -69,8 +68,9 @@ static MIPS: &[&str] = &[
/// This enumeration is represented as `u32` for C-bindings and lowlevel APIs.
///
/// [`Arch`]: enum.Arch.html
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
#[repr(u32)]
#[non_exhaustive]
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub enum CpuFamily {
/// Any other CPU family that is not explicitly supported.
Unknown = 0,
Expand Down Expand Up @@ -242,9 +242,10 @@ pub struct UnknownArchError;
///
/// [`cpu_family`]: enum.Arch.html#method.cpu_family
/// [`Arch::name`]: enum.Arch.html#method.name
#[repr(u32)]
#[non_exhaustive]
#[allow(missing_docs)]
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
#[repr(u32)]
pub enum Arch {
Unknown = 0,
X86 = 101,
Expand Down Expand Up @@ -528,9 +529,10 @@ pub struct UnknownLanguageError;
/// This enumeration is represented as `u32` for C-bindings and lowlevel APIs.
///
/// [`Name`]: struct.Name.html
#[repr(u32)]
#[non_exhaustive]
#[allow(missing_docs)]
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
#[repr(u32)]
pub enum Language {
Unknown = 0,
C = 1,
Expand All @@ -541,8 +543,6 @@ pub enum Language {
ObjCpp = 6,
Rust = 7,
Swift = 8,
#[doc(hidden)]
__Max = 9,
}

impl Language {
Expand All @@ -559,10 +559,17 @@ impl Language {
/// println!("{:?}", Language::from_u32(1));
/// ```
pub fn from_u32(val: u32) -> Language {
if val >= (Language::__Max as u32) {
Language::Unknown
} else {
unsafe { mem::transmute(val) }
match val {
0 => Self::Unknown,
1 => Self::C,
2 => Self::Cpp,
3 => Self::D,
4 => Self::Go,
5 => Self::ObjC,
6 => Self::ObjCpp,
7 => Self::Rust,
8 => Self::Swift,
_ => Self::Unknown,
}
}

Expand All @@ -585,7 +592,7 @@ impl Language {
/// ```
pub fn name(self) -> &'static str {
match self {
Language::Unknown | Language::__Max => "unknown",
Language::Unknown => "unknown",
Language::C => "c",
Language::Cpp => "cpp",
Language::D => "d",
Expand All @@ -607,7 +614,7 @@ impl Default for Language {
impl fmt::Display for Language {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let formatted = match *self {
Language::Unknown | Language::__Max => "unknown",
Language::Unknown => "unknown",
Language::C => "C",
Language::Cpp => "C++",
Language::D => "D",
Expand Down Expand Up @@ -727,11 +734,6 @@ impl<'a> Name<'a> {
where
S: Into<Cow<'a, str>>,
{
let lang = match lang {
Language::__Max => Language::Unknown,
_ => lang,
};

Name {
string: string.into(),
lang,
Expand Down
Loading

0 comments on commit 333d47d

Please sign in to comment.