Skip to content

Commit

Permalink
Auto merge of rust-lang#128913 - saethlin:unignore-debuginfo-tests, r…
Browse files Browse the repository at this point in the history
…=<try>

Enable debuginfo tests that have been "temporarily disabled" for the past 6 years

`tests/debuginfo/drop-locations.rs`
No idea why we are setting `-O -Cno-prepopulate-passes`. Nowadays that turns on MIR opts, no idea what it did in 2018.
Turning off optimizations makes just loc2 missing. That seems like a bug in debuginfo generation. Turning off all MIR opts and even adding a `drop(s)` on that line doesn't help. Cursed. Keeping this test ignored.

`tests/debuginfo/option-like-enum.rs`
Debuggers are better at Rust!
Also one inexplicable change. No idea why we used to expect that. Deleted.

`tests/debuginfo/function-arg-initialization.rs`
rust-lang#128945

`tests/debuginfo/macro-stepping.rs`
Also broken by SingleUseConsts. I hate tests like this, nobody uses a debugger on code that's just assigning consts to unused variables. Test should be rewritten with realistic code.

`tests/debuginfo/basic-types-metadata.rs`
Debuggers are better at Rust!
Diverging functions don't have -> ! in their whatis output anymore? Not sure if that is a bug.

---

More failures on apple!
`tests/debuginfo/by-value-non-immediate-argument.rs`
`tests/debuginfo/function-arg-initialization.rs`
`tests/debuginfo/function-prologue-stepping-regular.rs`
I think all of these indicate that lldb on aarch64-apple does not understand indirect by-value non-immediate arguments. Is that known?

`tests/debuginfo/method-on-enum.rs`
`tests/debuginfo/option-like-enum.rs`
`tests/debuginfo/struct-in-enum.rs`
lldb on aarch64-apple can't print enums until at least llvm 18. We use an old lldb on apple.

---

aarch64-gnu fails on `tests/debuginfo/by-value-non-immediate-argument.rs` as well. Looks like either a codegen bug or a gdb bug.

---

The prettyprinters that we need for `tests/debuginfo/pretty-std.rs` are not loaded on windows-gnu. It's not entirely clear why, but I suspect that the escaping that was added in rust-lang#17161 is interfering somehow.

---

try-job: x86_64-msvc
try-job: x86_64-mingw
try-job: i686-msvc
try-job: i686-mingw
  • Loading branch information
bors committed Aug 11, 2024
2 parents 730d5d4 + 39dd5c1 commit 23e9c0f
Show file tree
Hide file tree
Showing 22 changed files with 47 additions and 70 deletions.
1 change: 0 additions & 1 deletion tests/debuginfo/basic-types-globals-metadata.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//@ min-lldb-version: 310
//@ ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155

//@ compile-flags:-g
// gdb-command:run
Expand Down
21 changes: 10 additions & 11 deletions tests/debuginfo/basic-types-metadata.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//@ min-lldb-version: 310
//@ ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155

//@ compile-flags:-g
// gdb-command:run
Expand Down Expand Up @@ -36,31 +35,31 @@
// gdb-command:whatis f64
// gdb-check:type = f64
// gdb-command:whatis fnptr
// gdb-check:type = [...] (*)([...])
// gdb-check:type = *mut fn ()
// gdb-command:info functions _yyy
// gdbg-check:[...]![...]_yyy([...]);
// gdbr-check:static fn basic_types_metadata::_yyy() -> !;
// gdbr-check:static fn basic_types_metadata::_yyy();
// gdb-command:ptype closure_0
// gdbr-check: type = struct closure
// gdbr-check: type = struct basic_types_metadata::main::{closure_env#0}
// gdbg-check: type = struct closure {
// gdbg-check: <no data fields>
// gdbg-check: }
// gdb-command:ptype closure_1
// gdbg-check: type = struct closure {
// gdbg-check: bool *__0;
// gdbg-check: }
// gdbr-check: type = struct closure (
// gdbr-check: bool *,
// gdbr-check: )
// gdbr-check: type = struct basic_types_metadata::main::{closure_env#1} {
// gdbr-check: *mut bool,
// gdbr-check: }
// gdb-command:ptype closure_2
// gdbg-check: type = struct closure {
// gdbg-check: bool *__0;
// gdbg-check: isize *__1;
// gdbg-check: }
// gdbr-check: type = struct closure (
// gdbr-check: bool *,
// gdbr-check: isize *,
// gdbr-check: )
// gdbr-check: type = struct basic_types_metadata::main::{closure_env#2} {
// gdbr-check: *mut bool,
// gdbr-check: *mut isize,
// gdbr-check: }

//
// gdb-command:continue
Expand Down
3 changes: 0 additions & 3 deletions tests/debuginfo/basic-types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@

//@ min-lldb-version: 310

// This fails on lldb 6.0.1 on x86-64 Fedora 28; so ignore Linux for now.
//@ ignore-linux

//@ compile-flags:-g

// === GDB TESTS ===================================================================================
Expand Down
15 changes: 10 additions & 5 deletions tests/debuginfo/by-value-non-immediate-argument.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
//@ ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155
//@ min-lldb-version: 310

// The gdb that we use in CI for aarch64-unknown-linux-gnu and x86_64-pc-windows-gnu seems unable
// to handle by-value non-immediate arguments, which is the whole point of this test.
// gdb on those platforms (or the version we test) just prints <optimized out> for structs/tuples
// and attempts to read memory at 0x0 for enums.
//@ ignore-aarch64
//@ ignore-windows-gnu

//@ min-lldb-version: 1800
//@ compile-flags:-g

// === GDB TESTS ===================================================================================
Expand Down Expand Up @@ -42,11 +47,11 @@
// lldb-command:run

// lldb-command:v s
// lldb-check:[...] Struct { a: 1, b: 2.5 }
// lldb-check:[...] Struct { a = 1 b = 2.5 }
// lldb-command:continue

// lldb-command:v x
// lldb-check:[...] Struct { a: 3, b: 4.5 }
// lldb-check:[...] Struct { a = 3 b = 4.5 }
// lldb-command:v y
// lldb-check:[...] 5
// lldb-command:v z
Expand Down
1 change: 0 additions & 1 deletion tests/debuginfo/c-style-enum.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//@ ignore-aarch64
//@ ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155
//@ min-lldb-version: 310

//@ compile-flags:-g
Expand Down
4 changes: 0 additions & 4 deletions tests/debuginfo/cross-crate-spans.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@

//@ min-lldb-version: 310

// This fails on lldb 6.0.1 on x86-64 Fedora 28; so mark it macOS-only
// for now.
//@ only-macos

//@ aux-build:cross_crate_spans.rs
extern crate cross_crate_spans;

Expand Down
4 changes: 0 additions & 4 deletions tests/debuginfo/destructured-for-loop-variable.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
//@ min-lldb-version: 310

// This fails on lldb 6.0.1 on x86-64 Fedora 28; so mark it macOS-only
// for now.
//@ only-macos

//@ compile-flags:-g

// === GDB TESTS ===================================================================================
Expand Down
5 changes: 2 additions & 3 deletions tests/debuginfo/drop-locations.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
//@ ignore-windows
//@ ignore-android
//@ ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155
//@ min-lldb-version: 310
//@ ignore-test

#![allow(unused)]

//@ compile-flags:-g -O -C no-prepopulate-passes
// -O -C no-prepopulate-passes added to work around https://bugs.llvm.org/show_bug.cgi?id=32123
//@ compile-flags:-g

// This test checks that drop glue code gets attributed to scope's closing brace,
// and function epilogues - to function's closing brace.
Expand Down
6 changes: 2 additions & 4 deletions tests/debuginfo/function-arg-initialization.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
//@ ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155
//@ min-lldb-version: 310

// This test case checks if function arguments already have the correct value
// when breaking at the first line of the function, that is if the function
// prologue has already been executed at the first line. Note that because of
// the __morestack part of the prologue GDB incorrectly breaks at before the
// arguments have been properly loaded when setting the breakpoint via the
// function name.

//@ compile-flags:-g
//@ min-lldb-version: 1800
//@ compile-flags:-g -Zmir-enable-passes=-SingleUseConsts

// === GDB TESTS ===================================================================================

Expand Down
3 changes: 1 addition & 2 deletions tests/debuginfo/function-prologue-stepping-regular.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// This test case checks if function arguments already have the correct value when breaking at the
// beginning of a function.

//@ min-lldb-version: 310
//@ min-lldb-version: 1800
//@ ignore-gdb
//@ ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155
//@ compile-flags:-g

// lldb-command:breakpoint set --name immediate_args
Expand Down
1 change: 0 additions & 1 deletion tests/debuginfo/lexical-scopes-in-block-expression.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//@ min-lldb-version: 310
//@ ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155

//@ compile-flags:-g

Expand Down
1 change: 0 additions & 1 deletion tests/debuginfo/limited-debuginfo.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//@ ignore-lldb
//@ ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155

//@ compile-flags:-C debuginfo=1

Expand Down
3 changes: 1 addition & 2 deletions tests/debuginfo/macro-stepping.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
//@ ignore-android
//@ ignore-aarch64
//@ min-lldb-version: 310
//@ ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155

//@ aux-build:macro-stepping.rs

Expand All @@ -11,7 +10,7 @@
#[macro_use]
extern crate macro_stepping; // exports new_scope!()

//@ compile-flags:-g
//@ compile-flags:-g -Zmir-enable-passes=-SingleUseConsts

// === GDB TESTS ===================================================================================

Expand Down
3 changes: 1 addition & 2 deletions tests/debuginfo/method-on-enum.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//@ min-lldb-version: 310
//@ ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155
//@ min-lldb-version: 1800

//@ compile-flags:-g

Expand Down
10 changes: 4 additions & 6 deletions tests/debuginfo/option-like-enum.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
//@ ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155

//@ min-lldb-version: 310
//@ min-lldb-version: 1800

//@ compile-flags:-g

Expand All @@ -22,19 +20,19 @@

// gdbg-command:print empty_gdb->discr
// gdbr-command:print empty_gdb.discr
// gdb-check:$4 = (isize *) 0x0
// gdb-check:$4 = (*mut isize) 0x1

// gdb-command:print droid
// gdbg-check:$5 = {RUST$ENCODED$ENUM$2$Void = {id = 675675, range = 10000001, internals = 0x43218765}}
// gdbr-check:$5 = option_like_enum::NamedFields::Droid{id: 675675, range: 10000001, internals: 0x43218765}

// gdbg-command:print void_droid_gdb->internals
// gdbr-command:print void_droid_gdb.internals
// gdb-check:$6 = (isize *) 0x0
// gdb-check:$6 = (*mut isize) 0x1

// gdb-command:print nested_non_zero_yep
// gdbg-check:$7 = {RUST$ENCODED$ENUM$1$2$Nope = {__0 = 10.5, __1 = {a = 10, b = 20, c = [...]}}}
// gdbr-check:$7 = option_like_enum::NestedNonZero::Yep(10.5, option_like_enum::NestedNonZeroField {a: 10, b: 20, c: 0x[...] "x[...]"})
// gdbr-check:$7 = option_like_enum::NestedNonZero::Yep(10.5, option_like_enum::NestedNonZeroField {a: 10, b: 20, c: 0x[...]})

// gdb-command:print nested_non_zero_nope
// gdbg-check:$8 = {RUST$ENCODED$ENUM$1$2$Nope = {__0 = [...], __1 = {a = [...], b = [...], c = 0x0}}}
Expand Down
1 change: 1 addition & 0 deletions tests/debuginfo/pretty-std-collections.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//@ ignore-windows failing on win32 bot
//@ ignore-freebsd: gdb package too new
//@ ignore-android: FIXME(#10381)
//@ ignore-windows-gnu: pretty printers aren't loaded
//@ compile-flags:-g

// The pretty printers being tested here require the patch from
Expand Down
28 changes: 14 additions & 14 deletions tests/debuginfo/pretty-std.rs
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
// ignore-tidy-linelength
//@ ignore-freebsd: gdb package too new
//@ only-cdb // "Temporarily" ignored on GDB/LLDB due to debuginfo tests being disabled, see PR 47155
//@ ignore-windows-gnu: pretty-printers are not loaded
//@ ignore-android: FIXME(#10381)
//@ compile-flags:-g
//@ min-gdb-version: 7.7
//@ min-lldb-version: 310
//@ min-lldb-version: 1800
//@ min-cdb-version: 10.0.18317.1001

// === GDB TESTS ===================================================================================

// gdb-command: run

// gdb-command: print slice
// gdb-check:$1 = &[i32](len: 4) = {0, 1, 2, 3}
// gdb-check:$1 = &[i32](size=4) = {0, 1, 2, 3}

// gdb-command: print vec
// gdb-check:$2 = Vec<u64, alloc::alloc::Global>(len: 4, cap: [...]) = {4, 5, 6, 7}
// gdb-check:$2 = Vec(size=4) = {4, 5, 6, 7}

// gdb-command: print str_slice
// gdb-check:$3 = "IAMA string slice!"
Expand All @@ -24,37 +24,37 @@
// gdb-check:$4 = "IAMA string!"

// gdb-command: print some
// gdb-check:$5 = Some = {8}
// gdb-check:$5 = core::option::Option<i16>::Some(8)

// gdb-command: print none
// gdbg-check:$6 = None
// gdbr-check:$6 = core::option::Option::None
// gdbr-check:$6 = core::option::Option<i64>::None

// gdb-command: print os_string
// gdb-check:$7 = "IAMA OS string 😃"

// gdb-command: print some_string
// gdb-check:$8 = Some = {"IAMA optional string!"}
// gdb-check:$8 = core::option::Option<alloc::string::String>::Some("IAMA optional string!")

// gdb-command: set print length 5
// gdb-command: set print elements 5
// gdb-command: print some_string
// gdb-check:$8 = Some = {"IAMA "...}
// gdb-check:$9 = core::option::Option<alloc::string::String>::Some("IAMA "...)

// === LLDB TESTS ==================================================================================

// lldb-command:run

// lldb-command:v slice
// lldb-check:[...] slice = &[0, 1, 2, 3]
// lldb-check:[...] slice = size=4 { [0] = 0 [1] = 1 [2] = 2 [3] = 3 }

// lldb-command:v vec
// lldb-check:[...] vec = vec![4, 5, 6, 7]
// lldb-check:[...] vec = size=4 { [0] = 4 [1] = 5 [2] = 6 [3] = 7 }

// lldb-command:v str_slice
// lldb-check:[...] str_slice = "IAMA string slice!"
// lldb-check:[...] str_slice = "IAMA string slice!" { [0] = 'I' [1] = 'A' [2] = 'M' [3] = 'A' [4] = ' ' [5] = 's' [6] = 't' [7] = 'r' [8] = 'i' [9] = 'n' [10] = 'g' [11] = ' ' [12] = 's' [13] = 'l' [14] = 'i' [15] = 'c' [16] = 'e' [17] = '!' }

// lldb-command:v string
// lldb-check:[...] string = "IAMA string!"
// lldb-check:[...] string = "IAMA string!" { vec = size=12 { [0] = 'I' [1] = 'A' [2] = 'M' [3] = 'A' [4] = ' ' [5] = 's' [6] = 't' [7] = 'r' [8] = 'i' [9] = 'n' [10] = 'g' [11] = '!' } }

// lldb-command:v some
// lldb-check:[...] some = Some(8)
Expand All @@ -63,7 +63,7 @@
// lldb-check:[...] none = None

// lldb-command:v os_string
// lldb-check:[...] os_string = "IAMA OS string 😃"[...]
// lldb-check:[...] os_string = "IAMA OS string 😃" { inner = { inner = size=19 { [0] = 'I' [1] = 'A' [2] = 'M' [3] = 'A' [4] = ' ' [5] = 'O' [6] = 'S' [7] = ' ' [8] = 's' [9] = 't' [10] = 'r' [11] = 'i' [12] = 'n' [13] = 'g' [14] = ' ' [15] = '\xf0' [16] = '\x9f' [17] = '\x98' [18] = '\x83' } } }

// === CDB TESTS ==================================================================================

Expand Down
1 change: 0 additions & 1 deletion tests/debuginfo/simple-struct.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//@ min-lldb-version: 310
//@ ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155

//@ compile-flags: -g -Zmir-enable-passes=-CheckAlignment

Expand Down
1 change: 0 additions & 1 deletion tests/debuginfo/simple-tuple.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//@ min-lldb-version: 310
//@ ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155

//@ compile-flags:-g

Expand Down
3 changes: 1 addition & 2 deletions tests/debuginfo/struct-in-enum.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
//@ min-lldb-version: 310
//@ min-lldb-version: 1800
//@ ignore-gdb-version: 7.11.90 - 7.12.9
//@ ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155

//@ compile-flags:-g

Expand Down
1 change: 0 additions & 1 deletion tests/debuginfo/union-smoke.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//@ min-lldb-version: 310
//@ ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155

//@ ignore-gdb-version: 7.11.90 - 7.12.9

Expand Down
1 change: 0 additions & 1 deletion tests/debuginfo/vec.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
//@ min-lldb-version: 310
//@ ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155

//@ compile-flags:-g

Expand Down

0 comments on commit 23e9c0f

Please sign in to comment.