Change char
type in debuginfo to DW_ATE_UTF
Rust previously encoded the `char` type as DW_ATE_unsigned_char. The more appropriate encoding is DW_ATE_UTF. Clang uses this same debug encoding for char32_t. This fixes the display of `char` types in Windows debuggers as well as LLDB.
This commit is contained in:
parent
c651ba8a54
commit
be454f056f
@ -87,7 +87,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
#[allow(non_upper_case_globals)]
|
||||
const DW_ATE_unsigned: c_uint = 0x07;
|
||||
#[allow(non_upper_case_globals)]
|
||||
const DW_ATE_unsigned_char: c_uint = 0x08;
|
||||
const DW_ATE_UTF: c_uint = 0x10;
|
||||
|
||||
pub const UNKNOWN_LINE_NUMBER: c_uint = 0;
|
||||
pub const UNKNOWN_COLUMN_NUMBER: c_uint = 0;
|
||||
@ -933,7 +933,7 @@ fn basic_type_metadata<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>, t: Ty<'tcx>) -> &'l
|
||||
ty::Never => ("!", DW_ATE_unsigned),
|
||||
ty::Tuple(elements) if elements.is_empty() => ("()", DW_ATE_unsigned),
|
||||
ty::Bool => ("bool", DW_ATE_boolean),
|
||||
ty::Char => ("char", DW_ATE_unsigned_char),
|
||||
ty::Char => ("char", DW_ATE_UTF),
|
||||
ty::Int(int_ty) if cpp_like_debuginfo => (int_ty.msvc_basic_name(), DW_ATE_signed),
|
||||
ty::Uint(uint_ty) if cpp_like_debuginfo => (uint_ty.msvc_basic_name(), DW_ATE_unsigned),
|
||||
ty::Float(float_ty) if cpp_like_debuginfo => (float_ty.msvc_basic_name(), DW_ATE_float),
|
||||
|
@ -104,7 +104,8 @@
|
||||
// cdb-check:b : false [Type: bool]
|
||||
// cdb-command:dx i
|
||||
// cdb-check:i : -1 [Type: [...]]
|
||||
// The variable 'c' doesn't appear for some reason...
|
||||
// cdb-command:dx c
|
||||
// cdb-check:c : 0x61 'a' [Type: char32_t]
|
||||
// cdb-command:dx i8
|
||||
// cdb-check:i8 : 68 [Type: char]
|
||||
// cdb-command:dx i16
|
||||
|
@ -14,8 +14,7 @@
|
||||
// gdb-check:$2 = -1
|
||||
|
||||
// gdb-command:print *char_ref
|
||||
// gdbg-check:$3 = 97
|
||||
// gdbr-check:$3 = 97 'a'
|
||||
// gdb-check:$3 = 97
|
||||
|
||||
// gdb-command:print *i8_ref
|
||||
// gdbg-check:$4 = 68 'D'
|
||||
|
@ -16,8 +16,7 @@
|
||||
// gdb-check:$2 = -1
|
||||
|
||||
// gdb-command:print *char_ref
|
||||
// gdbg-check:$3 = 97
|
||||
// gdbr-check:$3 = 97 'a'
|
||||
// gdb-check:$3 = 97
|
||||
|
||||
// gdb-command:print/d *i8_ref
|
||||
// gdb-check:$4 = 68
|
||||
|
Loading…
Reference in New Issue
Block a user