diff --git a/src/etc/lldb_rust_formatters.py b/src/etc/lldb_rust_formatters.py index 2c651c90f82eb..fdc1c4fa0cc38 100644 --- a/src/etc/lldb_rust_formatters.py +++ b/src/etc/lldb_rust_formatters.py @@ -290,6 +290,8 @@ def render_element(i): def read_utf8_string(ptr_val, byte_count): + if byte_count == 0: + return '""' error = lldb.SBError() process = ptr_val.get_wrapped_value().GetProcess() data = process.ReadMemory(ptr_val.as_integer(), byte_count, error) diff --git a/src/test/debuginfo/pretty-std.rs b/src/test/debuginfo/pretty-std.rs index 82802eff08abb..7aaa867ac14bb 100644 --- a/src/test/debuginfo/pretty-std.rs +++ b/src/test/debuginfo/pretty-std.rs @@ -1,6 +1,5 @@ // ignore-windows failing on win32 bot // ignore-freebsd: gdb package too new -// ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155 // ignore-android: FIXME(#10381) // compile-flags:-g // min-gdb-version 7.7 @@ -23,45 +22,54 @@ // gdb-check:$4 = "IAMA string!" // gdb-command: print some -// gdb-check:$5 = Some = {8} +// gdbg-check:$5 = Some = {8} +// gdbr-check:$5 = core::option::Option::Some(8) // gdb-command: print none // gdbg-check:$6 = None -// gdbr-check:$6 = core::option::Option::None +// gdbr-check:$6 = core::option::Option::None // gdb-command: print os_string -// gdb-check:$7 = "IAMA OS string 😃" +// gdb-check:$7 = "IAMA OS string" // gdb-command: print some_string -// gdb-check:$8 = Some = {"IAMA optional string!"} +// gdbg-check:$8 = {RUST$ENCODED$ENUM$0$None = Some = {"IAMA optional string!"}} +// gdbr-check:$8 = core::option::Option::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 "...} +// gdbg-check:$9 = {RUST$ENCODED$ENUM$0$None = Some = {"IAMA "...}} +// gdbr-check:$9 = core::option::Option::Some("IAMA "...) +// gdb-command: print empty_str +// gdb-check:$10 = "" // === LLDB TESTS ================================================================================== // lldb-command: run -// lldb-command: print slice -// lldb-check:[...]$0 = &[0, 1, 2, 3] +// lldb-command: fr v slice +// lldb-check:[...]slice = &[0, 1, 2, 3] -// lldb-command: print vec -// lldb-check:[...]$1 = vec![4, 5, 6, 7] +// lldb-command: fr v vec +// lldb-check:[...]vec = vec![4, 5, 6, 7] -// lldb-command: print str_slice -// lldb-check:[...]$2 = "IAMA string slice!" +// lldb-command: fr v str_slice +// lldb-check:[...]str_slice = "IAMA string slice!" -// lldb-command: print string -// lldb-check:[...]$3 = "IAMA string!" +// lldb-command: fr v string +// lldb-check:[...]string = "IAMA string!" -// lldb-command: print some -// lldb-check:[...]$4 = Some(8) +// FIXME #58492 +// lldb-command: fr v some +// lldb-check:[...]some = Option { } -// lldb-command: print none -// lldb-check:[...]$5 = None +// FIXME #58492 +// lldb-command: fr v none +// lldb-check:[...]none = Option { } +// lldb-command: fr v empty_str +// lldb-check:[...]empty_str = "" #![allow(unused_variables)] use std::ffi::OsString; @@ -82,7 +90,7 @@ fn main() { let string = "IAMA string!".to_string(); // OsString - let os_string = OsString::from("IAMA OS string \u{1F603}"); + let os_string = OsString::from("IAMA OS string"); // Option let some = Some(8i16); @@ -90,6 +98,8 @@ fn main() { let some_string = Some("IAMA optional string!".to_owned()); + let empty_str = ""; + zzz(); // #break }