Index: /branches/ide-1.0/ccl/lisp-kernel/x86-spentry64.s
===================================================================
--- /branches/ide-1.0/ccl/lisp-kernel/x86-spentry64.s	(revision 6781)
+++ /branches/ide-1.0/ccl/lisp-kernel/x86-spentry64.s	(revision 6782)
@@ -3895,4 +3895,5 @@
 
 _spentry(ffcall)
+LocalLabelPrefix[]ffcall:                
         /* Unbox %arg_z.  It's either a fixnum or macptr (or bignum) ;
           if not a fixnum, get the first word */
@@ -3943,4 +3944,5 @@
          __(movq %save2,%imm0)
         __endif
+LocalLabelPrefix[]ffcall_setup: 
 	__(addq $2*node_size,%rsp)
         __(movq %imm1,%r11)
@@ -3951,20 +3953,8 @@
 	__(pop %r8)
 	__(pop %r9)
+LocalLabelPrefix[]ffcall_setup_end: 
+LocalLabelPrefix[]ffcall_call:
 	__(call *%r11)
-        __ifdef([DARWIN])        
-        /* Handle exceptions, for ObjC 2.0 */
-        __(jmp LFFCallNoException)
-LFFCallLandingPad:      
-        __(movq %rax,%save1)
-        __(cmpq $1,%rdx)
-        __(je 1f)
-        __(movq %rax,%rdi)
-       	__(call *lisp_global(unwind_resume))
-1:      __(movq %save1,%rdi)
-        __(call *lisp_global(objc2_begin_catch))
-        __(movq %rax,%save1)
-        __(call *lisp_global(objc2_end_catch))
-LFFCallNoException:             
-        __endif
+LocalLabelPrefix[]ffcall_call_end:               
 	__(movq %rbp,%rsp)
         __ifdef([DARWIN_GS_HACK])
@@ -4015,7 +4005,68 @@
         __(leave)
 	__(ret)
+        __ifdef([DARWIN])        
+        /* Handle exceptions, for ObjC 2.0 */
+LocalLabelPrefix[]ffcallLandingPad:      
+        __(movq %rax,%save1)
+        __(cmpq $1,%rdx)
+        __(je 1f)
+        __(movq %rax,%rdi)
+LocalLabelPrefix[]ffcallUnwindResume:            
+       	__(call *lisp_global(unwind_resume))
+LocalLabelPrefix[]ffcallUnwindResume_end:         
+1:      __(movq %save1,%rdi)
+LocalLabelPrefix[]ffcallBeginCatch:              
+        __(call *lisp_global(objc2_begin_catch))
+LocalLabelPrefix[]ffcallBeginCatch_end:          
+        __(movq %rax,%save1)
+LocalLabelPrefix[]ffcallEndCatch:                
+        __(call *lisp_global(objc2_end_catch))
+LocalLabelPrefix[]ffcallEndCatch_end:            
+
+LocalLabelPrefix[]ffcall_end:   
+        __endif
+_endsubp(ffcall)
+
+        __ifdef([DARWIN])
+	.section __DATA,__gcc_except_tab
+GCC_except_table0:
+	.align 3
+LLSDA1:
+	.byte	0xff	/* @LPStart format (omit) */
+	.byte	0x0	/* @TType format (absolute) */
+	.byte	0x4d	/* uleb128 0x4d; @TType base offset */
+	.byte	0x3	/* call-site format (udata4) */
+	.byte	0x41	/* uleb128 0x41; Call-site table length */
+	
+	.long LocalLabelPrefix[]ffcall_setup-LocalLabelPrefix[]ffcall	/* region 0 start */
+	.long LocalLabelPrefix[]ffcall_setup_end-LocalLabelPrefix[]ffcall_setup	/* length */
+	.long	0x0	/* landing pad */
+	.byte	0x0	/* uleb128 0x0; action */
         
+	.long LocalLabelPrefix[]ffcall_call-LocalLabelPrefix[]ffcall	/* region 1 start */
+	.long LocalLabelPrefix[]ffcall_call_end-LocalLabelPrefix[]ffcall_call	/* length */
+	.long LocalLabelPrefix[]ffcallLandingPad-LocalLabelPrefix[]ffcall	/* landing pad */
+	.byte	0x1	/* uleb128 0x1; action */
         
-_endsubp(ffcall)
+	.long LocalLabelPrefix[]ffcallUnwindResume-LocalLabelPrefix[]ffcall	/* region 2 start */
+	.long LocalLabelPrefix[]ffcallUnwindResume_end-LocalLabelPrefix[]ffcallUnwindResume	/* length */
+	.long	0x0	/* landing pad */
+	.byte	0x0	/* uleb128 0x0; action */
+	
+	.long LocalLabelPrefix[]ffcallBeginCatch-LocalLabelPrefix[]ffcall	/* region 3 start */
+	.long LocalLabelPrefix[]ffcallBeginCatch_end-LocalLabelPrefix[]ffcallBeginCatch	/* length */
+	.long 0	/* landing pad */
+	.byte	0x0	/* uleb128 0x0; action */
+        
+	.long LocalLabelPrefix[]ffcallEndCatch-LocalLabelPrefix[]ffcall
+	.long LocalLabelPrefix[]ffcallEndCatch_end-LocalLabelPrefix[]ffcallEndCatch	/* length */
+	.long	0x0	/* landing pad */
+	.byte	0x0	/* uleb128 0x0; action */
+	.byte	0x1	/* Action record table */
+	.byte	0x0
+	.align 3
+	.quad	0       /* _OBJC_EHTYPE_$_NSException */
+        .text
+        __endif
 
 _spentry(ffcall_return_registers)
@@ -4763,3 +4814,57 @@
         __(int $3)
 _endsubp(unused_6)
-	
+
+        __ifdef([DARWIN])
+	.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
+EH_frame1:
+	.set L$set$12,LECIE1-LSCIE1
+	.long L$set$12	/* Length of Common Information Entry */
+LSCIE1:
+	.long	0x0	/* CIE Identifier Tag */
+	.byte	0x1	/* CIE Version */
+	.ascii "zPLR\0"	/* CIE Augmentation */
+	.byte	0x1	/* uleb128 0x1; CIE Code Alignment Factor */
+	.byte	0x78	/* sleb128 -8; CIE Data Alignment Factor */
+	.byte	0x10	/* CIE RA Column */
+	.byte	0x7	/* uleb128 0x7; Augmentation size */
+	.byte	0x8c	/* Personality (indirect  sdata8) */
+	.quad	lisp_global(objc_2_personality)
+	.byte	0x10	/* LSDA Encoding (pcrel) */
+	.byte	0x10	/* FDE Encoding (pcrel) */
+	.byte	0xc	/* DW_CFA_def_cfa */
+	.byte	0x7	/* uleb128 0x7 */
+	.byte	0x8	/* uleb128 0x8 */
+	.byte	0x90	/* DW_CFA_offset, column 0x10 */
+	.byte	0x1	/* uleb128 0x1 */
+	.align 3
+LECIE1:
+        .globl _SPffcall.eh
+_SPffcall.eh:
+        .long LEFDEffcall-LSFDEffcall
+LSFDEffcall:      
+        .long LSFDEffcall-EH_frame1 /* FDE CIE offset */
+        .quad Lffcall-. /* FDE Initial Location */
+        .quad Lffcall_end-Lffcall /* FDE address range */
+        .byte 8 /* uleb128 0x8; Augmentation size */
+        .quad LLSDA1-.           /* Language Specific Data Area */
+	.byte	0x4	/* DW_CFA_advance_loc4 */
+	.long Lffcall_setup-Lffcall
+	.byte	0xe	/* DW_CFA_def_cfa_offset */
+	.byte	0x10	/* uleb128 0x10 */
+	.byte	0x86	/* DW_CFA_offset, column 0x6 */
+	.byte	0x2	/* uleb128 0x2 */
+	.byte	0x4	/* DW_CFA_advance_loc4 */
+	.long Lffcall_setup_end-Lffcall_setup
+	.byte	0xd	/* DW_CFA_def_cfa_register */
+	.byte	0x6	/* uleb128 0x6 */
+	.byte	0x4	/* DW_CFA_advance_loc4 */
+	.long Lffcall_call_end-Lffcall_call
+	.byte	0x83	/* DW_CFA_offset, column 0x3 */
+	.byte	0x3	/* uleb128 0x3 */
+	.align 3
+LEFDEffcall:
+        .text
+        __endif
+        
+        
+         
