Modification to x86 emitter to support SW out of inst frames.
authorBenjamin Welton <welton@cs.wisc.edu>
Thu, 12 Apr 2018 17:32:31 +0000 (12:32 -0500)
committerBenjamin Welton <welton@cs.wisc.edu>
Wed, 3 Oct 2018 22:14:35 +0000 (17:14 -0500)
commit5f5358637619cf6b964cffc12e6d76f673ec5be6
tree407f245595d5e9b274013224a86df45d77917fca
parentcc769c889488c0ff5787561563fefa9df4ac0284
Modification to x86 emitter to support SW out of inst frames.

This patch contains changes to the emitter to support first party stackwalking out of inst's frames. For inst frames to be walkable, instrimentation frames must be enabled.

The following changes were made to support this:

- Insertion of the previous SP into the stack at a known location (2 slots above the FP).
- Insertion of a special word into the stack such that stackwalker can easily identify that this frame is an inst frame (and to select the correct walker). BEEFDEAD is located at +1 slot away from FP.
- The poping of these values from the stack at frame teardown.
- Fixes to the emitter to use scratch registers where hard coded ones were present before.

Total performance impact of this patch is an extra 5 instruction. 3 on frame creation, 2 on destruction.
dyninstAPI/src/emit-x86.C