aboutsummaryrefslogtreecommitdiff
path: root/libffi
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2005-05-08 16:23:50 -0700
committerRichard Henderson <rth@gcc.gnu.org>2005-05-08 16:23:50 -0700
commit7e15b5fe4c6e861b3cb36c3955c5743c3954a5b5 (patch)
treecf0f501c7fbc3b16bc3c42324fb7fe9055fd3dbb /libffi
parent32800e7c8ce8a31f721b59bbcd8769b8f796ea7e (diff)
downloadgcc-7e15b5fe4c6e861b3cb36c3955c5743c3954a5b5.zip
gcc-7e15b5fe4c6e861b3cb36c3955c5743c3954a5b5.tar.gz
gcc-7e15b5fe4c6e861b3cb36c3955c5743c3954a5b5.tar.bz2
re PR libffi/21285 (gij fails to handle NullPointerException exception)
PR libffi/21285 * src/alpha/osf.S: Update unwind into to match code. From-SVN: r99415
Diffstat (limited to 'libffi')
-rw-r--r--libffi/ChangeLog5
-rw-r--r--libffi/src/alpha/osf.S94
2 files changed, 54 insertions, 45 deletions
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index 84003df..a686d39 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,8 @@
+2005-05-08 Richard Henderson <rth@redhat.com>
+
+ PR libffi/21285
+ * src/alpha/osf.S: Update unwind into to match code.
+
2005-05-04 Andreas Degert <ad@papyrus-gmbh.de>
Richard Henderson <rth@redhat.com>
diff --git a/libffi/src/alpha/osf.S b/libffi/src/alpha/osf.S
index cfa7a96..2f03d62 100644
--- a/libffi/src/alpha/osf.S
+++ b/libffi/src/alpha/osf.S
@@ -49,12 +49,10 @@ $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:
+$LCFI1:
.prologue 0
stq $19, 24($1)
@@ -84,6 +82,7 @@ $LCFI2:
ldq $19, 24($15)
ldq $18, 16($15)
ldq $26, 0($15)
+$LCFI2:
beq $19, $noretval
# Store the return value out in the proper type.
@@ -94,22 +93,26 @@ $LCFI2:
cmpeq $18, FFI_TYPE_DOUBLE, $3
bne $3, $retdouble
+ .align 3
$noretval:
ldq $15, 8($15)
ret
+ .align 4
$retint:
stq $0, 0($19)
nop
ldq $15, 8($15)
ret
+ .align 4
$retfloat:
sts $f0, 0($19)
nop
ldq $15, 8($15)
ret
+ .align 4
$retdouble:
stt $f0, 0($19)
nop
@@ -295,61 +298,62 @@ $load_table:
#ifdef __ELF__
.section .eh_frame,EH_FRAME_FLAGS,@progbits
__FRAME_BEGIN__:
- .4byte $LECIE1-$LSCIE1 # Length of Common Information Entry
+ .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
+ .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 26 # CIE RA Column
+ .byte 0x1 # uleb128 0x1; Augmentation size
+ .byte 0x1b # FDE Encoding (pcrel sdata4)
+ .byte 0xc # DW_CFA_def_cfa
+ .byte 30 # uleb128 column 30
+ .byte 0 # uleb128 offset 0
.align 3
$LECIE1:
$LSFDE1:
- .4byte $LEFDE1-$LASFDE1 # FDE Length
+ .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 $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 $LCFI1-$LFB1
+ .byte 0x9a # DW_CFA_offset, column 26
+ .byte 4 # uleb128 4*-8
+ .byte 0x8f # DW_CFA_offset, column 15
+ .byte 0x3 # uleb128 3*-8
+ .byte 0xc # DW_CFA_def_cfa
+ .byte 15 # uleb128 column 15
+ .byte 32 # uleb128 offset 32
+
+ .byte 0x4 # DW_CFA_advance_loc4
.4byte $LCFI2-$LCFI1
- .byte 0xc # DW_CFA_def_cfa
- .byte 0xf # uleb128 0xf
- .byte 0x30 # uleb128 0x30
+ .byte 0xda # DW_CFA_restore, column 26
.align 3
$LEFDE1:
$LSFDE3:
- .4byte $LEFDE3-$LASFDE3 # FDE Length
+ .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 $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
+ .byte 0xe # DW_CFA_def_cfa_offset
+ .byte 0x80,0x1 # uleb128 128
+
+ .byte 0x4 # DW_CFA_advance_loc4
.4byte $LCFI6-$LCFI5
- .byte 0x9a # DW_CFA_offset, column 0x1a
- .byte 0x12 # uleb128 0x12
+ .byte 0x9a # DW_CFA_offset, column 26
+ .byte 16 # uleb128 offset 16*-8
.align 3
$LEFDE3:
#endif