Everything I know about unwind info seems to suggest only a single previous
frame can be referenced (the single CFA in particular). However, in languages
with coroutines, there could potentially be two "previous" frames: the
procedure it will yield to, and the coroutine awaiting on it. Zig in particular
has stackless coroutines, and the primary specification writer once talked
about making the coroutine context object a "stack" internally, then storing a
pointer into this stack in the frame pointer register so unwinding would give
the call sequence of coroutines.
I was wondering, is there a way within the current DWARF specification to
capture this graph bifurcation? It seems strange to me that DWARF is so
incredibly flexible and adaptable, yet this one thing is beyond that reach.
Would we really have to generate two sets of tables? Is that even possible
without breaking all the tools?
Obviously this is a low-priority message.
Eleanor
--
Dwarf-discuss mailing list
Dwarf-discuss@lists.dwarfstd.org
https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss