[PATCH] Fix AMD64 backtrace
Jakub Jelinek
jakub@redhat.com
Sun Jan 11 18:50:00 GMT 2004
On Sun, Jan 11, 2004 at 01:17:52PM +0100, Andreas Jaeger wrote:
> /* Load the new stack pointer, the preserved registers and
> registers used for passing args. */
> cfi_def_cfa(%rdi, 0)
> cfi_offset(%rbx,oRBX)
> cfi_offset(%rbp,oRBP)
> cfi_offset(%r12,oR12)
> cfi_offset(%r13,oR13)
> cfi_offset(%r14,oR14)
> cfi_offset(%r15,oR15)
> cfi_offset(%rsp,oRSP)
> cfi_offset(%rip,oRIP)
>
> movq oRSP(%rdi), %rsp
> movq oRBX(%rdi), %rbx
> movq oRBP(%rdi), %rbp
> movq oR12(%rdi), %r12
> movq oR13(%rdi), %r13
> movq oR14(%rdi), %r14
> movq oR15(%rdi), %r15
>
> /* The following ret should return to the address set with
> getcontext. Therefore push the address on the stack. */
> movq oRIP(%rdi), %rcx
> pushq %rcx
> cfi_adjust_cfa_offset(8)
pushq %rcx modifies %rsp, but current CFI here is %rdi
which is unchanged.
Jakub
More information about the Libc-hacker
mailing list