991108.13 R I J. Merrill Processor Unwinding stacks

At Cygnus, we've run into a couple of situations where we've needed to
extend the dwarf2 unwind info specification:

1) The CFA is not always computable as register+offset. One of our targets
   uses an 'and' to align the stack pointer in the prologue, and then
   stores the old value into the stack; the saved register values are then
   at a constant offset from the saved value, but not from the new $sp. To
   deal with this, we added DW_CFA_def_cfa_loc, which takes a standard
   dwarf2 location expression.

2) Targets that use register windows (i.e. SPARC) save their registers into
   the previous stack frame, violating the principle that all register save
   locations are to one side of the CFA. This could be handled by defining
   the CFA to be at the top of the register window from the previous frame,
   but we dealt with it by adding a DW_CFA_window_save, which is also more
   compact than writing DW_CFA_offset's for each of the window registers.


This issue has been addressed by proposals 000330.1 and 001012.1.