mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 11:20:07 +00:00
ARM: Fix up setjmp/longjmp changes sfi_* macro use.
This commit is contained in:
parent
4facea4730
commit
d7706c3258
@ -1,3 +1,10 @@
|
|||||||
|
2014-03-11 Roland McGrath <roland@hack.frob.com>
|
||||||
|
|
||||||
|
* sysdeps/arm/setjmp.S: Use sfi_breg on stores of mangled registers.
|
||||||
|
* sysdeps/arm/__longjmp.S: Use sfi_breg on loads of mangled registers.
|
||||||
|
Move sfi_sp use from the load-multiple (that no longer sets sp) to
|
||||||
|
the new mov targetting sp.
|
||||||
|
|
||||||
2014-03-11 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
2014-03-11 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
||||||
|
|
||||||
[BZ #16683]
|
[BZ #16683]
|
||||||
|
@ -38,22 +38,27 @@ ENTRY (__longjmp)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PTR_DEMANGLE
|
#ifdef PTR_DEMANGLE
|
||||||
ldr a4, [ip], #4
|
sfi_breg ip, \
|
||||||
|
ldr a4, [\B], #4
|
||||||
PTR_DEMANGLE (a4, a4, a3, r4)
|
PTR_DEMANGLE (a4, a4, a3, r4)
|
||||||
cfi_undefined (r4)
|
cfi_undefined (r4)
|
||||||
ldr r4, [ip], #4
|
sfi_breg ip, \
|
||||||
|
ldr r4, [\B], #4
|
||||||
PTR_DEMANGLE2 (r4, r4, a3)
|
PTR_DEMANGLE2 (r4, r4, a3)
|
||||||
#else
|
#else
|
||||||
ldr a4, [ip], #4
|
sfi_breg ip, \
|
||||||
ldr r4, [ip], #4
|
ldr a4, [\B], #4
|
||||||
|
sfi_breg ip, \
|
||||||
|
ldr r4, [\B], #4
|
||||||
cfi_undefined (r4)
|
cfi_undefined (r4)
|
||||||
#endif
|
#endif
|
||||||
/* longjmp probe expects longjmp first argument (4@r0), second
|
/* longjmp probe expects longjmp first argument (4@r0), second
|
||||||
argument (-4@r1), and target address (4@r4), respectively. */
|
argument (-4@r1), and target address (4@r4), respectively. */
|
||||||
LIBC_PROBE (longjmp, 3, 4@r0, -4@r1, 4@r4)
|
LIBC_PROBE (longjmp, 3, 4@r0, -4@r1, 4@r4)
|
||||||
|
sfi_sp \
|
||||||
mov sp, a4
|
mov sp, a4
|
||||||
mov lr, r4
|
mov lr, r4
|
||||||
sfi_sp sfi_breg ip, \
|
sfi_breg ip, \
|
||||||
ldmia \B!, JMP_BUF_REGLIST
|
ldmia \B!, JMP_BUF_REGLIST
|
||||||
cfi_restore (v1)
|
cfi_restore (v1)
|
||||||
cfi_restore (v2)
|
cfi_restore (v2)
|
||||||
|
@ -36,12 +36,16 @@ ENTRY (__sigsetjmp)
|
|||||||
#ifdef PTR_MANGLE
|
#ifdef PTR_MANGLE
|
||||||
mov a4, sp
|
mov a4, sp
|
||||||
PTR_MANGLE2 (a4, a4, a3)
|
PTR_MANGLE2 (a4, a4, a3)
|
||||||
str a4, [ip], #4
|
sfi_breg ip, \
|
||||||
|
str a4, [\B], #4
|
||||||
PTR_MANGLE2 (a4, lr, a3)
|
PTR_MANGLE2 (a4, lr, a3)
|
||||||
str a4, [ip], #4
|
sfi_breg ip, \
|
||||||
|
str a4, [\B], #4
|
||||||
#else
|
#else
|
||||||
str sp, [ip], #4
|
sfi_breg ip, \
|
||||||
str lr, [ip], #4
|
str sp, [\B], #4
|
||||||
|
sfi_breg ip, \
|
||||||
|
str lr, [\B], #4
|
||||||
#endif
|
#endif
|
||||||
/* Save registers */
|
/* Save registers */
|
||||||
sfi_breg ip, \
|
sfi_breg ip, \
|
||||||
|
Loading…
Reference in New Issue
Block a user