Skip to content

Commit d8c198e

Browse files
authored
Rollup merge of rust-lang#56718 - RalfJung:use-libbacktrace-printing, r=alexcrichton
Use libbacktrace pretty-printing r? @alexcrichton
2 parents addcd3e + 8e994a2 commit d8c198e

File tree

2 files changed

+10
-46
lines changed

2 files changed

+10
-46
lines changed

Cargo.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ dependencies = [
8181

8282
[[package]]
8383
name = "backtrace"
84-
version = "0.3.9"
84+
version = "0.3.11"
8585
source = "registry+https://github.com/rust-lang/crates.io-index"
8686
dependencies = [
8787
"backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -725,15 +725,15 @@ name = "error-chain"
725725
version = "0.11.0"
726726
source = "registry+https://github.com/rust-lang/crates.io-index"
727727
dependencies = [
728-
"backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
728+
"backtrace 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)",
729729
]
730730

731731
[[package]]
732732
name = "error-chain"
733733
version = "0.12.0"
734734
source = "registry+https://github.com/rust-lang/crates.io-index"
735735
dependencies = [
736-
"backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
736+
"backtrace 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)",
737737
]
738738

739739
[[package]]
@@ -748,7 +748,7 @@ name = "failure"
748748
version = "0.1.3"
749749
source = "registry+https://github.com/rust-lang/crates.io-index"
750750
dependencies = [
751-
"backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
751+
"backtrace 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)",
752752
"failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
753753
]
754754

@@ -2061,7 +2061,7 @@ name = "rustc"
20612061
version = "0.0.0"
20622062
dependencies = [
20632063
"arena 0.0.0",
2064-
"backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
2064+
"backtrace 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)",
20652065
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
20662066
"byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
20672067
"chalk-engine 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -3374,7 +3374,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
33743374
"checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef"
33753375
"checksum assert_cli 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98589b0e465a6c510d95fceebd365bb79bedece7f6e18a480897f2015f85ec51"
33763376
"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652"
3377-
"checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a"
3377+
"checksum backtrace 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "18b65ea1161bfb2dd6da6fade5edd4dbd08fba85012123dd333d2fd1b90b2782"
33783378
"checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0"
33793379
"checksum bit-set 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6f1efcc46c18245a69c38fcc5cc650f16d3a59d034f3106e9ed63748f695730a"
33803380
"checksum bit-vec 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4440d5cb623bb7390ae27fec0bb6c61111969860f8e3ae198bfa0663645e67cf"

src/librustc/mir/interpret/error.rs

Lines changed: 4 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -183,50 +183,14 @@ pub struct EvalError<'tcx> {
183183
impl<'tcx> EvalError<'tcx> {
184184
pub fn print_backtrace(&mut self) {
185185
if let Some(ref mut backtrace) = self.backtrace {
186-
eprintln!("{}", print_backtrace(&mut *backtrace));
186+
print_backtrace(&mut *backtrace);
187187
}
188188
}
189189
}
190190

191-
fn print_backtrace(backtrace: &mut Backtrace) -> String {
192-
use std::fmt::Write;
193-
191+
fn print_backtrace(backtrace: &mut Backtrace) {
194192
backtrace.resolve();
195-
196-
let mut trace_text = "\n\nAn error occurred in miri:\n".to_string();
197-
write!(trace_text, "backtrace frames: {}\n", backtrace.frames().len()).unwrap();
198-
'frames: for (i, frame) in backtrace.frames().iter().enumerate() {
199-
if frame.symbols().is_empty() {
200-
write!(trace_text, " {}: no symbols\n", i).unwrap();
201-
}
202-
let mut first = true;
203-
for symbol in frame.symbols() {
204-
if first {
205-
write!(trace_text, " {}: ", i).unwrap();
206-
first = false;
207-
} else {
208-
let len = i.to_string().len();
209-
write!(trace_text, " {} ", " ".repeat(len)).unwrap();
210-
}
211-
if let Some(name) = symbol.name() {
212-
write!(trace_text, "{}\n", name).unwrap();
213-
} else {
214-
write!(trace_text, "<unknown>\n").unwrap();
215-
}
216-
write!(trace_text, " at ").unwrap();
217-
if let Some(file_path) = symbol.filename() {
218-
write!(trace_text, "{}", file_path.display()).unwrap();
219-
} else {
220-
write!(trace_text, "<unknown_file>").unwrap();
221-
}
222-
if let Some(line) = symbol.lineno() {
223-
write!(trace_text, ":{}\n", line).unwrap();
224-
} else {
225-
write!(trace_text, "\n").unwrap();
226-
}
227-
}
228-
}
229-
trace_text
193+
eprintln!("\n\nAn error occurred in miri:\n{:?}", backtrace);
230194
}
231195

232196
impl<'tcx> From<EvalErrorKind<'tcx, u64>> for EvalError<'tcx> {
@@ -238,7 +202,7 @@ impl<'tcx> From<EvalErrorKind<'tcx, u64>> for EvalError<'tcx> {
238202

239203
if val == "immediate" {
240204
// Print it now
241-
eprintln!("{}", print_backtrace(&mut backtrace));
205+
print_backtrace(&mut backtrace);
242206
None
243207
} else {
244208
Some(Box::new(backtrace))

0 commit comments

Comments
 (0)