summaryrefslogtreecommitdiffstats
path: root/patches/glibc-2.16.0/0003-i386-x86_64-revert-clone-cfi.patch
blob: 0477106e5311bbc5ba7706dabc3d755042b4109f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
From: unknown author <unknown.author@example.com>
Date: Tue, 1 Nov 2011 18:58:26 +0100
Subject: [PATCH] i386/x86_64 revert clone cfi

revert cfi additions to clone on i386/x86_64 to workaround problems in
gcc's unwinder code.  this is not a bug in glibc, it triggers problems
elsewhere.  this cfi code does not gain us a whole lot anyways.

http://gcc.gnu.org/ml/gcc/2006-12/msg00293.html
---
 sysdeps/unix/sysv/linux/i386/clone.S   |    4 ----
 sysdeps/unix/sysv/linux/x86_64/clone.S |    4 ----
 2 files changed, 8 deletions(-)

diff --git a/sysdeps/unix/sysv/linux/i386/clone.S b/sysdeps/unix/sysv/linux/i386/clone.S
index 0603218..82c6536 100644
--- a/sysdeps/unix/sysv/linux/i386/clone.S
+++ b/sysdeps/unix/sysv/linux/i386/clone.S
@@ -119,9 +119,6 @@ L(pseudo_end):
 	ret
 
 L(thread_start):
-	cfi_startproc;
-	/* Clearing frame pointer is insufficient, use CFI.  */
-	cfi_undefined (eip);
 	/* Note: %esi is zero.  */
 	movl	%esi,%ebp	/* terminate the stack frame */
 #ifdef RESET_PID
@@ -154,7 +151,6 @@ L(nomoregetpid):
 	jmp	L(haspid)
 	.previous
 #endif
-	cfi_endproc;
 
 	cfi_startproc
 PSEUDO_END (BP_SYM (__clone))
diff --git a/sysdeps/unix/sysv/linux/x86_64/clone.S b/sysdeps/unix/sysv/linux/x86_64/clone.S
index 6bcb542..656b389 100644
--- a/sysdeps/unix/sysv/linux/x86_64/clone.S
+++ b/sysdeps/unix/sysv/linux/x86_64/clone.S
@@ -88,9 +88,6 @@ L(pseudo_end):
 	ret
 
 L(thread_start):
-	cfi_startproc;
-	/* Clearing frame pointer is insufficient, use CFI.  */
-	cfi_undefined (rip);
 	/* Clear the frame pointer.  The ABI suggests this be done, to mark
 	   the outermost frame obviously.  */
 	xorl	%ebp, %ebp
@@ -115,7 +112,6 @@ L(thread_start):
 	/* Call exit with return value from function call. */
 	movq	%rax, %rdi
 	call	HIDDEN_JUMPTARGET (_exit)
-	cfi_endproc;
 
 	cfi_startproc;
 PSEUDO_END (BP_SYM (__clone))