about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2010-11-16 03:47:22 +0100
committerPetr Baudis <pasky@suse.cz>2010-11-16 03:47:22 +0100
commitfb8fb8464c2b5a44b69e62bcc3211b9c769416da (patch)
treeb350f569ea24f76692ccb0b454204adafefce69c
parentc8e6e9e783bc5018525e881f021333c3daa4b0f6 (diff)
downloadglibc-pasky/fixes-overdue.tar.gz
glibc-pasky/fixes-overdue.tar.xz
glibc-pasky/fixes-overdue.zip
Fix incorrect backtrace unwinding through thread_start() on x86_64 pasky/fixes-overdue
Provide CFI for the outermost clone() to ensure proper unwinding stop
of gdb.
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/clone.S4
2 files changed, 6 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index c7174be106..9f0a7a94c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-11-30  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	[BZ #6693]
+	* sysdeps/unix/sysv/linux/x86_64/clone.S: Provide CFI for the outermost
+	`clone' function to ensure proper unwinding stop of gdb.
+
 2010-05-31  Petr Baudis  <pasky@suse.cz>
 
 	[BZ #11149]
diff --git a/sysdeps/unix/sysv/linux/x86_64/clone.S b/sysdeps/unix/sysv/linux/x86_64/clone.S
index db42f209c9..8a12b09035 100644
--- a/sysdeps/unix/sysv/linux/x86_64/clone.S
+++ b/sysdeps/unix/sysv/linux/x86_64/clone.S
@@ -89,9 +89,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
@@ -116,7 +113,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))