mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
arm: Unless arm4t, pop return address directly into pc
This commit is contained in:
parent
46dede0c00
commit
d137b6dc52
@ -1,5 +1,9 @@
|
||||
2013-03-06 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* sysdeps/arm/arm-mcount.S (_mcount): Use pop into pc unless
|
||||
__ARM_ARCH_4T__ and __THUMB_INTERWORK__.
|
||||
* sysdeps/arm/dl-tlsdesc.S (_dl_tlsdesc_dynamic): Likewise.
|
||||
|
||||
* sysdeps/arm/sysdep.h (BX, BXC, BLX): New macros.
|
||||
(DO_RET): Use BX.
|
||||
(RETINSTR): Use BXC.
|
||||
|
@ -82,9 +82,7 @@ ENTRY(_mcount)
|
||||
ldrne r0, [r0, #-4]
|
||||
movsne r1, lr
|
||||
blne __mcount_internal
|
||||
#ifdef __thumb2__
|
||||
pop {r0, r1, r2, r3, fp, pc}
|
||||
#else
|
||||
#if defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__)
|
||||
pop {r0, r1, r2, r3, fp, lr}
|
||||
cfi_adjust_cfa_offset (-24)
|
||||
cfi_restore (r0)
|
||||
@ -94,6 +92,8 @@ ENTRY(_mcount)
|
||||
cfi_restore (fp)
|
||||
cfi_restore (lr)
|
||||
bx lr
|
||||
#else
|
||||
pop {r0, r1, r2, r3, fp, pc}
|
||||
#endif
|
||||
END(_mcount)
|
||||
|
||||
|
@ -109,13 +109,18 @@ _dl_tlsdesc_dynamic:
|
||||
1: mov r0, r1
|
||||
bl __tls_get_addr
|
||||
rsb r0, r4, r0
|
||||
2: pop {r2,r3,r4, lr}
|
||||
2:
|
||||
#if defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__)
|
||||
pop {r2,r3,r4, lr}
|
||||
cfi_adjust_cfa_offset (-16)
|
||||
cfi_restore (lr)
|
||||
cfi_restore (r4)
|
||||
cfi_restore (r3)
|
||||
cfi_restore (r2)
|
||||
BX (lr)
|
||||
bx lr
|
||||
#else
|
||||
pop {r2,r3,r4, pc}
|
||||
#endif
|
||||
.fnend
|
||||
cfi_endproc
|
||||
.size _dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
|
||||
|
Loading…
Reference in New Issue
Block a user