Mark Wielaard wrote:
Hi Arun,

Thanks for looking through these patches.
I will chop them up a little and clean up the stuff you pointed out.
Yes, there are a lot of changes. Focusing on this thread, there are three things of immediate interest:

-> glibc generates augmentation identifying a signal frame
It should be recorded when the CFA program is run (I'd suggest a field like have_signal_frame_marker, not signal_frame), and the field needs to be appended). It would be useful if unw_is_signal_frame() could also use this information but, unfortunately, that isn't easy. The CFA is currently only looked up and parsed during a step.

-> the additional interface is_interrupted() and appended bit interrupted_frame Since (see above) unw_is_signal_frame() can't detect the CFI signal-frame marker, the code will likely want to first check for dwarf (and the marker) and if there isn't dwarf fall back to using unw_is_signal_frame() (so that non-dwarf frames will be handled correctly).

-> the dwarf CFA program has of-by-one errors (it needs to decrement the pc to find the correct debug info); if we've is_interrupted() working we've a portable way to handle that

and the changes take us in that direction. How ever, we've also got at least:

-> how the end-of-stack is identified

-> how null pointers and null-descriptors are handled (in particular on x86-64) and what such a back trace looks like

Andrew



_______________________________________________
Libunwind-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to