DO NOT MERGE Re-add .save directive for arm assembler code.

Restored the .save directives so that the libcorkscrew unwinder continues
to function.

Bug: 15701117
Change-Id: I853695a299548b84c78ae8147b9757dbeacdb1ec
This commit is contained in:
Christopher Ferris 2014-06-18 12:18:25 -07:00
parent 1d3d0360ee
commit 40bc7cd4ed
28 changed files with 28 additions and 0 deletions

View File

@ -31,6 +31,7 @@
// pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg); // pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
ENTRY(__bionic_clone) ENTRY(__bionic_clone)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
# save registers to parent stack # save registers to parent stack
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16

View File

@ -36,6 +36,7 @@
* sequence when the crash happens. * sequence when the crash happens.
*/ */
ENTRY(abort) ENTRY(abort)
.save {r3, r14}
stmfd sp!, {r3, r14} stmfd sp!, {r3, r14}
.cfi_def_cfa_offset 8 .cfi_def_cfa_offset 8
.cfi_rel_offset r3, 0 .cfi_rel_offset r3, 0

View File

@ -108,6 +108,7 @@ ENTRY(memcmp)
#endif #endif
/* save registers */ /* save registers */
.save {r4, lr}
stmfd sp!, {r4, lr} stmfd sp!, {r4, lr}
.cfi_def_cfa_offset 8 .cfi_def_cfa_offset 8
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -75,6 +75,7 @@ ENTRY(__memcmp16)
/* save registers */ /* save registers */
.save {r4, lr}
0: stmfd sp!, {r4, lr} 0: stmfd sp!, {r4, lr}
.cfi_def_cfa_offset 8 .cfi_def_cfa_offset 8
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -30,6 +30,7 @@
ENTRY(syscall) ENTRY(syscall)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(__epoll_pwait) ENTRY(__epoll_pwait)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(__llseek) ENTRY(__llseek)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(__mmap2) ENTRY(__mmap2)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(__ppoll) ENTRY(__ppoll)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(__pselect6) ENTRY(__pselect6)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(__waitid) ENTRY(__waitid)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(fchownat) ENTRY(fchownat)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(fsetxattr) ENTRY(fsetxattr)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(futex) ENTRY(futex)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(getsockopt) ENTRY(getsockopt)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(linkat) ENTRY(linkat)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(lsetxattr) ENTRY(lsetxattr)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(mount) ENTRY(mount)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(perf_event_open) ENTRY(perf_event_open)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(prctl) ENTRY(prctl)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(pread64) ENTRY(pread64)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(pwrite64) ENTRY(pwrite64)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(readahead) ENTRY(readahead)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(recvfrom) ENTRY(recvfrom)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(sendto) ENTRY(sendto)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(setsockopt) ENTRY(setsockopt)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -4,6 +4,7 @@
ENTRY(setxattr) ENTRY(setxattr)
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0

View File

@ -71,6 +71,7 @@ END(%(func)s)
arm_eabi_call_long = syscall_stub_header + """\ arm_eabi_call_long = syscall_stub_header + """\
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16 .cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0 .cfi_rel_offset r4, 0