diff options
| author | bors <bors@rust-lang.org> | 2017-01-02 20:17:01 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-01-02 20:17:01 +0000 |
| commit | d3a2efa14b5da1fb11eb25496232bb164238d3c2 (patch) | |
| tree | a9544b5d76d06fe50a4fd80acdcc885df9ccb76b /src/test/debuginfo | |
| parent | 9953e76ca41bb42d27a52d6657304af5fe41f0c0 (diff) | |
| parent | af34f91c2762dfaa39959467d216f5c21ab5d0db (diff) | |
| download | rust-d3a2efa14b5da1fb11eb25496232bb164238d3c2.tar.gz rust-d3a2efa14b5da1fb11eb25496232bb164238d3c2.zip | |
Auto merge of #38543 - philipc:unsized-debuginfo, r=michaelwoerister
Fix debuginfo for unsized struct members The member was given the size of a fat pointer, which caused llvm to emit DWARF attributes for a 128-bit bitfield.
Diffstat (limited to 'src/test/debuginfo')
| -rw-r--r-- | src/test/debuginfo/unsized.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/test/debuginfo/unsized.rs b/src/test/debuginfo/unsized.rs new file mode 100644 index 00000000000..b0ce335a8d9 --- /dev/null +++ b/src/test/debuginfo/unsized.rs @@ -0,0 +1,45 @@ +// Copyright 2016 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// compile-flags:-g + +// === GDB TESTS =================================================================================== + +// gdb-command:run + +// gdb-command:print *a +// gdbg-check:$1 = {value = [...] "abc"} +// gdbr-check:$1 = unsized::Foo<[u8]> {value: [...]} + +// gdb-command:print *b +// gdbg-check:$2 = {value = {value = [...] "abc"}} +// gdbr-check:$2 = unsized::Foo<unsized::Foo<[u8]>> {value: unsized::Foo<[u8]> {value: [...]}} + + +#![feature(omit_gdb_pretty_printer_section)] +#![omit_gdb_pretty_printer_section] + +struct Foo<T: ?Sized> { + value: T +} + +fn main() { + let foo: Foo<Foo<[u8; 4]>> = Foo { + value: Foo { + value: *b"abc\0" + } + }; + let a: &Foo<[u8]> = &foo.value; + let b: &Foo<Foo<[u8]>> = &foo; + + zzz(); // #break +} + +fn zzz() { () } |
