about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-07-31 12:57:45 -0700
committerUlrich Drepper <drepper@redhat.com>2009-07-31 12:57:45 -0700
commit66ae9e50a336d87f943cc6314a0d405820fcdf8b (patch)
treed57e6527d77a44c66c7cf62efc70bb14e41c160a
parent6f6f1215f68e5ae15ad18373234815fe7b2acc9e (diff)
downloadglibc-66ae9e50a336d87f943cc6314a0d405820fcdf8b.tar.gz
glibc-66ae9e50a336d87f943cc6314a0d405820fcdf8b.tar.xz
glibc-66ae9e50a336d87f943cc6314a0d405820fcdf8b.zip
Fix ____longjmp_chk on x86-64.
After a recent change to fix CFI in ____longjmp_chk the test of the
ss_flags used the wrong memory location.
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S4
2 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 8759b2c08d..fb046fe4c4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-31  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S (longjmp_msg): Get
+	ss_flags from the correct location.
+
 2009-07-31  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* sysdeps/i386/i686/Makefile (sysdep_routines): Add cacheinfo.
diff --git a/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
index 80e4aff36d..4e53ea63c9 100644
--- a/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
+++ b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
@@ -77,7 +77,7 @@ ENTRY(____longjmp_chk)
 	leaq	24(%rsp), %rsp
 	cfi_adjust_cfa_offset(-24)
 	jne	.Lok
-	movl	8(%rsp), %eax
+	movl	-16(%rsp), %eax
 	andl	$1, %eax
 
 .Lok:
@@ -122,7 +122,7 @@ ENTRY(____longjmp_chk)
 	syscall
 	addq	$24, %rsp
 	cfi_adjust_cfa_offset(-24)
-	testl	$1, 8(%rsp)
+	testl	$1, -16(%rsp)
 	je	.Lout
 
 .Lfail:	xchgq	%r8, %rsp