Date: Wed, 16 Sep 2009 16:37:33 -0400 From: Andrew Cagney <andrew.cagney@gmail.com> To: dfr@rabson.org Cc: freebsd-current@freebsd.org Subject: Re: New BSD licensed debugger Message-ID: <c51b944b0909161337j49f94882we5a4cef8973fbb08@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Wicked; the location code, in particular, is sick. As you've noticed, this isn't rocket science; and good language choice does make life easier. Several things to consider. Rather than frame-base, I'd use CFA or call-frame-address found in .debug_frame or CFI when identifying frames (and determining if the frame changed such as for step). In addition, since frameless functions don't modify the CFA (they don't use the stack) you'll want to be combining it with the function's address giving a FrameIdentifier (oh, and IA-64 has two stacks so ... :-) The unwinder looks to be trying to simultaneously handle both high-level inline and low-level ABI (CFA) frames, an alternative approach is to keep them separate (decorator pattern works well here) having an abi-only chain and then above that a chain of higher-level possibly inline frames. A non-polling implementation would make a long term goal - which requires a mechanism for simultaneously blocking on both process and i/o events - on linux, at least, this is still a rats nest of bugs.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?c51b944b0909161337j49f94882we5a4cef8973fbb08>