patches/glibc/ports-2.13/120-i386-x86_64-revert-clone-cfi.patch
changeset 2438 2ba5655f6297
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/patches/glibc/ports-2.13/120-i386-x86_64-revert-clone-cfi.patch	Tue May 03 00:19:56 2011 +0200
     1.3 @@ -0,0 +1,55 @@
     1.4 +revert cfi additions to clone on i386/x86_64 to workaround problems in
     1.5 +gcc's unwinder code.  this is not a bug in glibc, it triggers problems
     1.6 +elsewhere.  this cfi code does not gain us a whole lot anyways.
     1.7 +
     1.8 +http://gcc.gnu.org/ml/gcc/2006-12/msg00293.html
     1.9 +
    1.10 +Index: sysdeps/unix/sysv/linux/i386/clone.S
    1.11 +===================================================================
    1.12 +RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/i386/clone.S,v
    1.13 +retrieving revision 1.27
    1.14 +retrieving revision 1.26
    1.15 +diff -u -p -r1.27 -r1.26
    1.16 +
    1.17 +diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/i386/clone.S glibc-2.13/sysdeps/unix/sysv/linux/i386/clone.S
    1.18 +--- glibc-2.13.orig/sysdeps/unix/sysv/linux/i386/clone.S	2006-12-04 00:12:36.000000000 +0100
    1.19 ++++ glibc-2.13/sysdeps/unix/sysv/linux/i386/clone.S	2009-11-13 00:49:45.000000000 +0100
    1.20 +@@ -120,9 +120,6 @@
    1.21 + 	ret
    1.22 + 
    1.23 + L(thread_start):
    1.24 +-	cfi_startproc;
    1.25 +-	/* Clearing frame pointer is insufficient, use CFI.  */
    1.26 +-	cfi_undefined (eip);
    1.27 + 	/* Note: %esi is zero.  */
    1.28 + 	movl	%esi,%ebp	/* terminate the stack frame */
    1.29 + #ifdef RESET_PID
    1.30 +@@ -155,7 +152,6 @@
    1.31 + 	jmp	L(haspid)
    1.32 + 	.previous
    1.33 + #endif
    1.34 +-	cfi_endproc;
    1.35 + 
    1.36 + 	cfi_startproc
    1.37 + PSEUDO_END (BP_SYM (__clone))
    1.38 +diff -durN glibc-2.13.orig/sysdeps/unix/sysv/linux/x86_64/clone.S glibc-2.13/sysdeps/unix/sysv/linux/x86_64/clone.S
    1.39 +--- glibc-2.13.orig/sysdeps/unix/sysv/linux/x86_64/clone.S	2006-12-04 00:12:36.000000000 +0100
    1.40 ++++ glibc-2.13/sysdeps/unix/sysv/linux/x86_64/clone.S	2009-11-13 00:49:45.000000000 +0100
    1.41 +@@ -89,9 +89,6 @@
    1.42 + 	ret
    1.43 + 
    1.44 + L(thread_start):
    1.45 +-	cfi_startproc;
    1.46 +-	/* Clearing frame pointer is insufficient, use CFI.  */
    1.47 +-	cfi_undefined (rip);
    1.48 + 	/* Clear the frame pointer.  The ABI suggests this be done, to mark
    1.49 + 	   the outermost frame obviously.  */
    1.50 + 	xorl	%ebp, %ebp
    1.51 +@@ -116,7 +113,6 @@
    1.52 + 	/* Call exit with return value from function call. */
    1.53 + 	movq	%rax, %rdi
    1.54 + 	call	HIDDEN_JUMPTARGET (_exit)
    1.55 +-	cfi_endproc;
    1.56 + 
    1.57 + 	cfi_startproc;
    1.58 + PSEUDO_END (BP_SYM (__clone))