]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Use cfi directives in x86 pthread_cond_{,timed}wait.
authorUlrich Drepper <drepper@redhat.com>
Wed, 18 Nov 2009 01:59:33 +0000 (17:59 -0800)
committerUlrich Drepper <drepper@redhat.com>
Wed, 18 Nov 2009 01:59:33 +0000 (17:59 -0800)
nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S

index 0aaaa3f7b98c4531506d92775f0f69b90b14f1c1..ae345a3574fdf00e82fd578a830a891dcc294fd7 100644 (file)
@@ -1,3 +1,10 @@
+2009-11-17  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Convert to use
+       cfi directives.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
+       Based on a patch by Dinakar Guniguntala <dino@in.ibm.com>.
+
 2009-11-03  Andreas Schwab  <schwab@linux-m68k.org>
 
        [BZ #4457]
index 83f8db25bb99d1197712d50bdd1d406393908c76..8f5088a4605b2a9a31b830f4920569c6e439f208 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004, 2006-2007, 2009 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
        .align  16
 __pthread_cond_timedwait:
 .LSTARTCODE:
+       cfi_startproc
+#ifdef SHARED
+       cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+                       DW.ref.__gcc_personality_v0)
+       cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+#else
+       cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
+       cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
+#endif
+
        pushl   %ebp
-.Lpush_ebp:
+       cfi_adjust_cfa_offset(4)
+       cfi_rel_offset(%ebp, 0)
        pushl   %edi
-.Lpush_edi:
+       cfi_adjust_cfa_offset(4)
+       cfi_rel_offset(%edi, 0)
        pushl   %esi
-.Lpush_esi:
+       cfi_adjust_cfa_offset(4)
+       cfi_rel_offset(%esi, 0)
        pushl   %ebx
-.Lpush_ebx:
+       cfi_adjust_cfa_offset(4)
+       cfi_rel_offset(%ebx, 0)
+       cfi_remember_state
 
        movl    20(%esp), %ebx
        movl    28(%esp), %ebp
@@ -82,7 +97,7 @@ __pthread_cond_timedwait:
 
 #define FRAME_SIZE 24
        subl    $FRAME_SIZE, %esp
-.Lsubl:
+       cfi_adjust_cfa_offset(FRAME_SIZE)
 
        /* Get and store current wakeup_seq value.  */
        movl    wakeup_seq(%ebx), %edi
@@ -273,7 +288,7 @@ __pthread_cond_timedwait:
 11:    movl    24+FRAME_SIZE(%esp), %eax
        call    __pthread_mutex_cond_lock
        addl    $FRAME_SIZE, %esp
-.Laddl:
+       cfi_adjust_cfa_offset(-FRAME_SIZE);
 
        /* We return the result of the mutex_lock operation if it failed.  */
        testl   %eax, %eax
@@ -286,19 +301,24 @@ __pthread_cond_timedwait:
 #endif
 
 18:    popl    %ebx
-.Lpop_ebx:
+       cfi_adjust_cfa_offset(-4)
+       cfi_restore(%ebx)
        popl    %esi
-.Lpop_esi:
+       cfi_adjust_cfa_offset(-4)
+       cfi_restore(%esi)
        popl    %edi
-.Lpop_edi:
+       cfi_adjust_cfa_offset(-4)
+       cfi_restore(%edi)
        popl    %ebp
-.Lpop_ebp:
+       cfi_adjust_cfa_offset(-4)
+       cfi_restore(%ebp)
 
        ret
 
+       cfi_restore_state
+
        /* Initial locking failed.  */
 1:
-.LSbl1:
 #if cond_lock == 0
        movl    %ebx, %edx
 #else
@@ -317,9 +337,17 @@ __pthread_cond_timedwait:
        call    __lll_lock_wait
        jmp     2b
 
-       /* Unlock in loop requires wakeup.  */
-3:
-.LSbl2:
+       /* The initial unlocking of the mutex failed.  */
+16:
+       LOCK
+#if cond_lock == 0
+       subl    $1, (%ebx)
+#else
+       subl    $1, cond_lock(%ebx)
+#endif
+       jne     18b
+
+       movl    %eax, %esi
 #if cond_lock == 0
        movl    %ebx, %eax
 #else
@@ -336,14 +364,18 @@ __pthread_cond_timedwait:
        addl    $LLL_PRIVATE, %ecx
 #endif
        call    __lll_unlock_wake
-       jmp     4b
 
-       /* Locking in loop failed.  */
-5:
+       movl    %esi, %eax
+       jmp     18b
+
+       cfi_adjust_cfa_offset(FRAME_SIZE)
+
+       /* Unlock in loop requires wakeup.  */
+3:
 #if cond_lock == 0
-       movl    %ebx, %edx
+       movl    %ebx, %eax
 #else
-       leal    cond_lock(%ebx), %edx
+       leal    cond_lock(%ebx), %eax
 #endif
 #if (LLL_SHARED-LLL_PRIVATE) > 255
        xorl    %ecx, %ecx
@@ -355,15 +387,15 @@ __pthread_cond_timedwait:
 #if LLL_PRIVATE != 0
        addl    $LLL_PRIVATE, %ecx
 #endif
-       call    __lll_lock_wait
-       jmp     6b
+       call    __lll_unlock_wake
+       jmp     4b
 
-       /* Unlock after loop requires wakeup.  */
-10:
+       /* Locking in loop failed.  */
+5:
 #if cond_lock == 0
-       movl    %ebx, %eax
+       movl    %ebx, %edx
 #else
-       leal    cond_lock(%ebx), %eax
+       leal    cond_lock(%ebx), %edx
 #endif
 #if (LLL_SHARED-LLL_PRIVATE) > 255
        xorl    %ecx, %ecx
@@ -375,21 +407,11 @@ __pthread_cond_timedwait:
 #if LLL_PRIVATE != 0
        addl    $LLL_PRIVATE, %ecx
 #endif
-       call    __lll_unlock_wake
-       jmp     11b
-
-       /* The initial unlocking of the mutex failed.  */
-16:
-.LSbl3:
-       LOCK
-#if cond_lock == 0
-       subl    $1, (%ebx)
-#else
-       subl    $1, cond_lock(%ebx)
-#endif
-       jne     18b
+       call    __lll_lock_wait
+       jmp     6b
 
-       movl    %eax, %esi
+       /* Unlock after loop requires wakeup.  */
+10:
 #if cond_lock == 0
        movl    %ebx, %eax
 #else
@@ -406,13 +428,10 @@ __pthread_cond_timedwait:
        addl    $LLL_PRIVATE, %ecx
 #endif
        call    __lll_unlock_wake
-
-       movl    %esi, %eax
-       jmp     18b
+       jmp     11b
 
 #if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
        /* clock_gettime not available.  */
-.LSbl4:
 19:    leal    4(%esp), %ebx
        xorl    %ecx, %ecx
        movl    $__NR_gettimeofday, %eax
@@ -443,7 +462,6 @@ versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
        .type   __condvar_tw_cleanup2, @function
 __condvar_tw_cleanup2:
        subl    $cond_futex, %ebx
-.LSbl5:
        .size   __condvar_tw_cleanup2, .-__condvar_tw_cleanup2
        .type   __condvar_tw_cleanup, @function
 __condvar_tw_cleanup:
@@ -583,14 +601,15 @@ __condvar_tw_cleanup:
        call    _Unwind_Resume
        hlt
 .LENDCODE:
+       cfi_endproc
        .size   __condvar_tw_cleanup, .-__condvar_tw_cleanup
 
 
        .section .gcc_except_table,"a",@progbits
 .LexceptSTART:
-       .byte   0xff                            # @LPStart format (omit)
-       .byte   0xff                            # @TType format (omit)
-       .byte   0x0b                            # call-site format
+       .byte   DW_EH_PE_omit                   # @LPStart format (omit)
+       .byte   DW_EH_PE_omit                   # @TType format (omit)
+       .byte   DW_EH_PE_sdata4                 # call-site format
                                                # DW_EH_PE_sdata4
        .uleb128 .Lcstend-.Lcstbegin
 .Lcstbegin:
@@ -613,144 +632,13 @@ __condvar_tw_cleanup:
 .Lcstend:
 
 
-       .section .eh_frame,"a",@progbits
-.LSTARTFRAME:
-       .long   L(ENDCIE)-L(STARTCIE)           # Length of the CIE.
-.LSTARTCIE:
-       .long   0                               # CIE ID.
-       .byte   1                               # Version number.
-#ifdef SHARED
-       .string "zPLR"                          # NUL-terminated augmentation
-                                               # string.
-#else
-       .string "zPL"                           # NUL-terminated augmentation
-                                               # string.
-#endif
-       .uleb128 1                              # Code alignment factor.
-       .sleb128 -4                             # Data alignment factor.
-       .byte   8                               # Return address register
-                                               # column.
-#ifdef SHARED
-       .uleb128 7                              # Augmentation value length.
-       .byte   0x9b                            # Personality: DW_EH_PE_pcrel
-                                               # + DW_EH_PE_sdata4
-                                               # + DW_EH_PE_indirect
-       .long   DW.ref.__gcc_personality_v0-.
-       .byte   0x1b                            # LSDA Encoding: DW_EH_PE_pcrel
-                                               # + DW_EH_PE_sdata4.
-       .byte   0x1b                            # FDE Encoding: DW_EH_PE_pcrel
-                                               # + DW_EH_PE_sdata4.
-#else
-       .uleb128 6                              # Augmentation value length.
-       .byte   0x0                             # Personality: absolute
-       .long   __gcc_personality_v0
-       .byte   0x0                             # LSDA Encoding: absolute
-#endif
-       .byte 0x0c                              # DW_CFA_def_cfa
-       .uleb128 4
-       .uleb128 4
-       .byte   0x88                            # DW_CFA_offset, column 0x8
-       .uleb128 1
-       .align 4
-.LENDCIE:
-
-       .long   .LENDFDE-.LSTARTFDE             # Length of the FDE.
-.LSTARTFDE:
-       .long   .LSTARTFDE-.LSTARTFRAME         # CIE pointer.
-#ifdef SHARED
-       .long   .LSTARTCODE-.                   # PC-relative start address
-                                               # of the code
-#else
-       .long   .LSTARTCODE                     # Start address of the code.
-#endif
-       .long   .LENDCODE-.LSTARTCODE           # Length of the code.
-       .uleb128 4                              # Augmentation size
-#ifdef SHARED
-       .long   .LexceptSTART-.
-#else
-       .long   .LexceptSTART
-#endif
-       .byte   0x40+.Lpush_ebp-.LSTARTCODE     # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 8
-       .byte   0x85                            # DW_CFA_offset %ebp
-       .uleb128 2
-       .byte   0x40+ .Lpush_edi-.Lpush_ebp     # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 12
-       .byte   0x87                            # DW_CFA_offset %edi
-       .uleb128 3
-       .byte   0x40+.Lpush_esi-.Lpush_edi      # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 16
-       .byte   0x86                            # DW_CFA_offset %esi
-       .uleb128 4
-       .byte   0x40+.Lpush_ebx-.Lpush_esi      # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 20
-       .byte   0x83                            # DW_CFA_offset %ebx
-       .uleb128 5
-       .byte   4                               # DW_CFA_advance_loc4
-       .4byte  .Lsubl-.Lpush_ebx
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 20+FRAME_SIZE
-       .byte   4                               # DW_CFA_advance_loc4
-       .4byte  .Laddl-.Lsubl
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 20
-       .byte   0x40+.Lpop_ebx-.Laddl           # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 16
-       .byte   0xc3                            # DW_CFA_restore %ebx
-       .byte   0x40+.Lpop_esi-.Lpop_ebx        # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 12
-       .byte   0xc6                            # DW_CFA_restore %esi
-       .byte   0x40+.Lpop_edi-.Lpop_esi        # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 8
-       .byte   0xc7                            # DW_CFA_restore %edi
-       .byte   0x40+.Lpop_ebp-.Lpop_edi        # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 4
-       .byte   0xc5                            # DW_CFA_restore %ebp
-       .byte   0x40+.LSbl1-.Lpop_edi           # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 20
-       .byte   4                               # DW_CFA_advance_loc4
-       .4byte  .LSbl2-.LSbl1
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 20+FRAME_SIZE
-       .byte   0x85                            # DW_CFA_offset %ebp
-       .uleb128 2
-       .byte   0x87                            # DW_CFA_offset %edi
-       .uleb128 3
-       .byte   0x86                            # DW_CFA_offset %esi
-       .uleb128 4
-       .byte   0x83                            # DW_CFA_offset %ebx
-       .uleb128 5
-       .byte   4                               # DW_CFA_advance_loc4
-       .4byte  .LSbl3-.LSbl2
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 20
-       .byte   4                               # DW_CFA_advance_loc4
-#if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
-       .4byte  .LSbl4-.LSbl3
-#else
-       .4byte  .LSbl5-.LSbl3
-#endif
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 20+FRAME_SIZE
-       .align  4
-.LENDFDE:
-
 #ifdef SHARED
        .hidden DW.ref.__gcc_personality_v0
-       .weak   DW.ref.__gcc_personality_v0
+       .weak   DW.ref.__gcc_personality_v0
        .section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
-       .align 4
-       .type   DW.ref.__gcc_personality_v0, @object
-       .size   DW.ref.__gcc_personality_v0, 4
+       .align  4
+       .type   DW.ref.__gcc_personality_v0, @object
+       .size   DW.ref.__gcc_personality_v0, 4
 DW.ref.__gcc_personality_v0:
        .long   __gcc_personality_v0
 #endif
index 5b301979b534fdbb45522c19c4f2433c701ae57b..776b95e40c198eb0f929040ee409efc5f8a39a28 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004, 2006-2007, 2009 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
        .align  16
 __pthread_cond_wait:
 .LSTARTCODE:
+       cfi_startproc
+#ifdef SHARED
+       cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+                       DW.ref.__gcc_personality_v0)
+       cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+#else
+       cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
+       cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
+#endif
 
        pushl   %edi
-.Lpush_edi:
+       cfi_adjust_cfa_offset(4)
+       cfi_rel_offset(%edi, 0)
        pushl   %esi
-.Lpush_esi:
+       cfi_adjust_cfa_offset(4)
+       cfi_rel_offset(%esi, 0)
        pushl   %ebx
-.Lpush_ebx:
+       cfi_adjust_cfa_offset(4)
+       cfi_rel_offset(%ebx, 0)
+       cfi_remember_state
 
        xorl    %esi, %esi
        movl    16(%esp), %ebx
@@ -76,7 +89,7 @@ __pthread_cond_wait:
 
 #define FRAME_SIZE 16
        subl    $FRAME_SIZE, %esp
-.Lsubl:
+       cfi_adjust_cfa_offset(FRAME_SIZE)
 
        /* Get and store current wakeup_seq value.  */
        movl    wakeup_seq(%ebx), %edi
@@ -202,21 +215,25 @@ __pthread_cond_wait:
 11:    movl    20+FRAME_SIZE(%esp), %eax
        call    __pthread_mutex_cond_lock
        addl    $FRAME_SIZE, %esp
-.Laddl:
+       cfi_adjust_cfa_offset(-FRAME_SIZE);
 
 14:    popl    %ebx
-.Lpop_ebx:
+       cfi_adjust_cfa_offset(-4)
+       cfi_restore(%ebx)
        popl    %esi
-.Lpop_esi:
+       cfi_adjust_cfa_offset(-4)
+       cfi_restore(%esi)
        popl    %edi
-.Lpop_edi:
+       cfi_adjust_cfa_offset(-4)
+       cfi_restore(%edi)
 
        /* We return the result of the mutex_lock operation.  */
        ret
 
+       cfi_restore_state
+
        /* Initial locking failed.  */
 1:
-.LSbl1:
 #if cond_lock == 0
        movl    %ebx, %edx
 #else
@@ -235,9 +252,17 @@ __pthread_cond_wait:
        call    __lll_lock_wait
        jmp     2b
 
-       /* Unlock in loop requires waekup.  */
-3:
-.LSbl2:
+       /* The initial unlocking of the mutex failed.  */
+12:
+       LOCK
+#if cond_lock == 0
+       subl    $1, (%ebx)
+#else
+       subl    $1, cond_lock(%ebx)
+#endif
+       jne     14b
+
+       movl    %eax, %esi
 #if cond_lock == 0
        movl    %ebx, %eax
 #else
@@ -254,14 +279,18 @@ __pthread_cond_wait:
        addl    $LLL_PRIVATE, %ecx
 #endif
        call    __lll_unlock_wake
-       jmp     4b
 
-       /* Locking in loop failed.  */
-5:
+       movl    %esi, %eax
+       jmp     14b
+
+       cfi_adjust_cfa_offset(FRAME_SIZE)
+
+       /* Unlock in loop requires wakeup.  */
+3:
 #if cond_lock == 0
-       movl    %ebx, %edx
+       movl    %ebx, %eax
 #else
-       leal    cond_lock(%ebx), %edx
+       leal    cond_lock(%ebx), %eax
 #endif
 #if (LLL_SHARED-LLL_PRIVATE) > 255
        xorl    %ecx, %ecx
@@ -273,15 +302,15 @@ __pthread_cond_wait:
 #if LLL_PRIVATE != 0
        addl    $LLL_PRIVATE, %ecx
 #endif
-       call    __lll_lock_wait
-       jmp     6b
+       call    __lll_unlock_wake
+       jmp     4b
 
-       /* Unlock after loop requires wakeup.  */
-10:
+       /* Locking in loop failed.  */
+5:
 #if cond_lock == 0
-       movl    %ebx, %eax
+       movl    %ebx, %edx
 #else
-       leal    cond_lock(%ebx), %eax
+       leal    cond_lock(%ebx), %edx
 #endif
 #if (LLL_SHARED-LLL_PRIVATE) > 255
        xorl    %ecx, %ecx
@@ -293,21 +322,11 @@ __pthread_cond_wait:
 #if LLL_PRIVATE != 0
        addl    $LLL_PRIVATE, %ecx
 #endif
-       call    __lll_unlock_wake
-       jmp     11b
-
-       /* The initial unlocking of the mutex failed.  */
-12:
-.LSbl3:
-       LOCK
-#if cond_lock == 0
-       subl    $1, (%ebx)
-#else
-       subl    $1, cond_lock(%ebx)
-#endif
-       jne     14b
+       call    __lll_lock_wait
+       jmp     6b
 
-       movl    %eax, %esi
+       /* Unlock after loop requires wakeup.  */
+10:
 #if cond_lock == 0
        movl    %ebx, %eax
 #else
@@ -324,9 +343,7 @@ __pthread_cond_wait:
        addl    $LLL_PRIVATE, %ecx
 #endif
        call    __lll_unlock_wake
-
-       movl    %esi, %eax
-       jmp     14b
+       jmp     11b
        .size   __pthread_cond_wait, .-__pthread_cond_wait
 versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
                  GLIBC_2_3_2)
@@ -475,14 +492,15 @@ __condvar_w_cleanup:
        call    _Unwind_Resume
        hlt
 .LENDCODE:
+       cfi_endproc
        .size   __condvar_w_cleanup, .-__condvar_w_cleanup
 
 
        .section .gcc_except_table,"a",@progbits
 .LexceptSTART:
-       .byte   0xff                            # @LPStart format (omit)
-       .byte   0xff                            # @TType format (omit)
-       .byte   0x0b                            # call-site format
+       .byte   DW_EH_PE_omit                   # @LPStart format (omit)
+       .byte   DW_EH_PE_omit                   # @TType format (omit)
+       .byte   DW_EH_PE_sdata4                 # call-site format
                                                # DW_EH_PE_sdata4
        .uleb128 .Lcstend-.Lcstbegin
 .Lcstbegin:
@@ -504,123 +522,6 @@ __condvar_w_cleanup:
        .uleb128  0
 .Lcstend:
 
-       .section .eh_frame,"a",@progbits
-.LSTARTFRAME:
-       .long   L(ENDCIE)-L(STARTCIE)           # Length of the CIE.
-.LSTARTCIE:
-       .long   0                               # CIE ID.
-       .byte   1                               # Version number.
-#ifdef SHARED
-       .string "zPLR"                          # NUL-terminated augmentation
-                                               # string.
-#else
-       .string "zPL"                           # NUL-terminated augmentation
-                                               # string.
-#endif
-       .uleb128 1                              # Code alignment factor.
-       .sleb128 -4                             # Data alignment factor.
-       .byte   8                               # Return address register
-                                               # column.
-#ifdef SHARED
-       .uleb128 7                              # Augmentation value length.
-       .byte   0x9b                            # Personality: DW_EH_PE_pcrel
-                                               # + DW_EH_PE_sdata4
-                                               # + DW_EH_PE_indirect
-       .long   DW.ref.__gcc_personality_v0-.
-       .byte   0x1b                            # LSDA Encoding: DW_EH_PE_pcrel
-                                               # + DW_EH_PE_sdata4.
-       .byte   0x1b                            # FDE Encoding: DW_EH_PE_pcrel
-                                               # + DW_EH_PE_sdata4.
-#else
-       .uleb128 6                              # Augmentation value length.
-       .byte   0x0                             # Personality: absolute
-       .long   __gcc_personality_v0
-       .byte   0x0                             # LSDA Encoding: absolute
-#endif
-       .byte 0x0c                              # DW_CFA_def_cfa
-       .uleb128 4
-       .uleb128 4
-       .byte   0x88                            # DW_CFA_offset, column 0x8
-       .uleb128 1
-       .align 4
-.LENDCIE:
-
-       .long   .LENDFDE-.LSTARTFDE             # Length of the FDE.
-.LSTARTFDE:
-       .long   .LSTARTFDE-.LSTARTFRAME         # CIE pointer.
-#ifdef SHARED
-       .long   .LSTARTCODE-.                   # PC-relative start address
-                                               # of the code.
-#else
-       .long   .LSTARTCODE                     # Start address of the code.
-#endif
-       .long   .LENDCODE-.LSTARTCODE           # Length of the code.
-       .uleb128 4                              # Augmentation size
-#ifdef SHARED
-       .long   .LexceptSTART-.
-#else
-       .long   .LexceptSTART
-#endif
-       .byte   0x40+.Lpush_edi-.LSTARTCODE     # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 8
-       .byte   0x87                            # DW_CFA_offset %edi
-       .uleb128 2
-       .byte   0x40+.Lpush_esi-.Lpush_edi      # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 12
-       .byte   0x86                            # DW_CFA_offset %esi
-       .uleb128 3
-       .byte   0x40+.Lpush_ebx-.Lpush_esi      # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 16
-       .byte   0x83                            # DW_CFA_offset %ebx
-       .uleb128 4
-       .byte   4                               # DW_CFA_advance_loc4
-       .4byte  .Lsubl-.Lpush_ebx
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 16+FRAME_SIZE
-       .byte   4                               # DW_CFA_advance_loc4
-       .4byte  .Laddl-.Lsubl
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 16
-       .byte   0x40+ .Lpop_ebx-.Laddl          # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 12
-       .byte   0xc3                            # DW_CFA_restore %ebx
-       .byte   0x40+.Lpop_esi-.Lpop_ebx        # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 8
-       .byte   0xc6                            # DW_CFA_restore %esi
-       .byte   0x40+.Lpop_edi-.Lpop_esi        # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 4
-       .byte   0xc7                            # DW_CFA_restore %edi
-       .byte   0x40+.LSbl1-.Lpop_edi           # DW_CFA_advance_loc+N
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 16
-       .byte   0x87                            # DW_CFA_offset %edi
-       .uleb128 2
-       .byte   0x86                            # DW_CFA_offset %esi
-       .uleb128 3
-       .byte   0x83                            # DW_CFA_offset %ebx
-       .uleb128 4
-       .byte   4                               # DW_CFA_advance_loc4
-       .4byte  .LSbl2-.LSbl1
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 16+FRAME_SIZE
-       .byte   4                               # DW_CFA_advance_loc4
-       .4byte  .LSbl3-.LSbl2
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 16
-       .byte   4                               # DW_CFA_advance_loc4
-       .4byte  .LSbl4-.LSbl3
-       .byte   14                              # DW_CFA_def_cfa_offset
-       .uleb128 16+FRAME_SIZE
-       .align  4
-.LENDFDE:
-
-
 #ifdef PIC
        .section .gnu.linkonce.t.__i686.get_pc_thunk.cx,"ax",@progbits
        .globl  __i686.get_pc_thunk.cx