Re: [rfa] Attach vsyscall support for GNU/Linux

Mark Kettenis
2004-11-07T17:36:00Z

Date: Fri, 5 Nov 2004 18:42:30 -0500
From: Daniel Jacobowitz <drow@false.org>

How about this, in the meantime? If you don't like the approach, I'll
wait until we can properly decide the relationship between unwinders
and frame types.

This patch adds a new sniffer, dwarf2_signal_frame_sniffer, which will
only accept the frame if an architecture-specific hook has claimed that
this is a signal frame (i386 GNU/Linux provides one that works by
name). However, we then use the CFI normally - the only difference is
that the result has SIGTRAMP_FRAME as its type. It works beautifully!
Tested on i386-pc-linux-gnu, with vsyscall DSO.

Within the current framework this seems to be a reasonable approach.
Actually it's a lot less invasive than I envisioned this to be. So,
actually I like it ;-). Thanks! I'm wondering though whether we need
the seperate dwarf2_signal_frame_sniffer. Actually I'm sure we don't.
Targets that don't want this simply shouldn't provide the
signal_frame_p() function. Can you fix that? Just change
dwarf2_frame_sniffer such that it checks signal_frame_p() and returns
&dwarf2_sigtramp_frame_unwind instead of &dwarf2_frame_unwind if it's
true.

Oh, and please check the dwarf2-frame.* changes in as a seperately
from the vsyscall changes.

Cheers,

Mark