summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--benchmarks/math_benchmark.cpp40
-rw-r--r--benchmarks/time_benchmark.cpp13
-rw-r--r--benchmarks/unistd_benchmark.cpp12
-rw-r--r--libc/Android.mk2
-rw-r--r--libc/SYSCALLS.TXT7
-rw-r--r--libc/arch-arm/bionic/__bionic_clone.S4
-rw-r--r--libc/arch-arm/syscalls/__getdents64.S (renamed from libc/arch-arm/syscalls/getdents.S)4
-rw-r--r--libc/arch-arm64/bionic/__bionic_clone.S17
-rw-r--r--libc/arch-arm64/bionic/syscall.S12
-rw-r--r--libc/arch-arm64/syscalls/__accept4.S11
-rw-r--r--libc/arch-arm64/syscalls/__brk.S11
-rw-r--r--libc/arch-arm64/syscalls/__connect.S11
-rw-r--r--libc/arch-arm64/syscalls/__epoll_pwait.S11
-rw-r--r--libc/arch-arm64/syscalls/__exit.S11
-rw-r--r--libc/arch-arm64/syscalls/__getcpu.S11
-rw-r--r--libc/arch-arm64/syscalls/__getcwd.S11
-rw-r--r--libc/arch-arm64/syscalls/__getdents64.S15
-rw-r--r--libc/arch-arm64/syscalls/__getpriority.S11
-rw-r--r--libc/arch-arm64/syscalls/__ioctl.S11
-rw-r--r--libc/arch-arm64/syscalls/__openat.S11
-rw-r--r--libc/arch-arm64/syscalls/__ppoll.S11
-rw-r--r--libc/arch-arm64/syscalls/__pselect6.S11
-rw-r--r--libc/arch-arm64/syscalls/__ptrace.S11
-rw-r--r--libc/arch-arm64/syscalls/__reboot.S11
-rw-r--r--libc/arch-arm64/syscalls/__rt_sigaction.S11
-rw-r--r--libc/arch-arm64/syscalls/__rt_sigpending.S11
-rw-r--r--libc/arch-arm64/syscalls/__rt_sigprocmask.S11
-rw-r--r--libc/arch-arm64/syscalls/__rt_sigsuspend.S11
-rw-r--r--libc/arch-arm64/syscalls/__rt_sigtimedwait.S11
-rw-r--r--libc/arch-arm64/syscalls/__sched_getaffinity.S11
-rw-r--r--libc/arch-arm64/syscalls/__set_tid_address.S11
-rw-r--r--libc/arch-arm64/syscalls/__signalfd4.S11
-rw-r--r--libc/arch-arm64/syscalls/__socket.S11
-rw-r--r--libc/arch-arm64/syscalls/__timer_create.S11
-rw-r--r--libc/arch-arm64/syscalls/__timer_delete.S11
-rw-r--r--libc/arch-arm64/syscalls/__timer_getoverrun.S11
-rw-r--r--libc/arch-arm64/syscalls/__timer_gettime.S11
-rw-r--r--libc/arch-arm64/syscalls/__timer_settime.S11
-rw-r--r--libc/arch-arm64/syscalls/__waitid.S11
-rw-r--r--libc/arch-arm64/syscalls/_exit.S11
-rw-r--r--libc/arch-arm64/syscalls/acct.S11
-rw-r--r--libc/arch-arm64/syscalls/bind.S11
-rw-r--r--libc/arch-arm64/syscalls/capget.S11
-rw-r--r--libc/arch-arm64/syscalls/capset.S11
-rw-r--r--libc/arch-arm64/syscalls/chdir.S11
-rw-r--r--libc/arch-arm64/syscalls/chroot.S11
-rw-r--r--libc/arch-arm64/syscalls/clock_getres.S11
-rw-r--r--libc/arch-arm64/syscalls/clock_gettime.S11
-rw-r--r--libc/arch-arm64/syscalls/clock_nanosleep.S11
-rw-r--r--libc/arch-arm64/syscalls/clock_settime.S11
-rw-r--r--libc/arch-arm64/syscalls/close.S11
-rw-r--r--libc/arch-arm64/syscalls/delete_module.S11
-rw-r--r--libc/arch-arm64/syscalls/dup.S11
-rw-r--r--libc/arch-arm64/syscalls/dup3.S11
-rw-r--r--libc/arch-arm64/syscalls/epoll_create1.S11
-rw-r--r--libc/arch-arm64/syscalls/epoll_ctl.S11
-rw-r--r--libc/arch-arm64/syscalls/eventfd.S11
-rw-r--r--libc/arch-arm64/syscalls/execve.S11
-rw-r--r--libc/arch-arm64/syscalls/faccessat.S11
-rw-r--r--libc/arch-arm64/syscalls/fallocate.S11
-rw-r--r--libc/arch-arm64/syscalls/fchdir.S11
-rw-r--r--libc/arch-arm64/syscalls/fchmod.S11
-rw-r--r--libc/arch-arm64/syscalls/fchmodat.S11
-rw-r--r--libc/arch-arm64/syscalls/fchown.S11
-rw-r--r--libc/arch-arm64/syscalls/fchownat.S11
-rw-r--r--libc/arch-arm64/syscalls/fcntl.S11
-rw-r--r--libc/arch-arm64/syscalls/fdatasync.S11
-rw-r--r--libc/arch-arm64/syscalls/fgetxattr.S11
-rw-r--r--libc/arch-arm64/syscalls/flistxattr.S11
-rw-r--r--libc/arch-arm64/syscalls/flock.S11
-rw-r--r--libc/arch-arm64/syscalls/fremovexattr.S11
-rw-r--r--libc/arch-arm64/syscalls/fsetxattr.S11
-rw-r--r--libc/arch-arm64/syscalls/fstat64.S11
-rw-r--r--libc/arch-arm64/syscalls/fstatat64.S11
-rw-r--r--libc/arch-arm64/syscalls/fstatfs64.S11
-rw-r--r--libc/arch-arm64/syscalls/fsync.S11
-rw-r--r--libc/arch-arm64/syscalls/ftruncate.S11
-rw-r--r--libc/arch-arm64/syscalls/getdents.S25
-rw-r--r--libc/arch-arm64/syscalls/getegid.S11
-rw-r--r--libc/arch-arm64/syscalls/geteuid.S11
-rw-r--r--libc/arch-arm64/syscalls/getgid.S11
-rw-r--r--libc/arch-arm64/syscalls/getgroups.S11
-rw-r--r--libc/arch-arm64/syscalls/getitimer.S11
-rw-r--r--libc/arch-arm64/syscalls/getpeername.S11
-rw-r--r--libc/arch-arm64/syscalls/getpgid.S11
-rw-r--r--libc/arch-arm64/syscalls/getpid.S11
-rw-r--r--libc/arch-arm64/syscalls/getppid.S11
-rw-r--r--libc/arch-arm64/syscalls/getresgid.S11
-rw-r--r--libc/arch-arm64/syscalls/getresuid.S11
-rw-r--r--libc/arch-arm64/syscalls/getrlimit.S11
-rw-r--r--libc/arch-arm64/syscalls/getrusage.S11
-rw-r--r--libc/arch-arm64/syscalls/getsid.S11
-rw-r--r--libc/arch-arm64/syscalls/getsockname.S11
-rw-r--r--libc/arch-arm64/syscalls/getsockopt.S11
-rw-r--r--libc/arch-arm64/syscalls/gettimeofday.S11
-rw-r--r--libc/arch-arm64/syscalls/getuid.S11
-rw-r--r--libc/arch-arm64/syscalls/getxattr.S11
-rw-r--r--libc/arch-arm64/syscalls/init_module.S11
-rw-r--r--libc/arch-arm64/syscalls/inotify_add_watch.S11
-rw-r--r--libc/arch-arm64/syscalls/inotify_init1.S11
-rw-r--r--libc/arch-arm64/syscalls/inotify_rm_watch.S11
-rw-r--r--libc/arch-arm64/syscalls/ioprio_get.S11
-rw-r--r--libc/arch-arm64/syscalls/ioprio_set.S11
-rw-r--r--libc/arch-arm64/syscalls/kill.S11
-rw-r--r--libc/arch-arm64/syscalls/klogctl.S11
-rw-r--r--libc/arch-arm64/syscalls/lgetxattr.S11
-rw-r--r--libc/arch-arm64/syscalls/linkat.S11
-rw-r--r--libc/arch-arm64/syscalls/listen.S11
-rw-r--r--libc/arch-arm64/syscalls/listxattr.S11
-rw-r--r--libc/arch-arm64/syscalls/llistxattr.S11
-rw-r--r--libc/arch-arm64/syscalls/lremovexattr.S11
-rw-r--r--libc/arch-arm64/syscalls/lseek.S11
-rw-r--r--libc/arch-arm64/syscalls/lsetxattr.S11
-rw-r--r--libc/arch-arm64/syscalls/madvise.S11
-rw-r--r--libc/arch-arm64/syscalls/mincore.S11
-rw-r--r--libc/arch-arm64/syscalls/mkdirat.S11
-rw-r--r--libc/arch-arm64/syscalls/mknodat.S11
-rw-r--r--libc/arch-arm64/syscalls/mlock.S11
-rw-r--r--libc/arch-arm64/syscalls/mlockall.S11
-rw-r--r--libc/arch-arm64/syscalls/mmap.S11
-rw-r--r--libc/arch-arm64/syscalls/mount.S11
-rw-r--r--libc/arch-arm64/syscalls/mprotect.S11
-rw-r--r--libc/arch-arm64/syscalls/mremap.S11
-rw-r--r--libc/arch-arm64/syscalls/msync.S11
-rw-r--r--libc/arch-arm64/syscalls/munlock.S11
-rw-r--r--libc/arch-arm64/syscalls/munlockall.S11
-rw-r--r--libc/arch-arm64/syscalls/munmap.S11
-rw-r--r--libc/arch-arm64/syscalls/nanosleep.S11
-rw-r--r--libc/arch-arm64/syscalls/personality.S11
-rw-r--r--libc/arch-arm64/syscalls/pipe2.S11
-rw-r--r--libc/arch-arm64/syscalls/prctl.S11
-rw-r--r--libc/arch-arm64/syscalls/pread64.S11
-rw-r--r--libc/arch-arm64/syscalls/prlimit64.S11
-rw-r--r--libc/arch-arm64/syscalls/pwrite64.S11
-rw-r--r--libc/arch-arm64/syscalls/read.S11
-rw-r--r--libc/arch-arm64/syscalls/readahead.S11
-rw-r--r--libc/arch-arm64/syscalls/readlinkat.S11
-rw-r--r--libc/arch-arm64/syscalls/readv.S11
-rw-r--r--libc/arch-arm64/syscalls/recvfrom.S11
-rw-r--r--libc/arch-arm64/syscalls/recvmmsg.S11
-rw-r--r--libc/arch-arm64/syscalls/recvmsg.S11
-rw-r--r--libc/arch-arm64/syscalls/removexattr.S11
-rw-r--r--libc/arch-arm64/syscalls/renameat.S11
-rw-r--r--libc/arch-arm64/syscalls/sched_get_priority_max.S11
-rw-r--r--libc/arch-arm64/syscalls/sched_get_priority_min.S11
-rw-r--r--libc/arch-arm64/syscalls/sched_getparam.S11
-rw-r--r--libc/arch-arm64/syscalls/sched_getscheduler.S11
-rw-r--r--libc/arch-arm64/syscalls/sched_rr_get_interval.S11
-rw-r--r--libc/arch-arm64/syscalls/sched_setaffinity.S11
-rw-r--r--libc/arch-arm64/syscalls/sched_setparam.S11
-rw-r--r--libc/arch-arm64/syscalls/sched_setscheduler.S11
-rw-r--r--libc/arch-arm64/syscalls/sched_yield.S11
-rw-r--r--libc/arch-arm64/syscalls/sendfile.S11
-rw-r--r--libc/arch-arm64/syscalls/sendmmsg.S11
-rw-r--r--libc/arch-arm64/syscalls/sendmsg.S11
-rw-r--r--libc/arch-arm64/syscalls/sendto.S11
-rw-r--r--libc/arch-arm64/syscalls/setgid.S11
-rw-r--r--libc/arch-arm64/syscalls/setgroups.S11
-rw-r--r--libc/arch-arm64/syscalls/setitimer.S11
-rw-r--r--libc/arch-arm64/syscalls/setns.S11
-rw-r--r--libc/arch-arm64/syscalls/setpgid.S11
-rw-r--r--libc/arch-arm64/syscalls/setpriority.S11
-rw-r--r--libc/arch-arm64/syscalls/setregid.S11
-rw-r--r--libc/arch-arm64/syscalls/setresgid.S11
-rw-r--r--libc/arch-arm64/syscalls/setresuid.S11
-rw-r--r--libc/arch-arm64/syscalls/setreuid.S11
-rw-r--r--libc/arch-arm64/syscalls/setrlimit.S11
-rw-r--r--libc/arch-arm64/syscalls/setsid.S11
-rw-r--r--libc/arch-arm64/syscalls/setsockopt.S11
-rw-r--r--libc/arch-arm64/syscalls/settimeofday.S11
-rw-r--r--libc/arch-arm64/syscalls/setuid.S11
-rw-r--r--libc/arch-arm64/syscalls/setxattr.S11
-rw-r--r--libc/arch-arm64/syscalls/shutdown.S11
-rw-r--r--libc/arch-arm64/syscalls/sigaltstack.S11
-rw-r--r--libc/arch-arm64/syscalls/socketpair.S11
-rw-r--r--libc/arch-arm64/syscalls/statfs64.S11
-rw-r--r--libc/arch-arm64/syscalls/swapoff.S11
-rw-r--r--libc/arch-arm64/syscalls/swapon.S11
-rw-r--r--libc/arch-arm64/syscalls/symlinkat.S11
-rw-r--r--libc/arch-arm64/syscalls/sync.S11
-rw-r--r--libc/arch-arm64/syscalls/sysinfo.S11
-rw-r--r--libc/arch-arm64/syscalls/tgkill.S11
-rw-r--r--libc/arch-arm64/syscalls/timerfd_create.S11
-rw-r--r--libc/arch-arm64/syscalls/timerfd_gettime.S11
-rw-r--r--libc/arch-arm64/syscalls/timerfd_settime.S11
-rw-r--r--libc/arch-arm64/syscalls/times.S11
-rw-r--r--libc/arch-arm64/syscalls/truncate.S11
-rw-r--r--libc/arch-arm64/syscalls/umask.S11
-rw-r--r--libc/arch-arm64/syscalls/umount2.S11
-rw-r--r--libc/arch-arm64/syscalls/uname.S11
-rw-r--r--libc/arch-arm64/syscalls/unlinkat.S11
-rw-r--r--libc/arch-arm64/syscalls/unshare.S11
-rw-r--r--libc/arch-arm64/syscalls/utimensat.S11
-rw-r--r--libc/arch-arm64/syscalls/wait4.S11
-rw-r--r--libc/arch-arm64/syscalls/write.S11
-rw-r--r--libc/arch-arm64/syscalls/writev.S11
-rw-r--r--libc/arch-mips/bionic/__bionic_clone.S4
-rw-r--r--libc/arch-mips/syscalls/__getdents64.S (renamed from libc/arch-mips/syscalls/getdents.S)4
-rw-r--r--libc/arch-mips64/bionic/__bionic_clone.S4
-rw-r--r--libc/arch-mips64/bionic/getdents.cpp97
-rw-r--r--libc/arch-mips64/mips64.mk1
-rw-r--r--libc/arch-mips64/syscalls/__getdents.S26
-rw-r--r--libc/arch-x86/bionic/__bionic_clone.S2
-rw-r--r--libc/arch-x86/syscalls/__getdents64.S (renamed from libc/arch-x86/syscalls/getdents.S)4
-rw-r--r--libc/arch-x86_64/bionic/__bionic_clone.S4
-rw-r--r--libc/arch-x86_64/syscalls/__getdents64.S (renamed from libc/arch-x86_64/syscalls/getdents.S)5
-rw-r--r--libc/bionic/assert.cpp6
-rw-r--r--libc/bionic/clone.cpp2
-rw-r--r--libc/bionic/dirent.cpp4
-rw-r--r--libc/bionic/dlmalloc.h7
-rw-r--r--libc/bionic/md5.c279
-rw-r--r--libc/bionic/md5.h50
-rw-r--r--libc/bionic/ndk_cruft.cpp12
-rw-r--r--libc/include/dirent.h1
-rw-r--r--libc/include/limits.h2
-rw-r--r--libc/include/setjmp.h1
-rw-r--r--libc/include/stdlib.h2
-rw-r--r--libc/include/syslog.h40
-rw-r--r--libc/kernel/README.TXT182
-rwxr-xr-xlibc/kernel/tools/clean_header.py73
-rwxr-xr-xlibc/kernel/tools/find_headers.py170
-rwxr-xr-xlibc/kernel/tools/find_users.py63
-rwxr-xr-xlibc/tools/check-symbols-glibc.py6
-rwxr-xr-xlibc/tools/gensyscalls.py11
-rw-r--r--libc/unistd/syslog.c32
-rw-r--r--libc/upstream-netbsd/android/include/rand48.h8
-rw-r--r--libc/upstream-netbsd/lib/libc/gen/setjmperr.c56
-rwxr-xr-xlibm/amd64/fenv.c29
-rw-r--r--libm/arm/fenv.c27
-rw-r--r--libm/arm64/fenv.c198
-rw-r--r--libm/i387/fenv.c10
-rw-r--r--libm/include/amd64/machine/fenv.h9
-rw-r--r--libm/include/arm/machine/fenv.h5
-rw-r--r--libm/include/arm64/machine/fenv.h107
-rw-r--r--libm/include/i387/machine/fenv.h2
-rw-r--r--libm/include/mips/machine/fenv.h7
-rw-r--r--libm/mips/fenv.c28
-rw-r--r--tests/Android.build.mk8
-rw-r--r--tests/Android.mk26
-rw-r--r--tests/math_test.cpp15
-rw-r--r--tests/stdio_test.cpp19
-rw-r--r--tests/string_test.cpp2
-rw-r--r--tests/wchar_test.cpp29
243 files changed, 582 insertions, 3283 deletions
diff --git a/benchmarks/math_benchmark.cpp b/benchmarks/math_benchmark.cpp
index 3602de4..a9748cd 100644
--- a/benchmarks/math_benchmark.cpp
+++ b/benchmarks/math_benchmark.cpp
@@ -16,6 +16,7 @@
#include "benchmark.h"
+#include <fenv.h>
#include <math.h>
// Avoid optimization.
@@ -113,10 +114,49 @@ static void BM_math_isinf_ZERO(int iters) {
}
BENCHMARK(BM_math_isinf_ZERO);
+static void BM_math_sin_fast(int iters) {
+ StartBenchmarkTiming();
+ d = 1.0;
+ for (int i = 0; i < iters; ++i) {
+ d += sin(d);
+ }
+
+ StopBenchmarkTiming();
+}
+BENCHMARK(BM_math_sin_fast);
+static void BM_math_sin_feupdateenv(int iters) {
+ StartBenchmarkTiming();
+ d = 1.0;
+ for (int i = 0; i < iters; ++i) {
+ fenv_t __libc_save_rm;
+ feholdexcept(&__libc_save_rm);
+ fesetround(FE_TONEAREST);
+ d += sin(d);
+ feupdateenv(&__libc_save_rm);
+ }
+ StopBenchmarkTiming();
+}
+BENCHMARK(BM_math_sin_feupdateenv);
+
+static void BM_math_sin_fesetenv(int iters) {
+ StartBenchmarkTiming();
+
+ d = 1.0;
+ for (int i = 0; i < iters; ++i) {
+ fenv_t __libc_save_rm;
+ feholdexcept(&__libc_save_rm);
+ fesetround(FE_TONEAREST);
+ d += sin(d);
+ fesetenv(&__libc_save_rm);
+ }
+
+ StopBenchmarkTiming();
+}
+BENCHMARK(BM_math_sin_fesetenv);
static void BM_math_fpclassify_NORMAL(int iters) {
StartBenchmarkTiming();
diff --git a/benchmarks/time_benchmark.cpp b/benchmarks/time_benchmark.cpp
index 75132e5..3bf8c07 100644
--- a/benchmarks/time_benchmark.cpp
+++ b/benchmarks/time_benchmark.cpp
@@ -35,4 +35,17 @@ static void BM_time_localtime_tz(int iters) {
StopBenchmarkTiming();
}
BENCHMARK(BM_time_localtime_tz);
+
#endif
+
+static void BM_time_clock_gettime(int iters) {
+ StartBenchmarkTiming();
+
+ struct timespec t;
+ for (int i = 0; i < iters; ++i) {
+ clock_gettime(CLOCK_MONOTONIC, &t);
+ }
+
+ StopBenchmarkTiming();
+}
+BENCHMARK(BM_time_clock_gettime);
diff --git a/benchmarks/unistd_benchmark.cpp b/benchmarks/unistd_benchmark.cpp
index 12b788a..f2c9d73 100644
--- a/benchmarks/unistd_benchmark.cpp
+++ b/benchmarks/unistd_benchmark.cpp
@@ -16,6 +16,7 @@
#include "benchmark.h"
+#include <sys/syscall.h>
#include <unistd.h>
static void BM_unistd_getpid(int iters) {
@@ -39,3 +40,14 @@ static void BM_unistd_gettid(int iters) {
StopBenchmarkTiming();
}
BENCHMARK(BM_unistd_gettid);
+
+static void BM_unistd_gettid_syscall(int iters) {
+ StartBenchmarkTiming();
+
+ for (int i = 0; i < iters; ++i) {
+ syscall(__NR_gettid);
+ }
+
+ StopBenchmarkTiming();
+}
+BENCHMARK(BM_unistd_gettid_syscall);
diff --git a/libc/Android.mk b/libc/Android.mk
index 3512771..cd5cb02 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -54,7 +54,6 @@ libc_common_src_files := \
bionic/initgroups.c \
bionic/ioctl.c \
bionic/isatty.c \
- bionic/md5.c \
bionic/memmem.c \
bionic/pathconf.c \
bionic/ptsname.c \
@@ -271,7 +270,6 @@ libc_upstream_netbsd_src_files := \
upstream-netbsd/lib/libc/gen/nice.c \
upstream-netbsd/lib/libc/gen/popen.c \
upstream-netbsd/lib/libc/gen/psignal.c \
- upstream-netbsd/lib/libc/gen/setjmperr.c \
upstream-netbsd/lib/libc/gen/utime.c \
upstream-netbsd/lib/libc/gen/utmp.c \
upstream-netbsd/lib/libc/isc/ev_streams.c \
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index b496357..9389c9c 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -128,12 +128,7 @@ ssize_t fgetxattr(int, const char*, void*, size_t) all
ssize_t flistxattr(int, char*, size_t) all
int fremovexattr(int, const char*) all
-# mips64 doesn't have getdents64 until 3.10 kernels.
-# We need this special-case hack as long as we need to support mips64 on older kernels.
-# The currently-available Debian qemu image is on a 3.2 kernel.
-int getdents:getdents64(unsigned int, struct dirent*, unsigned int) arm,arm64,mips,x86,x86_64
-int __getdents64:getdents64(unsigned int, struct dirent*, unsigned int) mips64
-int __getdents:getdents(unsigned int, void*, unsigned int) mips64
+int __getdents64:getdents64(unsigned int, struct dirent*, unsigned int) arm,arm64,mips,mips64,x86,x86_64
int __openat:openat(int, const char*, int, mode_t) all
int faccessat(int, const char*, int, int) all
diff --git a/libc/arch-arm/bionic/__bionic_clone.S b/libc/arch-arm/bionic/__bionic_clone.S
index 2643ae0..48f2f98 100644
--- a/libc/arch-arm/bionic/__bionic_clone.S
+++ b/libc/arch-arm/bionic/__bionic_clone.S
@@ -60,10 +60,10 @@ ENTRY(__bionic_clone)
b __set_errno
1: # The child.
- # Setting lr to 0 will make the unwinder stop at __bionic_clone_entry
+ # Setting lr to 0 will make the unwinder stop at __start_thread
mov lr, #0
ldr r0, [sp, #-4]
ldr r1, [sp, #-8]
- b __bionic_clone_entry
+ b __start_thread
END(__bionic_clone)
.hidden __bionic_clone
diff --git a/libc/arch-arm/syscalls/getdents.S b/libc/arch-arm/syscalls/__getdents64.S
index 8f0e81a..c3d5e5b 100644
--- a/libc/arch-arm/syscalls/getdents.S
+++ b/libc/arch-arm/syscalls/__getdents64.S
@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
-ENTRY(getdents)
+ENTRY(__getdents64)
mov ip, r7
ldr r7, =__NR_getdents64
swi #0
@@ -11,4 +11,4 @@ ENTRY(getdents)
bxls lr
neg r0, r0
b __set_errno
-END(getdents)
+END(__getdents64)
diff --git a/libc/arch-arm64/bionic/__bionic_clone.S b/libc/arch-arm64/bionic/__bionic_clone.S
index d3c0374..74db4b5 100644
--- a/libc/arch-arm64/bionic/__bionic_clone.S
+++ b/libc/arch-arm64/bionic/__bionic_clone.S
@@ -31,12 +31,6 @@
// pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
ENTRY(__bionic_clone)
- stp x29, x30, [sp, #-16]!
- .cfi_def_cfa_offset 16
- .cfi_rel_offset x29, 0
- .cfi_rel_offset x30, 8
- mov x29, sp
-
# Copy 'fn' and 'arg' onto the child stack.
stp x5, x6, [x1, #-16]
@@ -47,11 +41,6 @@ ENTRY(__bionic_clone)
# Are we the child?
cbz x0, .L_bc_child
- 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)
cneg x0, x0, hi
@@ -62,10 +51,10 @@ ENTRY(__bionic_clone)
.L_bc_child:
# We're in the child now. Set the end of the frame record chain...
mov x29, xzr
- # Setting x30 to 0 will make the unwinder stop at __bionic_clone_entry
+ # Setting x30 to 0 will make the unwinder stop at __start_thread
mov x30, xzr
- # ...and call __bionic_clone_entry with the 'fn' and 'arg' we stored on the child stack.
+ # ...and call __start_thread with the 'fn' and 'arg' we stored on the child stack.
ldp x0, x1, [sp, #-16]
- b __bionic_clone_entry
+ b __start_thread
END(__bionic_clone)
.hidden __bionic_clone
diff --git a/libc/arch-arm64/bionic/syscall.S b/libc/arch-arm64/bionic/syscall.S
index 42e8883..658af78 100644
--- a/libc/arch-arm64/bionic/syscall.S
+++ b/libc/arch-arm64/bionic/syscall.S
@@ -29,13 +29,6 @@
#include <private/bionic_asm.h>
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
-
/* Move syscall No. from x0 to x8 */
mov x8, x0
/* Move syscall parameters from x1 thru x6 to x0 thru x5 */
@@ -47,11 +40,6 @@ ENTRY(syscall)
mov x5, x6
svc #0
- 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)
cneg x0, x0, hi
diff --git a/libc/arch-arm64/syscalls/__accept4.S b/libc/arch-arm64/syscalls/__accept4.S
index 34f2c52..1c2a674 100644
--- a/libc/arch-arm64/syscalls/__accept4.S
+++ b/libc/arch-arm64/syscalls/__accept4.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_accept4
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__brk.S b/libc/arch-arm64/syscalls/__brk.S
index fb63fb9..85ed767 100644
--- a/libc/arch-arm64/syscalls/__brk.S
+++ b/libc/arch-arm64/syscalls/__brk.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_brk
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__connect.S b/libc/arch-arm64/syscalls/__connect.S
index e578ccc..0d664f0 100644
--- a/libc/arch-arm64/syscalls/__connect.S
+++ b/libc/arch-arm64/syscalls/__connect.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_connect
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__epoll_pwait.S b/libc/arch-arm64/syscalls/__epoll_pwait.S
index 57b01c2..45275c0 100644
--- a/libc/arch-arm64/syscalls/__epoll_pwait.S
+++ b/libc/arch-arm64/syscalls/__epoll_pwait.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_epoll_pwait
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__exit.S b/libc/arch-arm64/syscalls/__exit.S
index 8600b13..e358513 100644
--- a/libc/arch-arm64/syscalls/__exit.S
+++ b/libc/arch-arm64/syscalls/__exit.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_exit
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__getcpu.S b/libc/arch-arm64/syscalls/__getcpu.S
index e81ba23..5e4368f 100644
--- a/libc/arch-arm64/syscalls/__getcpu.S
+++ b/libc/arch-arm64/syscalls/__getcpu.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getcpu
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__getcwd.S b/libc/arch-arm64/syscalls/__getcwd.S
index fc48f80..bd4fbaa 100644
--- a/libc/arch-arm64/syscalls/__getcwd.S
+++ b/libc/arch-arm64/syscalls/__getcwd.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getcwd
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__getdents64.S b/libc/arch-arm64/syscalls/__getdents64.S
new file mode 100644
index 0000000..bf0f9a4
--- /dev/null
+++ b/libc/arch-arm64/syscalls/__getdents64.S
@@ -0,0 +1,15 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <private/bionic_asm.h>
+
+ENTRY(__getdents64)
+ mov x8, __NR_getdents64
+ svc #0
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__getdents64)
+.hidden __getdents64
diff --git a/libc/arch-arm64/syscalls/__getpriority.S b/libc/arch-arm64/syscalls/__getpriority.S
index 486ea8f..57ceabf 100644
--- a/libc/arch-arm64/syscalls/__getpriority.S
+++ b/libc/arch-arm64/syscalls/__getpriority.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getpriority
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__ioctl.S b/libc/arch-arm64/syscalls/__ioctl.S
index 30ff73c..f632555 100644
--- a/libc/arch-arm64/syscalls/__ioctl.S
+++ b/libc/arch-arm64/syscalls/__ioctl.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_ioctl
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__openat.S b/libc/arch-arm64/syscalls/__openat.S
index 22e2f6a..e1b0da3 100644
--- a/libc/arch-arm64/syscalls/__openat.S
+++ b/libc/arch-arm64/syscalls/__openat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_openat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__ppoll.S b/libc/arch-arm64/syscalls/__ppoll.S
index 1739dea..31e5578 100644
--- a/libc/arch-arm64/syscalls/__ppoll.S
+++ b/libc/arch-arm64/syscalls/__ppoll.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_ppoll
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__pselect6.S b/libc/arch-arm64/syscalls/__pselect6.S
index 2770164..b0e4770 100644
--- a/libc/arch-arm64/syscalls/__pselect6.S
+++ b/libc/arch-arm64/syscalls/__pselect6.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_pselect6
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__ptrace.S b/libc/arch-arm64/syscalls/__ptrace.S
index 3746530..054bb6f 100644
--- a/libc/arch-arm64/syscalls/__ptrace.S
+++ b/libc/arch-arm64/syscalls/__ptrace.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_ptrace
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__reboot.S b/libc/arch-arm64/syscalls/__reboot.S
index b1ea418..e24553c 100644
--- a/libc/arch-arm64/syscalls/__reboot.S
+++ b/libc/arch-arm64/syscalls/__reboot.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_reboot
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__rt_sigaction.S b/libc/arch-arm64/syscalls/__rt_sigaction.S
index 33e07cb..3d84544 100644
--- a/libc/arch-arm64/syscalls/__rt_sigaction.S
+++ b/libc/arch-arm64/syscalls/__rt_sigaction.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_rt_sigaction
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__rt_sigpending.S b/libc/arch-arm64/syscalls/__rt_sigpending.S
index fa6812e..60f0a10 100644
--- a/libc/arch-arm64/syscalls/__rt_sigpending.S
+++ b/libc/arch-arm64/syscalls/__rt_sigpending.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_rt_sigpending
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__rt_sigprocmask.S b/libc/arch-arm64/syscalls/__rt_sigprocmask.S
index 537f8bd..7f5b3ac 100644
--- a/libc/arch-arm64/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-arm64/syscalls/__rt_sigprocmask.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_rt_sigprocmask
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__rt_sigsuspend.S b/libc/arch-arm64/syscalls/__rt_sigsuspend.S
index b8a99c6..08b1197 100644
--- a/libc/arch-arm64/syscalls/__rt_sigsuspend.S
+++ b/libc/arch-arm64/syscalls/__rt_sigsuspend.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_rt_sigsuspend
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__rt_sigtimedwait.S b/libc/arch-arm64/syscalls/__rt_sigtimedwait.S
index 869442c..8bc9a7a 100644
--- a/libc/arch-arm64/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-arm64/syscalls/__rt_sigtimedwait.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_rt_sigtimedwait
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__sched_getaffinity.S b/libc/arch-arm64/syscalls/__sched_getaffinity.S
index 8ca23d4..c0d392c 100644
--- a/libc/arch-arm64/syscalls/__sched_getaffinity.S
+++ b/libc/arch-arm64/syscalls/__sched_getaffinity.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sched_getaffinity
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__set_tid_address.S b/libc/arch-arm64/syscalls/__set_tid_address.S
index 5514aed..296c907 100644
--- a/libc/arch-arm64/syscalls/__set_tid_address.S
+++ b/libc/arch-arm64/syscalls/__set_tid_address.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_set_tid_address
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__signalfd4.S b/libc/arch-arm64/syscalls/__signalfd4.S
index ea49fc5..3932003 100644
--- a/libc/arch-arm64/syscalls/__signalfd4.S
+++ b/libc/arch-arm64/syscalls/__signalfd4.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_signalfd4
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__socket.S b/libc/arch-arm64/syscalls/__socket.S
index f96a1ab..db7f2aa 100644
--- a/libc/arch-arm64/syscalls/__socket.S
+++ b/libc/arch-arm64/syscalls/__socket.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_socket
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__timer_create.S b/libc/arch-arm64/syscalls/__timer_create.S
index 87183b4..a5e69e3 100644
--- a/libc/arch-arm64/syscalls/__timer_create.S
+++ b/libc/arch-arm64/syscalls/__timer_create.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_timer_create
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__timer_delete.S b/libc/arch-arm64/syscalls/__timer_delete.S
index c21ec4f..44a7481 100644
--- a/libc/arch-arm64/syscalls/__timer_delete.S
+++ b/libc/arch-arm64/syscalls/__timer_delete.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_timer_delete
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__timer_getoverrun.S b/libc/arch-arm64/syscalls/__timer_getoverrun.S
index 47f1ef9..e1d959a 100644
--- a/libc/arch-arm64/syscalls/__timer_getoverrun.S
+++ b/libc/arch-arm64/syscalls/__timer_getoverrun.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_timer_getoverrun
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__timer_gettime.S b/libc/arch-arm64/syscalls/__timer_gettime.S
index 4eaa655..7632290 100644
--- a/libc/arch-arm64/syscalls/__timer_gettime.S
+++ b/libc/arch-arm64/syscalls/__timer_gettime.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_timer_gettime
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__timer_settime.S b/libc/arch-arm64/syscalls/__timer_settime.S
index aef0cc4..92e4a76 100644
--- a/libc/arch-arm64/syscalls/__timer_settime.S
+++ b/libc/arch-arm64/syscalls/__timer_settime.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_timer_settime
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/__waitid.S b/libc/arch-arm64/syscalls/__waitid.S
index 6d9e940..9267239 100644
--- a/libc/arch-arm64/syscalls/__waitid.S
+++ b/libc/arch-arm64/syscalls/__waitid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_waitid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/_exit.S b/libc/arch-arm64/syscalls/_exit.S
index 37d1499..38b073b 100644
--- a/libc/arch-arm64/syscalls/_exit.S
+++ b/libc/arch-arm64/syscalls/_exit.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_exit_group
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/acct.S b/libc/arch-arm64/syscalls/acct.S
index f391cd8..15e3086 100644
--- a/libc/arch-arm64/syscalls/acct.S
+++ b/libc/arch-arm64/syscalls/acct.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_acct
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/bind.S b/libc/arch-arm64/syscalls/bind.S
index 10dd01f..b3925db 100644
--- a/libc/arch-arm64/syscalls/bind.S
+++ b/libc/arch-arm64/syscalls/bind.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_bind
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/capget.S b/libc/arch-arm64/syscalls/capget.S
index d01dc47..b897e5d 100644
--- a/libc/arch-arm64/syscalls/capget.S
+++ b/libc/arch-arm64/syscalls/capget.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_capget
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/capset.S b/libc/arch-arm64/syscalls/capset.S
index c4ed92e..1d94aa3 100644
--- a/libc/arch-arm64/syscalls/capset.S
+++ b/libc/arch-arm64/syscalls/capset.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_capset
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/chdir.S b/libc/arch-arm64/syscalls/chdir.S
index 6f1baf0..a7bf6c2 100644
--- a/libc/arch-arm64/syscalls/chdir.S
+++ b/libc/arch-arm64/syscalls/chdir.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_chdir
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/chroot.S b/libc/arch-arm64/syscalls/chroot.S
index b15f04a..98bd5d1 100644
--- a/libc/arch-arm64/syscalls/chroot.S
+++ b/libc/arch-arm64/syscalls/chroot.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_chroot
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/clock_getres.S b/libc/arch-arm64/syscalls/clock_getres.S
index b18c10b..b6e7e56 100644
--- a/libc/arch-arm64/syscalls/clock_getres.S
+++ b/libc/arch-arm64/syscalls/clock_getres.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_clock_getres
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/clock_gettime.S b/libc/arch-arm64/syscalls/clock_gettime.S
index b3518c1..ffdde57 100644
--- a/libc/arch-arm64/syscalls/clock_gettime.S
+++ b/libc/arch-arm64/syscalls/clock_gettime.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_clock_gettime
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/clock_nanosleep.S b/libc/arch-arm64/syscalls/clock_nanosleep.S
index eddf6f1..b64ff68 100644
--- a/libc/arch-arm64/syscalls/clock_nanosleep.S
+++ b/libc/arch-arm64/syscalls/clock_nanosleep.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_clock_nanosleep
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/clock_settime.S b/libc/arch-arm64/syscalls/clock_settime.S
index c6ba5c0..adc1680 100644
--- a/libc/arch-arm64/syscalls/clock_settime.S
+++ b/libc/arch-arm64/syscalls/clock_settime.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_clock_settime
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/close.S b/libc/arch-arm64/syscalls/close.S
index a623895..b4b72d9 100644
--- a/libc/arch-arm64/syscalls/close.S
+++ b/libc/arch-arm64/syscalls/close.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_close
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/delete_module.S b/libc/arch-arm64/syscalls/delete_module.S
index a57517d..ed51847 100644
--- a/libc/arch-arm64/syscalls/delete_module.S
+++ b/libc/arch-arm64/syscalls/delete_module.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_delete_module
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/dup.S b/libc/arch-arm64/syscalls/dup.S
index b7e04ed..9584c51 100644
--- a/libc/arch-arm64/syscalls/dup.S
+++ b/libc/arch-arm64/syscalls/dup.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_dup
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/dup3.S b/libc/arch-arm64/syscalls/dup3.S
index fada63d..e303fba 100644
--- a/libc/arch-arm64/syscalls/dup3.S
+++ b/libc/arch-arm64/syscalls/dup3.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_dup3
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/epoll_create1.S b/libc/arch-arm64/syscalls/epoll_create1.S
index 94990bf..4ca8bfa 100644
--- a/libc/arch-arm64/syscalls/epoll_create1.S
+++ b/libc/arch-arm64/syscalls/epoll_create1.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_epoll_create1
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/epoll_ctl.S b/libc/arch-arm64/syscalls/epoll_ctl.S
index ea6f735..c1c0dba 100644
--- a/libc/arch-arm64/syscalls/epoll_ctl.S
+++ b/libc/arch-arm64/syscalls/epoll_ctl.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_epoll_ctl
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/eventfd.S b/libc/arch-arm64/syscalls/eventfd.S
index afa88b3..ace608e 100644
--- a/libc/arch-arm64/syscalls/eventfd.S
+++ b/libc/arch-arm64/syscalls/eventfd.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_eventfd2
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/execve.S b/libc/arch-arm64/syscalls/execve.S
index 031b6d4..ab0cb57 100644
--- a/libc/arch-arm64/syscalls/execve.S
+++ b/libc/arch-arm64/syscalls/execve.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_execve
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/faccessat.S b/libc/arch-arm64/syscalls/faccessat.S
index cebbf18..30a3852 100644
--- a/libc/arch-arm64/syscalls/faccessat.S
+++ b/libc/arch-arm64/syscalls/faccessat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_faccessat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fallocate.S b/libc/arch-arm64/syscalls/fallocate.S
index 94832aa..3092b34 100644
--- a/libc/arch-arm64/syscalls/fallocate.S
+++ b/libc/arch-arm64/syscalls/fallocate.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fallocate
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fchdir.S b/libc/arch-arm64/syscalls/fchdir.S
index afba3c1..f7687f8 100644
--- a/libc/arch-arm64/syscalls/fchdir.S
+++ b/libc/arch-arm64/syscalls/fchdir.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fchdir
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fchmod.S b/libc/arch-arm64/syscalls/fchmod.S
index 35f9dec..acc6718 100644
--- a/libc/arch-arm64/syscalls/fchmod.S
+++ b/libc/arch-arm64/syscalls/fchmod.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fchmod
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fchmodat.S b/libc/arch-arm64/syscalls/fchmodat.S
index 59bfb8a..23c2fd5 100644
--- a/libc/arch-arm64/syscalls/fchmodat.S
+++ b/libc/arch-arm64/syscalls/fchmodat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fchmodat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fchown.S b/libc/arch-arm64/syscalls/fchown.S
index 2294187..8e9db62 100644
--- a/libc/arch-arm64/syscalls/fchown.S
+++ b/libc/arch-arm64/syscalls/fchown.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fchown
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fchownat.S b/libc/arch-arm64/syscalls/fchownat.S
index ff24187..3cf2c3d 100644
--- a/libc/arch-arm64/syscalls/fchownat.S
+++ b/libc/arch-arm64/syscalls/fchownat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fchownat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fcntl.S b/libc/arch-arm64/syscalls/fcntl.S
index a9d6976..45eff74 100644
--- a/libc/arch-arm64/syscalls/fcntl.S
+++ b/libc/arch-arm64/syscalls/fcntl.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fcntl
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fdatasync.S b/libc/arch-arm64/syscalls/fdatasync.S
index 4cf4de3..77b76c4 100644
--- a/libc/arch-arm64/syscalls/fdatasync.S
+++ b/libc/arch-arm64/syscalls/fdatasync.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fdatasync
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fgetxattr.S b/libc/arch-arm64/syscalls/fgetxattr.S
index 914ea7f..1f8edb6 100644
--- a/libc/arch-arm64/syscalls/fgetxattr.S
+++ b/libc/arch-arm64/syscalls/fgetxattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fgetxattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/flistxattr.S b/libc/arch-arm64/syscalls/flistxattr.S
index 2a64381..997529e 100644
--- a/libc/arch-arm64/syscalls/flistxattr.S
+++ b/libc/arch-arm64/syscalls/flistxattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_flistxattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/flock.S b/libc/arch-arm64/syscalls/flock.S
index 0d87233..0e1c3f5 100644
--- a/libc/arch-arm64/syscalls/flock.S
+++ b/libc/arch-arm64/syscalls/flock.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_flock
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fremovexattr.S b/libc/arch-arm64/syscalls/fremovexattr.S
index e2ef649..d43430f 100644
--- a/libc/arch-arm64/syscalls/fremovexattr.S
+++ b/libc/arch-arm64/syscalls/fremovexattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fremovexattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fsetxattr.S b/libc/arch-arm64/syscalls/fsetxattr.S
index eb41951..f40f875 100644
--- a/libc/arch-arm64/syscalls/fsetxattr.S
+++ b/libc/arch-arm64/syscalls/fsetxattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fsetxattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fstat64.S b/libc/arch-arm64/syscalls/fstat64.S
index ee0d9e7..9afe95b 100644
--- a/libc/arch-arm64/syscalls/fstat64.S
+++ b/libc/arch-arm64/syscalls/fstat64.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fstat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fstatat64.S b/libc/arch-arm64/syscalls/fstatat64.S
index 4ff3039..30efd3b 100644
--- a/libc/arch-arm64/syscalls/fstatat64.S
+++ b/libc/arch-arm64/syscalls/fstatat64.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_newfstatat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fstatfs64.S b/libc/arch-arm64/syscalls/fstatfs64.S
index b908b57..67ae67e 100644
--- a/libc/arch-arm64/syscalls/fstatfs64.S
+++ b/libc/arch-arm64/syscalls/fstatfs64.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fstatfs
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/fsync.S b/libc/arch-arm64/syscalls/fsync.S
index bac2e8b..e22589e 100644
--- a/libc/arch-arm64/syscalls/fsync.S
+++ b/libc/arch-arm64/syscalls/fsync.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_fsync
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/ftruncate.S b/libc/arch-arm64/syscalls/ftruncate.S
index ca4315a..b45a170 100644
--- a/libc/arch-arm64/syscalls/ftruncate.S
+++ b/libc/arch-arm64/syscalls/ftruncate.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_ftruncate
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getdents.S b/libc/arch-arm64/syscalls/getdents.S
deleted file mode 100644
index 8cd3ca7..0000000
--- a/libc/arch-arm64/syscalls/getdents.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-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
-
- mov x8, __NR_getdents64
- svc #0
-
- 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
- b.hi __set_errno
-
- ret
-END(getdents)
diff --git a/libc/arch-arm64/syscalls/getegid.S b/libc/arch-arm64/syscalls/getegid.S
index 593f51d..675731c 100644
--- a/libc/arch-arm64/syscalls/getegid.S
+++ b/libc/arch-arm64/syscalls/getegid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getegid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/geteuid.S b/libc/arch-arm64/syscalls/geteuid.S
index 845acbc..8d9461e 100644
--- a/libc/arch-arm64/syscalls/geteuid.S
+++ b/libc/arch-arm64/syscalls/geteuid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_geteuid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getgid.S b/libc/arch-arm64/syscalls/getgid.S
index 5f34355..4653fd8 100644
--- a/libc/arch-arm64/syscalls/getgid.S
+++ b/libc/arch-arm64/syscalls/getgid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getgid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getgroups.S b/libc/arch-arm64/syscalls/getgroups.S
index d0e2540..f22f1e9 100644
--- a/libc/arch-arm64/syscalls/getgroups.S
+++ b/libc/arch-arm64/syscalls/getgroups.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getgroups
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getitimer.S b/libc/arch-arm64/syscalls/getitimer.S
index 2d4d541..25d0b38 100644
--- a/libc/arch-arm64/syscalls/getitimer.S
+++ b/libc/arch-arm64/syscalls/getitimer.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getitimer
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getpeername.S b/libc/arch-arm64/syscalls/getpeername.S
index 1f64130..aefd0c5 100644
--- a/libc/arch-arm64/syscalls/getpeername.S
+++ b/libc/arch-arm64/syscalls/getpeername.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getpeername
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getpgid.S b/libc/arch-arm64/syscalls/getpgid.S
index 01d876f..4c750fb 100644
--- a/libc/arch-arm64/syscalls/getpgid.S
+++ b/libc/arch-arm64/syscalls/getpgid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getpgid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getpid.S b/libc/arch-arm64/syscalls/getpid.S
index 94b823c..1802ce8 100644
--- a/libc/arch-arm64/syscalls/getpid.S
+++ b/libc/arch-arm64/syscalls/getpid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getpid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getppid.S b/libc/arch-arm64/syscalls/getppid.S
index 0a46878..540ecc4 100644
--- a/libc/arch-arm64/syscalls/getppid.S
+++ b/libc/arch-arm64/syscalls/getppid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getppid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getresgid.S b/libc/arch-arm64/syscalls/getresgid.S
index bc121fc..3ce5799 100644
--- a/libc/arch-arm64/syscalls/getresgid.S
+++ b/libc/arch-arm64/syscalls/getresgid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getresgid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getresuid.S b/libc/arch-arm64/syscalls/getresuid.S
index 28cd9a4..56851cc 100644
--- a/libc/arch-arm64/syscalls/getresuid.S
+++ b/libc/arch-arm64/syscalls/getresuid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getresuid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getrlimit.S b/libc/arch-arm64/syscalls/getrlimit.S
index aa966ca..1f74773 100644
--- a/libc/arch-arm64/syscalls/getrlimit.S
+++ b/libc/arch-arm64/syscalls/getrlimit.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getrlimit
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getrusage.S b/libc/arch-arm64/syscalls/getrusage.S
index aaaf3a2..8154e4a 100644
--- a/libc/arch-arm64/syscalls/getrusage.S
+++ b/libc/arch-arm64/syscalls/getrusage.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getrusage
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getsid.S b/libc/arch-arm64/syscalls/getsid.S
index e75b7b4..f99623f 100644
--- a/libc/arch-arm64/syscalls/getsid.S
+++ b/libc/arch-arm64/syscalls/getsid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getsid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getsockname.S b/libc/arch-arm64/syscalls/getsockname.S
index 61e4b4b..e8bc006 100644
--- a/libc/arch-arm64/syscalls/getsockname.S
+++ b/libc/arch-arm64/syscalls/getsockname.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getsockname
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getsockopt.S b/libc/arch-arm64/syscalls/getsockopt.S
index 3740df9..4559d1d 100644
--- a/libc/arch-arm64/syscalls/getsockopt.S
+++ b/libc/arch-arm64/syscalls/getsockopt.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getsockopt
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/gettimeofday.S b/libc/arch-arm64/syscalls/gettimeofday.S
index a72ac91..3b6104b 100644
--- a/libc/arch-arm64/syscalls/gettimeofday.S
+++ b/libc/arch-arm64/syscalls/gettimeofday.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_gettimeofday
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getuid.S b/libc/arch-arm64/syscalls/getuid.S
index d749cc3..4e37d47 100644
--- a/libc/arch-arm64/syscalls/getuid.S
+++ b/libc/arch-arm64/syscalls/getuid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getuid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/getxattr.S b/libc/arch-arm64/syscalls/getxattr.S
index 451eef5..3f69956 100644
--- a/libc/arch-arm64/syscalls/getxattr.S
+++ b/libc/arch-arm64/syscalls/getxattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_getxattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/init_module.S b/libc/arch-arm64/syscalls/init_module.S
index 42ec765..cc1a0da 100644
--- a/libc/arch-arm64/syscalls/init_module.S
+++ b/libc/arch-arm64/syscalls/init_module.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_init_module
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/inotify_add_watch.S b/libc/arch-arm64/syscalls/inotify_add_watch.S
index 066816c..fbc8dd4 100644
--- a/libc/arch-arm64/syscalls/inotify_add_watch.S
+++ b/libc/arch-arm64/syscalls/inotify_add_watch.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_inotify_add_watch
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/inotify_init1.S b/libc/arch-arm64/syscalls/inotify_init1.S
index d6bee8c..5726d0c 100644
--- a/libc/arch-arm64/syscalls/inotify_init1.S
+++ b/libc/arch-arm64/syscalls/inotify_init1.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_inotify_init1
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/inotify_rm_watch.S b/libc/arch-arm64/syscalls/inotify_rm_watch.S
index ee9c70f..37eabcf 100644
--- a/libc/arch-arm64/syscalls/inotify_rm_watch.S
+++ b/libc/arch-arm64/syscalls/inotify_rm_watch.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_inotify_rm_watch
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/ioprio_get.S b/libc/arch-arm64/syscalls/ioprio_get.S
index 4a4a749..7e394c6 100644
--- a/libc/arch-arm64/syscalls/ioprio_get.S
+++ b/libc/arch-arm64/syscalls/ioprio_get.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_ioprio_get
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/ioprio_set.S b/libc/arch-arm64/syscalls/ioprio_set.S
index 8b48f12..ca43ed6 100644
--- a/libc/arch-arm64/syscalls/ioprio_set.S
+++ b/libc/arch-arm64/syscalls/ioprio_set.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_ioprio_set
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/kill.S b/libc/arch-arm64/syscalls/kill.S
index 15c399b..7fc2c5a 100644
--- a/libc/arch-arm64/syscalls/kill.S
+++ b/libc/arch-arm64/syscalls/kill.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_kill
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/klogctl.S b/libc/arch-arm64/syscalls/klogctl.S
index 1d161ec..abbee55 100644
--- a/libc/arch-arm64/syscalls/klogctl.S
+++ b/libc/arch-arm64/syscalls/klogctl.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_syslog
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/lgetxattr.S b/libc/arch-arm64/syscalls/lgetxattr.S
index 2799285..e1a760c 100644
--- a/libc/arch-arm64/syscalls/lgetxattr.S
+++ b/libc/arch-arm64/syscalls/lgetxattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_lgetxattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/linkat.S b/libc/arch-arm64/syscalls/linkat.S
index e65aa3f..c3e2cd8 100644
--- a/libc/arch-arm64/syscalls/linkat.S
+++ b/libc/arch-arm64/syscalls/linkat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_linkat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/listen.S b/libc/arch-arm64/syscalls/listen.S
index 44ae288..9b7be28 100644
--- a/libc/arch-arm64/syscalls/listen.S
+++ b/libc/arch-arm64/syscalls/listen.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_listen
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/listxattr.S b/libc/arch-arm64/syscalls/listxattr.S
index b31d22c..a5e55c7 100644
--- a/libc/arch-arm64/syscalls/listxattr.S
+++ b/libc/arch-arm64/syscalls/listxattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_listxattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/llistxattr.S b/libc/arch-arm64/syscalls/llistxattr.S
index fdcafde..447e208 100644
--- a/libc/arch-arm64/syscalls/llistxattr.S
+++ b/libc/arch-arm64/syscalls/llistxattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_llistxattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/lremovexattr.S b/libc/arch-arm64/syscalls/lremovexattr.S
index 741fa86..1f620db 100644
--- a/libc/arch-arm64/syscalls/lremovexattr.S
+++ b/libc/arch-arm64/syscalls/lremovexattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_lremovexattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/lseek.S b/libc/arch-arm64/syscalls/lseek.S
index 3d16e75..1b858b2 100644
--- a/libc/arch-arm64/syscalls/lseek.S
+++ b/libc/arch-arm64/syscalls/lseek.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_lseek
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/lsetxattr.S b/libc/arch-arm64/syscalls/lsetxattr.S
index a7fe1df..8315bba 100644
--- a/libc/arch-arm64/syscalls/lsetxattr.S
+++ b/libc/arch-arm64/syscalls/lsetxattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_lsetxattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/madvise.S b/libc/arch-arm64/syscalls/madvise.S
index 8eed274..17282c0 100644
--- a/libc/arch-arm64/syscalls/madvise.S
+++ b/libc/arch-arm64/syscalls/madvise.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_madvise
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/mincore.S b/libc/arch-arm64/syscalls/mincore.S
index 21dbe14..abdcf6c 100644
--- a/libc/arch-arm64/syscalls/mincore.S
+++ b/libc/arch-arm64/syscalls/mincore.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_mincore
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/mkdirat.S b/libc/arch-arm64/syscalls/mkdirat.S
index efd9786..d6bafca 100644
--- a/libc/arch-arm64/syscalls/mkdirat.S
+++ b/libc/arch-arm64/syscalls/mkdirat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_mkdirat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/mknodat.S b/libc/arch-arm64/syscalls/mknodat.S
index 1bf42d0..598e789 100644
--- a/libc/arch-arm64/syscalls/mknodat.S
+++ b/libc/arch-arm64/syscalls/mknodat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_mknodat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/mlock.S b/libc/arch-arm64/syscalls/mlock.S
index e09e7fc..631ce02 100644
--- a/libc/arch-arm64/syscalls/mlock.S
+++ b/libc/arch-arm64/syscalls/mlock.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_mlock
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/mlockall.S b/libc/arch-arm64/syscalls/mlockall.S
index bfb2b60..42dac9e 100644
--- a/libc/arch-arm64/syscalls/mlockall.S
+++ b/libc/arch-arm64/syscalls/mlockall.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_mlockall
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/mmap.S b/libc/arch-arm64/syscalls/mmap.S
index 437698a..da18e10 100644
--- a/libc/arch-arm64/syscalls/mmap.S
+++ b/libc/arch-arm64/syscalls/mmap.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_mmap
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/mount.S b/libc/arch-arm64/syscalls/mount.S
index 34170d8..c43a71f 100644
--- a/libc/arch-arm64/syscalls/mount.S
+++ b/libc/arch-arm64/syscalls/mount.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_mount
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/mprotect.S b/libc/arch-arm64/syscalls/mprotect.S
index cdb4bc8..a7d26dd 100644
--- a/libc/arch-arm64/syscalls/mprotect.S
+++ b/libc/arch-arm64/syscalls/mprotect.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_mprotect
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/mremap.S b/libc/arch-arm64/syscalls/mremap.S
index 605b39d..337bbae 100644
--- a/libc/arch-arm64/syscalls/mremap.S
+++ b/libc/arch-arm64/syscalls/mremap.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_mremap
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/msync.S b/libc/arch-arm64/syscalls/msync.S
index e511e86..c54797e 100644
--- a/libc/arch-arm64/syscalls/msync.S
+++ b/libc/arch-arm64/syscalls/msync.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_msync
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/munlock.S b/libc/arch-arm64/syscalls/munlock.S
index f837c9c..b1ec016 100644
--- a/libc/arch-arm64/syscalls/munlock.S
+++ b/libc/arch-arm64/syscalls/munlock.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_munlock
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/munlockall.S b/libc/arch-arm64/syscalls/munlockall.S
index 93e9121..f9162a8 100644
--- a/libc/arch-arm64/syscalls/munlockall.S
+++ b/libc/arch-arm64/syscalls/munlockall.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_munlockall
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/munmap.S b/libc/arch-arm64/syscalls/munmap.S
index f2b22bd..6bd5afe 100644
--- a/libc/arch-arm64/syscalls/munmap.S
+++ b/libc/arch-arm64/syscalls/munmap.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_munmap
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/nanosleep.S b/libc/arch-arm64/syscalls/nanosleep.S
index e33311a..c84accc 100644
--- a/libc/arch-arm64/syscalls/nanosleep.S
+++ b/libc/arch-arm64/syscalls/nanosleep.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_nanosleep
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/personality.S b/libc/arch-arm64/syscalls/personality.S
index c37cae2..02bcf9b 100644
--- a/libc/arch-arm64/syscalls/personality.S
+++ b/libc/arch-arm64/syscalls/personality.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_personality
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/pipe2.S b/libc/arch-arm64/syscalls/pipe2.S
index ab2e259..f4da37d 100644
--- a/libc/arch-arm64/syscalls/pipe2.S
+++ b/libc/arch-arm64/syscalls/pipe2.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_pipe2
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/prctl.S b/libc/arch-arm64/syscalls/prctl.S
index dd46fd4..2e6dca7 100644
--- a/libc/arch-arm64/syscalls/prctl.S
+++ b/libc/arch-arm64/syscalls/prctl.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_prctl
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/pread64.S b/libc/arch-arm64/syscalls/pread64.S
index ddc6c12..2aba596 100644
--- a/libc/arch-arm64/syscalls/pread64.S
+++ b/libc/arch-arm64/syscalls/pread64.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_pread64
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/prlimit64.S b/libc/arch-arm64/syscalls/prlimit64.S
index 39d31b0..a2173d9 100644
--- a/libc/arch-arm64/syscalls/prlimit64.S
+++ b/libc/arch-arm64/syscalls/prlimit64.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_prlimit64
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/pwrite64.S b/libc/arch-arm64/syscalls/pwrite64.S
index 81e2cf7..5674a7c 100644
--- a/libc/arch-arm64/syscalls/pwrite64.S
+++ b/libc/arch-arm64/syscalls/pwrite64.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_pwrite64
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/read.S b/libc/arch-arm64/syscalls/read.S
index c529576..906fb98 100644
--- a/libc/arch-arm64/syscalls/read.S
+++ b/libc/arch-arm64/syscalls/read.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_read
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/readahead.S b/libc/arch-arm64/syscalls/readahead.S
index e8394cc..2994b83 100644
--- a/libc/arch-arm64/syscalls/readahead.S
+++ b/libc/arch-arm64/syscalls/readahead.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_readahead
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/readlinkat.S b/libc/arch-arm64/syscalls/readlinkat.S
index d7cadcc..1782c94 100644
--- a/libc/arch-arm64/syscalls/readlinkat.S
+++ b/libc/arch-arm64/syscalls/readlinkat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_readlinkat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/readv.S b/libc/arch-arm64/syscalls/readv.S
index 98d0742..bc988d4 100644
--- a/libc/arch-arm64/syscalls/readv.S
+++ b/libc/arch-arm64/syscalls/readv.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_readv
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/recvfrom.S b/libc/arch-arm64/syscalls/recvfrom.S
index 63181f1..16f97d5 100644
--- a/libc/arch-arm64/syscalls/recvfrom.S
+++ b/libc/arch-arm64/syscalls/recvfrom.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_recvfrom
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/recvmmsg.S b/libc/arch-arm64/syscalls/recvmmsg.S
index cb1fbfc..bd1495a 100644
--- a/libc/arch-arm64/syscalls/recvmmsg.S
+++ b/libc/arch-arm64/syscalls/recvmmsg.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_recvmmsg
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/recvmsg.S b/libc/arch-arm64/syscalls/recvmsg.S
index 8a91a5f..c9b78c4 100644
--- a/libc/arch-arm64/syscalls/recvmsg.S
+++ b/libc/arch-arm64/syscalls/recvmsg.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_recvmsg
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/removexattr.S b/libc/arch-arm64/syscalls/removexattr.S
index 6fb557a..c12cc84 100644
--- a/libc/arch-arm64/syscalls/removexattr.S
+++ b/libc/arch-arm64/syscalls/removexattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_removexattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/renameat.S b/libc/arch-arm64/syscalls/renameat.S
index e4efeb8..cf79472 100644
--- a/libc/arch-arm64/syscalls/renameat.S
+++ b/libc/arch-arm64/syscalls/renameat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_renameat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sched_get_priority_max.S b/libc/arch-arm64/syscalls/sched_get_priority_max.S
index 74f919b..672d0ea 100644
--- a/libc/arch-arm64/syscalls/sched_get_priority_max.S
+++ b/libc/arch-arm64/syscalls/sched_get_priority_max.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sched_get_priority_max
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sched_get_priority_min.S b/libc/arch-arm64/syscalls/sched_get_priority_min.S
index d043b3b..f5cf1f3 100644
--- a/libc/arch-arm64/syscalls/sched_get_priority_min.S
+++ b/libc/arch-arm64/syscalls/sched_get_priority_min.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sched_get_priority_min
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sched_getparam.S b/libc/arch-arm64/syscalls/sched_getparam.S
index fedcec8..7ffe8fb 100644
--- a/libc/arch-arm64/syscalls/sched_getparam.S
+++ b/libc/arch-arm64/syscalls/sched_getparam.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sched_getparam
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sched_getscheduler.S b/libc/arch-arm64/syscalls/sched_getscheduler.S
index 1225601..b69b8c0 100644
--- a/libc/arch-arm64/syscalls/sched_getscheduler.S
+++ b/libc/arch-arm64/syscalls/sched_getscheduler.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sched_getscheduler
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sched_rr_get_interval.S b/libc/arch-arm64/syscalls/sched_rr_get_interval.S
index 796edda..0be14ba 100644
--- a/libc/arch-arm64/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-arm64/syscalls/sched_rr_get_interval.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sched_rr_get_interval
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sched_setaffinity.S b/libc/arch-arm64/syscalls/sched_setaffinity.S
index 2a7022d..f5cbc77 100644
--- a/libc/arch-arm64/syscalls/sched_setaffinity.S
+++ b/libc/arch-arm64/syscalls/sched_setaffinity.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sched_setaffinity
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sched_setparam.S b/libc/arch-arm64/syscalls/sched_setparam.S
index dd82a10..cff64f5 100644
--- a/libc/arch-arm64/syscalls/sched_setparam.S
+++ b/libc/arch-arm64/syscalls/sched_setparam.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sched_setparam
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sched_setscheduler.S b/libc/arch-arm64/syscalls/sched_setscheduler.S
index 25e1e36..31600a0 100644
--- a/libc/arch-arm64/syscalls/sched_setscheduler.S
+++ b/libc/arch-arm64/syscalls/sched_setscheduler.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sched_setscheduler
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sched_yield.S b/libc/arch-arm64/syscalls/sched_yield.S
index cbee020..21ad601 100644
--- a/libc/arch-arm64/syscalls/sched_yield.S
+++ b/libc/arch-arm64/syscalls/sched_yield.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sched_yield
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sendfile.S b/libc/arch-arm64/syscalls/sendfile.S
index 1705d3c..db90caa 100644
--- a/libc/arch-arm64/syscalls/sendfile.S
+++ b/libc/arch-arm64/syscalls/sendfile.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sendfile
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sendmmsg.S b/libc/arch-arm64/syscalls/sendmmsg.S
index 2277110..e85798a 100644
--- a/libc/arch-arm64/syscalls/sendmmsg.S
+++ b/libc/arch-arm64/syscalls/sendmmsg.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sendmmsg
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sendmsg.S b/libc/arch-arm64/syscalls/sendmsg.S
index 96fcb9a..25eff84 100644
--- a/libc/arch-arm64/syscalls/sendmsg.S
+++ b/libc/arch-arm64/syscalls/sendmsg.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sendmsg
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sendto.S b/libc/arch-arm64/syscalls/sendto.S
index 67589ba..39e4e4e 100644
--- a/libc/arch-arm64/syscalls/sendto.S
+++ b/libc/arch-arm64/syscalls/sendto.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sendto
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setgid.S b/libc/arch-arm64/syscalls/setgid.S
index fbaa785..a9789f7 100644
--- a/libc/arch-arm64/syscalls/setgid.S
+++ b/libc/arch-arm64/syscalls/setgid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setgid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setgroups.S b/libc/arch-arm64/syscalls/setgroups.S
index 48035b6..ce9bf01 100644
--- a/libc/arch-arm64/syscalls/setgroups.S
+++ b/libc/arch-arm64/syscalls/setgroups.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setgroups
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setitimer.S b/libc/arch-arm64/syscalls/setitimer.S
index 42af94b..d8e3d7e 100644
--- a/libc/arch-arm64/syscalls/setitimer.S
+++ b/libc/arch-arm64/syscalls/setitimer.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setitimer
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setns.S b/libc/arch-arm64/syscalls/setns.S
index f695597..615f888 100644
--- a/libc/arch-arm64/syscalls/setns.S
+++ b/libc/arch-arm64/syscalls/setns.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setns
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setpgid.S b/libc/arch-arm64/syscalls/setpgid.S
index 5653256..6015264 100644
--- a/libc/arch-arm64/syscalls/setpgid.S
+++ b/libc/arch-arm64/syscalls/setpgid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setpgid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setpriority.S b/libc/arch-arm64/syscalls/setpriority.S
index 121bcaa..d2f517e 100644
--- a/libc/arch-arm64/syscalls/setpriority.S
+++ b/libc/arch-arm64/syscalls/setpriority.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setpriority
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setregid.S b/libc/arch-arm64/syscalls/setregid.S
index 6389551..7b333bf 100644
--- a/libc/arch-arm64/syscalls/setregid.S
+++ b/libc/arch-arm64/syscalls/setregid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setregid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setresgid.S b/libc/arch-arm64/syscalls/setresgid.S
index bf78249..39504bd 100644
--- a/libc/arch-arm64/syscalls/setresgid.S
+++ b/libc/arch-arm64/syscalls/setresgid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setresgid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setresuid.S b/libc/arch-arm64/syscalls/setresuid.S
index 83200da..5acbffd 100644
--- a/libc/arch-arm64/syscalls/setresuid.S
+++ b/libc/arch-arm64/syscalls/setresuid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setresuid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setreuid.S b/libc/arch-arm64/syscalls/setreuid.S
index 2253eec..63630d6 100644
--- a/libc/arch-arm64/syscalls/setreuid.S
+++ b/libc/arch-arm64/syscalls/setreuid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setreuid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setrlimit.S b/libc/arch-arm64/syscalls/setrlimit.S
index 034ae36..f9f56a6 100644
--- a/libc/arch-arm64/syscalls/setrlimit.S
+++ b/libc/arch-arm64/syscalls/setrlimit.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setrlimit
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setsid.S b/libc/arch-arm64/syscalls/setsid.S
index 64123df..04c28e3 100644
--- a/libc/arch-arm64/syscalls/setsid.S
+++ b/libc/arch-arm64/syscalls/setsid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setsid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setsockopt.S b/libc/arch-arm64/syscalls/setsockopt.S
index fe8da22..0ebc6d0 100644
--- a/libc/arch-arm64/syscalls/setsockopt.S
+++ b/libc/arch-arm64/syscalls/setsockopt.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setsockopt
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/settimeofday.S b/libc/arch-arm64/syscalls/settimeofday.S
index 50debf9..474e40d 100644
--- a/libc/arch-arm64/syscalls/settimeofday.S
+++ b/libc/arch-arm64/syscalls/settimeofday.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_settimeofday
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setuid.S b/libc/arch-arm64/syscalls/setuid.S
index 0a9adbe..fe52921 100644
--- a/libc/arch-arm64/syscalls/setuid.S
+++ b/libc/arch-arm64/syscalls/setuid.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setuid
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/setxattr.S b/libc/arch-arm64/syscalls/setxattr.S
index ebfd607..8d0b415 100644
--- a/libc/arch-arm64/syscalls/setxattr.S
+++ b/libc/arch-arm64/syscalls/setxattr.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_setxattr
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/shutdown.S b/libc/arch-arm64/syscalls/shutdown.S
index 6e878d6..e35cdea 100644
--- a/libc/arch-arm64/syscalls/shutdown.S
+++ b/libc/arch-arm64/syscalls/shutdown.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_shutdown
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sigaltstack.S b/libc/arch-arm64/syscalls/sigaltstack.S
index 46794d4..6a38203 100644
--- a/libc/arch-arm64/syscalls/sigaltstack.S
+++ b/libc/arch-arm64/syscalls/sigaltstack.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sigaltstack
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/socketpair.S b/libc/arch-arm64/syscalls/socketpair.S
index c42ff24..dcd7223 100644
--- a/libc/arch-arm64/syscalls/socketpair.S
+++ b/libc/arch-arm64/syscalls/socketpair.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_socketpair
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/statfs64.S b/libc/arch-arm64/syscalls/statfs64.S
index 66662ee..55633c1 100644
--- a/libc/arch-arm64/syscalls/statfs64.S
+++ b/libc/arch-arm64/syscalls/statfs64.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_statfs
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/swapoff.S b/libc/arch-arm64/syscalls/swapoff.S
index 1d465b0..dcef4af 100644
--- a/libc/arch-arm64/syscalls/swapoff.S
+++ b/libc/arch-arm64/syscalls/swapoff.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_swapoff
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/swapon.S b/libc/arch-arm64/syscalls/swapon.S
index 7e5f850..aef7627 100644
--- a/libc/arch-arm64/syscalls/swapon.S
+++ b/libc/arch-arm64/syscalls/swapon.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_swapon
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/symlinkat.S b/libc/arch-arm64/syscalls/symlinkat.S
index 0081cf2..9830865 100644
--- a/libc/arch-arm64/syscalls/symlinkat.S
+++ b/libc/arch-arm64/syscalls/symlinkat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_symlinkat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sync.S b/libc/arch-arm64/syscalls/sync.S
index 67bc554..3ef0460 100644
--- a/libc/arch-arm64/syscalls/sync.S
+++ b/libc/arch-arm64/syscalls/sync.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sync
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/sysinfo.S b/libc/arch-arm64/syscalls/sysinfo.S
index 0797a39..7dbe152 100644
--- a/libc/arch-arm64/syscalls/sysinfo.S
+++ b/libc/arch-arm64/syscalls/sysinfo.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_sysinfo
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/tgkill.S b/libc/arch-arm64/syscalls/tgkill.S
index 9366c70..477c477 100644
--- a/libc/arch-arm64/syscalls/tgkill.S
+++ b/libc/arch-arm64/syscalls/tgkill.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_tgkill
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/timerfd_create.S b/libc/arch-arm64/syscalls/timerfd_create.S
index 1e9d2e3..83b5910 100644
--- a/libc/arch-arm64/syscalls/timerfd_create.S
+++ b/libc/arch-arm64/syscalls/timerfd_create.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_timerfd_create
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/timerfd_gettime.S b/libc/arch-arm64/syscalls/timerfd_gettime.S
index 56d7f96..253cb79 100644
--- a/libc/arch-arm64/syscalls/timerfd_gettime.S
+++ b/libc/arch-arm64/syscalls/timerfd_gettime.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_timerfd_gettime
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/timerfd_settime.S b/libc/arch-arm64/syscalls/timerfd_settime.S
index 29af0f1..8872481 100644
--- a/libc/arch-arm64/syscalls/timerfd_settime.S
+++ b/libc/arch-arm64/syscalls/timerfd_settime.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_timerfd_settime
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/times.S b/libc/arch-arm64/syscalls/times.S
index 9487186..33c7d55 100644
--- a/libc/arch-arm64/syscalls/times.S
+++ b/libc/arch-arm64/syscalls/times.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_times
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/truncate.S b/libc/arch-arm64/syscalls/truncate.S
index 3bbe356..f15253b 100644
--- a/libc/arch-arm64/syscalls/truncate.S
+++ b/libc/arch-arm64/syscalls/truncate.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_truncate
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/umask.S b/libc/arch-arm64/syscalls/umask.S
index ca72092..8b907b4 100644
--- a/libc/arch-arm64/syscalls/umask.S
+++ b/libc/arch-arm64/syscalls/umask.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_umask
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/umount2.S b/libc/arch-arm64/syscalls/umount2.S
index a959625..5646dba 100644
--- a/libc/arch-arm64/syscalls/umount2.S
+++ b/libc/arch-arm64/syscalls/umount2.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_umount2
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/uname.S b/libc/arch-arm64/syscalls/uname.S
index 2f87563..09ec096 100644
--- a/libc/arch-arm64/syscalls/uname.S
+++ b/libc/arch-arm64/syscalls/uname.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_uname
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/unlinkat.S b/libc/arch-arm64/syscalls/unlinkat.S
index 0025726..992f675 100644
--- a/libc/arch-arm64/syscalls/unlinkat.S
+++ b/libc/arch-arm64/syscalls/unlinkat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_unlinkat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/unshare.S b/libc/arch-arm64/syscalls/unshare.S
index 55462b4..1062dcd 100644
--- a/libc/arch-arm64/syscalls/unshare.S
+++ b/libc/arch-arm64/syscalls/unshare.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_unshare
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/utimensat.S b/libc/arch-arm64/syscalls/utimensat.S
index aa5cfbf..8a25ed6 100644
--- a/libc/arch-arm64/syscalls/utimensat.S
+++ b/libc/arch-arm64/syscalls/utimensat.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_utimensat
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/wait4.S b/libc/arch-arm64/syscalls/wait4.S
index 93183e5..a0d5d62 100644
--- a/libc/arch-arm64/syscalls/wait4.S
+++ b/libc/arch-arm64/syscalls/wait4.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_wait4
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/write.S b/libc/arch-arm64/syscalls/write.S
index b7288d1..d64552e 100644
--- a/libc/arch-arm64/syscalls/write.S
+++ b/libc/arch-arm64/syscalls/write.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_write
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-arm64/syscalls/writev.S b/libc/arch-arm64/syscalls/writev.S
index 13af454..45d5c8d 100644
--- a/libc/arch-arm64/syscalls/writev.S
+++ b/libc/arch-arm64/syscalls/writev.S
@@ -3,20 +3,9 @@
#include <private/bionic_asm.h>
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
-
mov x8, __NR_writev
svc #0
- 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
b.hi __set_errno
diff --git a/libc/arch-mips/bionic/__bionic_clone.S b/libc/arch-mips/bionic/__bionic_clone.S
index 7b138ae..4b4498d 100644
--- a/libc/arch-mips/bionic/__bionic_clone.S
+++ b/libc/arch-mips/bionic/__bionic_clone.S
@@ -60,8 +60,8 @@ ENTRY(__bionic_clone)
lw a0,0(sp) # fn
lw a1,4(sp) # arg
- # void __bionic_clone_entry(int (*func)(void*), void *arg)
- la t9,__bionic_clone_entry
+ # void __start_thread(int (*func)(void*), void *arg)
+ la t9,__start_thread
j t9
.L__error_bc:
diff --git a/libc/arch-mips/syscalls/getdents.S b/libc/arch-mips/syscalls/__getdents64.S
index ce92886..136b408 100644
--- a/libc/arch-mips/syscalls/getdents.S
+++ b/libc/arch-mips/syscalls/__getdents64.S
@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
-ENTRY(getdents)
+ENTRY(__getdents64)
.set noreorder
.cpload t9
li v0, __NR_getdents64
@@ -16,4 +16,4 @@ ENTRY(getdents)
j t9
nop
.set reorder
-END(getdents)
+END(__getdents64)
diff --git a/libc/arch-mips64/bionic/__bionic_clone.S b/libc/arch-mips64/bionic/__bionic_clone.S
index 8687906..4f053f9 100644
--- a/libc/arch-mips64/bionic/__bionic_clone.S
+++ b/libc/arch-mips64/bionic/__bionic_clone.S
@@ -78,10 +78,10 @@ LEAF(__bionic_clone, FRAMESZ)
# Clear return address in child so we don't unwind further.
li ra,0
- # void __bionic_clone_entry(int (*func)(void*), void *arg)
+ # void __start_thread(int (*func)(void*), void *arg)
PTR_L a0,FRAME_FN(sp) # fn
PTR_L a1,FRAME_ARG(sp) # arg
- LA t9,__bionic_clone_entry
+ LA t9,__start_thread
RESTORE_GP64
/*
* For O32 etc the child stack must have space for a0..a3 to be stored
diff --git a/libc/arch-mips64/bionic/getdents.cpp b/libc/arch-mips64/bionic/getdents.cpp
deleted file mode 100644
index 66a61ec..0000000
--- a/libc/arch-mips64/bionic/getdents.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * The MIPS64 getdents64() system call is only present in 3.10+ kernels.
- * If the getdents64() system call is not available fall back to using
- * getdents() and modify the result to be compatible with getdents64().
- */
-
-#include <dirent.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-
-/* The mips_getdents type is 64bit clean */
-struct mips_dirent {
- uint64_t d_ino; /* Inode number */
- uint64_t d_off; /* Offset to next mips_dirent */
- uint16_t d_reclen; /* Length of this mips_dirent */
- char d_name[]; /* Filename (null-terminated) */
- /* length is actually (d_reclen - 2 -
- offsetof(struct mips_dirent, d_name) */
- // char pad; /* Zero padding byte */
- // char d_type; /* File type (only since Linux 2.6.4; offset is (d_reclen - 1)) */
-};
-
-extern "C" int __getdents64(unsigned int fd, struct dirent *dirp, unsigned int count);
-extern "C" int __getdents(unsigned int fd, struct mips_dirent *dirp, unsigned int count);
-int getdents(unsigned int fd, struct dirent *dirp, unsigned int count)
-{
- int r;
- int oerrno = errno;
-
- /* Use getdents64() if it is available */
- r = __getdents64(fd, dirp, count);
- if (r >= 0 || errno != ENOSYS)
- return r;
-
- /* Fallback to getdents() */
- errno = oerrno;
- r = __getdents(fd, (struct mips_dirent *)dirp, count);
- if (r > 0) {
- char *p;
- char type;
- union dirents {
- struct mips_dirent m;
- struct dirent d;
- } *u;
-
- p = (char *)dirp;
- do {
- u = (union dirents *)p;
-
- /* This should not happen, but just in case... */
- if (p + u->m.d_reclen > (char *)dirp + r)
- break;
-
- /* shuffle the dirent */
- type = *(p + u->m.d_reclen - 1);
- memmove(u->d.d_name, u->m.d_name,
- u->m.d_reclen - 2 - offsetof(struct mips_dirent, d_name) + 1);
- u->d.d_type = type;
-
- p += u->m.d_reclen;
- } while (p < (char *)dirp + r);
- }
- return r;
-}
diff --git a/libc/arch-mips64/mips64.mk b/libc/arch-mips64/mips64.mk
index 799eb6d..fce957b 100644
--- a/libc/arch-mips64/mips64.mk
+++ b/libc/arch-mips64/mips64.mk
@@ -42,7 +42,6 @@ libc_bionic_src_files_mips64 := \
arch-mips64/bionic/__bionic_clone.S \
arch-mips64/bionic/_exit_with_stack_teardown.S \
arch-mips64/bionic/__get_sp.S \
- arch-mips64/bionic/getdents.cpp \
arch-mips64/bionic/memcmp16.S \
arch-mips64/bionic/_setjmp.S \
arch-mips64/bionic/setjmp.S \
diff --git a/libc/arch-mips64/syscalls/__getdents.S b/libc/arch-mips64/syscalls/__getdents.S
deleted file mode 100644
index 0a70a72..0000000
--- a/libc/arch-mips64/syscalls/__getdents.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
-ENTRY(__getdents)
- .set push
- .set noreorder
- li v0, __NR_getdents
- syscall
- bnez a3, 1f
- move a0, v0
- j ra
- nop
-1:
- move t0, ra
- bal 2f
- nop
-2:
- .cpsetup ra, t1, 2b
- LA t9,__set_errno
- .cpreturn
- j t9
- move ra, t0
- .set pop
-END(__getdents)
-.hidden __getdents
diff --git a/libc/arch-x86/bionic/__bionic_clone.S b/libc/arch-x86/bionic/__bionic_clone.S
index 0c0feff..917dc68 100644
--- a/libc/arch-x86/bionic/__bionic_clone.S
+++ b/libc/arch-x86/bionic/__bionic_clone.S
@@ -39,7 +39,7 @@ ENTRY(__bionic_clone)
.L_bc_child:
# We don't want anyone to unwind past this point.
.cfi_undefined %eip
- call __bionic_clone_entry
+ call __start_thread
hlt
.L_bc_parent:
diff --git a/libc/arch-x86/syscalls/getdents.S b/libc/arch-x86/syscalls/__getdents64.S
index 0627532..3fc8719 100644
--- a/libc/arch-x86/syscalls/getdents.S
+++ b/libc/arch-x86/syscalls/__getdents64.S
@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
-ENTRY(getdents)
+ENTRY(__getdents64)
pushl %ebx
.cfi_def_cfa_offset 8
.cfi_rel_offset ebx, 0
@@ -28,4 +28,4 @@ ENTRY(getdents)
popl %ecx
popl %ebx
ret
-END(getdents)
+END(__getdents64)
diff --git a/libc/arch-x86_64/bionic/__bionic_clone.S b/libc/arch-x86_64/bionic/__bionic_clone.S
index 173ab5c..e0ce5a6 100644
--- a/libc/arch-x86_64/bionic/__bionic_clone.S
+++ b/libc/arch-x86_64/bionic/__bionic_clone.S
@@ -62,12 +62,12 @@ ENTRY(__bionic_clone)
.cfi_undefined %rip
.cfi_undefined %rbp
- # We're in the child now, so call __bionic_clone_entry
+ # We're in the child now, so call __start_thread
# with the arguments from the child stack moved into
# the appropriate registers.
popq %rdi # fn
popq %rsi # arg
- call __bionic_clone_entry
+ call __start_thread
hlt
.L_bc_parent:
diff --git a/libc/arch-x86_64/syscalls/getdents.S b/libc/arch-x86_64/syscalls/__getdents64.S
index 15e0f7e..64f82fd 100644
--- a/libc/arch-x86_64/syscalls/getdents.S
+++ b/libc/arch-x86_64/syscalls/__getdents64.S
@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
-ENTRY(getdents)
+ENTRY(__getdents64)
movl $__NR_getdents64, %eax
syscall
cmpq $-MAX_ERRNO, %rax
@@ -12,4 +12,5 @@ ENTRY(getdents)
call __set_errno
1:
ret
-END(getdents)
+END(__getdents64)
+.hidden __getdents64
diff --git a/libc/bionic/assert.cpp b/libc/bionic/assert.cpp
index ba67143..985fc38 100644
--- a/libc/bionic/assert.cpp
+++ b/libc/bionic/assert.cpp
@@ -34,10 +34,12 @@
void __assert(const char* file, int line, const char* failed_expression) {
__libc_fatal("%s:%d: assertion \"%s\" failed", file, line, failed_expression);
- /* NOTREACHED */
}
void __assert2(const char* file, int line, const char* function, const char* failed_expression) {
__libc_fatal("%s:%d: %s: assertion \"%s\" failed", file, line, function, failed_expression);
- /* NOTREACHED */
+}
+
+extern "C" __LIBC_HIDDEN__ void longjmperror() {
+ __libc_fatal("longjmp botch");
}
diff --git a/libc/bionic/clone.cpp b/libc/bionic/clone.cpp
index d38a422..001e245 100644
--- a/libc/bionic/clone.cpp
+++ b/libc/bionic/clone.cpp
@@ -35,7 +35,7 @@ extern "C" pid_t __bionic_clone(uint32_t flags, void* child_stack, int* parent_t
extern "C" __noreturn void __exit(int status);
// Called from the __bionic_clone assembler to call the thread function then exit.
-extern "C" __LIBC_HIDDEN__ void __bionic_clone_entry(int (*fn)(void*), void* arg) {
+extern "C" __LIBC_HIDDEN__ void __start_thread(int (*fn)(void*), void* arg) {
int status = (*fn)(arg);
__exit(status);
}
diff --git a/libc/bionic/dirent.cpp b/libc/bionic/dirent.cpp
index 0f9b26a..7abc7f3 100644
--- a/libc/bionic/dirent.cpp
+++ b/libc/bionic/dirent.cpp
@@ -37,6 +37,8 @@
#include "private/ErrnoRestorer.h"
#include "private/ScopedPthreadMutexLocker.h"
+extern "C" int __getdents64(unsigned int, dirent*, unsigned int);
+
struct DIR {
int fd_;
size_t available_bytes_;
@@ -81,7 +83,7 @@ DIR* opendir(const char* path) {
}
static bool __fill_DIR(DIR* d) {
- int rc = TEMP_FAILURE_RETRY(getdents(d->fd_, d->buff_, sizeof(d->buff_)));
+ int rc = TEMP_FAILURE_RETRY(__getdents64(d->fd_, d->buff_, sizeof(d->buff_)));
if (rc <= 0) {
return false;
}
diff --git a/libc/bionic/dlmalloc.h b/libc/bionic/dlmalloc.h
index 482fe0e..e065687 100644
--- a/libc/bionic/dlmalloc.h
+++ b/libc/bionic/dlmalloc.h
@@ -32,15 +32,10 @@
#define USE_SPIN_LOCKS 0
#define DEFAULT_MMAP_THRESHOLD (64U * 1024U)
-__BEGIN_DECLS
-
/* Export two symbols used by the VM. */
+__BEGIN_DECLS
int dlmalloc_trim(size_t) __LIBC_ABI_PUBLIC__;
void dlmalloc_inspect_all(void (*handler)(void*, void*, size_t, void*), void*) __LIBC_ABI_PUBLIC__;
-
-/* NVIDIA's libglcore.so has a reference to dlmalloc_usable_size. TODO: remove this. */
-size_t dlmalloc_usable_size(const void*) __LIBC_ABI_PUBLIC__;
-
__END_DECLS
/* Include the proper definitions. */
diff --git a/libc/bionic/md5.c b/libc/bionic/md5.c
deleted file mode 100644
index ba4aaed..0000000
--- a/libc/bionic/md5.c
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * Copyright (c) 1995 - 2001 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden).
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the Institute nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-
-__RCSID("$Heimdal: md5.c,v 1.15 2001/01/29 04:33:44 assar Exp $"
- "$NetBSD: md5.c,v 1.1.1.4 2002/09/12 12:41:42 joda Exp $");
-#endif
-
-#include <endian.h>
-#include "md5.h"
-#include "hash.h"
-
-#define A m->counter[0]
-#define B m->counter[1]
-#define C m->counter[2]
-#define D m->counter[3]
-#define X data
-
-void
-MD5_Init (struct md5 *m)
-{
- m->sz[0] = 0;
- m->sz[1] = 0;
- D = 0x10325476;
- C = 0x98badcfe;
- B = 0xefcdab89;
- A = 0x67452301;
-}
-
-#define F(x,y,z) CRAYFIX((x & y) | (~x & z))
-#define G(x,y,z) CRAYFIX((x & z) | (y & ~z))
-#define H(x,y,z) (x ^ y ^ z)
-#define I(x,y,z) CRAYFIX(y ^ (x | ~z))
-
-#define DOIT(a,b,c,d,k,s,i,OP) \
-a = b + cshift(a + OP(b,c,d) + X[k] + (i), s)
-
-#define DO1(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,F)
-#define DO2(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,G)
-#define DO3(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,H)
-#define DO4(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,I)
-
-static inline void
-calc (struct md5 *m, u_int32_t *data)
-{
- u_int32_t AA, BB, CC, DD;
-
- AA = A;
- BB = B;
- CC = C;
- DD = D;
-
- /* Round 1 */
-
- DO1(A,B,C,D,0,7,0xd76aa478);
- DO1(D,A,B,C,1,12,0xe8c7b756);
- DO1(C,D,A,B,2,17,0x242070db);
- DO1(B,C,D,A,3,22,0xc1bdceee);
-
- DO1(A,B,C,D,4,7,0xf57c0faf);
- DO1(D,A,B,C,5,12,0x4787c62a);
- DO1(C,D,A,B,6,17,0xa8304613);
- DO1(B,C,D,A,7,22,0xfd469501);
-
- DO1(A,B,C,D,8,7,0x698098d8);
- DO1(D,A,B,C,9,12,0x8b44f7af);
- DO1(C,D,A,B,10,17,0xffff5bb1);
- DO1(B,C,D,A,11,22,0x895cd7be);
-
- DO1(A,B,C,D,12,7,0x6b901122);
- DO1(D,A,B,C,13,12,0xfd987193);
- DO1(C,D,A,B,14,17,0xa679438e);
- DO1(B,C,D,A,15,22,0x49b40821);
-
- /* Round 2 */
-
- DO2(A,B,C,D,1,5,0xf61e2562);
- DO2(D,A,B,C,6,9,0xc040b340);
- DO2(C,D,A,B,11,14,0x265e5a51);
- DO2(B,C,D,A,0,20,0xe9b6c7aa);
-
- DO2(A,B,C,D,5,5,0xd62f105d);
- DO2(D,A,B,C,10,9,0x2441453);
- DO2(C,D,A,B,15,14,0xd8a1e681);
- DO2(B,C,D,A,4,20,0xe7d3fbc8);
-
- DO2(A,B,C,D,9,5,0x21e1cde6);
- DO2(D,A,B,C,14,9,0xc33707d6);
- DO2(C,D,A,B,3,14,0xf4d50d87);
- DO2(B,C,D,A,8,20,0x455a14ed);
-
- DO2(A,B,C,D,13,5,0xa9e3e905);
- DO2(D,A,B,C,2,9,0xfcefa3f8);
- DO2(C,D,A,B,7,14,0x676f02d9);
- DO2(B,C,D,A,12,20,0x8d2a4c8a);
-
- /* Round 3 */
-
- DO3(A,B,C,D,5,4,0xfffa3942);
- DO3(D,A,B,C,8,11,0x8771f681);
- DO3(C,D,A,B,11,16,0x6d9d6122);
- DO3(B,C,D,A,14,23,0xfde5380c);
-
- DO3(A,B,C,D,1,4,0xa4beea44);
- DO3(D,A,B,C,4,11,0x4bdecfa9);
- DO3(C,D,A,B,7,16,0xf6bb4b60);
- DO3(B,C,D,A,10,23,0xbebfbc70);
-
- DO3(A,B,C,D,13,4,0x289b7ec6);
- DO3(D,A,B,C,0,11,0xeaa127fa);
- DO3(C,D,A,B,3,16,0xd4ef3085);
- DO3(B,C,D,A,6,23,0x4881d05);
-
- DO3(A,B,C,D,9,4,0xd9d4d039);
- DO3(D,A,B,C,12,11,0xe6db99e5);
- DO3(C,D,A,B,15,16,0x1fa27cf8);
- DO3(B,C,D,A,2,23,0xc4ac5665);
-
- /* Round 4 */
-
- DO4(A,B,C,D,0,6,0xf4292244);
- DO4(D,A,B,C,7,10,0x432aff97);
- DO4(C,D,A,B,14,15,0xab9423a7);
- DO4(B,C,D,A,5,21,0xfc93a039);
-
- DO4(A,B,C,D,12,6,0x655b59c3);
- DO4(D,A,B,C,3,10,0x8f0ccc92);
- DO4(C,D,A,B,10,15,0xffeff47d);
- DO4(B,C,D,A,1,21,0x85845dd1);
-
- DO4(A,B,C,D,8,6,0x6fa87e4f);
- DO4(D,A,B,C,15,10,0xfe2ce6e0);
- DO4(C,D,A,B,6,15,0xa3014314);
- DO4(B,C,D,A,13,21,0x4e0811a1);
-
- DO4(A,B,C,D,4,6,0xf7537e82);
- DO4(D,A,B,C,11,10,0xbd3af235);
- DO4(C,D,A,B,2,15,0x2ad7d2bb);
- DO4(B,C,D,A,9,21,0xeb86d391);
-
- A += AA;
- B += BB;
- C += CC;
- D += DD;
-}
-
-/*
- * From `Performance analysis of MD5' by Joseph D. Touch <touch@isi.edu>
- */
-#if !defined(__BYTE_ORDER) || !defined (__BIG_ENDIAN)
-#error __BYTE_ORDER macros not defined
-#endif
-
-#if __BYTE_ORDER == __BIG_ENDIAN
-static inline u_int32_t
-swap_u_int32_t (u_int32_t t)
-{
- u_int32_t temp1, temp2;
-
- temp1 = cshift(t, 16);
- temp2 = temp1 >> 8;
- temp1 &= 0x00ff00ff;
- temp2 &= 0x00ff00ff;
- temp1 <<= 8;
- return temp1 | temp2;
-}
-#endif
-
-struct x32{
- unsigned int a:32;
- unsigned int b:32;
-};
-
-void
-MD5_Update (struct md5 *m, const void *v, size_t len)
-{
- const unsigned char *p = v;
- size_t old_sz = m->sz[0];
- size_t offset;
-
- m->sz[0] += len * 8;
- if (m->sz[0] < old_sz)
- ++m->sz[1];
- offset = (old_sz / 8) % 64;
- while(len > 0){
- size_t l = min(len, 64 - offset);
- memcpy(m->save + offset, p, l);
- offset += l;
- p += l;
- len -= l;
- if(offset == 64){
-#if __BYTE_ORDER == __BIG_ENDIAN
- int i;
- u_int32_t current[16];
- struct x32 *u = (struct x32*)m->save;
- for(i = 0; i < 8; i++){
- current[2*i+0] = swap_u_int32_t(u[i].a);
- current[2*i+1] = swap_u_int32_t(u[i].b);
- }
- calc(m, current);
-#else
- calc(m, (u_int32_t*)m->save);
-#endif
- offset = 0;
- }
- }
-}
-
-void
-MD5_Final (void *res, struct md5 *m)
-{
- unsigned char zeros[72];
- unsigned offset = (m->sz[0] / 8) % 64;
- unsigned int dstart = (120 - offset - 1) % 64 + 1;
-
- *zeros = 0x80;
- memset (zeros + 1, 0, sizeof(zeros) - 1);
- zeros[dstart+0] = (m->sz[0] >> 0) & 0xff;
- zeros[dstart+1] = (m->sz[0] >> 8) & 0xff;
- zeros[dstart+2] = (m->sz[0] >> 16) & 0xff;
- zeros[dstart+3] = (m->sz[0] >> 24) & 0xff;
- zeros[dstart+4] = (m->sz[1] >> 0) & 0xff;
- zeros[dstart+5] = (m->sz[1] >> 8) & 0xff;
- zeros[dstart+6] = (m->sz[1] >> 16) & 0xff;
- zeros[dstart+7] = (m->sz[1] >> 24) & 0xff;
- MD5_Update (m, zeros, dstart + 8);
- {
- int i;
- unsigned char *r = (unsigned char *)res;
-
- for (i = 0; i < 4; ++i) {
- r[4*i] = m->counter[i] & 0xFF;
- r[4*i+1] = (m->counter[i] >> 8) & 0xFF;
- r[4*i+2] = (m->counter[i] >> 16) & 0xFF;
- r[4*i+3] = (m->counter[i] >> 24) & 0xFF;
- }
- }
-#if 0
- {
- int i;
- u_int32_t *r = (u_int32_t *)res;
-
- for (i = 0; i < 4; ++i)
- r[i] = swap_u_int32_t (m->counter[i]);
- }
-#endif
-}
diff --git a/libc/bionic/md5.h b/libc/bionic/md5.h
deleted file mode 100644
index a381994..0000000
--- a/libc/bionic/md5.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1995 - 2001 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden).
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the Institute nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/* $Heimdal: md5.h,v 1.8 2001/01/29 02:08:57 assar Exp $
- $NetBSD: md5.h,v 1.1.1.4 2002/09/12 12:41:42 joda Exp $ */
-
-#include <stdlib.h>
-#include <sys/types.h>
-
-struct md5 {
- unsigned int sz[2];
- u_int32_t counter[4];
- unsigned char save[64];
-};
-
-typedef struct md5 MD5_CTX;
-
-void MD5_Init (struct md5 *m);
-void MD5_Update (struct md5 *m, const void *p, size_t len);
-void MD5_Final (void *res, struct md5 *m); /* u_int32_t res[4] */
diff --git a/libc/bionic/ndk_cruft.cpp b/libc/bionic/ndk_cruft.cpp
index cb9c9c9..15a3206 100644
--- a/libc/bionic/ndk_cruft.cpp
+++ b/libc/bionic/ndk_cruft.cpp
@@ -30,6 +30,7 @@
#if !defined(__LP64__)
#include <ctype.h>
+#include <dirent.h>
#include <inttypes.h>
#include <pthread.h>
#include <signal.h>
@@ -238,4 +239,15 @@ extern "C" sighandler_t sysv_signal(int signum, sighandler_t handler) {
return _signal(signum, handler, SA_RESETHAND);
}
+// This is a system call that was never in POSIX. Use readdir(3) instead.
+extern "C" int __getdents64(unsigned int, dirent*, unsigned int);
+extern "C" int getdents(unsigned int fd, dirent* dirp, unsigned int count) {
+ return __getdents64(fd, dirp, count);
+}
+
+// This is a BSDism that we never implemented correctly. Used by Firefox.
+extern "C" int issetugid() {
+ return 0;
+}
+
#endif
diff --git a/libc/include/dirent.h b/libc/include/dirent.h
index 71eb2e7..a849a61 100644
--- a/libc/include/dirent.h
+++ b/libc/include/dirent.h
@@ -75,7 +75,6 @@ extern int alphasort(const struct dirent**, const struct dirent**);
extern int alphasort64(const struct dirent64**, const struct dirent64**);
extern int scandir(const char*, struct dirent***, int (*)(const struct dirent*), int (*)(const struct dirent**, const struct dirent**));
extern int scandir64(const char*, struct dirent64***, int (*)(const struct dirent64*), int (*)(const struct dirent64**, const struct dirent64**));
-extern int getdents(unsigned int, struct dirent*, unsigned int);
__END_DECLS
diff --git a/libc/include/limits.h b/libc/include/limits.h
index dc45902..fb09657 100644
--- a/libc/include/limits.h
+++ b/libc/include/limits.h
@@ -112,7 +112,7 @@
#define SSIZE_MAX LONG_MAX
-#define MB_LEN_MAX 6
+#define MB_LEN_MAX 4
/* New code should use sysconf(_SC_PAGE_SIZE) instead. */
#ifndef PAGE_SIZE
diff --git a/libc/include/setjmp.h b/libc/include/setjmp.h
index 68fdcef..02b06f5 100644
--- a/libc/include/setjmp.h
+++ b/libc/include/setjmp.h
@@ -50,7 +50,6 @@ __BEGIN_DECLS
int _setjmp(jmp_buf);
void _longjmp(jmp_buf, int);
-void longjmperror(void);
int setjmp(jmp_buf);
void longjmp(jmp_buf, int);
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index 834dcda..483aaf0 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -167,7 +167,7 @@ extern int mbtowc(wchar_t *, const char *, size_t);
extern int wctomb(char *, wchar_t);
extern size_t wcstombs(char *, const wchar_t *, size_t);
-#define MB_CUR_MAX 1
+#define MB_CUR_MAX 4U
#if 0 /* MISSING FROM BIONIC */
extern int on_exit(void (*)(int, void *), void *);
diff --git a/libc/include/syslog.h b/libc/include/syslog.h
index 4677c14..a52e811 100644
--- a/libc/include/syslog.h
+++ b/libc/include/syslog.h
@@ -25,6 +25,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
#ifndef _SYSLOG_H
#define _SYSLOG_H
@@ -34,7 +35,6 @@
__BEGIN_DECLS
-/* Alert levels */
#define LOG_EMERG 0
#define LOG_ALERT 1
#define LOG_CRIT 2
@@ -47,8 +47,6 @@ __BEGIN_DECLS
#define LOG_PRIMASK 7
#define LOG_PRI(x) ((x) & LOG_PRIMASK)
-
-/* Facilities; not actually used */
#define LOG_KERN 0000
#define LOG_USER 0010
#define LOG_MAIL 0020
@@ -73,30 +71,15 @@ __BEGIN_DECLS
#define LOG_FACMASK 01770
#define LOG_FAC(x) (((x) >> 3) & (LOG_FACMASK >> 3))
-#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
-#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
-
-/* openlog() flags; only LOG_PID and LOG_PERROR supported */
-#define LOG_PID 0x01 /* include pid with message */
-#define LOG_CONS 0x02 /* write to console on logger error */
-#define LOG_ODELAY 0x04 /* delay connection until syslog() */
-#define LOG_NDELAY 0x08 /* open connection immediately */
-#define LOG_NOWAIT 0x10 /* wait for child processes (unused on linux) */
-#define LOG_PERROR 0x20 /* additional logging to stderr */
-
-/* BIONIC: the following definitions are from OpenBSD's sys/syslog.h
- */
-struct syslog_data {
- int log_file;
- int connected;
- int opened;
- int log_stat;
- const char *log_tag;
- int log_fac;
- int log_mask;
-};
+#define LOG_MASK(pri) (1 << (pri))
+#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1)
-#define SYSLOG_DATA_INIT {-1, 0, 0, 0, (const char *)0, LOG_USER, 0xff}
+#define LOG_PID 0x01 /* include pid with message */
+#define LOG_CONS 0x02 /* write to console on logger error */
+#define LOG_ODELAY 0x04 /* delay connection until syslog() */
+#define LOG_NDELAY 0x08 /* open connection immediately */
+#define LOG_NOWAIT 0x10 /* wait for child processes (unused on linux) */
+#define LOG_PERROR 0x20 /* additional logging to stderr */
#define _PATH_LOG "/dev/syslog"
@@ -105,11 +88,6 @@ extern void openlog(const char *, int, int);
extern int setlogmask(int);
extern void syslog(int, const char *, ...) __printflike(2, 3);
extern void vsyslog(int, const char *, va_list) __printflike(2, 0);
-extern void closelog_r(struct syslog_data *);
-extern void openlog_r(const char *, int, int, struct syslog_data *);
-extern int setlogmask_r(int, struct syslog_data *);
-extern void syslog_r(int, struct syslog_data *, const char *, ...) __printflike(3, 4);
-extern void vsyslog_r(int, struct syslog_data *, const char *, va_list) __printflike(3, 0);
__END_DECLS
diff --git a/libc/kernel/README.TXT b/libc/kernel/README.TXT
index e4c11a1..0edbcc6 100644
--- a/libc/kernel/README.TXT
+++ b/libc/kernel/README.TXT
@@ -1,93 +1,47 @@
-Bionic comes with a set of 'clean' Linux kernel headers that can safely be
-included by userland applications and libraries without fear of hideous
-conflicts. for more information why this is needed, see the "RATIONALE"
-section at the end of this document.
-
-these clean headers are automatically generated by several scripts located
-in the 'bionic/kernel/tools' directory, which process a set of original
-and unmodified kernel headers in order to get rid of many annoying
+Bionic comes with a processed set of all of the uapi Linux kernel headers that
+can safely be included by userland applications and libraries.
+
+These clean headers are automatically generated by several scripts located
+in the 'bionic/kernel/tools' directory. The tools process the original
+unmodified kernel headers in order to get rid of many annoying
declarations and constructs that usually result in compilation failure.
-the 'clean headers' only contain type and macro definitions, with the
+The 'clean headers' only contain type and macro definitions, with the
exception of a couple static inline functions used for performance
-reason (e.g. optimized CPU-specific byte-swapping routines)
+reason (e.g. optimized CPU-specific byte-swapping routines).
-they can be included from C++, or when compiling code in strict ANSI mode.
-they can be also included before or after any Bionic C library header.
+They can be included from C++, or when compiling code in strict ANSI mode.
+They can be also included before or after any Bionic C library header.
-the generation process works as follows:
+Description of the directories involved in generating the parsed kernel headers:
* 'external/kernel-headers/original/'
- contains a set of kernel headers as normally found in the 'include'
- directory of a normal Linux kernel source tree. note that this should
- only contain the files that are really needed by Android (use
- 'find_headers.py' to find these automatically).
-
- * 'bionic/libc/kernel/common'
- contains the non-arch-specific clean headers and directories
- (e.g. linux, asm-generic and mtd)
-
- * 'bionic/libc/kernel/arch-arm/'
- contains the ARM-specific directory tree of clean headers.
-
- * 'bionic/libc/kernel/arch-arm/asm'
- contains the real ARM-specific headers
-
- * 'bionic/libc/kernel/arch-x86'
- 'bionic/libc/kernel/arch-x86/asm'
- similarly contains all headers and symlinks to be used on x86
+ Contains the uapi kernel headers found in the android kernel. Note this
+ also includes the header files that are generated by building the kernel
+ sources.
- * 'bionic/libc/kernel/tools' contains various Python and shell scripts used
- to manage and re-generate the headers
+ * 'bionic/libc/kernel/uapi'
+ Contains the cleaned kernel headers and mirrors the directory structure
+ in 'external/kernel-headers/original/uapi/'.
-the tools you can use are:
+ * 'bionic/libc/kernel/tools'
+ Contains various Python and shell scripts used to get and re-generate
+ the headers.
- * tools/find_users.py
- scans a list of source files or directories and prints which ones do
- include Linux headers.
+The tools to get/parse the headers:
- * tools/find_headers.py
- scans a list of source files or directories and recursively finds all
- the original kernel headers they need.
+ * tools/generate_uapi_headers.sh
+ Checks out the android kernel and generates all uapi header files.
+ copies all the changed files into external/kernel-headers.
* tools/clean_header.py
- prints the clean version of a given kernel header. with the -u option,
+ Prints the clean version of a given kernel header. With the -u option,
this will also update the corresponding clean header file if its
- content has changed. you can also process more than one file with -u
+ content has changed. You can also process more than one file with -u.
* tools/update_all.py
- automatically update all clean headers from the content of
- 'external/kernel-headers/original'. this is the script you're likely going to
- run whenever you update the original headers.
-
-
-HOW TO BUILD BIONIC AND OTHER PROGRAMS WITH THE CLEAN HEADERS:
-==============================================================
-
-add bionic/kernel/common and bionic/kernel/arch-<yourarch> to your C
-include path. that should be enough. Note that Bionic will not compile properly
-if you don't.
-
-
-HOW TO SUPPORT ANOTHER ARCHITECTURE:
-====================================
-
-see the content of tools/defaults.py, you will need to make a few updates
-here:
-
- - add a new item to the 'kernel_archs' list of supported architectures
-
- - add a proper definition for 'kernel_known_<arch>_statics' with
- relevant definitions.
-
- - update 'kernel_known_statics' to map "<arch>" to
- 'kernel_known_<arch>_statics'
-
-then, add the new architecture-specific headers to original/asm-<arch>.
-(please ensure that these are really needed, e.g. with tools/find_headers.py)
-
-finally, run tools/update_all.py
-
+ Automatically update all clean headers from the content of
+ 'external/kernel-headers/original'.
HOW TO UPDATE THE HEADERS WHEN NEEDED:
@@ -99,81 +53,13 @@ IMPORTANT IMPORTANT:
NOT BREAK THE KERNEL <-> USER ABI, FOR EXAMPLE BY CHANGING THE SIZE
OF A GIVEN TYPE. THIS TASK CANNOT BE EASILY AUTOMATED AT THE MOMENT
-copy any updated kernel header into the corresponding location under
-'bionic/kernel/original'.
-
-for any new kernel header you want to add, first run tools/find_headers.py to be
-sure that it is really needed by the Android sources. then add it to
-'bionic/kernel/original'
-
-then, run tools/update_all.py to re-run the auto-cleaning
-
-
-
-HOW THE CLEANUP PROCESS WORKS:
-==============================
-
-this section describes the action performed by the cleanup program(s) when they
-process the original kernel headers into clean ones:
-
-1. Optimize well-known macros (e.g. __KERNEL__, __KERNEL_STRICT_NAMES)
-
- this pass gets rid of everything that is guarded by a well-known macro
- definition. this means that a block like
-
- #ifdef __KERNEL__
- ....
- #endif
-
- will be totally omitted from the output. the optimizer is smart enough to
- handle all complex C-preprocessor conditional expression appropriately.
- this means that, for example:
-
- #if defined(__KERNEL__) || defined(FOO)
- ...
- #endif
-
- will be transformed into:
-
- #ifdef FOO
- ...
- #endif
-
- see tools/defaults.py for the list of well-known macros used in this pass,
- in case you need to update it in the future.
-
- note that this also remove any reference to a kernel-specific configuration
- macro like CONFIG_FOO from the clean headers.
-
-
-2. remove variable and function declarations:
-
- this pass scans non-directive text and only keeps things that look like a
- typedef/struct/union/enum declaration. this allows to get rid of any variable
- or function declaration that should only be used within the kernel anyway
- (and which normally *should* be guarded in a #ifdef __KERNEL__ ... #endif
- block, if the kernel writers were not so messy)
-
- there are however a few exceptions: it is seldom useful to keep the definition
- of some static inline functions performing very simple operations. a good
- example is the optimized 32-bit byte-swap function found in
- arch-arm/asm/byteorder.h
-
- the list of exceptions is in tools/defaults.py in case you need to update it
- in the future.
-
- note that we do *not* remove macro definitions, including these macro that
- perform a call to one of these kernel-header functions, or even define other
- functions. we consider it safe since userland applications have no business
- using them anyway.
-
-
-3. whitespace cleanup:
+Grab the latest headers from the android kernel by running this command:
- the final pass remove any comments and empty lines from the final headers.
+ bionic/kernel/tools/generate_uapi_headers.sh --download-kernel
+Next, run this command to copy the parsed files to bionic/libc/kernel/uapi:
-4. add a standard disclaimer:
+ bionic/kernel/tools/update_all.py
- prepended to each generated header, contains a message like
- "do not edit directly - file was auto-generated by ...."
+After this, you will need to build/test the tree to make sure that these
+changes do not introduce any errors.
diff --git a/libc/kernel/tools/clean_header.py b/libc/kernel/tools/clean_header.py
index 238087b..6601817 100755
--- a/libc/kernel/tools/clean_header.py
+++ b/libc/kernel/tools/clean_header.py
@@ -1,5 +1,78 @@
#!/usr/bin/env python
+
+#------------------------------------------------------------------------------
+# Description of the header clean process
+#------------------------------------------------------------------------------
+# Here is the list of actions performed by this script to clean the original
+# kernel headers.
+#
+# 1. Optimize well-known macros (e.g. __KERNEL__, __KERNEL_STRICT_NAMES)
+#
+# This pass gets rid of everything that is guarded by a well-known macro
+# definition. This means that a block like:
+#
+# #ifdef __KERNEL__
+# ....
+# #endif
+#
+# Will be totally omitted from the output. The optimizer is smart enough to
+# handle all complex C-preprocessor conditional expression appropriately.
+# This means that, for example:
+#
+# #if defined(__KERNEL__) || defined(FOO)
+# ...
+# #endif
+#
+# Will be transformed into:
+#
+# #ifdef FOO
+# ...
+# #endif
+#
+# See tools/defaults.py for the list of well-known macros used in this pass,
+# in case you need to update it in the future.
+#
+# Note that this also removes any reference to a kernel-specific
+# configuration macro like CONFIG_FOO from the clean headers.
+#
+#
+# 2. Remove variable and function declarations:
+#
+# This pass scans non-directive text and only keeps things that look like a
+# typedef/struct/union/enum declaration. This allows us to get rid of any
+# variables or function declarations that should only be used within the
+# kernel anyway (and which normally *should* be guarded by an #ifdef
+# __KERNEL__ ... #endif block, if the kernel writers were not so messy).
+#
+# There are, however, a few exceptions: it is seldom useful to keep the
+# definition of some static inline functions performing very simple
+# operations. A good example is the optimized 32-bit byte-swap function
+# found in:
+#
+# arch-arm/asm/byteorder.h
+#
+# The list of exceptions is in tools/defaults.py in case you need to update
+# it in the future.
+#
+# Note that we do *not* remove macro definitions, including these macro that
+# perform a call to one of these kernel-header functions, or even define other
+# functions. We consider it safe since userland applications have no business
+# using them anyway.
+#
+#
+# 3. Whitespace cleanup:
+#
+# The final pass removes any comments and empty lines from the final headers.
+#
+#
+# 4. Add a standard disclaimer:
+#
+# The message:
+#
+# /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#
+# Is prepended to each generated header.
+#------------------------------------------------------------------------------
import sys, cpp, kernel, glob, os, re, getopt
from defaults import *
diff --git a/libc/kernel/tools/find_headers.py b/libc/kernel/tools/find_headers.py
deleted file mode 100755
index 9b3572a..0000000
--- a/libc/kernel/tools/find_headers.py
+++ /dev/null
@@ -1,170 +0,0 @@
-#!/usr/bin/env python
-#
-# this program is used to find source code that includes linux kernel headers directly
-# (e.g. with #include <linux/...> or #include <asm/...>)
-#
-# then it lists them on the standard output.
-
-import sys, cpp, glob, os, re, getopt, kernel
-from utils import *
-from defaults import *
-
-program_dir = find_program_dir()
-
-wanted_archs = kernel_archs
-wanted_config = None
-
-def usage():
- print """\
- usage: find_headers.py [options] <kernel-root> (file|directory|@listfile)+
-
- options:
- -c <file> specify .config file (none by default)
-
- -a <archs> used to specify an alternative list
- of architectures to support
- ('%s' by default)
-
- -v enable verbose mode
-
- this program is used to find all the kernel headers that are used
- by a set of source files or directories containing them. the search
- is recursive to find *all* required files.
-
-""" % ( string.join(kernel_archs,",") )
- sys.exit(1)
-
-
-try:
- optlist, args = getopt.getopt( sys.argv[1:], 'vc:d:a:k:' )
-except:
- # unrecognized option
- print "error: unrecognized option"
- usage()
-
-for opt, arg in optlist:
- if opt == '-a':
- wanted_archs = string.split(arg,',')
- elif opt == '-c':
- wanted_config = arg
- elif opt == '-v':
- kernel.verboseSearch = 1
- kernel.verboseFind = 1
- verbose = 1
- else:
- usage()
-
-if len(args) < 2:
- usage()
-
-kernel_root = args[0]
-if not os.path.exists(kernel_root):
- sys.stderr.write( "error: directory '%s' does not exist\n" % kernel_root )
- sys.exit(1)
-
-if not os.path.isdir(kernel_root):
- sys.stderr.write( "error: '%s' is not a directory\n" % kernel_root )
- sys.exit(1)
-
-if not os.path.isdir(kernel_root+"/include/linux"):
- sys.stderr.write( "error: '%s' does not have an 'include/linux' directory\n" % kernel_root )
- sys.exit(1)
-
-if wanted_config:
- if not os.path.exists(wanted_config):
- sys.stderr.write( "error: file '%s' does not exist\n" % wanted_config )
- sys.exit(1)
-
- if not os.path.isfile(wanted_config):
- sys.stderr.write( "error: '%s' is not a file\n" % wanted_config )
- sys.exit(1)
-
-# find all architectures in the kernel tree
-archs = []
-for archdir in os.listdir(kernel_root+"/arch"):
- if os.path.exists("%s/arch/%s/include/asm" % (kernel_root, archdir)):
- if verbose:
- print "Found arch '%s'" % archdir
- archs.append(archdir)
-
-# if we're using the 'kernel_headers' directory, there is only asm/
-# and no other asm-<arch> directories
-#
-in_kernel_headers = False
-if len(archs) == 0:
- # this can happen when we're using the 'kernel_headers' directory
- if os.path.isdir(kernel_root+"/asm"):
- in_kernel_headers = True
- archs = [ "arm", "mips"]
-
-# if the user has specified some architectures with -a <archs> ensure that
-# all those he wants are available from the kernel include tree
-if wanted_archs != None:
- if in_kernel_headers and wanted_archs != [ "arm", "mips" ]:
- sys.stderr.write( "error: when parsing kernel_headers, only 'arm' and 'mips' architectures are supported at the moment\n" )
- sys.exit(1)
- missing = []
- for arch in wanted_archs:
- if arch not in archs:
- missing.append(arch)
- if len(missing) > 0:
- sys.stderr.write( "error: the following requested architectures are not in the kernel tree: " )
- for a in missing:
- sys.stderr.write( " %s" % a )
- sys.stderr.write( "\n" )
- sys.exit(1)
-
- archs = wanted_archs
-
-# helper function used to walk the user files
-def parse_file(path, parser):
- #print "parse %s" % path
- parser.parseFile(path)
-
-
-# remove previous destination directory
-#destdir = "/tmp/bionic-kernel-headers/"
-#cleanup_dir(destdir)
-
-# try to read the config file
-try:
- cparser = kernel.ConfigParser()
- if wanted_config:
- cparser.parseFile( wanted_config )
-except:
- sys.stderr.write( "error: can't parse '%s'" % wanted_config )
- sys.exit(1)
-
-kernel_config = cparser.getDefinitions()
-
-# first, obtain the list of kernel files used by our clients
-fparser = kernel.HeaderScanner()
-dir_excludes=[".repo","external/kernel-headers","ndk","out","prebuilt","bionic/libc/kernel","development/ndk","external/qemu/distrib"]
-walk_source_files( args[1:], parse_file, fparser, excludes=["./"+f for f in dir_excludes] )
-headers = fparser.getHeaders()
-files = fparser.getFiles()
-
-# now recursively scan the kernel headers for additionnal sub-included headers
-hparser = kernel.KernelHeaderFinder(headers,archs,kernel_root,kernel_config)
-headers = hparser.scanForAllArchs()
-
-if 0: # just for debugging
- dumpHeaderUsers = False
-
- print "the following %d headers:" % len(headers)
- for h in sorted(headers):
- if dumpHeaderUsers:
- print " %s (%s)" % (h, repr(hparser.getHeaderUsers(h)))
- else:
- print " %s" % h
-
- print "are used by the following %d files:" % len(files)
- for f in sorted(files):
- print " %s" % f
-
- sys.exit(0)
-
-for h in sorted(headers):
- print "%s" % h
-
-sys.exit(0)
diff --git a/libc/kernel/tools/find_users.py b/libc/kernel/tools/find_users.py
deleted file mode 100755
index 5ee308c..0000000
--- a/libc/kernel/tools/find_users.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env python
-#
-# this program is used to find source code that includes linux kernel headers directly
-# (e.g. with #include <linux/...> or #include <asm/...>)
-#
-# then it lists
-
-import sys, cpp, glob, os, re, getopt
-import kernel
-from utils import *
-from defaults import *
-
-
-def usage():
- print """\
- usage: find_users.py [-v] (file|directory|@listfile)+
-
- this program is used to scan a list of files or directories for
- sources that include kernel headers directly. the program prints
- the list of said source files when it's done.
-
- when scanning directories, only files matching the following
- extension will be searched: .c .cpp .S .h
-
- use -v to enable verbose output
-"""
- sys.exit(1)
-
-
-try:
- optlist, args = getopt.getopt( sys.argv[1:], 'v' )
-except:
- # unrecognized option
- print "error: unrecognized option"
- usage()
-
-for opt, arg in optlist:
- if opt == '-v':
- kernel.verboseSearch = 1
- kernel.verboseFind = 1
- else:
- usage()
-
-if len(args) < 1:
- usage()
-
-# helper function used to walk the user files
-def parse_file(path, parser):
- parser.parseFile(path)
-
-
-# first, obtain the list of kernel files used by our clients
-# avoid parsing the 'kernel_headers' directory itself since we
-# use this program with the Android source tree by default.
-#
-fparser = kernel.HeaderScanner()
-walk_source_files( args, parse_file, fparser, excludes=["kernel_headers","original"] )
-files = fparser.getFiles()
-
-for f in sorted(files):
- print f
-
-sys.exit(0)
diff --git a/libc/tools/check-symbols-glibc.py b/libc/tools/check-symbols-glibc.py
index 913b20b..d0e00f3 100755
--- a/libc/tools/check-symbols-glibc.py
+++ b/libc/tools/check-symbols-glibc.py
@@ -96,7 +96,11 @@ linux_stuff = set([
])
# Some standard stuff isn't yet in the versions of glibc we're using.
std_stuff = set([
- 'at_quick_exit'
+ 'at_quick_exit',
+ 'c16rtomb',
+ 'c32rtomb',
+ 'mbrtoc16',
+ 'mbrtoc32',
])
# These have mangled names in glibc, with a macro taking the "obvious" name.
weird_stuff = set([
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index a34b763..96583d6 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -95,20 +95,9 @@ END(%(func)s)
#
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
-
mov x8, %(__NR_name)s
svc #0
- 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
b.hi __set_errno
diff --git a/libc/unistd/syslog.c b/libc/unistd/syslog.c
index 7878475..339df68 100644
--- a/libc/unistd/syslog.c
+++ b/libc/unistd/syslog.c
@@ -44,6 +44,18 @@
#include <unistd.h>
#include <stdarg.h>
+struct syslog_data {
+ int log_file;
+ int connected;
+ int opened;
+ int log_stat;
+ const char* log_tag;
+ int log_fac;
+ int log_mask;
+};
+
+#define SYSLOG_DATA_INIT {-1, 0, 0, 0, (const char *)0, LOG_USER, 0xff}
+
static struct syslog_data sdata = SYSLOG_DATA_INIT;
extern const char *__progname; /* Program name, from crt0. */
@@ -51,6 +63,18 @@ extern const char *__progname; /* Program name, from crt0. */
static void disconnectlog_r(struct syslog_data *); /* disconnect from syslogd */
static void connectlog_r(struct syslog_data *); /* (re)connect to syslogd */
+#if defined(__LP64__)
+#define SYSLOG_R_VISIBILITY static
+#else
+#define SYSLOG_R_VISIBILITY extern
+#endif
+
+SYSLOG_R_VISIBILITY void closelog_r(struct syslog_data*);
+SYSLOG_R_VISIBILITY void openlog_r(const char*, int, int, struct syslog_data*);
+SYSLOG_R_VISIBILITY int setlogmask_r(int, struct syslog_data*);
+SYSLOG_R_VISIBILITY void syslog_r(int, struct syslog_data*, const char*, ...) __printflike(3, 4);
+SYSLOG_R_VISIBILITY void vsyslog_r(int, struct syslog_data*, const char*, va_list) __printflike(3, 0);
+
/*
* syslog, vsyslog --
* print message on log file; output is intended for syslogd(8).
@@ -157,7 +181,7 @@ vsyslog_r(int pri, struct syslog_data *data, const char *fmt, va_list ap)
prlen = snprintf(p, tbuf_left, "<%d>", pri);
DEC();
- /*
+ /*
* syslogd will expand time automagically for reentrant case, and
* for normal case, just do like before
*/
@@ -196,10 +220,10 @@ vsyslog_r(int pri, struct syslog_data *data, const char *fmt, va_list ap)
++fmt;
if (data == &sdata) {
prlen = snprintf(t, fmt_left, "%s",
- strerror(saved_errno));
+ strerror(saved_errno));
} else {
prlen = snprintf(t, fmt_left, "Error %d",
- saved_errno);
+ saved_errno);
}
if (prlen < 0)
prlen = 0;
@@ -269,7 +293,7 @@ vsyslog_r(int pri, struct syslog_data *data, const char *fmt, va_list ap)
if (error == -1 && (data->log_stat & LOG_CONS) &&
(fd = open(_PATH_CONSOLE, O_WRONLY|O_NONBLOCK, 0)) >= 0) {
struct iovec iov[2];
-
+
p = strchr(tbuf, '>') + 1;
iov[0].iov_base = p;
iov[0].iov_len = cnt - (p - tbuf);
diff --git a/libc/upstream-netbsd/android/include/rand48.h b/libc/upstream-netbsd/android/include/rand48.h
index 1ad8b0d..1279906 100644
--- a/libc/upstream-netbsd/android/include/rand48.h
+++ b/libc/upstream-netbsd/android/include/rand48.h
@@ -18,10 +18,10 @@
#include <stdlib.h>
-extern void __dorand48(unsigned short[3]);
-extern unsigned short __rand48_seed[3];
-extern unsigned short __rand48_mult[3];
-extern unsigned short __rand48_add;
+__LIBC_HIDDEN__ void __dorand48(unsigned short[3]);
+__LIBC_HIDDEN__ unsigned short __rand48_seed[3];
+__LIBC_HIDDEN__ unsigned short __rand48_mult[3];
+__LIBC_HIDDEN__ unsigned short __rand48_add;
#define RAND48_SEED_0 (0x330e)
#define RAND48_SEED_1 (0xabcd)
diff --git a/libc/upstream-netbsd/lib/libc/gen/setjmperr.c b/libc/upstream-netbsd/lib/libc/gen/setjmperr.c
deleted file mode 100644
index 5b1432e..0000000
--- a/libc/upstream-netbsd/lib/libc/gen/setjmperr.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* $NetBSD: setjmperr.c,v 1.8 2012/06/24 15:26:03 christos Exp $ */
-
-/*
- * Copyright (c) 1980, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
-#if 0
-static char sccsid[] = "@(#)setjmperr.c 8.1 (Berkeley) 6/4/93";
-#else
-__RCSID("$NetBSD: setjmperr.c,v 1.8 2012/06/24 15:26:03 christos Exp $");
-#endif
-#endif /* LIBC_SCCS and not lint */
-
-/*
- * This routine is called from longjmp() when an error occurs.
- * Programs that wish to exit gracefully from this error may
- * write their own versions.
- * If this routine returns, the program is aborted.
- */
-
-#include <setjmp.h>
-#include <unistd.h>
-
-void
-longjmperror(void)
-{
-#define ERRMSG "longjmp botch.\n"
- (void)write(STDERR_FILENO, ERRMSG, sizeof(ERRMSG) - 1);
-}
diff --git a/libm/amd64/fenv.c b/libm/amd64/fenv.c
index b058de2..4b24ff9 100755
--- a/libm/amd64/fenv.c
+++ b/libm/amd64/fenv.c
@@ -30,6 +30,15 @@
#include <fenv.h>
#include <machine/fpu.h>
+#define SSE_MASK_SHIFT 7
+
+/*
+ * The following symbol is simply the bitwise-inclusive OR of all floating-point
+ * rounding direction constants defined above.
+ */
+#define X87_ROUND_MASK (FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO)
+#define SSE_ROUND_SHIFT 3
+
/*
* The following constant represents the default floating-point environment
* (that is, the one installed at program startup) and has type pointer to
@@ -203,7 +212,7 @@ fegetround(void)
*/
__asm__ __volatile__ ("fnstcw %0" : "=m" (control));
- return (control & _X87_ROUND_MASK);
+ return (control & X87_ROUND_MASK);
}
/*
@@ -218,14 +227,14 @@ fesetround(int round)
unsigned int mxcsr;
/* Check whether requested rounding direction is supported */
- if (round & ~_X87_ROUND_MASK)
+ if (round & ~X87_ROUND_MASK)
return (-1);
/* Store the current x87 control word register */
__asm__ __volatile__ ("fnstcw %0" : "=m" (control));
/* Set the rounding direction */
- control &= ~_X87_ROUND_MASK;
+ control &= ~X87_ROUND_MASK;
control |= round;
/* Load the x87 control word register */
@@ -233,8 +242,8 @@ fesetround(int round)
/* Same for the SSE environment */
__asm__ __volatile__ ("stmxcsr %0" : "=m" (mxcsr));
- mxcsr &= ~(_X87_ROUND_MASK << _SSE_ROUND_SHIFT);
- mxcsr |= round << _SSE_ROUND_SHIFT;
+ mxcsr &= ~(X87_ROUND_MASK << SSE_ROUND_SHIFT);
+ mxcsr |= round << SSE_ROUND_SHIFT;
__asm__ __volatile__ ("ldmxcsr %0" : : "m" (mxcsr));
return (0);
@@ -291,7 +300,7 @@ feholdexcept(fenv_t *envp)
mxcsr &= ~FE_ALL_EXCEPT;
/* Mask all exceptions */
- mxcsr |= FE_ALL_EXCEPT << _SSE_MASK_SHIFT;
+ mxcsr |= FE_ALL_EXCEPT << SSE_MASK_SHIFT;
/* Store the MXCSR register */
__asm__ __volatile__ ("ldmxcsr %0" : : "m" (mxcsr));
@@ -362,11 +371,11 @@ feenableexcept(int mask)
__asm__ __volatile__ ("fnstcw %0" : "=m" (control));
__asm__ __volatile__ ("stmxcsr %0" : "=m" (mxcsr));
- omask = ~(control | (mxcsr >> _SSE_MASK_SHIFT)) & FE_ALL_EXCEPT;
+ omask = ~(control | (mxcsr >> SSE_MASK_SHIFT)) & FE_ALL_EXCEPT;
control &= ~mask;
__asm__ __volatile__ ("fldcw %0" : : "m" (control));
- mxcsr &= ~(mask << _SSE_MASK_SHIFT);
+ mxcsr &= ~(mask << SSE_MASK_SHIFT);
__asm__ __volatile__ ("ldmxcsr %0" : : "m" (mxcsr));
return (omask);
@@ -383,11 +392,11 @@ fedisableexcept(int mask)
__asm__ __volatile__ ("fnstcw %0" : "=m" (control));
__asm__ __volatile__ ("stmxcsr %0" : "=m" (mxcsr));
- omask = ~(control | (mxcsr >> _SSE_MASK_SHIFT)) & FE_ALL_EXCEPT;
+ omask = ~(control | (mxcsr >> SSE_MASK_SHIFT)) & FE_ALL_EXCEPT;
control |= mask;
__asm__ __volatile__ ("fldcw %0" : : "m" (control));
- mxcsr |= mask << _SSE_MASK_SHIFT;
+ mxcsr |= mask << SSE_MASK_SHIFT;
__asm__ __volatile__ ("ldmxcsr %0" : : "m" (mxcsr));
return (omask);
diff --git a/libm/arm/fenv.c b/libm/arm/fenv.c
index a0108e8..2124730 100644
--- a/libm/arm/fenv.c
+++ b/libm/arm/fenv.c
@@ -28,10 +28,11 @@
#include <fenv.h>
-/*
- * Hopefully the system ID byte is immutable, so it's valid to use
- * this as a default environment.
- */
+#define FPSCR_ENABLE_SHIFT 8
+#define FPSCR_ENABLE_MASK (FE_ALL_EXCEPT << FPSCR_ENABLE_SHIFT)
+
+#define FPSCR_RMODE_SHIFT 22
+
const fenv_t __fe_dfl_env = 0;
int fegetenv(fenv_t* __envp) {
@@ -86,14 +87,14 @@ int fetestexcept(int __excepts) {
int fegetround(void) {
fenv_t _fpscr;
fegetenv(&_fpscr);
- return ((_fpscr >> _FPSCR_RMODE_SHIFT) & 0x3);
+ return ((_fpscr >> FPSCR_RMODE_SHIFT) & 0x3);
}
int fesetround(int __round) {
fenv_t _fpscr;
fegetenv(&_fpscr);
- _fpscr &= ~(0x3 << _FPSCR_RMODE_SHIFT);
- _fpscr |= (__round << _FPSCR_RMODE_SHIFT);
+ _fpscr &= ~(0x3 << FPSCR_RMODE_SHIFT);
+ _fpscr |= (__round << FPSCR_RMODE_SHIFT);
fesetenv(&_fpscr);
return 0;
}
@@ -102,7 +103,7 @@ int feholdexcept(fenv_t* __envp) {
fenv_t __env;
fegetenv(&__env);
*__envp = __env;
- __env &= ~(FE_ALL_EXCEPT | _FPSCR_ENABLE_MASK);
+ __env &= ~(FE_ALL_EXCEPT | FPSCR_ENABLE_MASK);
fesetenv(&__env);
return 0;
}
@@ -118,21 +119,21 @@ int feupdateenv(const fenv_t* __envp) {
int feenableexcept(int __mask) {
fenv_t __old_fpscr, __new_fpscr;
fegetenv(&__old_fpscr);
- __new_fpscr = __old_fpscr | (__mask & FE_ALL_EXCEPT) << _FPSCR_ENABLE_SHIFT;
+ __new_fpscr = __old_fpscr | (__mask & FE_ALL_EXCEPT) << FPSCR_ENABLE_SHIFT;
fesetenv(&__new_fpscr);
- return ((__old_fpscr >> _FPSCR_ENABLE_SHIFT) & FE_ALL_EXCEPT);
+ return ((__old_fpscr >> FPSCR_ENABLE_SHIFT) & FE_ALL_EXCEPT);
}
int fedisableexcept(int __mask) {
fenv_t __old_fpscr, __new_fpscr;
fegetenv(&__old_fpscr);
- __new_fpscr = __old_fpscr & ~((__mask & FE_ALL_EXCEPT) << _FPSCR_ENABLE_SHIFT);
+ __new_fpscr = __old_fpscr & ~((__mask & FE_ALL_EXCEPT) << FPSCR_ENABLE_SHIFT);
fesetenv(&__new_fpscr);
- return ((__old_fpscr >> _FPSCR_ENABLE_SHIFT) & FE_ALL_EXCEPT);
+ return ((__old_fpscr >> FPSCR_ENABLE_SHIFT) & FE_ALL_EXCEPT);
}
int fegetexcept(void) {
fenv_t __fpscr;
fegetenv(&__fpscr);
- return ((__fpscr & _FPSCR_ENABLE_MASK) >> _FPSCR_ENABLE_SHIFT);
+ return ((__fpscr & FPSCR_ENABLE_MASK) >> FPSCR_ENABLE_SHIFT);
}
diff --git a/libm/arm64/fenv.c b/libm/arm64/fenv.c
index 9db21ef..ce560a7 100644
--- a/libm/arm64/fenv.c
+++ b/libm/arm64/fenv.c
@@ -28,114 +28,168 @@
#include <fenv.h>
-/*
- * Hopefully the system ID byte is immutable, so it's valid to use
- * this as a default environment.
- */
-const fenv_t __fe_dfl_env = 0;
+#define FPCR_EXCEPT_SHIFT 8
+#define FPCR_EXCEPT_MASK (FE_ALL_EXCEPT << FPCR_EXCEPT_SHIFT)
+
+#define FPCR_RMODE_SHIFT 22
+
+const fenv_t __fe_dfl_env = { 0 /* control */, 0 /* status */};
+
+typedef __uint32_t fpu_control_t; // FPCR, Floating-point Control Register.
+typedef __uint32_t fpu_status_t; // FPSR, Floating-point Status Register.
+
+#define __get_fpcr(__fpcr) __asm__ __volatile__("mrs %0,fpcr" : "=r" (__fpcr))
+#define __get_fpsr(__fpsr) __asm__ __volatile__("mrs %0,fpsr" : "=r" (__fpsr))
+#define __set_fpcr(__fpcr) __asm__ __volatile__("msr fpcr,%0" : :"ri" (__fpcr))
+#define __set_fpsr(__fpsr) __asm__ __volatile__("msr fpsr,%0" : :"ri" (__fpsr))
-int fegetenv(fenv_t* __envp) {
- fenv_t _fpcr, _fpsr;
- __asm__ __volatile__("mrs %0,fpcr" : "=r" (_fpcr));
- __asm__ __volatile__("mrs %0,fpsr" : "=r" (_fpsr));
- *__envp = (_fpcr | _fpsr);
+int fegetenv(fenv_t* envp) {
+ __get_fpcr(envp->__control);
+ __get_fpsr(envp->__status);
return 0;
}
-int fesetenv(const fenv_t* __envp) {
- fenv_t _fpcr = (*__envp & FPCR_MASK);
- fenv_t _fpsr = (*__envp & FPSR_MASK);
- __asm__ __volatile__("msr fpcr,%0" : :"ri" (_fpcr));
- __asm__ __volatile__("msr fpsr,%0" : :"ri" (_fpsr));
+int fesetenv(const fenv_t* envp) {
+ fpu_control_t fpcr;
+
+ __get_fpcr(fpcr);
+ if (envp->__control != fpcr) {
+ __set_fpcr(envp->__control);
+ }
+ __set_fpsr(envp->__status);
return 0;
}
-int feclearexcept(int __excepts) {
- fexcept_t __fpscr;
- fegetenv(&__fpscr);
- __fpscr &= ~__excepts;
- fesetenv(&__fpscr);
+int feclearexcept(int excepts) {
+ fpu_status_t fpsr;
+
+ excepts &= FE_ALL_EXCEPT;
+ __get_fpsr(fpsr);
+ fpsr &= ~excepts;
+ __set_fpsr(fpsr);
return 0;
}
-int fegetexceptflag(fexcept_t* __flagp, int __excepts) {
- fexcept_t __fpscr;
- fegetenv(&__fpscr);
- *__flagp = __fpscr & __excepts;
+int fegetexceptflag(fexcept_t* flagp, int excepts) {
+ fpu_status_t fpsr;
+
+ excepts &= FE_ALL_EXCEPT;
+ __get_fpsr(fpsr);
+ *flagp = fpsr & excepts;
return 0;
}
-int fesetexceptflag(const fexcept_t* __flagp, int __excepts) {
- fexcept_t __fpscr;
- fegetenv(&__fpscr);
- __fpscr &= ~__excepts;
- __fpscr |= *__flagp & __excepts;
- fesetenv(&__fpscr);
+int fesetexceptflag(const fexcept_t* flagp, int excepts) {
+ fpu_status_t fpsr;
+
+ excepts &= FE_ALL_EXCEPT;
+ __get_fpsr(fpsr);
+ fpsr &= ~excepts;
+ fpsr |= *flagp & excepts;
+ __set_fpsr(fpsr);
return 0;
}
-int feraiseexcept(int __excepts) {
- fexcept_t __ex = __excepts;
- fesetexceptflag(&__ex, __excepts);
+int feraiseexcept(int excepts) {
+ fexcept_t ex = excepts;
+
+ fesetexceptflag(&ex, excepts);
return 0;
}
-int fetestexcept(int __excepts) {
- fexcept_t __fpscr;
- fegetenv(&__fpscr);
- return (__fpscr & __excepts);
+int fetestexcept(int excepts) {
+ fpu_status_t fpsr;
+
+ excepts &= FE_ALL_EXCEPT;
+ __get_fpsr(fpsr);
+ return (fpsr & excepts);
}
int fegetround(void) {
- fenv_t _fpscr;
- fegetenv(&_fpscr);
- return ((_fpscr >> _FPSCR_RMODE_SHIFT) & 0x3);
+ fpu_control_t fpcr;
+
+ __get_fpcr(fpcr);
+ return ((fpcr >> FPCR_RMODE_SHIFT) & FE_TOWARDZERO);
}
-int fesetround(int __round) {
- fenv_t _fpscr;
- fegetenv(&_fpscr);
- _fpscr &= ~(0x3 << _FPSCR_RMODE_SHIFT);
- _fpscr |= (__round << _FPSCR_RMODE_SHIFT);
- fesetenv(&_fpscr);
+int fesetround(int round) {
+ fpu_control_t fpcr, new_fpcr;
+
+ round &= FE_TOWARDZERO;
+ __get_fpcr(fpcr);
+ new_fpcr = fpcr & ~(FE_TOWARDZERO << FPCR_RMODE_SHIFT);
+ new_fpcr |= (round << FPCR_RMODE_SHIFT);
+ if (new_fpcr != fpcr) {
+ __set_fpcr(new_fpcr);
+ }
return 0;
}
-int feholdexcept(fenv_t* __envp) {
- fenv_t __env;
- fegetenv(&__env);
- *__envp = __env;
- __env &= ~(FE_ALL_EXCEPT | _FPSCR_ENABLE_MASK);
- fesetenv(&__env);
+int feholdexcept(fenv_t* envp) {
+ fenv_t env;
+ fpu_status_t fpsr;
+ fpu_control_t fpcr, new_fpcr;
+
+ __get_fpsr(fpsr);
+ __get_fpcr(fpcr);
+ env.__status = fpsr;
+ env.__control = fpcr;
+ *envp = env;
+
+ // Set exceptions to untrapped.
+ new_fpcr = fpcr & ~(FE_ALL_EXCEPT << FPCR_EXCEPT_SHIFT);
+ if (new_fpcr != fpcr) {
+ __set_fpcr(new_fpcr);
+ }
+
+ // Clear all exceptions.
+ fpsr &= ~FE_ALL_EXCEPT;
+ __set_fpsr(fpsr);
return 0;
}
-int feupdateenv(const fenv_t* __envp) {
- fexcept_t __fpscr;
- fegetenv(&__fpscr);
- fesetenv(__envp);
- feraiseexcept(__fpscr & FE_ALL_EXCEPT);
+int feupdateenv(const fenv_t* envp) {
+ fpu_status_t fpsr;
+ fpu_control_t fpcr;
+
+ // Set FPU Control register.
+ __get_fpcr(fpcr);
+ if (envp->__control != fpcr) {
+ __set_fpcr(envp->__control);
+ }
+
+ // Set FPU Status register to status | currently raised exceptions.
+ __get_fpsr(fpsr);
+ fpsr = envp->__status | (fpsr & FE_ALL_EXCEPT);
+ __set_fpsr(fpsr);
return 0;
}
-int feenableexcept(int __mask) {
- fenv_t __old_fpscr, __new_fpscr;
- fegetenv(&__old_fpscr);
- __new_fpscr = __old_fpscr | (__mask & FE_ALL_EXCEPT) << _FPSCR_ENABLE_SHIFT;
- fesetenv(&__new_fpscr);
- return ((__old_fpscr >> _FPSCR_ENABLE_SHIFT) & FE_ALL_EXCEPT);
+int feenableexcept(int mask) {
+ fpu_control_t old_fpcr, new_fpcr;
+
+ __get_fpcr(old_fpcr);
+ new_fpcr = old_fpcr | ((mask & FE_ALL_EXCEPT) << FPCR_EXCEPT_SHIFT);
+ if (new_fpcr != old_fpcr) {
+ __set_fpcr(new_fpcr);
+ }
+ return ((old_fpcr >> FPCR_EXCEPT_SHIFT) & FE_ALL_EXCEPT);
}
-int fedisableexcept(int __mask) {
- fenv_t __old_fpscr, __new_fpscr;
- fegetenv(&__old_fpscr);
- __new_fpscr = __old_fpscr & ~((__mask & FE_ALL_EXCEPT) << _FPSCR_ENABLE_SHIFT);
- fesetenv(&__new_fpscr);
- return ((__old_fpscr >> _FPSCR_ENABLE_SHIFT) & FE_ALL_EXCEPT);
+int fedisableexcept(int mask) {
+ fpu_control_t old_fpcr, new_fpcr;
+
+ __get_fpcr(old_fpcr);
+ new_fpcr = old_fpcr & ~((mask & FE_ALL_EXCEPT) << FPCR_EXCEPT_SHIFT);
+ if (new_fpcr != old_fpcr) {
+ __set_fpcr(new_fpcr);
+ }
+ return ((old_fpcr >> FPCR_EXCEPT_SHIFT) & FE_ALL_EXCEPT);
}
int fegetexcept(void) {
- fenv_t __fpscr;
- fegetenv(&__fpscr);
- return ((__fpscr & _FPSCR_ENABLE_MASK) >> _FPSCR_ENABLE_SHIFT);
+ fpu_control_t fpcr;
+
+ __get_fpcr(fpcr);
+ return ((fpcr & FPCR_EXCEPT_MASK) >> FPCR_EXCEPT_SHIFT);
}
diff --git a/libm/i387/fenv.c b/libm/i387/fenv.c
index 3ab9c58..f64f8dc 100644
--- a/libm/i387/fenv.c
+++ b/libm/i387/fenv.c
@@ -31,6 +31,8 @@
#include "npx.h"
#include "fenv.h"
+#define ROUND_MASK (FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO)
+
/*
* As compared to the x87 control word, the SSE unit's control word
* has the rounding control bits offset by 3 and the exception mask
@@ -327,7 +329,7 @@ fegetround(void)
* unit on an Opteron 244.
*/
__fnstcw(&control);
- return (control & _ROUND_MASK);
+ return (control & ROUND_MASK);
}
int
@@ -336,16 +338,16 @@ fesetround(int round)
__uint32_t mxcsr;
__uint16_t control;
- if (round & ~_ROUND_MASK) {
+ if (round & ~ROUND_MASK) {
return (-1);
} else {
__fnstcw(&control);
- control &= ~_ROUND_MASK;
+ control &= ~ROUND_MASK;
control |= round;
__fldcw(control);
if (__HAS_SSE()) {
__stmxcsr(&mxcsr);
- mxcsr &= ~(_ROUND_MASK << _SSE_ROUND_SHIFT);
+ mxcsr &= ~(ROUND_MASK << _SSE_ROUND_SHIFT);
mxcsr |= round << _SSE_ROUND_SHIFT;
__ldmxcsr(mxcsr);
}
diff --git a/libm/include/amd64/machine/fenv.h b/libm/include/amd64/machine/fenv.h
index 79a4120..c2b25ed 100644
--- a/libm/include/amd64/machine/fenv.h
+++ b/libm/include/amd64/machine/fenv.h
@@ -51,7 +51,6 @@ __BEGIN_DECLS
*/
#define FE_ALL_EXCEPT (FE_INVALID | FE_DENORMAL | FE_DIVBYZERO | \
FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
-#define _SSE_MASK_SHIFT 7
/*
* Each symbol representing the rounding direction, expands to an integer
@@ -65,14 +64,6 @@ __BEGIN_DECLS
#define FE_TOWARDZERO 0xc00
/*
- * The following symbol is simply the bitwise-inclusive OR of all floating-point
- * rounding direction constants defined above.
- */
-#define _X87_ROUND_MASK (FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | \
- FE_TOWARDZERO)
-#define _SSE_ROUND_SHIFT 3
-
-/*
* fenv_t represents the entire floating-point environment.
*/
typedef struct {
diff --git a/libm/include/arm/machine/fenv.h b/libm/include/arm/machine/fenv.h
index d8749dd..0e483e3 100644
--- a/libm/include/arm/machine/fenv.h
+++ b/libm/include/arm/machine/fenv.h
@@ -52,17 +52,12 @@ typedef __uint32_t fexcept_t;
#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \
FE_OVERFLOW | FE_UNDERFLOW)
-#define _FPSCR_ENABLE_SHIFT 8
-#define _FPSCR_ENABLE_MASK (FE_ALL_EXCEPT << _FPSCR_ENABLE_SHIFT)
-
/* Rounding modes. */
#define FE_TONEAREST 0x0
#define FE_UPWARD 0x1
#define FE_DOWNWARD 0x2
#define FE_TOWARDZERO 0x3
-#define _FPSCR_RMODE_SHIFT 22
-
__END_DECLS
#endif /* !_ARM_FENV_H_ */
diff --git a/libm/include/arm64/machine/fenv.h b/libm/include/arm64/machine/fenv.h
index 2efeee3..a8568b8 100644
--- a/libm/include/arm64/machine/fenv.h
+++ b/libm/include/arm64/machine/fenv.h
@@ -27,15 +27,44 @@
*/
/*
- * Rewritten for Android.
+ * In ARMv8, AArch64 state, floating-point operation is controlled by:
*
- * The ARM FPSCR (Floating-point Status and Control Register) described here:
- * http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344b/Chdfafia.html
- * has been split into the FPCR (Floating-point Control Register) and FPSR
- * (Floating-point Status Register) on the ARMv8. These are described briefly in
- * "Procedure Call Standard for the ARM 64-bit Architecture"
- * http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055a/IHI0055A_aapcs64.pdf
- * section 5.1.2 SIMD and Floating-Point Registers
+ * * FPCR - 32Bit Floating-Point Control Register:
+ * * [31:27] - Reserved, Res0;
+ * * [26] - AHP, Alternative half-precision control bit;
+ * * [25] - DN, Default NaN mode control bit;
+ * * [24] - FZ, Flush-to-zero mode control bit;
+ * * [23:22] - RMode, Rounding Mode control field:
+ * * 00 - Round to Nearest (RN) mode;
+ * * 01 - Round towards Plus Infinity (RP) mode;
+ * * 10 - Round towards Minus Infinity (RM) mode;
+ * * 11 - Round towards Zero (RZ) mode.
+ * * [21:20] - Stride, ignored during AArch64 execution;
+ * * [19] - Reserved, Res0;
+ * * [18:16] - Len, ignored during AArch64 execution;
+ * * [15] - IDE, Input Denormal exception trap;
+ * * [14:13] - Reserved, Res0;
+ * * [12] - IXE, Inexact exception trap;
+ * * [11] - UFE, Underflow exception trap;
+ * * [10] - OFE, Overflow exception trap;
+ * * [9] - DZE, Division by Zero exception;
+ * * [8] - IOE, Invalid Operation exception;
+ * * [7:0] - Reserved, Res0.
+ *
+ * * FPSR - 32Bit Floating-Point Status Register:
+ * * [31] - N, Negative condition flag for AArch32 (AArch64 sets PSTATE.N);
+ * * [30] - Z, Zero condition flag for AArch32 (AArch64 sets PSTATE.Z);
+ * * [29] - C, Carry conditon flag for AArch32 (AArch64 sets PSTATE.C);
+ * * [28] - V, Overflow conditon flag for AArch32 (AArch64 sets PSTATE.V);
+ * * [27] - QC, Cumulative saturation bit, Advanced SIMD only;
+ * * [26:8] - Reserved, Res0;
+ * * [7] - IDC, Input Denormal cumulative exception;
+ * * [6:5] - Reserved, Res0;
+ * * [4] - IXC, Inexact cumulative exception;
+ * * [3] - UFC, Underflow cumulative exception;
+ * * [2] - OFC, Overflow cumulative exception;
+ * * [1] - DZC, Division by Zero cumulative exception;
+ * * [0] - IOC, Invalid Operation cumulative exception.
*/
#ifndef _ARM64_FENV_H_
@@ -45,7 +74,11 @@
__BEGIN_DECLS
-typedef __uint32_t fenv_t;
+typedef struct {
+ __uint32_t __control; /* FPCR, Floating-point Control Register */
+ __uint32_t __status; /* FPSR, Floating-point Status Register */
+} fenv_t;
+
typedef __uint32_t fexcept_t;
/* Exception flags. */
@@ -54,11 +87,9 @@ typedef __uint32_t fexcept_t;
#define FE_OVERFLOW 0x04
#define FE_UNDERFLOW 0x08
#define FE_INEXACT 0x10
+#define FE_DENORMAL 0x80
#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \
- FE_OVERFLOW | FE_UNDERFLOW)
-
-#define _FPSCR_ENABLE_SHIFT 8
-#define _FPSCR_ENABLE_MASK (FE_ALL_EXCEPT << _FPSCR_ENABLE_SHIFT)
+ FE_OVERFLOW | FE_UNDERFLOW | FE_DENORMAL)
/* Rounding modes. */
#define FE_TONEAREST 0x0
@@ -66,56 +97,6 @@ typedef __uint32_t fexcept_t;
#define FE_DOWNWARD 0x2
#define FE_TOWARDZERO 0x3
-#define _FPSCR_RMODE_SHIFT 22
-
-#define FPCR_IOE (1 << 8)
-#define FPCR_DZE (1 << 9)
-#define FPCR_OFE (1 << 10)
-#define FPCR_UFE (1 << 11)
-#define FPCR_IXE (1 << 12)
-#define FPCR_IDE (1 << 15)
-#define FPCR_LEN (7 << 16)
-#define FPCR_STRIDE (3 << 20)
-#define FPCR_RMODE (3 << 22)
-#define FPCR_FZ (1 << 24)
-#define FPCR_DN (1 << 25)
-#define FPCR_AHP (1 << 26)
-#define FPCR_MASK (FPCR_IOE | \
- FPCR_DZE | \
- FPCR_OFE | \
- FPCR_UFE | \
- FPCR_IXE | \
- FPCR_IDE | \
- FPCR_LEN | \
- FPCR_STRIDE | \
- FPCR_RMODE | \
- FPCR_FZ | \
- FPCR_DN | \
- FPCR_AHP )
-
-#define FPSR_IOC (1 << 0)
-#define FPSR_DZC (1 << 1)
-#define FPSR_OFC (1 << 2)
-#define FPSR_UFC (1 << 3)
-#define FPSR_IXC (1 << 4)
-#define FPSR_IDC (1 << 7)
-#define FPSR_QC (1 << 27)
-#define FPSR_V (1 << 28)
-#define FPSR_C (1 << 29)
-#define FPSR_Z (1 << 30)
-#define FPSR_N (1 << 31)
-#define FPSR_MASK (FPSR_IOC | \
- FPSR_DZC | \
- FPSR_OFC | \
- FPSR_UFC | \
- FPSR_IXC | \
- FPSR_IDC | \
- FPSR_QC | \
- FPSR_V | \
- FPSR_C | \
- FPSR_Z | \
- FPSR_N )
-
__END_DECLS
#endif /* !_ARM64_FENV_H_ */
diff --git a/libm/include/i387/machine/fenv.h b/libm/include/i387/machine/fenv.h
index f3fabb6..de45add 100644
--- a/libm/include/i387/machine/fenv.h
+++ b/libm/include/i387/machine/fenv.h
@@ -63,8 +63,6 @@ typedef __uint16_t fexcept_t;
#define FE_DOWNWARD 0x0400
#define FE_UPWARD 0x0800
#define FE_TOWARDZERO 0x0c00
-#define _ROUND_MASK (FE_TONEAREST | FE_DOWNWARD | \
- FE_UPWARD | FE_TOWARDZERO)
__END_DECLS
diff --git a/libm/include/mips/machine/fenv.h b/libm/include/mips/machine/fenv.h
index 37f0f9c..689e1cb 100644
--- a/libm/include/mips/machine/fenv.h
+++ b/libm/include/mips/machine/fenv.h
@@ -87,19 +87,12 @@ typedef __uint32_t fexcept_t;
#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \
FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
-#define _FCSR_CAUSE_SHIFT 10
-#define _ENABLE_SHIFT 5
-#define _FCSR_ENABLE_MASK (FE_ALL_EXCEPT << _ENABLE_SHIFT)
-
/* Rounding modes */
#define FE_TONEAREST 0x0000
#define FE_TOWARDZERO 0x0001
#define FE_UPWARD 0x0002
#define FE_DOWNWARD 0x0003
-#define _FCSR_RMODE_SHIFT 0
-#define _FCSR_RMASK 0x3
-
__END_DECLS
#endif /* !_MIPS_FENV_H_ */
diff --git a/libm/mips/fenv.c b/libm/mips/fenv.c
index 893bc30..aacd526 100644
--- a/libm/mips/fenv.c
+++ b/libm/mips/fenv.c
@@ -28,6 +28,12 @@
#include <fenv.h>
+#define FCSR_CAUSE_SHIFT 10
+#define FCSR_ENABLE_SHIFT 5
+#define FCSR_ENABLE_MASK (FE_ALL_EXCEPT << FCSR_ENABLE_SHIFT)
+
+#define FCSR_RMASK 0x3
+
/*
* Hopefully the system ID byte is immutable, so it's valid to use
* this as a default environment.
@@ -55,7 +61,7 @@ int feclearexcept(int __excepts) {
fexcept_t __fcsr;
fegetenv(&__fcsr);
__excepts &= FE_ALL_EXCEPT;
- __fcsr &= ~(__excepts | (__excepts << _FCSR_CAUSE_SHIFT));
+ __fcsr &= ~(__excepts | (__excepts << FCSR_CAUSE_SHIFT));
fesetenv(&__fcsr);
return 0;
}
@@ -84,7 +90,7 @@ int feraiseexcept(int __excepts) {
/* Ensure that flags are all legal */
__excepts &= FE_ALL_EXCEPT;
/* Cause bit needs to be set as well for generating the exception*/
- __fcsr |= __excepts | (__excepts << _FCSR_CAUSE_SHIFT);
+ __fcsr |= __excepts | (__excepts << FCSR_CAUSE_SHIFT);
fesetenv(&__fcsr);
return 0;
}
@@ -98,14 +104,14 @@ int fetestexcept(int __excepts) {
int fegetround(void) {
fenv_t _fcsr;
fegetenv(&_fcsr);
- return (_fcsr & _FCSR_RMASK);
+ return (_fcsr & FCSR_RMASK);
}
int fesetround(int __round) {
fenv_t _fcsr;
fegetenv(&_fcsr);
- _fcsr &= ~_FCSR_RMASK;
- _fcsr |= (__round & _FCSR_RMASK ) ;
+ _fcsr &= ~FCSR_RMASK;
+ _fcsr |= (__round & FCSR_RMASK);
fesetenv(&_fcsr);
return 0;
}
@@ -114,7 +120,7 @@ int feholdexcept(fenv_t* __envp) {
fenv_t __env;
fegetenv(&__env);
*__envp = __env;
- __env &= ~(FE_ALL_EXCEPT | _FCSR_ENABLE_MASK);
+ __env &= ~(FE_ALL_EXCEPT | FCSR_ENABLE_MASK);
fesetenv(&__env);
return 0;
}
@@ -130,21 +136,21 @@ int feupdateenv(const fenv_t* __envp) {
int feenableexcept(int __mask) {
fenv_t __old_fcsr, __new_fcsr;
fegetenv(&__old_fcsr);
- __new_fcsr = __old_fcsr | (__mask & FE_ALL_EXCEPT) << _ENABLE_SHIFT;
+ __new_fcsr = __old_fcsr | (__mask & FE_ALL_EXCEPT) << FCSR_ENABLE_SHIFT;
fesetenv(&__new_fcsr);
- return ((__old_fcsr >> _ENABLE_SHIFT) & FE_ALL_EXCEPT);
+ return ((__old_fcsr >> FCSR_ENABLE_SHIFT) & FE_ALL_EXCEPT);
}
int fedisableexcept(int __mask) {
fenv_t __old_fcsr, __new_fcsr;
fegetenv(&__old_fcsr);
- __new_fcsr = __old_fcsr & ~((__mask & FE_ALL_EXCEPT) << _ENABLE_SHIFT);
+ __new_fcsr = __old_fcsr & ~((__mask & FE_ALL_EXCEPT) << FCSR_ENABLE_SHIFT);
fesetenv(&__new_fcsr);
- return ((__old_fcsr >> _ENABLE_SHIFT) & FE_ALL_EXCEPT);
+ return ((__old_fcsr >> FCSR_ENABLE_SHIFT) & FE_ALL_EXCEPT);
}
int fegetexcept(void) {
fenv_t __fcsr;
fegetenv(&__fcsr);
- return ((__fcsr & _FCSR_ENABLE_MASK) >> _ENABLE_SHIFT);
+ return ((__fcsr & FCSR_ENABLE_MASK) >> FCSR_ENABLE_SHIFT);
}
diff --git a/tests/Android.build.mk b/tests/Android.build.mk
index c1a0f16..e65ec16 100644
--- a/tests/Android.build.mk
+++ b/tests/Android.build.mk
@@ -18,11 +18,19 @@ include $(CLEAR_VARS)
LOCAL_MODULE := $(module)
LOCAL_MODULE_TAGS := $(module_tag)
+ifeq ($(build_type),host)
+# Always make host multilib
+LOCAL_MULTILIB := both
+else
LOCAL_MULTILIB := $($(module)_multilib)
+endif
+
+ifneq ($(findstring LIBRARY, $(build_target)),LIBRARY)
ifeq ($(LOCAL_MULTILIB),both)
LOCAL_MODULE_STEM_32 := $(module)32
LOCAL_MODULE_STEM_64 := $(module)64
endif
+endif
LOCAL_CLANG := $($(module)_clang_$(build_type))
diff --git a/tests/Android.mk b/tests/Android.mk
index 25f8b2b..c2e76b6 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -258,27 +258,13 @@ include $(LOCAL_PATH)/Android.build.mk
# -----------------------------------------------------------------------------
# create symlink to libdlext_test.so for symlink test
# -----------------------------------------------------------------------------
-libdlext_origin := $(LOCAL_INSTALLED_MODULE)
-libdlext_sym := $(subst libdlext_test,libdlext_test_v2,$(libdlext_origin))
-$(libdlext_sym): $(libdlext_origin)
- @echo "Symlink: $@ -> $(notdir $<)"
- @mkdir -p $(dir $@)
- $(hide) ln -sf $(notdir $<) $@
-
-ALL_MODULES := \
- $(ALL_MODULES) $(libdlext_sym)
-
+# Use = instead of := to defer the evaluation of $@
+$(LOCAL_INSTALLED_MODULE): PRIVATE_POST_INSTALL_CMD = \
+ $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so
ifneq ($(TARGET_2ND_ARCH),)
# link 64 bit .so
-libdlext_origin := $(TARGET_OUT)/lib64/libdlext_test.so
-libdlext_sym := $(subst libdlext_test,libdlext_test_v2,$(libdlext_origin))
-$(libdlext_sym): $(libdlext_origin)
- @echo "Symlink: $@ -> $(notdir $<)"
- @mkdir -p $(dir $@)
- $(hide) ln -sf $(notdir $<) $@
-
-ALL_MODULES := \
- $(ALL_MODULES) $(libdlext_sym)
+$(TARGET_OUT)/lib64/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \
+ $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so
endif
libdlext_test_norelro_src_files := \
@@ -379,7 +365,7 @@ include $(LOCAL_PATH)/Android.build.mk
# cd bionic/tests; mm bionic-unit-tests-glibc-run
# -----------------------------------------------------------------------------
-ifeq ($(HOST_OS)-$(HOST_ARCH),linux-x86)
+ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64))
bionic-unit-tests-glibc_src_files := \
atexit_test.cpp \
diff --git a/tests/math_test.cpp b/tests/math_test.cpp
index b0d541a..b4f5b14 100644
--- a/tests/math_test.cpp
+++ b/tests/math_test.cpp
@@ -1295,3 +1295,18 @@ TEST(math, frexpf_public_bug_6697) {
float fr = frexpf(14.1f, &exp);
ASSERT_FLOAT_EQ(14.1f, scalbnf(fr, exp));
}
+
+TEST(math, exp2_STRICT_ALIGN_OpenBSD_bug) {
+ // OpenBSD/x86's libm had a bug here, but it was already fixed in FreeBSD:
+ // http://svnweb.FreeBSD.org/base/head/lib/msun/src/math_private.h?revision=240827&view=markup
+ ASSERT_DOUBLE_EQ(5.0, exp2(log2(5)));
+ ASSERT_FLOAT_EQ(5.0f, exp2f(log2f(5)));
+ ASSERT_DOUBLE_EQ(5.0L, exp2l(log2l(5)));
+}
+
+TEST(math, nextafterl_OpenBSD_bug) {
+ // OpenBSD/x86's libm had a bug here.
+ ASSERT_TRUE(nextafter(1.0, 0.0) - 1.0 < 0.0);
+ ASSERT_TRUE(nextafterf(1.0f, 0.0f) - 1.0f < 0.0f);
+ ASSERT_TRUE(nextafterl(1.0L, 0.0L) - 1.0L < 0.0L);
+}
diff --git a/tests/stdio_test.cpp b/tests/stdio_test.cpp
index 0ff85bf..e291f52 100644
--- a/tests/stdio_test.cpp
+++ b/tests/stdio_test.cpp
@@ -426,7 +426,26 @@ TEST(stdio, snprintf_negative_zero_5084292) {
EXPECT_STREQ("-0.000000", buf);
}
+TEST(stdio, snprintf_utf8_15439554) {
+ // http://b/15439554
+ char buf[BUFSIZ];
+
+ // 1-byte character.
+ snprintf(buf, sizeof(buf), "%dx%d", 1, 2);
+ EXPECT_STREQ("1x2", buf);
+ // 2-byte character.
+ snprintf(buf, sizeof(buf), "%d\xc2\xa2%d", 1, 2);
+ EXPECT_STREQ("1¢2", buf);
+ // 3-byte character.
+ snprintf(buf, sizeof(buf), "%d\xe2\x82\xac%d", 1, 2);
+ EXPECT_STREQ("1€2", buf);
+ // 4-byte character.
+ snprintf(buf, sizeof(buf), "%d\xf0\xa4\xad\xa2%d", 1, 2);
+ EXPECT_STREQ("1𤭢2", buf);
+}
+
TEST(stdio, fprintf_failures_7229520) {
+ // http://b/7229520
FILE* fp;
// Unbuffered case where the fprintf(3) itself fails.
diff --git a/tests/string_test.cpp b/tests/string_test.cpp
index c62f43b..67b3860 100644
--- a/tests/string_test.cpp
+++ b/tests/string_test.cpp
@@ -812,7 +812,7 @@ TEST(string, __memcmp16) {
int expected = (static_cast<unsigned short>(c1) - static_cast<unsigned short>(c2));
int actual = __memcmp16(state.ptr1, state.ptr2, (size_t) state.MAX_LEN);
- ASSERT_EQ(expected, actual);
+ ASSERT_EQ(signum(expected), signum(actual));
}
}
#else // __BIONIC__
diff --git a/tests/wchar_test.cpp b/tests/wchar_test.cpp
index e76026f..a5f5f63 100644
--- a/tests/wchar_test.cpp
+++ b/tests/wchar_test.cpp
@@ -449,3 +449,32 @@ TEST(wchar, wmemmove) {
wmemmove(wstr+5, wstr, sizeof(const_wstr)/sizeof(wchar_t) - 6);
EXPECT_STREQ(L"This This is a test of something or other", wstr);
}
+
+TEST(wchar, mbrtowc_15439554) {
+ // http://b/15439554
+ ASSERT_STREQ("C.UTF-8", setlocale(LC_CTYPE, "C.UTF-8"));
+ uselocale(LC_GLOBAL_LOCALE);
+
+ ASSERT_GE(static_cast<size_t>(MB_LEN_MAX), MB_CUR_MAX);
+ ASSERT_GE(MB_CUR_MAX, 4U);
+
+ wchar_t wc;
+ size_t n;
+
+ // 1-byte character.
+ n = mbrtowc(&wc, "x", MB_CUR_MAX, NULL);
+ EXPECT_EQ(1U, n);
+ EXPECT_EQ(L'x', wc);
+ // 2-byte character.
+ n = mbrtowc(&wc, "\xc2\xa2", MB_CUR_MAX, NULL);
+ EXPECT_EQ(2U, n);
+ EXPECT_EQ(L'¢', wc);
+ // 3-byte character.
+ n = mbrtowc(&wc, "\xe2\x82\xac", MB_CUR_MAX, NULL);
+ EXPECT_EQ(3U, n);
+ EXPECT_EQ(L'€', wc);
+ // 4-byte character.
+ n = mbrtowc(&wc, "\xf0\xa4\xad\xa2", MB_CUR_MAX, NULL);
+ EXPECT_EQ(4U, n);
+ EXPECT_EQ(L'𤭢', wc);
+}