mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Bug fixes for ____longjmp_chk on sparc.
This commit is contained in:
@ -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>
|
2011-08-16 Andreas Schwab <schwab@redhat.com>
|
||||||
|
|
||||||
[BZ #11724]
|
[BZ #11724]
|
||||||
|
@ -41,10 +41,14 @@ ENTRY (____longjmp_chk)
|
|||||||
nop
|
nop
|
||||||
|
|
||||||
save %sp, -80, %sp
|
save %sp, -80, %sp
|
||||||
|
cfi_remember_state
|
||||||
|
cfi_def_cfa_register(%fp)
|
||||||
|
cfi_window_save
|
||||||
|
cfi_register(%o7, %i7)
|
||||||
|
|
||||||
clr %o0
|
clr %o0
|
||||||
add %sp, 64, %o1
|
add %sp, 64, %o1
|
||||||
set __NR_sigaltstack, %g1
|
LOADSYSCALL(sigaltstack)
|
||||||
ta 0x10
|
ta 0x10
|
||||||
bcs .Lok
|
bcs .Lok
|
||||||
ld [%sp + 64 + 4], %o2
|
ld [%sp + 64 + 4], %o2
|
||||||
@ -54,8 +58,8 @@ ENTRY (____longjmp_chk)
|
|||||||
|
|
||||||
ld [%sp + 64 + 8], %o1
|
ld [%sp + 64 + 8], %o1
|
||||||
add %o0, %o1, %o0
|
add %o0, %o1, %o0
|
||||||
sub %o0, %g3, %o0
|
sub %o0, %g5, %o0
|
||||||
cmp %o1, %o0
|
cmp %o0, %o1
|
||||||
bgeu .Lok
|
bgeu .Lok
|
||||||
nop
|
nop
|
||||||
|
|
||||||
@ -76,6 +80,7 @@ ENTRY (____longjmp_chk)
|
|||||||
|
|
||||||
.Lok:
|
.Lok:
|
||||||
restore
|
restore
|
||||||
|
cfi_restore_state
|
||||||
|
|
||||||
.Lok_norestore:
|
.Lok_norestore:
|
||||||
ld ENV(o0,JB_FP), %g3 /* Cache target FP in register %g3. */
|
ld ENV(o0,JB_FP), %g3 /* Cache target FP in register %g3. */
|
||||||
|
@ -40,8 +40,29 @@ ENTRY (____longjmp_chk)
|
|||||||
bleu,pt %xcc, .Lok
|
bleu,pt %xcc, .Lok
|
||||||
nop
|
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
|
#ifdef PIC
|
||||||
1: call 2f
|
1: call 2f
|
||||||
sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
|
sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
|
||||||
@ -56,7 +77,8 @@ ENTRY (____longjmp_chk)
|
|||||||
call HIDDEN_JUMPTARGET(__fortify_fail)
|
call HIDDEN_JUMPTARGET(__fortify_fail)
|
||||||
nop
|
nop
|
||||||
|
|
||||||
restore
|
.Lok2: restore
|
||||||
|
cfi_restore_state
|
||||||
|
|
||||||
.Lok:
|
.Lok:
|
||||||
/* Modify the context with the value we want to return. */
|
/* Modify the context with the value we want to return. */
|
||||||
|
Reference in New Issue
Block a user