Subject: x86_64, dwarf2: push pushes 8 bytes and popf pops 8

The CFI_ADJUST_CFA_OFFSET dwarf2 annotation of a push/popf
pair in ret_from_fork wrongly used a value of 4. It should
have been 8. Fix that.

Signed-off-by: Alexander van Heukelum <[email protected]>

diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index ae63e58..5f6cac6 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -269,9 +269,9 @@ ENTRY(native_usergs_sysret64)
ENTRY(ret_from_fork)
CFI_DEFAULT_STACK
push kernel_eflags(%rip)
- CFI_ADJUST_CFA_OFFSET 4
+ CFI_ADJUST_CFA_OFFSET 8
popf # reset kernel eflags
- CFI_ADJUST_CFA_OFFSET -4
+ CFI_ADJUST_CFA_OFFSET -8
call schedule_tail
GET_THREAD_INFO(%rcx)
testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%rcx)


2008-07-24 10:34:22

by Ingo Molnar

[permalink] [raw]
Subject: Re: x86_64, dwarf2: push pushes 8 bytes and popf pops 8


* Alexander van Heukelum <[email protected]> wrote:

> The CFI_ADJUST_CFA_OFFSET dwarf2 annotation of a push/popf pair in
> ret_from_fork wrongly used a value of 4. It should have been 8. Fix
> that.

applied to tip/x86/debug - thanks Alexander.

Ingo