Add cfi directives to x86 syscalls.
Modify the syscalls script to generate the cfi directives for x86
syscalls.
Update the x86 syscalls.
Change-Id: Ia1993dc714a7e79f917087fff8200e9a02c52603
diff --git a/libc/arch-x86/syscalls/__brk.S b/libc/arch-x86/syscalls/__brk.S
index ebde7ba..728bf81 100644
--- a/libc/arch-x86/syscalls/__brk.S
+++ b/libc/arch-x86/syscalls/__brk.S
@@ -4,6 +4,8 @@
ENTRY(__brk)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_brk, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/__epoll_pwait.S b/libc/arch-x86/syscalls/__epoll_pwait.S
index 2d424c6..9bcc142 100644
--- a/libc/arch-x86/syscalls/__epoll_pwait.S
+++ b/libc/arch-x86/syscalls/__epoll_pwait.S
@@ -9,6 +9,13 @@
pushl %esi
pushl %edi
pushl %ebp
+ .cfi_def_cfa_offset 24
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
+ .cfi_rel_offset ebp, 20
mov 28(%esp), %ebx
mov 32(%esp), %ecx
mov 36(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__exit.S b/libc/arch-x86/syscalls/__exit.S
index 83f04a5..eaddc5e 100644
--- a/libc/arch-x86/syscalls/__exit.S
+++ b/libc/arch-x86/syscalls/__exit.S
@@ -4,6 +4,8 @@
ENTRY(__exit)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_exit, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/__fcntl64.S b/libc/arch-x86/syscalls/__fcntl64.S
index dda2b17..faefa65 100644
--- a/libc/arch-x86/syscalls/__fcntl64.S
+++ b/libc/arch-x86/syscalls/__fcntl64.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__fstatfs64.S b/libc/arch-x86/syscalls/__fstatfs64.S
index 1f0cc80..dfd04af 100644
--- a/libc/arch-x86/syscalls/__fstatfs64.S
+++ b/libc/arch-x86/syscalls/__fstatfs64.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__getcpu.S b/libc/arch-x86/syscalls/__getcpu.S
index cef5f18..d1da871 100644
--- a/libc/arch-x86/syscalls/__getcpu.S
+++ b/libc/arch-x86/syscalls/__getcpu.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__getcwd.S b/libc/arch-x86/syscalls/__getcwd.S
index 5a0dae2..a9834e2 100644
--- a/libc/arch-x86/syscalls/__getcwd.S
+++ b/libc/arch-x86/syscalls/__getcwd.S
@@ -5,6 +5,9 @@
ENTRY(__getcwd)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_getcwd, %eax
diff --git a/libc/arch-x86/syscalls/__getpriority.S b/libc/arch-x86/syscalls/__getpriority.S
index 72fd8a5..99d33bb 100644
--- a/libc/arch-x86/syscalls/__getpriority.S
+++ b/libc/arch-x86/syscalls/__getpriority.S
@@ -5,6 +5,9 @@
ENTRY(__getpriority)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_getpriority, %eax
diff --git a/libc/arch-x86/syscalls/__ioctl.S b/libc/arch-x86/syscalls/__ioctl.S
index 6caf918..ad617f0 100644
--- a/libc/arch-x86/syscalls/__ioctl.S
+++ b/libc/arch-x86/syscalls/__ioctl.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__llseek.S b/libc/arch-x86/syscalls/__llseek.S
index a24b021..2dab8a9 100644
--- a/libc/arch-x86/syscalls/__llseek.S
+++ b/libc/arch-x86/syscalls/__llseek.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__mmap2.S b/libc/arch-x86/syscalls/__mmap2.S
index 6308c9b..963abf3 100644
--- a/libc/arch-x86/syscalls/__mmap2.S
+++ b/libc/arch-x86/syscalls/__mmap2.S
@@ -9,6 +9,13 @@
pushl %esi
pushl %edi
pushl %ebp
+ .cfi_def_cfa_offset 24
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
+ .cfi_rel_offset ebp, 20
mov 28(%esp), %ebx
mov 32(%esp), %ecx
mov 36(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__openat.S b/libc/arch-x86/syscalls/__openat.S
index 7bb833c..6b05bec 100644
--- a/libc/arch-x86/syscalls/__openat.S
+++ b/libc/arch-x86/syscalls/__openat.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__ppoll.S b/libc/arch-x86/syscalls/__ppoll.S
index 553fad1..e5af93c 100644
--- a/libc/arch-x86/syscalls/__ppoll.S
+++ b/libc/arch-x86/syscalls/__ppoll.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__pselect6.S b/libc/arch-x86/syscalls/__pselect6.S
index a464c9a..984a67e 100644
--- a/libc/arch-x86/syscalls/__pselect6.S
+++ b/libc/arch-x86/syscalls/__pselect6.S
@@ -9,6 +9,13 @@
pushl %esi
pushl %edi
pushl %ebp
+ .cfi_def_cfa_offset 24
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
+ .cfi_rel_offset ebp, 20
mov 28(%esp), %ebx
mov 32(%esp), %ecx
mov 36(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__ptrace.S b/libc/arch-x86/syscalls/__ptrace.S
index 7dc46d9..d3b8031 100644
--- a/libc/arch-x86/syscalls/__ptrace.S
+++ b/libc/arch-x86/syscalls/__ptrace.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__reboot.S b/libc/arch-x86/syscalls/__reboot.S
index bde2c60..b644906 100644
--- a/libc/arch-x86/syscalls/__reboot.S
+++ b/libc/arch-x86/syscalls/__reboot.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__rt_sigaction.S b/libc/arch-x86/syscalls/__rt_sigaction.S
index 47c33be..1c5fdcc 100644
--- a/libc/arch-x86/syscalls/__rt_sigaction.S
+++ b/libc/arch-x86/syscalls/__rt_sigaction.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__rt_sigpending.S b/libc/arch-x86/syscalls/__rt_sigpending.S
index e4a0981..5522195 100644
--- a/libc/arch-x86/syscalls/__rt_sigpending.S
+++ b/libc/arch-x86/syscalls/__rt_sigpending.S
@@ -5,6 +5,9 @@
ENTRY(__rt_sigpending)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_rt_sigpending, %eax
diff --git a/libc/arch-x86/syscalls/__rt_sigprocmask.S b/libc/arch-x86/syscalls/__rt_sigprocmask.S
index 0fa1106..0df7301 100644
--- a/libc/arch-x86/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-x86/syscalls/__rt_sigprocmask.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__rt_sigsuspend.S b/libc/arch-x86/syscalls/__rt_sigsuspend.S
index aa4eae6..0e7dbdf 100644
--- a/libc/arch-x86/syscalls/__rt_sigsuspend.S
+++ b/libc/arch-x86/syscalls/__rt_sigsuspend.S
@@ -5,6 +5,9 @@
ENTRY(__rt_sigsuspend)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_rt_sigsuspend, %eax
diff --git a/libc/arch-x86/syscalls/__rt_sigtimedwait.S b/libc/arch-x86/syscalls/__rt_sigtimedwait.S
index a97ef77..cfbc7a6 100644
--- a/libc/arch-x86/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-x86/syscalls/__rt_sigtimedwait.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__sched_getaffinity.S b/libc/arch-x86/syscalls/__sched_getaffinity.S
index c9de997..a9b9f79 100644
--- a/libc/arch-x86/syscalls/__sched_getaffinity.S
+++ b/libc/arch-x86/syscalls/__sched_getaffinity.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__set_thread_area.S b/libc/arch-x86/syscalls/__set_thread_area.S
index 0dc0e33..ce06233 100644
--- a/libc/arch-x86/syscalls/__set_thread_area.S
+++ b/libc/arch-x86/syscalls/__set_thread_area.S
@@ -4,6 +4,8 @@
ENTRY(__set_thread_area)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_set_thread_area, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/__set_tid_address.S b/libc/arch-x86/syscalls/__set_tid_address.S
index 0c66d47..6a3943d 100644
--- a/libc/arch-x86/syscalls/__set_tid_address.S
+++ b/libc/arch-x86/syscalls/__set_tid_address.S
@@ -4,6 +4,8 @@
ENTRY(__set_tid_address)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_set_tid_address, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/__sigaction.S b/libc/arch-x86/syscalls/__sigaction.S
index 45274df..8824a85 100644
--- a/libc/arch-x86/syscalls/__sigaction.S
+++ b/libc/arch-x86/syscalls/__sigaction.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__statfs64.S b/libc/arch-x86/syscalls/__statfs64.S
index 1db5f69..7a91f1d 100644
--- a/libc/arch-x86/syscalls/__statfs64.S
+++ b/libc/arch-x86/syscalls/__statfs64.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__syslog.S b/libc/arch-x86/syscalls/__syslog.S
index dec69e8..1da01be 100644
--- a/libc/arch-x86/syscalls/__syslog.S
+++ b/libc/arch-x86/syscalls/__syslog.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__timer_create.S b/libc/arch-x86/syscalls/__timer_create.S
index 6a30721..68480d1 100644
--- a/libc/arch-x86/syscalls/__timer_create.S
+++ b/libc/arch-x86/syscalls/__timer_create.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__timer_delete.S b/libc/arch-x86/syscalls/__timer_delete.S
index 5119cae..a2732e1 100644
--- a/libc/arch-x86/syscalls/__timer_delete.S
+++ b/libc/arch-x86/syscalls/__timer_delete.S
@@ -4,6 +4,8 @@
ENTRY(__timer_delete)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_timer_delete, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/__timer_getoverrun.S b/libc/arch-x86/syscalls/__timer_getoverrun.S
index fbe7e42..a340bfe 100644
--- a/libc/arch-x86/syscalls/__timer_getoverrun.S
+++ b/libc/arch-x86/syscalls/__timer_getoverrun.S
@@ -4,6 +4,8 @@
ENTRY(__timer_getoverrun)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_timer_getoverrun, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/__timer_gettime.S b/libc/arch-x86/syscalls/__timer_gettime.S
index ec4a5e9..4aeb8eb 100644
--- a/libc/arch-x86/syscalls/__timer_gettime.S
+++ b/libc/arch-x86/syscalls/__timer_gettime.S
@@ -5,6 +5,9 @@
ENTRY(__timer_gettime)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_timer_gettime, %eax
diff --git a/libc/arch-x86/syscalls/__timer_settime.S b/libc/arch-x86/syscalls/__timer_settime.S
index abd2754..f93bca4 100644
--- a/libc/arch-x86/syscalls/__timer_settime.S
+++ b/libc/arch-x86/syscalls/__timer_settime.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/__waitid.S b/libc/arch-x86/syscalls/__waitid.S
index c22a9c5..cda5238 100644
--- a/libc/arch-x86/syscalls/__waitid.S
+++ b/libc/arch-x86/syscalls/__waitid.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/_exit.S b/libc/arch-x86/syscalls/_exit.S
index 04dc16b..2ff5faf 100644
--- a/libc/arch-x86/syscalls/_exit.S
+++ b/libc/arch-x86/syscalls/_exit.S
@@ -4,6 +4,8 @@
ENTRY(_exit)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_exit_group, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/accept.S b/libc/arch-x86/syscalls/accept.S
index f2912c8..f7e8a58 100644
--- a/libc/arch-x86/syscalls/accept.S
+++ b/libc/arch-x86/syscalls/accept.S
@@ -5,6 +5,9 @@
ENTRY(accept)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $5, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/acct.S b/libc/arch-x86/syscalls/acct.S
index 02416ba..6abaffc 100644
--- a/libc/arch-x86/syscalls/acct.S
+++ b/libc/arch-x86/syscalls/acct.S
@@ -4,6 +4,8 @@
ENTRY(acct)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_acct, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/bind.S b/libc/arch-x86/syscalls/bind.S
index 0628ddb..7c2acb5 100644
--- a/libc/arch-x86/syscalls/bind.S
+++ b/libc/arch-x86/syscalls/bind.S
@@ -5,6 +5,9 @@
ENTRY(bind)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $2, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/capget.S b/libc/arch-x86/syscalls/capget.S
index 1c55147..aa7b432 100644
--- a/libc/arch-x86/syscalls/capget.S
+++ b/libc/arch-x86/syscalls/capget.S
@@ -5,6 +5,9 @@
ENTRY(capget)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_capget, %eax
diff --git a/libc/arch-x86/syscalls/capset.S b/libc/arch-x86/syscalls/capset.S
index 485d2b0..6c31083 100644
--- a/libc/arch-x86/syscalls/capset.S
+++ b/libc/arch-x86/syscalls/capset.S
@@ -5,6 +5,9 @@
ENTRY(capset)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_capset, %eax
diff --git a/libc/arch-x86/syscalls/chdir.S b/libc/arch-x86/syscalls/chdir.S
index b944bf8..a51ac6e 100644
--- a/libc/arch-x86/syscalls/chdir.S
+++ b/libc/arch-x86/syscalls/chdir.S
@@ -4,6 +4,8 @@
ENTRY(chdir)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_chdir, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/chroot.S b/libc/arch-x86/syscalls/chroot.S
index 5ea29ae..be8f686 100644
--- a/libc/arch-x86/syscalls/chroot.S
+++ b/libc/arch-x86/syscalls/chroot.S
@@ -4,6 +4,8 @@
ENTRY(chroot)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_chroot, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/clock_getres.S b/libc/arch-x86/syscalls/clock_getres.S
index 9af9278..ce7e6f7 100644
--- a/libc/arch-x86/syscalls/clock_getres.S
+++ b/libc/arch-x86/syscalls/clock_getres.S
@@ -5,6 +5,9 @@
ENTRY(clock_getres)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_clock_getres, %eax
diff --git a/libc/arch-x86/syscalls/clock_gettime.S b/libc/arch-x86/syscalls/clock_gettime.S
index 0aff332..b1cdb1a 100644
--- a/libc/arch-x86/syscalls/clock_gettime.S
+++ b/libc/arch-x86/syscalls/clock_gettime.S
@@ -5,6 +5,9 @@
ENTRY(clock_gettime)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_clock_gettime, %eax
diff --git a/libc/arch-x86/syscalls/clock_nanosleep.S b/libc/arch-x86/syscalls/clock_nanosleep.S
index 572d4a0..6c025e3 100644
--- a/libc/arch-x86/syscalls/clock_nanosleep.S
+++ b/libc/arch-x86/syscalls/clock_nanosleep.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/clock_settime.S b/libc/arch-x86/syscalls/clock_settime.S
index 8aaf9d8..7c863e1 100644
--- a/libc/arch-x86/syscalls/clock_settime.S
+++ b/libc/arch-x86/syscalls/clock_settime.S
@@ -5,6 +5,9 @@
ENTRY(clock_settime)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_clock_settime, %eax
diff --git a/libc/arch-x86/syscalls/close.S b/libc/arch-x86/syscalls/close.S
index 2ceb2e1..3eb3be1 100644
--- a/libc/arch-x86/syscalls/close.S
+++ b/libc/arch-x86/syscalls/close.S
@@ -4,6 +4,8 @@
ENTRY(close)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_close, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/connect.S b/libc/arch-x86/syscalls/connect.S
index 37336ee..c0d73ca 100644
--- a/libc/arch-x86/syscalls/connect.S
+++ b/libc/arch-x86/syscalls/connect.S
@@ -5,6 +5,9 @@
ENTRY(connect)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $3, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/delete_module.S b/libc/arch-x86/syscalls/delete_module.S
index 197a23a..11ff762 100644
--- a/libc/arch-x86/syscalls/delete_module.S
+++ b/libc/arch-x86/syscalls/delete_module.S
@@ -5,6 +5,9 @@
ENTRY(delete_module)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_delete_module, %eax
diff --git a/libc/arch-x86/syscalls/dup.S b/libc/arch-x86/syscalls/dup.S
index 5854471..98070e2 100644
--- a/libc/arch-x86/syscalls/dup.S
+++ b/libc/arch-x86/syscalls/dup.S
@@ -4,6 +4,8 @@
ENTRY(dup)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_dup, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/dup3.S b/libc/arch-x86/syscalls/dup3.S
index bb7c92f..4380e6a 100644
--- a/libc/arch-x86/syscalls/dup3.S
+++ b/libc/arch-x86/syscalls/dup3.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/epoll_create1.S b/libc/arch-x86/syscalls/epoll_create1.S
index e2e1e41..ca5d4d1 100644
--- a/libc/arch-x86/syscalls/epoll_create1.S
+++ b/libc/arch-x86/syscalls/epoll_create1.S
@@ -4,6 +4,8 @@
ENTRY(epoll_create1)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_epoll_create1, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/epoll_ctl.S b/libc/arch-x86/syscalls/epoll_ctl.S
index c71119d..df345cd 100644
--- a/libc/arch-x86/syscalls/epoll_ctl.S
+++ b/libc/arch-x86/syscalls/epoll_ctl.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/eventfd.S b/libc/arch-x86/syscalls/eventfd.S
index 376a4f6..333bca4 100644
--- a/libc/arch-x86/syscalls/eventfd.S
+++ b/libc/arch-x86/syscalls/eventfd.S
@@ -5,6 +5,9 @@
ENTRY(eventfd)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_eventfd2, %eax
diff --git a/libc/arch-x86/syscalls/execve.S b/libc/arch-x86/syscalls/execve.S
index 8e6c432..95523bc 100644
--- a/libc/arch-x86/syscalls/execve.S
+++ b/libc/arch-x86/syscalls/execve.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/faccessat.S b/libc/arch-x86/syscalls/faccessat.S
index be95a0e..0ad6224 100644
--- a/libc/arch-x86/syscalls/faccessat.S
+++ b/libc/arch-x86/syscalls/faccessat.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/fchdir.S b/libc/arch-x86/syscalls/fchdir.S
index a798322..4298c2a 100644
--- a/libc/arch-x86/syscalls/fchdir.S
+++ b/libc/arch-x86/syscalls/fchdir.S
@@ -4,6 +4,8 @@
ENTRY(fchdir)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_fchdir, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/fchmod.S b/libc/arch-x86/syscalls/fchmod.S
index 3dcf5dc..d4ef36f 100644
--- a/libc/arch-x86/syscalls/fchmod.S
+++ b/libc/arch-x86/syscalls/fchmod.S
@@ -5,6 +5,9 @@
ENTRY(fchmod)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_fchmod, %eax
diff --git a/libc/arch-x86/syscalls/fchmodat.S b/libc/arch-x86/syscalls/fchmodat.S
index 254fcb8..4fb6995 100644
--- a/libc/arch-x86/syscalls/fchmodat.S
+++ b/libc/arch-x86/syscalls/fchmodat.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/fchown.S b/libc/arch-x86/syscalls/fchown.S
index 76298c4..326fe16 100644
--- a/libc/arch-x86/syscalls/fchown.S
+++ b/libc/arch-x86/syscalls/fchown.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/fchownat.S b/libc/arch-x86/syscalls/fchownat.S
index fb295c4..802dc44 100644
--- a/libc/arch-x86/syscalls/fchownat.S
+++ b/libc/arch-x86/syscalls/fchownat.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/fdatasync.S b/libc/arch-x86/syscalls/fdatasync.S
index 9ddf03b..02e09be 100644
--- a/libc/arch-x86/syscalls/fdatasync.S
+++ b/libc/arch-x86/syscalls/fdatasync.S
@@ -4,6 +4,8 @@
ENTRY(fdatasync)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_fdatasync, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/fgetxattr.S b/libc/arch-x86/syscalls/fgetxattr.S
index 2250c93..99a920d 100644
--- a/libc/arch-x86/syscalls/fgetxattr.S
+++ b/libc/arch-x86/syscalls/fgetxattr.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/flistxattr.S b/libc/arch-x86/syscalls/flistxattr.S
index 1ebd9bd..a1691fc 100644
--- a/libc/arch-x86/syscalls/flistxattr.S
+++ b/libc/arch-x86/syscalls/flistxattr.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/flock.S b/libc/arch-x86/syscalls/flock.S
index c19edc7..a4388e9 100644
--- a/libc/arch-x86/syscalls/flock.S
+++ b/libc/arch-x86/syscalls/flock.S
@@ -5,6 +5,9 @@
ENTRY(flock)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_flock, %eax
diff --git a/libc/arch-x86/syscalls/fremovexattr.S b/libc/arch-x86/syscalls/fremovexattr.S
index 52b1288..6377974 100644
--- a/libc/arch-x86/syscalls/fremovexattr.S
+++ b/libc/arch-x86/syscalls/fremovexattr.S
@@ -5,6 +5,9 @@
ENTRY(fremovexattr)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_fremovexattr, %eax
diff --git a/libc/arch-x86/syscalls/fsetxattr.S b/libc/arch-x86/syscalls/fsetxattr.S
index f0e75e2..2f926a5 100644
--- a/libc/arch-x86/syscalls/fsetxattr.S
+++ b/libc/arch-x86/syscalls/fsetxattr.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/fstat.S b/libc/arch-x86/syscalls/fstat.S
index b37fc3f..daa4d7f 100644
--- a/libc/arch-x86/syscalls/fstat.S
+++ b/libc/arch-x86/syscalls/fstat.S
@@ -5,6 +5,9 @@
ENTRY(fstat)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_fstat64, %eax
diff --git a/libc/arch-x86/syscalls/fstatat.S b/libc/arch-x86/syscalls/fstatat.S
index ec517c5..7be868c 100644
--- a/libc/arch-x86/syscalls/fstatat.S
+++ b/libc/arch-x86/syscalls/fstatat.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/fsync.S b/libc/arch-x86/syscalls/fsync.S
index 4f589f4..71183cb 100644
--- a/libc/arch-x86/syscalls/fsync.S
+++ b/libc/arch-x86/syscalls/fsync.S
@@ -4,6 +4,8 @@
ENTRY(fsync)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_fsync, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/ftruncate.S b/libc/arch-x86/syscalls/ftruncate.S
index e64ead4..1003077 100644
--- a/libc/arch-x86/syscalls/ftruncate.S
+++ b/libc/arch-x86/syscalls/ftruncate.S
@@ -5,6 +5,9 @@
ENTRY(ftruncate)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_ftruncate, %eax
diff --git a/libc/arch-x86/syscalls/ftruncate64.S b/libc/arch-x86/syscalls/ftruncate64.S
index 9d34c4f..586086d 100644
--- a/libc/arch-x86/syscalls/ftruncate64.S
+++ b/libc/arch-x86/syscalls/ftruncate64.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/futex.S b/libc/arch-x86/syscalls/futex.S
index 7328785..7a52913 100644
--- a/libc/arch-x86/syscalls/futex.S
+++ b/libc/arch-x86/syscalls/futex.S
@@ -9,6 +9,13 @@
pushl %esi
pushl %edi
pushl %ebp
+ .cfi_def_cfa_offset 24
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
+ .cfi_rel_offset ebp, 20
mov 28(%esp), %ebx
mov 32(%esp), %ecx
mov 36(%esp), %edx
diff --git a/libc/arch-x86/syscalls/getdents.S b/libc/arch-x86/syscalls/getdents.S
index 1d681ee..9823feb 100644
--- a/libc/arch-x86/syscalls/getdents.S
+++ b/libc/arch-x86/syscalls/getdents.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/getgroups.S b/libc/arch-x86/syscalls/getgroups.S
index 7c563fd..e4247e7 100644
--- a/libc/arch-x86/syscalls/getgroups.S
+++ b/libc/arch-x86/syscalls/getgroups.S
@@ -5,6 +5,9 @@
ENTRY(getgroups)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_getgroups32, %eax
diff --git a/libc/arch-x86/syscalls/getitimer.S b/libc/arch-x86/syscalls/getitimer.S
index 491cc8d..2deebc9 100644
--- a/libc/arch-x86/syscalls/getitimer.S
+++ b/libc/arch-x86/syscalls/getitimer.S
@@ -5,6 +5,9 @@
ENTRY(getitimer)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_getitimer, %eax
diff --git a/libc/arch-x86/syscalls/getpeername.S b/libc/arch-x86/syscalls/getpeername.S
index 4328320..e894093 100644
--- a/libc/arch-x86/syscalls/getpeername.S
+++ b/libc/arch-x86/syscalls/getpeername.S
@@ -5,6 +5,9 @@
ENTRY(getpeername)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $7, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/getpgid.S b/libc/arch-x86/syscalls/getpgid.S
index ff69cbc..c50a09f 100644
--- a/libc/arch-x86/syscalls/getpgid.S
+++ b/libc/arch-x86/syscalls/getpgid.S
@@ -4,6 +4,8 @@
ENTRY(getpgid)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_getpgid, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/getresgid.S b/libc/arch-x86/syscalls/getresgid.S
index 3bfa9b9..ad74e56 100644
--- a/libc/arch-x86/syscalls/getresgid.S
+++ b/libc/arch-x86/syscalls/getresgid.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/getresuid.S b/libc/arch-x86/syscalls/getresuid.S
index c296ba8..6cf60b3 100644
--- a/libc/arch-x86/syscalls/getresuid.S
+++ b/libc/arch-x86/syscalls/getresuid.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/getrlimit.S b/libc/arch-x86/syscalls/getrlimit.S
index 1bf19d0..5e75b6b 100644
--- a/libc/arch-x86/syscalls/getrlimit.S
+++ b/libc/arch-x86/syscalls/getrlimit.S
@@ -5,6 +5,9 @@
ENTRY(getrlimit)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_ugetrlimit, %eax
diff --git a/libc/arch-x86/syscalls/getrusage.S b/libc/arch-x86/syscalls/getrusage.S
index b86d48d..2dfd005 100644
--- a/libc/arch-x86/syscalls/getrusage.S
+++ b/libc/arch-x86/syscalls/getrusage.S
@@ -5,6 +5,9 @@
ENTRY(getrusage)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_getrusage, %eax
diff --git a/libc/arch-x86/syscalls/getsid.S b/libc/arch-x86/syscalls/getsid.S
index 3e3997c..1f60309 100644
--- a/libc/arch-x86/syscalls/getsid.S
+++ b/libc/arch-x86/syscalls/getsid.S
@@ -4,6 +4,8 @@
ENTRY(getsid)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_getsid, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/getsockname.S b/libc/arch-x86/syscalls/getsockname.S
index bd4fa1b..5c22bdf 100644
--- a/libc/arch-x86/syscalls/getsockname.S
+++ b/libc/arch-x86/syscalls/getsockname.S
@@ -5,6 +5,9 @@
ENTRY(getsockname)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $6, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/getsockopt.S b/libc/arch-x86/syscalls/getsockopt.S
index 4f2c19a..9c02d23 100644
--- a/libc/arch-x86/syscalls/getsockopt.S
+++ b/libc/arch-x86/syscalls/getsockopt.S
@@ -5,6 +5,9 @@
ENTRY(getsockopt)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $15, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/gettimeofday.S b/libc/arch-x86/syscalls/gettimeofday.S
index f711b16..10c5de9 100644
--- a/libc/arch-x86/syscalls/gettimeofday.S
+++ b/libc/arch-x86/syscalls/gettimeofday.S
@@ -5,6 +5,9 @@
ENTRY(gettimeofday)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_gettimeofday, %eax
diff --git a/libc/arch-x86/syscalls/getxattr.S b/libc/arch-x86/syscalls/getxattr.S
index 93a1c41..f491a0c 100644
--- a/libc/arch-x86/syscalls/getxattr.S
+++ b/libc/arch-x86/syscalls/getxattr.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/init_module.S b/libc/arch-x86/syscalls/init_module.S
index 4ed64f5..1a159d3 100644
--- a/libc/arch-x86/syscalls/init_module.S
+++ b/libc/arch-x86/syscalls/init_module.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/inotify_add_watch.S b/libc/arch-x86/syscalls/inotify_add_watch.S
index 9222e62..424698d 100644
--- a/libc/arch-x86/syscalls/inotify_add_watch.S
+++ b/libc/arch-x86/syscalls/inotify_add_watch.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/inotify_init1.S b/libc/arch-x86/syscalls/inotify_init1.S
index 11496a5..1b437c6 100644
--- a/libc/arch-x86/syscalls/inotify_init1.S
+++ b/libc/arch-x86/syscalls/inotify_init1.S
@@ -4,6 +4,8 @@
ENTRY(inotify_init1)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_inotify_init1, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/inotify_rm_watch.S b/libc/arch-x86/syscalls/inotify_rm_watch.S
index 83f5ccd..18ec3ca 100644
--- a/libc/arch-x86/syscalls/inotify_rm_watch.S
+++ b/libc/arch-x86/syscalls/inotify_rm_watch.S
@@ -5,6 +5,9 @@
ENTRY(inotify_rm_watch)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_inotify_rm_watch, %eax
diff --git a/libc/arch-x86/syscalls/ioprio_get.S b/libc/arch-x86/syscalls/ioprio_get.S
index 46bf8b5..6dfc767 100644
--- a/libc/arch-x86/syscalls/ioprio_get.S
+++ b/libc/arch-x86/syscalls/ioprio_get.S
@@ -5,6 +5,9 @@
ENTRY(ioprio_get)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_ioprio_get, %eax
diff --git a/libc/arch-x86/syscalls/ioprio_set.S b/libc/arch-x86/syscalls/ioprio_set.S
index ba292eb..bcefacb 100644
--- a/libc/arch-x86/syscalls/ioprio_set.S
+++ b/libc/arch-x86/syscalls/ioprio_set.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/kill.S b/libc/arch-x86/syscalls/kill.S
index 250e991..499158b 100644
--- a/libc/arch-x86/syscalls/kill.S
+++ b/libc/arch-x86/syscalls/kill.S
@@ -5,6 +5,9 @@
ENTRY(kill)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_kill, %eax
diff --git a/libc/arch-x86/syscalls/klogctl.S b/libc/arch-x86/syscalls/klogctl.S
index 22a4b3a..f422ac8 100644
--- a/libc/arch-x86/syscalls/klogctl.S
+++ b/libc/arch-x86/syscalls/klogctl.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/lgetxattr.S b/libc/arch-x86/syscalls/lgetxattr.S
index 1100a01..def7c66 100644
--- a/libc/arch-x86/syscalls/lgetxattr.S
+++ b/libc/arch-x86/syscalls/lgetxattr.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/linkat.S b/libc/arch-x86/syscalls/linkat.S
index 6aae8f5..ffb1b5d 100644
--- a/libc/arch-x86/syscalls/linkat.S
+++ b/libc/arch-x86/syscalls/linkat.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/listen.S b/libc/arch-x86/syscalls/listen.S
index 7fe8a5a..7e4d2f3 100644
--- a/libc/arch-x86/syscalls/listen.S
+++ b/libc/arch-x86/syscalls/listen.S
@@ -5,6 +5,9 @@
ENTRY(listen)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $4, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/listxattr.S b/libc/arch-x86/syscalls/listxattr.S
index a1c3888..5b94a72 100644
--- a/libc/arch-x86/syscalls/listxattr.S
+++ b/libc/arch-x86/syscalls/listxattr.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/llistxattr.S b/libc/arch-x86/syscalls/llistxattr.S
index 66b25cd..1c64591 100644
--- a/libc/arch-x86/syscalls/llistxattr.S
+++ b/libc/arch-x86/syscalls/llistxattr.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/lremovexattr.S b/libc/arch-x86/syscalls/lremovexattr.S
index 2d5009f..d67b221 100644
--- a/libc/arch-x86/syscalls/lremovexattr.S
+++ b/libc/arch-x86/syscalls/lremovexattr.S
@@ -5,6 +5,9 @@
ENTRY(lremovexattr)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_lremovexattr, %eax
diff --git a/libc/arch-x86/syscalls/lseek.S b/libc/arch-x86/syscalls/lseek.S
index 1ed5310..5a58b81 100644
--- a/libc/arch-x86/syscalls/lseek.S
+++ b/libc/arch-x86/syscalls/lseek.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/lsetxattr.S b/libc/arch-x86/syscalls/lsetxattr.S
index adaffcb..f2dba39 100644
--- a/libc/arch-x86/syscalls/lsetxattr.S
+++ b/libc/arch-x86/syscalls/lsetxattr.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/madvise.S b/libc/arch-x86/syscalls/madvise.S
index 52d62a7..edd37b5 100644
--- a/libc/arch-x86/syscalls/madvise.S
+++ b/libc/arch-x86/syscalls/madvise.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/mincore.S b/libc/arch-x86/syscalls/mincore.S
index 9e0bbef..44ea364 100644
--- a/libc/arch-x86/syscalls/mincore.S
+++ b/libc/arch-x86/syscalls/mincore.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/mkdirat.S b/libc/arch-x86/syscalls/mkdirat.S
index 602208e..d80e3fb 100644
--- a/libc/arch-x86/syscalls/mkdirat.S
+++ b/libc/arch-x86/syscalls/mkdirat.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/mknodat.S b/libc/arch-x86/syscalls/mknodat.S
index 643d310..20560df 100644
--- a/libc/arch-x86/syscalls/mknodat.S
+++ b/libc/arch-x86/syscalls/mknodat.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/mlock.S b/libc/arch-x86/syscalls/mlock.S
index 4a663ee..78cfa58 100644
--- a/libc/arch-x86/syscalls/mlock.S
+++ b/libc/arch-x86/syscalls/mlock.S
@@ -5,6 +5,9 @@
ENTRY(mlock)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_mlock, %eax
diff --git a/libc/arch-x86/syscalls/mlockall.S b/libc/arch-x86/syscalls/mlockall.S
index ac3d606..4e78fef 100644
--- a/libc/arch-x86/syscalls/mlockall.S
+++ b/libc/arch-x86/syscalls/mlockall.S
@@ -4,6 +4,8 @@
ENTRY(mlockall)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_mlockall, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/mount.S b/libc/arch-x86/syscalls/mount.S
index a7b4c12..cc1a518 100644
--- a/libc/arch-x86/syscalls/mount.S
+++ b/libc/arch-x86/syscalls/mount.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/mprotect.S b/libc/arch-x86/syscalls/mprotect.S
index 75340ba..9c30af4 100644
--- a/libc/arch-x86/syscalls/mprotect.S
+++ b/libc/arch-x86/syscalls/mprotect.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/mremap.S b/libc/arch-x86/syscalls/mremap.S
index 3e77ebe..1439ef5 100644
--- a/libc/arch-x86/syscalls/mremap.S
+++ b/libc/arch-x86/syscalls/mremap.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/msync.S b/libc/arch-x86/syscalls/msync.S
index 8a7c68d..d330967 100644
--- a/libc/arch-x86/syscalls/msync.S
+++ b/libc/arch-x86/syscalls/msync.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/munlock.S b/libc/arch-x86/syscalls/munlock.S
index 868d00b..ce6197d 100644
--- a/libc/arch-x86/syscalls/munlock.S
+++ b/libc/arch-x86/syscalls/munlock.S
@@ -5,6 +5,9 @@
ENTRY(munlock)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_munlock, %eax
diff --git a/libc/arch-x86/syscalls/munmap.S b/libc/arch-x86/syscalls/munmap.S
index b0b524d..be7eec6 100644
--- a/libc/arch-x86/syscalls/munmap.S
+++ b/libc/arch-x86/syscalls/munmap.S
@@ -5,6 +5,9 @@
ENTRY(munmap)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_munmap, %eax
diff --git a/libc/arch-x86/syscalls/nanosleep.S b/libc/arch-x86/syscalls/nanosleep.S
index 632baf5..9faa06b 100644
--- a/libc/arch-x86/syscalls/nanosleep.S
+++ b/libc/arch-x86/syscalls/nanosleep.S
@@ -5,6 +5,9 @@
ENTRY(nanosleep)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_nanosleep, %eax
diff --git a/libc/arch-x86/syscalls/perf_event_open.S b/libc/arch-x86/syscalls/perf_event_open.S
index 931282a..ebbe1f0 100644
--- a/libc/arch-x86/syscalls/perf_event_open.S
+++ b/libc/arch-x86/syscalls/perf_event_open.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/personality.S b/libc/arch-x86/syscalls/personality.S
index 1d89a7c..8116e2d 100644
--- a/libc/arch-x86/syscalls/personality.S
+++ b/libc/arch-x86/syscalls/personality.S
@@ -4,6 +4,8 @@
ENTRY(personality)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_personality, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/pipe2.S b/libc/arch-x86/syscalls/pipe2.S
index 66c4bf1..c2e11a2 100644
--- a/libc/arch-x86/syscalls/pipe2.S
+++ b/libc/arch-x86/syscalls/pipe2.S
@@ -5,6 +5,9 @@
ENTRY(pipe2)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_pipe2, %eax
diff --git a/libc/arch-x86/syscalls/prctl.S b/libc/arch-x86/syscalls/prctl.S
index cd09df7..1a5daca 100644
--- a/libc/arch-x86/syscalls/prctl.S
+++ b/libc/arch-x86/syscalls/prctl.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/pread64.S b/libc/arch-x86/syscalls/pread64.S
index 0a6ae2d..32a76c5 100644
--- a/libc/arch-x86/syscalls/pread64.S
+++ b/libc/arch-x86/syscalls/pread64.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/pwrite64.S b/libc/arch-x86/syscalls/pwrite64.S
index 7ad8ccf..b003435 100644
--- a/libc/arch-x86/syscalls/pwrite64.S
+++ b/libc/arch-x86/syscalls/pwrite64.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/read.S b/libc/arch-x86/syscalls/read.S
index a02435e..ad1c19a 100644
--- a/libc/arch-x86/syscalls/read.S
+++ b/libc/arch-x86/syscalls/read.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/readahead.S b/libc/arch-x86/syscalls/readahead.S
index 02d32ba..a4d634f 100644
--- a/libc/arch-x86/syscalls/readahead.S
+++ b/libc/arch-x86/syscalls/readahead.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/readlinkat.S b/libc/arch-x86/syscalls/readlinkat.S
index 8548deb..37df8d8 100644
--- a/libc/arch-x86/syscalls/readlinkat.S
+++ b/libc/arch-x86/syscalls/readlinkat.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/readv.S b/libc/arch-x86/syscalls/readv.S
index ebd9caf..05445c0 100644
--- a/libc/arch-x86/syscalls/readv.S
+++ b/libc/arch-x86/syscalls/readv.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/recvfrom.S b/libc/arch-x86/syscalls/recvfrom.S
index c266e93..df489c8 100644
--- a/libc/arch-x86/syscalls/recvfrom.S
+++ b/libc/arch-x86/syscalls/recvfrom.S
@@ -5,6 +5,9 @@
ENTRY(recvfrom)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $12, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/recvmsg.S b/libc/arch-x86/syscalls/recvmsg.S
index df29059..a587b00 100644
--- a/libc/arch-x86/syscalls/recvmsg.S
+++ b/libc/arch-x86/syscalls/recvmsg.S
@@ -5,6 +5,9 @@
ENTRY(recvmsg)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $17, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/removexattr.S b/libc/arch-x86/syscalls/removexattr.S
index 1a974be..99192f0 100644
--- a/libc/arch-x86/syscalls/removexattr.S
+++ b/libc/arch-x86/syscalls/removexattr.S
@@ -5,6 +5,9 @@
ENTRY(removexattr)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_removexattr, %eax
diff --git a/libc/arch-x86/syscalls/renameat.S b/libc/arch-x86/syscalls/renameat.S
index 8d2a0ed..831b24c 100644
--- a/libc/arch-x86/syscalls/renameat.S
+++ b/libc/arch-x86/syscalls/renameat.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/sched_get_priority_max.S b/libc/arch-x86/syscalls/sched_get_priority_max.S
index 089b576..0b7c269 100644
--- a/libc/arch-x86/syscalls/sched_get_priority_max.S
+++ b/libc/arch-x86/syscalls/sched_get_priority_max.S
@@ -4,6 +4,8 @@
ENTRY(sched_get_priority_max)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_sched_get_priority_max, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/sched_get_priority_min.S b/libc/arch-x86/syscalls/sched_get_priority_min.S
index 9e52f30..ce28f8c 100644
--- a/libc/arch-x86/syscalls/sched_get_priority_min.S
+++ b/libc/arch-x86/syscalls/sched_get_priority_min.S
@@ -4,6 +4,8 @@
ENTRY(sched_get_priority_min)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_sched_get_priority_min, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/sched_getparam.S b/libc/arch-x86/syscalls/sched_getparam.S
index 2221eca..2c3b7b9 100644
--- a/libc/arch-x86/syscalls/sched_getparam.S
+++ b/libc/arch-x86/syscalls/sched_getparam.S
@@ -5,6 +5,9 @@
ENTRY(sched_getparam)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_sched_getparam, %eax
diff --git a/libc/arch-x86/syscalls/sched_getscheduler.S b/libc/arch-x86/syscalls/sched_getscheduler.S
index 167a5d5..6a3842a 100644
--- a/libc/arch-x86/syscalls/sched_getscheduler.S
+++ b/libc/arch-x86/syscalls/sched_getscheduler.S
@@ -4,6 +4,8 @@
ENTRY(sched_getscheduler)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_sched_getscheduler, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/sched_rr_get_interval.S b/libc/arch-x86/syscalls/sched_rr_get_interval.S
index ee2ef0e..c1055da 100644
--- a/libc/arch-x86/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-x86/syscalls/sched_rr_get_interval.S
@@ -5,6 +5,9 @@
ENTRY(sched_rr_get_interval)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_sched_rr_get_interval, %eax
diff --git a/libc/arch-x86/syscalls/sched_setaffinity.S b/libc/arch-x86/syscalls/sched_setaffinity.S
index 5ef78ee..bd3d0ab 100644
--- a/libc/arch-x86/syscalls/sched_setaffinity.S
+++ b/libc/arch-x86/syscalls/sched_setaffinity.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/sched_setparam.S b/libc/arch-x86/syscalls/sched_setparam.S
index d993759..2329268 100644
--- a/libc/arch-x86/syscalls/sched_setparam.S
+++ b/libc/arch-x86/syscalls/sched_setparam.S
@@ -5,6 +5,9 @@
ENTRY(sched_setparam)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_sched_setparam, %eax
diff --git a/libc/arch-x86/syscalls/sched_setscheduler.S b/libc/arch-x86/syscalls/sched_setscheduler.S
index aa73874..a3ce8ab 100644
--- a/libc/arch-x86/syscalls/sched_setscheduler.S
+++ b/libc/arch-x86/syscalls/sched_setscheduler.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/sched_yield.S b/libc/arch-x86/syscalls/sched_yield.S
index 41642f1..fb563c4 100644
--- a/libc/arch-x86/syscalls/sched_yield.S
+++ b/libc/arch-x86/syscalls/sched_yield.S
@@ -4,6 +4,8 @@
ENTRY(sched_yield)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_sched_yield, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/sendfile.S b/libc/arch-x86/syscalls/sendfile.S
index 9bebc99..280a4ae 100644
--- a/libc/arch-x86/syscalls/sendfile.S
+++ b/libc/arch-x86/syscalls/sendfile.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/sendfile64.S b/libc/arch-x86/syscalls/sendfile64.S
index 7032e8a..383c8c6 100644
--- a/libc/arch-x86/syscalls/sendfile64.S
+++ b/libc/arch-x86/syscalls/sendfile64.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/sendmsg.S b/libc/arch-x86/syscalls/sendmsg.S
index 410731f..70bad29 100644
--- a/libc/arch-x86/syscalls/sendmsg.S
+++ b/libc/arch-x86/syscalls/sendmsg.S
@@ -5,6 +5,9 @@
ENTRY(sendmsg)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $16, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/sendto.S b/libc/arch-x86/syscalls/sendto.S
index c63bf08..dbe520d 100644
--- a/libc/arch-x86/syscalls/sendto.S
+++ b/libc/arch-x86/syscalls/sendto.S
@@ -5,6 +5,9 @@
ENTRY(sendto)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $11, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/setgid.S b/libc/arch-x86/syscalls/setgid.S
index a15eab1..69ac15b 100644
--- a/libc/arch-x86/syscalls/setgid.S
+++ b/libc/arch-x86/syscalls/setgid.S
@@ -4,6 +4,8 @@
ENTRY(setgid)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_setgid32, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/setgroups.S b/libc/arch-x86/syscalls/setgroups.S
index 9c2879a..f704c46 100644
--- a/libc/arch-x86/syscalls/setgroups.S
+++ b/libc/arch-x86/syscalls/setgroups.S
@@ -5,6 +5,9 @@
ENTRY(setgroups)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_setgroups32, %eax
diff --git a/libc/arch-x86/syscalls/setitimer.S b/libc/arch-x86/syscalls/setitimer.S
index 0a2328d..1573816 100644
--- a/libc/arch-x86/syscalls/setitimer.S
+++ b/libc/arch-x86/syscalls/setitimer.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/setns.S b/libc/arch-x86/syscalls/setns.S
index 6bdb98c..2c39a21 100644
--- a/libc/arch-x86/syscalls/setns.S
+++ b/libc/arch-x86/syscalls/setns.S
@@ -5,6 +5,9 @@
ENTRY(setns)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_setns, %eax
diff --git a/libc/arch-x86/syscalls/setpgid.S b/libc/arch-x86/syscalls/setpgid.S
index 8923239..ae69633 100644
--- a/libc/arch-x86/syscalls/setpgid.S
+++ b/libc/arch-x86/syscalls/setpgid.S
@@ -5,6 +5,9 @@
ENTRY(setpgid)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_setpgid, %eax
diff --git a/libc/arch-x86/syscalls/setpriority.S b/libc/arch-x86/syscalls/setpriority.S
index 6a887f6..b58cd13 100644
--- a/libc/arch-x86/syscalls/setpriority.S
+++ b/libc/arch-x86/syscalls/setpriority.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/setregid.S b/libc/arch-x86/syscalls/setregid.S
index 8748c10..561a658 100644
--- a/libc/arch-x86/syscalls/setregid.S
+++ b/libc/arch-x86/syscalls/setregid.S
@@ -5,6 +5,9 @@
ENTRY(setregid)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_setregid32, %eax
diff --git a/libc/arch-x86/syscalls/setresgid.S b/libc/arch-x86/syscalls/setresgid.S
index 22eb02d..a210975 100644
--- a/libc/arch-x86/syscalls/setresgid.S
+++ b/libc/arch-x86/syscalls/setresgid.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/setresuid.S b/libc/arch-x86/syscalls/setresuid.S
index 3a66ea6..920e68b 100644
--- a/libc/arch-x86/syscalls/setresuid.S
+++ b/libc/arch-x86/syscalls/setresuid.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/setreuid.S b/libc/arch-x86/syscalls/setreuid.S
index 16dd64e..7f911ad 100644
--- a/libc/arch-x86/syscalls/setreuid.S
+++ b/libc/arch-x86/syscalls/setreuid.S
@@ -5,6 +5,9 @@
ENTRY(setreuid)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_setreuid32, %eax
diff --git a/libc/arch-x86/syscalls/setrlimit.S b/libc/arch-x86/syscalls/setrlimit.S
index cc69245..e103ecf 100644
--- a/libc/arch-x86/syscalls/setrlimit.S
+++ b/libc/arch-x86/syscalls/setrlimit.S
@@ -5,6 +5,9 @@
ENTRY(setrlimit)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_setrlimit, %eax
diff --git a/libc/arch-x86/syscalls/setsockopt.S b/libc/arch-x86/syscalls/setsockopt.S
index e927c23..f56f812 100644
--- a/libc/arch-x86/syscalls/setsockopt.S
+++ b/libc/arch-x86/syscalls/setsockopt.S
@@ -5,6 +5,9 @@
ENTRY(setsockopt)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $14, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/settimeofday.S b/libc/arch-x86/syscalls/settimeofday.S
index 6c3b00b..1ae4d58 100644
--- a/libc/arch-x86/syscalls/settimeofday.S
+++ b/libc/arch-x86/syscalls/settimeofday.S
@@ -5,6 +5,9 @@
ENTRY(settimeofday)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_settimeofday, %eax
diff --git a/libc/arch-x86/syscalls/setuid.S b/libc/arch-x86/syscalls/setuid.S
index e7db8da..6549fd4 100644
--- a/libc/arch-x86/syscalls/setuid.S
+++ b/libc/arch-x86/syscalls/setuid.S
@@ -4,6 +4,8 @@
ENTRY(setuid)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_setuid32, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/setxattr.S b/libc/arch-x86/syscalls/setxattr.S
index 98cafb4..fae04df 100644
--- a/libc/arch-x86/syscalls/setxattr.S
+++ b/libc/arch-x86/syscalls/setxattr.S
@@ -8,6 +8,12 @@
pushl %edx
pushl %esi
pushl %edi
+ .cfi_def_cfa_offset 20
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
+ .cfi_rel_offset edi, 16
mov 24(%esp), %ebx
mov 28(%esp), %ecx
mov 32(%esp), %edx
diff --git a/libc/arch-x86/syscalls/shutdown.S b/libc/arch-x86/syscalls/shutdown.S
index d1ea589..13e8fd9 100644
--- a/libc/arch-x86/syscalls/shutdown.S
+++ b/libc/arch-x86/syscalls/shutdown.S
@@ -5,6 +5,9 @@
ENTRY(shutdown)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $13, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/sigaltstack.S b/libc/arch-x86/syscalls/sigaltstack.S
index 58a2997..71fdb12 100644
--- a/libc/arch-x86/syscalls/sigaltstack.S
+++ b/libc/arch-x86/syscalls/sigaltstack.S
@@ -5,6 +5,9 @@
ENTRY(sigaltstack)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_sigaltstack, %eax
diff --git a/libc/arch-x86/syscalls/signalfd4.S b/libc/arch-x86/syscalls/signalfd4.S
index 6e0c20b..1fe6c68 100644
--- a/libc/arch-x86/syscalls/signalfd4.S
+++ b/libc/arch-x86/syscalls/signalfd4.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/socket.S b/libc/arch-x86/syscalls/socket.S
index 1bc6bd7..282681e 100644
--- a/libc/arch-x86/syscalls/socket.S
+++ b/libc/arch-x86/syscalls/socket.S
@@ -5,6 +5,9 @@
ENTRY(socket)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $1, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/socketpair.S b/libc/arch-x86/syscalls/socketpair.S
index e2a98d3..3681c4f 100644
--- a/libc/arch-x86/syscalls/socketpair.S
+++ b/libc/arch-x86/syscalls/socketpair.S
@@ -5,6 +5,9 @@
ENTRY(socketpair)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov $8, %ebx
mov %esp, %ecx
addl $12, %ecx
diff --git a/libc/arch-x86/syscalls/swapoff.S b/libc/arch-x86/syscalls/swapoff.S
index 1d08319..31f8be1 100644
--- a/libc/arch-x86/syscalls/swapoff.S
+++ b/libc/arch-x86/syscalls/swapoff.S
@@ -4,6 +4,8 @@
ENTRY(swapoff)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_swapoff, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/swapon.S b/libc/arch-x86/syscalls/swapon.S
index f6f47c6..687c492 100644
--- a/libc/arch-x86/syscalls/swapon.S
+++ b/libc/arch-x86/syscalls/swapon.S
@@ -5,6 +5,9 @@
ENTRY(swapon)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_swapon, %eax
diff --git a/libc/arch-x86/syscalls/symlinkat.S b/libc/arch-x86/syscalls/symlinkat.S
index 6011560..1f33f7b 100644
--- a/libc/arch-x86/syscalls/symlinkat.S
+++ b/libc/arch-x86/syscalls/symlinkat.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/sync.S b/libc/arch-x86/syscalls/sync.S
index 518b39e..f80296f 100644
--- a/libc/arch-x86/syscalls/sync.S
+++ b/libc/arch-x86/syscalls/sync.S
@@ -4,6 +4,8 @@
ENTRY(sync)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_sync, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/sysinfo.S b/libc/arch-x86/syscalls/sysinfo.S
index 8fde6e4..8b9a23e 100644
--- a/libc/arch-x86/syscalls/sysinfo.S
+++ b/libc/arch-x86/syscalls/sysinfo.S
@@ -4,6 +4,8 @@
ENTRY(sysinfo)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_sysinfo, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/tgkill.S b/libc/arch-x86/syscalls/tgkill.S
index 9bd0b6f..e57645c 100644
--- a/libc/arch-x86/syscalls/tgkill.S
+++ b/libc/arch-x86/syscalls/tgkill.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/timerfd_create.S b/libc/arch-x86/syscalls/timerfd_create.S
index 8546c34..33b2980 100644
--- a/libc/arch-x86/syscalls/timerfd_create.S
+++ b/libc/arch-x86/syscalls/timerfd_create.S
@@ -5,6 +5,9 @@
ENTRY(timerfd_create)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_timerfd_create, %eax
diff --git a/libc/arch-x86/syscalls/timerfd_gettime.S b/libc/arch-x86/syscalls/timerfd_gettime.S
index 5f39080..66b004b 100644
--- a/libc/arch-x86/syscalls/timerfd_gettime.S
+++ b/libc/arch-x86/syscalls/timerfd_gettime.S
@@ -5,6 +5,9 @@
ENTRY(timerfd_gettime)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_timerfd_gettime, %eax
diff --git a/libc/arch-x86/syscalls/timerfd_settime.S b/libc/arch-x86/syscalls/timerfd_settime.S
index c017ca8..3f4035e 100644
--- a/libc/arch-x86/syscalls/timerfd_settime.S
+++ b/libc/arch-x86/syscalls/timerfd_settime.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/times.S b/libc/arch-x86/syscalls/times.S
index 7ada376..b9e2845 100644
--- a/libc/arch-x86/syscalls/times.S
+++ b/libc/arch-x86/syscalls/times.S
@@ -4,6 +4,8 @@
ENTRY(times)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_times, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/tkill.S b/libc/arch-x86/syscalls/tkill.S
index 326efa3..f8da369 100644
--- a/libc/arch-x86/syscalls/tkill.S
+++ b/libc/arch-x86/syscalls/tkill.S
@@ -5,6 +5,9 @@
ENTRY(tkill)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_tkill, %eax
diff --git a/libc/arch-x86/syscalls/truncate.S b/libc/arch-x86/syscalls/truncate.S
index 0625621..019894c 100644
--- a/libc/arch-x86/syscalls/truncate.S
+++ b/libc/arch-x86/syscalls/truncate.S
@@ -5,6 +5,9 @@
ENTRY(truncate)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_truncate, %eax
diff --git a/libc/arch-x86/syscalls/truncate64.S b/libc/arch-x86/syscalls/truncate64.S
index 0a45f8a..99b71b0 100644
--- a/libc/arch-x86/syscalls/truncate64.S
+++ b/libc/arch-x86/syscalls/truncate64.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/umask.S b/libc/arch-x86/syscalls/umask.S
index 3534340..485b326 100644
--- a/libc/arch-x86/syscalls/umask.S
+++ b/libc/arch-x86/syscalls/umask.S
@@ -4,6 +4,8 @@
ENTRY(umask)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_umask, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/umount2.S b/libc/arch-x86/syscalls/umount2.S
index f5f9c66..100d38c 100644
--- a/libc/arch-x86/syscalls/umount2.S
+++ b/libc/arch-x86/syscalls/umount2.S
@@ -5,6 +5,9 @@
ENTRY(umount2)
pushl %ebx
pushl %ecx
+ .cfi_def_cfa_offset 8
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
mov 12(%esp), %ebx
mov 16(%esp), %ecx
movl $__NR_umount2, %eax
diff --git a/libc/arch-x86/syscalls/uname.S b/libc/arch-x86/syscalls/uname.S
index 6203567..f1ba3b9 100644
--- a/libc/arch-x86/syscalls/uname.S
+++ b/libc/arch-x86/syscalls/uname.S
@@ -4,6 +4,8 @@
ENTRY(uname)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_uname, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/unlinkat.S b/libc/arch-x86/syscalls/unlinkat.S
index 8527c0b..1a573d4 100644
--- a/libc/arch-x86/syscalls/unlinkat.S
+++ b/libc/arch-x86/syscalls/unlinkat.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/unshare.S b/libc/arch-x86/syscalls/unshare.S
index 00214bd..95fdbf6 100644
--- a/libc/arch-x86/syscalls/unshare.S
+++ b/libc/arch-x86/syscalls/unshare.S
@@ -4,6 +4,8 @@
ENTRY(unshare)
pushl %ebx
+ .cfi_def_cfa_offset 4
+ .cfi_rel_offset ebx, 0
mov 8(%esp), %ebx
movl $__NR_unshare, %eax
int $0x80
diff --git a/libc/arch-x86/syscalls/utimensat.S b/libc/arch-x86/syscalls/utimensat.S
index 7869ebc..099f551 100644
--- a/libc/arch-x86/syscalls/utimensat.S
+++ b/libc/arch-x86/syscalls/utimensat.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/wait4.S b/libc/arch-x86/syscalls/wait4.S
index c887b6c..b6196f8 100644
--- a/libc/arch-x86/syscalls/wait4.S
+++ b/libc/arch-x86/syscalls/wait4.S
@@ -7,6 +7,11 @@
pushl %ecx
pushl %edx
pushl %esi
+ .cfi_def_cfa_offset 16
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
+ .cfi_rel_offset esi, 12
mov 20(%esp), %ebx
mov 24(%esp), %ecx
mov 28(%esp), %edx
diff --git a/libc/arch-x86/syscalls/write.S b/libc/arch-x86/syscalls/write.S
index 60989af..971cb30 100644
--- a/libc/arch-x86/syscalls/write.S
+++ b/libc/arch-x86/syscalls/write.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/arch-x86/syscalls/writev.S b/libc/arch-x86/syscalls/writev.S
index f7e8a93..ab8e705 100644
--- a/libc/arch-x86/syscalls/writev.S
+++ b/libc/arch-x86/syscalls/writev.S
@@ -6,6 +6,10 @@
pushl %ebx
pushl %ecx
pushl %edx
+ .cfi_def_cfa_offset 12
+ .cfi_rel_offset ebx, 0
+ .cfi_rel_offset ecx, 4
+ .cfi_rel_offset edx, 8
mov 16(%esp), %ebx
mov 20(%esp), %ecx
mov 24(%esp), %edx
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 58d1afd..7b1afbb 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -147,7 +147,7 @@
# x86 assembler templates for each syscall stub
#
-x86_registers = [ "%ebx", "%ecx", "%edx", "%esi", "%edi", "%ebp" ]
+x86_registers = [ "ebx", "ecx", "edx", "esi", "edi", "ebp" ]
x86_call = """\
movl $%(__NR_name)s, %%eax
@@ -289,20 +289,26 @@
def x86_genstub(syscall):
result = syscall_stub_header % syscall
- stack_bias = 4
numparams = count_generic_param_registers(syscall["params"])
- for r in range(numparams):
- result += " pushl " + x86_registers[r] + "\n"
- stack_bias += 4
+ stack_bias = numparams*4 + 4
+ offset = 0
+ mov_result = ""
+ cfi_result = " .cfi_def_cfa_offset %d\n" % (numparams*4)
+ for register in x86_registers[:numparams]:
+ result += " pushl %%%s\n" % register
+ mov_result += " mov %d(%%esp), %%%s\n" % (stack_bias+offset, register)
+ cfi_result += " .cfi_rel_offset %s, %d\n" % (register, offset)
+ offset += 4
- for r in range(numparams):
- result += " mov %d(%%esp), %s" % (stack_bias+r*4, x86_registers[r]) + "\n"
+ if numparams:
+ result += cfi_result
+ result += mov_result
result += x86_call % syscall
- for r in range(numparams):
- result += " popl " + x86_registers[numparams-r-1] + "\n"
+ for register in reversed(x86_registers[:numparams]):
+ result += " popl %%%s\n" % register
result += x86_return % syscall
return result
@@ -315,27 +321,28 @@
# from the original function called (socket())
result = syscall_stub_header % syscall
- stack_bias = 4
# save the regs we need
- result += " pushl %ebx" + "\n"
- stack_bias += 4
- result += " pushl %ecx" + "\n"
- stack_bias += 4
+ result += " pushl %ebx\n"
+ result += " pushl %ecx\n"
+ result += " .cfi_def_cfa_offset 8\n"
+ result += " .cfi_rel_offset ebx, 0\n"
+ result += " .cfi_rel_offset ecx, 4\n"
+ stack_bias = 12
# set the call id (%ebx)
- result += " mov $%d, %%ebx" % syscall["socketcall_id"] + "\n"
+ result += " mov $%d, %%ebx\n" % syscall["socketcall_id"]
# set the pointer to the rest of the args into %ecx
- result += " mov %esp, %ecx" + "\n"
- result += " addl $%d, %%ecx" % (stack_bias) + "\n"
+ result += " mov %esp, %ecx\n"
+ result += " addl $%d, %%ecx\n" % (stack_bias)
# now do the syscall code itself
result += x86_call % syscall
# now restore the saved regs
- result += " popl %ecx" + "\n"
- result += " popl %ebx" + "\n"
+ result += " popl %ecx\n"
+ result += " popl %ebx\n"
# epilog
result += x86_return % syscall