forked from rust-lang/backtrace-rs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Cargo.toml
159 lines (140 loc) · 5.39 KB
/
Cargo.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
[package]
name = "backtrace"
version = "0.3.45"
authors = ["The Rust Project Developers"]
license = "MIT/Apache-2.0"
readme = "README.md"
repository = "https://github.com/rust-lang/backtrace-rs"
homepage = "https://github.com/rust-lang/backtrace-rs"
documentation = "https://docs.rs/backtrace"
description = """
A library to acquire a stack trace (backtrace) at runtime in a Rust program.
"""
autoexamples = true
autotests = true
edition = "2018"
[workspace]
members = ['crates/cpp_smoke_test']
exclude = ['crates/without_debuginfo', 'crates/macos_frames_test']
[dependencies]
cfg-if = "0.1.10"
rustc-demangle = "0.1.4"
backtrace-sys = { path = "crates/backtrace-sys", version = "0.1.33", optional = true, default_features = false }
libc = { version = "0.2.45", default-features = false }
core = { version = "1.0.0", optional = true, package = 'rustc-std-workspace-core' }
compiler_builtins = { version = '0.1.2', optional = true }
# Optionally enable the ability to serialize a `Backtrace`
serde = { version = "1.0", optional = true, features = ['derive'] }
rustc-serialize = { version = "0.3", optional = true }
# Optionally demangle C++ frames' symbols in backtraces.
cpp_demangle = { default-features = false, version = "0.2.3", optional = true }
# Optional dependencies enabled through the `gimli-symbolize` feature
addr2line = { version = "0.11.0", optional = true, default-features = false, features = ['std'] }
findshlibs = { version = "0.5.0", optional = true }
memmap = { version = "0.7.0", optional = true }
goblin = { version = "0.2", optional = true, default-features = false, features = ['elf32', 'elf64', 'mach32', 'mach64', 'pe32', 'pe64', 'std'] }
[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3.3", optional = true }
# Each feature controls the two phases of finding a backtrace: getting a
# backtrace and then resolving instruction pointers to symbols. The default
# feature enables all the necessary features for each platform this library
# supports, but it can be disabled to have finer grained control over the
# dependencies.
#
# Note that not all features are available on all platforms, so even though a
# feature is enabled some other feature may be used instead.
[features]
default = ["std", "libunwind", "libbacktrace", "dladdr", "dbghelp"]
# Include std support.
std = []
#=======================================
# Methods of acquiring a backtrace
#
# - libunwind: when using this the libgcc library is linked against to get
# the unwinding support. This is generally the most reliable method to get
# a backtrace on unix.
# - unix-backtrace: this uses the backtrace(3) function to acquire a
# backtrace, but is not as reliable as libunwind. It is, however,
# generally found in more locations.
# - dbghelp: on windows this enables usage of dbghelp.dll to find a
# backtrace at runtime
# - kernel32: on windows this enables using RtlCaptureStackBackTrace as the
# function to acquire a backtrace
libunwind = []
unix-backtrace = []
dbghelp = []
kernel32 = []
#=======================================
# Methods of resolving symbols
#
# - libbacktrace: this feature activates the `backtrace-sys` dependency,
# building the libbacktrace library found in gcc repos. This library
# parses the DWARF info of ELF executables to find symbol names, and it
# can also provide filename/line number information if debuginfo is
# compiled in. This library currently only primarily works on unixes that
# are not OSX, however.
# - dladdr: this feature uses the dladdr(3) function (a glibc extension) to
# resolve symbol names. This is fairly unreliable on linux, but works well
# enough on OSX.
# - coresymbolication: this feature uses the undocumented core symbolication
# framework on OS X to symbolize. Note that this is not turned on default due
# to various issues, you can see more in #202.
# - gimli-symbolize: use the `gimli-rs/addr2line` crate to symbolicate
# addresses into file, line, and name using DWARF debug information. At
# the moment, this is only possible when targetting Linux, since macOS
# splits DWARF out into a separate object file. Enabling this feature
# means one less C dependency.
libbacktrace = ["backtrace-sys/backtrace-sys"]
dladdr = []
coresymbolication = []
gimli-symbolize = ["addr2line", "findshlibs", "memmap", "goblin"]
#=======================================
# Methods of serialization
#
# Various features used for enabling rustc-serialize or syntex codegen.
serialize-rustc = ["rustc-serialize"]
serialize-serde = ["serde"]
#=======================================
# Internal features for testing and such.
verify-winapi = [
'winapi/dbghelp',
'winapi/handleapi',
'winapi/libloaderapi',
'winapi/minwindef',
'winapi/processthreadsapi',
'winapi/synchapi',
'winapi/winbase',
'winapi/winnt',
]
rustc-dep-of-std = [
'backtrace-sys/rustc-dep-of-std',
'cfg-if/rustc-dep-of-std',
'core',
'compiler_builtins',
'libc/rustc-dep-of-std',
'rustc-demangle/rustc-dep-of-std',
]
[[example]]
name = "backtrace"
required-features = ["std"]
[[example]]
name = "raw"
required-features = ["std"]
[[test]]
name = "skip_inner_frames"
required-features = ["std"]
[[test]]
name = "long_fn_name"
required-features = ["std"]
[[test]]
name = "smoke"
required-features = ["std"]
edition = '2018'
[[test]]
name = "accuracy"
required-features = ["std", "dbghelp", "libbacktrace", "libunwind"]
edition = '2018'
[[test]]
name = "concurrent-panics"
required-features = ["std"]
harness = false