This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

fix libffi/21285


The unwind info didn't match the code after the last reorg.  Not sure
why the libffi.special unwind test was working, but gij wasn't.

I'll apply this to 3.4 and 4.0 after testing.


r~


        * src/alpha/osf.S: Update unwind into to match code.

Index: libffi/src/alpha/osf.S
===================================================================
RCS file: /cvs/gcc/gcc/libffi/src/alpha/osf.S,v
retrieving revision 1.9
diff -u -p -d -r1.9 osf.S
--- libffi/src/alpha/osf.S	21 Oct 2003 19:01:55 -0000	1.9
+++ libffi/src/alpha/osf.S	8 May 2005 22:51:15 -0000
@@ -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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]