From de2dd3ce66ed3713ae2ec49339760a48e4f83381 Mon Sep 17 00:00:00 2001 From: ortem Date: Wed, 1 Apr 2020 13:38:04 +0300 Subject: [PATCH] WIP: Fix LLDB pretty-printers tests --- src/ci/azure-pipelines/pr.yml | 22 +++++++++---- src/etc/lldb_commands | 18 +++++++++++ src/etc/rust-lldb | 8 +---- src/test/debuginfo/borrowed-struct.rs | 12 +++---- src/test/debuginfo/borrowed-tuple.rs | 12 +++---- src/test/debuginfo/box.rs | 4 +-- src/test/debuginfo/boxed-struct.rs | 8 ++--- .../by-value-self-argument-in-trait-impl.rs | 8 ++--- .../debuginfo/c-style-enum-in-composite.rs | 29 +++++++++-------- src/test/debuginfo/cross-crate-spans.rs | 8 ++--- .../debuginfo/destructured-fn-argument.rs | 32 +++++++++---------- .../destructured-for-loop-variable.rs | 8 ++--- src/test/debuginfo/destructured-local.rs | 32 +++++++++---------- src/test/debuginfo/empty-string.rs | 4 +-- src/test/debuginfo/evec-in-struct.rs | 20 ++++++------ src/test/debuginfo/generic-function.rs | 12 +++---- src/tools/compiletest/src/runtest.rs | 25 +++++++++++++-- 17 files changed, 153 insertions(+), 109 deletions(-) create mode 100644 src/etc/lldb_commands diff --git a/src/ci/azure-pipelines/pr.yml b/src/ci/azure-pipelines/pr.yml index 37c1779b7995b..d5b6b6231a97d 100644 --- a/src/ci/azure-pipelines/pr.yml +++ b/src/ci/azure-pipelines/pr.yml @@ -21,15 +21,25 @@ variables: - group: public-credentials jobs: -- job: Linux +- job: macOS timeoutInMinutes: 600 pool: - vmImage: ubuntu-16.04 + vmImage: macos-10.15 steps: - template: steps/run.yml strategy: matrix: - x86_64-gnu-llvm-7: {} - mingw-check: {} - x86_64-gnu-tools: - CI_ONLY_WHEN_SUBMODULES_CHANGED: 1 + # OSX builders running tests, these run the full test suite. + # NO_DEBUG_ASSERTIONS=1 to make them go faster, but also do have some + # runners that run `//ignore-debug` tests. + # + # Note that the compiler is compiled to target 10.8 here because the Xcode + # version that we're using, 8.2, cannot compile LLVM for OSX 10.7. + x86_64-apple: + SCRIPT: ./x.py test + INITIAL_RUST_CONFIGURE_ARGS: --build=x86_64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc + RUSTC_RETRY_LINKER_ON_SEGFAULT: 1 + MACOSX_DEPLOYMENT_TARGET: 10.8 + MACOSX_STD_DEPLOYMENT_TARGET: 10.7 + NO_LLVM_ASSERTIONS: 1 + NO_DEBUG_ASSERTIONS: 1 diff --git a/src/etc/lldb_commands b/src/etc/lldb_commands new file mode 100644 index 0000000000000..6d6724cf19297 --- /dev/null +++ b/src/etc/lldb_commands @@ -0,0 +1,18 @@ +command script import \"$RUSTC_SYSROOT/lib/rustlib/etc/lldb_lookup.py\" +type synthetic add -l lldb_lookup.synthetic_lookup -x \".*\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(alloc::(\\w+::)+)String$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^&str$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(std::ffi::(\\w+::)+)OsString$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(alloc::(\\w+::)+)Vec<.+>$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(alloc::(\\w+::)+)VecDeque<.+>$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(alloc::(\\w+::)+)BTreeSet<.+>$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(alloc::(\\w+::)+)BTreeMap<.+>$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(std::collections::(\\w+::)+)HashMap<.+>$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(std::collections::(\\w+::)+)HashSet<.+>$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(alloc::(\\w+::)+)Rc<.+>$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(alloc::(\\w+::)+)Arc<.+>$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(core::(\\w+::)+)Cell<.+>$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(core::(\\w+::)+)Ref<.+>$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(core::(\\w+::)+)RefMut<.+>$\" --category Rust +type summary add -F lldb_lookup.summary_lookup -e -x -h \"^(core::(\\w+::)+)RefCell<.+>$\" --category Rust +type category enable Rust diff --git a/src/etc/rust-lldb b/src/etc/rust-lldb index 1364e20fb1cd5..28b32ef1ad532 100755 --- a/src/etc/rust-lldb +++ b/src/etc/rust-lldb @@ -30,11 +30,5 @@ EOF fi fi -# Prepare commands that will be loaded before any file on the command line has been loaded -script_import="command script import \"$RUSTC_SYSROOT/lib/rustlib/etc/lldb_lookup.py\"" -synthetic_definition="type synthetic add -l lldb_lookup.synthetic_lookup -x \".*\" --category Rust" -summary_definition="type summary add -F lldb_lookup.summary_lookup -e -x -h \".*\" --category Rust" -category_enable="type category enable Rust" - # Call LLDB with the commands added to the argument list -exec "$lldb" -O "$script_import" -O "$synthetic_definition" -O "$summary_definition" -O "$category_enable" "$@" +exec "$lldb" --source-before-file ./lldb_commands "$@" diff --git a/src/test/debuginfo/borrowed-struct.rs b/src/test/debuginfo/borrowed-struct.rs index 3a164a41101b5..7f97d96b8db93 100644 --- a/src/test/debuginfo/borrowed-struct.rs +++ b/src/test/debuginfo/borrowed-struct.rs @@ -35,8 +35,8 @@ // lldb-command:run // lldb-command:print *stack_val_ref -// lldbg-check:[...]$0 = SomeStruct { x: 10, y: 23.5 } -// lldbr-check:(borrowed_struct::SomeStruct) *stack_val_ref = SomeStruct { x: 10, y: 23.5 } +// lldbg-check:[...]$0 = { x = 10 y = 23.5 } +// lldbr-check:(borrowed_struct::SomeStruct) *stack_val_ref = (x = 10, y = 23.5) // lldb-command:print *stack_val_interior_ref_1 // lldbg-check:[...]$1 = 10 @@ -47,12 +47,12 @@ // lldbr-check:(f64) *stack_val_interior_ref_2 = 23.5 // lldb-command:print *ref_to_unnamed -// lldbg-check:[...]$3 = SomeStruct { x: 11, y: 24.5 } -// lldbr-check:(borrowed_struct::SomeStruct) *ref_to_unnamed = SomeStruct { x: 11, y: 24.5 } +// lldbg-check:[...]$3 = { x = 11 y = 24.5 } +// lldbr-check:(borrowed_struct::SomeStruct) *ref_to_unnamed = (x = 11, y = 24.5) // lldb-command:print *unique_val_ref -// lldbg-check:[...]$4 = SomeStruct { x: 13, y: 26.5 } -// lldbr-check:(borrowed_struct::SomeStruct) *unique_val_ref = SomeStruct { x: 13, y: 26.5 } +// lldbg-check:[...]$4 = { x = 13 y = 26.5 } +// lldbr-check:(borrowed_struct::SomeStruct) *unique_val_ref = (x = 13, y = 26.5) // lldb-command:print *unique_val_interior_ref_1 // lldbg-check:[...]$5 = 13 diff --git a/src/test/debuginfo/borrowed-tuple.rs b/src/test/debuginfo/borrowed-tuple.rs index fc92b629ef369..be4895ef5363e 100644 --- a/src/test/debuginfo/borrowed-tuple.rs +++ b/src/test/debuginfo/borrowed-tuple.rs @@ -24,16 +24,16 @@ // lldb-command:run // lldb-command:print *stack_val_ref -// lldbg-check:[...]$0 = (-14, -19) -// lldbr-check:((i16, f32)) *stack_val_ref = { = -14 = -19 } +// lldbg-check:[...]$0 = { 0 = -14 1 = -19 } +// lldbr-check:((i16, f32)) *stack_val_ref = { 0 = -14 1 = -19 } // lldb-command:print *ref_to_unnamed -// lldbg-check:[...]$1 = (-15, -20) -// lldbr-check:((i16, f32)) *ref_to_unnamed = { = -15 = -20 } +// lldbg-check:[...]$1 = { 0 = -15 1 = -20 } +// lldbr-check:((i16, f32)) *ref_to_unnamed = { 0 = -15 1 = -20 } // lldb-command:print *unique_val_ref -// lldbg-check:[...]$2 = (-17, -22) -// lldbr-check:((i16, f32)) *unique_val_ref = { = -17 = -22 } +// lldbg-check:[...]$2 = { 0 = -17 1 = -22 } +// lldbr-check:((i16, f32)) *unique_val_ref = { 0 = -17 1 = -22 } #![allow(unused_variables)] diff --git a/src/test/debuginfo/box.rs b/src/test/debuginfo/box.rs index a539d78d3c997..e443b67ebfb31 100644 --- a/src/test/debuginfo/box.rs +++ b/src/test/debuginfo/box.rs @@ -20,8 +20,8 @@ // lldbg-check:[...]$0 = 1 // lldbr-check:(i32) *a = 1 // lldb-command:print *b -// lldbg-check:[...]$1 = (2, 3.5) -// lldbr-check:((i32, f64)) *b = { = 2 = 3.5 } +// lldbg-check:[...]$1 = { 0 = 2 1 = 3.5 } +// lldbr-check:((i32, f64)) *b = { 0 = 2 1 = 3.5 } #![allow(unused_variables)] #![feature(box_syntax)] diff --git a/src/test/debuginfo/boxed-struct.rs b/src/test/debuginfo/boxed-struct.rs index 8709fb681704b..04bdf72890135 100644 --- a/src/test/debuginfo/boxed-struct.rs +++ b/src/test/debuginfo/boxed-struct.rs @@ -22,12 +22,12 @@ // lldb-command:run // lldb-command:print *boxed_with_padding -// lldbg-check:[...]$0 = StructWithSomePadding { x: 99, y: 999, z: 9999, w: 99999 } -// lldbr-check:(boxed_struct::StructWithSomePadding) *boxed_with_padding = StructWithSomePadding { x: 99, y: 999, z: 9999, w: 99999 } +// lldbg-check:[...]$0 = { x = 99 y = 999 z = 9999 w = 99999 } +// lldbr-check:(boxed_struct::StructWithSomePadding) *boxed_with_padding = { x = 99 y = 999 z = 9999 w = 99999 } // lldb-command:print *boxed_with_dtor -// lldbg-check:[...]$1 = StructWithDestructor { x: 77, y: 777, z: 7777, w: 77777 } -// lldbr-check:(boxed_struct::StructWithDestructor) *boxed_with_dtor = StructWithDestructor { x: 77, y: 777, z: 7777, w: 77777 } +// lldbg-check:[...]$1 = { x = 77 y = 777 z = 7777 w = 77777 } +// lldbr-check:(boxed_struct::StructWithDestructor) *boxed_with_dtor = { x = 77 y = 777 z = 7777 w = 77777 } #![allow(unused_variables)] #![feature(box_syntax)] diff --git a/src/test/debuginfo/by-value-self-argument-in-trait-impl.rs b/src/test/debuginfo/by-value-self-argument-in-trait-impl.rs index deba18cc44ab4..e60cfc9242aa1 100644 --- a/src/test/debuginfo/by-value-self-argument-in-trait-impl.rs +++ b/src/test/debuginfo/by-value-self-argument-in-trait-impl.rs @@ -31,13 +31,13 @@ // lldb-command:continue // lldb-command:print self -// lldbg-check:[...]$1 = Struct { x: 2222, y: 3333 } -// lldbr-check:(by_value_self_argument_in_trait_impl::Struct) self = Struct { x: 2222, y: 3333 } +// lldbg-check:[...]$1 = { x = 2222 y = 3333 } +// lldbr-check:(by_value_self_argument_in_trait_impl::Struct) self = { x = 2222 y = 3333 } // lldb-command:continue // lldb-command:print self -// lldbg-check:[...]$2 = (4444.5, 5555, 6666, 7777.5) -// lldbr-check:((f64, isize, isize, f64)) self = { = 4444.5 = 5555 = 6666 = 7777.5 } +// lldbg-check:[...] $2 = { 0 = 4444.5 1 = 5555 2 = 6666 3 = 7777.5 } +// lldbr-check:((f64, isize, isize, f64)) self = { 0 = 4444.5 1 = 5555 2 = 6666 3 = 7777.5 } // lldb-command:continue #![feature(omit_gdb_pretty_printer_section)] diff --git a/src/test/debuginfo/c-style-enum-in-composite.rs b/src/test/debuginfo/c-style-enum-in-composite.rs index 8a356f62d3c2b..4feec7d4f11dc 100644 --- a/src/test/debuginfo/c-style-enum-in-composite.rs +++ b/src/test/debuginfo/c-style-enum-in-composite.rs @@ -40,31 +40,32 @@ // lldb-command:run // lldb-command:print tuple_interior_padding -// lldbg-check:[...]$0 = (0, OneHundred) -// lldbr-check:((i16, c_style_enum_in_composite::AnEnum)) tuple_interior_padding = { = 0 = c_style_enum_in_composite::AnEnum::OneHundred } +// lldbg-check:[...]$0 = { 0 = 0 1 = OneHundred } +// lldbr-check:((i16, c_style_enum_in_composite::AnEnum)) tuple_interior_padding = { 0 = 0 1 = OneHundred } // lldb-command:print tuple_padding_at_end -// lldbg-check:[...]$1 = ((1, OneThousand), 2) -// lldbr-check:(((u64, c_style_enum_in_composite::AnEnum), u64)) tuple_padding_at_end = { = { = 1 = c_style_enum_in_composite::AnEnum::OneThousand } = 2 } +// lldbg-check:[...]$1 = { 0 = { 0 = 1 1 = OneThousand } 1 = 2 } +// lldbr-check:(((u64, c_style_enum_in_composite::AnEnum), u64)) tuple_padding_at_end = { 0 = { 0 = 1 1 = OneThousand } 1 = 2 } + // lldb-command:print tuple_different_enums -// lldbg-check:[...]$2 = (OneThousand, MountainView, OneMillion, Vienna) -// lldbr-check:((c_style_enum_in_composite::AnEnum, c_style_enum_in_composite::AnotherEnum, c_style_enum_in_composite::AnEnum, c_style_enum_in_composite::AnotherEnum)) tuple_different_enums = { = c_style_enum_in_composite::AnEnum::OneThousand = c_style_enum_in_composite::AnotherEnum::MountainView = c_style_enum_in_composite::AnEnum::OneMillion = c_style_enum_in_composite::AnotherEnum::Vienna } +// lldbg-check:[...]$2 = { 0 = OneThousand 1 = MountainView 2 = OneMillion 3 = Vienna } +// lldbr-check:((c_style_enum_in_composite::AnEnum, c_style_enum_in_composite::AnotherEnum, c_style_enum_in_composite::AnEnum, c_style_enum_in_composite::AnotherEnum)) tuple_different_enums = { 0 = c_style_enum_in_composite::AnEnum::OneThousand 1 = c_style_enum_in_composite::AnotherEnum::MountainView 2 = c_style_enum_in_composite::AnEnum::OneMillion 3 = c_style_enum_in_composite::AnotherEnum::Vienna } // lldb-command:print padded_struct -// lldbg-check:[...]$3 = PaddedStruct { a: 3, b: OneMillion, c: 4, d: Toronto, e: 5 } -// lldbr-check:(c_style_enum_in_composite::PaddedStruct) padded_struct = PaddedStruct { a: 3, b: c_style_enum_in_composite::AnEnum::OneMillion, c: 4, d: c_style_enum_in_composite::AnotherEnum::Toronto, e: 5 } +// lldbg-check:[...]$3 = { a = 3 b = OneMillion c = 4 d = Toronto e = 5 } +// lldbr-check:(c_style_enum_in_composite::PaddedStruct) padded_struct = { a = 3 b = c_style_enum_in_composite::AnEnum::OneMillion c = 4 d = Toronto e = 5 } // lldb-command:print packed_struct -// lldbg-check:[...]$4 = PackedStruct { a: 6, b: OneHundred, c: 7, d: Vienna, e: 8 } -// lldbr-check:(c_style_enum_in_composite::PackedStruct) packed_struct = PackedStruct { a: 6, b: c_style_enum_in_composite::AnEnum::OneHundred, c: 7, d: c_style_enum_in_composite::AnotherEnum::Vienna, e: 8 } +// lldbg-check:[...]$4 = { a = 6 b = OneHundred c = 7 d = Vienna e = 8 } +// lldbr-check:(c_style_enum_in_composite::PackedStruct) packed_struct = { a = 6 b = c_style_enum_in_composite::AnEnum::OneHundred c = 7 d = Vienna e = 8 } // lldb-command:print non_padded_struct -// lldbg-check:[...]$5 = NonPaddedStruct { a: OneMillion, b: MountainView, c: OneThousand, d: Toronto } -// lldbr-check:(c_style_enum_in_composite::NonPaddedStruct) non_padded_struct = NonPaddedStruct { a: c_style_enum_in_composite::AnEnum::OneMillion, b: c_style_enum_in_composite::AnotherEnum::MountainView, c: c_style_enum_in_composite::AnEnum::OneThousand, d: c_style_enum_in_composite::AnotherEnum::Toronto } +// lldbg-check:[...]$5 = { a = OneMillion b = MountainView c = OneThousand d = Toronto } +// lldbr-check:(c_style_enum_in_composite::NonPaddedStruct) non_padded_struct = { a = c_style_enum_in_composite::AnEnum::OneMillion, b = c_style_enum_in_composite::AnotherEnum::MountainView, c = c_style_enum_in_composite::AnEnum::OneThousand, d = c_style_enum_in_composite::AnotherEnum::Toronto } // lldb-command:print struct_with_drop -// lldbg-check:[...]$6 = (StructWithDrop { a: OneHundred, b: Vienna }, 9) -// lldbr-check:((c_style_enum_in_composite::StructWithDrop, i64)) struct_with_drop = { = StructWithDrop { a: c_style_enum_in_composite::AnEnum::OneHundred, b: c_style_enum_in_composite::AnotherEnum::Vienna } = 9 } +// lldbg-check:[...]$6 = { 0 = { a = OneHundred b = Vienna } 1 = 9 } +// lldbr-check:((c_style_enum_in_composite::StructWithDrop, i64)) struct_with_drop = { 0 = { a = c_style_enum_in_composite::AnEnum::OneHundred b = c_style_enum_in_composite::AnotherEnum::Vienna } 1 = 9 } #![allow(unused_variables)] #![feature(omit_gdb_pretty_printer_section)] diff --git a/src/test/debuginfo/cross-crate-spans.rs b/src/test/debuginfo/cross-crate-spans.rs index 96ddfd2a39ed0..7c58e1db23f35 100644 --- a/src/test/debuginfo/cross-crate-spans.rs +++ b/src/test/debuginfo/cross-crate-spans.rs @@ -44,8 +44,8 @@ extern crate cross_crate_spans; // lldb-command:run // lldb-command:print result -// lldbg-check:[...]$0 = (17, 17) -// lldbr-check:((u32, u32)) result = { = 17 = 17 } +// lldbg-check:[...]$0 = { 0 = 17 1 = 17 } +// lldbr-check:((u32, u32)) result = { 0 = 17 1 = 17 } // lldb-command:print a_variable // lldbg-check:[...]$1 = 123456789 // lldbr-check:(u32) a_variable = 123456789 @@ -55,8 +55,8 @@ extern crate cross_crate_spans; // lldb-command:continue // lldb-command:print result -// lldbg-check:[...]$3 = (1212, 1212) -// lldbr-check:((i16, i16)) result = { = 1212 = 1212 } +// lldbg-check:[...]$3 = { 0 = 1212 1 = 1212 } +// lldbr-check:((i16, i16)) result = { 0 = 1212 1 = 1212 } // lldb-command:print a_variable // lldbg-check:[...]$4 = 123456789 // lldbr-check:(u32) a_variable = 123456789 diff --git a/src/test/debuginfo/destructured-fn-argument.rs b/src/test/debuginfo/destructured-fn-argument.rs index 64133dc6860ab..8cc20e00fae95 100644 --- a/src/test/debuginfo/destructured-fn-argument.rs +++ b/src/test/debuginfo/destructured-fn-argument.rs @@ -186,16 +186,16 @@ // lldbg-check:[...]$5 = 5 // lldbr-check:(isize) a = 5 // lldb-command:print b -// lldbg-check:[...]$6 = (6, 7) -// lldbr-check:((u32, u32)) b = { = 6 = 7 } +// lldbg-check:[...]$6 = { 0 = 6 1 = 7 } +// lldbr-check:((u32, u32)) b = { 0 = 6 1 = 7 } // lldb-command:continue // lldb-command:print h // lldbg-check:[...]$7 = 8 // lldbr-check:(i16) h = 8 // lldb-command:print i -// lldbg-check:[...]$8 = Struct { a: 9, b: 10 } -// lldbr-check:(destructured_fn_argument::Struct) i = Struct { a: 9, b: 10 } +// lldbg-check:[...]$8 = { 0 = 6 1 = 7 } +// lldbr-check:(destructured_fn_argument::Struct) i = { a = 9 b = 10 } // lldb-command:print j // lldbg-check:[...]$9 = 11 // lldbr-check:(i16) j = 11 @@ -229,8 +229,8 @@ // lldbg-check:[...]$16 = 20 // lldbr-check:(i32) q = 20 // lldb-command:print r -// lldbg-check:[...]$17 = Struct { a: 21, b: 22 } -// lldbr-check:(destructured_fn_argument::Struct) r = Struct { a: 21, b: 22 } +// lldbg-check:[...]$17 = { a = 21 b = 22 } +// lldbr-check:(destructured_fn_argument::Struct) r = { a = 21, b = 22 } // lldb-command:continue // lldb-command:print s @@ -271,13 +271,13 @@ // lldb-command:continue // lldb-command:print aa -// lldbg-check:[...]$29 = (34, 35) -// lldbr-check:((isize, isize)) aa = { = 34 = 35 } +// lldbg-check:[...]$29 = { 0 = 34 1 = 35 } +// lldbr-check:((isize, isize)) aa = { 0 = 34 1 = 35 } // lldb-command:continue // lldb-command:print bb -// lldbg-check:[...]$30 = (36, 37) -// lldbr-check:((isize, isize)) bb = { = 36 = 37 } +// lldbg-check:[...]$30 = { 0 = 36 1 = 37 } +// lldbr-check:((isize, isize)) bb = { 0 = 36 1 = 37 } // lldb-command:continue // lldb-command:print cc @@ -286,21 +286,21 @@ // lldb-command:continue // lldb-command:print dd -// lldbg-check:[...]$32 = (40, 41, 42) -// lldbr-check:((isize, isize, isize)) dd = { = 40 = 41 = 42 } +// lldbg-check:[...]$32 = { 0 = 40 1 = 41 2 = 42 } +// lldbr-check:((isize, isize, isize)) dd = { 0 = 40 1 = 41 2 = 42 } // lldb-command:continue // lldb-command:print *ee -// lldbg-check:[...]$33 = (43, 44, 45) -// lldbr-check:((isize, isize, isize)) *ee = { = 43 = 44 = 45 } +// lldbg-check:[...]$33 = { 0 = 43 1 = 44 2 = 45 } +// lldbr-check:((isize, isize, isize)) *ee = { 0 = 43 1 = 44 2 = 45 } // lldb-command:continue // lldb-command:print *ff // lldbg-check:[...]$34 = 46 // lldbr-check:(isize) *ff = 46 // lldb-command:print gg -// lldbg-check:[...]$35 = (47, 48) -// lldbr-check:((isize, isize)) gg = { = 47 = 48 } +// lldbg-check:[...]$35 = { 0 = 47 1 = 48 } +// lldbr-check:((isize, isize)) gg = { 0 = 47 1 = 48 } // lldb-command:continue // lldb-command:print *hh diff --git a/src/test/debuginfo/destructured-for-loop-variable.rs b/src/test/debuginfo/destructured-for-loop-variable.rs index dbb98322317e9..868f2285f3574 100644 --- a/src/test/debuginfo/destructured-for-loop-variable.rs +++ b/src/test/debuginfo/destructured-for-loop-variable.rs @@ -164,13 +164,13 @@ // lldb-command:continue // lldb-command:print simple_struct_ident -// lldbg-check:[...]$22 = Struct { x: 3537, y: 35437.5, z: true } -// lldbr-check:(destructured_for_loop_variable::Struct) simple_struct_ident = Struct { x: 3537, y: 35437.5, z: true } +// lldbg-check:[...]$22 = { x = 3537 y = 35437.5 z = true } +// lldbr-check:(destructured_for_loop_variable::Struct) simple_struct_ident = { x = 3537 y = 35437.5 z = true } // lldb-command:continue // lldb-command:print simple_tuple_ident -// lldbg-check:[...]$23 = (34903493, 232323) -// lldbr-check:((u32, i64)) simple_tuple_ident = { = 34903493 = 232323 } +// lldbg-check:[...]$23 = { 0 = 34903493 1 = 232323 } +// lldbr-check:((u32, i64)) simple_tuple_ident = { 0 = 34903493 1 = 232323 } // lldb-command:continue #![allow(unused_variables)] diff --git a/src/test/debuginfo/destructured-local.rs b/src/test/debuginfo/destructured-local.rs index 78b6b2764e050..712168b5baa87 100644 --- a/src/test/debuginfo/destructured-local.rs +++ b/src/test/debuginfo/destructured-local.rs @@ -150,15 +150,15 @@ // lldbg-check:[...]$5 = 5 // lldbr-check:(isize) f = 5 // lldb-command:print g -// lldbg-check:[...]$6 = (6, 7) -// lldbr-check:((u32, u32)) g = { = 6 = 7 } +// lldbg-check:[...]$6 = { 0 = 6 1 = 7 } +// lldbr-check:((u32, u32)) g = { 0 = 6 1 = 7 } // lldb-command:print h // lldbg-check:[...]$7 = 8 // lldbr-check:(i16) h = 8 // lldb-command:print i -// lldbg-check:[...]$8 = Struct { a: 9, b: 10 } -// lldbr-check:(destructured_local::Struct) i = Struct { a: 9, b: 10 } +// lldbg-check:[...]$8 = { a = 9 b = 10 } +// lldbr-check:(destructured_local::Struct) i = { a = 9 b = 10 } // lldb-command:print j // lldbg-check:[...]$9 = 11 // lldbr-check:(i16) j = 11 @@ -188,8 +188,8 @@ // lldbg-check:[...]$16 = 20 // lldbr-check:(i32) q = 20 // lldb-command:print r -// lldbg-check:[...]$17 = Struct { a: 21, b: 22 } -// lldbr-check:(destructured_local::Struct) r = Struct { a: 21, b: 22 } +// lldbg-check:[...]$17 = { a = 21 b = 22 } +// lldbr-check:(destructured_local::Struct) r = { a = 21 b = 22 } // lldb-command:print s // lldbg-check:[...]$18 = 24 @@ -227,32 +227,32 @@ // lldbr-check:(i32) ue = 33 // lldb-command:print aa -// lldbg-check:[...]$29 = (34, 35) -// lldbr-check:((i32, i32)) aa = { = 34 = 35 } +// lldbg-check:[...]$29 = { 0 = 34 1 = 35 } +// lldbr-check:((i32, i32)) aa = { 0 = 34 1 = 35 } // lldb-command:print bb -// lldbg-check:[...]$30 = (36, 37) -// lldbr-check:((i32, i32)) bb = { = 36 = 37 } +// lldbg-check:[...]$30 = { 0 = 36 1 = 37 } +// lldbr-check:((i32, i32)) bb = { 0 = 36 1 = 37 } // lldb-command:print cc // lldbg-check:[...]$31 = 38 // lldbr-check:(i32) cc = 38 // lldb-command:print dd -// lldbg-check:[...]$32 = (40, 41, 42) -// lldbr-check:((i32, i32, i32)) dd = { = 40 = 41 = 42 } +// lldbg-check:[...]$32 = { 0 = 40 1 = 41 2 = 42 } +// lldbr-check:((i32, i32, i32)) dd = { 0 = 40 1 = 41 2 = 42} // lldb-command:print *ee -// lldbg-check:[...]$33 = (43, 44, 45) -// lldbr-check:((i32, i32, i32)) *ee = { = 43 = 44 = 45 } +// lldbg-check:[...]$33 = { 0 = 43 1 = 44 2 = 45 } +// lldbr-check:((i32, i32, i32)) *ee = { 0 = 43 1 = 44 2 = 45} // lldb-command:print *ff // lldbg-check:[...]$34 = 46 // lldbr-check:(i32) *ff = 46 // lldb-command:print gg -// lldbg-check:[...]$35 = (47, 48) -// lldbr-check:((i32, i32)) gg = { = 47 = 48 } +// lldbg-check:[...]$35 = { 0 = 47 1 = 48 } +// lldbr-check:((i32, i32)) gg = { 0 = 47 1 = 48 } // lldb-command:print *hh // lldbg-check:[...]$36 = 50 diff --git a/src/test/debuginfo/empty-string.rs b/src/test/debuginfo/empty-string.rs index bc4fac3183cea..a1028a6c05581 100644 --- a/src/test/debuginfo/empty-string.rs +++ b/src/test/debuginfo/empty-string.rs @@ -20,10 +20,10 @@ // lldb-command: run // lldb-command: fr v empty_string -// lldb-check:[...]empty_string = "" +// lldb-check:[...]empty_string = "" { vec = size=0 } // lldb-command: fr v empty_str -// lldb-check:[...]empty_str = "" +// lldb-check:[...]empty_str = "" { data_ptr = [...] length = 0 } fn main() { let empty_string = String::new(); diff --git a/src/test/debuginfo/evec-in-struct.rs b/src/test/debuginfo/evec-in-struct.rs index cf86374ab311b..2033966adad4c 100644 --- a/src/test/debuginfo/evec-in-struct.rs +++ b/src/test/debuginfo/evec-in-struct.rs @@ -33,23 +33,23 @@ // lldb-command:run // lldb-command:print no_padding1 -// lldbg-check:[...]$0 = NoPadding1 { x: [0, 1, 2], y: -3, z: [4.5, 5.5] } -// lldbr-check:(evec_in_struct::NoPadding1) no_padding1 = NoPadding1 { x: [0, 1, 2], y: -3, z: [4.5, 5.5] } +// lldbg-check:[...]$0 = { x = { [0] = 0 [1] = 1 [2] = 2 } y = -3 z = { [0] = 4.5 [1] = 5.5 } } +// lldbr-check:(evec_in_struct::NoPadding1) no_padding1 = { x = { [0] = 0 [1] = 1 [2] = 2 } y = -3 z = { [0] = 4.5 [1] = 5.5 } } // lldb-command:print no_padding2 -// lldbg-check:[...]$1 = NoPadding2 { x: [6, 7, 8], y: [[9, 10], [11, 12]] } -// lldbr-check:(evec_in_struct::NoPadding2) no_padding2 = NoPadding2 { x: [6, 7, 8], y: [[9, 10], [11, 12]] } +// lldbg-check:[...]$1 = { x = { [0] = 6 [1] = 7 [2] = 8 } y = { [0] = { [0] = 9 [1] = 10 } [1] = { [0] = 11 [1] = 12 } } } +// lldbr-check:(evec_in_struct::NoPadding2) no_padding2 = { x = { [0] = 6 [1] = 7 [2] = 8 } y = { [0] = { [0] = 9 [1] = 10 } [1] = { [0] = 11 [1] = 12 } } } // lldb-command:print struct_internal_padding -// lldbg-check:[...]$2 = StructInternalPadding { x: [13, 14], y: [15, 16] } -// lldbr-check:(evec_in_struct::StructInternalPadding) struct_internal_padding = StructInternalPadding { x: [13, 14], y: [15, 16] } +// lldbg-check:[...]$2 = { x = { [0] = 13 [1] = 14 } y = { [0] = 15 [1] = 16 } } +// lldbr-check:(evec_in_struct::StructInternalPadding) struct_internal_padding = { x = { [0] = 13 [1] = 14 } y = { [0] = 15 [1] = 16 } } // lldb-command:print single_vec -// lldbg-check:[...]$3 = SingleVec { x: [17, 18, 19, 20, 21] } -// lldbr-check:(evec_in_struct::SingleVec) single_vec = SingleVec { x: [17, 18, 19, 20, 21] } +// lldbg-check:[...]$3 = { x = { [0] = 17 [1] = 18 [2] = 19 [3] = 20 [4] = 21 } } +// lldbr-check:(evec_in_struct::SingleVec) single_vec = { x = { [0] = 17 [1] = 18 [2] = 19 [3] = 20 [4] = 21 } } // lldb-command:print struct_padded_at_end -// lldbg-check:[...]$4 = StructPaddedAtEnd { x: [22, 23], y: [24, 25] } -// lldbr-check:(evec_in_struct::StructPaddedAtEnd) struct_padded_at_end = StructPaddedAtEnd { x: [22, 23], y: [24, 25] } +// lldbg-check:[...]$4 = { x = { [0] = 22 [1] = 23 } y = { [0] = 24 [1] = 25 } } +// lldbr-check:(evec_in_struct::StructPaddedAtEnd) struct_padded_at_end = { x = { [0] = 22 [1] = 23 } y = { [0] = 24 [1] = 25 } } #![allow(unused_variables)] #![feature(omit_gdb_pretty_printer_section)] diff --git a/src/test/debuginfo/generic-function.rs b/src/test/debuginfo/generic-function.rs index 96f2aa3acf29b..63b8f0844a0af 100644 --- a/src/test/debuginfo/generic-function.rs +++ b/src/test/debuginfo/generic-function.rs @@ -48,7 +48,7 @@ // lldbg-check:[...]$1 = 2.5 // lldbr-check:(f64) *t1 = 2.5 // lldb-command:print ret -// lldbg-check:[...]$2 = ((1, 2.5), (2.5, 1)) +// lldbg-check:[...]$2 = { 0 = { 0 = 1 1 = 2.5 } 1 = { 0 = 2.5 1 = 1 } } // lldbr-check:(((i32, f64), (f64, i32))) ret = { = { = 1 = 2.5 } = { = 2.5 = 1 } } // lldb-command:continue @@ -59,7 +59,7 @@ // lldbg-check:[...]$4 = 4 // lldbr-check:(u16) *t1 = 4 // lldb-command:print ret -// lldbg-check:[...]$5 = ((3.5, 4), (4, 3.5)) +// lldbg-check:[...]$5 = { = { = 3.5 = 4 } = { = 4 = 3.5 } } // lldbr-check:(((f64, u16), (u16, f64))) ret = { = { = 3.5 = 4 } = { = 4 = 3.5 } } // lldb-command:continue @@ -67,11 +67,11 @@ // lldbg-check:[...]$6 = 5 // lldbr-check:(i32) *t0 = 5 // lldb-command:print *t1 -// lldbg-check:[...]$7 = Struct { a: 6, b: 7.5 } -// lldbr-check:(generic_function::Struct) *t1 = Struct { a: 6, b: 7.5 } +// lldbg-check:[...]$7 = { a = 6 b = 7.5 } +// lldbr-check:(generic_function::Struct) *t1 = { a = 6 b = 7.5 } // lldb-command:print ret -// lldbg-check:[...]$8 = ((5, Struct { a: 6, b: 7.5 }), (Struct { a: 6, b: 7.5 }, 5)) -// lldbr-check:(((i32, generic_function::Struct), (generic_function::Struct, i32))) ret = { = { = 5 = Struct { a: 6, b: 7.5 } } = { = Struct { a: 6, b: 7.5 } = 5 } } +// lldbg-check:[...]$8 = { 0 = { 0 = 5 1 = { a = 6 b = 7.5 } } 1 = { 0 = { a = 6 b = 7.5 } 1 = 5 } } +// lldbr-check:(((i32, generic_function::Struct), (generic_function::Struct, i32))) ret = { 0 = { 0 = 5 1 = { a = 6 b = 7.5 } } 1 = { 0 = { a = 6 b = 7.5 } 1 = 5 } } // lldb-command:continue #![feature(omit_gdb_pretty_printer_section)] diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index 2a3586222b774..3d1f08039ccb8 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -1082,12 +1082,33 @@ impl<'test> TestCx<'test> { let rust_pp_module_abs_path = rust_src_root.join(rust_pp_module_rel_path).to_str().unwrap().to_owned(); + let rust_type_regexes = vec![ + "^(alloc::(\\w+::)+)String$", + "^&str$", + "^(std::ffi::(\\w+::)+)OsString$", + "^(alloc::(\\w+::)+)Vec<.+>$", + "^(alloc::(\\w+::)+)VecDeque<.+>$", + "^(alloc::(\\w+::)+)BTreeSet<.+>$", + "^(alloc::(\\w+::)+)BTreeMap<.+>$", + "^(std::collections::(\\w+::)+)HashMap<.+>$", + "^(std::collections::(\\w+::)+)HashSet<.+>$", + "^(alloc::(\\w+::)+)Rc<.+>$", + "^(alloc::(\\w+::)+)Arc<.+>$", + "^(core::(\\w+::)+)Cell<.+>$", + "^(core::(\\w+::)+)Ref<.+>$", + "^(core::(\\w+::)+)RefMut<.+>$", + "^(core::(\\w+::)+)RefCell<.+>$", + ]; + script_str .push_str(&format!("command script import {}\n", &rust_pp_module_abs_path[..])[..]); script_str.push_str("type synthetic add -l lldb_lookup.synthetic_lookup -x '.*' "); script_str.push_str("--category Rust\n"); - script_str.push_str("type summary add -l lldb_lookup.summary_lookup -x '.*' "); - script_str.push_str("--category Rust\n"); + for type_regex in rust_type_regexes { + script_str.push_str("type summary add -F lldb_lookup.summary_lookup -e -x -h "); + script_str.push_str(&format!("'{}' ", type_regex)); + script_str.push_str("--category Rust\n"); + } script_str.push_str("type category enable Rust\n"); // Set breakpoints on every line that contains the string "#break"