via llvm-dev
2018-Jul-17 19:04 UTC
[llvm-dev] Upstreaming Exception Handling support for Windows on ARM64
Hi, We would like to upstream exception handling support for Windows on ARM64. Microsoft-published specifications can be found here: a) https://docs.microsoft.com/en-us/cpp/build/arm64-exception-handling b) https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions We propose the following approach: 1) Upstream miscellaneous clang and llvm patches that are needed for exception handling on ARM64 Windows. These are small patches that deal with the ABI, relocations, etc. There are around 8 or 9 patches to upstream. 2) Upstream the MCLayer part. This mostly deals with unwinding opcodes that are described in a). This will probably consist of two patches. 3) Upstream the AArch64 frame lowering part. This mostly deals with emitting unwinding opcodes, as well as some small changes to the exception handling tables. Probably two patches. 4) Upstream setjmp support. This consists of two patches (one clang and one llvm). Any thoughts? Mandeep and I will start upstreaming shortly. Thanks, Sanjin -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180717/afca7ec8/attachment.html>
Zachary Turner via llvm-dev
2018-Jul-18 02:25 UTC
[llvm-dev] Upstreaming Exception Handling support for Windows on ARM64
Reid is the person to ask about this, but he’s ooo for a few more days. Ping again next week if you haven’t heard back On Tue, Jul 17, 2018 at 12:04 PM via llvm-dev <llvm-dev at lists.llvm.org> wrote:> Hi, > > > > We would like to upstream exception handling support for Windows on > ARM64. Microsoft-published specifications can be found here: > > > > a) > https://docs.microsoft.com/en-us/cpp/build/arm64-exception-handling > > b) > https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions > > > > We propose the following approach: > > > > 1) Upstream miscellaneous clang and llvm patches that are > needed for exception handling on ARM64 Windows. These are small patches > that deal with the ABI, relocations, etc. There are around 8 or 9 patches > to upstream. > > 2) Upstream the MCLayer part. This mostly deals with unwinding > opcodes that are described in a). This will probably consist of two > patches. > > 3) Upstream the AArch64 frame lowering part. This mostly deals > with emitting unwinding opcodes, as well as some small changes to the > exception handling tables. Probably two patches. > > 4) Upstream setjmp support. This consists of two patches (one > clang and one llvm). > > > > Any thoughts? > > > > Mandeep and I will start upstreaming shortly. > > > > Thanks, > > Sanjin > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180717/441a4edc/attachment.html>
Reid Kleckner via llvm-dev
2018-Jul-19 18:09 UTC
[llvm-dev] Upstreaming Exception Handling support for Windows on ARM64
I think your order of patches makes sense. Do you plan to add assembler directives similar to the .cfi_* and .seh_* directives? The assembly examples in the Microsoft docs don't have any, but I think it would be really valuable for MC to have some. It's really useful to be able to modify compiler generated assembly manually, reassemble with a slightly different prologue, and have everything just work. For example, I'm imagining the assembler would be responsible for adding nop unwind codes for each non-prologue instruction interleaved in the prologue. On Tue, Jul 17, 2018 at 12:04 PM via llvm-dev <llvm-dev at lists.llvm.org> wrote:> Hi, > > > > We would like to upstream exception handling support for Windows on > ARM64. Microsoft-published specifications can be found here: > > > > a) > https://docs.microsoft.com/en-us/cpp/build/arm64-exception-handling > > b) > https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions > > > > We propose the following approach: > > > > 1) Upstream miscellaneous clang and llvm patches that are > needed for exception handling on ARM64 Windows. These are small patches > that deal with the ABI, relocations, etc. There are around 8 or 9 patches > to upstream. > > 2) Upstream the MCLayer part. This mostly deals with unwinding > opcodes that are described in a). This will probably consist of two > patches. > > 3) Upstream the AArch64 frame lowering part. This mostly deals > with emitting unwinding opcodes, as well as some small changes to the > exception handling tables. Probably two patches. > > 4) Upstream setjmp support. This consists of two patches (one > clang and one llvm). > > > > Any thoughts? > > > > Mandeep and I will start upstreaming shortly. > > > > Thanks, > > Sanjin > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180719/5438afe4/attachment.html>
via llvm-dev
2018-Jul-20 00:37 UTC
[llvm-dev] Upstreaming Exception Handling support for Windows on ARM64
Hi Reid, We plan to work on assembler directives after this set of patches is upstreamed. We currently emit the unwinding opcodes into object files only. Thanks, Sanjin From: Reid Kleckner <rnk at google.com> Sent: Thursday, July 19, 2018 11:10 AM To: ssijaric at codeaurora.org Cc: llvm-dev <llvm-dev at lists.llvm.org> Subject: Re: [llvm-dev] Upstreaming Exception Handling support for Windows on ARM64 I think your order of patches makes sense. Do you plan to add assembler directives similar to the .cfi_* and .seh_* directives? The assembly examples in the Microsoft docs don't have any, but I think it would be really valuable for MC to have some. It's really useful to be able to modify compiler generated assembly manually, reassemble with a slightly different prologue, and have everything just work. For example, I'm imagining the assembler would be responsible for adding nop unwind codes for each non-prologue instruction interleaved in the prologue. On Tue, Jul 17, 2018 at 12:04 PM via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > wrote: Hi, We would like to upstream exception handling support for Windows on ARM64. Microsoft-published specifications can be found here: a) https://docs.microsoft.com/en-us/cpp/build/arm64-exception-handling b) https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions We propose the following approach: 1) Upstream miscellaneous clang and llvm patches that are needed for exception handling on ARM64 Windows. These are small patches that deal with the ABI, relocations, etc. There are around 8 or 9 patches to upstream. 2) Upstream the MCLayer part. This mostly deals with unwinding opcodes that are described in a). This will probably consist of two patches. 3) Upstream the AArch64 frame lowering part. This mostly deals with emitting unwinding opcodes, as well as some small changes to the exception handling tables. Probably two patches. 4) Upstream setjmp support. This consists of two patches (one clang and one llvm). Any thoughts? Mandeep and I will start upstreaming shortly. Thanks, Sanjin _______________________________________________ LLVM Developers mailing list llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180719/e7791511/attachment.html>