|  | @@ -21,16 +21,6 @@
 | 
	
		
			
				|  |  |  #define _SETJMP_H
 | 
	
		
			
				|  |  |  #include <bits/setjmp.h>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -.globl _setjmp;
 | 
	
		
			
				|  |  | -.type	 _setjmp,@function
 | 
	
		
			
				|  |  | -.align 4;                                                               \
 | 
	
		
			
				|  |  | -_setjmp:
 | 
	
		
			
				|  |  | -	popl %eax		/* Pop return address.  */
 | 
	
		
			
				|  |  | -	popl %ecx		/* Pop jmp_buf.  */
 | 
	
		
			
				|  |  | -	pushl $0		/* Push zero argument.  */
 | 
	
		
			
				|  |  | -	pushl %ecx		/* Push jmp_buf.  */
 | 
	
		
			
				|  |  | -	pushl %eax		/* Push back return address.  */
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  .globl __sigsetjmp;
 | 
	
		
			
				|  |  |  .type	 __sigsetjmp,@function
 | 
	
		
			
				|  |  |  .align 4;                                                               \
 | 
	
	
		
			
				|  | @@ -46,6 +36,9 @@ __sigsetjmp:
 | 
	
		
			
				|  |  |  	movl 0(%esp), %ecx	/* Save PC we are returning to now.  */
 | 
	
		
			
				|  |  |       	movl %ecx, (JB_PC*4)(%eax)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	pushl 0x8(%esp) /* save mask */
 | 
	
		
			
				|  |  | +	pushl 0x8(%esp) /* jump buf */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	/* Make a tail call to __sigjmp_save; it takes the same args.  */
 | 
	
		
			
				|  |  |  #if defined(PIC)
 | 
	
		
			
				|  |  |  	/* We cannot use the PLT, because it requires that %ebx be set, but
 | 
	
	
		
			
				|  | @@ -57,8 +50,23 @@ Lhere:
 | 
	
		
			
				|  |  |  	popl %ecx
 | 
	
		
			
				|  |  |  	addl $_GLOBAL_OFFSET_TABLE_+[.-Lhere], %ecx
 | 
	
		
			
				|  |  |  	movl (__sigjmp_save)(%ecx), %ecx
 | 
	
		
			
				|  |  | -	jmp *%ecx
 | 
	
		
			
				|  |  | +	call *%ecx
 | 
	
		
			
				|  |  |  #else
 | 
	
		
			
				|  |  | -	jmp __sigjmp_save
 | 
	
		
			
				|  |  | +	call __sigjmp_save
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	add  $8, %esp
 | 
	
		
			
				|  |  | +	ret
 | 
	
		
			
				|  |  |  .size __sigsetjmp,.-__sigsetjmp;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.globl _setjmp;
 | 
	
		
			
				|  |  | +.type	 _setjmp,@function
 | 
	
		
			
				|  |  | +.align 4;                                                               \
 | 
	
		
			
				|  |  | +_setjmp:
 | 
	
		
			
				|  |  | +	pushl $0		/* Push zero argument.  */
 | 
	
		
			
				|  |  | +	pushl 0x8(%esp)	/* Push jmp_buf.  */
 | 
	
		
			
				|  |  | +	call  __sigsetjmp
 | 
	
		
			
				|  |  | +	add  $8, %esp
 | 
	
		
			
				|  |  | +	ret
 | 
	
		
			
				|  |  | +.size _setjmp,.-_setjmp;
 | 
	
		
			
				|  |  | +
 |