-
-
Notifications
You must be signed in to change notification settings - Fork 267
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Incomplete CodeView debug information #1716
Comments
Sounds like a very good plan. 👍 |
Yeah, the debug support inside LLVM looks like a DWARF to CodeView converter. It still needs some sensible input :) |
Thanks, nice progress!
This one's new, right? And a major one. Does it show the source pointer, i.e., the argument before rewriting it via |
Yes. For |
Ah. Delegates and slices currently aren't rewritten, we'd need to rewrite runtime function calls first. So in this case, the slice is passed as 2x64-bit aggregate, i.e., in the first 2 registers. So you see the array length instead of the pointer, which would be in the next register/dumped to memory right after the length field. Edit: And |
Oh I think the intent was to display it as a struct with both fields, i.e., as a |
Yes, that would be expected, without bothering the user with the implementation details of the ABI. That's also what is displayed for x86. BTW: my experiments with clang always show |
Just noticed that passing my own struct similar to a dynamic array works, delegates too. Passing a static array doesn't even declare the variable in the debug info (it's in the IR, though). |
Kudos to you, too :-) |
Nice! |
This is the most awesome thing I've seen today! |
[Not CodeView-specific: I just used LLVM 4.0's |
Yeah, the path should be absolute, and it already is, see ldc::DIBuilder::CreateFile |
PR for Associative Arrays: #2869 It differs a bit from what DMD is writing, but it has more consistent naming where debug type is shown as it was really named in front-end part. LLMetadata *elems[] = {
CreateNestedType(0, index, file, "__key_t"),
CreateNestedType(0, value, file, "__value_t"),
CreateMemberType(0, Type::tvoidptr, file, "impl", 0, Prot::public_)
}; |
I've compiled my cv2pdb test file with LDC for Win64 and stepped through it in VS2015.
This is a list of problems I noticed:
I've made this a list of checkable items as I'll try to work on these and track progress here.
Known gotchas, but probably ok:
The text was updated successfully, but these errors were encountered: