-
-
Notifications
You must be signed in to change notification settings - Fork 78
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
fix(debuginfo): Inlinees management in DWARF #237
Conversation
@calixteman Thanks for getting this started. I'm not so sure about the changes in test snapshots, since they show line records that seem completely out of line. I think that the change you were doing in #200 is the actual fix, essentially removing this check here: symbolic/debuginfo/src/dwarf.rs Lines 560 to 562 in d16bc47
That way, we should no longer get overlapping ranges (DWARF usually splits ranges in the parent when there's an inlinee boundary), and all the complicated logic from #223 should no longer be necessary. |
I didn't pay attention to the tests but there is something obviously wrong here. And there is the issue with non-inlined functions on several ranges to fix too. |
There is still something in the tests... let me fix that |
Normally this patch should fix what you tried to fix in #223. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you so much for this PR. Checking ranges for patching the parent is indeed the correct approach, anything else would just change too many records or overwrite wrong ones, as soon as inlinees overlap.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❤️ Thanks a bunch for this and the great collaboration!
This last commit fixes the Python tests. When splitting a line info record in two, we must not skip the second half, since this one may need to be split further. The only two cases where skipping is valid is when adding records at the border of a range (since those come out of nowhere). |
It aims to fix:
So the idea is basically to get rows for non-inlined functions and then for an inlinee get line info from the parent according to the ranges we've for the inlinee.
I let a TODO, I'll fix in a follow-up patch: some non-inlined functions can have several range which messes up the computation of size/end.
Fixes #228
Fixes #194
Fixes #193
Ref #223