Merge "Add cfi directives for arm64 assembler."
diff --git a/libc/arch-arm64/bionic/__bionic_clone.S b/libc/arch-arm64/bionic/__bionic_clone.S
index ae7d14f..c49782c 100644
--- a/libc/arch-arm64/bionic/__bionic_clone.S
+++ b/libc/arch-arm64/bionic/__bionic_clone.S
@@ -32,8 +32,10 @@
 
 ENTRY(__bionic_clone)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     # Copy 'fn' and 'arg' onto the child stack.
     stp     x5, x6, [x1, #-16]
@@ -45,8 +47,10 @@
     # Are we the child?
     cbz     x0, .L_bc_child
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     # Set errno if something went wrong.
     cmn     x0, #(MAX_ERRNO + 1)
@@ -57,6 +61,8 @@
 
 .L_bc_child:
     # We're in the child now. Set the end of the frame record chain...
+    .cfi_undefined x29
+    .cfi_undefined x30
     mov     x29, xzr
     # ...and call __bionic_clone_entry with the 'fn' and 'arg' we stored on the child stack.
     ldp     x0, x1, [sp, #-16]
diff --git a/libc/arch-arm64/bionic/futex_arm64.S b/libc/arch-arm64/bionic/futex_arm64.S
index 5a47826..00d24a4 100644
--- a/libc/arch-arm64/bionic/futex_arm64.S
+++ b/libc/arch-arm64/bionic/futex_arm64.S
@@ -34,14 +34,18 @@
 // int __futex_syscall4(volatile void* ftx, int op, int val, const struct timespec* timeout)
 ENTRY(__futex_syscall4)
   stp x29, x30, [sp, #-16]!
+  .cfi_def_cfa_offset 16
+  .cfi_rel_offset x29, 0
+  .cfi_rel_offset x30, 8
   mov x29, sp
 
-  str x8, [sp, #-16]!
   mov x8, __NR_futex
   svc #0
-  ldr x8, [sp], #16
 
   ldp x29, x30, [sp], #16
+  .cfi_def_cfa_offset 0
+  .cfi_restore x29
+  .cfi_restore x30
   ret
 END(__futex_syscall4)
 
@@ -53,34 +57,42 @@
 // int __futex_wait(volatile void* ftx, int val, const struct timespec* timeout)
 ENTRY_PRIVATE(__futex_wait)
   stp x29, x30, [sp, #-16]!
+  .cfi_def_cfa_offset 16
+  .cfi_rel_offset x29, 0
+  .cfi_rel_offset x30, 8
   mov x29, sp
 
   mov x3, x2
   mov x2, x1
   mov x1, #FUTEX_WAIT
 
-  str x8, [sp, #-16]!
   mov x8, __NR_futex
   svc #0
-  ldr x8, [sp], #16
 
   ldp x29, x30, [sp], #16
+  .cfi_def_cfa_offset 0
+  .cfi_restore x29
+  .cfi_restore x30
   ret
 END(__futex_wait)
 
 // int __futex_wake(volatile void* ftx, int count)
 ENTRY_PRIVATE(__futex_wake)
   stp x29, x30, [sp, #-16]!
+  .cfi_def_cfa_offset 16
+  .cfi_rel_offset x29, 0
+  .cfi_rel_offset x30, 8
   mov x29, sp
 
   mov x2, x1
   mov x1, #FUTEX_WAKE
 
-  str x8, [sp, #-16]!
   mov x8, __NR_futex
   svc #0
-  ldr x8, [sp], #16
 
   ldp x29, x30, [sp], #16
+  .cfi_def_cfa_offset 0
+  .cfi_restore x29
+  .cfi_restore x30
   ret
 END(__futex_wake)
diff --git a/libc/arch-arm64/bionic/syscall.S b/libc/arch-arm64/bionic/syscall.S
index e5be1d5..42e8883 100644
--- a/libc/arch-arm64/bionic/syscall.S
+++ b/libc/arch-arm64/bionic/syscall.S
@@ -31,11 +31,11 @@
 ENTRY(syscall)
     /* create AAPCS frame pointer */
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
 
-    /* store x8 */
-    str     x8,       [sp, #-16]!
-
     /* Move syscall No. from x0 to x8 */
     mov     x8, x0
     /* Move syscall parameters from x1 thru x6 to x0 thru x5 */
@@ -47,9 +47,10 @@
     mov     x5, x6
     svc     #0
 
-    /* restore x8 */
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     /* check if syscall returned successfully */
     cmn     x0, #(MAX_ERRNO + 1)
diff --git a/libc/arch-arm64/bionic/vfork.S b/libc/arch-arm64/bionic/vfork.S
index 52009e2..c700623 100644
--- a/libc/arch-arm64/bionic/vfork.S
+++ b/libc/arch-arm64/bionic/vfork.S
@@ -37,10 +37,8 @@
     mov     x3, xzr
     mov     x4, xzr
 
-    str     x8, [sp, #-16]!
     mov     x8, __NR_clone
     svc     #0
-    ldr     x8, [sp], #16
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__accept4.S b/libc/arch-arm64/syscalls/__accept4.S
index c66cd2e..34f2c52 100644
--- a/libc/arch-arm64/syscalls/__accept4.S
+++ b/libc/arch-arm64/syscalls/__accept4.S
@@ -4,14 +4,18 @@
 
 ENTRY(__accept4)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_accept4
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__brk.S b/libc/arch-arm64/syscalls/__brk.S
index 918edf0..fb63fb9 100644
--- a/libc/arch-arm64/syscalls/__brk.S
+++ b/libc/arch-arm64/syscalls/__brk.S
@@ -4,14 +4,18 @@
 
 ENTRY(__brk)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_brk
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__connect.S b/libc/arch-arm64/syscalls/__connect.S
index c46f418..e578ccc 100644
--- a/libc/arch-arm64/syscalls/__connect.S
+++ b/libc/arch-arm64/syscalls/__connect.S
@@ -4,14 +4,18 @@
 
 ENTRY(__connect)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_connect
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__epoll_pwait.S b/libc/arch-arm64/syscalls/__epoll_pwait.S
index b487360..57b01c2 100644
--- a/libc/arch-arm64/syscalls/__epoll_pwait.S
+++ b/libc/arch-arm64/syscalls/__epoll_pwait.S
@@ -4,14 +4,18 @@
 
 ENTRY(__epoll_pwait)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_epoll_pwait
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__exit.S b/libc/arch-arm64/syscalls/__exit.S
index 5e97928..8600b13 100644
--- a/libc/arch-arm64/syscalls/__exit.S
+++ b/libc/arch-arm64/syscalls/__exit.S
@@ -4,14 +4,18 @@
 
 ENTRY(__exit)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_exit
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__getcpu.S b/libc/arch-arm64/syscalls/__getcpu.S
index a312188..e81ba23 100644
--- a/libc/arch-arm64/syscalls/__getcpu.S
+++ b/libc/arch-arm64/syscalls/__getcpu.S
@@ -4,14 +4,18 @@
 
 ENTRY(__getcpu)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getcpu
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__getcwd.S b/libc/arch-arm64/syscalls/__getcwd.S
index 4b27a9c..fc48f80 100644
--- a/libc/arch-arm64/syscalls/__getcwd.S
+++ b/libc/arch-arm64/syscalls/__getcwd.S
@@ -4,14 +4,18 @@
 
 ENTRY(__getcwd)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getcwd
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__getpriority.S b/libc/arch-arm64/syscalls/__getpriority.S
index 3ccd104..486ea8f 100644
--- a/libc/arch-arm64/syscalls/__getpriority.S
+++ b/libc/arch-arm64/syscalls/__getpriority.S
@@ -4,14 +4,18 @@
 
 ENTRY(__getpriority)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getpriority
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__ioctl.S b/libc/arch-arm64/syscalls/__ioctl.S
index 68d89bc..30ff73c 100644
--- a/libc/arch-arm64/syscalls/__ioctl.S
+++ b/libc/arch-arm64/syscalls/__ioctl.S
@@ -4,14 +4,18 @@
 
 ENTRY(__ioctl)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_ioctl
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__openat.S b/libc/arch-arm64/syscalls/__openat.S
index a49eaff..22e2f6a 100644
--- a/libc/arch-arm64/syscalls/__openat.S
+++ b/libc/arch-arm64/syscalls/__openat.S
@@ -4,14 +4,18 @@
 
 ENTRY(__openat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_openat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__ppoll.S b/libc/arch-arm64/syscalls/__ppoll.S
index 370e768..1739dea 100644
--- a/libc/arch-arm64/syscalls/__ppoll.S
+++ b/libc/arch-arm64/syscalls/__ppoll.S
@@ -4,14 +4,18 @@
 
 ENTRY(__ppoll)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_ppoll
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__pselect6.S b/libc/arch-arm64/syscalls/__pselect6.S
index 193e19f..2770164 100644
--- a/libc/arch-arm64/syscalls/__pselect6.S
+++ b/libc/arch-arm64/syscalls/__pselect6.S
@@ -4,14 +4,18 @@
 
 ENTRY(__pselect6)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_pselect6
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__ptrace.S b/libc/arch-arm64/syscalls/__ptrace.S
index ee63cb0..3746530 100644
--- a/libc/arch-arm64/syscalls/__ptrace.S
+++ b/libc/arch-arm64/syscalls/__ptrace.S
@@ -4,14 +4,18 @@
 
 ENTRY(__ptrace)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_ptrace
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__reboot.S b/libc/arch-arm64/syscalls/__reboot.S
index 10b33ad..b1ea418 100644
--- a/libc/arch-arm64/syscalls/__reboot.S
+++ b/libc/arch-arm64/syscalls/__reboot.S
@@ -4,14 +4,18 @@
 
 ENTRY(__reboot)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_reboot
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__rt_sigaction.S b/libc/arch-arm64/syscalls/__rt_sigaction.S
index cea0941..33e07cb 100644
--- a/libc/arch-arm64/syscalls/__rt_sigaction.S
+++ b/libc/arch-arm64/syscalls/__rt_sigaction.S
@@ -4,14 +4,18 @@
 
 ENTRY(__rt_sigaction)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_rt_sigaction
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__rt_sigpending.S b/libc/arch-arm64/syscalls/__rt_sigpending.S
index 97db3b9..fa6812e 100644
--- a/libc/arch-arm64/syscalls/__rt_sigpending.S
+++ b/libc/arch-arm64/syscalls/__rt_sigpending.S
@@ -4,14 +4,18 @@
 
 ENTRY(__rt_sigpending)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_rt_sigpending
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__rt_sigprocmask.S b/libc/arch-arm64/syscalls/__rt_sigprocmask.S
index 97dabe1..537f8bd 100644
--- a/libc/arch-arm64/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-arm64/syscalls/__rt_sigprocmask.S
@@ -4,14 +4,18 @@
 
 ENTRY(__rt_sigprocmask)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_rt_sigprocmask
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__rt_sigsuspend.S b/libc/arch-arm64/syscalls/__rt_sigsuspend.S
index d8eaa3e..b8a99c6 100644
--- a/libc/arch-arm64/syscalls/__rt_sigsuspend.S
+++ b/libc/arch-arm64/syscalls/__rt_sigsuspend.S
@@ -4,14 +4,18 @@
 
 ENTRY(__rt_sigsuspend)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_rt_sigsuspend
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__rt_sigtimedwait.S b/libc/arch-arm64/syscalls/__rt_sigtimedwait.S
index 95f031a..869442c 100644
--- a/libc/arch-arm64/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-arm64/syscalls/__rt_sigtimedwait.S
@@ -4,14 +4,18 @@
 
 ENTRY(__rt_sigtimedwait)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_rt_sigtimedwait
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__sched_getaffinity.S b/libc/arch-arm64/syscalls/__sched_getaffinity.S
index 58715d0..8ca23d4 100644
--- a/libc/arch-arm64/syscalls/__sched_getaffinity.S
+++ b/libc/arch-arm64/syscalls/__sched_getaffinity.S
@@ -4,14 +4,18 @@
 
 ENTRY(__sched_getaffinity)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sched_getaffinity
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__set_tid_address.S b/libc/arch-arm64/syscalls/__set_tid_address.S
index 3cc452c..5514aed 100644
--- a/libc/arch-arm64/syscalls/__set_tid_address.S
+++ b/libc/arch-arm64/syscalls/__set_tid_address.S
@@ -4,14 +4,18 @@
 
 ENTRY(__set_tid_address)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_set_tid_address
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__signalfd4.S b/libc/arch-arm64/syscalls/__signalfd4.S
index 91510f6..ea49fc5 100644
--- a/libc/arch-arm64/syscalls/__signalfd4.S
+++ b/libc/arch-arm64/syscalls/__signalfd4.S
@@ -4,14 +4,18 @@
 
 ENTRY(__signalfd4)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_signalfd4
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__socket.S b/libc/arch-arm64/syscalls/__socket.S
index aa9da22..f96a1ab 100644
--- a/libc/arch-arm64/syscalls/__socket.S
+++ b/libc/arch-arm64/syscalls/__socket.S
@@ -4,14 +4,18 @@
 
 ENTRY(__socket)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_socket
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__timer_create.S b/libc/arch-arm64/syscalls/__timer_create.S
index b551048..87183b4 100644
--- a/libc/arch-arm64/syscalls/__timer_create.S
+++ b/libc/arch-arm64/syscalls/__timer_create.S
@@ -4,14 +4,18 @@
 
 ENTRY(__timer_create)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_timer_create
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__timer_delete.S b/libc/arch-arm64/syscalls/__timer_delete.S
index 2aff540..c21ec4f 100644
--- a/libc/arch-arm64/syscalls/__timer_delete.S
+++ b/libc/arch-arm64/syscalls/__timer_delete.S
@@ -4,14 +4,18 @@
 
 ENTRY(__timer_delete)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_timer_delete
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__timer_getoverrun.S b/libc/arch-arm64/syscalls/__timer_getoverrun.S
index b11e356..47f1ef9 100644
--- a/libc/arch-arm64/syscalls/__timer_getoverrun.S
+++ b/libc/arch-arm64/syscalls/__timer_getoverrun.S
@@ -4,14 +4,18 @@
 
 ENTRY(__timer_getoverrun)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_timer_getoverrun
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__timer_gettime.S b/libc/arch-arm64/syscalls/__timer_gettime.S
index c7c4d09..4eaa655 100644
--- a/libc/arch-arm64/syscalls/__timer_gettime.S
+++ b/libc/arch-arm64/syscalls/__timer_gettime.S
@@ -4,14 +4,18 @@
 
 ENTRY(__timer_gettime)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_timer_gettime
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__timer_settime.S b/libc/arch-arm64/syscalls/__timer_settime.S
index 4f5f5fc..aef0cc4 100644
--- a/libc/arch-arm64/syscalls/__timer_settime.S
+++ b/libc/arch-arm64/syscalls/__timer_settime.S
@@ -4,14 +4,18 @@
 
 ENTRY(__timer_settime)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_timer_settime
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__waitid.S b/libc/arch-arm64/syscalls/__waitid.S
index 66e986a..6d9e940 100644
--- a/libc/arch-arm64/syscalls/__waitid.S
+++ b/libc/arch-arm64/syscalls/__waitid.S
@@ -4,14 +4,18 @@
 
 ENTRY(__waitid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_waitid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/_exit.S b/libc/arch-arm64/syscalls/_exit.S
index 40ada48..37d1499 100644
--- a/libc/arch-arm64/syscalls/_exit.S
+++ b/libc/arch-arm64/syscalls/_exit.S
@@ -4,14 +4,18 @@
 
 ENTRY(_exit)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_exit_group
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/acct.S b/libc/arch-arm64/syscalls/acct.S
index 901e420..f391cd8 100644
--- a/libc/arch-arm64/syscalls/acct.S
+++ b/libc/arch-arm64/syscalls/acct.S
@@ -4,14 +4,18 @@
 
 ENTRY(acct)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_acct
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/bind.S b/libc/arch-arm64/syscalls/bind.S
index 471d783..10dd01f 100644
--- a/libc/arch-arm64/syscalls/bind.S
+++ b/libc/arch-arm64/syscalls/bind.S
@@ -4,14 +4,18 @@
 
 ENTRY(bind)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_bind
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/capget.S b/libc/arch-arm64/syscalls/capget.S
index 33fe11c..d01dc47 100644
--- a/libc/arch-arm64/syscalls/capget.S
+++ b/libc/arch-arm64/syscalls/capget.S
@@ -4,14 +4,18 @@
 
 ENTRY(capget)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_capget
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/capset.S b/libc/arch-arm64/syscalls/capset.S
index 75f03a9..c4ed92e 100644
--- a/libc/arch-arm64/syscalls/capset.S
+++ b/libc/arch-arm64/syscalls/capset.S
@@ -4,14 +4,18 @@
 
 ENTRY(capset)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_capset
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/chdir.S b/libc/arch-arm64/syscalls/chdir.S
index 051f823..6f1baf0 100644
--- a/libc/arch-arm64/syscalls/chdir.S
+++ b/libc/arch-arm64/syscalls/chdir.S
@@ -4,14 +4,18 @@
 
 ENTRY(chdir)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_chdir
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/chroot.S b/libc/arch-arm64/syscalls/chroot.S
index c06399f..b15f04a 100644
--- a/libc/arch-arm64/syscalls/chroot.S
+++ b/libc/arch-arm64/syscalls/chroot.S
@@ -4,14 +4,18 @@
 
 ENTRY(chroot)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_chroot
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/clock_getres.S b/libc/arch-arm64/syscalls/clock_getres.S
index bffc7cb..b18c10b 100644
--- a/libc/arch-arm64/syscalls/clock_getres.S
+++ b/libc/arch-arm64/syscalls/clock_getres.S
@@ -4,14 +4,18 @@
 
 ENTRY(clock_getres)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_clock_getres
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/clock_gettime.S b/libc/arch-arm64/syscalls/clock_gettime.S
index 3c58236..b3518c1 100644
--- a/libc/arch-arm64/syscalls/clock_gettime.S
+++ b/libc/arch-arm64/syscalls/clock_gettime.S
@@ -4,14 +4,18 @@
 
 ENTRY(clock_gettime)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_clock_gettime
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/clock_nanosleep.S b/libc/arch-arm64/syscalls/clock_nanosleep.S
index 357bda6..eddf6f1 100644
--- a/libc/arch-arm64/syscalls/clock_nanosleep.S
+++ b/libc/arch-arm64/syscalls/clock_nanosleep.S
@@ -4,14 +4,18 @@
 
 ENTRY(clock_nanosleep)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_clock_nanosleep
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/clock_settime.S b/libc/arch-arm64/syscalls/clock_settime.S
index 06e9393..c6ba5c0 100644
--- a/libc/arch-arm64/syscalls/clock_settime.S
+++ b/libc/arch-arm64/syscalls/clock_settime.S
@@ -4,14 +4,18 @@
 
 ENTRY(clock_settime)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_clock_settime
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/close.S b/libc/arch-arm64/syscalls/close.S
index fefe147..a623895 100644
--- a/libc/arch-arm64/syscalls/close.S
+++ b/libc/arch-arm64/syscalls/close.S
@@ -4,14 +4,18 @@
 
 ENTRY(close)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_close
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/delete_module.S b/libc/arch-arm64/syscalls/delete_module.S
index 4e8b09d..a57517d 100644
--- a/libc/arch-arm64/syscalls/delete_module.S
+++ b/libc/arch-arm64/syscalls/delete_module.S
@@ -4,14 +4,18 @@
 
 ENTRY(delete_module)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_delete_module
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/dup.S b/libc/arch-arm64/syscalls/dup.S
index 9dbe562..b7e04ed 100644
--- a/libc/arch-arm64/syscalls/dup.S
+++ b/libc/arch-arm64/syscalls/dup.S
@@ -4,14 +4,18 @@
 
 ENTRY(dup)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_dup
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/dup3.S b/libc/arch-arm64/syscalls/dup3.S
index ee04440..fada63d 100644
--- a/libc/arch-arm64/syscalls/dup3.S
+++ b/libc/arch-arm64/syscalls/dup3.S
@@ -4,14 +4,18 @@
 
 ENTRY(dup3)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_dup3
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/epoll_create1.S b/libc/arch-arm64/syscalls/epoll_create1.S
index 0ed34b5..94990bf 100644
--- a/libc/arch-arm64/syscalls/epoll_create1.S
+++ b/libc/arch-arm64/syscalls/epoll_create1.S
@@ -4,14 +4,18 @@
 
 ENTRY(epoll_create1)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_epoll_create1
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/epoll_ctl.S b/libc/arch-arm64/syscalls/epoll_ctl.S
index a09ba29..ea6f735 100644
--- a/libc/arch-arm64/syscalls/epoll_ctl.S
+++ b/libc/arch-arm64/syscalls/epoll_ctl.S
@@ -4,14 +4,18 @@
 
 ENTRY(epoll_ctl)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_epoll_ctl
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/eventfd.S b/libc/arch-arm64/syscalls/eventfd.S
index e6b592b..afa88b3 100644
--- a/libc/arch-arm64/syscalls/eventfd.S
+++ b/libc/arch-arm64/syscalls/eventfd.S
@@ -4,14 +4,18 @@
 
 ENTRY(eventfd)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_eventfd2
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/execve.S b/libc/arch-arm64/syscalls/execve.S
index 4f3cdb8..031b6d4 100644
--- a/libc/arch-arm64/syscalls/execve.S
+++ b/libc/arch-arm64/syscalls/execve.S
@@ -4,14 +4,18 @@
 
 ENTRY(execve)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_execve
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/faccessat.S b/libc/arch-arm64/syscalls/faccessat.S
index c6b6557..cebbf18 100644
--- a/libc/arch-arm64/syscalls/faccessat.S
+++ b/libc/arch-arm64/syscalls/faccessat.S
@@ -4,14 +4,18 @@
 
 ENTRY(faccessat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_faccessat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fallocate.S b/libc/arch-arm64/syscalls/fallocate.S
index 15e727d..94832aa 100644
--- a/libc/arch-arm64/syscalls/fallocate.S
+++ b/libc/arch-arm64/syscalls/fallocate.S
@@ -4,14 +4,18 @@
 
 ENTRY(fallocate)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fallocate
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fchdir.S b/libc/arch-arm64/syscalls/fchdir.S
index c608231..afba3c1 100644
--- a/libc/arch-arm64/syscalls/fchdir.S
+++ b/libc/arch-arm64/syscalls/fchdir.S
@@ -4,14 +4,18 @@
 
 ENTRY(fchdir)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fchdir
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fchmod.S b/libc/arch-arm64/syscalls/fchmod.S
index a777cdc..35f9dec 100644
--- a/libc/arch-arm64/syscalls/fchmod.S
+++ b/libc/arch-arm64/syscalls/fchmod.S
@@ -4,14 +4,18 @@
 
 ENTRY(fchmod)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fchmod
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fchmodat.S b/libc/arch-arm64/syscalls/fchmodat.S
index 1a52c9f..59bfb8a 100644
--- a/libc/arch-arm64/syscalls/fchmodat.S
+++ b/libc/arch-arm64/syscalls/fchmodat.S
@@ -4,14 +4,18 @@
 
 ENTRY(fchmodat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fchmodat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fchown.S b/libc/arch-arm64/syscalls/fchown.S
index 073e36f..2294187 100644
--- a/libc/arch-arm64/syscalls/fchown.S
+++ b/libc/arch-arm64/syscalls/fchown.S
@@ -4,14 +4,18 @@
 
 ENTRY(fchown)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fchown
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fchownat.S b/libc/arch-arm64/syscalls/fchownat.S
index db80ab1..ff24187 100644
--- a/libc/arch-arm64/syscalls/fchownat.S
+++ b/libc/arch-arm64/syscalls/fchownat.S
@@ -4,14 +4,18 @@
 
 ENTRY(fchownat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fchownat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fcntl.S b/libc/arch-arm64/syscalls/fcntl.S
index 23ce155..a9d6976 100644
--- a/libc/arch-arm64/syscalls/fcntl.S
+++ b/libc/arch-arm64/syscalls/fcntl.S
@@ -4,14 +4,18 @@
 
 ENTRY(fcntl)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fcntl
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fdatasync.S b/libc/arch-arm64/syscalls/fdatasync.S
index b4e9aa9..4cf4de3 100644
--- a/libc/arch-arm64/syscalls/fdatasync.S
+++ b/libc/arch-arm64/syscalls/fdatasync.S
@@ -4,14 +4,18 @@
 
 ENTRY(fdatasync)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fdatasync
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fgetxattr.S b/libc/arch-arm64/syscalls/fgetxattr.S
index 3278a12..914ea7f 100644
--- a/libc/arch-arm64/syscalls/fgetxattr.S
+++ b/libc/arch-arm64/syscalls/fgetxattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(fgetxattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fgetxattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/flistxattr.S b/libc/arch-arm64/syscalls/flistxattr.S
index 40b2a30..2a64381 100644
--- a/libc/arch-arm64/syscalls/flistxattr.S
+++ b/libc/arch-arm64/syscalls/flistxattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(flistxattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_flistxattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/flock.S b/libc/arch-arm64/syscalls/flock.S
index 7e28789..0d87233 100644
--- a/libc/arch-arm64/syscalls/flock.S
+++ b/libc/arch-arm64/syscalls/flock.S
@@ -4,14 +4,18 @@
 
 ENTRY(flock)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_flock
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fremovexattr.S b/libc/arch-arm64/syscalls/fremovexattr.S
index be86dd0..e2ef649 100644
--- a/libc/arch-arm64/syscalls/fremovexattr.S
+++ b/libc/arch-arm64/syscalls/fremovexattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(fremovexattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fremovexattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fsetxattr.S b/libc/arch-arm64/syscalls/fsetxattr.S
index 2cb72c9..eb41951 100644
--- a/libc/arch-arm64/syscalls/fsetxattr.S
+++ b/libc/arch-arm64/syscalls/fsetxattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(fsetxattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fsetxattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fstat64.S b/libc/arch-arm64/syscalls/fstat64.S
index fdff681..ee0d9e7 100644
--- a/libc/arch-arm64/syscalls/fstat64.S
+++ b/libc/arch-arm64/syscalls/fstat64.S
@@ -4,14 +4,18 @@
 
 ENTRY(fstat64)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fstat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fstatat64.S b/libc/arch-arm64/syscalls/fstatat64.S
index 0f3ef4d..4ff3039 100644
--- a/libc/arch-arm64/syscalls/fstatat64.S
+++ b/libc/arch-arm64/syscalls/fstatat64.S
@@ -4,14 +4,18 @@
 
 ENTRY(fstatat64)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_newfstatat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fstatfs64.S b/libc/arch-arm64/syscalls/fstatfs64.S
index 6318d56..b908b57 100644
--- a/libc/arch-arm64/syscalls/fstatfs64.S
+++ b/libc/arch-arm64/syscalls/fstatfs64.S
@@ -4,14 +4,18 @@
 
 ENTRY(fstatfs64)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fstatfs
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/fsync.S b/libc/arch-arm64/syscalls/fsync.S
index e1076f2..bac2e8b 100644
--- a/libc/arch-arm64/syscalls/fsync.S
+++ b/libc/arch-arm64/syscalls/fsync.S
@@ -4,14 +4,18 @@
 
 ENTRY(fsync)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_fsync
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/ftruncate.S b/libc/arch-arm64/syscalls/ftruncate.S
index c8f5b6b..ca4315a 100644
--- a/libc/arch-arm64/syscalls/ftruncate.S
+++ b/libc/arch-arm64/syscalls/ftruncate.S
@@ -4,14 +4,18 @@
 
 ENTRY(ftruncate)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_ftruncate
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/futex.S b/libc/arch-arm64/syscalls/futex.S
index 5149d6b..c14ebbf 100644
--- a/libc/arch-arm64/syscalls/futex.S
+++ b/libc/arch-arm64/syscalls/futex.S
@@ -4,14 +4,18 @@
 
 ENTRY(futex)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_futex
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getdents.S b/libc/arch-arm64/syscalls/getdents.S
index 56496c2..8cd3ca7 100644
--- a/libc/arch-arm64/syscalls/getdents.S
+++ b/libc/arch-arm64/syscalls/getdents.S
@@ -4,14 +4,18 @@
 
 ENTRY(getdents)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getdents64
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getegid.S b/libc/arch-arm64/syscalls/getegid.S
index 144fe88..593f51d 100644
--- a/libc/arch-arm64/syscalls/getegid.S
+++ b/libc/arch-arm64/syscalls/getegid.S
@@ -4,14 +4,18 @@
 
 ENTRY(getegid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getegid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/geteuid.S b/libc/arch-arm64/syscalls/geteuid.S
index fcec977..845acbc 100644
--- a/libc/arch-arm64/syscalls/geteuid.S
+++ b/libc/arch-arm64/syscalls/geteuid.S
@@ -4,14 +4,18 @@
 
 ENTRY(geteuid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_geteuid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getgid.S b/libc/arch-arm64/syscalls/getgid.S
index 0fd172e..5f34355 100644
--- a/libc/arch-arm64/syscalls/getgid.S
+++ b/libc/arch-arm64/syscalls/getgid.S
@@ -4,14 +4,18 @@
 
 ENTRY(getgid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getgid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getgroups.S b/libc/arch-arm64/syscalls/getgroups.S
index 3c12ef4..d0e2540 100644
--- a/libc/arch-arm64/syscalls/getgroups.S
+++ b/libc/arch-arm64/syscalls/getgroups.S
@@ -4,14 +4,18 @@
 
 ENTRY(getgroups)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getgroups
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getitimer.S b/libc/arch-arm64/syscalls/getitimer.S
index d795cd7..2d4d541 100644
--- a/libc/arch-arm64/syscalls/getitimer.S
+++ b/libc/arch-arm64/syscalls/getitimer.S
@@ -4,14 +4,18 @@
 
 ENTRY(getitimer)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getitimer
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getpeername.S b/libc/arch-arm64/syscalls/getpeername.S
index aea3122..1f64130 100644
--- a/libc/arch-arm64/syscalls/getpeername.S
+++ b/libc/arch-arm64/syscalls/getpeername.S
@@ -4,14 +4,18 @@
 
 ENTRY(getpeername)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getpeername
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getpgid.S b/libc/arch-arm64/syscalls/getpgid.S
index 1bda83f..01d876f 100644
--- a/libc/arch-arm64/syscalls/getpgid.S
+++ b/libc/arch-arm64/syscalls/getpgid.S
@@ -4,14 +4,18 @@
 
 ENTRY(getpgid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getpgid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getpid.S b/libc/arch-arm64/syscalls/getpid.S
index 3a408c8..94b823c 100644
--- a/libc/arch-arm64/syscalls/getpid.S
+++ b/libc/arch-arm64/syscalls/getpid.S
@@ -4,14 +4,18 @@
 
 ENTRY(getpid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getpid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getppid.S b/libc/arch-arm64/syscalls/getppid.S
index 1b85cef..0a46878 100644
--- a/libc/arch-arm64/syscalls/getppid.S
+++ b/libc/arch-arm64/syscalls/getppid.S
@@ -4,14 +4,18 @@
 
 ENTRY(getppid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getppid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getresgid.S b/libc/arch-arm64/syscalls/getresgid.S
index ab00b06..bc121fc 100644
--- a/libc/arch-arm64/syscalls/getresgid.S
+++ b/libc/arch-arm64/syscalls/getresgid.S
@@ -4,14 +4,18 @@
 
 ENTRY(getresgid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getresgid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getresuid.S b/libc/arch-arm64/syscalls/getresuid.S
index 0ff218a..28cd9a4 100644
--- a/libc/arch-arm64/syscalls/getresuid.S
+++ b/libc/arch-arm64/syscalls/getresuid.S
@@ -4,14 +4,18 @@
 
 ENTRY(getresuid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getresuid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getrlimit.S b/libc/arch-arm64/syscalls/getrlimit.S
index 4fb5f7c..aa966ca 100644
--- a/libc/arch-arm64/syscalls/getrlimit.S
+++ b/libc/arch-arm64/syscalls/getrlimit.S
@@ -4,14 +4,18 @@
 
 ENTRY(getrlimit)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getrlimit
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getrusage.S b/libc/arch-arm64/syscalls/getrusage.S
index 5e2bace..aaaf3a2 100644
--- a/libc/arch-arm64/syscalls/getrusage.S
+++ b/libc/arch-arm64/syscalls/getrusage.S
@@ -4,14 +4,18 @@
 
 ENTRY(getrusage)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getrusage
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getsid.S b/libc/arch-arm64/syscalls/getsid.S
index c85ca60..e75b7b4 100644
--- a/libc/arch-arm64/syscalls/getsid.S
+++ b/libc/arch-arm64/syscalls/getsid.S
@@ -4,14 +4,18 @@
 
 ENTRY(getsid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getsid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getsockname.S b/libc/arch-arm64/syscalls/getsockname.S
index 1d0279a..61e4b4b 100644
--- a/libc/arch-arm64/syscalls/getsockname.S
+++ b/libc/arch-arm64/syscalls/getsockname.S
@@ -4,14 +4,18 @@
 
 ENTRY(getsockname)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getsockname
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getsockopt.S b/libc/arch-arm64/syscalls/getsockopt.S
index 3bfd5b8..3740df9 100644
--- a/libc/arch-arm64/syscalls/getsockopt.S
+++ b/libc/arch-arm64/syscalls/getsockopt.S
@@ -4,14 +4,18 @@
 
 ENTRY(getsockopt)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getsockopt
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/gettid.S b/libc/arch-arm64/syscalls/gettid.S
index d8c128e..44ca913 100644
--- a/libc/arch-arm64/syscalls/gettid.S
+++ b/libc/arch-arm64/syscalls/gettid.S
@@ -4,14 +4,18 @@
 
 ENTRY(gettid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_gettid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/gettimeofday.S b/libc/arch-arm64/syscalls/gettimeofday.S
index 4f9ac28..a72ac91 100644
--- a/libc/arch-arm64/syscalls/gettimeofday.S
+++ b/libc/arch-arm64/syscalls/gettimeofday.S
@@ -4,14 +4,18 @@
 
 ENTRY(gettimeofday)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_gettimeofday
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getuid.S b/libc/arch-arm64/syscalls/getuid.S
index 96198b7..d749cc3 100644
--- a/libc/arch-arm64/syscalls/getuid.S
+++ b/libc/arch-arm64/syscalls/getuid.S
@@ -4,14 +4,18 @@
 
 ENTRY(getuid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getuid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/getxattr.S b/libc/arch-arm64/syscalls/getxattr.S
index 11b90aa..451eef5 100644
--- a/libc/arch-arm64/syscalls/getxattr.S
+++ b/libc/arch-arm64/syscalls/getxattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(getxattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_getxattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/init_module.S b/libc/arch-arm64/syscalls/init_module.S
index 8648b04..42ec765 100644
--- a/libc/arch-arm64/syscalls/init_module.S
+++ b/libc/arch-arm64/syscalls/init_module.S
@@ -4,14 +4,18 @@
 
 ENTRY(init_module)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_init_module
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/inotify_add_watch.S b/libc/arch-arm64/syscalls/inotify_add_watch.S
index 583ab72..066816c 100644
--- a/libc/arch-arm64/syscalls/inotify_add_watch.S
+++ b/libc/arch-arm64/syscalls/inotify_add_watch.S
@@ -4,14 +4,18 @@
 
 ENTRY(inotify_add_watch)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_inotify_add_watch
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/inotify_init1.S b/libc/arch-arm64/syscalls/inotify_init1.S
index 3ee946e..d6bee8c 100644
--- a/libc/arch-arm64/syscalls/inotify_init1.S
+++ b/libc/arch-arm64/syscalls/inotify_init1.S
@@ -4,14 +4,18 @@
 
 ENTRY(inotify_init1)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_inotify_init1
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/inotify_rm_watch.S b/libc/arch-arm64/syscalls/inotify_rm_watch.S
index 3121b51..ee9c70f 100644
--- a/libc/arch-arm64/syscalls/inotify_rm_watch.S
+++ b/libc/arch-arm64/syscalls/inotify_rm_watch.S
@@ -4,14 +4,18 @@
 
 ENTRY(inotify_rm_watch)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_inotify_rm_watch
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/ioprio_get.S b/libc/arch-arm64/syscalls/ioprio_get.S
index 207a4e7..4a4a749 100644
--- a/libc/arch-arm64/syscalls/ioprio_get.S
+++ b/libc/arch-arm64/syscalls/ioprio_get.S
@@ -4,14 +4,18 @@
 
 ENTRY(ioprio_get)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_ioprio_get
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/ioprio_set.S b/libc/arch-arm64/syscalls/ioprio_set.S
index eb7b026..8b48f12 100644
--- a/libc/arch-arm64/syscalls/ioprio_set.S
+++ b/libc/arch-arm64/syscalls/ioprio_set.S
@@ -4,14 +4,18 @@
 
 ENTRY(ioprio_set)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_ioprio_set
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/kill.S b/libc/arch-arm64/syscalls/kill.S
index 3788df7..15c399b 100644
--- a/libc/arch-arm64/syscalls/kill.S
+++ b/libc/arch-arm64/syscalls/kill.S
@@ -4,14 +4,18 @@
 
 ENTRY(kill)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_kill
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/klogctl.S b/libc/arch-arm64/syscalls/klogctl.S
index efa8b4a..1d161ec 100644
--- a/libc/arch-arm64/syscalls/klogctl.S
+++ b/libc/arch-arm64/syscalls/klogctl.S
@@ -4,14 +4,18 @@
 
 ENTRY(klogctl)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_syslog
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/lgetxattr.S b/libc/arch-arm64/syscalls/lgetxattr.S
index 1fda092..2799285 100644
--- a/libc/arch-arm64/syscalls/lgetxattr.S
+++ b/libc/arch-arm64/syscalls/lgetxattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(lgetxattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_lgetxattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/linkat.S b/libc/arch-arm64/syscalls/linkat.S
index 999c007..e65aa3f 100644
--- a/libc/arch-arm64/syscalls/linkat.S
+++ b/libc/arch-arm64/syscalls/linkat.S
@@ -4,14 +4,18 @@
 
 ENTRY(linkat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_linkat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/listen.S b/libc/arch-arm64/syscalls/listen.S
index 8b7fa0f..44ae288 100644
--- a/libc/arch-arm64/syscalls/listen.S
+++ b/libc/arch-arm64/syscalls/listen.S
@@ -4,14 +4,18 @@
 
 ENTRY(listen)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_listen
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/listxattr.S b/libc/arch-arm64/syscalls/listxattr.S
index cc399a9..b31d22c 100644
--- a/libc/arch-arm64/syscalls/listxattr.S
+++ b/libc/arch-arm64/syscalls/listxattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(listxattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_listxattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/llistxattr.S b/libc/arch-arm64/syscalls/llistxattr.S
index 87bfe10..fdcafde 100644
--- a/libc/arch-arm64/syscalls/llistxattr.S
+++ b/libc/arch-arm64/syscalls/llistxattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(llistxattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_llistxattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/lremovexattr.S b/libc/arch-arm64/syscalls/lremovexattr.S
index ad823e4..741fa86 100644
--- a/libc/arch-arm64/syscalls/lremovexattr.S
+++ b/libc/arch-arm64/syscalls/lremovexattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(lremovexattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_lremovexattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/lseek.S b/libc/arch-arm64/syscalls/lseek.S
index 0c04203..3d16e75 100644
--- a/libc/arch-arm64/syscalls/lseek.S
+++ b/libc/arch-arm64/syscalls/lseek.S
@@ -4,14 +4,18 @@
 
 ENTRY(lseek)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_lseek
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/lsetxattr.S b/libc/arch-arm64/syscalls/lsetxattr.S
index 683fc2b..a7fe1df 100644
--- a/libc/arch-arm64/syscalls/lsetxattr.S
+++ b/libc/arch-arm64/syscalls/lsetxattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(lsetxattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_lsetxattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/madvise.S b/libc/arch-arm64/syscalls/madvise.S
index 8136ec9..8eed274 100644
--- a/libc/arch-arm64/syscalls/madvise.S
+++ b/libc/arch-arm64/syscalls/madvise.S
@@ -4,14 +4,18 @@
 
 ENTRY(madvise)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_madvise
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/mincore.S b/libc/arch-arm64/syscalls/mincore.S
index 8a8e5a5..21dbe14 100644
--- a/libc/arch-arm64/syscalls/mincore.S
+++ b/libc/arch-arm64/syscalls/mincore.S
@@ -4,14 +4,18 @@
 
 ENTRY(mincore)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_mincore
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/mkdirat.S b/libc/arch-arm64/syscalls/mkdirat.S
index b3dd838..efd9786 100644
--- a/libc/arch-arm64/syscalls/mkdirat.S
+++ b/libc/arch-arm64/syscalls/mkdirat.S
@@ -4,14 +4,18 @@
 
 ENTRY(mkdirat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_mkdirat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/mknodat.S b/libc/arch-arm64/syscalls/mknodat.S
index aca6786..1bf42d0 100644
--- a/libc/arch-arm64/syscalls/mknodat.S
+++ b/libc/arch-arm64/syscalls/mknodat.S
@@ -4,14 +4,18 @@
 
 ENTRY(mknodat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_mknodat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/mlock.S b/libc/arch-arm64/syscalls/mlock.S
index bb01435..e09e7fc 100644
--- a/libc/arch-arm64/syscalls/mlock.S
+++ b/libc/arch-arm64/syscalls/mlock.S
@@ -4,14 +4,18 @@
 
 ENTRY(mlock)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_mlock
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/mlockall.S b/libc/arch-arm64/syscalls/mlockall.S
index 278e6d3..bfb2b60 100644
--- a/libc/arch-arm64/syscalls/mlockall.S
+++ b/libc/arch-arm64/syscalls/mlockall.S
@@ -4,14 +4,18 @@
 
 ENTRY(mlockall)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_mlockall
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/mmap.S b/libc/arch-arm64/syscalls/mmap.S
index 4d49185..437698a 100644
--- a/libc/arch-arm64/syscalls/mmap.S
+++ b/libc/arch-arm64/syscalls/mmap.S
@@ -4,14 +4,18 @@
 
 ENTRY(mmap)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_mmap
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/mount.S b/libc/arch-arm64/syscalls/mount.S
index d88a54b..34170d8 100644
--- a/libc/arch-arm64/syscalls/mount.S
+++ b/libc/arch-arm64/syscalls/mount.S
@@ -4,14 +4,18 @@
 
 ENTRY(mount)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_mount
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/mprotect.S b/libc/arch-arm64/syscalls/mprotect.S
index c8a2efe..cdb4bc8 100644
--- a/libc/arch-arm64/syscalls/mprotect.S
+++ b/libc/arch-arm64/syscalls/mprotect.S
@@ -4,14 +4,18 @@
 
 ENTRY(mprotect)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_mprotect
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/mremap.S b/libc/arch-arm64/syscalls/mremap.S
index 7c7fe5b..605b39d 100644
--- a/libc/arch-arm64/syscalls/mremap.S
+++ b/libc/arch-arm64/syscalls/mremap.S
@@ -4,14 +4,18 @@
 
 ENTRY(mremap)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_mremap
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/msync.S b/libc/arch-arm64/syscalls/msync.S
index b45c99d..e511e86 100644
--- a/libc/arch-arm64/syscalls/msync.S
+++ b/libc/arch-arm64/syscalls/msync.S
@@ -4,14 +4,18 @@
 
 ENTRY(msync)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_msync
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/munlock.S b/libc/arch-arm64/syscalls/munlock.S
index d84b850..f837c9c 100644
--- a/libc/arch-arm64/syscalls/munlock.S
+++ b/libc/arch-arm64/syscalls/munlock.S
@@ -4,14 +4,18 @@
 
 ENTRY(munlock)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_munlock
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/munlockall.S b/libc/arch-arm64/syscalls/munlockall.S
index e043f71..93e9121 100644
--- a/libc/arch-arm64/syscalls/munlockall.S
+++ b/libc/arch-arm64/syscalls/munlockall.S
@@ -4,14 +4,18 @@
 
 ENTRY(munlockall)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_munlockall
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/munmap.S b/libc/arch-arm64/syscalls/munmap.S
index 02afbe8..f2b22bd 100644
--- a/libc/arch-arm64/syscalls/munmap.S
+++ b/libc/arch-arm64/syscalls/munmap.S
@@ -4,14 +4,18 @@
 
 ENTRY(munmap)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_munmap
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/nanosleep.S b/libc/arch-arm64/syscalls/nanosleep.S
index 8cd9a95..e33311a 100644
--- a/libc/arch-arm64/syscalls/nanosleep.S
+++ b/libc/arch-arm64/syscalls/nanosleep.S
@@ -4,14 +4,18 @@
 
 ENTRY(nanosleep)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_nanosleep
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/personality.S b/libc/arch-arm64/syscalls/personality.S
index 2535467..c37cae2 100644
--- a/libc/arch-arm64/syscalls/personality.S
+++ b/libc/arch-arm64/syscalls/personality.S
@@ -4,14 +4,18 @@
 
 ENTRY(personality)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_personality
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/pipe2.S b/libc/arch-arm64/syscalls/pipe2.S
index f72e707..ab2e259 100644
--- a/libc/arch-arm64/syscalls/pipe2.S
+++ b/libc/arch-arm64/syscalls/pipe2.S
@@ -4,14 +4,18 @@
 
 ENTRY(pipe2)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_pipe2
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/prctl.S b/libc/arch-arm64/syscalls/prctl.S
index 79b3e92..dd46fd4 100644
--- a/libc/arch-arm64/syscalls/prctl.S
+++ b/libc/arch-arm64/syscalls/prctl.S
@@ -4,14 +4,18 @@
 
 ENTRY(prctl)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_prctl
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/pread64.S b/libc/arch-arm64/syscalls/pread64.S
index b333946..ddc6c12 100644
--- a/libc/arch-arm64/syscalls/pread64.S
+++ b/libc/arch-arm64/syscalls/pread64.S
@@ -4,14 +4,18 @@
 
 ENTRY(pread64)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_pread64
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/prlimit64.S b/libc/arch-arm64/syscalls/prlimit64.S
index c8820ef..39d31b0 100644
--- a/libc/arch-arm64/syscalls/prlimit64.S
+++ b/libc/arch-arm64/syscalls/prlimit64.S
@@ -4,14 +4,18 @@
 
 ENTRY(prlimit64)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_prlimit64
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/pwrite64.S b/libc/arch-arm64/syscalls/pwrite64.S
index 1ae312c..81e2cf7 100644
--- a/libc/arch-arm64/syscalls/pwrite64.S
+++ b/libc/arch-arm64/syscalls/pwrite64.S
@@ -4,14 +4,18 @@
 
 ENTRY(pwrite64)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_pwrite64
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/read.S b/libc/arch-arm64/syscalls/read.S
index cf7ca04..c529576 100644
--- a/libc/arch-arm64/syscalls/read.S
+++ b/libc/arch-arm64/syscalls/read.S
@@ -4,14 +4,18 @@
 
 ENTRY(read)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_read
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/readahead.S b/libc/arch-arm64/syscalls/readahead.S
index fe45cf9..e8394cc 100644
--- a/libc/arch-arm64/syscalls/readahead.S
+++ b/libc/arch-arm64/syscalls/readahead.S
@@ -4,14 +4,18 @@
 
 ENTRY(readahead)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_readahead
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/readlinkat.S b/libc/arch-arm64/syscalls/readlinkat.S
index eb8221c..d7cadcc 100644
--- a/libc/arch-arm64/syscalls/readlinkat.S
+++ b/libc/arch-arm64/syscalls/readlinkat.S
@@ -4,14 +4,18 @@
 
 ENTRY(readlinkat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_readlinkat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/readv.S b/libc/arch-arm64/syscalls/readv.S
index f4fa612..98d0742 100644
--- a/libc/arch-arm64/syscalls/readv.S
+++ b/libc/arch-arm64/syscalls/readv.S
@@ -4,14 +4,18 @@
 
 ENTRY(readv)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_readv
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/recvfrom.S b/libc/arch-arm64/syscalls/recvfrom.S
index 51ac25f..63181f1 100644
--- a/libc/arch-arm64/syscalls/recvfrom.S
+++ b/libc/arch-arm64/syscalls/recvfrom.S
@@ -4,14 +4,18 @@
 
 ENTRY(recvfrom)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_recvfrom
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/recvmmsg.S b/libc/arch-arm64/syscalls/recvmmsg.S
index 44875cc..cb1fbfc 100644
--- a/libc/arch-arm64/syscalls/recvmmsg.S
+++ b/libc/arch-arm64/syscalls/recvmmsg.S
@@ -4,14 +4,18 @@
 
 ENTRY(recvmmsg)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_recvmmsg
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/recvmsg.S b/libc/arch-arm64/syscalls/recvmsg.S
index 4ca40ea..8a91a5f 100644
--- a/libc/arch-arm64/syscalls/recvmsg.S
+++ b/libc/arch-arm64/syscalls/recvmsg.S
@@ -4,14 +4,18 @@
 
 ENTRY(recvmsg)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_recvmsg
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/removexattr.S b/libc/arch-arm64/syscalls/removexattr.S
index ae53307..6fb557a 100644
--- a/libc/arch-arm64/syscalls/removexattr.S
+++ b/libc/arch-arm64/syscalls/removexattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(removexattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_removexattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/renameat.S b/libc/arch-arm64/syscalls/renameat.S
index 3f6e4d4..e4efeb8 100644
--- a/libc/arch-arm64/syscalls/renameat.S
+++ b/libc/arch-arm64/syscalls/renameat.S
@@ -4,14 +4,18 @@
 
 ENTRY(renameat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_renameat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sched_get_priority_max.S b/libc/arch-arm64/syscalls/sched_get_priority_max.S
index 735ca93..74f919b 100644
--- a/libc/arch-arm64/syscalls/sched_get_priority_max.S
+++ b/libc/arch-arm64/syscalls/sched_get_priority_max.S
@@ -4,14 +4,18 @@
 
 ENTRY(sched_get_priority_max)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sched_get_priority_max
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sched_get_priority_min.S b/libc/arch-arm64/syscalls/sched_get_priority_min.S
index a453b0b..d043b3b 100644
--- a/libc/arch-arm64/syscalls/sched_get_priority_min.S
+++ b/libc/arch-arm64/syscalls/sched_get_priority_min.S
@@ -4,14 +4,18 @@
 
 ENTRY(sched_get_priority_min)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sched_get_priority_min
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sched_getparam.S b/libc/arch-arm64/syscalls/sched_getparam.S
index f3492b9..fedcec8 100644
--- a/libc/arch-arm64/syscalls/sched_getparam.S
+++ b/libc/arch-arm64/syscalls/sched_getparam.S
@@ -4,14 +4,18 @@
 
 ENTRY(sched_getparam)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sched_getparam
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sched_getscheduler.S b/libc/arch-arm64/syscalls/sched_getscheduler.S
index db944f1..1225601 100644
--- a/libc/arch-arm64/syscalls/sched_getscheduler.S
+++ b/libc/arch-arm64/syscalls/sched_getscheduler.S
@@ -4,14 +4,18 @@
 
 ENTRY(sched_getscheduler)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sched_getscheduler
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sched_rr_get_interval.S b/libc/arch-arm64/syscalls/sched_rr_get_interval.S
index b91f646..796edda 100644
--- a/libc/arch-arm64/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-arm64/syscalls/sched_rr_get_interval.S
@@ -4,14 +4,18 @@
 
 ENTRY(sched_rr_get_interval)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sched_rr_get_interval
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sched_setaffinity.S b/libc/arch-arm64/syscalls/sched_setaffinity.S
index e8e1aec..2a7022d 100644
--- a/libc/arch-arm64/syscalls/sched_setaffinity.S
+++ b/libc/arch-arm64/syscalls/sched_setaffinity.S
@@ -4,14 +4,18 @@
 
 ENTRY(sched_setaffinity)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sched_setaffinity
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sched_setparam.S b/libc/arch-arm64/syscalls/sched_setparam.S
index 5df84f0..dd82a10 100644
--- a/libc/arch-arm64/syscalls/sched_setparam.S
+++ b/libc/arch-arm64/syscalls/sched_setparam.S
@@ -4,14 +4,18 @@
 
 ENTRY(sched_setparam)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sched_setparam
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sched_setscheduler.S b/libc/arch-arm64/syscalls/sched_setscheduler.S
index 83c31e4..25e1e36 100644
--- a/libc/arch-arm64/syscalls/sched_setscheduler.S
+++ b/libc/arch-arm64/syscalls/sched_setscheduler.S
@@ -4,14 +4,18 @@
 
 ENTRY(sched_setscheduler)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sched_setscheduler
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sched_yield.S b/libc/arch-arm64/syscalls/sched_yield.S
index 7d5f88b..cbee020 100644
--- a/libc/arch-arm64/syscalls/sched_yield.S
+++ b/libc/arch-arm64/syscalls/sched_yield.S
@@ -4,14 +4,18 @@
 
 ENTRY(sched_yield)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sched_yield
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sendfile.S b/libc/arch-arm64/syscalls/sendfile.S
index 7bf415d..1705d3c 100644
--- a/libc/arch-arm64/syscalls/sendfile.S
+++ b/libc/arch-arm64/syscalls/sendfile.S
@@ -4,14 +4,18 @@
 
 ENTRY(sendfile)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sendfile
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sendmmsg.S b/libc/arch-arm64/syscalls/sendmmsg.S
index 43b2fbf..2277110 100644
--- a/libc/arch-arm64/syscalls/sendmmsg.S
+++ b/libc/arch-arm64/syscalls/sendmmsg.S
@@ -4,14 +4,18 @@
 
 ENTRY(sendmmsg)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sendmmsg
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sendmsg.S b/libc/arch-arm64/syscalls/sendmsg.S
index 2f0cdc8..96fcb9a 100644
--- a/libc/arch-arm64/syscalls/sendmsg.S
+++ b/libc/arch-arm64/syscalls/sendmsg.S
@@ -4,14 +4,18 @@
 
 ENTRY(sendmsg)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sendmsg
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sendto.S b/libc/arch-arm64/syscalls/sendto.S
index 3fd54d1..67589ba 100644
--- a/libc/arch-arm64/syscalls/sendto.S
+++ b/libc/arch-arm64/syscalls/sendto.S
@@ -4,14 +4,18 @@
 
 ENTRY(sendto)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sendto
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setgid.S b/libc/arch-arm64/syscalls/setgid.S
index 0a811b0..fbaa785 100644
--- a/libc/arch-arm64/syscalls/setgid.S
+++ b/libc/arch-arm64/syscalls/setgid.S
@@ -4,14 +4,18 @@
 
 ENTRY(setgid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setgid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setgroups.S b/libc/arch-arm64/syscalls/setgroups.S
index d316e5e..48035b6 100644
--- a/libc/arch-arm64/syscalls/setgroups.S
+++ b/libc/arch-arm64/syscalls/setgroups.S
@@ -4,14 +4,18 @@
 
 ENTRY(setgroups)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setgroups
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setitimer.S b/libc/arch-arm64/syscalls/setitimer.S
index 7c2b718..42af94b 100644
--- a/libc/arch-arm64/syscalls/setitimer.S
+++ b/libc/arch-arm64/syscalls/setitimer.S
@@ -4,14 +4,18 @@
 
 ENTRY(setitimer)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setitimer
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setns.S b/libc/arch-arm64/syscalls/setns.S
index 2ce2a75..f695597 100644
--- a/libc/arch-arm64/syscalls/setns.S
+++ b/libc/arch-arm64/syscalls/setns.S
@@ -4,14 +4,18 @@
 
 ENTRY(setns)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setns
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setpgid.S b/libc/arch-arm64/syscalls/setpgid.S
index bd12e70..5653256 100644
--- a/libc/arch-arm64/syscalls/setpgid.S
+++ b/libc/arch-arm64/syscalls/setpgid.S
@@ -4,14 +4,18 @@
 
 ENTRY(setpgid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setpgid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setpriority.S b/libc/arch-arm64/syscalls/setpriority.S
index d9a4857..121bcaa 100644
--- a/libc/arch-arm64/syscalls/setpriority.S
+++ b/libc/arch-arm64/syscalls/setpriority.S
@@ -4,14 +4,18 @@
 
 ENTRY(setpriority)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setpriority
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setregid.S b/libc/arch-arm64/syscalls/setregid.S
index 702ae8b..6389551 100644
--- a/libc/arch-arm64/syscalls/setregid.S
+++ b/libc/arch-arm64/syscalls/setregid.S
@@ -4,14 +4,18 @@
 
 ENTRY(setregid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setregid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setresgid.S b/libc/arch-arm64/syscalls/setresgid.S
index c9501ac..bf78249 100644
--- a/libc/arch-arm64/syscalls/setresgid.S
+++ b/libc/arch-arm64/syscalls/setresgid.S
@@ -4,14 +4,18 @@
 
 ENTRY(setresgid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setresgid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setresuid.S b/libc/arch-arm64/syscalls/setresuid.S
index 6f680c3..83200da 100644
--- a/libc/arch-arm64/syscalls/setresuid.S
+++ b/libc/arch-arm64/syscalls/setresuid.S
@@ -4,14 +4,18 @@
 
 ENTRY(setresuid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setresuid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setreuid.S b/libc/arch-arm64/syscalls/setreuid.S
index ef870fa..2253eec 100644
--- a/libc/arch-arm64/syscalls/setreuid.S
+++ b/libc/arch-arm64/syscalls/setreuid.S
@@ -4,14 +4,18 @@
 
 ENTRY(setreuid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setreuid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setrlimit.S b/libc/arch-arm64/syscalls/setrlimit.S
index 4bc412a..034ae36 100644
--- a/libc/arch-arm64/syscalls/setrlimit.S
+++ b/libc/arch-arm64/syscalls/setrlimit.S
@@ -4,14 +4,18 @@
 
 ENTRY(setrlimit)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setrlimit
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setsid.S b/libc/arch-arm64/syscalls/setsid.S
index c9ba594..64123df 100644
--- a/libc/arch-arm64/syscalls/setsid.S
+++ b/libc/arch-arm64/syscalls/setsid.S
@@ -4,14 +4,18 @@
 
 ENTRY(setsid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setsid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setsockopt.S b/libc/arch-arm64/syscalls/setsockopt.S
index 7c9d584..fe8da22 100644
--- a/libc/arch-arm64/syscalls/setsockopt.S
+++ b/libc/arch-arm64/syscalls/setsockopt.S
@@ -4,14 +4,18 @@
 
 ENTRY(setsockopt)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setsockopt
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/settimeofday.S b/libc/arch-arm64/syscalls/settimeofday.S
index 4cf6ff2..50debf9 100644
--- a/libc/arch-arm64/syscalls/settimeofday.S
+++ b/libc/arch-arm64/syscalls/settimeofday.S
@@ -4,14 +4,18 @@
 
 ENTRY(settimeofday)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_settimeofday
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setuid.S b/libc/arch-arm64/syscalls/setuid.S
index a886c15..0a9adbe 100644
--- a/libc/arch-arm64/syscalls/setuid.S
+++ b/libc/arch-arm64/syscalls/setuid.S
@@ -4,14 +4,18 @@
 
 ENTRY(setuid)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setuid
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/setxattr.S b/libc/arch-arm64/syscalls/setxattr.S
index 1d25f3a..ebfd607 100644
--- a/libc/arch-arm64/syscalls/setxattr.S
+++ b/libc/arch-arm64/syscalls/setxattr.S
@@ -4,14 +4,18 @@
 
 ENTRY(setxattr)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_setxattr
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/shutdown.S b/libc/arch-arm64/syscalls/shutdown.S
index b9fc3c3..6e878d6 100644
--- a/libc/arch-arm64/syscalls/shutdown.S
+++ b/libc/arch-arm64/syscalls/shutdown.S
@@ -4,14 +4,18 @@
 
 ENTRY(shutdown)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_shutdown
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sigaltstack.S b/libc/arch-arm64/syscalls/sigaltstack.S
index 6052caa..46794d4 100644
--- a/libc/arch-arm64/syscalls/sigaltstack.S
+++ b/libc/arch-arm64/syscalls/sigaltstack.S
@@ -4,14 +4,18 @@
 
 ENTRY(sigaltstack)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sigaltstack
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/socketpair.S b/libc/arch-arm64/syscalls/socketpair.S
index 05e617b..c42ff24 100644
--- a/libc/arch-arm64/syscalls/socketpair.S
+++ b/libc/arch-arm64/syscalls/socketpair.S
@@ -4,14 +4,18 @@
 
 ENTRY(socketpair)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_socketpair
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/statfs64.S b/libc/arch-arm64/syscalls/statfs64.S
index c037980..66662ee 100644
--- a/libc/arch-arm64/syscalls/statfs64.S
+++ b/libc/arch-arm64/syscalls/statfs64.S
@@ -4,14 +4,18 @@
 
 ENTRY(statfs64)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_statfs
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/swapoff.S b/libc/arch-arm64/syscalls/swapoff.S
index 742b460..1d465b0 100644
--- a/libc/arch-arm64/syscalls/swapoff.S
+++ b/libc/arch-arm64/syscalls/swapoff.S
@@ -4,14 +4,18 @@
 
 ENTRY(swapoff)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_swapoff
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/swapon.S b/libc/arch-arm64/syscalls/swapon.S
index b82d7de..7e5f850 100644
--- a/libc/arch-arm64/syscalls/swapon.S
+++ b/libc/arch-arm64/syscalls/swapon.S
@@ -4,14 +4,18 @@
 
 ENTRY(swapon)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_swapon
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/symlinkat.S b/libc/arch-arm64/syscalls/symlinkat.S
index c6a8313..0081cf2 100644
--- a/libc/arch-arm64/syscalls/symlinkat.S
+++ b/libc/arch-arm64/syscalls/symlinkat.S
@@ -4,14 +4,18 @@
 
 ENTRY(symlinkat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_symlinkat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sync.S b/libc/arch-arm64/syscalls/sync.S
index 1954fe8..67bc554 100644
--- a/libc/arch-arm64/syscalls/sync.S
+++ b/libc/arch-arm64/syscalls/sync.S
@@ -4,14 +4,18 @@
 
 ENTRY(sync)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sync
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/sysinfo.S b/libc/arch-arm64/syscalls/sysinfo.S
index cb91550..0797a39 100644
--- a/libc/arch-arm64/syscalls/sysinfo.S
+++ b/libc/arch-arm64/syscalls/sysinfo.S
@@ -4,14 +4,18 @@
 
 ENTRY(sysinfo)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_sysinfo
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/tgkill.S b/libc/arch-arm64/syscalls/tgkill.S
index a401819..9366c70 100644
--- a/libc/arch-arm64/syscalls/tgkill.S
+++ b/libc/arch-arm64/syscalls/tgkill.S
@@ -4,14 +4,18 @@
 
 ENTRY(tgkill)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_tgkill
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/timerfd_create.S b/libc/arch-arm64/syscalls/timerfd_create.S
index e0558be..1e9d2e3 100644
--- a/libc/arch-arm64/syscalls/timerfd_create.S
+++ b/libc/arch-arm64/syscalls/timerfd_create.S
@@ -4,14 +4,18 @@
 
 ENTRY(timerfd_create)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_timerfd_create
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/timerfd_gettime.S b/libc/arch-arm64/syscalls/timerfd_gettime.S
index 09234cd..56d7f96 100644
--- a/libc/arch-arm64/syscalls/timerfd_gettime.S
+++ b/libc/arch-arm64/syscalls/timerfd_gettime.S
@@ -4,14 +4,18 @@
 
 ENTRY(timerfd_gettime)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_timerfd_gettime
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/timerfd_settime.S b/libc/arch-arm64/syscalls/timerfd_settime.S
index cc205ad..29af0f1 100644
--- a/libc/arch-arm64/syscalls/timerfd_settime.S
+++ b/libc/arch-arm64/syscalls/timerfd_settime.S
@@ -4,14 +4,18 @@
 
 ENTRY(timerfd_settime)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_timerfd_settime
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/times.S b/libc/arch-arm64/syscalls/times.S
index c5fe38b..9487186 100644
--- a/libc/arch-arm64/syscalls/times.S
+++ b/libc/arch-arm64/syscalls/times.S
@@ -4,14 +4,18 @@
 
 ENTRY(times)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_times
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/tkill.S b/libc/arch-arm64/syscalls/tkill.S
index 0b910fc..307bd14 100644
--- a/libc/arch-arm64/syscalls/tkill.S
+++ b/libc/arch-arm64/syscalls/tkill.S
@@ -4,14 +4,18 @@
 
 ENTRY(tkill)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_tkill
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/truncate.S b/libc/arch-arm64/syscalls/truncate.S
index 7e3385b..3bbe356 100644
--- a/libc/arch-arm64/syscalls/truncate.S
+++ b/libc/arch-arm64/syscalls/truncate.S
@@ -4,14 +4,18 @@
 
 ENTRY(truncate)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_truncate
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/umask.S b/libc/arch-arm64/syscalls/umask.S
index 70a3e01..ca72092 100644
--- a/libc/arch-arm64/syscalls/umask.S
+++ b/libc/arch-arm64/syscalls/umask.S
@@ -4,14 +4,18 @@
 
 ENTRY(umask)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_umask
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/umount2.S b/libc/arch-arm64/syscalls/umount2.S
index cdd0362..a959625 100644
--- a/libc/arch-arm64/syscalls/umount2.S
+++ b/libc/arch-arm64/syscalls/umount2.S
@@ -4,14 +4,18 @@
 
 ENTRY(umount2)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_umount2
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/uname.S b/libc/arch-arm64/syscalls/uname.S
index c242786..2f87563 100644
--- a/libc/arch-arm64/syscalls/uname.S
+++ b/libc/arch-arm64/syscalls/uname.S
@@ -4,14 +4,18 @@
 
 ENTRY(uname)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_uname
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/unlinkat.S b/libc/arch-arm64/syscalls/unlinkat.S
index f7bb2c5..0025726 100644
--- a/libc/arch-arm64/syscalls/unlinkat.S
+++ b/libc/arch-arm64/syscalls/unlinkat.S
@@ -4,14 +4,18 @@
 
 ENTRY(unlinkat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_unlinkat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/unshare.S b/libc/arch-arm64/syscalls/unshare.S
index c9bd497..55462b4 100644
--- a/libc/arch-arm64/syscalls/unshare.S
+++ b/libc/arch-arm64/syscalls/unshare.S
@@ -4,14 +4,18 @@
 
 ENTRY(unshare)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_unshare
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/utimensat.S b/libc/arch-arm64/syscalls/utimensat.S
index 62c98a6..aa5cfbf 100644
--- a/libc/arch-arm64/syscalls/utimensat.S
+++ b/libc/arch-arm64/syscalls/utimensat.S
@@ -4,14 +4,18 @@
 
 ENTRY(utimensat)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_utimensat
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/wait4.S b/libc/arch-arm64/syscalls/wait4.S
index 7431535..93183e5 100644
--- a/libc/arch-arm64/syscalls/wait4.S
+++ b/libc/arch-arm64/syscalls/wait4.S
@@ -4,14 +4,18 @@
 
 ENTRY(wait4)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_wait4
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/write.S b/libc/arch-arm64/syscalls/write.S
index 2f95f5d..b7288d1 100644
--- a/libc/arch-arm64/syscalls/write.S
+++ b/libc/arch-arm64/syscalls/write.S
@@ -4,14 +4,18 @@
 
 ENTRY(write)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_write
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/writev.S b/libc/arch-arm64/syscalls/writev.S
index 015c1d3..13af454 100644
--- a/libc/arch-arm64/syscalls/writev.S
+++ b/libc/arch-arm64/syscalls/writev.S
@@ -4,14 +4,18 @@
 
 ENTRY(writev)
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, __NR_writev
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 8a5f3d2..87d51e3 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -96,14 +96,18 @@
 
 arm64_call = syscall_stub_header + """\
     stp     x29, x30, [sp, #-16]!
+    .cfi_def_cfa_offset 16
+    .cfi_rel_offset x29, 0
+    .cfi_rel_offset x30, 8
     mov     x29,  sp
-    str     x8,       [sp, #-16]!
 
     mov     x8, %(__NR_name)s
     svc     #0
 
-    ldr     x8,       [sp], #16
     ldp     x29, x30, [sp], #16
+    .cfi_def_cfa_offset 0
+    .cfi_restore x29
+    .cfi_restore x30
 
     cmn     x0, #(MAX_ERRNO + 1)
     cneg    x0, x0, hi