Skip to content
This repository was archived by the owner on Nov 1, 2020. It is now read-only.

Support for CFI unwind info#752

Merged
jkotas merged 1 commit intodotnet:masterfrom
kyulee1:cfi
Jan 30, 2016
Merged

Support for CFI unwind info#752
jkotas merged 1 commit intodotnet:masterfrom
kyulee1:cfi

Conversation

@kyulee1
Copy link
Contributor

@kyulee1 kyulee1 commented Jan 28, 2016

This enables to emit unwind data for Unix.
Unlike Windows UNWIND_INFO which has fully encoded binary,
RyuJit passes a pseudo CFI_CODE[] table to CoreRT.
This builds a map between offset and CFI_CODE blobs.
Then when we emit code for a particular code offset, we also
emit each CFI_CODE to ObjectWriter which will inject CFI
directive accordingly. Then the backend of LLVM layouts
eh_frame section per platform.
Some of refactoring with regard to nodename is made.

@kyulee1
Copy link
Contributor Author

kyulee1 commented Jan 28, 2016

Do not merge this until RyuJit/OW are updated/published, which I will follow up including version number update here.
The corresponding code will be soon merged --
dotnet/coreclr#2868
dotnet/llilc#1011
I've verified the code locally and I'd like to get the review earlier.

@kyulee1 kyulee1 force-pushed the cfi branch 8 times, most recently from 2c3e658 to 5fe6161 Compare January 30, 2016 00:16
@kyulee1 kyulee1 changed the title [WIP] Support for CFI unwind info Support for CFI unwind info Jan 30, 2016
@kyulee1
Copy link
Contributor Author

kyulee1 commented Jan 30, 2016

We are now consuming new RyuJit/OW and I dropped [WIP].
@jkotas PTAL

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be private constant in ObjectWriter I think.

@jkotas
Copy link
Member

jkotas commented Jan 30, 2016

LGTM modulo comments.

@kyulee1
Copy link
Contributor Author

kyulee1 commented Jan 30, 2016

@jkotas Updated PR per feedbacks. The test failure is unrelated.

@jkotas
Copy link
Member

jkotas commented Jan 30, 2016

@kyulee1 Could you please resolve the conflicts so that it can be merged?

This enables to emit unwind data for Unix.
Unlike Windows UNWIND_INFO which has fully encoded binary,
RyuJit passes a pseudo CFI_CODE[] table to CoreRT.
This builds a map between offset and CFI_CODE blobs.
Then when we emit code for a particular code offset, we also
emit each CFI_CODE to ObjectWriter which will inject CFI
directive accordingly. Then the backend of LLVM layouts
eh_frame section per platform.
Some of refactoring with regard to nodename is made.
jkotas added a commit that referenced this pull request Jan 30, 2016
Support for CFI unwind info
@jkotas jkotas merged commit 1d3ef5f into dotnet:master Jan 30, 2016
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants