Bug 13266 - Implement DW_CFA_restore in the dwarf unwinder
Summary: Implement DW_CFA_restore in the dwarf unwinder
Status: RESOLVED FIXED
Alias: None
Product: systemtap
Classification: Unclassified
Component: runtime (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Unassigned
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-10-05 17:35 UTC by Mark Wielaard
Modified: 2011-10-05 20:51 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Wielaard 2011-10-05 17:35:53 UTC
The recent cleanup of the dwarf unwinder:

commit 3141c9874bc41a0ef16fc0067827be47c475a171
Author: Mark Wielaard <mjw@redhat.com>
Date:   Wed Oct 5 15:04:17 2011 +0200

    Support same value rules in unwinder. Don't treat undefined as same value.
    
    The unwinder treated undefined and same value rules the same. This patch
    introduces different states for them. All "real" registers are assumed to
    be "same value". Their value will be carried over to the next frame unless
    overruled. All other "fake" dwarf registers are treated as undefined.
    This makes a difference for architectures where for example the dwarf
    return register is a real register, where same value means something
    different from undefined (e.g. ppc).

Broke the setjmp.exp test on i686. This is because "Unknown" now really means "Unknown" and not "hope for the best". Since DW_CFA_restore isn't implemented it just sets the register to Unknown, which makes it unusable.

Should be fixed by implementing DW_CFA_restore (and friends) support in the unwinder.
Comment 1 Mark Wielaard 2011-10-05 20:51:12 UTC
commit 12231ba6252c82b53fee8dfc2d411f7fdecb71ee
Author: Mark Wielaard <mjw@redhat.com>
Date:   Wed Oct 5 22:23:01 2011 +0200

    PR13266 Implement DW_CFA_restore in the dwarf unwinder.
    
    Store the initial reg state after processing the CIE and restore
    on DW_CFA_restore[_extended].