OSDN Git Service

2001-06-03 Andrew Haley <aph@redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 3 Jun 2001 14:05:38 +0000 (14:05 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 3 Jun 2001 14:05:38 +0000 (14:05 +0000)
        * src/alpha/osf.S: Add unwind info.
        * src/powerpc/sysv.S: Add unwind info.
        * src/powerpc/ppc_closure.S: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42828 138bc75d-0d04-0410-961f-82ee72b054a4

libffi/ChangeLog
libffi/src/alpha/osf.S
libffi/src/powerpc/ppc_closure.S
libffi/src/powerpc/sysv.S

index 8ae49a3..3194d1d 100644 (file)
@@ -1,3 +1,9 @@
+2001-06-03  Andrew Haley  <aph@redhat.com>
+
+        * src/alpha/osf.S: Add unwind info.
+        * src/powerpc/sysv.S: Add unwind info.
+        * src/powerpc/ppc_closure.S: Likewise.
+
 2000-05-31  Jeff Sturm  <jsturm@one-point.com>
 
        * configure.in: Fix AC_ARG_ENABLE usage.
index b3dc477..5605669 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------
-   osf.S - Copyright (c) 1998 Cygnus Solutions
+   osf.S - Copyright (c) 1998, 2001 Red Hat
    
    Alpha/OSF Foreign Function Interface 
 
 ffi_call_osf:
        .frame  $15, 32, $26, 0
        .mask   0x4008000, -32
+$LFB1:
        addq    $16,$17,$1
        mov     $16, $30
        stq     $26, 0($1)
+$LCFI0:
        stq     $15, 8($1)
+$LCFI1:
        stq     $18, 16($1)
        mov     $1, $15
+$LCFI2:
        .prologue 0
 
        stq     $19, 24($1)
@@ -108,6 +112,7 @@ $retdouble:
        nop
        ldq     $15, 8($15)
        ret
+$LFE1:
 
        .end    ffi_call_osf
 
@@ -121,9 +126,12 @@ $retdouble:
 ffi_closure_osf:
        .frame  $30, 16*8, $26, 0
        .mask   0x4000000, -16*8
+$LFB2:
        ldgp    $29, 0($27)
        subq    $30, 16*8, $30
+$LCFI5:
        stq     $26, 0($30)
+$LCFI6:
        .prologue 1
 
        # Store all of the potential argument registers in va_list format.
@@ -237,6 +245,7 @@ $load_64:
        nop
        addq    $30, 16*8, $30
        ret
+$LFE2:
 
        .end    ffi_closure_osf
 
@@ -275,3 +284,63 @@ $load_table:
        || FFI_TYPE_LAST != 14
 #error "osf.S out of sync with ffi.h"
 #endif
+
+       .section        .eh_frame,"aw",@progbits
+__FRAME_BEGIN__:
+       .4byte  $LECIE1-$LSCIE1  # Length of Common Information Entry
+$LSCIE1:
+       .4byte  0x0      # CIE Identifier Tag
+       .byte   0x1      # CIE Version
+       .ascii "zR\0"    # CIE Augmentation
+       .byte   0x1      # uleb128 0x1; CIE Code Alignment Factor
+       .byte   0x78     # sleb128 -8; CIE Data Alignment Factor
+       .byte   0x1a     # CIE RA Column
+       .byte   0x1      # uleb128 0x1; Augmentation size
+       .byte   0x1b     # FDE Encoding (pcrel sdata4)
+       .byte   0xc      # DW_CFA_def_cfa
+       .byte   0x1e     # uleb128 0x1e
+       .byte   0x0      # uleb128 0x0
+       .align 3
+$LECIE1:
+$LSFDE1:
+       .4byte  $LEFDE1-$LASFDE1         # FDE Length
+$LASFDE1:
+       .4byte  $LASFDE1-__FRAME_BEGIN__         # FDE CIE offset
+       .4byte  $LFB1-.  # FDE initial location
+       .4byte  $LFE1-$LFB1      # FDE address range
+       .byte   0x0      # uleb128 0x0; Augmentation size
+       .byte   0x4      # DW_CFA_advance_loc4
+       .4byte  $LCFI0-$LFB1
+       .byte   0xe      # DW_CFA_def_cfa_offset
+       .byte   0x30     # uleb128 0x30
+       .byte   0x4      # DW_CFA_advance_loc4
+       .4byte  $LCFI1-$LCFI0
+       .byte   0x9a     # DW_CFA_offset, column 0x1a
+       .byte   0x6      # uleb128 0x6
+       .byte   0x8f     # DW_CFA_offset, column 0xf
+       .byte   0x5      # uleb128 0x5
+       .byte   0x4      # DW_CFA_advance_loc4
+       .4byte  $LCFI2-$LCFI1
+       .byte   0xc      # DW_CFA_def_cfa
+       .byte   0xf      # uleb128 0xf
+       .byte   0x30     # uleb128 0x30
+       .align 3
+$LEFDE1:
+
+$LSFDE3:
+       .4byte  $LEFDE3-$LASFDE3         # FDE Length
+$LASFDE3:
+       .4byte  $LASFDE3-__FRAME_BEGIN__         # FDE CIE offset
+       .4byte  $LFB2-.  # FDE initial location
+       .4byte  $LFE2-$LFB2      # FDE address range
+       .byte   0x0      # uleb128 0x0; Augmentation size
+       .byte   0x4      # DW_CFA_advance_loc4
+       .4byte  $LCFI5-$LFB2
+       .byte   0xe      # DW_CFA_def_cfa_offset
+       .byte   0x90,0x1         # uleb128 0x90
+       .byte   0x4      # DW_CFA_advance_loc4
+       .4byte  $LCFI6-$LCFI5
+       .byte   0x9a     # DW_CFA_offset, column 0x1a
+       .byte   0x12     # uleb128 0x12
+       .align 3
+$LEFDE3:
index 3118577..a9ea9c7 100644 (file)
@@ -4,9 +4,12 @@
 .globl ffi_closure_helper_SYSV
 
 ENTRY(ffi_closure_SYSV)
+.LFB1:
        stwu %r1,-144(%r1)
+.LCFI0:
        mflr %r0
        stw %r31,140(%r1)
+.LCFI1:
        stw %r0,148(%r1)
 
 # we want to build up an areas for the parameters passed
@@ -67,6 +70,7 @@ ENTRY(ffi_closure_SYSV)
        add %r3,%r3,%r4          # add contents of table to table address
        mtctr %r3
        bctr               # jump to it
+.LFE1:
        .align 2
 .L60:
        .long .L44-.L60    # FFI_TYPE_VOID
@@ -143,6 +147,35 @@ ENTRY(ffi_closure_SYSV)
        blr
 END(ffi_closure_SYSV)
 
-
-
-
+       .section        ".eh_frame","aw"
+__FRAME_BEGIN__:
+       .4byte  .LECIE1-.LSCIE1  # Length of Common Information Entry
+.LSCIE1:
+       .4byte  0x0      # CIE Identifier Tag
+       .byte   0x1      # CIE Version
+       .ascii "\0"      # CIE Augmentation
+       .byte   0x1      # uleb128 0x1; CIE Code Alignment Factor
+       .byte   0x7c     # sleb128 -4; CIE Data Alignment Factor
+       .byte   0x41     # CIE RA Column
+       .byte   0xc      # DW_CFA_def_cfa
+       .byte   0x1      # uleb128 0x1
+       .byte   0x0      # uleb128 0x0
+       .align 2
+.LECIE1:
+.LSFDE1:
+       .4byte  .LEFDE1-.LASFDE1         # FDE Length
+.LASFDE1:
+       .4byte  .LASFDE1-__FRAME_BEGIN__         # FDE CIE offset
+       .4byte  .LFB1    # FDE initial location
+       .4byte  .LFE1-.LFB1      # FDE address range
+       .byte   0x4      # DW_CFA_advance_loc4
+       .4byte  .LCFI0-.LFB1
+       .byte   0xe      # DW_CFA_def_cfa_offset
+       .byte   144,1    # uleb128 144
+       .byte   0x4      # DW_CFA_advance_loc4
+       .4byte  .LCFI1-.LCFI0
+       .byte   0x2f     # DW_CFA_GNU_negative_offset_extended
+       .byte   0x41     # uleb128 0x41
+       .byte   0x1      # uleb128 0x1
+       .align 2
+.LEFDE1:
index 88b0378..538ffa8 100644 (file)
 
        .globl ffi_prep_args
 ENTRY(ffi_call_SYSV)
+.LFB1:
        /* Save the old stack pointer as AP.  */
        mr      %r8,%r1
 
+.LCFI0:
        /* Allocate the stack space we need.  */
        stwux   %r1,%r1,%r4
        /* Save registers we use.  */
        mflr    %r9
        stw     %r28,-16(%r8)
+.LCFI1:
        stw     %r29,-12(%r8)
+.LCFI2:
        stw     %r30, -8(%r8)
+.LCFI3:
        stw     %r31, -4(%r8)
+.LCFI4:
        stw     %r9,   4(%r8)
+.LCFI5:
 
        /* Save arguments over call...  */
        mr      %r31,%r5        /* flags, */
        mr      %r30,%r6        /* rvalue, */
        mr      %r29,%r7        /* function address, */
        mr      %r28,%r8        /* our AP. */
+.LCFI6:
 
        /* Call ffi_prep_args.  */
        mr      %r4,%r1
@@ -116,4 +124,50 @@ L(fp_return_value):
 L(float_return_value):
        stfs    %f1,0(%r30)
        b       L(done_return_value)
+.LFE1:
 END(ffi_call_SYSV)
+
+      .section  ".eh_frame","aw"
+__FRAME_BEGIN__:
+      .4byte    .LECIE1-.LSCIE1  /*  Length of Common Information Entry */
+.LSCIE1:
+      .4byte    0x0      /*  CIE Identifier Tag */
+      .byte     0x1      /*  CIE Version */
+      .ascii "\0"        /*  CIE Augmentation */
+      .byte     0x1      /*  uleb128 0x1; CIE Code Alignment Factor */
+      .byte     0x7c     /*  sleb128 -4; CIE Data Alignment Factor */
+      .byte     0x41     /*  CIE RA Column */
+      .byte     0xc      /*  DW_CFA_def_cfa */
+      .byte     0x1      /*  uleb128 0x1 */
+      .byte     0x0      /*  uleb128 0x0 */
+      .align 2
+.LECIE1:
+.LSFDE1:
+      .4byte    .LEFDE1-.LASFDE1         /*  FDE Length */
+.LASFDE1:
+      .4byte    .LASFDE1-__FRAME_BEGIN__         /*  FDE CIE offset */
+      .4byte    .LFB1    /*  FDE initial location */
+      .4byte    .LFE1-.LFB1      /*  FDE address range */
+      .byte     0x4      /*  DW_CFA_advance_loc4 */
+      .4byte    .LCFI0-.LFB1
+      .byte     0xd      /*  DW_CFA_def_cfa_register */
+      .byte     0x08     /*  uleb128 0x08 */
+      .byte     0x4      /*  DW_CFA_advance_loc4 */
+      .4byte    .LCFI5-.LCFI0
+      .byte     0x2f     /*  DW_CFA_GNU_negative_offset_extended */
+      .byte     0x41     /*  uleb128 0x41 */
+      .byte     0x1      /*  uleb128 0x1 */
+      .byte     0x9f     /*  DW_CFA_offset, column 0x1f */
+      .byte     0x1      /*  uleb128 0x1 */
+      .byte     0x9e     /*  DW_CFA_offset, column 0x1e */
+      .byte     0x2      /*  uleb128 0x2 */
+      .byte     0x9d     /*  DW_CFA_offset, column 0x1d */
+      .byte     0x3      /*  uleb128 0x3 */
+      .byte     0x9c     /*  DW_CFA_offset, column 0x1c */
+      .byte     0x4      /*  uleb128 0x4 */
+      .byte     0x4      /*  DW_CFA_advance_loc4 */
+      .4byte    .LCFI6-.LCFI5
+      .byte     0xd      /*  DW_CFA_def_cfa_register */
+      .byte     0x1c     /*  uleb128 0x1c */
+      .align 2
+.LEFDE1: