mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
[debuginfo] Fix and unify handling of fat pointers in debuginfo: Change doc comment so it is not interpreted as doc-test.
This commit is contained in:
parent
3c61d2e172
commit
d33e317a72
@ -572,21 +572,21 @@ fn dyn_type_metadata<'ll, 'tcx>(
|
||||
|
||||
/// Create debuginfo for `[T]` and `str`. These are unsized.
|
||||
///
|
||||
/// Note: We currently emit just emit the debuginfo for the element type here
|
||||
/// (i.e. `T` for slices and `u8` for `str`), so that we end up with
|
||||
/// `*const T` for the `data_ptr` field of the corresponding fat-pointer
|
||||
/// debuginfo of `&[T]`.
|
||||
/// NOTE: We currently emit just emit the debuginfo for the element type here
|
||||
/// (i.e. `T` for slices and `u8` for `str`), so that we end up with
|
||||
/// `*const T` for the `data_ptr` field of the corresponding fat-pointer
|
||||
/// debuginfo of `&[T]`.
|
||||
///
|
||||
/// It would be preferable and more accurate if we emitted a DIArray of T
|
||||
/// without an upper bound instead. That is, LLVM already supports emitting
|
||||
/// debuginfo of arrays of unknown size. But GDB currently seems to end up
|
||||
/// in an infinite loop when confronted with such a type.
|
||||
/// It would be preferable and more accurate if we emitted a DIArray of T
|
||||
/// without an upper bound instead. That is, LLVM already supports emitting
|
||||
/// debuginfo of arrays of unknown size. But GDB currently seems to end up
|
||||
/// in an infinite loop when confronted with such a type.
|
||||
///
|
||||
/// As a side effect of the current encoding every instance of a type like
|
||||
/// `struct Foo { unsized_field: [u8] }` will look like
|
||||
/// `struct Foo { unsized_field: u8 }` in debuginfo. If the length of the
|
||||
/// slice is zero, then accessing `unsized_field` in the debugger would
|
||||
/// result in an out-of-bounds access.
|
||||
/// As a side effect of the current encoding every instance of a type like
|
||||
/// `struct Foo { unsized_field: [u8] }` will look like
|
||||
/// `struct Foo { unsized_field: u8 }` in debuginfo. If the length of the
|
||||
/// slice is zero, then accessing `unsized_field` in the debugger would
|
||||
/// result in an out-of-bounds access.
|
||||
fn slice_type_metadata<'ll, 'tcx>(
|
||||
cx: &CodegenCx<'ll, 'tcx>,
|
||||
slice_type: Ty<'tcx>,
|
||||
|
Loading…
Reference in New Issue
Block a user