Ok, great! I'm glad you've already thought about this, because I expect it's definitely possible to get exception unwinding correct, but maybe not trivial.
Extensively, as it turns out :) I'm not clear from your reply about the current status of dyninst.git vs. your research. Do you mean that Dyninst doesn't handle exceptions at all right now? Or that it works barring some bugs (like my test), and your research is the more elegant technique?
Dyninst uses an efficient code movement technique that completely breaks exceptions because it mangles some elements of process state to reduce overhead. My system preserves those aspects of process state, but incurs overhead to do so. That's why we don't use my approach in general. That said, we can also update the exception tables - which is the better approach - but that'll have to be shortly after the (immanent?) 8.0.
Drew
-- Andrew Bernat Paradyn Project
|