From 0edbdfd24cf34593bc5e49ab2f3f2081de77495d Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Tue, 3 May 2011 00:20:04 +0200 Subject: libc/glibc: update patchset, add ports patchset Patchset provided by "Ioannis E. Venetis" http://sourceware.org/ml/crossgcc/2011-04/msg00072.html http://sourceware.org/ml/crossgcc/2011-04/msg00073.html Signed-off-by: "Yann E. MORIN" --- .../120-i386-x86_64-revert-clone-cfi.patch | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 patches/glibc/ports-2.12.1/120-i386-x86_64-revert-clone-cfi.patch (limited to 'patches/glibc/ports-2.12.1/120-i386-x86_64-revert-clone-cfi.patch') diff --git a/patches/glibc/ports-2.12.1/120-i386-x86_64-revert-clone-cfi.patch b/patches/glibc/ports-2.12.1/120-i386-x86_64-revert-clone-cfi.patch new file mode 100644 index 00000000..95f5aced --- /dev/null +++ b/patches/glibc/ports-2.12.1/120-i386-x86_64-revert-clone-cfi.patch @@ -0,0 +1,55 @@ +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 + +Index: sysdeps/unix/sysv/linux/i386/clone.S +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/i386/clone.S,v +retrieving revision 1.27 +retrieving revision 1.26 +diff -u -p -r1.27 -r1.26 + +diff -durN glibc-2.12.1.orig/sysdeps/unix/sysv/linux/i386/clone.S glibc-2.12.1/sysdeps/unix/sysv/linux/i386/clone.S +--- glibc-2.12.1.orig/sysdeps/unix/sysv/linux/i386/clone.S 2006-12-04 00:12:36.000000000 +0100 ++++ glibc-2.12.1/sysdeps/unix/sysv/linux/i386/clone.S 2009-11-13 00:49:45.000000000 +0100 +@@ -120,9 +120,6 @@ + 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 +@@ -155,7 +152,6 @@ + jmp L(haspid) + .previous + #endif +- cfi_endproc; + + cfi_startproc + PSEUDO_END (BP_SYM (__clone)) +diff -durN glibc-2.12.1.orig/sysdeps/unix/sysv/linux/x86_64/clone.S glibc-2.12.1/sysdeps/unix/sysv/linux/x86_64/clone.S +--- glibc-2.12.1.orig/sysdeps/unix/sysv/linux/x86_64/clone.S 2006-12-04 00:12:36.000000000 +0100 ++++ glibc-2.12.1/sysdeps/unix/sysv/linux/x86_64/clone.S 2009-11-13 00:49:45.000000000 +0100 +@@ -89,9 +89,6 @@ + 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 +@@ -116,7 +113,6 @@ + /* Call exit with return value from function call. */ + movq %rax, %rdi + call HIDDEN_JUMPTARGET (_exit) +- cfi_endproc; + + cfi_startproc; + PSEUDO_END (BP_SYM (__clone)) -- cgit v1.2.3