Uh oh!
There was an error while loading. Please reload this page.
Trait object debug - #45897
Conversation
bors
commented
Nov 11, 2017
☔ The latest upstream changes (presumably #45806) made this pull request unmergeable. Please resolve the merge conflicts. |
alexcrichton
commented
Nov 12, 2017
michaelwoerister
left a comment
There was a problem hiding this comment.
Looks good to me, thanks @tromey!
8c9a797 to
ab4da8cComparetromey
commented
Nov 14, 2017
So far I haven't managed to reproduce that failure. |
tromey
commented
Nov 14, 2017
My current theory is that this is failing due to an unmodified LLVM; and so the patch will need some tweaks. |
tromey
commented
Nov 14, 2017
Looking at the patches, I still don't see how that would be possible, but I'm rebuilding without the LLVM patch to be sure. |
tromey
commented
Nov 14, 2017
I rebuilt without the LLVM bump and didn't see this failure. Now I don't have a theory about what is going wrong. Maybe I need to build specifically against whatever LLVM travis is using. |
cuviper
commented
Nov 14, 2017
The first CI run uses Ubuntu's llvm-3.9. The rest should use rust's own llvm. |
tromey
commented
Nov 15, 2017
Thanks. I got it to fail with my system llvm. |
tromey
commented
Nov 15, 2017
The bug is that the patch is passing in NULL for the linkage name of the vtable. |
This adds a "min-system-llvm-version" directive, so that a test can indicate that it will either work with rust-llvm or with some minimal system LLVM. This makes it simpler to write a test that requires an LLVM patch that landed upstream and was then backported to rust-llvm.
Emit better debugging information for a trait object pointer. In particular, now: * The fields are explicitly represented in the DWARF; * DWARF for the vtable itself is emitted; and * The DWARF for the vtable's type has a DW_AT_containing_type which points to the concrete type for which the vtable was emitted. This is a small DWARF extension, that allows debuggers to determine the real type of the object to which a trait object points. I'll submit the gdb patch to take advantage of this new debuginfo once this lands. The vtable type is not currently complete -- it doesn't include members for the pointers it contains. This information was not needed for this feature. This addresses part 1 of rust-lang#1563.
ab4da8c to
ae4cc60Comparekennytm
commented
Nov 15, 2017
@tromey I think this is ready to be reviewed or merged? cc @michaelwoerister |
tromey
commented
Nov 15, 2017
@kennytm yes - it was reviewed once, then I made a small change to address the test failures. A re-review would be good. |
michaelwoerister
commented
Nov 16, 2017
@bors r+ |
bors
commented
Nov 16, 2017
📌 Commit ae4cc60 has been approved by |
bors
commented
Nov 16, 2017
Trait object debug This enables better debugging of trait objects. See the individual commits for explanations. This required an LLVM bump.
bors
commented
Nov 17, 2017
☀️ Test successful - status-appveyor, status-travis |
This enables better debugging of trait objects. See the individual commits for explanations. This required an LLVM bump.