Skip to content

Commit 50f7839

Browse files
committed
wip: emit short backtraces even for shims with no basic blocks
1 parent 293f19a commit 50f7839

8 files changed

+30
-40
lines changed

library/core/src/ops/function.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#![cfg_attr(not(bootstrap), rustc_skip_short_backtrace)]
2+
13
use crate::marker::Tuple;
24

35
/// The version of the call operator that takes an immutable receiver.
@@ -247,7 +249,6 @@ pub trait FnOnce<Args: Tuple> {
247249

248250
/// Performs the call operation.
249251
#[unstable(feature = "fn_traits", issue = "29625")]
250-
#[cfg_attr(not(bootstrap), rustc_skip_short_backtrace)]
251252
extern "rust-call" fn call_once(self, args: Args) -> Self::Output;
252253
}
253254

library/std/src/sys/backtrace.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,15 @@ unsafe fn _print_fmt(fmt: &mut fmt::Formatter<'_>, print_fmt: PrintFmt) -> fmt::
111111
}
112112
}
113113

114-
if skip || !print {
114+
if !print {
115+
skip = true;
116+
}
117+
if skip {
115118
omitted_count += 1;
116119
}
117120
}
118121

119-
if print && !skip {
122+
if !skip {
120123
write_omitted(&mut omitted_count, &mut bt_fmt);
121124
res = bt_fmt.frame().symbol(frame, symbol);
122125
}

tests/ui/backtrace/std-backtrace-skip-frames.line-tables.run.stderr

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ thread '<unnamed>' panicked at $DIR/std-backtrace-skip-frames.rs:LL:CC:
4242
explicit panic
4343
stack backtrace:
4444
[... omitted N frames ...]
45-
0: std_backtrace_skip_frames::explicit_panic::panic_cold_explicit
46-
at $SRC_DIR/core/src/panic.rs:LL:COL
47-
1: std_backtrace_skip_frames::explicit_panic
45+
0: std_backtrace_skip_frames::explicit_panic
4846
at $DIR/std-backtrace-skip-frames.rs:LL:CC
4947
[... omitted N frames ...]
5048
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
@@ -70,16 +68,14 @@ thread 'main' panicked at $DIR/std-backtrace-skip-frames.rs:LL:CC:
7068
explicit panic
7169
stack backtrace:
7270
[... omitted N frames ...]
73-
0: std_backtrace_skip_frames::check_all_panics::panic_cold_explicit
74-
at $SRC_DIR/core/src/panic.rs:LL:COL
75-
1: check_all_panics
71+
0: check_all_panics
7672
at $DIR/std-backtrace-skip-frames.rs:LL:CC
77-
2: {closure#0}
73+
1: {closure#0}
7874
at $DIR/std-backtrace-skip-frames.rs:LL:CC
7975
[... omitted N frames ...]
80-
3: catch_unwind<std_backtrace_skip_frames::main::{closure_env#0}, ()>
76+
2: catch_unwind<std_backtrace_skip_frames::main::{closure_env#0}, ()>
8177
at $SRC_DIR/std/src/panic.rs:LL:COL
82-
4: main
78+
3: main
8379
at $DIR/std-backtrace-skip-frames.rs:LL:CC
8480
[... omitted N frames ...]
8581
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

tests/ui/backtrace/std-backtrace-skip-frames.no-split.run.stderr

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ thread '<unnamed>' panicked at $DIR/std-backtrace-skip-frames.rs:LL:CC:
4242
explicit panic
4343
stack backtrace:
4444
[... omitted N frames ...]
45-
0: std_backtrace_skip_frames::explicit_panic::panic_cold_explicit
46-
at $SRC_DIR/core/src/panic.rs:LL:COL
47-
1: std_backtrace_skip_frames::explicit_panic
45+
0: std_backtrace_skip_frames::explicit_panic
4846
at $DIR/std-backtrace-skip-frames.rs:LL:CC
4947
[... omitted N frames ...]
5048
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
@@ -70,16 +68,14 @@ thread 'main' panicked at $DIR/std-backtrace-skip-frames.rs:LL:CC:
7068
explicit panic
7169
stack backtrace:
7270
[... omitted N frames ...]
73-
0: std_backtrace_skip_frames::check_all_panics::panic_cold_explicit
74-
at $SRC_DIR/core/src/panic.rs:LL:COL
75-
1: check_all_panics
71+
0: check_all_panics
7672
at $DIR/std-backtrace-skip-frames.rs:LL:CC
77-
2: {closure#0}
73+
1: {closure#0}
7874
at $DIR/std-backtrace-skip-frames.rs:LL:CC
7975
[... omitted N frames ...]
80-
3: catch_unwind<std_backtrace_skip_frames::main::{closure_env#0}, ()>
76+
2: catch_unwind<std_backtrace_skip_frames::main::{closure_env#0}, ()>
8177
at $SRC_DIR/std/src/panic.rs:LL:COL
82-
4: main
78+
3: main
8379
at $DIR/std-backtrace-skip-frames.rs:LL:CC
8480
[... omitted N frames ...]
8581
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

tests/ui/backtrace/std-backtrace-skip-frames.packed.run.stderr

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ thread '<unnamed>' panicked at $DIR/std-backtrace-skip-frames.rs:LL:CC:
4242
explicit panic
4343
stack backtrace:
4444
[... omitted N frames ...]
45-
0: std_backtrace_skip_frames::explicit_panic::panic_cold_explicit
46-
at $SRC_DIR/core/src/panic.rs:LL:COL
47-
1: std_backtrace_skip_frames::explicit_panic
45+
0: std_backtrace_skip_frames::explicit_panic
4846
at $DIR/std-backtrace-skip-frames.rs:LL:CC
4947
[... omitted N frames ...]
5048
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
@@ -70,16 +68,14 @@ thread 'main' panicked at $DIR/std-backtrace-skip-frames.rs:LL:CC:
7068
explicit panic
7169
stack backtrace:
7270
[... omitted N frames ...]
73-
0: std_backtrace_skip_frames::check_all_panics::panic_cold_explicit
74-
at $SRC_DIR/core/src/panic.rs:LL:COL
75-
1: check_all_panics
71+
0: check_all_panics
7672
at $DIR/std-backtrace-skip-frames.rs:LL:CC
77-
2: {closure#0}
73+
1: {closure#0}
7874
at $DIR/std-backtrace-skip-frames.rs:LL:CC
7975
[... omitted N frames ...]
80-
3: catch_unwind<std_backtrace_skip_frames::main::{closure_env#0}, ()>
76+
2: catch_unwind<std_backtrace_skip_frames::main::{closure_env#0}, ()>
8177
at $SRC_DIR/std/src/panic.rs:LL:COL
82-
4: main
78+
3: main
8379
at $DIR/std-backtrace-skip-frames.rs:LL:CC
8480
[... omitted N frames ...]
8581
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

tests/ui/backtrace/std-backtrace-skip-frames.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
If at all possible, rather than removing the assert that the different
44
revisions behave the same, move only the revisions that are failing into a
55
separate test, so that the rest are still kept the same.
6+
7+
TODO: this test is megacursed, either split it into a separate run-make test that looks at the .stderr files or get `compare-mode` working
68
*/
79

810
//@ ignore-android FIXME #17520

tests/ui/backtrace/std-backtrace-skip-frames.unpacked.run.stderr

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ thread '<unnamed>' panicked at $DIR/std-backtrace-skip-frames.rs:LL:CC:
4242
explicit panic
4343
stack backtrace:
4444
[... omitted N frames ...]
45-
0: std_backtrace_skip_frames::explicit_panic::panic_cold_explicit
46-
at $SRC_DIR/core/src/panic.rs:LL:COL
47-
1: std_backtrace_skip_frames::explicit_panic
45+
0: std_backtrace_skip_frames::explicit_panic
4846
at $DIR/std-backtrace-skip-frames.rs:LL:CC
4947
[... omitted N frames ...]
5048
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
@@ -70,16 +68,14 @@ thread 'main' panicked at $DIR/std-backtrace-skip-frames.rs:LL:CC:
7068
explicit panic
7169
stack backtrace:
7270
[... omitted N frames ...]
73-
0: std_backtrace_skip_frames::check_all_panics::panic_cold_explicit
74-
at $SRC_DIR/core/src/panic.rs:LL:COL
75-
1: check_all_panics
71+
0: check_all_panics
7672
at $DIR/std-backtrace-skip-frames.rs:LL:CC
77-
2: {closure#0}
73+
1: {closure#0}
7874
at $DIR/std-backtrace-skip-frames.rs:LL:CC
7975
[... omitted N frames ...]
80-
3: catch_unwind<std_backtrace_skip_frames::main::{closure_env#0}, ()>
76+
2: catch_unwind<std_backtrace_skip_frames::main::{closure_env#0}, ()>
8177
at $SRC_DIR/std/src/panic.rs:LL:COL
82-
4: main
78+
3: main
8379
at $DIR/std-backtrace-skip-frames.rs:LL:CC
8480
[... omitted N frames ...]
8581
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

0 commit comments

Comments
 (0)