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]

libffi: unwind info for sparc


Needed to throw exceptions through ffi_call frames.  Tested on
sparc-sun-solaris2.8.  OK?

2002-03-29  Jeff Sturm  <jsturm@one-point.com>

	* src/sparc/v8.S: Add unwind info.
	* src/sparc/v9.S: Add unwind info.

Index: src/sparc/v8.S
===================================================================
RCS file: /cvs/gcc/gcc/libffi/src/sparc/v8.S,v
retrieving revision 1.3
diff -u -p -r1.3 v8.S
--- v8.S	2001/03/02 22:21:23	1.3
+++ v8.S	2002/03/29 14:17:14
@@ -36,7 +36,9 @@
 
 ffi_call_V8:
 _ffi_call_V8:
+.LLFB1:
 	save	%sp, -STACKFRAME, %sp
+.LLCFI0:
 	
 	sub	%sp, %i2, %sp	! alloca() space in stack for frame to set up
 	add	%sp, STACKFRAME, %l0	! %l0 has start of 
@@ -87,7 +89,38 @@ longlong:
 	st	%o1, [%i4+4]
 	ret
 	restore
+.LLFE1:
 
 .ffi_call_V8_end:
-        .size    ffi_call_V8,.ffi_call_V8_end-ffi_call_V8
+	.size	ffi_call_V8,.ffi_call_V8_end-ffi_call_V8
 
+	.section	".eh_frame",#alloc,#write
+.LLframe1:
+	.uaword	.LLECIE1-.LLSCIE1
+.LLSCIE1:
+	.uaword	0x0
+	.byte	0x1
+	.asciz	""
+	.byte	0x1
+	.byte	0x7c
+	.byte	0xf
+	.byte	0xc
+	.byte	0xe
+	.byte	0x0
+	.align 4
+.LLECIE1:
+	.uaword	.LLEFDE1-.LLASFDE1
+.LLASFDE1:
+	.uaword	.LLASFDE1-.LLframe1
+	.uaword	.LLFB1
+	.uaword	.LLFE1-.LLFB1
+	.byte	0x4
+	.uaword	.LLCFI0-.LLFB1
+	.byte	0xd
+	.byte	0x1e
+	.byte	0x2d
+	.byte	0x9
+	.byte	0xf
+	.byte	0x1f
+	.align 4
+.LLEFDE1:
Index: src/sparc/v9.S
===================================================================
RCS file: /cvs/gcc/gcc/libffi/src/sparc/v9.S,v
retrieving revision 1.2
diff -u -p -r1.2 v9.S
--- v9.S	2001/03/02 22:21:23	1.2
+++ v9.S	2002/03/29 14:17:15
@@ -41,7 +41,9 @@
 
 ffi_call_V9:
 _ffi_call_V9:
+.LLFB1:
 	save	%sp, -STACKFRAME, %sp
+.LLCFI0:
 	
 	sub	%sp, %i2, %sp	! alloca() space in stack for frame to set up
 	add	%sp, STACKFRAME+STACK_BIAS, %l0	! %l0 has start of 
@@ -118,8 +120,40 @@ dostruct:
 	std	%f6, [%i4+56]
 	ret
 	 restore
+.LLFE1:
 
 .ffi_call_V9_end:
-        .size    ffi_call_V9,.ffi_call_V9_end-ffi_call_V9
+	.size	ffi_call_V9,.ffi_call_V9_end-ffi_call_V9
+
+	.section	".eh_frame",#alloc,#write
+.LLframe1:
+	.uaword	.LLECIE1-.LLSCIE1
+.LLSCIE1:
+	.uaword	0x0
+	.byte	0x1
+	.asciz	""
+	.byte	0x1
+	.byte	0x78
+	.byte	0xf
+	.byte	0xc
+	.byte	0xe
+	.byte	0xff,0xf
+	.align 8
+.LLECIE1:
+	.uaword	.LLEFDE1-.LLASFDE1
+.LLASFDE1:
+	.uaword	.LLASFDE1-.LLframe1
+	.uaxword	.LLFB1
+	.uaxword	.LLFE1-.LLFB1
+	.byte	0x4
+	.uaword	.LLCFI0-.LLFB1
+	.byte	0xd
+	.byte	0x1e
+	.byte	0x2d
+	.byte	0x9
+	.byte	0xf
+	.byte	0x1f
+	.align 8
+.LLEFDE1:
 
 #endif


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