On Wed, Oct 27, 2021 at 20:59:12 -0700, Jason Thorpe wrote: > > On Oct 27, 2021, at 4:01 PM, Jason Thorpe <thor...@me.com> wrote: > > > > > >> On Oct 27, 2021, at 3:44 PM, Valery Ushakov <u...@stderr.spb.ru> wrote: > >> > >> On Wed, Oct 27, 2021 at 07:50:55 -0700, Jason Thorpe wrote: > >> > >> I was wondering if it might be easier to not put the onus onto the > >> caller and instead have a function that returns the interrupted > >> ucontext (or NULL, if the pc is not in a trampoline). > >> > >> ucontext_t *__unwind_sigtramp(return_pc, return_sp) > > > > That would certainly be a nicer API. > > Thought about it a little more. > > To make this really work, we'd definitely have to version > sigaction() so that it fully de-supported sigcontext handlers. > Otherwise, it's a toss-up whether you have a sigcontext or a > ucontext on the stack.
It is ucontext for the siginfo trampoline and sigcontext for the older one, isn't it? > I also see some value in the basic check (which you need to have to > __sigtramp_unwind() anyway?). You need internally, obviously, but the only useful thing you can do with it is get the interrupted context that the trampoline would restore. Or do I miss something here (which is entirely possible, as I'm writing all these remarks from fading memories of implementing the trampolines for sh3). -uwe