On Wed, 29 Oct 2003 13:14:55 -0800
George Anzinger <george@xxxxxxxxxx> wrote:
Andi Kleen wrote:
On Tue, 28 Oct 2003 14:47:34 -0800
George Anzinger <george@xxxxxxxxxx> wrote:
I see that Andrew has not picked up my latest kgdb. In the latest version I have the dwarf2 stuff working in entry.S. Just ask, off list.
Do you use the .cfi* mnemonics in newer binutils? Without that it would get ugly.
I use asm mnemonics .uleb*, .sleb*, .byte and .long. For operands I use the defines in dwarf2.h (after fixing them to work with asm). These are, for the most part DW_CFA_* and other DW_* things. I put this together to build macros (CCP) so that I can code things like:
The latest binutils has new .cfi_* mnemonics in gas that make writing such a table
much cleaner and easier. My plan was to use that. It would require new binutils,
but make future mainteance much easier. When people don't have the new binutils
it can be defined away.
See http://www.logix.cz/~mic/devel/gas-cfi/
Which allows "bt" through entry.S code. I did not try to allow you to get the correct answer if you stop in the middle of the register save or restore code.
On x86-64 it is unfortunately more complicated because it has a separate interrupt
or exception stack. The backtracker has to read the old stack pointer from the frame. This can be expressed in dwarf2, but is a bit tricky.