yann@1201
|
1 |
Original patch from: gentoo/src/patchsets/glibc/2.9/0070_all_glibc-i386-x86_64-revert-clone-cfi.patch
|
yann@1201
|
2 |
|
yann@1201
|
3 |
-= BEGIN original header =-
|
yann@1201
|
4 |
revert cfi additions to clone on i386/x86_64 to workaround problems in
|
yann@1201
|
5 |
gcc's unwinder code. this is not a bug in glibc, it triggers problems
|
yann@1201
|
6 |
elsewhere. this cfi code does not gain us a whole lot anyways.
|
yann@1201
|
7 |
|
yann@1201
|
8 |
http://gcc.gnu.org/ml/gcc/2006-12/msg00293.html
|
yann@1201
|
9 |
|
yann@1201
|
10 |
-= END original header =-
|
yann@1201
|
11 |
|
yann@1201
|
12 |
diff -durN glibc-2_9.orig/sysdeps/unix/sysv/linux/i386/clone.S glibc-2_9/sysdeps/unix/sysv/linux/i386/clone.S
|
yann@1201
|
13 |
--- glibc-2_9.orig/sysdeps/unix/sysv/linux/i386/clone.S 2006-12-04 00:12:36.000000000 +0100
|
yann@1201
|
14 |
+++ glibc-2_9/sysdeps/unix/sysv/linux/i386/clone.S 2009-02-02 22:00:45.000000000 +0100
|
yann@1201
|
15 |
@@ -120,9 +120,6 @@
|
yann@1201
|
16 |
ret
|
yann@1201
|
17 |
|
yann@1201
|
18 |
L(thread_start):
|
yann@1201
|
19 |
- cfi_startproc;
|
yann@1201
|
20 |
- /* Clearing frame pointer is insufficient, use CFI. */
|
yann@1201
|
21 |
- cfi_undefined (eip);
|
yann@1201
|
22 |
/* Note: %esi is zero. */
|
yann@1201
|
23 |
movl %esi,%ebp /* terminate the stack frame */
|
yann@1201
|
24 |
#ifdef RESET_PID
|
yann@1201
|
25 |
@@ -155,7 +152,6 @@
|
yann@1201
|
26 |
jmp L(haspid)
|
yann@1201
|
27 |
.previous
|
yann@1201
|
28 |
#endif
|
yann@1201
|
29 |
- cfi_endproc;
|
yann@1201
|
30 |
|
yann@1201
|
31 |
cfi_startproc
|
yann@1201
|
32 |
PSEUDO_END (BP_SYM (__clone))
|
yann@1201
|
33 |
diff -durN glibc-2_9.orig/sysdeps/unix/sysv/linux/x86_64/clone.S glibc-2_9/sysdeps/unix/sysv/linux/x86_64/clone.S
|
yann@1201
|
34 |
--- glibc-2_9.orig/sysdeps/unix/sysv/linux/x86_64/clone.S 2006-12-04 00:12:36.000000000 +0100
|
yann@1201
|
35 |
+++ glibc-2_9/sysdeps/unix/sysv/linux/x86_64/clone.S 2009-02-02 22:00:45.000000000 +0100
|
yann@1201
|
36 |
@@ -89,9 +89,6 @@
|
yann@1201
|
37 |
ret
|
yann@1201
|
38 |
|
yann@1201
|
39 |
L(thread_start):
|
yann@1201
|
40 |
- cfi_startproc;
|
yann@1201
|
41 |
- /* Clearing frame pointer is insufficient, use CFI. */
|
yann@1201
|
42 |
- cfi_undefined (rip);
|
yann@1201
|
43 |
/* Clear the frame pointer. The ABI suggests this be done, to mark
|
yann@1201
|
44 |
the outermost frame obviously. */
|
yann@1201
|
45 |
xorl %ebp, %ebp
|
yann@1201
|
46 |
@@ -116,7 +113,6 @@
|
yann@1201
|
47 |
/* Call exit with return value from function call. */
|
yann@1201
|
48 |
movq %rax, %rdi
|
yann@1201
|
49 |
call HIDDEN_JUMPTARGET (_exit)
|
yann@1201
|
50 |
- cfi_endproc;
|
yann@1201
|
51 |
|
yann@1201
|
52 |
cfi_startproc;
|
yann@1201
|
53 |
PSEUDO_END (BP_SYM (__clone))
|