This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.14-203-g25ad0df
- From: davem at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 22 Aug 2011 23:56:32 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.14-203-g25ad0df
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 25ad0df13b48d9b7cf4db7190cec09d0393bd6d0 (commit)
from 304c6e0b2c4d10a6cc2afdb42152aad1cf432c3a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=25ad0df13b48d9b7cf4db7190cec09d0393bd6d0
commit 25ad0df13b48d9b7cf4db7190cec09d0393bd6d0
Author: David S. Miller <davem@davemloft.net>
Date: Mon Aug 22 16:53:57 2011 -0700
Bug fixes for ____longjmp_chk on sparc.
diff --git a/ChangeLog b/ChangeLog
index 60814a8..e83e46b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-08-22 David S. Miller <davem@davemloft.net>
+
+ * sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S: Fix
+ sigaltstack check, add missing cfi directives.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S: Add
+ missing cfi directives, and sigaltstack handling.
+
2011-08-16 Andreas Schwab <schwab@redhat.com>
[BZ #11724]
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S b/sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S
index 0ecd7dd..bbb9eaa 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S
@@ -41,10 +41,14 @@ ENTRY (____longjmp_chk)
nop
save %sp, -80, %sp
+ cfi_remember_state
+ cfi_def_cfa_register(%fp)
+ cfi_window_save
+ cfi_register(%o7, %i7)
clr %o0
add %sp, 64, %o1
- set __NR_sigaltstack, %g1
+ LOADSYSCALL(sigaltstack)
ta 0x10
bcs .Lok
ld [%sp + 64 + 4], %o2
@@ -54,8 +58,8 @@ ENTRY (____longjmp_chk)
ld [%sp + 64 + 8], %o1
add %o0, %o1, %o0
- sub %o0, %g3, %o0
- cmp %o1, %o0
+ sub %o0, %g5, %o0
+ cmp %o0, %o1
bgeu .Lok
nop
@@ -76,6 +80,7 @@ ENTRY (____longjmp_chk)
.Lok:
restore
+ cfi_restore_state
.Lok_norestore:
ld ENV(o0,JB_FP), %g3 /* Cache target FP in register %g3. */
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S b/sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S
index 9a4c8fe..836e62e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S
@@ -40,8 +40,29 @@ ENTRY (____longjmp_chk)
bleu,pt %xcc, .Lok
nop
- save %sp, -128, %sp
+ save %sp, -208, %sp
+ cfi_remember_state
+ cfi_def_cfa_register(%fp)
+ cfi_window_save
+ cfi_register(%o7, %i7)
+ add %fp, 2023, %o1
+ clr %o0
+ LOADSYSCALL(sigaltstack)
+ ta 0x6d
+ bcs,pn %xcc, .Lok2
+ lduw [%fp + 2031], %l2
+ andcc %l2, 0x1, %g0
+ be,pn %xcc, .Lfail
+ ldx [%fp + 2023], %l0
+ ldx [%fp + 2039], %l1
+ sub %l0, STACK_BIAS, %l0
+ add %l0, %l1, %l0
+ sub %l0, %i2, %l0
+ cmp %l0, %l1
+ bgeu,pt %xcc, .Lok2
+ nop
+.Lfail:
#ifdef PIC
1: call 2f
sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
@@ -56,7 +77,8 @@ ENTRY (____longjmp_chk)
call HIDDEN_JUMPTARGET(__fortify_fail)
nop
- restore
+.Lok2: restore
+ cfi_restore_state
.Lok:
/* Modify the context with the value we want to return. */
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 7 +++++
.../sysv/linux/sparc/sparc32/____longjmp_chk.S | 11 ++++++--
.../sysv/linux/sparc/sparc64/____longjmp_chk.S | 26 ++++++++++++++++++-
3 files changed, 39 insertions(+), 5 deletions(-)
hooks/post-receive
--
GNU C Library master sources