On Sun, 28 Apr 2019 11:08:34 -0700 Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote: > > > > Perhaps adding another slot into pt_regs that gets used by int3 to > > store a slot to emulate a call on return? > > > > > > That’s not totally nuts, although finding pt_regs isn’t entirely trivial. I meant on the int3 handler (which stores the pt_regs). > > I still think I prefer an approach where we just emulate the call directly. Then, on the return of int3, if there's anything in that slot, then we could possibly shift the exception handler frame (that was added by the hardware), insert the slot data into the top of the stack, and then call iret (which the int3 handler, would add the return ip to be the function being called), which would in essence emulate the call directly. I believe the complexity comes from the exception frame added by the hardware is where we need to put the return of the call for the emulation. -- Steve