Message ID | 20140311183803.DA2B974475@topped-with-meat.com |
---|---|
State | Committed |
Headers | show |
On Tue, 11 Mar 2014, Roland McGrath wrote: > 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. OK, presuming no changes to the generated code for ARM Linux.
> On Tue, 11 Mar 2014, Roland McGrath wrote: > > > 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. > > OK, presuming no changes to the generated code for ARM Linux. Right. I forgot to mention that I did indeed verify arm-linux-gnueabihf got no code changes. Committed. Thanks, Roland
--- a/sysdeps/arm/__longjmp.S +++ b/sysdeps/arm/__longjmp.S @@ -38,22 +38,27 @@ ENTRY (__longjmp) #endif #ifdef PTR_DEMANGLE - ldr a4, [ip], #4 + sfi_breg ip, \ + ldr a4, [\B], #4 PTR_DEMANGLE (a4, a4, a3, r4) cfi_undefined (r4) - ldr r4, [ip], #4 + sfi_breg ip, \ + ldr r4, [\B], #4 PTR_DEMANGLE2 (r4, r4, a3) #else - ldr a4, [ip], #4 - ldr r4, [ip], #4 + sfi_breg ip, \ + ldr a4, [\B], #4 + sfi_breg ip, \ + ldr r4, [\B], #4 cfi_undefined (r4) #endif /* longjmp probe expects longjmp first argument (4@r0), second argument (-4@r1), and target address (4@r4), respectively. */ LIBC_PROBE (longjmp, 3, 4@r0, -4@r1, 4@r4) + sfi_sp \ mov sp, a4 mov lr, r4 - sfi_sp sfi_breg ip, \ + sfi_breg ip, \ ldmia \B!, JMP_BUF_REGLIST cfi_restore (v1) cfi_restore (v2) --- a/sysdeps/arm/setjmp.S +++ b/sysdeps/arm/setjmp.S @@ -36,12 +36,16 @@ ENTRY (__sigsetjmp) #ifdef PTR_MANGLE mov a4, sp PTR_MANGLE2 (a4, a4, a3) - str a4, [ip], #4 + sfi_breg ip, \ + str a4, [\B], #4 PTR_MANGLE2 (a4, lr, a3) - str a4, [ip], #4 + sfi_breg ip, \ + str a4, [\B], #4 #else - str sp, [ip], #4 - str lr, [ip], #4 + sfi_breg ip, \ + str sp, [\B], #4 + sfi_breg ip, \ + str lr, [\B], #4 #endif /* Save registers */ sfi_breg ip, \