From 7e15b5fe4c6e861b3cb36c3955c5743c3954a5b5 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sun, 8 May 2005 16:23:50 -0700 Subject: 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 --- libffi/src/alpha/osf.S | 94 ++++++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 45 deletions(-) (limited to 'libffi/src') 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 -- cgit v1.1