From 40bc7cd4ed9fb848a7b3d934f69669f64ceed707 Mon Sep 17 00:00:00 2001 From: Christopher Ferris Date: Wed, 18 Jun 2014 12:18:25 -0700 Subject: [PATCH] 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 --- libc/arch-arm/bionic/__bionic_clone.S | 1 + libc/arch-arm/bionic/abort_arm.S | 1 + libc/arch-arm/bionic/memcmp.S | 1 + libc/arch-arm/bionic/memcmp16.S | 1 + libc/arch-arm/bionic/syscall.S | 1 + libc/arch-arm/syscalls/__epoll_pwait.S | 1 + libc/arch-arm/syscalls/__llseek.S | 1 + libc/arch-arm/syscalls/__mmap2.S | 1 + libc/arch-arm/syscalls/__ppoll.S | 1 + libc/arch-arm/syscalls/__pselect6.S | 1 + libc/arch-arm/syscalls/__waitid.S | 1 + libc/arch-arm/syscalls/fchownat.S | 1 + libc/arch-arm/syscalls/fsetxattr.S | 1 + libc/arch-arm/syscalls/futex.S | 1 + libc/arch-arm/syscalls/getsockopt.S | 1 + libc/arch-arm/syscalls/linkat.S | 1 + libc/arch-arm/syscalls/lsetxattr.S | 1 + libc/arch-arm/syscalls/mount.S | 1 + libc/arch-arm/syscalls/perf_event_open.S | 1 + libc/arch-arm/syscalls/prctl.S | 1 + libc/arch-arm/syscalls/pread64.S | 1 + libc/arch-arm/syscalls/pwrite64.S | 1 + libc/arch-arm/syscalls/readahead.S | 1 + libc/arch-arm/syscalls/recvfrom.S | 1 + libc/arch-arm/syscalls/sendto.S | 1 + libc/arch-arm/syscalls/setsockopt.S | 1 + libc/arch-arm/syscalls/setxattr.S | 1 + libc/tools/gensyscalls.py | 1 + 28 files changed, 28 insertions(+) diff --git a/libc/arch-arm/bionic/__bionic_clone.S b/libc/arch-arm/bionic/__bionic_clone.S index 7b76f5e9f..72f48920a 100644 --- a/libc/arch-arm/bionic/__bionic_clone.S +++ b/libc/arch-arm/bionic/__bionic_clone.S @@ -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); ENTRY(__bionic_clone) mov ip, sp + .save {r4, r5, r6, r7} # save registers to parent stack stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 diff --git a/libc/arch-arm/bionic/abort_arm.S b/libc/arch-arm/bionic/abort_arm.S index 1aaf21ad8..2fc29134c 100644 --- a/libc/arch-arm/bionic/abort_arm.S +++ b/libc/arch-arm/bionic/abort_arm.S @@ -36,6 +36,7 @@ * sequence when the crash happens. */ ENTRY(abort) + .save {r3, r14} stmfd sp!, {r3, r14} .cfi_def_cfa_offset 8 .cfi_rel_offset r3, 0 diff --git a/libc/arch-arm/bionic/memcmp.S b/libc/arch-arm/bionic/memcmp.S index 0dc3af0ca..921f8efb6 100644 --- a/libc/arch-arm/bionic/memcmp.S +++ b/libc/arch-arm/bionic/memcmp.S @@ -108,6 +108,7 @@ ENTRY(memcmp) #endif /* save registers */ + .save {r4, lr} stmfd sp!, {r4, lr} .cfi_def_cfa_offset 8 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/bionic/memcmp16.S b/libc/arch-arm/bionic/memcmp16.S index afbb1b047..26a1bf364 100644 --- a/libc/arch-arm/bionic/memcmp16.S +++ b/libc/arch-arm/bionic/memcmp16.S @@ -75,6 +75,7 @@ ENTRY(__memcmp16) /* save registers */ + .save {r4, lr} 0: stmfd sp!, {r4, lr} .cfi_def_cfa_offset 8 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/bionic/syscall.S b/libc/arch-arm/bionic/syscall.S index 864771841..5a6627bb0 100644 --- a/libc/arch-arm/bionic/syscall.S +++ b/libc/arch-arm/bionic/syscall.S @@ -30,6 +30,7 @@ ENTRY(syscall) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/__epoll_pwait.S b/libc/arch-arm/syscalls/__epoll_pwait.S index b2d8d48f0..a90254a6c 100644 --- a/libc/arch-arm/syscalls/__epoll_pwait.S +++ b/libc/arch-arm/syscalls/__epoll_pwait.S @@ -4,6 +4,7 @@ ENTRY(__epoll_pwait) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/__llseek.S b/libc/arch-arm/syscalls/__llseek.S index ec307d291..1a3e4c77d 100644 --- a/libc/arch-arm/syscalls/__llseek.S +++ b/libc/arch-arm/syscalls/__llseek.S @@ -4,6 +4,7 @@ ENTRY(__llseek) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/__mmap2.S b/libc/arch-arm/syscalls/__mmap2.S index 8a179977d..7d989e936 100644 --- a/libc/arch-arm/syscalls/__mmap2.S +++ b/libc/arch-arm/syscalls/__mmap2.S @@ -4,6 +4,7 @@ ENTRY(__mmap2) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/__ppoll.S b/libc/arch-arm/syscalls/__ppoll.S index d9fb3d9fb..7cdbe517c 100644 --- a/libc/arch-arm/syscalls/__ppoll.S +++ b/libc/arch-arm/syscalls/__ppoll.S @@ -4,6 +4,7 @@ ENTRY(__ppoll) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/__pselect6.S b/libc/arch-arm/syscalls/__pselect6.S index 05fea543e..4c5b51329 100644 --- a/libc/arch-arm/syscalls/__pselect6.S +++ b/libc/arch-arm/syscalls/__pselect6.S @@ -4,6 +4,7 @@ ENTRY(__pselect6) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/__waitid.S b/libc/arch-arm/syscalls/__waitid.S index e5e1f54dc..ad9ad167e 100644 --- a/libc/arch-arm/syscalls/__waitid.S +++ b/libc/arch-arm/syscalls/__waitid.S @@ -4,6 +4,7 @@ ENTRY(__waitid) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/fchownat.S b/libc/arch-arm/syscalls/fchownat.S index ea8193f43..4397a2234 100644 --- a/libc/arch-arm/syscalls/fchownat.S +++ b/libc/arch-arm/syscalls/fchownat.S @@ -4,6 +4,7 @@ ENTRY(fchownat) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/fsetxattr.S b/libc/arch-arm/syscalls/fsetxattr.S index 64b8d031e..39b97f99c 100644 --- a/libc/arch-arm/syscalls/fsetxattr.S +++ b/libc/arch-arm/syscalls/fsetxattr.S @@ -4,6 +4,7 @@ ENTRY(fsetxattr) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/futex.S b/libc/arch-arm/syscalls/futex.S index 1646ca207..45e6fa6e2 100644 --- a/libc/arch-arm/syscalls/futex.S +++ b/libc/arch-arm/syscalls/futex.S @@ -4,6 +4,7 @@ ENTRY(futex) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/getsockopt.S b/libc/arch-arm/syscalls/getsockopt.S index 2ded34fd3..735efbb60 100644 --- a/libc/arch-arm/syscalls/getsockopt.S +++ b/libc/arch-arm/syscalls/getsockopt.S @@ -4,6 +4,7 @@ ENTRY(getsockopt) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/linkat.S b/libc/arch-arm/syscalls/linkat.S index 27f1e0098..c612d0276 100644 --- a/libc/arch-arm/syscalls/linkat.S +++ b/libc/arch-arm/syscalls/linkat.S @@ -4,6 +4,7 @@ ENTRY(linkat) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/lsetxattr.S b/libc/arch-arm/syscalls/lsetxattr.S index fb3f75fdc..67639f649 100644 --- a/libc/arch-arm/syscalls/lsetxattr.S +++ b/libc/arch-arm/syscalls/lsetxattr.S @@ -4,6 +4,7 @@ ENTRY(lsetxattr) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/mount.S b/libc/arch-arm/syscalls/mount.S index d56682c63..b18411416 100644 --- a/libc/arch-arm/syscalls/mount.S +++ b/libc/arch-arm/syscalls/mount.S @@ -4,6 +4,7 @@ ENTRY(mount) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/perf_event_open.S b/libc/arch-arm/syscalls/perf_event_open.S index 2821ac5d9..e0cf91eec 100644 --- a/libc/arch-arm/syscalls/perf_event_open.S +++ b/libc/arch-arm/syscalls/perf_event_open.S @@ -4,6 +4,7 @@ ENTRY(perf_event_open) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/prctl.S b/libc/arch-arm/syscalls/prctl.S index 615a2fa2e..40acb611c 100644 --- a/libc/arch-arm/syscalls/prctl.S +++ b/libc/arch-arm/syscalls/prctl.S @@ -4,6 +4,7 @@ ENTRY(prctl) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/pread64.S b/libc/arch-arm/syscalls/pread64.S index 0bfb6d051..a33018c70 100644 --- a/libc/arch-arm/syscalls/pread64.S +++ b/libc/arch-arm/syscalls/pread64.S @@ -4,6 +4,7 @@ ENTRY(pread64) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/pwrite64.S b/libc/arch-arm/syscalls/pwrite64.S index 03247b100..5ae992199 100644 --- a/libc/arch-arm/syscalls/pwrite64.S +++ b/libc/arch-arm/syscalls/pwrite64.S @@ -4,6 +4,7 @@ ENTRY(pwrite64) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/readahead.S b/libc/arch-arm/syscalls/readahead.S index 83d84424f..326ed6f21 100644 --- a/libc/arch-arm/syscalls/readahead.S +++ b/libc/arch-arm/syscalls/readahead.S @@ -4,6 +4,7 @@ ENTRY(readahead) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/recvfrom.S b/libc/arch-arm/syscalls/recvfrom.S index cb89f7230..367790bac 100644 --- a/libc/arch-arm/syscalls/recvfrom.S +++ b/libc/arch-arm/syscalls/recvfrom.S @@ -4,6 +4,7 @@ ENTRY(recvfrom) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/sendto.S b/libc/arch-arm/syscalls/sendto.S index bd0ec1d4c..533d95e6b 100644 --- a/libc/arch-arm/syscalls/sendto.S +++ b/libc/arch-arm/syscalls/sendto.S @@ -4,6 +4,7 @@ ENTRY(sendto) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/setsockopt.S b/libc/arch-arm/syscalls/setsockopt.S index b2d759790..c4f7a01c5 100644 --- a/libc/arch-arm/syscalls/setsockopt.S +++ b/libc/arch-arm/syscalls/setsockopt.S @@ -4,6 +4,7 @@ ENTRY(setsockopt) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/arch-arm/syscalls/setxattr.S b/libc/arch-arm/syscalls/setxattr.S index 022195d01..6987215c8 100644 --- a/libc/arch-arm/syscalls/setxattr.S +++ b/libc/arch-arm/syscalls/setxattr.S @@ -4,6 +4,7 @@ ENTRY(setxattr) mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0 diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py index cea350848..97dc628da 100755 --- a/libc/tools/gensyscalls.py +++ b/libc/tools/gensyscalls.py @@ -71,6 +71,7 @@ END(%(func)s) arm_eabi_call_long = syscall_stub_header + """\ mov ip, sp + .save {r4, r5, r6, r7} stmfd sp!, {r4, r5, r6, r7} .cfi_def_cfa_offset 16 .cfi_rel_offset r4, 0