summaryrefslogtreecommitdiff
path: root/ports/sysdeps/arm/__longjmp.S
AgeCommit message (Collapse)AuthorFilesLines
2014-01-14ARM: Don't apply pointer encryption to the frame pointerWill Newton1-3/+1
The frame pointer register is rarely used for that purpose on ARM and applications that look at the contents of the jmp_buf may be relying on reading an unencrypted value. For example, Ruby uses the contents of jmp_buf to find the root set for garbage collection so relies on this pointer value being unencrypted. Without this patch the Ruby testsuite fails with a segmentation fault. ports/ChangeLog.arm: 2013-01-14 Will Newton <will.newton@linaro.org> * sysdeps/arm/__longjmp.S: Don't apply pointer encryption to fp register. * sysdeps/arm/setjmp.S: Likewise. * sysdeps/arm/include/bits/setjmp.h (JMP_BUF_REGLIST): Add fp to register list, remove a4. * sysdeps/unix/sysv/linux/arm/sysdep.h (PTR_MANGLE_LOAD): New macro.
2014-01-01Update copyright notices with scripts/update-copyrightsAllan McRae1-1/+1
2013-10-04ARM: Allow building __longjmp as Thumb.Will Newton1-3/+3
Convert __longjmp code to allow building as Thumb. ports/ChangeLog.arm: 2013-10-04 Will Newton <will.newton@linaro.org> * sysdeps/arm/__longjmp.S (NO_THUMB): Remove define. (__longjmp): Use Thumb supported instructions. * sysdeps/unix/sysv/linux/arm/____longjmp_chk.S (NO_THUMB): Remove define.
2013-10-03ARM: Add pointer encryption support.Will Newton1-0/+14
Add support for pointer encryption in glibc internal structures in C and assembler code. Pointer encryption is a glibc security feature described here: https://sourceware.org/glibc/wiki/PointerEncryption The ARM implementation uses global variables instead of thread pointer relative accesses to get the value of the pointer encryption guard because accessing the thread pointer can be very expensive on older ARM cores. ports/ChangeLog.arm: 2013-10-03 Will Newton <will.newton@linaro.org> * sysdeps/arm/__longjmp.S (__longjmp): Demangle fp, sp and lr when restoring register values. * sysdeps/arm/include/bits/setjmp.h (JMP_BUF_REGLIST): Remove sp and lr from list and replace fp with a4. * sysdeps/arm/jmpbuf-unwind.h (_jmpbuf_sp): New function. (_JMPBUF_UNWINDS_ADJ): Call _jmpbuf_sp. * sysdeps/arm/setjmp.S (__sigsetjmp): Mangle fp, sp and lr before storing register values. * sysdeps/arm/sysdep.h (LDST_GLOBAL): New macro. * sysdeps/unix/sysv/linux/arm/sysdep.h (PTR_MANGLE): New macro. (PTR_DEMANGLE): Likewise. (PTR_MANGLE2): Likewise. (PTR_DEMANGLE2): Likewise.
2013-05-14Stop ARM setjmp/longjmp saving/restoring fpscr (bug 14908).Joseph Myers1-5/+0
2013-03-15ARM: sfi_sp assembler macroRoland McGrath1-1/+1
2013-03-15ARM: sfi_breg assembler macroRoland McGrath1-10/+20
2013-03-11ARM: Consolidate setjmp details in include/bits/setjmp.h file.Roland McGrath1-3/+1
2013-03-06arm: Delete LOADREGS macroRichard Henderson1-1/+1
There was only one user. It's "condition" argument was used for "ia" rather than an actual condition. The apcs26 syntax is almost certainly not needed, given current binutils requirements.
2013-02-28arm: Mark assembly files that will not use thumb modeRichard Henderson1-0/+2
Some routines are written with complex LDM/STM insns that cannot be used in thumb mode, or are highly conditional requiring excessive IT insns. When a future patch goes in to enable thumb2 by default, this marker will be used to override that default.
2013-02-28arm: Introduce and use PC_OFSRichard Henderson1-2/+2
Scour the source for raw "-8" adjustments that are related to the offset created by reading the pc.
2013-01-02Update copyright notices with scripts/update-copyrights.Joseph Myers1-1/+1
2012-08-09Make ARM setjmp/longjmp respect ARM_ASSUME_NO_IWMMXT macro.Roland McGrath1-10/+21
2012-08-09Avoid VFP HWCAP check in setjmp/longjmp and getcontext/setcontext when ↵Roland McGrath1-14/+15
compiled without __SOFTFP__ defined.
2012-07-01Move all files into ports/ subdirectory in preparation for merge with glibcJoseph Myers1-0/+111