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
diff --git a/libc/arch-arm/bionic/__bionic_clone.S b/libc/arch-arm/bionic/__bionic_clone.S
index 7b76f5e..72f4892 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 1aaf21a..2fc2913 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 0dc3af0..921f8ef 100644
--- a/libc/arch-arm/bionic/memcmp.S
+++ b/libc/arch-arm/bionic/memcmp.S
@@ -108,6 +108,7 @@
 #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 afbb1b0..26a1bf3 100644
--- a/libc/arch-arm/bionic/memcmp16.S
+++ b/libc/arch-arm/bionic/memcmp16.S
@@ -75,6 +75,7 @@
 
 
         /* 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 8647718..5a6627b 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 b2d8d48..a90254a 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 ec307d2..1a3e4c7 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 8a17997..7d989e9 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 d9fb3d9..7cdbe51 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 05fea54..4c5b513 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 e5e1f54..ad9ad16 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 ea8193f..4397a22 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 64b8d03..39b97f9 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 1646ca2..45e6fa6 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 2ded34f..735efbb 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 27f1e00..c612d02 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 fb3f75f..67639f6 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 d56682c..b184114 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 2821ac5..e0cf91e 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 615a2fa..40acb61 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 0bfb6d0..a33018c 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 03247b1..5ae9921 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 83d8442..326ed6f 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 cb89f72..367790b 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 bd0ec1d..533d95e 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 b2d7597..c4f7a01 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 022195d..6987215 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 cea3508..97dc628 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -71,6 +71,7 @@
 
 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