This is the mail archive of the
libc-ports@sources.redhat.com
mailing list for the libc-ports project.
Re: [PATCH] ARM: Add SystemTap probes to longjmp and setjmp.
- From: Roland McGrath <roland at hack dot frob dot com>
- To: "Joseph S. Myers" <joseph at codesourcery dot com>
- Cc: Will Newton <will dot newton at linaro dot org>, <libc-ports at sourceware dot org>, <patches at linaro dot org>
- Date: Tue, 28 Jan 2014 14:03:07 -0800 (PST)
- Subject: Re: [PATCH] ARM: Add SystemTap probes to longjmp and setjmp.
- Authentication-results: sourceware.org; auth=none
- References: <1390815426-10792-1-git-send-email-will dot newton at linaro dot org> <Pine dot LNX dot 4 dot 64 dot 1401282129590 dot 2449 at digraph dot polyomino dot org dot uk>
> On Mon, 27 Jan 2014, Will Newton wrote:
>
> > @@ -50,6 +48,11 @@ ENTRY (__longjmp)
> > ldr sp, [ip], #4
> > ldr lr, [ip], #4
> > #endif
> > + /* longjmp probe expects longjmp first argument (4@r0), second
> > + argument (-4@r1), and target address (4@r14), respectively. */
> > + LIBC_PROBE (longjmp, 3, 4@r0, -4@r1, 4@r14)
>
> The discussion on libc-alpha said this probe should be before unwinding;
> shouldn't that mean before sp and lr are restored, so that at probe time
> it's still possible to unwind through the caller of longjmp?
Yes, the longjmp probe is conceptually "at entry to longjmp". So it needs
to be just far enough in that you have demangled the pointers to make them
available as the probe's arguments. The longmp_target probe is the one
that should be as late as possible, so all the registers except the PC
itself (or as close as the particular machine's implementation makes
possible) reflect the state being restored.