mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-03 15:55:37 +08:00
osf.S: Add unwind info.
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. From-SVN: r42828
This commit is contained in:
parent
c777a6def9
commit
552cb45af3
@ -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.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* -----------------------------------------------------------------------
|
||||
osf.S - Copyright (c) 1998 Cygnus Solutions
|
||||
osf.S - Copyright (c) 1998, 2001 Red Hat
|
||||
|
||||
Alpha/OSF Foreign Function Interface
|
||||
|
||||
@ -42,12 +42,16 @@
|
||||
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:
|
||||
|
@ -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:
|
||||
|
@ -31,24 +31,32 @@
|
||||
|
||||
.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:
|
||||
|
Loading…
Reference in New Issue
Block a user