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