DWARF patches for 8.2
Simon Marlow
marlowsd at gmail.com
Wed Nov 23 14:17:46 UTC 2016
Awesome stuff Ben. I'll try to find some time to review these.
On 22 November 2016 at 06:18, Ben Gamari <ben at smart-cactus.org> wrote:
> Hello fellow DWARF enthusiasts,
>
> Tonight I finally made something of a breakthrough on the DWARF front;
> after finding a small logic error in one of my patches I was able to get
> a full stack trace into and out of Haskell using the runtime system's
> native stack unwinder. This is quite exciting!
>
> Recall that up until now there have been a few issues which can lead to
> problems with unwinding,
>
> * #11353: Unsafe foreign calls can require the NCG to make stack
> pointer adjustments to accomodate native calling conventions. These
> adjustments need to be taken into account when we generate unwinding
> information.
>
> * #11337: Stack fixups produced by CmmStackLayout aren't reflected in
> unwinding information. Essentially this was a result of the fact that
> our current unwinding implementation assumes that stack layout is
> fixed over the course of a block.
>
> * #11338: The region surrounding safe foreign calls doesn't get proper
> unwinding information.
>
> I've solved all three of these in my branch, which I've rebased, split
> up, and posted to Phabricator. The result is quite a stack of
> differentials,
>
> * D2740: OrdList: Add Foldable, Traversable instances
>
> Some throat-clearing.
>
> * D2735: Use newBlockId instead of newLabelC
>
> Just some refactoring.
>
> * D2737: NCGMonad: Add MonadUnique NatM instance
>
> This will come in handy later.
>
> * D2736: AsmCodeGen: Refactor worker in cmmNativeGens
>
> More refactoring I did while trying to understand the dataflow in the
> NCG.
>
> * D2739: CmmCommonBlockElim: Ignore CmmUnwind nodes
>
> This is a fix to what I believe is a bug which I noticed while
> reading through the implementation.
>
> * D2741: Generalize CmmUnwind and pass unwind information through NCG
>
> This is the bulk of the change. Here we refactor the treatment of
> unwinding information to provide the flexibility we will need to
> address the issues described above and fix #11353. Review is badly
> needed here.
>
> * D2742: CmmLayoutStack: Add unwind information on stack fixups
>
> Here we use the infrastructure provided in D2741 to fix #11337.
>
> * D2743: StgCmmForeign: Emit debug information for safe foreign calls
>
> Here we fix #11338 by adding unwind information to the safe foreign
> call prologue/epilogue code.
>
> * D2738: Cmm: Add support for undefined unwinding statements
>
> Fix unwinding information for stg_stack_underflow_frames, which we
> have no means of unwinding out of. For this we need to add support
> for unwinding declarations which tell the underwinder to "forget"
> about the value of a register.
>
> Reviews would be greatly appreciated.
>
> Cheers,
>
> - Ben
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20161123/d4125a82/attachment.html>
More information about the ghc-devs
mailing list