Add call frame information.
authordrepper <drepper>
Wed, 4 May 2005 17:43:06 +0000 (17:43 +0000)
committerdrepper <drepper>
Wed, 4 May 2005 17:43:06 +0000 (17:43 +0000)
sysdeps/unix/sysv/linux/i386/getcontext.S
sysdeps/unix/sysv/linux/i386/makecontext.S
sysdeps/unix/sysv/linux/i386/vfork.S

index 68541d5..76ba604 100644 (file)
@@ -1,5 +1,5 @@
 /* Save current context.
 /* Save current context.
-   Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
 
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
 
@@ -63,12 +63,16 @@ ENTRY(__getcontext)
 
        /* Save the current signal mask.  */
        pushl   %ebx
 
        /* Save the current signal mask.  */
        pushl   %ebx
+       cfi_adjust_cfa_offset (4)
+       cfi_rel_offset (ebx, 0)
        leal    oSIGMASK(%eax), %edx
        xorl    %ecx, %ecx
        movl    $SIG_BLOCK, %ebx
        movl    $__NR_sigprocmask, %eax
        ENTER_KERNEL
        popl    %ebx
        leal    oSIGMASK(%eax), %edx
        xorl    %ecx, %ecx
        movl    $SIG_BLOCK, %ebx
        movl    $__NR_sigprocmask, %eax
        ENTER_KERNEL
        popl    %ebx
+       cfi_adjust_cfa_offset (-4)
+       cfi_restore (ebx)
        cmpl    $-4095, %eax            /* Check %eax for error.  */
        jae     SYSCALL_ERROR_LABEL     /* Jump to error handler if error.  */
 
        cmpl    $-4095, %eax            /* Check %eax for error.  */
        jae     SYSCALL_ERROR_LABEL     /* Jump to error handler if error.  */
 
index ec49b74..03dc648 100644 (file)
@@ -1,5 +1,5 @@
 /* Create new context.
 /* Create new context.
-   Copyright (C) 2001,02 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
 
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
 
@@ -68,7 +68,9 @@ ENTRY(__makecontext)
           below).  */
 #ifdef PIC
        call    1f
           below).  */
 #ifdef PIC
        call    1f
+       cfi_adjust_cfa_offset (4)
 1:     popl    %ecx
 1:     popl    %ecx
+       cfi_adjust_cfa_offset (-4)
        addl    $L(exitcode)-1b, %ecx
        movl    %ecx, (%edx)
 #else
        addl    $L(exitcode)-1b, %ecx
        movl    %ecx, (%edx)
 #else
@@ -83,6 +85,7 @@ ENTRY(__makecontext)
           the context 'makecontext' manipulated at the time of the
           'makecontext' call.  If the pointer is NULL the process must
           terminate.  */
           the context 'makecontext' manipulated at the time of the
           'makecontext' call.  If the pointer is NULL the process must
           terminate.  */
+       cfi_endproc
 L(exitcode):
        /* This removes the parameters passed to the function given to
           'makecontext' from the stack.  EBX contains the number of
 L(exitcode):
        /* This removes the parameters passed to the function given to
           'makecontext' from the stack.  EBX contains the number of
@@ -108,6 +111,7 @@ L(exitcode):
        /* The 'exit' call should never return.  In case it does cause
           the process to terminate.  */
        hlt
        /* The 'exit' call should never return.  In case it does cause
           the process to terminate.  */
        hlt
+       cfi_startproc
 END(__makecontext)
 
 weak_alias(__makecontext, makecontext)
 END(__makecontext)
 
 weak_alias(__makecontext, makecontext)
index e660e6b..eefd4b4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2002, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Schwab <schwab@gnu.org>.
 
    This file is part of the GNU C Library.
    Contributed by Andreas Schwab <schwab@gnu.org>.
 
@@ -33,6 +33,7 @@ ENTRY (__vfork)
 
        /* Pop the return PC value into ECX.  */
        popl    %ecx
 
        /* Pop the return PC value into ECX.  */
        popl    %ecx
+       cfi_adjust_cfa_offset (-4)
 
 #ifdef SAVE_PID
        SAVE_PID
 
 #ifdef SAVE_PID
        SAVE_PID
@@ -46,6 +47,7 @@ ENTRY (__vfork)
           disturbs the branch target cache.  Instead push the return
           address back on the stack.  */
        pushl   %ecx
           disturbs the branch target cache.  Instead push the return
           address back on the stack.  */
        pushl   %ecx
+       cfi_adjust_cfa_offset (4)
 
 #ifdef RESTORE_PID
        RESTORE_PID
 
 #ifdef RESTORE_PID
        RESTORE_PID