This is an initial cut at implementing DWARF-based backtraces. I use libdw
for DWARF parsing. There are no user-facing interfaces, so the current code is
tested by simply dumping a stacktrace in schedule.
Unfortunately it may be that I've run into a
in libdw, so I don't have line information at the moment. That being said,
everything is plumbed in for it.
At the moment there are two distinct stacktraces that one can produce: a trace
from the C stack and a trace from the STG stack. I'm not entirely convinced
that the implementation of the latter is quite correct
It seems to be a bit slow, but I suspect it could be made substantially quicker
by caching recent address lookups as there is a great amount of repetition in
the STG stack.