Lines Matching refs:frame
29 * stack frame. Special handling is provided to indicate
34 * A signal handler frame is essentially a set of data pushed on to the user
42 * counter and frame pointer as a separate frame.
44 * The stack layout for a signal handler frame is as follows:
58 * | struct frame | v | struct frame | v
71 * | struct frame | v
74 * The bottom-most struct frame is actually constructed by the kernel by
75 * copying the previous stack frame, allowing naive backtrace code to simply
76 * skip over the interrupted frame. The copied frame is never really used,
79 * program's handler returns. If we detect a signal handler frame, we simply
81 * gregs to construct the register set for the interrupted frame, and then
82 * continue our backtrace. Detecting the frame itself is easy according to
86 * %fp + sizeof (struct frame) == oldcontext
89 * %ebp + sizeof (struct frame) + (3 words) == oldcontext
92 * %rbp + sizeof (struct frame) + (2 words) == oldcontext
95 * frame and on sparc this information isn't written to the stack by the kernel
98 * interface to find the correct frame.
109 #include <sys/frame.h>
134 #define CHECK_FOR_SIGFRAME(fp, oldctx) ((fp) + SA(sizeof (struct frame)) \
140 #define CHECK_FOR_SIGFRAME(fp, oldctx) ((((fp) + sizeof (struct frame)) + \
142 (((struct frame *)fp)->fr_savpc == (greg_t)-1))
147 #define CHECK_FOR_SIGFRAME(fp, oldctx) ((((fp) + sizeof (struct frame)) + \
149 (((struct frame *)fp)->fr_savpc == (greg_t)-1))
162 read_safe(int fd, struct frame *fp, struct frame **savefp, uintptr_t *savepc)
183 *savefp = (struct frame *)newfp;
200 struct frame *savefp;
204 * snag frame point from ucontext... we'll see caller of
209 struct frame *fp = (struct frame *)
220 * will be present in the stack frame if a signal was
260 * special signal stack frame present; this allows us to
282 * before the signal frame.... sigh.
287 * this is the special signal frame, so cons up
291 savefp = (struct frame *)
343 * print out stack frame info