Merge "When comparing DNS server configs, also compare number of servers"
diff --git a/libc/Android.mk b/libc/Android.mk
index 72ea6ed..d277551 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -38,8 +38,6 @@
# =========================================================
libc_common_src_files := \
bionic/bindresvport.c \
- bionic/daemon.c \
- bionic/err.c \
bionic/ether_aton.c \
bionic/ether_ntoa.c \
bionic/fts.c \
@@ -62,6 +60,7 @@
bionic/system_properties_compat.c \
stdio/snprintf.c\
stdio/sprintf.c \
+ stdio/stdio_ext.cpp \
# Fortify implementations of libc functions.
libc_common_src_files += \
@@ -103,8 +102,6 @@
bionic/__cmsg_nxthdr.cpp \
bionic/connect.cpp \
bionic/ctype.cpp \
- bionic/__cxa_guard.cpp \
- bionic/__cxa_pure_virtual.cpp \
bionic/dirent.cpp \
bionic/dup2.cpp \
bionic/epoll_create.cpp \
@@ -124,6 +121,7 @@
bionic/getpgrp.cpp \
bionic/getpid.cpp \
bionic/gettid.cpp \
+ bionic/__gnu_basename.cpp \
bionic/inotify_init.cpp \
bionic/lchown.cpp \
bionic/lfs64_support.cpp \
@@ -135,6 +133,7 @@
bionic/link.cpp \
bionic/locale.cpp \
bionic/lstat.cpp \
+ bionic/malloc_info.cpp \
bionic/mbrtoc16.cpp \
bionic/mbrtoc32.cpp \
bionic/mbstate.cpp \
@@ -143,7 +142,6 @@
bionic/mknod.cpp \
bionic/mntent.cpp \
bionic/NetdClientDispatch.cpp \
- bionic/new.cpp \
bionic/open.cpp \
bionic/pause.cpp \
bionic/pipe.cpp \
@@ -231,6 +229,11 @@
bionic/wchar.cpp \
bionic/wctype.cpp \
+libc_cxa_src_files := \
+ bionic/__cxa_guard.cpp \
+ bionic/__cxa_pure_virtual.cpp \
+ bionic/new.cpp \
+
libc_upstream_freebsd_src_files := \
upstream-freebsd/lib/libc/gen/ldexp.c \
upstream-freebsd/lib/libc/gen/sleep.c \
@@ -333,6 +336,9 @@
upstream-openbsd/lib/libc/crypt/arc4random_uniform.c \
upstream-openbsd/lib/libc/gen/alarm.c \
upstream-openbsd/lib/libc/gen/ctype_.c \
+ upstream-openbsd/lib/libc/gen/daemon.c \
+ upstream-openbsd/lib/libc/gen/err.c \
+ upstream-openbsd/lib/libc/gen/errx.c \
upstream-openbsd/lib/libc/gen/exec.c \
upstream-openbsd/lib/libc/gen/fnmatch.c \
upstream-openbsd/lib/libc/gen/ftok.c \
@@ -342,6 +348,12 @@
upstream-openbsd/lib/libc/gen/time.c \
upstream-openbsd/lib/libc/gen/tolower_.c \
upstream-openbsd/lib/libc/gen/toupper_.c \
+ upstream-openbsd/lib/libc/gen/verr.c \
+ upstream-openbsd/lib/libc/gen/verrx.c \
+ upstream-openbsd/lib/libc/gen/vwarn.c \
+ upstream-openbsd/lib/libc/gen/vwarnx.c \
+ upstream-openbsd/lib/libc/gen/warn.c \
+ upstream-openbsd/lib/libc/gen/warnx.c \
upstream-openbsd/lib/libc/locale/btowc.c \
upstream-openbsd/lib/libc/locale/mbrlen.c \
upstream-openbsd/lib/libc/locale/mbstowcs.c \
@@ -387,6 +399,7 @@
upstream-openbsd/lib/libc/stdio/fgetws.c \
upstream-openbsd/lib/libc/stdio/fileno.c \
upstream-openbsd/lib/libc/stdio/findfp.c \
+ upstream-openbsd/lib/libc/stdio/fmemopen.c \
upstream-openbsd/lib/libc/stdio/fprintf.c \
upstream-openbsd/lib/libc/stdio/fpurge.c \
upstream-openbsd/lib/libc/stdio/fputc.c \
@@ -415,6 +428,8 @@
upstream-openbsd/lib/libc/stdio/getwchar.c \
upstream-openbsd/lib/libc/stdio/makebuf.c \
upstream-openbsd/lib/libc/stdio/mktemp.c \
+ upstream-openbsd/lib/libc/stdio/open_memstream.c \
+ upstream-openbsd/lib/libc/stdio/open_wmemstream.c \
upstream-openbsd/lib/libc/stdio/perror.c \
upstream-openbsd/lib/libc/stdio/printf.c \
upstream-openbsd/lib/libc/stdio/putc.c \
@@ -500,7 +515,10 @@
libc_common_cflags += -DTARGET_USES_LOGD
endif
-use_clang := false
+use_clang := $(USE_CLANG_PLATFORM_BUILD)
+ifeq ($(use_clang),)
+ use_clang := false
+endif
# Try to catch typical 32-bit assumptions that break with 64-bit pointers.
libc_common_cflags += \
@@ -636,7 +654,13 @@
upstream-netbsd/lib/libc/isc/ev_timers.c \
upstream-netbsd/lib/libc/resolv/mtctxres.c \
-LOCAL_CFLAGS := \
+# We use the OpenBSD res_random.
+LOCAL_CFLAGS += \
+ -Dres_randomid=__res_randomid
+LOCAL_SRC_FILES += \
+ upstream-openbsd/lib/libc/net/res_random.c \
+
+LOCAL_CFLAGS += \
$(libc_common_cflags) \
-DANDROID_CHANGES \
-DINET6 \
@@ -730,6 +754,13 @@
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_upstream_openbsd_src_files)
+ifneq (,$(filter $(TARGET_ARCH),x86 x86_64))
+ # Clang has wrong long double size or LDBL_MANT_DIG, http://b/17163651.
+ LOCAL_CLANG := false
+else
+ LOCAL_CLANG := $(use_clang)
+endif
+
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-Wno-sign-compare -Wno-uninitialized -Wno-unused-parameter \
@@ -743,7 +774,6 @@
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_openbsd
-LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_SYSTEM_SHARED_LIBRARIES :=
@@ -762,6 +792,13 @@
LOCAL_SRC_FILES_32 := $(libc_upstream_openbsd_gdtoa_src_files_32)
LOCAL_SRC_FILES_64 := $(libc_upstream_openbsd_gdtoa_src_files_64)
+ifneq (,$(filter $(TARGET_ARCH),x86 x86_64))
+ # Clang has wrong long double size or LDBL_MANT_DIG, http://b/17163651.
+ LOCAL_CLANG := false
+else
+ LOCAL_CLANG := $(use_clang)
+endif
+
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-Wno-sign-compare -Wno-uninitialized \
@@ -775,7 +812,6 @@
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_gdtoa
-LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_SYSTEM_SHARED_LIBRARIES :=
@@ -793,6 +829,11 @@
LOCAL_CFLAGS := $(libc_common_cflags) \
-Wframe-larger-than=2048 \
+ifeq ($(TARGET_ARCH),x86_64)
+ # Clang assembler has problem with ssse3-strcmp-slm.S, http://b/17302991
+ LOCAL_CLANG_ASFLAGS += -no-integrated-as
+endif
+
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
@@ -807,6 +848,27 @@
# ========================================================
+# libc_cxa.a - Things traditionally in libstdc++
+# ========================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(libc_cxa_src_files)
+LOCAL_CFLAGS := $(libc_common_cflags) \
+ -fvisibility=hidden \
+
+LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
+LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_MODULE := libc_cxa
+LOCAL_CLANG := true # GCC refuses to hide new/delete
+LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
+LOCAL_SYSTEM_SHARED_LIBRARIES :=
+
+include $(BUILD_STATIC_LIBRARY)
+
+
+# ========================================================
# libc_syscalls.a
# ========================================================
@@ -858,6 +920,7 @@
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_WHOLE_STATIC_LIBRARIES := \
libc_bionic \
+ libc_cxa \
libc_dns \
libc_freebsd \
libc_gdtoa \
@@ -1046,7 +1109,6 @@
# Make sure that unwind.h comes from libunwind.
LOCAL_C_INCLUDES := \
- external/libunwind/include \
$(libc_common_c_includes) \
LOCAL_SRC_FILES := \
@@ -1062,7 +1124,9 @@
LOCAL_SHARED_LIBRARIES := libc libdl
LOCAL_SYSTEM_SHARED_LIBRARIES :=
-LOCAL_WHOLE_STATIC_LIBRARIES := libunwindbacktrace
+# Only need this for arm since libc++ uses its own unwind code that
+# doesn't mix with the other default unwind code.
+LOCAL_STATIC_LIBRARIES_arm := libc++
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
# Don't install on release build
@@ -1105,6 +1169,36 @@
endif #!user
+# ========================================================
+# libstdc++.so
+# ========================================================
+libstdcxx_common_src_files := \
+ bionic/__cxa_guard.cpp \
+ bionic/__cxa_pure_virtual.cpp \
+ bionic/new.cpp \
+ bionic/libc_logging.cpp \
+
+include $(CLEAR_VARS)
+LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_CFLAGS := $(libc_common_cflags)
+LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
+LOCAL_MODULE:= libstdc++
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+include $(BUILD_SHARED_LIBRARY)
+
+# ========================================================
+# libstdc++.a
+# ========================================================
+include $(CLEAR_VARS)
+LOCAL_C_INCLUDES := $(libc_common_c_includes)
+LOCAL_CFLAGS := $(libc_common_cflags)
+LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
+LOCAL_MODULE:= libstdc++
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+include $(BUILD_STATIC_LIBRARY)
+
# ========================================================
include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index 38ae831..bfa13b7 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -315,7 +315,7 @@
int cacheflush:__ARM_NR_cacheflush(long start, long end, long flags) arm
# MIPS-specific
-int _flush_cache:cacheflush(char* addr, const int nbytes, const int op) mips,mips64
+int _flush_cache:cacheflush(char* addr, const int nbytes, const int op) mips
int __set_tls:set_thread_area(void*) mips,mips64
# x86-specific
diff --git a/libc/arch-arm/arm.mk b/libc/arch-arm/arm.mk
index 00be4ae..70cc8eb 100644
--- a/libc/arch-arm/arm.mk
+++ b/libc/arch-arm/arm.mk
@@ -53,7 +53,6 @@
arch-arm/bionic/atomics_arm.c \
arch-arm/bionic/__bionic_clone.S \
arch-arm/bionic/_exit_with_stack_teardown.S \
- arch-arm/bionic/__get_sp.S \
arch-arm/bionic/libgcc_compat.c \
arch-arm/bionic/memcmp.S \
arch-arm/bionic/_setjmp.S \
diff --git a/libc/arch-arm/bionic/__bionic_clone.S b/libc/arch-arm/bionic/__bionic_clone.S
index 48f2f98..f5cf9e0 100644
--- a/libc/arch-arm/bionic/__bionic_clone.S
+++ b/libc/arch-arm/bionic/__bionic_clone.S
@@ -57,7 +57,7 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
1: # The child.
# Setting lr to 0 will make the unwinder stop at __start_thread
diff --git a/libc/arch-arm/bionic/sigsetjmp.S b/libc/arch-arm/bionic/sigsetjmp.S
index f9e30ee..6a25a12 100644
--- a/libc/arch-arm/bionic/sigsetjmp.S
+++ b/libc/arch-arm/bionic/sigsetjmp.S
@@ -33,8 +33,6 @@
* SUCH DAMAGE.
*/
-#define _ALIGN_TEXT .align 0
-
#include <private/bionic_asm.h>
#include <machine/setjmp.h>
diff --git a/libc/arch-arm/bionic/syscall.S b/libc/arch-arm/bionic/syscall.S
index 8647718..d0df379 100644
--- a/libc/arch-arm/bionic/syscall.S
+++ b/libc/arch-arm/bionic/syscall.S
@@ -47,5 +47,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(syscall)
diff --git a/libc/arch-arm/include/machine/asm.h b/libc/arch-arm/include/machine/asm.h
index 88d16f9..70dbe67 100644
--- a/libc/arch-arm/include/machine/asm.h
+++ b/libc/arch-arm/include/machine/asm.h
@@ -38,9 +38,7 @@
#ifndef _ARM32_ASM_H_
#define _ARM32_ASM_H_
-#ifndef _ALIGN_TEXT
-# define _ALIGN_TEXT .align 0
-#endif
+#define __bionic_asm_align 0
#undef __bionic_asm_custom_entry
#undef __bionic_asm_custom_end
diff --git a/libc/arch-arm/syscalls/__accept4.S b/libc/arch-arm/syscalls/__accept4.S
index 2b1eb28..dca5699 100644
--- a/libc/arch-arm/syscalls/__accept4.S
+++ b/libc/arch-arm/syscalls/__accept4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__accept4)
mov ip, r7
ldr r7, =__NR_accept4
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__accept4)
diff --git a/libc/arch-arm/syscalls/__brk.S b/libc/arch-arm/syscalls/__brk.S
index 0987f0e..be304da 100644
--- a/libc/arch-arm/syscalls/__brk.S
+++ b/libc/arch-arm/syscalls/__brk.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__brk)
mov ip, r7
ldr r7, =__NR_brk
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__brk)
diff --git a/libc/arch-arm/syscalls/__connect.S b/libc/arch-arm/syscalls/__connect.S
index 510af95..a2a997e 100644
--- a/libc/arch-arm/syscalls/__connect.S
+++ b/libc/arch-arm/syscalls/__connect.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__connect)
mov ip, r7
ldr r7, =__NR_connect
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__connect)
diff --git a/libc/arch-arm/syscalls/__epoll_pwait.S b/libc/arch-arm/syscalls/__epoll_pwait.S
index bbba2e1..3642ee3 100644
--- a/libc/arch-arm/syscalls/__epoll_pwait.S
+++ b/libc/arch-arm/syscalls/__epoll_pwait.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__epoll_pwait)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__epoll_pwait)
diff --git a/libc/arch-arm/syscalls/__exit.S b/libc/arch-arm/syscalls/__exit.S
index ceef94e..6ebd5b3 100644
--- a/libc/arch-arm/syscalls/__exit.S
+++ b/libc/arch-arm/syscalls/__exit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__exit)
mov ip, r7
ldr r7, =__NR_exit
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__exit)
diff --git a/libc/arch-arm/syscalls/__fcntl64.S b/libc/arch-arm/syscalls/__fcntl64.S
index bb2068d..229c5c6 100644
--- a/libc/arch-arm/syscalls/__fcntl64.S
+++ b/libc/arch-arm/syscalls/__fcntl64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__fcntl64)
mov ip, r7
ldr r7, =__NR_fcntl64
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__fcntl64)
diff --git a/libc/arch-arm/syscalls/__fstatfs64.S b/libc/arch-arm/syscalls/__fstatfs64.S
index b493aa0..9c0c439 100644
--- a/libc/arch-arm/syscalls/__fstatfs64.S
+++ b/libc/arch-arm/syscalls/__fstatfs64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__fstatfs64)
mov ip, r7
ldr r7, =__NR_fstatfs64
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__fstatfs64)
diff --git a/libc/arch-arm/syscalls/__getcpu.S b/libc/arch-arm/syscalls/__getcpu.S
index 1b3fc46..d523d8e 100644
--- a/libc/arch-arm/syscalls/__getcpu.S
+++ b/libc/arch-arm/syscalls/__getcpu.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcpu)
mov ip, r7
ldr r7, =__NR_getcpu
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__getcpu)
diff --git a/libc/arch-arm/syscalls/__getcwd.S b/libc/arch-arm/syscalls/__getcwd.S
index d91b3ca..4ff6667 100644
--- a/libc/arch-arm/syscalls/__getcwd.S
+++ b/libc/arch-arm/syscalls/__getcwd.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcwd)
mov ip, r7
ldr r7, =__NR_getcwd
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__getcwd)
diff --git a/libc/arch-arm/syscalls/__getdents64.S b/libc/arch-arm/syscalls/__getdents64.S
index 7d3d81c..dac3bfc 100644
--- a/libc/arch-arm/syscalls/__getdents64.S
+++ b/libc/arch-arm/syscalls/__getdents64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getdents64)
mov ip, r7
ldr r7, =__NR_getdents64
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__getdents64)
diff --git a/libc/arch-arm/syscalls/__getpid.S b/libc/arch-arm/syscalls/__getpid.S
index ede0865..dbb192e 100644
--- a/libc/arch-arm/syscalls/__getpid.S
+++ b/libc/arch-arm/syscalls/__getpid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpid)
mov ip, r7
ldr r7, =__NR_getpid
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__getpid)
diff --git a/libc/arch-arm/syscalls/__getpriority.S b/libc/arch-arm/syscalls/__getpriority.S
index d3a6468..e637d6f 100644
--- a/libc/arch-arm/syscalls/__getpriority.S
+++ b/libc/arch-arm/syscalls/__getpriority.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpriority)
mov ip, r7
ldr r7, =__NR_getpriority
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__getpriority)
diff --git a/libc/arch-arm/syscalls/__ioctl.S b/libc/arch-arm/syscalls/__ioctl.S
index b3ac82f..fcd1157 100644
--- a/libc/arch-arm/syscalls/__ioctl.S
+++ b/libc/arch-arm/syscalls/__ioctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ioctl)
mov ip, r7
ldr r7, =__NR_ioctl
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__ioctl)
diff --git a/libc/arch-arm/syscalls/__llseek.S b/libc/arch-arm/syscalls/__llseek.S
index b36164c..3cff318 100644
--- a/libc/arch-arm/syscalls/__llseek.S
+++ b/libc/arch-arm/syscalls/__llseek.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__llseek)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__llseek)
diff --git a/libc/arch-arm/syscalls/__mmap2.S b/libc/arch-arm/syscalls/__mmap2.S
index ba74716..f11e467 100644
--- a/libc/arch-arm/syscalls/__mmap2.S
+++ b/libc/arch-arm/syscalls/__mmap2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__mmap2)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__mmap2)
diff --git a/libc/arch-arm/syscalls/__openat.S b/libc/arch-arm/syscalls/__openat.S
index 6b119e1..9b774db 100644
--- a/libc/arch-arm/syscalls/__openat.S
+++ b/libc/arch-arm/syscalls/__openat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__openat)
mov ip, r7
ldr r7, =__NR_openat
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__openat)
diff --git a/libc/arch-arm/syscalls/__ppoll.S b/libc/arch-arm/syscalls/__ppoll.S
index 3a0e80c..02de8a8 100644
--- a/libc/arch-arm/syscalls/__ppoll.S
+++ b/libc/arch-arm/syscalls/__ppoll.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ppoll)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__ppoll)
diff --git a/libc/arch-arm/syscalls/__pselect6.S b/libc/arch-arm/syscalls/__pselect6.S
index 1417be8..8f31e1b 100644
--- a/libc/arch-arm/syscalls/__pselect6.S
+++ b/libc/arch-arm/syscalls/__pselect6.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__pselect6)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__pselect6)
diff --git a/libc/arch-arm/syscalls/__ptrace.S b/libc/arch-arm/syscalls/__ptrace.S
index bc03232..975ab0f 100644
--- a/libc/arch-arm/syscalls/__ptrace.S
+++ b/libc/arch-arm/syscalls/__ptrace.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ptrace)
mov ip, r7
ldr r7, =__NR_ptrace
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__ptrace)
diff --git a/libc/arch-arm/syscalls/__reboot.S b/libc/arch-arm/syscalls/__reboot.S
index 91bbf7c..03f8c89 100644
--- a/libc/arch-arm/syscalls/__reboot.S
+++ b/libc/arch-arm/syscalls/__reboot.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__reboot)
mov ip, r7
ldr r7, =__NR_reboot
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__reboot)
diff --git a/libc/arch-arm/syscalls/__rt_sigaction.S b/libc/arch-arm/syscalls/__rt_sigaction.S
index 6a5e058..2c21012 100644
--- a/libc/arch-arm/syscalls/__rt_sigaction.S
+++ b/libc/arch-arm/syscalls/__rt_sigaction.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigaction)
mov ip, r7
ldr r7, =__NR_rt_sigaction
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__rt_sigaction)
diff --git a/libc/arch-arm/syscalls/__rt_sigpending.S b/libc/arch-arm/syscalls/__rt_sigpending.S
index 44da9b2..6a32e50 100644
--- a/libc/arch-arm/syscalls/__rt_sigpending.S
+++ b/libc/arch-arm/syscalls/__rt_sigpending.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigpending)
mov ip, r7
ldr r7, =__NR_rt_sigpending
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__rt_sigpending)
diff --git a/libc/arch-arm/syscalls/__rt_sigprocmask.S b/libc/arch-arm/syscalls/__rt_sigprocmask.S
index 81cdb85..136dc79 100644
--- a/libc/arch-arm/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-arm/syscalls/__rt_sigprocmask.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigprocmask)
mov ip, r7
ldr r7, =__NR_rt_sigprocmask
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__rt_sigprocmask)
diff --git a/libc/arch-arm/syscalls/__rt_sigsuspend.S b/libc/arch-arm/syscalls/__rt_sigsuspend.S
index a9a3903..2cef4a4 100644
--- a/libc/arch-arm/syscalls/__rt_sigsuspend.S
+++ b/libc/arch-arm/syscalls/__rt_sigsuspend.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigsuspend)
mov ip, r7
ldr r7, =__NR_rt_sigsuspend
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__rt_sigsuspend)
diff --git a/libc/arch-arm/syscalls/__rt_sigtimedwait.S b/libc/arch-arm/syscalls/__rt_sigtimedwait.S
index 7b78a43..cb43ad1 100644
--- a/libc/arch-arm/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-arm/syscalls/__rt_sigtimedwait.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigtimedwait)
mov ip, r7
ldr r7, =__NR_rt_sigtimedwait
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__rt_sigtimedwait)
diff --git a/libc/arch-arm/syscalls/__sched_getaffinity.S b/libc/arch-arm/syscalls/__sched_getaffinity.S
index a22c55e..6613ea5 100644
--- a/libc/arch-arm/syscalls/__sched_getaffinity.S
+++ b/libc/arch-arm/syscalls/__sched_getaffinity.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__sched_getaffinity)
mov ip, r7
ldr r7, =__NR_sched_getaffinity
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__sched_getaffinity)
diff --git a/libc/arch-arm/syscalls/__set_tid_address.S b/libc/arch-arm/syscalls/__set_tid_address.S
index 0838c8b..d3558f5 100644
--- a/libc/arch-arm/syscalls/__set_tid_address.S
+++ b/libc/arch-arm/syscalls/__set_tid_address.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__set_tid_address)
mov ip, r7
ldr r7, =__NR_set_tid_address
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__set_tid_address)
diff --git a/libc/arch-arm/syscalls/__set_tls.S b/libc/arch-arm/syscalls/__set_tls.S
index c4c2eb7..4d5d963 100644
--- a/libc/arch-arm/syscalls/__set_tls.S
+++ b/libc/arch-arm/syscalls/__set_tls.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__set_tls)
mov ip, r7
ldr r7, =__ARM_NR_set_tls
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__set_tls)
diff --git a/libc/arch-arm/syscalls/__sigaction.S b/libc/arch-arm/syscalls/__sigaction.S
index 869b4c8..600593d 100644
--- a/libc/arch-arm/syscalls/__sigaction.S
+++ b/libc/arch-arm/syscalls/__sigaction.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__sigaction)
mov ip, r7
ldr r7, =__NR_sigaction
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__sigaction)
diff --git a/libc/arch-arm/syscalls/__signalfd4.S b/libc/arch-arm/syscalls/__signalfd4.S
index 3bcf031..630a71f 100644
--- a/libc/arch-arm/syscalls/__signalfd4.S
+++ b/libc/arch-arm/syscalls/__signalfd4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__signalfd4)
mov ip, r7
ldr r7, =__NR_signalfd4
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__signalfd4)
diff --git a/libc/arch-arm/syscalls/__socket.S b/libc/arch-arm/syscalls/__socket.S
index a655b5b..fffe0cc 100644
--- a/libc/arch-arm/syscalls/__socket.S
+++ b/libc/arch-arm/syscalls/__socket.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__socket)
mov ip, r7
ldr r7, =__NR_socket
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__socket)
diff --git a/libc/arch-arm/syscalls/__statfs64.S b/libc/arch-arm/syscalls/__statfs64.S
index 80ea6ce..ec43218 100644
--- a/libc/arch-arm/syscalls/__statfs64.S
+++ b/libc/arch-arm/syscalls/__statfs64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__statfs64)
mov ip, r7
ldr r7, =__NR_statfs64
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__statfs64)
diff --git a/libc/arch-arm/syscalls/__timer_create.S b/libc/arch-arm/syscalls/__timer_create.S
index 75fc347..2e4c634 100644
--- a/libc/arch-arm/syscalls/__timer_create.S
+++ b/libc/arch-arm/syscalls/__timer_create.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_create)
mov ip, r7
ldr r7, =__NR_timer_create
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__timer_create)
diff --git a/libc/arch-arm/syscalls/__timer_delete.S b/libc/arch-arm/syscalls/__timer_delete.S
index ad5ec36..237024c 100644
--- a/libc/arch-arm/syscalls/__timer_delete.S
+++ b/libc/arch-arm/syscalls/__timer_delete.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_delete)
mov ip, r7
ldr r7, =__NR_timer_delete
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__timer_delete)
diff --git a/libc/arch-arm/syscalls/__timer_getoverrun.S b/libc/arch-arm/syscalls/__timer_getoverrun.S
index 529712c..f29d5b3 100644
--- a/libc/arch-arm/syscalls/__timer_getoverrun.S
+++ b/libc/arch-arm/syscalls/__timer_getoverrun.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_getoverrun)
mov ip, r7
ldr r7, =__NR_timer_getoverrun
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__timer_getoverrun)
diff --git a/libc/arch-arm/syscalls/__timer_gettime.S b/libc/arch-arm/syscalls/__timer_gettime.S
index 180da39..e6dc2ed 100644
--- a/libc/arch-arm/syscalls/__timer_gettime.S
+++ b/libc/arch-arm/syscalls/__timer_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_gettime)
mov ip, r7
ldr r7, =__NR_timer_gettime
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__timer_gettime)
diff --git a/libc/arch-arm/syscalls/__timer_settime.S b/libc/arch-arm/syscalls/__timer_settime.S
index e2950dd..4aea279 100644
--- a/libc/arch-arm/syscalls/__timer_settime.S
+++ b/libc/arch-arm/syscalls/__timer_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_settime)
mov ip, r7
ldr r7, =__NR_timer_settime
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__timer_settime)
diff --git a/libc/arch-arm/syscalls/__waitid.S b/libc/arch-arm/syscalls/__waitid.S
index 8c6ba66..f4dfa59 100644
--- a/libc/arch-arm/syscalls/__waitid.S
+++ b/libc/arch-arm/syscalls/__waitid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__waitid)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(__waitid)
diff --git a/libc/arch-arm/syscalls/_exit.S b/libc/arch-arm/syscalls/_exit.S
index fd072c3..328a5ce 100644
--- a/libc/arch-arm/syscalls/_exit.S
+++ b/libc/arch-arm/syscalls/_exit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(_exit)
mov ip, r7
ldr r7, =__NR_exit_group
@@ -12,7 +10,7 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(_exit)
.globl _Exit
diff --git a/libc/arch-arm/syscalls/acct.S b/libc/arch-arm/syscalls/acct.S
index 156db48..dbc5d58 100644
--- a/libc/arch-arm/syscalls/acct.S
+++ b/libc/arch-arm/syscalls/acct.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(acct)
mov ip, r7
ldr r7, =__NR_acct
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(acct)
diff --git a/libc/arch-arm/syscalls/bind.S b/libc/arch-arm/syscalls/bind.S
index 892c77f..c901417 100644
--- a/libc/arch-arm/syscalls/bind.S
+++ b/libc/arch-arm/syscalls/bind.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(bind)
mov ip, r7
ldr r7, =__NR_bind
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(bind)
diff --git a/libc/arch-arm/syscalls/cacheflush.S b/libc/arch-arm/syscalls/cacheflush.S
index 0739c32..76f4623 100644
--- a/libc/arch-arm/syscalls/cacheflush.S
+++ b/libc/arch-arm/syscalls/cacheflush.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(cacheflush)
mov ip, r7
ldr r7, =__ARM_NR_cacheflush
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(cacheflush)
diff --git a/libc/arch-arm/syscalls/capget.S b/libc/arch-arm/syscalls/capget.S
index 6fd0f7c..59a5a3c 100644
--- a/libc/arch-arm/syscalls/capget.S
+++ b/libc/arch-arm/syscalls/capget.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capget)
mov ip, r7
ldr r7, =__NR_capget
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(capget)
diff --git a/libc/arch-arm/syscalls/capset.S b/libc/arch-arm/syscalls/capset.S
index 2708ff6..af284ab 100644
--- a/libc/arch-arm/syscalls/capset.S
+++ b/libc/arch-arm/syscalls/capset.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capset)
mov ip, r7
ldr r7, =__NR_capset
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(capset)
diff --git a/libc/arch-arm/syscalls/chdir.S b/libc/arch-arm/syscalls/chdir.S
index 0b86a0f..25f27ba 100644
--- a/libc/arch-arm/syscalls/chdir.S
+++ b/libc/arch-arm/syscalls/chdir.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chdir)
mov ip, r7
ldr r7, =__NR_chdir
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(chdir)
diff --git a/libc/arch-arm/syscalls/chroot.S b/libc/arch-arm/syscalls/chroot.S
index 15aa392..6f829a6 100644
--- a/libc/arch-arm/syscalls/chroot.S
+++ b/libc/arch-arm/syscalls/chroot.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chroot)
mov ip, r7
ldr r7, =__NR_chroot
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(chroot)
diff --git a/libc/arch-arm/syscalls/clock_getres.S b/libc/arch-arm/syscalls/clock_getres.S
index b92289a..48fa07c 100644
--- a/libc/arch-arm/syscalls/clock_getres.S
+++ b/libc/arch-arm/syscalls/clock_getres.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_getres)
mov ip, r7
ldr r7, =__NR_clock_getres
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(clock_getres)
diff --git a/libc/arch-arm/syscalls/clock_gettime.S b/libc/arch-arm/syscalls/clock_gettime.S
index 203db8f..317481d 100644
--- a/libc/arch-arm/syscalls/clock_gettime.S
+++ b/libc/arch-arm/syscalls/clock_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_gettime)
mov ip, r7
ldr r7, =__NR_clock_gettime
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(clock_gettime)
diff --git a/libc/arch-arm/syscalls/clock_nanosleep.S b/libc/arch-arm/syscalls/clock_nanosleep.S
index 5de2267..80295bb 100644
--- a/libc/arch-arm/syscalls/clock_nanosleep.S
+++ b/libc/arch-arm/syscalls/clock_nanosleep.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_nanosleep)
mov ip, r7
ldr r7, =__NR_clock_nanosleep
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(clock_nanosleep)
diff --git a/libc/arch-arm/syscalls/clock_settime.S b/libc/arch-arm/syscalls/clock_settime.S
index 71e61f8..bf54702 100644
--- a/libc/arch-arm/syscalls/clock_settime.S
+++ b/libc/arch-arm/syscalls/clock_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_settime)
mov ip, r7
ldr r7, =__NR_clock_settime
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(clock_settime)
diff --git a/libc/arch-arm/syscalls/close.S b/libc/arch-arm/syscalls/close.S
index 3e0fd32..ec05445 100644
--- a/libc/arch-arm/syscalls/close.S
+++ b/libc/arch-arm/syscalls/close.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(close)
mov ip, r7
ldr r7, =__NR_close
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(close)
diff --git a/libc/arch-arm/syscalls/delete_module.S b/libc/arch-arm/syscalls/delete_module.S
index 0af2520..57580c9 100644
--- a/libc/arch-arm/syscalls/delete_module.S
+++ b/libc/arch-arm/syscalls/delete_module.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(delete_module)
mov ip, r7
ldr r7, =__NR_delete_module
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(delete_module)
diff --git a/libc/arch-arm/syscalls/dup.S b/libc/arch-arm/syscalls/dup.S
index 4105438..2cd69d7 100644
--- a/libc/arch-arm/syscalls/dup.S
+++ b/libc/arch-arm/syscalls/dup.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup)
mov ip, r7
ldr r7, =__NR_dup
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(dup)
diff --git a/libc/arch-arm/syscalls/dup3.S b/libc/arch-arm/syscalls/dup3.S
index 409e8f9..4613d63 100644
--- a/libc/arch-arm/syscalls/dup3.S
+++ b/libc/arch-arm/syscalls/dup3.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup3)
mov ip, r7
ldr r7, =__NR_dup3
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(dup3)
diff --git a/libc/arch-arm/syscalls/epoll_create1.S b/libc/arch-arm/syscalls/epoll_create1.S
index 631afab..108c24f 100644
--- a/libc/arch-arm/syscalls/epoll_create1.S
+++ b/libc/arch-arm/syscalls/epoll_create1.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_create1)
mov ip, r7
ldr r7, =__NR_epoll_create1
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(epoll_create1)
diff --git a/libc/arch-arm/syscalls/epoll_ctl.S b/libc/arch-arm/syscalls/epoll_ctl.S
index 187fe0a..473af6a 100644
--- a/libc/arch-arm/syscalls/epoll_ctl.S
+++ b/libc/arch-arm/syscalls/epoll_ctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_ctl)
mov ip, r7
ldr r7, =__NR_epoll_ctl
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(epoll_ctl)
diff --git a/libc/arch-arm/syscalls/eventfd.S b/libc/arch-arm/syscalls/eventfd.S
index c35f537..ca6bcee 100644
--- a/libc/arch-arm/syscalls/eventfd.S
+++ b/libc/arch-arm/syscalls/eventfd.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(eventfd)
mov ip, r7
ldr r7, =__NR_eventfd2
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(eventfd)
diff --git a/libc/arch-arm/syscalls/execve.S b/libc/arch-arm/syscalls/execve.S
index 1b24f76..3eca810 100644
--- a/libc/arch-arm/syscalls/execve.S
+++ b/libc/arch-arm/syscalls/execve.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(execve)
mov ip, r7
ldr r7, =__NR_execve
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(execve)
diff --git a/libc/arch-arm/syscalls/faccessat.S b/libc/arch-arm/syscalls/faccessat.S
index 3f663e3..a1df5c0 100644
--- a/libc/arch-arm/syscalls/faccessat.S
+++ b/libc/arch-arm/syscalls/faccessat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(faccessat)
mov ip, r7
ldr r7, =__NR_faccessat
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(faccessat)
diff --git a/libc/arch-arm/syscalls/fallocate64.S b/libc/arch-arm/syscalls/fallocate64.S
index fd90637..4bfd5e3 100644
--- a/libc/arch-arm/syscalls/fallocate64.S
+++ b/libc/arch-arm/syscalls/fallocate64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fallocate64)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fallocate64)
diff --git a/libc/arch-arm/syscalls/fchdir.S b/libc/arch-arm/syscalls/fchdir.S
index c109718..705ad32 100644
--- a/libc/arch-arm/syscalls/fchdir.S
+++ b/libc/arch-arm/syscalls/fchdir.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchdir)
mov ip, r7
ldr r7, =__NR_fchdir
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fchdir)
diff --git a/libc/arch-arm/syscalls/fchmod.S b/libc/arch-arm/syscalls/fchmod.S
index 4b598a2..5675f0a 100644
--- a/libc/arch-arm/syscalls/fchmod.S
+++ b/libc/arch-arm/syscalls/fchmod.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmod)
mov ip, r7
ldr r7, =__NR_fchmod
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fchmod)
diff --git a/libc/arch-arm/syscalls/fchmodat.S b/libc/arch-arm/syscalls/fchmodat.S
index 8e43118..3f7e0ee 100644
--- a/libc/arch-arm/syscalls/fchmodat.S
+++ b/libc/arch-arm/syscalls/fchmodat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmodat)
mov ip, r7
ldr r7, =__NR_fchmodat
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fchmodat)
diff --git a/libc/arch-arm/syscalls/fchown.S b/libc/arch-arm/syscalls/fchown.S
index 24a38f6..45ad9bf 100644
--- a/libc/arch-arm/syscalls/fchown.S
+++ b/libc/arch-arm/syscalls/fchown.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchown)
mov ip, r7
ldr r7, =__NR_fchown32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fchown)
diff --git a/libc/arch-arm/syscalls/fchownat.S b/libc/arch-arm/syscalls/fchownat.S
index 8fd76a3..2aac0fe 100644
--- a/libc/arch-arm/syscalls/fchownat.S
+++ b/libc/arch-arm/syscalls/fchownat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchownat)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fchownat)
diff --git a/libc/arch-arm/syscalls/fdatasync.S b/libc/arch-arm/syscalls/fdatasync.S
index 9556665..7fefd22 100644
--- a/libc/arch-arm/syscalls/fdatasync.S
+++ b/libc/arch-arm/syscalls/fdatasync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fdatasync)
mov ip, r7
ldr r7, =__NR_fdatasync
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fdatasync)
diff --git a/libc/arch-arm/syscalls/fgetxattr.S b/libc/arch-arm/syscalls/fgetxattr.S
index 95e2809..3f1e5fc 100644
--- a/libc/arch-arm/syscalls/fgetxattr.S
+++ b/libc/arch-arm/syscalls/fgetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fgetxattr)
mov ip, r7
ldr r7, =__NR_fgetxattr
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fgetxattr)
diff --git a/libc/arch-arm/syscalls/flistxattr.S b/libc/arch-arm/syscalls/flistxattr.S
index 0d411b1..ee09295 100644
--- a/libc/arch-arm/syscalls/flistxattr.S
+++ b/libc/arch-arm/syscalls/flistxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flistxattr)
mov ip, r7
ldr r7, =__NR_flistxattr
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(flistxattr)
diff --git a/libc/arch-arm/syscalls/flock.S b/libc/arch-arm/syscalls/flock.S
index e59d4f6..c946fe9 100644
--- a/libc/arch-arm/syscalls/flock.S
+++ b/libc/arch-arm/syscalls/flock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flock)
mov ip, r7
ldr r7, =__NR_flock
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(flock)
diff --git a/libc/arch-arm/syscalls/fremovexattr.S b/libc/arch-arm/syscalls/fremovexattr.S
index 3ec647f..f4e950b 100644
--- a/libc/arch-arm/syscalls/fremovexattr.S
+++ b/libc/arch-arm/syscalls/fremovexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fremovexattr)
mov ip, r7
ldr r7, =__NR_fremovexattr
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fremovexattr)
diff --git a/libc/arch-arm/syscalls/fsetxattr.S b/libc/arch-arm/syscalls/fsetxattr.S
index 225e64b..0e33ad2 100644
--- a/libc/arch-arm/syscalls/fsetxattr.S
+++ b/libc/arch-arm/syscalls/fsetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsetxattr)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fsetxattr)
diff --git a/libc/arch-arm/syscalls/fstat64.S b/libc/arch-arm/syscalls/fstat64.S
index 560bb94..c60e7ee 100644
--- a/libc/arch-arm/syscalls/fstat64.S
+++ b/libc/arch-arm/syscalls/fstat64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstat64)
mov ip, r7
ldr r7, =__NR_fstat64
@@ -12,7 +10,7 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fstat64)
.globl fstat
diff --git a/libc/arch-arm/syscalls/fstatat64.S b/libc/arch-arm/syscalls/fstatat64.S
index cda5845..ce56c36 100644
--- a/libc/arch-arm/syscalls/fstatat64.S
+++ b/libc/arch-arm/syscalls/fstatat64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstatat64)
mov ip, r7
ldr r7, =__NR_fstatat64
@@ -12,7 +10,7 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fstatat64)
.globl fstatat
diff --git a/libc/arch-arm/syscalls/fsync.S b/libc/arch-arm/syscalls/fsync.S
index c6ba47b..1dfff05 100644
--- a/libc/arch-arm/syscalls/fsync.S
+++ b/libc/arch-arm/syscalls/fsync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsync)
mov ip, r7
ldr r7, =__NR_fsync
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(fsync)
diff --git a/libc/arch-arm/syscalls/ftruncate.S b/libc/arch-arm/syscalls/ftruncate.S
index 168d722..1bfe2f3 100644
--- a/libc/arch-arm/syscalls/ftruncate.S
+++ b/libc/arch-arm/syscalls/ftruncate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(ftruncate)
mov ip, r7
ldr r7, =__NR_ftruncate
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(ftruncate)
diff --git a/libc/arch-arm/syscalls/ftruncate64.S b/libc/arch-arm/syscalls/ftruncate64.S
index a2b73b8..ac0caa8 100644
--- a/libc/arch-arm/syscalls/ftruncate64.S
+++ b/libc/arch-arm/syscalls/ftruncate64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(ftruncate64)
mov ip, r7
ldr r7, =__NR_ftruncate64
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(ftruncate64)
diff --git a/libc/arch-arm/syscalls/getegid.S b/libc/arch-arm/syscalls/getegid.S
index e2f9fe9..afa9cc8 100644
--- a/libc/arch-arm/syscalls/getegid.S
+++ b/libc/arch-arm/syscalls/getegid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getegid)
mov ip, r7
ldr r7, =__NR_getegid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getegid)
diff --git a/libc/arch-arm/syscalls/geteuid.S b/libc/arch-arm/syscalls/geteuid.S
index 1d55320..10c8a25 100644
--- a/libc/arch-arm/syscalls/geteuid.S
+++ b/libc/arch-arm/syscalls/geteuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(geteuid)
mov ip, r7
ldr r7, =__NR_geteuid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(geteuid)
diff --git a/libc/arch-arm/syscalls/getgid.S b/libc/arch-arm/syscalls/getgid.S
index 9d81d73..8772762 100644
--- a/libc/arch-arm/syscalls/getgid.S
+++ b/libc/arch-arm/syscalls/getgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgid)
mov ip, r7
ldr r7, =__NR_getgid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getgid)
diff --git a/libc/arch-arm/syscalls/getgroups.S b/libc/arch-arm/syscalls/getgroups.S
index 23aafaf..366299b 100644
--- a/libc/arch-arm/syscalls/getgroups.S
+++ b/libc/arch-arm/syscalls/getgroups.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgroups)
mov ip, r7
ldr r7, =__NR_getgroups32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getgroups)
diff --git a/libc/arch-arm/syscalls/getitimer.S b/libc/arch-arm/syscalls/getitimer.S
index 095cf8f..80fb0f2 100644
--- a/libc/arch-arm/syscalls/getitimer.S
+++ b/libc/arch-arm/syscalls/getitimer.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getitimer)
mov ip, r7
ldr r7, =__NR_getitimer
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getitimer)
diff --git a/libc/arch-arm/syscalls/getpeername.S b/libc/arch-arm/syscalls/getpeername.S
index 760f6fb..25f0026 100644
--- a/libc/arch-arm/syscalls/getpeername.S
+++ b/libc/arch-arm/syscalls/getpeername.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpeername)
mov ip, r7
ldr r7, =__NR_getpeername
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getpeername)
diff --git a/libc/arch-arm/syscalls/getpgid.S b/libc/arch-arm/syscalls/getpgid.S
index d07b058..36c4c19 100644
--- a/libc/arch-arm/syscalls/getpgid.S
+++ b/libc/arch-arm/syscalls/getpgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpgid)
mov ip, r7
ldr r7, =__NR_getpgid
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getpgid)
diff --git a/libc/arch-arm/syscalls/getppid.S b/libc/arch-arm/syscalls/getppid.S
index bcc13a8..606b2e0 100644
--- a/libc/arch-arm/syscalls/getppid.S
+++ b/libc/arch-arm/syscalls/getppid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getppid)
mov ip, r7
ldr r7, =__NR_getppid
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getppid)
diff --git a/libc/arch-arm/syscalls/getresgid.S b/libc/arch-arm/syscalls/getresgid.S
index 9a87eaa..a5e4689 100644
--- a/libc/arch-arm/syscalls/getresgid.S
+++ b/libc/arch-arm/syscalls/getresgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresgid)
mov ip, r7
ldr r7, =__NR_getresgid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getresgid)
diff --git a/libc/arch-arm/syscalls/getresuid.S b/libc/arch-arm/syscalls/getresuid.S
index a332928..74c26a7 100644
--- a/libc/arch-arm/syscalls/getresuid.S
+++ b/libc/arch-arm/syscalls/getresuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresuid)
mov ip, r7
ldr r7, =__NR_getresuid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getresuid)
diff --git a/libc/arch-arm/syscalls/getrlimit.S b/libc/arch-arm/syscalls/getrlimit.S
index 4a9c62a..166da63 100644
--- a/libc/arch-arm/syscalls/getrlimit.S
+++ b/libc/arch-arm/syscalls/getrlimit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrlimit)
mov ip, r7
ldr r7, =__NR_ugetrlimit
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getrlimit)
diff --git a/libc/arch-arm/syscalls/getrusage.S b/libc/arch-arm/syscalls/getrusage.S
index 4799b69..93979c6 100644
--- a/libc/arch-arm/syscalls/getrusage.S
+++ b/libc/arch-arm/syscalls/getrusage.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrusage)
mov ip, r7
ldr r7, =__NR_getrusage
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getrusage)
diff --git a/libc/arch-arm/syscalls/getsid.S b/libc/arch-arm/syscalls/getsid.S
index 5a26e94..87d38fb 100644
--- a/libc/arch-arm/syscalls/getsid.S
+++ b/libc/arch-arm/syscalls/getsid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsid)
mov ip, r7
ldr r7, =__NR_getsid
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getsid)
diff --git a/libc/arch-arm/syscalls/getsockname.S b/libc/arch-arm/syscalls/getsockname.S
index 78e0752..5dc4eab 100644
--- a/libc/arch-arm/syscalls/getsockname.S
+++ b/libc/arch-arm/syscalls/getsockname.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockname)
mov ip, r7
ldr r7, =__NR_getsockname
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getsockname)
diff --git a/libc/arch-arm/syscalls/getsockopt.S b/libc/arch-arm/syscalls/getsockopt.S
index e1badfb..4143bbd 100644
--- a/libc/arch-arm/syscalls/getsockopt.S
+++ b/libc/arch-arm/syscalls/getsockopt.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockopt)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getsockopt)
diff --git a/libc/arch-arm/syscalls/gettimeofday.S b/libc/arch-arm/syscalls/gettimeofday.S
index 611c0d4..174f94b 100644
--- a/libc/arch-arm/syscalls/gettimeofday.S
+++ b/libc/arch-arm/syscalls/gettimeofday.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(gettimeofday)
mov ip, r7
ldr r7, =__NR_gettimeofday
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(gettimeofday)
diff --git a/libc/arch-arm/syscalls/getuid.S b/libc/arch-arm/syscalls/getuid.S
index 2e97c55..3d07d3c 100644
--- a/libc/arch-arm/syscalls/getuid.S
+++ b/libc/arch-arm/syscalls/getuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getuid)
mov ip, r7
ldr r7, =__NR_getuid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getuid)
diff --git a/libc/arch-arm/syscalls/getxattr.S b/libc/arch-arm/syscalls/getxattr.S
index da0e86d..6661aaf 100644
--- a/libc/arch-arm/syscalls/getxattr.S
+++ b/libc/arch-arm/syscalls/getxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getxattr)
mov ip, r7
ldr r7, =__NR_getxattr
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(getxattr)
diff --git a/libc/arch-arm/syscalls/init_module.S b/libc/arch-arm/syscalls/init_module.S
index bf30b03..8251533 100644
--- a/libc/arch-arm/syscalls/init_module.S
+++ b/libc/arch-arm/syscalls/init_module.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(init_module)
mov ip, r7
ldr r7, =__NR_init_module
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(init_module)
diff --git a/libc/arch-arm/syscalls/inotify_add_watch.S b/libc/arch-arm/syscalls/inotify_add_watch.S
index 982d338..b945bd1 100644
--- a/libc/arch-arm/syscalls/inotify_add_watch.S
+++ b/libc/arch-arm/syscalls/inotify_add_watch.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_add_watch)
mov ip, r7
ldr r7, =__NR_inotify_add_watch
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(inotify_add_watch)
diff --git a/libc/arch-arm/syscalls/inotify_init1.S b/libc/arch-arm/syscalls/inotify_init1.S
index 2253ec8..32090de 100644
--- a/libc/arch-arm/syscalls/inotify_init1.S
+++ b/libc/arch-arm/syscalls/inotify_init1.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_init1)
mov ip, r7
ldr r7, =__NR_inotify_init1
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(inotify_init1)
diff --git a/libc/arch-arm/syscalls/inotify_rm_watch.S b/libc/arch-arm/syscalls/inotify_rm_watch.S
index 9d7e6ae..e8230e2 100644
--- a/libc/arch-arm/syscalls/inotify_rm_watch.S
+++ b/libc/arch-arm/syscalls/inotify_rm_watch.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_rm_watch)
mov ip, r7
ldr r7, =__NR_inotify_rm_watch
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(inotify_rm_watch)
diff --git a/libc/arch-arm/syscalls/kill.S b/libc/arch-arm/syscalls/kill.S
index 7e4d6c4..0b5f4a4 100644
--- a/libc/arch-arm/syscalls/kill.S
+++ b/libc/arch-arm/syscalls/kill.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(kill)
mov ip, r7
ldr r7, =__NR_kill
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(kill)
diff --git a/libc/arch-arm/syscalls/klogctl.S b/libc/arch-arm/syscalls/klogctl.S
index f5fe27f..b76b2b5 100644
--- a/libc/arch-arm/syscalls/klogctl.S
+++ b/libc/arch-arm/syscalls/klogctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(klogctl)
mov ip, r7
ldr r7, =__NR_syslog
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(klogctl)
diff --git a/libc/arch-arm/syscalls/lgetxattr.S b/libc/arch-arm/syscalls/lgetxattr.S
index 70b7235..b033a9a 100644
--- a/libc/arch-arm/syscalls/lgetxattr.S
+++ b/libc/arch-arm/syscalls/lgetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lgetxattr)
mov ip, r7
ldr r7, =__NR_lgetxattr
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(lgetxattr)
diff --git a/libc/arch-arm/syscalls/linkat.S b/libc/arch-arm/syscalls/linkat.S
index 7a578f8..6e74d06 100644
--- a/libc/arch-arm/syscalls/linkat.S
+++ b/libc/arch-arm/syscalls/linkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(linkat)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(linkat)
diff --git a/libc/arch-arm/syscalls/listen.S b/libc/arch-arm/syscalls/listen.S
index 5c33912..3aaa801 100644
--- a/libc/arch-arm/syscalls/listen.S
+++ b/libc/arch-arm/syscalls/listen.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listen)
mov ip, r7
ldr r7, =__NR_listen
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(listen)
diff --git a/libc/arch-arm/syscalls/listxattr.S b/libc/arch-arm/syscalls/listxattr.S
index ea8f5d8..51ff267 100644
--- a/libc/arch-arm/syscalls/listxattr.S
+++ b/libc/arch-arm/syscalls/listxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listxattr)
mov ip, r7
ldr r7, =__NR_listxattr
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(listxattr)
diff --git a/libc/arch-arm/syscalls/llistxattr.S b/libc/arch-arm/syscalls/llistxattr.S
index b7f3375..46e8116 100644
--- a/libc/arch-arm/syscalls/llistxattr.S
+++ b/libc/arch-arm/syscalls/llistxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(llistxattr)
mov ip, r7
ldr r7, =__NR_llistxattr
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(llistxattr)
diff --git a/libc/arch-arm/syscalls/lremovexattr.S b/libc/arch-arm/syscalls/lremovexattr.S
index a8d0d2d..a945062 100644
--- a/libc/arch-arm/syscalls/lremovexattr.S
+++ b/libc/arch-arm/syscalls/lremovexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lremovexattr)
mov ip, r7
ldr r7, =__NR_lremovexattr
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(lremovexattr)
diff --git a/libc/arch-arm/syscalls/lseek.S b/libc/arch-arm/syscalls/lseek.S
index 17697d4..00aeab3 100644
--- a/libc/arch-arm/syscalls/lseek.S
+++ b/libc/arch-arm/syscalls/lseek.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lseek)
mov ip, r7
ldr r7, =__NR_lseek
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(lseek)
diff --git a/libc/arch-arm/syscalls/lsetxattr.S b/libc/arch-arm/syscalls/lsetxattr.S
index 166ef7f..c41fb88 100644
--- a/libc/arch-arm/syscalls/lsetxattr.S
+++ b/libc/arch-arm/syscalls/lsetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lsetxattr)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(lsetxattr)
diff --git a/libc/arch-arm/syscalls/madvise.S b/libc/arch-arm/syscalls/madvise.S
index ffa71c4..4d3cdcd 100644
--- a/libc/arch-arm/syscalls/madvise.S
+++ b/libc/arch-arm/syscalls/madvise.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(madvise)
mov ip, r7
ldr r7, =__NR_madvise
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(madvise)
diff --git a/libc/arch-arm/syscalls/mincore.S b/libc/arch-arm/syscalls/mincore.S
index 5eb5f10..f1154d0 100644
--- a/libc/arch-arm/syscalls/mincore.S
+++ b/libc/arch-arm/syscalls/mincore.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mincore)
mov ip, r7
ldr r7, =__NR_mincore
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(mincore)
diff --git a/libc/arch-arm/syscalls/mkdirat.S b/libc/arch-arm/syscalls/mkdirat.S
index d9c58ad..1f8957b 100644
--- a/libc/arch-arm/syscalls/mkdirat.S
+++ b/libc/arch-arm/syscalls/mkdirat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mkdirat)
mov ip, r7
ldr r7, =__NR_mkdirat
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(mkdirat)
diff --git a/libc/arch-arm/syscalls/mknodat.S b/libc/arch-arm/syscalls/mknodat.S
index d6296f1..1a2bf6f 100644
--- a/libc/arch-arm/syscalls/mknodat.S
+++ b/libc/arch-arm/syscalls/mknodat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mknodat)
mov ip, r7
ldr r7, =__NR_mknodat
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(mknodat)
diff --git a/libc/arch-arm/syscalls/mlock.S b/libc/arch-arm/syscalls/mlock.S
index 21fd5f9..8a4fc7a 100644
--- a/libc/arch-arm/syscalls/mlock.S
+++ b/libc/arch-arm/syscalls/mlock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlock)
mov ip, r7
ldr r7, =__NR_mlock
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(mlock)
diff --git a/libc/arch-arm/syscalls/mlockall.S b/libc/arch-arm/syscalls/mlockall.S
index 750b7ec..b49ca05 100644
--- a/libc/arch-arm/syscalls/mlockall.S
+++ b/libc/arch-arm/syscalls/mlockall.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlockall)
mov ip, r7
ldr r7, =__NR_mlockall
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(mlockall)
diff --git a/libc/arch-arm/syscalls/mount.S b/libc/arch-arm/syscalls/mount.S
index d2fa20e..ed28ab2 100644
--- a/libc/arch-arm/syscalls/mount.S
+++ b/libc/arch-arm/syscalls/mount.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mount)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(mount)
diff --git a/libc/arch-arm/syscalls/mprotect.S b/libc/arch-arm/syscalls/mprotect.S
index dfc6f08..cb51306 100644
--- a/libc/arch-arm/syscalls/mprotect.S
+++ b/libc/arch-arm/syscalls/mprotect.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mprotect)
mov ip, r7
ldr r7, =__NR_mprotect
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(mprotect)
diff --git a/libc/arch-arm/syscalls/mremap.S b/libc/arch-arm/syscalls/mremap.S
index a674571..505ea3c 100644
--- a/libc/arch-arm/syscalls/mremap.S
+++ b/libc/arch-arm/syscalls/mremap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mremap)
mov ip, r7
ldr r7, =__NR_mremap
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(mremap)
diff --git a/libc/arch-arm/syscalls/msync.S b/libc/arch-arm/syscalls/msync.S
index e062a5e..220fb4d 100644
--- a/libc/arch-arm/syscalls/msync.S
+++ b/libc/arch-arm/syscalls/msync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(msync)
mov ip, r7
ldr r7, =__NR_msync
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(msync)
diff --git a/libc/arch-arm/syscalls/munlock.S b/libc/arch-arm/syscalls/munlock.S
index c44d147..05bf941 100644
--- a/libc/arch-arm/syscalls/munlock.S
+++ b/libc/arch-arm/syscalls/munlock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlock)
mov ip, r7
ldr r7, =__NR_munlock
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(munlock)
diff --git a/libc/arch-arm/syscalls/munlockall.S b/libc/arch-arm/syscalls/munlockall.S
index 3a36b7e..e2c5dd5 100644
--- a/libc/arch-arm/syscalls/munlockall.S
+++ b/libc/arch-arm/syscalls/munlockall.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlockall)
mov ip, r7
ldr r7, =__NR_munlockall
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(munlockall)
diff --git a/libc/arch-arm/syscalls/munmap.S b/libc/arch-arm/syscalls/munmap.S
index a94e4e5..740c360 100644
--- a/libc/arch-arm/syscalls/munmap.S
+++ b/libc/arch-arm/syscalls/munmap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munmap)
mov ip, r7
ldr r7, =__NR_munmap
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(munmap)
diff --git a/libc/arch-arm/syscalls/nanosleep.S b/libc/arch-arm/syscalls/nanosleep.S
index 743adc2..fcd6e90 100644
--- a/libc/arch-arm/syscalls/nanosleep.S
+++ b/libc/arch-arm/syscalls/nanosleep.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(nanosleep)
mov ip, r7
ldr r7, =__NR_nanosleep
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(nanosleep)
diff --git a/libc/arch-arm/syscalls/personality.S b/libc/arch-arm/syscalls/personality.S
index 90dfe22..d43d763 100644
--- a/libc/arch-arm/syscalls/personality.S
+++ b/libc/arch-arm/syscalls/personality.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(personality)
mov ip, r7
ldr r7, =__NR_personality
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(personality)
diff --git a/libc/arch-arm/syscalls/pipe2.S b/libc/arch-arm/syscalls/pipe2.S
index b295df5..1cbdfb2 100644
--- a/libc/arch-arm/syscalls/pipe2.S
+++ b/libc/arch-arm/syscalls/pipe2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pipe2)
mov ip, r7
ldr r7, =__NR_pipe2
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(pipe2)
diff --git a/libc/arch-arm/syscalls/prctl.S b/libc/arch-arm/syscalls/prctl.S
index c8f68d3..a2d869c 100644
--- a/libc/arch-arm/syscalls/prctl.S
+++ b/libc/arch-arm/syscalls/prctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prctl)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(prctl)
diff --git a/libc/arch-arm/syscalls/pread64.S b/libc/arch-arm/syscalls/pread64.S
index 3eeae3d..dc07bb3 100644
--- a/libc/arch-arm/syscalls/pread64.S
+++ b/libc/arch-arm/syscalls/pread64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pread64)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(pread64)
diff --git a/libc/arch-arm/syscalls/prlimit64.S b/libc/arch-arm/syscalls/prlimit64.S
index 87c53d5..3ae9e1b 100644
--- a/libc/arch-arm/syscalls/prlimit64.S
+++ b/libc/arch-arm/syscalls/prlimit64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prlimit64)
mov ip, r7
ldr r7, =__NR_prlimit64
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(prlimit64)
diff --git a/libc/arch-arm/syscalls/pwrite64.S b/libc/arch-arm/syscalls/pwrite64.S
index c63b835..5749f6b 100644
--- a/libc/arch-arm/syscalls/pwrite64.S
+++ b/libc/arch-arm/syscalls/pwrite64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pwrite64)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(pwrite64)
diff --git a/libc/arch-arm/syscalls/read.S b/libc/arch-arm/syscalls/read.S
index 9de525c..1c3b395 100644
--- a/libc/arch-arm/syscalls/read.S
+++ b/libc/arch-arm/syscalls/read.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(read)
mov ip, r7
ldr r7, =__NR_read
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(read)
diff --git a/libc/arch-arm/syscalls/readahead.S b/libc/arch-arm/syscalls/readahead.S
index 995f00e..6952b4e 100644
--- a/libc/arch-arm/syscalls/readahead.S
+++ b/libc/arch-arm/syscalls/readahead.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readahead)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(readahead)
diff --git a/libc/arch-arm/syscalls/readlinkat.S b/libc/arch-arm/syscalls/readlinkat.S
index f865de5..e7cc8ff 100644
--- a/libc/arch-arm/syscalls/readlinkat.S
+++ b/libc/arch-arm/syscalls/readlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readlinkat)
mov ip, r7
ldr r7, =__NR_readlinkat
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(readlinkat)
diff --git a/libc/arch-arm/syscalls/readv.S b/libc/arch-arm/syscalls/readv.S
index 9401687..c7807bd 100644
--- a/libc/arch-arm/syscalls/readv.S
+++ b/libc/arch-arm/syscalls/readv.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readv)
mov ip, r7
ldr r7, =__NR_readv
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(readv)
diff --git a/libc/arch-arm/syscalls/recvfrom.S b/libc/arch-arm/syscalls/recvfrom.S
index 6390a82..115a09c 100644
--- a/libc/arch-arm/syscalls/recvfrom.S
+++ b/libc/arch-arm/syscalls/recvfrom.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvfrom)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(recvfrom)
diff --git a/libc/arch-arm/syscalls/recvmmsg.S b/libc/arch-arm/syscalls/recvmmsg.S
index 067ed1e..6cf2b92 100644
--- a/libc/arch-arm/syscalls/recvmmsg.S
+++ b/libc/arch-arm/syscalls/recvmmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmmsg)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(recvmmsg)
diff --git a/libc/arch-arm/syscalls/recvmsg.S b/libc/arch-arm/syscalls/recvmsg.S
index f688481..995a9e3 100644
--- a/libc/arch-arm/syscalls/recvmsg.S
+++ b/libc/arch-arm/syscalls/recvmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmsg)
mov ip, r7
ldr r7, =__NR_recvmsg
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(recvmsg)
diff --git a/libc/arch-arm/syscalls/removexattr.S b/libc/arch-arm/syscalls/removexattr.S
index 59d0e2f..3a32e5c 100644
--- a/libc/arch-arm/syscalls/removexattr.S
+++ b/libc/arch-arm/syscalls/removexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(removexattr)
mov ip, r7
ldr r7, =__NR_removexattr
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(removexattr)
diff --git a/libc/arch-arm/syscalls/renameat.S b/libc/arch-arm/syscalls/renameat.S
index 7a4d268..98e86dc 100644
--- a/libc/arch-arm/syscalls/renameat.S
+++ b/libc/arch-arm/syscalls/renameat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(renameat)
mov ip, r7
ldr r7, =__NR_renameat
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(renameat)
diff --git a/libc/arch-arm/syscalls/sched_get_priority_max.S b/libc/arch-arm/syscalls/sched_get_priority_max.S
index 2aafafc..187e680 100644
--- a/libc/arch-arm/syscalls/sched_get_priority_max.S
+++ b/libc/arch-arm/syscalls/sched_get_priority_max.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_max)
mov ip, r7
ldr r7, =__NR_sched_get_priority_max
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sched_get_priority_max)
diff --git a/libc/arch-arm/syscalls/sched_get_priority_min.S b/libc/arch-arm/syscalls/sched_get_priority_min.S
index 40e14ef..68bf7df 100644
--- a/libc/arch-arm/syscalls/sched_get_priority_min.S
+++ b/libc/arch-arm/syscalls/sched_get_priority_min.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_min)
mov ip, r7
ldr r7, =__NR_sched_get_priority_min
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sched_get_priority_min)
diff --git a/libc/arch-arm/syscalls/sched_getparam.S b/libc/arch-arm/syscalls/sched_getparam.S
index 3d58651..32b97b8 100644
--- a/libc/arch-arm/syscalls/sched_getparam.S
+++ b/libc/arch-arm/syscalls/sched_getparam.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getparam)
mov ip, r7
ldr r7, =__NR_sched_getparam
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sched_getparam)
diff --git a/libc/arch-arm/syscalls/sched_getscheduler.S b/libc/arch-arm/syscalls/sched_getscheduler.S
index e9478ca..330c208 100644
--- a/libc/arch-arm/syscalls/sched_getscheduler.S
+++ b/libc/arch-arm/syscalls/sched_getscheduler.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getscheduler)
mov ip, r7
ldr r7, =__NR_sched_getscheduler
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sched_getscheduler)
diff --git a/libc/arch-arm/syscalls/sched_rr_get_interval.S b/libc/arch-arm/syscalls/sched_rr_get_interval.S
index ed90b73..5d176ac 100644
--- a/libc/arch-arm/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-arm/syscalls/sched_rr_get_interval.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_rr_get_interval)
mov ip, r7
ldr r7, =__NR_sched_rr_get_interval
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sched_rr_get_interval)
diff --git a/libc/arch-arm/syscalls/sched_setaffinity.S b/libc/arch-arm/syscalls/sched_setaffinity.S
index d5f72a9..6653471 100644
--- a/libc/arch-arm/syscalls/sched_setaffinity.S
+++ b/libc/arch-arm/syscalls/sched_setaffinity.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setaffinity)
mov ip, r7
ldr r7, =__NR_sched_setaffinity
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sched_setaffinity)
diff --git a/libc/arch-arm/syscalls/sched_setparam.S b/libc/arch-arm/syscalls/sched_setparam.S
index 3ec06c0..16e1997 100644
--- a/libc/arch-arm/syscalls/sched_setparam.S
+++ b/libc/arch-arm/syscalls/sched_setparam.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setparam)
mov ip, r7
ldr r7, =__NR_sched_setparam
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sched_setparam)
diff --git a/libc/arch-arm/syscalls/sched_setscheduler.S b/libc/arch-arm/syscalls/sched_setscheduler.S
index 0e61ffb..2ec9fec 100644
--- a/libc/arch-arm/syscalls/sched_setscheduler.S
+++ b/libc/arch-arm/syscalls/sched_setscheduler.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setscheduler)
mov ip, r7
ldr r7, =__NR_sched_setscheduler
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sched_setscheduler)
diff --git a/libc/arch-arm/syscalls/sched_yield.S b/libc/arch-arm/syscalls/sched_yield.S
index f26297e..1ec328f 100644
--- a/libc/arch-arm/syscalls/sched_yield.S
+++ b/libc/arch-arm/syscalls/sched_yield.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_yield)
mov ip, r7
ldr r7, =__NR_sched_yield
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sched_yield)
diff --git a/libc/arch-arm/syscalls/sendfile.S b/libc/arch-arm/syscalls/sendfile.S
index e4df8ff..afae021 100644
--- a/libc/arch-arm/syscalls/sendfile.S
+++ b/libc/arch-arm/syscalls/sendfile.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendfile)
mov ip, r7
ldr r7, =__NR_sendfile
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sendfile)
diff --git a/libc/arch-arm/syscalls/sendfile64.S b/libc/arch-arm/syscalls/sendfile64.S
index ab48963..d0ad0b8 100644
--- a/libc/arch-arm/syscalls/sendfile64.S
+++ b/libc/arch-arm/syscalls/sendfile64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendfile64)
mov ip, r7
ldr r7, =__NR_sendfile64
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sendfile64)
diff --git a/libc/arch-arm/syscalls/sendmmsg.S b/libc/arch-arm/syscalls/sendmmsg.S
index 998e6c7..8bb5f80 100644
--- a/libc/arch-arm/syscalls/sendmmsg.S
+++ b/libc/arch-arm/syscalls/sendmmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmmsg)
mov ip, r7
ldr r7, =__NR_sendmmsg
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sendmmsg)
diff --git a/libc/arch-arm/syscalls/sendmsg.S b/libc/arch-arm/syscalls/sendmsg.S
index d25d6b4..fd38140 100644
--- a/libc/arch-arm/syscalls/sendmsg.S
+++ b/libc/arch-arm/syscalls/sendmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmsg)
mov ip, r7
ldr r7, =__NR_sendmsg
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sendmsg)
diff --git a/libc/arch-arm/syscalls/sendto.S b/libc/arch-arm/syscalls/sendto.S
index b5e8de9..29b7b0b 100644
--- a/libc/arch-arm/syscalls/sendto.S
+++ b/libc/arch-arm/syscalls/sendto.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendto)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sendto)
diff --git a/libc/arch-arm/syscalls/setfsgid.S b/libc/arch-arm/syscalls/setfsgid.S
index 7cdb610..f677a94 100644
--- a/libc/arch-arm/syscalls/setfsgid.S
+++ b/libc/arch-arm/syscalls/setfsgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsgid)
mov ip, r7
ldr r7, =__NR_setfsgid
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setfsgid)
diff --git a/libc/arch-arm/syscalls/setfsuid.S b/libc/arch-arm/syscalls/setfsuid.S
index ae65298..5d27a4d 100644
--- a/libc/arch-arm/syscalls/setfsuid.S
+++ b/libc/arch-arm/syscalls/setfsuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsuid)
mov ip, r7
ldr r7, =__NR_setfsuid
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setfsuid)
diff --git a/libc/arch-arm/syscalls/setgid.S b/libc/arch-arm/syscalls/setgid.S
index 15583ac..d9b2b88 100644
--- a/libc/arch-arm/syscalls/setgid.S
+++ b/libc/arch-arm/syscalls/setgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgid)
mov ip, r7
ldr r7, =__NR_setgid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setgid)
diff --git a/libc/arch-arm/syscalls/setgroups.S b/libc/arch-arm/syscalls/setgroups.S
index eb610b1..169de73 100644
--- a/libc/arch-arm/syscalls/setgroups.S
+++ b/libc/arch-arm/syscalls/setgroups.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgroups)
mov ip, r7
ldr r7, =__NR_setgroups32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setgroups)
diff --git a/libc/arch-arm/syscalls/setitimer.S b/libc/arch-arm/syscalls/setitimer.S
index 4da2b40..31b277b 100644
--- a/libc/arch-arm/syscalls/setitimer.S
+++ b/libc/arch-arm/syscalls/setitimer.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setitimer)
mov ip, r7
ldr r7, =__NR_setitimer
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setitimer)
diff --git a/libc/arch-arm/syscalls/setns.S b/libc/arch-arm/syscalls/setns.S
index 891a0ac..59203ef 100644
--- a/libc/arch-arm/syscalls/setns.S
+++ b/libc/arch-arm/syscalls/setns.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setns)
mov ip, r7
ldr r7, =__NR_setns
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setns)
diff --git a/libc/arch-arm/syscalls/setpgid.S b/libc/arch-arm/syscalls/setpgid.S
index e4edcdf..4a91520 100644
--- a/libc/arch-arm/syscalls/setpgid.S
+++ b/libc/arch-arm/syscalls/setpgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpgid)
mov ip, r7
ldr r7, =__NR_setpgid
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setpgid)
diff --git a/libc/arch-arm/syscalls/setpriority.S b/libc/arch-arm/syscalls/setpriority.S
index 80d0d82..2053ce1 100644
--- a/libc/arch-arm/syscalls/setpriority.S
+++ b/libc/arch-arm/syscalls/setpriority.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpriority)
mov ip, r7
ldr r7, =__NR_setpriority
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setpriority)
diff --git a/libc/arch-arm/syscalls/setregid.S b/libc/arch-arm/syscalls/setregid.S
index b2cd345..f1bdc60 100644
--- a/libc/arch-arm/syscalls/setregid.S
+++ b/libc/arch-arm/syscalls/setregid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setregid)
mov ip, r7
ldr r7, =__NR_setregid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setregid)
diff --git a/libc/arch-arm/syscalls/setresgid.S b/libc/arch-arm/syscalls/setresgid.S
index 75a9f75..9b8968a 100644
--- a/libc/arch-arm/syscalls/setresgid.S
+++ b/libc/arch-arm/syscalls/setresgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresgid)
mov ip, r7
ldr r7, =__NR_setresgid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setresgid)
diff --git a/libc/arch-arm/syscalls/setresuid.S b/libc/arch-arm/syscalls/setresuid.S
index f3382f2..c26a955 100644
--- a/libc/arch-arm/syscalls/setresuid.S
+++ b/libc/arch-arm/syscalls/setresuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresuid)
mov ip, r7
ldr r7, =__NR_setresuid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setresuid)
diff --git a/libc/arch-arm/syscalls/setreuid.S b/libc/arch-arm/syscalls/setreuid.S
index 1d866e9..796191a 100644
--- a/libc/arch-arm/syscalls/setreuid.S
+++ b/libc/arch-arm/syscalls/setreuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setreuid)
mov ip, r7
ldr r7, =__NR_setreuid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setreuid)
diff --git a/libc/arch-arm/syscalls/setrlimit.S b/libc/arch-arm/syscalls/setrlimit.S
index 0ddd711..c87b21b 100644
--- a/libc/arch-arm/syscalls/setrlimit.S
+++ b/libc/arch-arm/syscalls/setrlimit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setrlimit)
mov ip, r7
ldr r7, =__NR_setrlimit
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setrlimit)
diff --git a/libc/arch-arm/syscalls/setsid.S b/libc/arch-arm/syscalls/setsid.S
index 69b351f..83bda1b 100644
--- a/libc/arch-arm/syscalls/setsid.S
+++ b/libc/arch-arm/syscalls/setsid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsid)
mov ip, r7
ldr r7, =__NR_setsid
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setsid)
diff --git a/libc/arch-arm/syscalls/setsockopt.S b/libc/arch-arm/syscalls/setsockopt.S
index 87df622..8ea3893 100644
--- a/libc/arch-arm/syscalls/setsockopt.S
+++ b/libc/arch-arm/syscalls/setsockopt.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsockopt)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setsockopt)
diff --git a/libc/arch-arm/syscalls/settimeofday.S b/libc/arch-arm/syscalls/settimeofday.S
index 76697fc..5763f40 100644
--- a/libc/arch-arm/syscalls/settimeofday.S
+++ b/libc/arch-arm/syscalls/settimeofday.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(settimeofday)
mov ip, r7
ldr r7, =__NR_settimeofday
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(settimeofday)
diff --git a/libc/arch-arm/syscalls/setuid.S b/libc/arch-arm/syscalls/setuid.S
index 26d3ed1..55b349c 100644
--- a/libc/arch-arm/syscalls/setuid.S
+++ b/libc/arch-arm/syscalls/setuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setuid)
mov ip, r7
ldr r7, =__NR_setuid32
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setuid)
diff --git a/libc/arch-arm/syscalls/setxattr.S b/libc/arch-arm/syscalls/setxattr.S
index ec948ce..8ba4b77 100644
--- a/libc/arch-arm/syscalls/setxattr.S
+++ b/libc/arch-arm/syscalls/setxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setxattr)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(setxattr)
diff --git a/libc/arch-arm/syscalls/shutdown.S b/libc/arch-arm/syscalls/shutdown.S
index e9a27d4..889934a 100644
--- a/libc/arch-arm/syscalls/shutdown.S
+++ b/libc/arch-arm/syscalls/shutdown.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(shutdown)
mov ip, r7
ldr r7, =__NR_shutdown
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(shutdown)
diff --git a/libc/arch-arm/syscalls/sigaltstack.S b/libc/arch-arm/syscalls/sigaltstack.S
index 18a1ffe..b61b25d 100644
--- a/libc/arch-arm/syscalls/sigaltstack.S
+++ b/libc/arch-arm/syscalls/sigaltstack.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sigaltstack)
mov ip, r7
ldr r7, =__NR_sigaltstack
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sigaltstack)
diff --git a/libc/arch-arm/syscalls/socketpair.S b/libc/arch-arm/syscalls/socketpair.S
index 66f0c32..f3c8a4b 100644
--- a/libc/arch-arm/syscalls/socketpair.S
+++ b/libc/arch-arm/syscalls/socketpair.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(socketpair)
mov ip, r7
ldr r7, =__NR_socketpair
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(socketpair)
diff --git a/libc/arch-arm/syscalls/splice.S b/libc/arch-arm/syscalls/splice.S
index 6273138..6bc3f0d 100644
--- a/libc/arch-arm/syscalls/splice.S
+++ b/libc/arch-arm/syscalls/splice.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(splice)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
@@ -20,5 +18,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(splice)
diff --git a/libc/arch-arm/syscalls/swapoff.S b/libc/arch-arm/syscalls/swapoff.S
index a497aad..a7aaa82 100644
--- a/libc/arch-arm/syscalls/swapoff.S
+++ b/libc/arch-arm/syscalls/swapoff.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapoff)
mov ip, r7
ldr r7, =__NR_swapoff
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(swapoff)
diff --git a/libc/arch-arm/syscalls/swapon.S b/libc/arch-arm/syscalls/swapon.S
index ded2abc..6ea93c3 100644
--- a/libc/arch-arm/syscalls/swapon.S
+++ b/libc/arch-arm/syscalls/swapon.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapon)
mov ip, r7
ldr r7, =__NR_swapon
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(swapon)
diff --git a/libc/arch-arm/syscalls/symlinkat.S b/libc/arch-arm/syscalls/symlinkat.S
index cc91b88..d330a54 100644
--- a/libc/arch-arm/syscalls/symlinkat.S
+++ b/libc/arch-arm/syscalls/symlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(symlinkat)
mov ip, r7
ldr r7, =__NR_symlinkat
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(symlinkat)
diff --git a/libc/arch-arm/syscalls/sync.S b/libc/arch-arm/syscalls/sync.S
index ab22855..48ecfc0 100644
--- a/libc/arch-arm/syscalls/sync.S
+++ b/libc/arch-arm/syscalls/sync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sync)
mov ip, r7
ldr r7, =__NR_sync
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sync)
diff --git a/libc/arch-arm/syscalls/sysinfo.S b/libc/arch-arm/syscalls/sysinfo.S
index f5fb4e6..709478e 100644
--- a/libc/arch-arm/syscalls/sysinfo.S
+++ b/libc/arch-arm/syscalls/sysinfo.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sysinfo)
mov ip, r7
ldr r7, =__NR_sysinfo
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(sysinfo)
diff --git a/libc/arch-arm/syscalls/tee.S b/libc/arch-arm/syscalls/tee.S
index 7e155df..a019c00 100644
--- a/libc/arch-arm/syscalls/tee.S
+++ b/libc/arch-arm/syscalls/tee.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tee)
mov ip, r7
ldr r7, =__NR_tee
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(tee)
diff --git a/libc/arch-arm/syscalls/tgkill.S b/libc/arch-arm/syscalls/tgkill.S
index 98440b1..2068465 100644
--- a/libc/arch-arm/syscalls/tgkill.S
+++ b/libc/arch-arm/syscalls/tgkill.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tgkill)
mov ip, r7
ldr r7, =__NR_tgkill
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(tgkill)
diff --git a/libc/arch-arm/syscalls/timerfd_create.S b/libc/arch-arm/syscalls/timerfd_create.S
index 9211b54..89a80cd 100644
--- a/libc/arch-arm/syscalls/timerfd_create.S
+++ b/libc/arch-arm/syscalls/timerfd_create.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_create)
mov ip, r7
ldr r7, =__NR_timerfd_create
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(timerfd_create)
diff --git a/libc/arch-arm/syscalls/timerfd_gettime.S b/libc/arch-arm/syscalls/timerfd_gettime.S
index c27e008..4a7df76 100644
--- a/libc/arch-arm/syscalls/timerfd_gettime.S
+++ b/libc/arch-arm/syscalls/timerfd_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_gettime)
mov ip, r7
ldr r7, =__NR_timerfd_gettime
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(timerfd_gettime)
diff --git a/libc/arch-arm/syscalls/timerfd_settime.S b/libc/arch-arm/syscalls/timerfd_settime.S
index 7acd408..2e0fe93 100644
--- a/libc/arch-arm/syscalls/timerfd_settime.S
+++ b/libc/arch-arm/syscalls/timerfd_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_settime)
mov ip, r7
ldr r7, =__NR_timerfd_settime
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(timerfd_settime)
diff --git a/libc/arch-arm/syscalls/times.S b/libc/arch-arm/syscalls/times.S
index b5695c4..289c185 100644
--- a/libc/arch-arm/syscalls/times.S
+++ b/libc/arch-arm/syscalls/times.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(times)
mov ip, r7
ldr r7, =__NR_times
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(times)
diff --git a/libc/arch-arm/syscalls/truncate.S b/libc/arch-arm/syscalls/truncate.S
index 7915722..bb33beb 100644
--- a/libc/arch-arm/syscalls/truncate.S
+++ b/libc/arch-arm/syscalls/truncate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(truncate)
mov ip, r7
ldr r7, =__NR_truncate
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(truncate)
diff --git a/libc/arch-arm/syscalls/truncate64.S b/libc/arch-arm/syscalls/truncate64.S
index d59374a..9cafbb5 100644
--- a/libc/arch-arm/syscalls/truncate64.S
+++ b/libc/arch-arm/syscalls/truncate64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(truncate64)
mov ip, r7
ldr r7, =__NR_truncate64
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(truncate64)
diff --git a/libc/arch-arm/syscalls/umask.S b/libc/arch-arm/syscalls/umask.S
index 5b03fb3..5dc4461 100644
--- a/libc/arch-arm/syscalls/umask.S
+++ b/libc/arch-arm/syscalls/umask.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umask)
mov ip, r7
ldr r7, =__NR_umask
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(umask)
diff --git a/libc/arch-arm/syscalls/umount2.S b/libc/arch-arm/syscalls/umount2.S
index 841eb97..435eda4 100644
--- a/libc/arch-arm/syscalls/umount2.S
+++ b/libc/arch-arm/syscalls/umount2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umount2)
mov ip, r7
ldr r7, =__NR_umount2
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(umount2)
diff --git a/libc/arch-arm/syscalls/uname.S b/libc/arch-arm/syscalls/uname.S
index 76480b4..8af6123 100644
--- a/libc/arch-arm/syscalls/uname.S
+++ b/libc/arch-arm/syscalls/uname.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(uname)
mov ip, r7
ldr r7, =__NR_uname
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(uname)
diff --git a/libc/arch-arm/syscalls/unlinkat.S b/libc/arch-arm/syscalls/unlinkat.S
index 6759768..96257e6 100644
--- a/libc/arch-arm/syscalls/unlinkat.S
+++ b/libc/arch-arm/syscalls/unlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unlinkat)
mov ip, r7
ldr r7, =__NR_unlinkat
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(unlinkat)
diff --git a/libc/arch-arm/syscalls/unshare.S b/libc/arch-arm/syscalls/unshare.S
index 19a5b6a..8054171 100644
--- a/libc/arch-arm/syscalls/unshare.S
+++ b/libc/arch-arm/syscalls/unshare.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unshare)
mov ip, r7
ldr r7, =__NR_unshare
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(unshare)
diff --git a/libc/arch-arm/syscalls/utimensat.S b/libc/arch-arm/syscalls/utimensat.S
index 6d50688..f3c2fa2 100644
--- a/libc/arch-arm/syscalls/utimensat.S
+++ b/libc/arch-arm/syscalls/utimensat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(utimensat)
mov ip, r7
ldr r7, =__NR_utimensat
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(utimensat)
diff --git a/libc/arch-arm/syscalls/vfork.S b/libc/arch-arm/syscalls/vfork.S
index 8543986..5f4cb3d 100644
--- a/libc/arch-arm/syscalls/vfork.S
+++ b/libc/arch-arm/syscalls/vfork.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(vfork)
mov ip, r7
ldr r7, =__NR_vfork
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(vfork)
diff --git a/libc/arch-arm/syscalls/vmsplice.S b/libc/arch-arm/syscalls/vmsplice.S
index 8239158..cc12ca5 100644
--- a/libc/arch-arm/syscalls/vmsplice.S
+++ b/libc/arch-arm/syscalls/vmsplice.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(vmsplice)
mov ip, r7
ldr r7, =__NR_vmsplice
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(vmsplice)
diff --git a/libc/arch-arm/syscalls/wait4.S b/libc/arch-arm/syscalls/wait4.S
index ffb2587..26a4929 100644
--- a/libc/arch-arm/syscalls/wait4.S
+++ b/libc/arch-arm/syscalls/wait4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(wait4)
mov ip, r7
ldr r7, =__NR_wait4
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(wait4)
diff --git a/libc/arch-arm/syscalls/write.S b/libc/arch-arm/syscalls/write.S
index 8da1176..bf89d7f 100644
--- a/libc/arch-arm/syscalls/write.S
+++ b/libc/arch-arm/syscalls/write.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(write)
mov ip, r7
ldr r7, =__NR_write
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(write)
diff --git a/libc/arch-arm/syscalls/writev.S b/libc/arch-arm/syscalls/writev.S
index f17ad94..15b5275 100644
--- a/libc/arch-arm/syscalls/writev.S
+++ b/libc/arch-arm/syscalls/writev.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(writev)
mov ip, r7
ldr r7, =__NR_writev
@@ -12,5 +10,5 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(writev)
diff --git a/libc/arch-arm64/arm64.mk b/libc/arch-arm64/arm64.mk
index ed991ce..6c4f6a6 100644
--- a/libc/arch-arm64/arm64.mk
+++ b/libc/arch-arm64/arm64.mk
@@ -29,7 +29,6 @@
libc_bionic_src_files_arm64 := \
arch-arm64/bionic/__bionic_clone.S \
arch-arm64/bionic/_exit_with_stack_teardown.S \
- arch-arm64/bionic/__get_sp.S \
arch-arm64/bionic/__rt_sigreturn.S \
arch-arm64/bionic/_setjmp.S \
arch-arm64/bionic/setjmp.S \
diff --git a/libc/arch-arm64/bionic/__bionic_clone.S b/libc/arch-arm64/bionic/__bionic_clone.S
index 74db4b5..56ac0f6 100644
--- a/libc/arch-arm64/bionic/__bionic_clone.S
+++ b/libc/arch-arm64/bionic/__bionic_clone.S
@@ -44,7 +44,7 @@
# Set errno if something went wrong.
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
diff --git a/libc/arch-arm64/bionic/__get_sp.S b/libc/arch-arm64/bionic/__get_sp.S
deleted file mode 100644
index d5e88e9..0000000
--- a/libc/arch-arm64/bionic/__get_sp.S
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-#include <private/bionic_asm.h>
-
-ENTRY_PRIVATE(__get_sp)
- mov x0, sp
- ret
-END(__get_sp)
diff --git a/libc/arch-arm64/bionic/syscall.S b/libc/arch-arm64/bionic/syscall.S
index 658af78..8389f98 100644
--- a/libc/arch-arm64/bionic/syscall.S
+++ b/libc/arch-arm64/bionic/syscall.S
@@ -43,7 +43,7 @@
/* check if syscall returned successfully */
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(syscall)
diff --git a/libc/arch-arm64/bionic/vfork.S b/libc/arch-arm64/bionic/vfork.S
index c700623..b6a672d 100644
--- a/libc/arch-arm64/bionic/vfork.S
+++ b/libc/arch-arm64/bionic/vfork.S
@@ -42,7 +42,7 @@
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(vfork)
diff --git a/libc/arch-arm64/include/machine/asm.h b/libc/arch-arm64/include/machine/asm.h
index 31b5c63..2bea043 100644
--- a/libc/arch-arm64/include/machine/asm.h
+++ b/libc/arch-arm64/include/machine/asm.h
@@ -38,9 +38,7 @@
#ifndef _AARCH64_ASM_H_
#define _AARCH64_ASM_H_
-#ifndef _ALIGN_TEXT
-# define _ALIGN_TEXT .align 0
-#endif
+#define __bionic_asm_align 0
#undef __bionic_asm_function_type
#define __bionic_asm_function_type %function
diff --git a/libc/arch-arm64/syscalls/__accept4.S b/libc/arch-arm64/syscalls/__accept4.S
index bee9fda..559e6a7 100644
--- a/libc/arch-arm64/syscalls/__accept4.S
+++ b/libc/arch-arm64/syscalls/__accept4.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__accept4)
mov x8, __NR_accept4
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__accept4)
diff --git a/libc/arch-arm64/syscalls/__brk.S b/libc/arch-arm64/syscalls/__brk.S
index e91e762..fb794bf 100644
--- a/libc/arch-arm64/syscalls/__brk.S
+++ b/libc/arch-arm64/syscalls/__brk.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__brk)
mov x8, __NR_brk
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__brk)
diff --git a/libc/arch-arm64/syscalls/__clock_gettime.S b/libc/arch-arm64/syscalls/__clock_gettime.S
index d4a65e8..658ab29 100644
--- a/libc/arch-arm64/syscalls/__clock_gettime.S
+++ b/libc/arch-arm64/syscalls/__clock_gettime.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__clock_gettime)
mov x8, __NR_clock_gettime
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__clock_gettime)
diff --git a/libc/arch-arm64/syscalls/__connect.S b/libc/arch-arm64/syscalls/__connect.S
index 4f19dc7..c18e6eb 100644
--- a/libc/arch-arm64/syscalls/__connect.S
+++ b/libc/arch-arm64/syscalls/__connect.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__connect)
mov x8, __NR_connect
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__connect)
diff --git a/libc/arch-arm64/syscalls/__epoll_pwait.S b/libc/arch-arm64/syscalls/__epoll_pwait.S
index 7f40fbc..acf2bbf 100644
--- a/libc/arch-arm64/syscalls/__epoll_pwait.S
+++ b/libc/arch-arm64/syscalls/__epoll_pwait.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__epoll_pwait)
mov x8, __NR_epoll_pwait
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__epoll_pwait)
diff --git a/libc/arch-arm64/syscalls/__exit.S b/libc/arch-arm64/syscalls/__exit.S
index 30849ce..b6b1866 100644
--- a/libc/arch-arm64/syscalls/__exit.S
+++ b/libc/arch-arm64/syscalls/__exit.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__exit)
mov x8, __NR_exit
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__exit)
diff --git a/libc/arch-arm64/syscalls/__getcpu.S b/libc/arch-arm64/syscalls/__getcpu.S
index 4821917..11ed68e 100644
--- a/libc/arch-arm64/syscalls/__getcpu.S
+++ b/libc/arch-arm64/syscalls/__getcpu.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcpu)
mov x8, __NR_getcpu
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__getcpu)
diff --git a/libc/arch-arm64/syscalls/__getcwd.S b/libc/arch-arm64/syscalls/__getcwd.S
index f0212a2..c64f4d2 100644
--- a/libc/arch-arm64/syscalls/__getcwd.S
+++ b/libc/arch-arm64/syscalls/__getcwd.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcwd)
mov x8, __NR_getcwd
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__getcwd)
diff --git a/libc/arch-arm64/syscalls/__getdents64.S b/libc/arch-arm64/syscalls/__getdents64.S
index 0061cd6..9943390 100644
--- a/libc/arch-arm64/syscalls/__getdents64.S
+++ b/libc/arch-arm64/syscalls/__getdents64.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getdents64)
mov x8, __NR_getdents64
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__getdents64)
diff --git a/libc/arch-arm64/syscalls/__getpid.S b/libc/arch-arm64/syscalls/__getpid.S
index 011d82d..fbc96df 100644
--- a/libc/arch-arm64/syscalls/__getpid.S
+++ b/libc/arch-arm64/syscalls/__getpid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpid)
mov x8, __NR_getpid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__getpid)
diff --git a/libc/arch-arm64/syscalls/__getpriority.S b/libc/arch-arm64/syscalls/__getpriority.S
index 80188b3..9d98e22 100644
--- a/libc/arch-arm64/syscalls/__getpriority.S
+++ b/libc/arch-arm64/syscalls/__getpriority.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpriority)
mov x8, __NR_getpriority
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__getpriority)
diff --git a/libc/arch-arm64/syscalls/__gettimeofday.S b/libc/arch-arm64/syscalls/__gettimeofday.S
index 7d1b5d3..0c8206a 100644
--- a/libc/arch-arm64/syscalls/__gettimeofday.S
+++ b/libc/arch-arm64/syscalls/__gettimeofday.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__gettimeofday)
mov x8, __NR_gettimeofday
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__gettimeofday)
diff --git a/libc/arch-arm64/syscalls/__ioctl.S b/libc/arch-arm64/syscalls/__ioctl.S
index 3d42f1a..62bc28c 100644
--- a/libc/arch-arm64/syscalls/__ioctl.S
+++ b/libc/arch-arm64/syscalls/__ioctl.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ioctl)
mov x8, __NR_ioctl
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__ioctl)
diff --git a/libc/arch-arm64/syscalls/__openat.S b/libc/arch-arm64/syscalls/__openat.S
index 1ff0b48..8b6853f 100644
--- a/libc/arch-arm64/syscalls/__openat.S
+++ b/libc/arch-arm64/syscalls/__openat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__openat)
mov x8, __NR_openat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__openat)
diff --git a/libc/arch-arm64/syscalls/__ppoll.S b/libc/arch-arm64/syscalls/__ppoll.S
index 9517ce3..1f54d67 100644
--- a/libc/arch-arm64/syscalls/__ppoll.S
+++ b/libc/arch-arm64/syscalls/__ppoll.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ppoll)
mov x8, __NR_ppoll
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__ppoll)
diff --git a/libc/arch-arm64/syscalls/__pselect6.S b/libc/arch-arm64/syscalls/__pselect6.S
index 7e14e02..388d84e 100644
--- a/libc/arch-arm64/syscalls/__pselect6.S
+++ b/libc/arch-arm64/syscalls/__pselect6.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__pselect6)
mov x8, __NR_pselect6
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__pselect6)
diff --git a/libc/arch-arm64/syscalls/__ptrace.S b/libc/arch-arm64/syscalls/__ptrace.S
index b325e29..d68b674 100644
--- a/libc/arch-arm64/syscalls/__ptrace.S
+++ b/libc/arch-arm64/syscalls/__ptrace.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ptrace)
mov x8, __NR_ptrace
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__ptrace)
diff --git a/libc/arch-arm64/syscalls/__reboot.S b/libc/arch-arm64/syscalls/__reboot.S
index 04b18c9..79cd5be 100644
--- a/libc/arch-arm64/syscalls/__reboot.S
+++ b/libc/arch-arm64/syscalls/__reboot.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__reboot)
mov x8, __NR_reboot
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__reboot)
diff --git a/libc/arch-arm64/syscalls/__rt_sigaction.S b/libc/arch-arm64/syscalls/__rt_sigaction.S
index 3def558..65fea2e 100644
--- a/libc/arch-arm64/syscalls/__rt_sigaction.S
+++ b/libc/arch-arm64/syscalls/__rt_sigaction.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigaction)
mov x8, __NR_rt_sigaction
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__rt_sigaction)
diff --git a/libc/arch-arm64/syscalls/__rt_sigpending.S b/libc/arch-arm64/syscalls/__rt_sigpending.S
index 3ac0cb8..6553781 100644
--- a/libc/arch-arm64/syscalls/__rt_sigpending.S
+++ b/libc/arch-arm64/syscalls/__rt_sigpending.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigpending)
mov x8, __NR_rt_sigpending
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__rt_sigpending)
diff --git a/libc/arch-arm64/syscalls/__rt_sigprocmask.S b/libc/arch-arm64/syscalls/__rt_sigprocmask.S
index 72c7ea6..95127d6 100644
--- a/libc/arch-arm64/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-arm64/syscalls/__rt_sigprocmask.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigprocmask)
mov x8, __NR_rt_sigprocmask
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__rt_sigprocmask)
diff --git a/libc/arch-arm64/syscalls/__rt_sigsuspend.S b/libc/arch-arm64/syscalls/__rt_sigsuspend.S
index a289713..7cbd8d6 100644
--- a/libc/arch-arm64/syscalls/__rt_sigsuspend.S
+++ b/libc/arch-arm64/syscalls/__rt_sigsuspend.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigsuspend)
mov x8, __NR_rt_sigsuspend
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__rt_sigsuspend)
diff --git a/libc/arch-arm64/syscalls/__rt_sigtimedwait.S b/libc/arch-arm64/syscalls/__rt_sigtimedwait.S
index c61e4ac..8001635 100644
--- a/libc/arch-arm64/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-arm64/syscalls/__rt_sigtimedwait.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigtimedwait)
mov x8, __NR_rt_sigtimedwait
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__rt_sigtimedwait)
diff --git a/libc/arch-arm64/syscalls/__sched_getaffinity.S b/libc/arch-arm64/syscalls/__sched_getaffinity.S
index 5bee77e..7dad15e 100644
--- a/libc/arch-arm64/syscalls/__sched_getaffinity.S
+++ b/libc/arch-arm64/syscalls/__sched_getaffinity.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__sched_getaffinity)
mov x8, __NR_sched_getaffinity
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__sched_getaffinity)
diff --git a/libc/arch-arm64/syscalls/__set_tid_address.S b/libc/arch-arm64/syscalls/__set_tid_address.S
index e4790bf..f7ae16d 100644
--- a/libc/arch-arm64/syscalls/__set_tid_address.S
+++ b/libc/arch-arm64/syscalls/__set_tid_address.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__set_tid_address)
mov x8, __NR_set_tid_address
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__set_tid_address)
diff --git a/libc/arch-arm64/syscalls/__signalfd4.S b/libc/arch-arm64/syscalls/__signalfd4.S
index a977a6c..f6e3497 100644
--- a/libc/arch-arm64/syscalls/__signalfd4.S
+++ b/libc/arch-arm64/syscalls/__signalfd4.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__signalfd4)
mov x8, __NR_signalfd4
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__signalfd4)
diff --git a/libc/arch-arm64/syscalls/__socket.S b/libc/arch-arm64/syscalls/__socket.S
index f8bb2ac..344bb2d 100644
--- a/libc/arch-arm64/syscalls/__socket.S
+++ b/libc/arch-arm64/syscalls/__socket.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__socket)
mov x8, __NR_socket
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__socket)
diff --git a/libc/arch-arm64/syscalls/__timer_create.S b/libc/arch-arm64/syscalls/__timer_create.S
index bb54952..4790845 100644
--- a/libc/arch-arm64/syscalls/__timer_create.S
+++ b/libc/arch-arm64/syscalls/__timer_create.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_create)
mov x8, __NR_timer_create
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__timer_create)
diff --git a/libc/arch-arm64/syscalls/__timer_delete.S b/libc/arch-arm64/syscalls/__timer_delete.S
index 47d82f2..ce12613 100644
--- a/libc/arch-arm64/syscalls/__timer_delete.S
+++ b/libc/arch-arm64/syscalls/__timer_delete.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_delete)
mov x8, __NR_timer_delete
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__timer_delete)
diff --git a/libc/arch-arm64/syscalls/__timer_getoverrun.S b/libc/arch-arm64/syscalls/__timer_getoverrun.S
index 9c06112..2cfdf6a 100644
--- a/libc/arch-arm64/syscalls/__timer_getoverrun.S
+++ b/libc/arch-arm64/syscalls/__timer_getoverrun.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_getoverrun)
mov x8, __NR_timer_getoverrun
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__timer_getoverrun)
diff --git a/libc/arch-arm64/syscalls/__timer_gettime.S b/libc/arch-arm64/syscalls/__timer_gettime.S
index e7c7cfe..a1ea323 100644
--- a/libc/arch-arm64/syscalls/__timer_gettime.S
+++ b/libc/arch-arm64/syscalls/__timer_gettime.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_gettime)
mov x8, __NR_timer_gettime
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__timer_gettime)
diff --git a/libc/arch-arm64/syscalls/__timer_settime.S b/libc/arch-arm64/syscalls/__timer_settime.S
index d4a4996..059d705 100644
--- a/libc/arch-arm64/syscalls/__timer_settime.S
+++ b/libc/arch-arm64/syscalls/__timer_settime.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_settime)
mov x8, __NR_timer_settime
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__timer_settime)
diff --git a/libc/arch-arm64/syscalls/__waitid.S b/libc/arch-arm64/syscalls/__waitid.S
index 5bff488..8bd649d 100644
--- a/libc/arch-arm64/syscalls/__waitid.S
+++ b/libc/arch-arm64/syscalls/__waitid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__waitid)
mov x8, __NR_waitid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(__waitid)
diff --git a/libc/arch-arm64/syscalls/_exit.S b/libc/arch-arm64/syscalls/_exit.S
index e88e77a..edf6744 100644
--- a/libc/arch-arm64/syscalls/_exit.S
+++ b/libc/arch-arm64/syscalls/_exit.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(_exit)
mov x8, __NR_exit_group
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(_exit)
diff --git a/libc/arch-arm64/syscalls/acct.S b/libc/arch-arm64/syscalls/acct.S
index 97a8a0c..48cb4e9 100644
--- a/libc/arch-arm64/syscalls/acct.S
+++ b/libc/arch-arm64/syscalls/acct.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(acct)
mov x8, __NR_acct
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(acct)
diff --git a/libc/arch-arm64/syscalls/bind.S b/libc/arch-arm64/syscalls/bind.S
index 1d6d901..47170ff 100644
--- a/libc/arch-arm64/syscalls/bind.S
+++ b/libc/arch-arm64/syscalls/bind.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(bind)
mov x8, __NR_bind
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(bind)
diff --git a/libc/arch-arm64/syscalls/capget.S b/libc/arch-arm64/syscalls/capget.S
index de84929..7e0dfe9 100644
--- a/libc/arch-arm64/syscalls/capget.S
+++ b/libc/arch-arm64/syscalls/capget.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capget)
mov x8, __NR_capget
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(capget)
diff --git a/libc/arch-arm64/syscalls/capset.S b/libc/arch-arm64/syscalls/capset.S
index 1616f8f..e7b7a8d 100644
--- a/libc/arch-arm64/syscalls/capset.S
+++ b/libc/arch-arm64/syscalls/capset.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capset)
mov x8, __NR_capset
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(capset)
diff --git a/libc/arch-arm64/syscalls/chdir.S b/libc/arch-arm64/syscalls/chdir.S
index ccaa2e2..723cd08 100644
--- a/libc/arch-arm64/syscalls/chdir.S
+++ b/libc/arch-arm64/syscalls/chdir.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chdir)
mov x8, __NR_chdir
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(chdir)
diff --git a/libc/arch-arm64/syscalls/chroot.S b/libc/arch-arm64/syscalls/chroot.S
index bede172..e4f6bd9 100644
--- a/libc/arch-arm64/syscalls/chroot.S
+++ b/libc/arch-arm64/syscalls/chroot.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chroot)
mov x8, __NR_chroot
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(chroot)
diff --git a/libc/arch-arm64/syscalls/clock_getres.S b/libc/arch-arm64/syscalls/clock_getres.S
index 3944a15..33fda8f 100644
--- a/libc/arch-arm64/syscalls/clock_getres.S
+++ b/libc/arch-arm64/syscalls/clock_getres.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_getres)
mov x8, __NR_clock_getres
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(clock_getres)
diff --git a/libc/arch-arm64/syscalls/clock_nanosleep.S b/libc/arch-arm64/syscalls/clock_nanosleep.S
index 2182f67..349c5cc 100644
--- a/libc/arch-arm64/syscalls/clock_nanosleep.S
+++ b/libc/arch-arm64/syscalls/clock_nanosleep.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_nanosleep)
mov x8, __NR_clock_nanosleep
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(clock_nanosleep)
diff --git a/libc/arch-arm64/syscalls/clock_settime.S b/libc/arch-arm64/syscalls/clock_settime.S
index 14a662b..62354d1 100644
--- a/libc/arch-arm64/syscalls/clock_settime.S
+++ b/libc/arch-arm64/syscalls/clock_settime.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_settime)
mov x8, __NR_clock_settime
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(clock_settime)
diff --git a/libc/arch-arm64/syscalls/close.S b/libc/arch-arm64/syscalls/close.S
index da9a151..3624581 100644
--- a/libc/arch-arm64/syscalls/close.S
+++ b/libc/arch-arm64/syscalls/close.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(close)
mov x8, __NR_close
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(close)
diff --git a/libc/arch-arm64/syscalls/delete_module.S b/libc/arch-arm64/syscalls/delete_module.S
index 5dcd07f..db8d947 100644
--- a/libc/arch-arm64/syscalls/delete_module.S
+++ b/libc/arch-arm64/syscalls/delete_module.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(delete_module)
mov x8, __NR_delete_module
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(delete_module)
diff --git a/libc/arch-arm64/syscalls/dup.S b/libc/arch-arm64/syscalls/dup.S
index 33a1b65..4e95045 100644
--- a/libc/arch-arm64/syscalls/dup.S
+++ b/libc/arch-arm64/syscalls/dup.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup)
mov x8, __NR_dup
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(dup)
diff --git a/libc/arch-arm64/syscalls/dup3.S b/libc/arch-arm64/syscalls/dup3.S
index 441fec9..2e6be32 100644
--- a/libc/arch-arm64/syscalls/dup3.S
+++ b/libc/arch-arm64/syscalls/dup3.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup3)
mov x8, __NR_dup3
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(dup3)
diff --git a/libc/arch-arm64/syscalls/epoll_create1.S b/libc/arch-arm64/syscalls/epoll_create1.S
index d314f55..6ef518e 100644
--- a/libc/arch-arm64/syscalls/epoll_create1.S
+++ b/libc/arch-arm64/syscalls/epoll_create1.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_create1)
mov x8, __NR_epoll_create1
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(epoll_create1)
diff --git a/libc/arch-arm64/syscalls/epoll_ctl.S b/libc/arch-arm64/syscalls/epoll_ctl.S
index 004c066..1188f38 100644
--- a/libc/arch-arm64/syscalls/epoll_ctl.S
+++ b/libc/arch-arm64/syscalls/epoll_ctl.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_ctl)
mov x8, __NR_epoll_ctl
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(epoll_ctl)
diff --git a/libc/arch-arm64/syscalls/eventfd.S b/libc/arch-arm64/syscalls/eventfd.S
index 11e97d0..ca5df12 100644
--- a/libc/arch-arm64/syscalls/eventfd.S
+++ b/libc/arch-arm64/syscalls/eventfd.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(eventfd)
mov x8, __NR_eventfd2
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(eventfd)
diff --git a/libc/arch-arm64/syscalls/execve.S b/libc/arch-arm64/syscalls/execve.S
index 7b6d943..fc8fb68 100644
--- a/libc/arch-arm64/syscalls/execve.S
+++ b/libc/arch-arm64/syscalls/execve.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(execve)
mov x8, __NR_execve
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(execve)
diff --git a/libc/arch-arm64/syscalls/faccessat.S b/libc/arch-arm64/syscalls/faccessat.S
index 7bd8665..4c96cfa 100644
--- a/libc/arch-arm64/syscalls/faccessat.S
+++ b/libc/arch-arm64/syscalls/faccessat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(faccessat)
mov x8, __NR_faccessat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(faccessat)
diff --git a/libc/arch-arm64/syscalls/fallocate.S b/libc/arch-arm64/syscalls/fallocate.S
index d8795ae..ef3d4a4 100644
--- a/libc/arch-arm64/syscalls/fallocate.S
+++ b/libc/arch-arm64/syscalls/fallocate.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fallocate)
mov x8, __NR_fallocate
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fallocate)
diff --git a/libc/arch-arm64/syscalls/fchdir.S b/libc/arch-arm64/syscalls/fchdir.S
index 7739fed..2e164cb 100644
--- a/libc/arch-arm64/syscalls/fchdir.S
+++ b/libc/arch-arm64/syscalls/fchdir.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchdir)
mov x8, __NR_fchdir
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fchdir)
diff --git a/libc/arch-arm64/syscalls/fchmod.S b/libc/arch-arm64/syscalls/fchmod.S
index 3eec6cb..83a8060 100644
--- a/libc/arch-arm64/syscalls/fchmod.S
+++ b/libc/arch-arm64/syscalls/fchmod.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmod)
mov x8, __NR_fchmod
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fchmod)
diff --git a/libc/arch-arm64/syscalls/fchmodat.S b/libc/arch-arm64/syscalls/fchmodat.S
index f2f285e..8c5bb0e 100644
--- a/libc/arch-arm64/syscalls/fchmodat.S
+++ b/libc/arch-arm64/syscalls/fchmodat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmodat)
mov x8, __NR_fchmodat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fchmodat)
diff --git a/libc/arch-arm64/syscalls/fchown.S b/libc/arch-arm64/syscalls/fchown.S
index a689ba0..4456f1b 100644
--- a/libc/arch-arm64/syscalls/fchown.S
+++ b/libc/arch-arm64/syscalls/fchown.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchown)
mov x8, __NR_fchown
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fchown)
diff --git a/libc/arch-arm64/syscalls/fchownat.S b/libc/arch-arm64/syscalls/fchownat.S
index 7ede083..7ba6611 100644
--- a/libc/arch-arm64/syscalls/fchownat.S
+++ b/libc/arch-arm64/syscalls/fchownat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchownat)
mov x8, __NR_fchownat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fchownat)
diff --git a/libc/arch-arm64/syscalls/fcntl.S b/libc/arch-arm64/syscalls/fcntl.S
index 257c765..e2787ae 100644
--- a/libc/arch-arm64/syscalls/fcntl.S
+++ b/libc/arch-arm64/syscalls/fcntl.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fcntl)
mov x8, __NR_fcntl
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fcntl)
diff --git a/libc/arch-arm64/syscalls/fdatasync.S b/libc/arch-arm64/syscalls/fdatasync.S
index 233abda..225ab29 100644
--- a/libc/arch-arm64/syscalls/fdatasync.S
+++ b/libc/arch-arm64/syscalls/fdatasync.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fdatasync)
mov x8, __NR_fdatasync
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fdatasync)
diff --git a/libc/arch-arm64/syscalls/fgetxattr.S b/libc/arch-arm64/syscalls/fgetxattr.S
index bd579ff..0d6ada7 100644
--- a/libc/arch-arm64/syscalls/fgetxattr.S
+++ b/libc/arch-arm64/syscalls/fgetxattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fgetxattr)
mov x8, __NR_fgetxattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fgetxattr)
diff --git a/libc/arch-arm64/syscalls/flistxattr.S b/libc/arch-arm64/syscalls/flistxattr.S
index 95ccbe2..8921bb4 100644
--- a/libc/arch-arm64/syscalls/flistxattr.S
+++ b/libc/arch-arm64/syscalls/flistxattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flistxattr)
mov x8, __NR_flistxattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(flistxattr)
diff --git a/libc/arch-arm64/syscalls/flock.S b/libc/arch-arm64/syscalls/flock.S
index 2151d6c..0c036c8 100644
--- a/libc/arch-arm64/syscalls/flock.S
+++ b/libc/arch-arm64/syscalls/flock.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flock)
mov x8, __NR_flock
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(flock)
diff --git a/libc/arch-arm64/syscalls/fremovexattr.S b/libc/arch-arm64/syscalls/fremovexattr.S
index 8dd107d..cf3a371 100644
--- a/libc/arch-arm64/syscalls/fremovexattr.S
+++ b/libc/arch-arm64/syscalls/fremovexattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fremovexattr)
mov x8, __NR_fremovexattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fremovexattr)
diff --git a/libc/arch-arm64/syscalls/fsetxattr.S b/libc/arch-arm64/syscalls/fsetxattr.S
index 9e54686..e69e718 100644
--- a/libc/arch-arm64/syscalls/fsetxattr.S
+++ b/libc/arch-arm64/syscalls/fsetxattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsetxattr)
mov x8, __NR_fsetxattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fsetxattr)
diff --git a/libc/arch-arm64/syscalls/fstat64.S b/libc/arch-arm64/syscalls/fstat64.S
index f354e13..85a07f5 100644
--- a/libc/arch-arm64/syscalls/fstat64.S
+++ b/libc/arch-arm64/syscalls/fstat64.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstat64)
mov x8, __NR_fstat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fstat64)
diff --git a/libc/arch-arm64/syscalls/fstatat64.S b/libc/arch-arm64/syscalls/fstatat64.S
index 2fe056e..dafd982 100644
--- a/libc/arch-arm64/syscalls/fstatat64.S
+++ b/libc/arch-arm64/syscalls/fstatat64.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstatat64)
mov x8, __NR_newfstatat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fstatat64)
diff --git a/libc/arch-arm64/syscalls/fstatfs64.S b/libc/arch-arm64/syscalls/fstatfs64.S
index c67ffd6..2ca2dcd 100644
--- a/libc/arch-arm64/syscalls/fstatfs64.S
+++ b/libc/arch-arm64/syscalls/fstatfs64.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstatfs64)
mov x8, __NR_fstatfs
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fstatfs64)
diff --git a/libc/arch-arm64/syscalls/fsync.S b/libc/arch-arm64/syscalls/fsync.S
index ae2fc61..2bc0d0b 100644
--- a/libc/arch-arm64/syscalls/fsync.S
+++ b/libc/arch-arm64/syscalls/fsync.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsync)
mov x8, __NR_fsync
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(fsync)
diff --git a/libc/arch-arm64/syscalls/ftruncate.S b/libc/arch-arm64/syscalls/ftruncate.S
index adf87fe..c6e99f5 100644
--- a/libc/arch-arm64/syscalls/ftruncate.S
+++ b/libc/arch-arm64/syscalls/ftruncate.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(ftruncate)
mov x8, __NR_ftruncate
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(ftruncate)
diff --git a/libc/arch-arm64/syscalls/getegid.S b/libc/arch-arm64/syscalls/getegid.S
index 5066cae..f7d60d9 100644
--- a/libc/arch-arm64/syscalls/getegid.S
+++ b/libc/arch-arm64/syscalls/getegid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getegid)
mov x8, __NR_getegid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getegid)
diff --git a/libc/arch-arm64/syscalls/geteuid.S b/libc/arch-arm64/syscalls/geteuid.S
index 25b1ea9..3096a92 100644
--- a/libc/arch-arm64/syscalls/geteuid.S
+++ b/libc/arch-arm64/syscalls/geteuid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(geteuid)
mov x8, __NR_geteuid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(geteuid)
diff --git a/libc/arch-arm64/syscalls/getgid.S b/libc/arch-arm64/syscalls/getgid.S
index 3f49cb4..2f921ff 100644
--- a/libc/arch-arm64/syscalls/getgid.S
+++ b/libc/arch-arm64/syscalls/getgid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgid)
mov x8, __NR_getgid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getgid)
diff --git a/libc/arch-arm64/syscalls/getgroups.S b/libc/arch-arm64/syscalls/getgroups.S
index 3df4974..a9a897e 100644
--- a/libc/arch-arm64/syscalls/getgroups.S
+++ b/libc/arch-arm64/syscalls/getgroups.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgroups)
mov x8, __NR_getgroups
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getgroups)
diff --git a/libc/arch-arm64/syscalls/getitimer.S b/libc/arch-arm64/syscalls/getitimer.S
index 70cb731..f37063c 100644
--- a/libc/arch-arm64/syscalls/getitimer.S
+++ b/libc/arch-arm64/syscalls/getitimer.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getitimer)
mov x8, __NR_getitimer
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getitimer)
diff --git a/libc/arch-arm64/syscalls/getpeername.S b/libc/arch-arm64/syscalls/getpeername.S
index eefb24a..8374d60 100644
--- a/libc/arch-arm64/syscalls/getpeername.S
+++ b/libc/arch-arm64/syscalls/getpeername.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpeername)
mov x8, __NR_getpeername
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getpeername)
diff --git a/libc/arch-arm64/syscalls/getpgid.S b/libc/arch-arm64/syscalls/getpgid.S
index d12ac52..ffc0d91 100644
--- a/libc/arch-arm64/syscalls/getpgid.S
+++ b/libc/arch-arm64/syscalls/getpgid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpgid)
mov x8, __NR_getpgid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getpgid)
diff --git a/libc/arch-arm64/syscalls/getppid.S b/libc/arch-arm64/syscalls/getppid.S
index af8965b..1e21bdf 100644
--- a/libc/arch-arm64/syscalls/getppid.S
+++ b/libc/arch-arm64/syscalls/getppid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getppid)
mov x8, __NR_getppid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getppid)
diff --git a/libc/arch-arm64/syscalls/getresgid.S b/libc/arch-arm64/syscalls/getresgid.S
index 3c1c0c0..b15357a 100644
--- a/libc/arch-arm64/syscalls/getresgid.S
+++ b/libc/arch-arm64/syscalls/getresgid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresgid)
mov x8, __NR_getresgid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getresgid)
diff --git a/libc/arch-arm64/syscalls/getresuid.S b/libc/arch-arm64/syscalls/getresuid.S
index f50e060..53de6b7 100644
--- a/libc/arch-arm64/syscalls/getresuid.S
+++ b/libc/arch-arm64/syscalls/getresuid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresuid)
mov x8, __NR_getresuid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getresuid)
diff --git a/libc/arch-arm64/syscalls/getrlimit.S b/libc/arch-arm64/syscalls/getrlimit.S
index b759912..518ab73 100644
--- a/libc/arch-arm64/syscalls/getrlimit.S
+++ b/libc/arch-arm64/syscalls/getrlimit.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrlimit)
mov x8, __NR_getrlimit
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getrlimit)
diff --git a/libc/arch-arm64/syscalls/getrusage.S b/libc/arch-arm64/syscalls/getrusage.S
index 1a0d30f..676221a 100644
--- a/libc/arch-arm64/syscalls/getrusage.S
+++ b/libc/arch-arm64/syscalls/getrusage.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrusage)
mov x8, __NR_getrusage
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getrusage)
diff --git a/libc/arch-arm64/syscalls/getsid.S b/libc/arch-arm64/syscalls/getsid.S
index 3c3d753..cfbdfdb 100644
--- a/libc/arch-arm64/syscalls/getsid.S
+++ b/libc/arch-arm64/syscalls/getsid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsid)
mov x8, __NR_getsid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getsid)
diff --git a/libc/arch-arm64/syscalls/getsockname.S b/libc/arch-arm64/syscalls/getsockname.S
index a337986..4cca55d 100644
--- a/libc/arch-arm64/syscalls/getsockname.S
+++ b/libc/arch-arm64/syscalls/getsockname.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockname)
mov x8, __NR_getsockname
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getsockname)
diff --git a/libc/arch-arm64/syscalls/getsockopt.S b/libc/arch-arm64/syscalls/getsockopt.S
index 4b3abd5..96b8c0f 100644
--- a/libc/arch-arm64/syscalls/getsockopt.S
+++ b/libc/arch-arm64/syscalls/getsockopt.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockopt)
mov x8, __NR_getsockopt
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getsockopt)
diff --git a/libc/arch-arm64/syscalls/getuid.S b/libc/arch-arm64/syscalls/getuid.S
index a9193c5..ef95ba7 100644
--- a/libc/arch-arm64/syscalls/getuid.S
+++ b/libc/arch-arm64/syscalls/getuid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getuid)
mov x8, __NR_getuid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getuid)
diff --git a/libc/arch-arm64/syscalls/getxattr.S b/libc/arch-arm64/syscalls/getxattr.S
index afa81ef..2b38f3d 100644
--- a/libc/arch-arm64/syscalls/getxattr.S
+++ b/libc/arch-arm64/syscalls/getxattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getxattr)
mov x8, __NR_getxattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(getxattr)
diff --git a/libc/arch-arm64/syscalls/init_module.S b/libc/arch-arm64/syscalls/init_module.S
index bf0f7d3..913c7cc 100644
--- a/libc/arch-arm64/syscalls/init_module.S
+++ b/libc/arch-arm64/syscalls/init_module.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(init_module)
mov x8, __NR_init_module
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(init_module)
diff --git a/libc/arch-arm64/syscalls/inotify_add_watch.S b/libc/arch-arm64/syscalls/inotify_add_watch.S
index dc30ae5..83a5b57 100644
--- a/libc/arch-arm64/syscalls/inotify_add_watch.S
+++ b/libc/arch-arm64/syscalls/inotify_add_watch.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_add_watch)
mov x8, __NR_inotify_add_watch
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(inotify_add_watch)
diff --git a/libc/arch-arm64/syscalls/inotify_init1.S b/libc/arch-arm64/syscalls/inotify_init1.S
index 1b40ef2..d3bc81b 100644
--- a/libc/arch-arm64/syscalls/inotify_init1.S
+++ b/libc/arch-arm64/syscalls/inotify_init1.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_init1)
mov x8, __NR_inotify_init1
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(inotify_init1)
diff --git a/libc/arch-arm64/syscalls/inotify_rm_watch.S b/libc/arch-arm64/syscalls/inotify_rm_watch.S
index 7c99e86..c44445f 100644
--- a/libc/arch-arm64/syscalls/inotify_rm_watch.S
+++ b/libc/arch-arm64/syscalls/inotify_rm_watch.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_rm_watch)
mov x8, __NR_inotify_rm_watch
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(inotify_rm_watch)
diff --git a/libc/arch-arm64/syscalls/kill.S b/libc/arch-arm64/syscalls/kill.S
index e86e3a4..0334ff0 100644
--- a/libc/arch-arm64/syscalls/kill.S
+++ b/libc/arch-arm64/syscalls/kill.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(kill)
mov x8, __NR_kill
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(kill)
diff --git a/libc/arch-arm64/syscalls/klogctl.S b/libc/arch-arm64/syscalls/klogctl.S
index 567db27..625f359 100644
--- a/libc/arch-arm64/syscalls/klogctl.S
+++ b/libc/arch-arm64/syscalls/klogctl.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(klogctl)
mov x8, __NR_syslog
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(klogctl)
diff --git a/libc/arch-arm64/syscalls/lgetxattr.S b/libc/arch-arm64/syscalls/lgetxattr.S
index 187462a..89db206 100644
--- a/libc/arch-arm64/syscalls/lgetxattr.S
+++ b/libc/arch-arm64/syscalls/lgetxattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lgetxattr)
mov x8, __NR_lgetxattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(lgetxattr)
diff --git a/libc/arch-arm64/syscalls/linkat.S b/libc/arch-arm64/syscalls/linkat.S
index 7cfc2e0..62aea3a 100644
--- a/libc/arch-arm64/syscalls/linkat.S
+++ b/libc/arch-arm64/syscalls/linkat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(linkat)
mov x8, __NR_linkat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(linkat)
diff --git a/libc/arch-arm64/syscalls/listen.S b/libc/arch-arm64/syscalls/listen.S
index 028b9bd..ba97be9 100644
--- a/libc/arch-arm64/syscalls/listen.S
+++ b/libc/arch-arm64/syscalls/listen.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listen)
mov x8, __NR_listen
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(listen)
diff --git a/libc/arch-arm64/syscalls/listxattr.S b/libc/arch-arm64/syscalls/listxattr.S
index 335fafe..48208e6 100644
--- a/libc/arch-arm64/syscalls/listxattr.S
+++ b/libc/arch-arm64/syscalls/listxattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listxattr)
mov x8, __NR_listxattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(listxattr)
diff --git a/libc/arch-arm64/syscalls/llistxattr.S b/libc/arch-arm64/syscalls/llistxattr.S
index e796741..ed66005 100644
--- a/libc/arch-arm64/syscalls/llistxattr.S
+++ b/libc/arch-arm64/syscalls/llistxattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(llistxattr)
mov x8, __NR_llistxattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(llistxattr)
diff --git a/libc/arch-arm64/syscalls/lremovexattr.S b/libc/arch-arm64/syscalls/lremovexattr.S
index 9f4c027..b5e51c7 100644
--- a/libc/arch-arm64/syscalls/lremovexattr.S
+++ b/libc/arch-arm64/syscalls/lremovexattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lremovexattr)
mov x8, __NR_lremovexattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(lremovexattr)
diff --git a/libc/arch-arm64/syscalls/lseek.S b/libc/arch-arm64/syscalls/lseek.S
index aa71768..de96df0 100644
--- a/libc/arch-arm64/syscalls/lseek.S
+++ b/libc/arch-arm64/syscalls/lseek.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lseek)
mov x8, __NR_lseek
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(lseek)
diff --git a/libc/arch-arm64/syscalls/lsetxattr.S b/libc/arch-arm64/syscalls/lsetxattr.S
index babf02d..b873513 100644
--- a/libc/arch-arm64/syscalls/lsetxattr.S
+++ b/libc/arch-arm64/syscalls/lsetxattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lsetxattr)
mov x8, __NR_lsetxattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(lsetxattr)
diff --git a/libc/arch-arm64/syscalls/madvise.S b/libc/arch-arm64/syscalls/madvise.S
index 3d393f1..6fced41 100644
--- a/libc/arch-arm64/syscalls/madvise.S
+++ b/libc/arch-arm64/syscalls/madvise.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(madvise)
mov x8, __NR_madvise
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(madvise)
diff --git a/libc/arch-arm64/syscalls/mincore.S b/libc/arch-arm64/syscalls/mincore.S
index 4432574..5781b4c 100644
--- a/libc/arch-arm64/syscalls/mincore.S
+++ b/libc/arch-arm64/syscalls/mincore.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mincore)
mov x8, __NR_mincore
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(mincore)
diff --git a/libc/arch-arm64/syscalls/mkdirat.S b/libc/arch-arm64/syscalls/mkdirat.S
index 36c876d..fa868a2 100644
--- a/libc/arch-arm64/syscalls/mkdirat.S
+++ b/libc/arch-arm64/syscalls/mkdirat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mkdirat)
mov x8, __NR_mkdirat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(mkdirat)
diff --git a/libc/arch-arm64/syscalls/mknodat.S b/libc/arch-arm64/syscalls/mknodat.S
index e0584db..13632ec 100644
--- a/libc/arch-arm64/syscalls/mknodat.S
+++ b/libc/arch-arm64/syscalls/mknodat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mknodat)
mov x8, __NR_mknodat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(mknodat)
diff --git a/libc/arch-arm64/syscalls/mlock.S b/libc/arch-arm64/syscalls/mlock.S
index 10ddb07..1eee85c 100644
--- a/libc/arch-arm64/syscalls/mlock.S
+++ b/libc/arch-arm64/syscalls/mlock.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlock)
mov x8, __NR_mlock
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(mlock)
diff --git a/libc/arch-arm64/syscalls/mlockall.S b/libc/arch-arm64/syscalls/mlockall.S
index 3602d71..d4ca185 100644
--- a/libc/arch-arm64/syscalls/mlockall.S
+++ b/libc/arch-arm64/syscalls/mlockall.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlockall)
mov x8, __NR_mlockall
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(mlockall)
diff --git a/libc/arch-arm64/syscalls/mmap.S b/libc/arch-arm64/syscalls/mmap.S
index e4e39ca..64b955e 100644
--- a/libc/arch-arm64/syscalls/mmap.S
+++ b/libc/arch-arm64/syscalls/mmap.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mmap)
mov x8, __NR_mmap
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(mmap)
diff --git a/libc/arch-arm64/syscalls/mount.S b/libc/arch-arm64/syscalls/mount.S
index 9b53754..cd35017 100644
--- a/libc/arch-arm64/syscalls/mount.S
+++ b/libc/arch-arm64/syscalls/mount.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mount)
mov x8, __NR_mount
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(mount)
diff --git a/libc/arch-arm64/syscalls/mprotect.S b/libc/arch-arm64/syscalls/mprotect.S
index 788d46e..9dd8812 100644
--- a/libc/arch-arm64/syscalls/mprotect.S
+++ b/libc/arch-arm64/syscalls/mprotect.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mprotect)
mov x8, __NR_mprotect
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(mprotect)
diff --git a/libc/arch-arm64/syscalls/mremap.S b/libc/arch-arm64/syscalls/mremap.S
index 861d52a..69b91d6 100644
--- a/libc/arch-arm64/syscalls/mremap.S
+++ b/libc/arch-arm64/syscalls/mremap.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mremap)
mov x8, __NR_mremap
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(mremap)
diff --git a/libc/arch-arm64/syscalls/msync.S b/libc/arch-arm64/syscalls/msync.S
index 009ce18..72387ea 100644
--- a/libc/arch-arm64/syscalls/msync.S
+++ b/libc/arch-arm64/syscalls/msync.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(msync)
mov x8, __NR_msync
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(msync)
diff --git a/libc/arch-arm64/syscalls/munlock.S b/libc/arch-arm64/syscalls/munlock.S
index 45d6d17..d2a248c 100644
--- a/libc/arch-arm64/syscalls/munlock.S
+++ b/libc/arch-arm64/syscalls/munlock.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlock)
mov x8, __NR_munlock
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(munlock)
diff --git a/libc/arch-arm64/syscalls/munlockall.S b/libc/arch-arm64/syscalls/munlockall.S
index 6240622..ac42cb4 100644
--- a/libc/arch-arm64/syscalls/munlockall.S
+++ b/libc/arch-arm64/syscalls/munlockall.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlockall)
mov x8, __NR_munlockall
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(munlockall)
diff --git a/libc/arch-arm64/syscalls/munmap.S b/libc/arch-arm64/syscalls/munmap.S
index 0291268..9d3f6a6 100644
--- a/libc/arch-arm64/syscalls/munmap.S
+++ b/libc/arch-arm64/syscalls/munmap.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munmap)
mov x8, __NR_munmap
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(munmap)
diff --git a/libc/arch-arm64/syscalls/nanosleep.S b/libc/arch-arm64/syscalls/nanosleep.S
index 7496530..d3e6fae 100644
--- a/libc/arch-arm64/syscalls/nanosleep.S
+++ b/libc/arch-arm64/syscalls/nanosleep.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(nanosleep)
mov x8, __NR_nanosleep
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(nanosleep)
diff --git a/libc/arch-arm64/syscalls/personality.S b/libc/arch-arm64/syscalls/personality.S
index 1c6530c..f9f3bf6 100644
--- a/libc/arch-arm64/syscalls/personality.S
+++ b/libc/arch-arm64/syscalls/personality.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(personality)
mov x8, __NR_personality
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(personality)
diff --git a/libc/arch-arm64/syscalls/pipe2.S b/libc/arch-arm64/syscalls/pipe2.S
index 45538d3..89181cd 100644
--- a/libc/arch-arm64/syscalls/pipe2.S
+++ b/libc/arch-arm64/syscalls/pipe2.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pipe2)
mov x8, __NR_pipe2
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(pipe2)
diff --git a/libc/arch-arm64/syscalls/prctl.S b/libc/arch-arm64/syscalls/prctl.S
index ddfe5a6..86f4df5 100644
--- a/libc/arch-arm64/syscalls/prctl.S
+++ b/libc/arch-arm64/syscalls/prctl.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prctl)
mov x8, __NR_prctl
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(prctl)
diff --git a/libc/arch-arm64/syscalls/pread64.S b/libc/arch-arm64/syscalls/pread64.S
index 9c2fb34..eafc044 100644
--- a/libc/arch-arm64/syscalls/pread64.S
+++ b/libc/arch-arm64/syscalls/pread64.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pread64)
mov x8, __NR_pread64
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(pread64)
diff --git a/libc/arch-arm64/syscalls/prlimit64.S b/libc/arch-arm64/syscalls/prlimit64.S
index d3e07b9..2bece99 100644
--- a/libc/arch-arm64/syscalls/prlimit64.S
+++ b/libc/arch-arm64/syscalls/prlimit64.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prlimit64)
mov x8, __NR_prlimit64
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(prlimit64)
diff --git a/libc/arch-arm64/syscalls/pwrite64.S b/libc/arch-arm64/syscalls/pwrite64.S
index 33ae24b..6970954 100644
--- a/libc/arch-arm64/syscalls/pwrite64.S
+++ b/libc/arch-arm64/syscalls/pwrite64.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pwrite64)
mov x8, __NR_pwrite64
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(pwrite64)
diff --git a/libc/arch-arm64/syscalls/read.S b/libc/arch-arm64/syscalls/read.S
index 3440391..ddb88c8 100644
--- a/libc/arch-arm64/syscalls/read.S
+++ b/libc/arch-arm64/syscalls/read.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(read)
mov x8, __NR_read
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(read)
diff --git a/libc/arch-arm64/syscalls/readahead.S b/libc/arch-arm64/syscalls/readahead.S
index 73683f2..445abd4 100644
--- a/libc/arch-arm64/syscalls/readahead.S
+++ b/libc/arch-arm64/syscalls/readahead.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readahead)
mov x8, __NR_readahead
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(readahead)
diff --git a/libc/arch-arm64/syscalls/readlinkat.S b/libc/arch-arm64/syscalls/readlinkat.S
index 1a89d21..62cc9e2 100644
--- a/libc/arch-arm64/syscalls/readlinkat.S
+++ b/libc/arch-arm64/syscalls/readlinkat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readlinkat)
mov x8, __NR_readlinkat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(readlinkat)
diff --git a/libc/arch-arm64/syscalls/readv.S b/libc/arch-arm64/syscalls/readv.S
index b5d154a..6e7f151 100644
--- a/libc/arch-arm64/syscalls/readv.S
+++ b/libc/arch-arm64/syscalls/readv.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readv)
mov x8, __NR_readv
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(readv)
diff --git a/libc/arch-arm64/syscalls/recvfrom.S b/libc/arch-arm64/syscalls/recvfrom.S
index 80bc1aa..aecf165 100644
--- a/libc/arch-arm64/syscalls/recvfrom.S
+++ b/libc/arch-arm64/syscalls/recvfrom.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvfrom)
mov x8, __NR_recvfrom
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(recvfrom)
diff --git a/libc/arch-arm64/syscalls/recvmmsg.S b/libc/arch-arm64/syscalls/recvmmsg.S
index aa69442..b9cae69 100644
--- a/libc/arch-arm64/syscalls/recvmmsg.S
+++ b/libc/arch-arm64/syscalls/recvmmsg.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmmsg)
mov x8, __NR_recvmmsg
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(recvmmsg)
diff --git a/libc/arch-arm64/syscalls/recvmsg.S b/libc/arch-arm64/syscalls/recvmsg.S
index 095e2aa..2dafdc9 100644
--- a/libc/arch-arm64/syscalls/recvmsg.S
+++ b/libc/arch-arm64/syscalls/recvmsg.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmsg)
mov x8, __NR_recvmsg
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(recvmsg)
diff --git a/libc/arch-arm64/syscalls/removexattr.S b/libc/arch-arm64/syscalls/removexattr.S
index f279f01..ede36a6 100644
--- a/libc/arch-arm64/syscalls/removexattr.S
+++ b/libc/arch-arm64/syscalls/removexattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(removexattr)
mov x8, __NR_removexattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(removexattr)
diff --git a/libc/arch-arm64/syscalls/renameat.S b/libc/arch-arm64/syscalls/renameat.S
index 7c308cd..96025df 100644
--- a/libc/arch-arm64/syscalls/renameat.S
+++ b/libc/arch-arm64/syscalls/renameat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(renameat)
mov x8, __NR_renameat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(renameat)
diff --git a/libc/arch-arm64/syscalls/sched_get_priority_max.S b/libc/arch-arm64/syscalls/sched_get_priority_max.S
index e80ce35..c848889 100644
--- a/libc/arch-arm64/syscalls/sched_get_priority_max.S
+++ b/libc/arch-arm64/syscalls/sched_get_priority_max.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_max)
mov x8, __NR_sched_get_priority_max
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sched_get_priority_max)
diff --git a/libc/arch-arm64/syscalls/sched_get_priority_min.S b/libc/arch-arm64/syscalls/sched_get_priority_min.S
index 3f5f487..74b72a2 100644
--- a/libc/arch-arm64/syscalls/sched_get_priority_min.S
+++ b/libc/arch-arm64/syscalls/sched_get_priority_min.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_min)
mov x8, __NR_sched_get_priority_min
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sched_get_priority_min)
diff --git a/libc/arch-arm64/syscalls/sched_getparam.S b/libc/arch-arm64/syscalls/sched_getparam.S
index 1756867..75a32d4 100644
--- a/libc/arch-arm64/syscalls/sched_getparam.S
+++ b/libc/arch-arm64/syscalls/sched_getparam.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getparam)
mov x8, __NR_sched_getparam
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sched_getparam)
diff --git a/libc/arch-arm64/syscalls/sched_getscheduler.S b/libc/arch-arm64/syscalls/sched_getscheduler.S
index 8fa145f..e24baf2 100644
--- a/libc/arch-arm64/syscalls/sched_getscheduler.S
+++ b/libc/arch-arm64/syscalls/sched_getscheduler.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getscheduler)
mov x8, __NR_sched_getscheduler
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sched_getscheduler)
diff --git a/libc/arch-arm64/syscalls/sched_rr_get_interval.S b/libc/arch-arm64/syscalls/sched_rr_get_interval.S
index 7ff393c..2a6936b 100644
--- a/libc/arch-arm64/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-arm64/syscalls/sched_rr_get_interval.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_rr_get_interval)
mov x8, __NR_sched_rr_get_interval
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sched_rr_get_interval)
diff --git a/libc/arch-arm64/syscalls/sched_setaffinity.S b/libc/arch-arm64/syscalls/sched_setaffinity.S
index 2878459..30b58f6 100644
--- a/libc/arch-arm64/syscalls/sched_setaffinity.S
+++ b/libc/arch-arm64/syscalls/sched_setaffinity.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setaffinity)
mov x8, __NR_sched_setaffinity
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sched_setaffinity)
diff --git a/libc/arch-arm64/syscalls/sched_setparam.S b/libc/arch-arm64/syscalls/sched_setparam.S
index 4135606..eaf25ba 100644
--- a/libc/arch-arm64/syscalls/sched_setparam.S
+++ b/libc/arch-arm64/syscalls/sched_setparam.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setparam)
mov x8, __NR_sched_setparam
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sched_setparam)
diff --git a/libc/arch-arm64/syscalls/sched_setscheduler.S b/libc/arch-arm64/syscalls/sched_setscheduler.S
index e8f991c..31d53c4 100644
--- a/libc/arch-arm64/syscalls/sched_setscheduler.S
+++ b/libc/arch-arm64/syscalls/sched_setscheduler.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setscheduler)
mov x8, __NR_sched_setscheduler
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sched_setscheduler)
diff --git a/libc/arch-arm64/syscalls/sched_yield.S b/libc/arch-arm64/syscalls/sched_yield.S
index cd6a978..4cfeeda 100644
--- a/libc/arch-arm64/syscalls/sched_yield.S
+++ b/libc/arch-arm64/syscalls/sched_yield.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_yield)
mov x8, __NR_sched_yield
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sched_yield)
diff --git a/libc/arch-arm64/syscalls/sendfile.S b/libc/arch-arm64/syscalls/sendfile.S
index c579224..17a0d46 100644
--- a/libc/arch-arm64/syscalls/sendfile.S
+++ b/libc/arch-arm64/syscalls/sendfile.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendfile)
mov x8, __NR_sendfile
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sendfile)
diff --git a/libc/arch-arm64/syscalls/sendmmsg.S b/libc/arch-arm64/syscalls/sendmmsg.S
index e9ce811..e91c246 100644
--- a/libc/arch-arm64/syscalls/sendmmsg.S
+++ b/libc/arch-arm64/syscalls/sendmmsg.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmmsg)
mov x8, __NR_sendmmsg
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sendmmsg)
diff --git a/libc/arch-arm64/syscalls/sendmsg.S b/libc/arch-arm64/syscalls/sendmsg.S
index 78c5e68..a343543 100644
--- a/libc/arch-arm64/syscalls/sendmsg.S
+++ b/libc/arch-arm64/syscalls/sendmsg.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmsg)
mov x8, __NR_sendmsg
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sendmsg)
diff --git a/libc/arch-arm64/syscalls/sendto.S b/libc/arch-arm64/syscalls/sendto.S
index a3ef95d..6a6813e 100644
--- a/libc/arch-arm64/syscalls/sendto.S
+++ b/libc/arch-arm64/syscalls/sendto.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendto)
mov x8, __NR_sendto
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sendto)
diff --git a/libc/arch-arm64/syscalls/setfsgid.S b/libc/arch-arm64/syscalls/setfsgid.S
index 4d28536..1a45df3 100644
--- a/libc/arch-arm64/syscalls/setfsgid.S
+++ b/libc/arch-arm64/syscalls/setfsgid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsgid)
mov x8, __NR_setfsgid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setfsgid)
diff --git a/libc/arch-arm64/syscalls/setfsuid.S b/libc/arch-arm64/syscalls/setfsuid.S
index 238bbf8..cd4efd7 100644
--- a/libc/arch-arm64/syscalls/setfsuid.S
+++ b/libc/arch-arm64/syscalls/setfsuid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsuid)
mov x8, __NR_setfsuid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setfsuid)
diff --git a/libc/arch-arm64/syscalls/setgid.S b/libc/arch-arm64/syscalls/setgid.S
index 182ce1f..c128fb9 100644
--- a/libc/arch-arm64/syscalls/setgid.S
+++ b/libc/arch-arm64/syscalls/setgid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgid)
mov x8, __NR_setgid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setgid)
diff --git a/libc/arch-arm64/syscalls/setgroups.S b/libc/arch-arm64/syscalls/setgroups.S
index 2bc5c7f..aedabd6 100644
--- a/libc/arch-arm64/syscalls/setgroups.S
+++ b/libc/arch-arm64/syscalls/setgroups.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgroups)
mov x8, __NR_setgroups
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setgroups)
diff --git a/libc/arch-arm64/syscalls/setitimer.S b/libc/arch-arm64/syscalls/setitimer.S
index 1a5bbb3..7ce8617 100644
--- a/libc/arch-arm64/syscalls/setitimer.S
+++ b/libc/arch-arm64/syscalls/setitimer.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setitimer)
mov x8, __NR_setitimer
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setitimer)
diff --git a/libc/arch-arm64/syscalls/setns.S b/libc/arch-arm64/syscalls/setns.S
index 68c32da..386e8f4 100644
--- a/libc/arch-arm64/syscalls/setns.S
+++ b/libc/arch-arm64/syscalls/setns.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setns)
mov x8, __NR_setns
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setns)
diff --git a/libc/arch-arm64/syscalls/setpgid.S b/libc/arch-arm64/syscalls/setpgid.S
index 890d354..458c88b 100644
--- a/libc/arch-arm64/syscalls/setpgid.S
+++ b/libc/arch-arm64/syscalls/setpgid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpgid)
mov x8, __NR_setpgid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setpgid)
diff --git a/libc/arch-arm64/syscalls/setpriority.S b/libc/arch-arm64/syscalls/setpriority.S
index 17550ea..ed58f26 100644
--- a/libc/arch-arm64/syscalls/setpriority.S
+++ b/libc/arch-arm64/syscalls/setpriority.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpriority)
mov x8, __NR_setpriority
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setpriority)
diff --git a/libc/arch-arm64/syscalls/setregid.S b/libc/arch-arm64/syscalls/setregid.S
index aa351a8..30d902d 100644
--- a/libc/arch-arm64/syscalls/setregid.S
+++ b/libc/arch-arm64/syscalls/setregid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setregid)
mov x8, __NR_setregid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setregid)
diff --git a/libc/arch-arm64/syscalls/setresgid.S b/libc/arch-arm64/syscalls/setresgid.S
index 517e59e..f56e6ce 100644
--- a/libc/arch-arm64/syscalls/setresgid.S
+++ b/libc/arch-arm64/syscalls/setresgid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresgid)
mov x8, __NR_setresgid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setresgid)
diff --git a/libc/arch-arm64/syscalls/setresuid.S b/libc/arch-arm64/syscalls/setresuid.S
index 6829cef..d5c5cc6 100644
--- a/libc/arch-arm64/syscalls/setresuid.S
+++ b/libc/arch-arm64/syscalls/setresuid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresuid)
mov x8, __NR_setresuid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setresuid)
diff --git a/libc/arch-arm64/syscalls/setreuid.S b/libc/arch-arm64/syscalls/setreuid.S
index af342ef..e76c72e 100644
--- a/libc/arch-arm64/syscalls/setreuid.S
+++ b/libc/arch-arm64/syscalls/setreuid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setreuid)
mov x8, __NR_setreuid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setreuid)
diff --git a/libc/arch-arm64/syscalls/setrlimit.S b/libc/arch-arm64/syscalls/setrlimit.S
index 4401984..6cb6b98 100644
--- a/libc/arch-arm64/syscalls/setrlimit.S
+++ b/libc/arch-arm64/syscalls/setrlimit.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setrlimit)
mov x8, __NR_setrlimit
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setrlimit)
diff --git a/libc/arch-arm64/syscalls/setsid.S b/libc/arch-arm64/syscalls/setsid.S
index 64c76f2..1bb4cc7 100644
--- a/libc/arch-arm64/syscalls/setsid.S
+++ b/libc/arch-arm64/syscalls/setsid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsid)
mov x8, __NR_setsid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setsid)
diff --git a/libc/arch-arm64/syscalls/setsockopt.S b/libc/arch-arm64/syscalls/setsockopt.S
index 51af847..14b0136 100644
--- a/libc/arch-arm64/syscalls/setsockopt.S
+++ b/libc/arch-arm64/syscalls/setsockopt.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsockopt)
mov x8, __NR_setsockopt
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setsockopt)
diff --git a/libc/arch-arm64/syscalls/settimeofday.S b/libc/arch-arm64/syscalls/settimeofday.S
index 357998c..4f0a078 100644
--- a/libc/arch-arm64/syscalls/settimeofday.S
+++ b/libc/arch-arm64/syscalls/settimeofday.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(settimeofday)
mov x8, __NR_settimeofday
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(settimeofday)
diff --git a/libc/arch-arm64/syscalls/setuid.S b/libc/arch-arm64/syscalls/setuid.S
index ad42434..5500dd6 100644
--- a/libc/arch-arm64/syscalls/setuid.S
+++ b/libc/arch-arm64/syscalls/setuid.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setuid)
mov x8, __NR_setuid
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setuid)
diff --git a/libc/arch-arm64/syscalls/setxattr.S b/libc/arch-arm64/syscalls/setxattr.S
index cde2d5f..5ba9e3c 100644
--- a/libc/arch-arm64/syscalls/setxattr.S
+++ b/libc/arch-arm64/syscalls/setxattr.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setxattr)
mov x8, __NR_setxattr
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(setxattr)
diff --git a/libc/arch-arm64/syscalls/shutdown.S b/libc/arch-arm64/syscalls/shutdown.S
index 4813647..ab067fa 100644
--- a/libc/arch-arm64/syscalls/shutdown.S
+++ b/libc/arch-arm64/syscalls/shutdown.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(shutdown)
mov x8, __NR_shutdown
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(shutdown)
diff --git a/libc/arch-arm64/syscalls/sigaltstack.S b/libc/arch-arm64/syscalls/sigaltstack.S
index 74f7e50..a9cbcaf 100644
--- a/libc/arch-arm64/syscalls/sigaltstack.S
+++ b/libc/arch-arm64/syscalls/sigaltstack.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sigaltstack)
mov x8, __NR_sigaltstack
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sigaltstack)
diff --git a/libc/arch-arm64/syscalls/socketpair.S b/libc/arch-arm64/syscalls/socketpair.S
index ec2a3d2..bd70dac 100644
--- a/libc/arch-arm64/syscalls/socketpair.S
+++ b/libc/arch-arm64/syscalls/socketpair.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(socketpair)
mov x8, __NR_socketpair
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(socketpair)
diff --git a/libc/arch-arm64/syscalls/splice.S b/libc/arch-arm64/syscalls/splice.S
index 30443a8..a5450d9 100644
--- a/libc/arch-arm64/syscalls/splice.S
+++ b/libc/arch-arm64/syscalls/splice.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(splice)
mov x8, __NR_splice
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(splice)
diff --git a/libc/arch-arm64/syscalls/statfs64.S b/libc/arch-arm64/syscalls/statfs64.S
index 00b32e7..ec8c588 100644
--- a/libc/arch-arm64/syscalls/statfs64.S
+++ b/libc/arch-arm64/syscalls/statfs64.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(statfs64)
mov x8, __NR_statfs
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(statfs64)
diff --git a/libc/arch-arm64/syscalls/swapoff.S b/libc/arch-arm64/syscalls/swapoff.S
index 54dabb5..0103bd7 100644
--- a/libc/arch-arm64/syscalls/swapoff.S
+++ b/libc/arch-arm64/syscalls/swapoff.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapoff)
mov x8, __NR_swapoff
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(swapoff)
diff --git a/libc/arch-arm64/syscalls/swapon.S b/libc/arch-arm64/syscalls/swapon.S
index 952252f..560c960 100644
--- a/libc/arch-arm64/syscalls/swapon.S
+++ b/libc/arch-arm64/syscalls/swapon.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapon)
mov x8, __NR_swapon
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(swapon)
diff --git a/libc/arch-arm64/syscalls/symlinkat.S b/libc/arch-arm64/syscalls/symlinkat.S
index 27f9334..4a4ea27 100644
--- a/libc/arch-arm64/syscalls/symlinkat.S
+++ b/libc/arch-arm64/syscalls/symlinkat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(symlinkat)
mov x8, __NR_symlinkat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(symlinkat)
diff --git a/libc/arch-arm64/syscalls/sync.S b/libc/arch-arm64/syscalls/sync.S
index 622b028..d285d43 100644
--- a/libc/arch-arm64/syscalls/sync.S
+++ b/libc/arch-arm64/syscalls/sync.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sync)
mov x8, __NR_sync
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sync)
diff --git a/libc/arch-arm64/syscalls/sysinfo.S b/libc/arch-arm64/syscalls/sysinfo.S
index 81d8a94..80a8641 100644
--- a/libc/arch-arm64/syscalls/sysinfo.S
+++ b/libc/arch-arm64/syscalls/sysinfo.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sysinfo)
mov x8, __NR_sysinfo
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(sysinfo)
diff --git a/libc/arch-arm64/syscalls/tee.S b/libc/arch-arm64/syscalls/tee.S
index cb317aa..d7baa26 100644
--- a/libc/arch-arm64/syscalls/tee.S
+++ b/libc/arch-arm64/syscalls/tee.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tee)
mov x8, __NR_tee
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(tee)
diff --git a/libc/arch-arm64/syscalls/tgkill.S b/libc/arch-arm64/syscalls/tgkill.S
index 908811d..fd9ec3b 100644
--- a/libc/arch-arm64/syscalls/tgkill.S
+++ b/libc/arch-arm64/syscalls/tgkill.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tgkill)
mov x8, __NR_tgkill
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(tgkill)
diff --git a/libc/arch-arm64/syscalls/timerfd_create.S b/libc/arch-arm64/syscalls/timerfd_create.S
index 5487492..ee805fd 100644
--- a/libc/arch-arm64/syscalls/timerfd_create.S
+++ b/libc/arch-arm64/syscalls/timerfd_create.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_create)
mov x8, __NR_timerfd_create
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(timerfd_create)
diff --git a/libc/arch-arm64/syscalls/timerfd_gettime.S b/libc/arch-arm64/syscalls/timerfd_gettime.S
index 1c5151f..4d5e2f9 100644
--- a/libc/arch-arm64/syscalls/timerfd_gettime.S
+++ b/libc/arch-arm64/syscalls/timerfd_gettime.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_gettime)
mov x8, __NR_timerfd_gettime
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(timerfd_gettime)
diff --git a/libc/arch-arm64/syscalls/timerfd_settime.S b/libc/arch-arm64/syscalls/timerfd_settime.S
index edd81fac..e925a0c 100644
--- a/libc/arch-arm64/syscalls/timerfd_settime.S
+++ b/libc/arch-arm64/syscalls/timerfd_settime.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_settime)
mov x8, __NR_timerfd_settime
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(timerfd_settime)
diff --git a/libc/arch-arm64/syscalls/times.S b/libc/arch-arm64/syscalls/times.S
index 5541732..d7b9c74 100644
--- a/libc/arch-arm64/syscalls/times.S
+++ b/libc/arch-arm64/syscalls/times.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(times)
mov x8, __NR_times
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(times)
diff --git a/libc/arch-arm64/syscalls/truncate.S b/libc/arch-arm64/syscalls/truncate.S
index be5765c..0e5a33e 100644
--- a/libc/arch-arm64/syscalls/truncate.S
+++ b/libc/arch-arm64/syscalls/truncate.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(truncate)
mov x8, __NR_truncate
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(truncate)
diff --git a/libc/arch-arm64/syscalls/umask.S b/libc/arch-arm64/syscalls/umask.S
index c605b8f..0d71fa6 100644
--- a/libc/arch-arm64/syscalls/umask.S
+++ b/libc/arch-arm64/syscalls/umask.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umask)
mov x8, __NR_umask
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(umask)
diff --git a/libc/arch-arm64/syscalls/umount2.S b/libc/arch-arm64/syscalls/umount2.S
index 73ed330..c25344e 100644
--- a/libc/arch-arm64/syscalls/umount2.S
+++ b/libc/arch-arm64/syscalls/umount2.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umount2)
mov x8, __NR_umount2
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(umount2)
diff --git a/libc/arch-arm64/syscalls/uname.S b/libc/arch-arm64/syscalls/uname.S
index 4d52190..dfdcc03 100644
--- a/libc/arch-arm64/syscalls/uname.S
+++ b/libc/arch-arm64/syscalls/uname.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(uname)
mov x8, __NR_uname
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(uname)
diff --git a/libc/arch-arm64/syscalls/unlinkat.S b/libc/arch-arm64/syscalls/unlinkat.S
index 8fde96e..b1eba63 100644
--- a/libc/arch-arm64/syscalls/unlinkat.S
+++ b/libc/arch-arm64/syscalls/unlinkat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unlinkat)
mov x8, __NR_unlinkat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(unlinkat)
diff --git a/libc/arch-arm64/syscalls/unshare.S b/libc/arch-arm64/syscalls/unshare.S
index ba960e2..74f5663 100644
--- a/libc/arch-arm64/syscalls/unshare.S
+++ b/libc/arch-arm64/syscalls/unshare.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unshare)
mov x8, __NR_unshare
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(unshare)
diff --git a/libc/arch-arm64/syscalls/utimensat.S b/libc/arch-arm64/syscalls/utimensat.S
index 9e4b1ca..b8c6b04 100644
--- a/libc/arch-arm64/syscalls/utimensat.S
+++ b/libc/arch-arm64/syscalls/utimensat.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(utimensat)
mov x8, __NR_utimensat
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(utimensat)
diff --git a/libc/arch-arm64/syscalls/vmsplice.S b/libc/arch-arm64/syscalls/vmsplice.S
index 6a13c5b..9490efb 100644
--- a/libc/arch-arm64/syscalls/vmsplice.S
+++ b/libc/arch-arm64/syscalls/vmsplice.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(vmsplice)
mov x8, __NR_vmsplice
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(vmsplice)
diff --git a/libc/arch-arm64/syscalls/wait4.S b/libc/arch-arm64/syscalls/wait4.S
index f2bcd34..12973b8 100644
--- a/libc/arch-arm64/syscalls/wait4.S
+++ b/libc/arch-arm64/syscalls/wait4.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(wait4)
mov x8, __NR_wait4
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(wait4)
diff --git a/libc/arch-arm64/syscalls/write.S b/libc/arch-arm64/syscalls/write.S
index 1fedabe..e8c3270 100644
--- a/libc/arch-arm64/syscalls/write.S
+++ b/libc/arch-arm64/syscalls/write.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(write)
mov x8, __NR_write
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(write)
diff --git a/libc/arch-arm64/syscalls/writev.S b/libc/arch-arm64/syscalls/writev.S
index 9942ddb..baaffda 100644
--- a/libc/arch-arm64/syscalls/writev.S
+++ b/libc/arch-arm64/syscalls/writev.S
@@ -2,15 +2,13 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(writev)
mov x8, __NR_writev
svc #0
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(writev)
diff --git a/libc/arch-mips/bionic/__bionic_clone.S b/libc/arch-mips/bionic/__bionic_clone.S
index 4b4498d..b216efe 100644
--- a/libc/arch-mips/bionic/__bionic_clone.S
+++ b/libc/arch-mips/bionic/__bionic_clone.S
@@ -66,7 +66,7 @@
.L__error_bc:
move a0,v0
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
END(__bionic_clone)
.hidden __bionic_clone
diff --git a/libc/arch-mips/bionic/__get_sp.S b/libc/arch-mips/bionic/__get_sp.S
deleted file mode 100644
index 5f5d32e..0000000
--- a/libc/arch-mips/bionic/__get_sp.S
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-#include <private/bionic_asm.h>
-
-ENTRY_PRIVATE(__get_sp)
- move v0, sp
- j ra
-END(__get_sp)
diff --git a/libc/arch-mips/bionic/syscall.S b/libc/arch-mips/bionic/syscall.S
index db477a5..5fed0ac 100644
--- a/libc/arch-mips/bionic/syscall.S
+++ b/libc/arch-mips/bionic/syscall.S
@@ -54,7 +54,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/bionic/vfork.S b/libc/arch-mips/bionic/vfork.S
index 96de69e..1849624 100644
--- a/libc/arch-mips/bionic/vfork.S
+++ b/libc/arch-mips/bionic/vfork.S
@@ -52,7 +52,7 @@
j ra
nop
1:
- la t9, __set_errno
+ la t9, __set_errno_internal
j t9
nop
END(vfork)
diff --git a/libc/arch-mips/include/machine/asm.h b/libc/arch-mips/include/machine/asm.h
index 5eacde3..cdc7914 100644
--- a/libc/arch-mips/include/machine/asm.h
+++ b/libc/arch-mips/include/machine/asm.h
@@ -28,9 +28,7 @@
#ifndef _MIPS64_ASM_H
#define _MIPS64_ASM_H
-#ifndef _ALIGN_TEXT
-# define _ALIGN_TEXT .align 4
-#endif
+#define __bionic_asm_align 4
#undef __bionic_asm_custom_entry
#undef __bionic_asm_custom_end
diff --git a/libc/arch-mips/mips.mk b/libc/arch-mips/mips.mk
index 8e415f9..31a1f32 100644
--- a/libc/arch-mips/mips.mk
+++ b/libc/arch-mips/mips.mk
@@ -54,7 +54,6 @@
arch-mips/bionic/bzero.S \
arch-mips/bionic/cacheflush.cpp \
arch-mips/bionic/_exit_with_stack_teardown.S \
- arch-mips/bionic/__get_sp.S \
arch-mips/bionic/_setjmp.S \
arch-mips/bionic/setjmp.S \
arch-mips/bionic/sigsetjmp.S \
diff --git a/libc/arch-mips/string/mips_strlen.c b/libc/arch-mips/string/mips_strlen.c
index 9fb7e6a..45fc4b4 100644
--- a/libc/arch-mips/string/mips_strlen.c
+++ b/libc/arch-mips/string/mips_strlen.c
@@ -30,6 +30,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include <string.h>
#include "mips-string-ops.h"
#define do_strlen_word(__av) {\
@@ -47,8 +48,8 @@
#define strlen my_strlen
#endif
-int
-strlen (const void *_a)
+size_t
+strlen (const char *_a)
{
int cnt = 0;
unsigned x;
diff --git a/libc/arch-mips/syscalls/__accept4.S b/libc/arch-mips/syscalls/__accept4.S
index 2fc8b2a..72df04f 100644
--- a/libc/arch-mips/syscalls/__accept4.S
+++ b/libc/arch-mips/syscalls/__accept4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__accept4)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__brk.S b/libc/arch-mips/syscalls/__brk.S
index 0593b4f..8472663 100644
--- a/libc/arch-mips/syscalls/__brk.S
+++ b/libc/arch-mips/syscalls/__brk.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__brk)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__connect.S b/libc/arch-mips/syscalls/__connect.S
index 20f60e4..38c1b9b 100644
--- a/libc/arch-mips/syscalls/__connect.S
+++ b/libc/arch-mips/syscalls/__connect.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__connect)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__epoll_pwait.S b/libc/arch-mips/syscalls/__epoll_pwait.S
index 3e735f1..3aed9bc 100644
--- a/libc/arch-mips/syscalls/__epoll_pwait.S
+++ b/libc/arch-mips/syscalls/__epoll_pwait.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__epoll_pwait)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__exit.S b/libc/arch-mips/syscalls/__exit.S
index 40c2f87..7349804 100644
--- a/libc/arch-mips/syscalls/__exit.S
+++ b/libc/arch-mips/syscalls/__exit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__exit)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__fcntl64.S b/libc/arch-mips/syscalls/__fcntl64.S
index b541edd..2734be2 100644
--- a/libc/arch-mips/syscalls/__fcntl64.S
+++ b/libc/arch-mips/syscalls/__fcntl64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__fcntl64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__fstatfs64.S b/libc/arch-mips/syscalls/__fstatfs64.S
index d1d68ab..e08cf7e 100644
--- a/libc/arch-mips/syscalls/__fstatfs64.S
+++ b/libc/arch-mips/syscalls/__fstatfs64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__fstatfs64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__getcpu.S b/libc/arch-mips/syscalls/__getcpu.S
index ab3acca..262f440 100644
--- a/libc/arch-mips/syscalls/__getcpu.S
+++ b/libc/arch-mips/syscalls/__getcpu.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcpu)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__getcwd.S b/libc/arch-mips/syscalls/__getcwd.S
index af1c494..ca6ec7c 100644
--- a/libc/arch-mips/syscalls/__getcwd.S
+++ b/libc/arch-mips/syscalls/__getcwd.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcwd)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__getdents64.S b/libc/arch-mips/syscalls/__getdents64.S
index e88c6df..fe7ef86 100644
--- a/libc/arch-mips/syscalls/__getdents64.S
+++ b/libc/arch-mips/syscalls/__getdents64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getdents64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__getpid.S b/libc/arch-mips/syscalls/__getpid.S
index d20188b..f5ab049 100644
--- a/libc/arch-mips/syscalls/__getpid.S
+++ b/libc/arch-mips/syscalls/__getpid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__getpriority.S b/libc/arch-mips/syscalls/__getpriority.S
index bc1efb3..ef6235d 100644
--- a/libc/arch-mips/syscalls/__getpriority.S
+++ b/libc/arch-mips/syscalls/__getpriority.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpriority)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__ioctl.S b/libc/arch-mips/syscalls/__ioctl.S
index 28af834..27716e8 100644
--- a/libc/arch-mips/syscalls/__ioctl.S
+++ b/libc/arch-mips/syscalls/__ioctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ioctl)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__llseek.S b/libc/arch-mips/syscalls/__llseek.S
index 81cf459..e0cb321 100644
--- a/libc/arch-mips/syscalls/__llseek.S
+++ b/libc/arch-mips/syscalls/__llseek.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__llseek)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__mmap2.S b/libc/arch-mips/syscalls/__mmap2.S
index e6022c3..8175b31 100644
--- a/libc/arch-mips/syscalls/__mmap2.S
+++ b/libc/arch-mips/syscalls/__mmap2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__mmap2)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__openat.S b/libc/arch-mips/syscalls/__openat.S
index 0482b5a..c0c3cdf 100644
--- a/libc/arch-mips/syscalls/__openat.S
+++ b/libc/arch-mips/syscalls/__openat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__openat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__ppoll.S b/libc/arch-mips/syscalls/__ppoll.S
index 7cd29f6..75dbbc8 100644
--- a/libc/arch-mips/syscalls/__ppoll.S
+++ b/libc/arch-mips/syscalls/__ppoll.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ppoll)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__pselect6.S b/libc/arch-mips/syscalls/__pselect6.S
index b4279b8..d028156 100644
--- a/libc/arch-mips/syscalls/__pselect6.S
+++ b/libc/arch-mips/syscalls/__pselect6.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__pselect6)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__ptrace.S b/libc/arch-mips/syscalls/__ptrace.S
index 07dcd8f..c5d91fb 100644
--- a/libc/arch-mips/syscalls/__ptrace.S
+++ b/libc/arch-mips/syscalls/__ptrace.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ptrace)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__reboot.S b/libc/arch-mips/syscalls/__reboot.S
index 3a0a70b..c01f7fb 100644
--- a/libc/arch-mips/syscalls/__reboot.S
+++ b/libc/arch-mips/syscalls/__reboot.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__reboot)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__rt_sigaction.S b/libc/arch-mips/syscalls/__rt_sigaction.S
index 858a241..7fa37fd 100644
--- a/libc/arch-mips/syscalls/__rt_sigaction.S
+++ b/libc/arch-mips/syscalls/__rt_sigaction.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigaction)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__rt_sigpending.S b/libc/arch-mips/syscalls/__rt_sigpending.S
index 484da4f..b80b311 100644
--- a/libc/arch-mips/syscalls/__rt_sigpending.S
+++ b/libc/arch-mips/syscalls/__rt_sigpending.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigpending)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__rt_sigprocmask.S b/libc/arch-mips/syscalls/__rt_sigprocmask.S
index 5e61f52..e2a39eb 100644
--- a/libc/arch-mips/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-mips/syscalls/__rt_sigprocmask.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigprocmask)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__rt_sigsuspend.S b/libc/arch-mips/syscalls/__rt_sigsuspend.S
index d128caa..e91c53f 100644
--- a/libc/arch-mips/syscalls/__rt_sigsuspend.S
+++ b/libc/arch-mips/syscalls/__rt_sigsuspend.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigsuspend)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__rt_sigtimedwait.S b/libc/arch-mips/syscalls/__rt_sigtimedwait.S
index 7e70660..0b4195f 100644
--- a/libc/arch-mips/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-mips/syscalls/__rt_sigtimedwait.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigtimedwait)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__sched_getaffinity.S b/libc/arch-mips/syscalls/__sched_getaffinity.S
index f83b7ba..b09f404 100644
--- a/libc/arch-mips/syscalls/__sched_getaffinity.S
+++ b/libc/arch-mips/syscalls/__sched_getaffinity.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__sched_getaffinity)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__set_tid_address.S b/libc/arch-mips/syscalls/__set_tid_address.S
index 7ec0f63..8ca0716 100644
--- a/libc/arch-mips/syscalls/__set_tid_address.S
+++ b/libc/arch-mips/syscalls/__set_tid_address.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__set_tid_address)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__set_tls.S b/libc/arch-mips/syscalls/__set_tls.S
index bb2fa6d..1f9eba5 100644
--- a/libc/arch-mips/syscalls/__set_tls.S
+++ b/libc/arch-mips/syscalls/__set_tls.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__set_tls)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__sigaction.S b/libc/arch-mips/syscalls/__sigaction.S
index 03eb582..0886e95 100644
--- a/libc/arch-mips/syscalls/__sigaction.S
+++ b/libc/arch-mips/syscalls/__sigaction.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__sigaction)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__signalfd4.S b/libc/arch-mips/syscalls/__signalfd4.S
index 9b191c2..8e5717e 100644
--- a/libc/arch-mips/syscalls/__signalfd4.S
+++ b/libc/arch-mips/syscalls/__signalfd4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__signalfd4)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__socket.S b/libc/arch-mips/syscalls/__socket.S
index 9e9a926..c933355 100644
--- a/libc/arch-mips/syscalls/__socket.S
+++ b/libc/arch-mips/syscalls/__socket.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__socket)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__statfs64.S b/libc/arch-mips/syscalls/__statfs64.S
index 5017e96..ed4dcdb 100644
--- a/libc/arch-mips/syscalls/__statfs64.S
+++ b/libc/arch-mips/syscalls/__statfs64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__statfs64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__timer_create.S b/libc/arch-mips/syscalls/__timer_create.S
index 81cc8c4..ef50749 100644
--- a/libc/arch-mips/syscalls/__timer_create.S
+++ b/libc/arch-mips/syscalls/__timer_create.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_create)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__timer_delete.S b/libc/arch-mips/syscalls/__timer_delete.S
index fddb703..5993ace 100644
--- a/libc/arch-mips/syscalls/__timer_delete.S
+++ b/libc/arch-mips/syscalls/__timer_delete.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_delete)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__timer_getoverrun.S b/libc/arch-mips/syscalls/__timer_getoverrun.S
index 3a7313d..31234e5 100644
--- a/libc/arch-mips/syscalls/__timer_getoverrun.S
+++ b/libc/arch-mips/syscalls/__timer_getoverrun.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_getoverrun)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__timer_gettime.S b/libc/arch-mips/syscalls/__timer_gettime.S
index 7b9bed7..38800d3 100644
--- a/libc/arch-mips/syscalls/__timer_gettime.S
+++ b/libc/arch-mips/syscalls/__timer_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_gettime)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__timer_settime.S b/libc/arch-mips/syscalls/__timer_settime.S
index b1198de..73cea73 100644
--- a/libc/arch-mips/syscalls/__timer_settime.S
+++ b/libc/arch-mips/syscalls/__timer_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_settime)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/__waitid.S b/libc/arch-mips/syscalls/__waitid.S
index e60da7f..9d17f8f 100644
--- a/libc/arch-mips/syscalls/__waitid.S
+++ b/libc/arch-mips/syscalls/__waitid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__waitid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/_exit.S b/libc/arch-mips/syscalls/_exit.S
index ae1d61f..5ac1324 100644
--- a/libc/arch-mips/syscalls/_exit.S
+++ b/libc/arch-mips/syscalls/_exit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(_exit)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/_flush_cache.S b/libc/arch-mips/syscalls/_flush_cache.S
index 0074578..a4030e9 100644
--- a/libc/arch-mips/syscalls/_flush_cache.S
+++ b/libc/arch-mips/syscalls/_flush_cache.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(_flush_cache)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/acct.S b/libc/arch-mips/syscalls/acct.S
index 29a7119..e3a5ccd 100644
--- a/libc/arch-mips/syscalls/acct.S
+++ b/libc/arch-mips/syscalls/acct.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(acct)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/bind.S b/libc/arch-mips/syscalls/bind.S
index 6d92fd0..78fe2bb 100644
--- a/libc/arch-mips/syscalls/bind.S
+++ b/libc/arch-mips/syscalls/bind.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(bind)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/capget.S b/libc/arch-mips/syscalls/capget.S
index de76fa3..0cbb626 100644
--- a/libc/arch-mips/syscalls/capget.S
+++ b/libc/arch-mips/syscalls/capget.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capget)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/capset.S b/libc/arch-mips/syscalls/capset.S
index 77fb3a7..e811080 100644
--- a/libc/arch-mips/syscalls/capset.S
+++ b/libc/arch-mips/syscalls/capset.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capset)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/chdir.S b/libc/arch-mips/syscalls/chdir.S
index 2668d69..82b7a2b 100644
--- a/libc/arch-mips/syscalls/chdir.S
+++ b/libc/arch-mips/syscalls/chdir.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chdir)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/chroot.S b/libc/arch-mips/syscalls/chroot.S
index d804c4f..e6a29fc 100644
--- a/libc/arch-mips/syscalls/chroot.S
+++ b/libc/arch-mips/syscalls/chroot.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chroot)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/clock_getres.S b/libc/arch-mips/syscalls/clock_getres.S
index 5219b32..ac7c5c6 100644
--- a/libc/arch-mips/syscalls/clock_getres.S
+++ b/libc/arch-mips/syscalls/clock_getres.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_getres)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/clock_gettime.S b/libc/arch-mips/syscalls/clock_gettime.S
index 32120b1..d227a06 100644
--- a/libc/arch-mips/syscalls/clock_gettime.S
+++ b/libc/arch-mips/syscalls/clock_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_gettime)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/clock_nanosleep.S b/libc/arch-mips/syscalls/clock_nanosleep.S
index 01bab5a..6002ab4 100644
--- a/libc/arch-mips/syscalls/clock_nanosleep.S
+++ b/libc/arch-mips/syscalls/clock_nanosleep.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_nanosleep)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/clock_settime.S b/libc/arch-mips/syscalls/clock_settime.S
index 6b642a1..193bdc2 100644
--- a/libc/arch-mips/syscalls/clock_settime.S
+++ b/libc/arch-mips/syscalls/clock_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_settime)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/close.S b/libc/arch-mips/syscalls/close.S
index 4e3ab67..231f497 100644
--- a/libc/arch-mips/syscalls/close.S
+++ b/libc/arch-mips/syscalls/close.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(close)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/delete_module.S b/libc/arch-mips/syscalls/delete_module.S
index 5c84930..8c01c06 100644
--- a/libc/arch-mips/syscalls/delete_module.S
+++ b/libc/arch-mips/syscalls/delete_module.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(delete_module)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/dup.S b/libc/arch-mips/syscalls/dup.S
index 6969553..b4dcd70 100644
--- a/libc/arch-mips/syscalls/dup.S
+++ b/libc/arch-mips/syscalls/dup.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/dup3.S b/libc/arch-mips/syscalls/dup3.S
index 39e403d..1d9c236 100644
--- a/libc/arch-mips/syscalls/dup3.S
+++ b/libc/arch-mips/syscalls/dup3.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup3)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/epoll_create1.S b/libc/arch-mips/syscalls/epoll_create1.S
index 6feb715..8754879 100644
--- a/libc/arch-mips/syscalls/epoll_create1.S
+++ b/libc/arch-mips/syscalls/epoll_create1.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_create1)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/epoll_ctl.S b/libc/arch-mips/syscalls/epoll_ctl.S
index 4517ea1..14c9202 100644
--- a/libc/arch-mips/syscalls/epoll_ctl.S
+++ b/libc/arch-mips/syscalls/epoll_ctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_ctl)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/eventfd.S b/libc/arch-mips/syscalls/eventfd.S
index 167a851..6494dbc 100644
--- a/libc/arch-mips/syscalls/eventfd.S
+++ b/libc/arch-mips/syscalls/eventfd.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(eventfd)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/execve.S b/libc/arch-mips/syscalls/execve.S
index e6f3af6..2d20b51 100644
--- a/libc/arch-mips/syscalls/execve.S
+++ b/libc/arch-mips/syscalls/execve.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(execve)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/faccessat.S b/libc/arch-mips/syscalls/faccessat.S
index 3bf7717..e616106 100644
--- a/libc/arch-mips/syscalls/faccessat.S
+++ b/libc/arch-mips/syscalls/faccessat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(faccessat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fallocate64.S b/libc/arch-mips/syscalls/fallocate64.S
index 5395c6f..5f05513 100644
--- a/libc/arch-mips/syscalls/fallocate64.S
+++ b/libc/arch-mips/syscalls/fallocate64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fallocate64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fchdir.S b/libc/arch-mips/syscalls/fchdir.S
index 4a5c1e3..d683baa 100644
--- a/libc/arch-mips/syscalls/fchdir.S
+++ b/libc/arch-mips/syscalls/fchdir.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchdir)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fchmod.S b/libc/arch-mips/syscalls/fchmod.S
index 78dc3f7..2a95cc3 100644
--- a/libc/arch-mips/syscalls/fchmod.S
+++ b/libc/arch-mips/syscalls/fchmod.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmod)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fchmodat.S b/libc/arch-mips/syscalls/fchmodat.S
index ebc3a74..d9de036 100644
--- a/libc/arch-mips/syscalls/fchmodat.S
+++ b/libc/arch-mips/syscalls/fchmodat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmodat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fchown.S b/libc/arch-mips/syscalls/fchown.S
index 74956e0..1ac9451 100644
--- a/libc/arch-mips/syscalls/fchown.S
+++ b/libc/arch-mips/syscalls/fchown.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchown)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fchownat.S b/libc/arch-mips/syscalls/fchownat.S
index 54d1fde..be1a021 100644
--- a/libc/arch-mips/syscalls/fchownat.S
+++ b/libc/arch-mips/syscalls/fchownat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchownat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fdatasync.S b/libc/arch-mips/syscalls/fdatasync.S
index f2d1b1f..24d6541 100644
--- a/libc/arch-mips/syscalls/fdatasync.S
+++ b/libc/arch-mips/syscalls/fdatasync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fdatasync)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fgetxattr.S b/libc/arch-mips/syscalls/fgetxattr.S
index 096cd97..6516feb 100644
--- a/libc/arch-mips/syscalls/fgetxattr.S
+++ b/libc/arch-mips/syscalls/fgetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fgetxattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/flistxattr.S b/libc/arch-mips/syscalls/flistxattr.S
index b577e57..0b71532 100644
--- a/libc/arch-mips/syscalls/flistxattr.S
+++ b/libc/arch-mips/syscalls/flistxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flistxattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/flock.S b/libc/arch-mips/syscalls/flock.S
index 87e9e04..8d70c9e 100644
--- a/libc/arch-mips/syscalls/flock.S
+++ b/libc/arch-mips/syscalls/flock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flock)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fremovexattr.S b/libc/arch-mips/syscalls/fremovexattr.S
index 8f7e74e..fba2d6d 100644
--- a/libc/arch-mips/syscalls/fremovexattr.S
+++ b/libc/arch-mips/syscalls/fremovexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fremovexattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fsetxattr.S b/libc/arch-mips/syscalls/fsetxattr.S
index e9a3490..663c0df 100644
--- a/libc/arch-mips/syscalls/fsetxattr.S
+++ b/libc/arch-mips/syscalls/fsetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsetxattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fstat64.S b/libc/arch-mips/syscalls/fstat64.S
index c6d2a32..525c23c 100644
--- a/libc/arch-mips/syscalls/fstat64.S
+++ b/libc/arch-mips/syscalls/fstat64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstat64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fstatat64.S b/libc/arch-mips/syscalls/fstatat64.S
index 2418b02..f7b8e1d 100644
--- a/libc/arch-mips/syscalls/fstatat64.S
+++ b/libc/arch-mips/syscalls/fstatat64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstatat64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/fsync.S b/libc/arch-mips/syscalls/fsync.S
index c5528dc..819f0f2 100644
--- a/libc/arch-mips/syscalls/fsync.S
+++ b/libc/arch-mips/syscalls/fsync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsync)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/ftruncate.S b/libc/arch-mips/syscalls/ftruncate.S
index dfd57a9..0589c81 100644
--- a/libc/arch-mips/syscalls/ftruncate.S
+++ b/libc/arch-mips/syscalls/ftruncate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(ftruncate)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/ftruncate64.S b/libc/arch-mips/syscalls/ftruncate64.S
index a1df9e8..059ff77 100644
--- a/libc/arch-mips/syscalls/ftruncate64.S
+++ b/libc/arch-mips/syscalls/ftruncate64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(ftruncate64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getegid.S b/libc/arch-mips/syscalls/getegid.S
index 10f102c..8ae2d1e 100644
--- a/libc/arch-mips/syscalls/getegid.S
+++ b/libc/arch-mips/syscalls/getegid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getegid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/geteuid.S b/libc/arch-mips/syscalls/geteuid.S
index bac3b74..cf5cf6c 100644
--- a/libc/arch-mips/syscalls/geteuid.S
+++ b/libc/arch-mips/syscalls/geteuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(geteuid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getgid.S b/libc/arch-mips/syscalls/getgid.S
index a1814bb..9bd1fc3 100644
--- a/libc/arch-mips/syscalls/getgid.S
+++ b/libc/arch-mips/syscalls/getgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getgroups.S b/libc/arch-mips/syscalls/getgroups.S
index 51ed523..2eda185 100644
--- a/libc/arch-mips/syscalls/getgroups.S
+++ b/libc/arch-mips/syscalls/getgroups.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgroups)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getitimer.S b/libc/arch-mips/syscalls/getitimer.S
index 1afeee4..2e382c7 100644
--- a/libc/arch-mips/syscalls/getitimer.S
+++ b/libc/arch-mips/syscalls/getitimer.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getitimer)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getpeername.S b/libc/arch-mips/syscalls/getpeername.S
index b6e5f07..8642798 100644
--- a/libc/arch-mips/syscalls/getpeername.S
+++ b/libc/arch-mips/syscalls/getpeername.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpeername)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getpgid.S b/libc/arch-mips/syscalls/getpgid.S
index 01c6ec5..562b9ce 100644
--- a/libc/arch-mips/syscalls/getpgid.S
+++ b/libc/arch-mips/syscalls/getpgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpgid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getppid.S b/libc/arch-mips/syscalls/getppid.S
index 9ed04c0..afff0b9 100644
--- a/libc/arch-mips/syscalls/getppid.S
+++ b/libc/arch-mips/syscalls/getppid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getppid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getresgid.S b/libc/arch-mips/syscalls/getresgid.S
index a2e16d4..248d3f9 100644
--- a/libc/arch-mips/syscalls/getresgid.S
+++ b/libc/arch-mips/syscalls/getresgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresgid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getresuid.S b/libc/arch-mips/syscalls/getresuid.S
index ff162e0..924b6cd 100644
--- a/libc/arch-mips/syscalls/getresuid.S
+++ b/libc/arch-mips/syscalls/getresuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresuid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getrlimit.S b/libc/arch-mips/syscalls/getrlimit.S
index 1632f4d..19570d6 100644
--- a/libc/arch-mips/syscalls/getrlimit.S
+++ b/libc/arch-mips/syscalls/getrlimit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrlimit)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getrusage.S b/libc/arch-mips/syscalls/getrusage.S
index b9c4207..75bc8bc 100644
--- a/libc/arch-mips/syscalls/getrusage.S
+++ b/libc/arch-mips/syscalls/getrusage.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrusage)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getsid.S b/libc/arch-mips/syscalls/getsid.S
index cb56f54..6436ecd 100644
--- a/libc/arch-mips/syscalls/getsid.S
+++ b/libc/arch-mips/syscalls/getsid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getsockname.S b/libc/arch-mips/syscalls/getsockname.S
index f7bff60..ffadd92 100644
--- a/libc/arch-mips/syscalls/getsockname.S
+++ b/libc/arch-mips/syscalls/getsockname.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockname)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getsockopt.S b/libc/arch-mips/syscalls/getsockopt.S
index 1490aa3..6ebe15e 100644
--- a/libc/arch-mips/syscalls/getsockopt.S
+++ b/libc/arch-mips/syscalls/getsockopt.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockopt)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/gettimeofday.S b/libc/arch-mips/syscalls/gettimeofday.S
index a72ced6..672faa3 100644
--- a/libc/arch-mips/syscalls/gettimeofday.S
+++ b/libc/arch-mips/syscalls/gettimeofday.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(gettimeofday)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getuid.S b/libc/arch-mips/syscalls/getuid.S
index 290a701..5858632 100644
--- a/libc/arch-mips/syscalls/getuid.S
+++ b/libc/arch-mips/syscalls/getuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getuid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/getxattr.S b/libc/arch-mips/syscalls/getxattr.S
index 6ed4316..28c7fe6 100644
--- a/libc/arch-mips/syscalls/getxattr.S
+++ b/libc/arch-mips/syscalls/getxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getxattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/init_module.S b/libc/arch-mips/syscalls/init_module.S
index 6caf450..989614a 100644
--- a/libc/arch-mips/syscalls/init_module.S
+++ b/libc/arch-mips/syscalls/init_module.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(init_module)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/inotify_add_watch.S b/libc/arch-mips/syscalls/inotify_add_watch.S
index 8464f8f..7d3315f 100644
--- a/libc/arch-mips/syscalls/inotify_add_watch.S
+++ b/libc/arch-mips/syscalls/inotify_add_watch.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_add_watch)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/inotify_init1.S b/libc/arch-mips/syscalls/inotify_init1.S
index b6cb6bc..e4ec266 100644
--- a/libc/arch-mips/syscalls/inotify_init1.S
+++ b/libc/arch-mips/syscalls/inotify_init1.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_init1)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/inotify_rm_watch.S b/libc/arch-mips/syscalls/inotify_rm_watch.S
index 87a396a..eec9856 100644
--- a/libc/arch-mips/syscalls/inotify_rm_watch.S
+++ b/libc/arch-mips/syscalls/inotify_rm_watch.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_rm_watch)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/kill.S b/libc/arch-mips/syscalls/kill.S
index 3dda006..415da73 100644
--- a/libc/arch-mips/syscalls/kill.S
+++ b/libc/arch-mips/syscalls/kill.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(kill)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/klogctl.S b/libc/arch-mips/syscalls/klogctl.S
index ae9a445..123d8a0 100644
--- a/libc/arch-mips/syscalls/klogctl.S
+++ b/libc/arch-mips/syscalls/klogctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(klogctl)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/lgetxattr.S b/libc/arch-mips/syscalls/lgetxattr.S
index 63c5add..a9916d9 100644
--- a/libc/arch-mips/syscalls/lgetxattr.S
+++ b/libc/arch-mips/syscalls/lgetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lgetxattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/linkat.S b/libc/arch-mips/syscalls/linkat.S
index 5bea417..a05a995 100644
--- a/libc/arch-mips/syscalls/linkat.S
+++ b/libc/arch-mips/syscalls/linkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(linkat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/listen.S b/libc/arch-mips/syscalls/listen.S
index 8d945f5..7bb2ec8 100644
--- a/libc/arch-mips/syscalls/listen.S
+++ b/libc/arch-mips/syscalls/listen.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listen)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/listxattr.S b/libc/arch-mips/syscalls/listxattr.S
index 260d089..c160178 100644
--- a/libc/arch-mips/syscalls/listxattr.S
+++ b/libc/arch-mips/syscalls/listxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listxattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/llistxattr.S b/libc/arch-mips/syscalls/llistxattr.S
index 69474d8..9bf05b0 100644
--- a/libc/arch-mips/syscalls/llistxattr.S
+++ b/libc/arch-mips/syscalls/llistxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(llistxattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/lremovexattr.S b/libc/arch-mips/syscalls/lremovexattr.S
index e33f31f..fe73ddb 100644
--- a/libc/arch-mips/syscalls/lremovexattr.S
+++ b/libc/arch-mips/syscalls/lremovexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lremovexattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/lseek.S b/libc/arch-mips/syscalls/lseek.S
index 21abe1c..6d6b4e5 100644
--- a/libc/arch-mips/syscalls/lseek.S
+++ b/libc/arch-mips/syscalls/lseek.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lseek)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/lsetxattr.S b/libc/arch-mips/syscalls/lsetxattr.S
index dcd510a..69ea0a2 100644
--- a/libc/arch-mips/syscalls/lsetxattr.S
+++ b/libc/arch-mips/syscalls/lsetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lsetxattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/madvise.S b/libc/arch-mips/syscalls/madvise.S
index 49c007a..7d67b80 100644
--- a/libc/arch-mips/syscalls/madvise.S
+++ b/libc/arch-mips/syscalls/madvise.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(madvise)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/mincore.S b/libc/arch-mips/syscalls/mincore.S
index 07102a6..96f5e29 100644
--- a/libc/arch-mips/syscalls/mincore.S
+++ b/libc/arch-mips/syscalls/mincore.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mincore)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/mkdirat.S b/libc/arch-mips/syscalls/mkdirat.S
index 96a2d08..55dd976 100644
--- a/libc/arch-mips/syscalls/mkdirat.S
+++ b/libc/arch-mips/syscalls/mkdirat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mkdirat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/mknodat.S b/libc/arch-mips/syscalls/mknodat.S
index a88b906..1a03a8e 100644
--- a/libc/arch-mips/syscalls/mknodat.S
+++ b/libc/arch-mips/syscalls/mknodat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mknodat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/mlock.S b/libc/arch-mips/syscalls/mlock.S
index eff66b8..3cf7c1b 100644
--- a/libc/arch-mips/syscalls/mlock.S
+++ b/libc/arch-mips/syscalls/mlock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlock)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/mlockall.S b/libc/arch-mips/syscalls/mlockall.S
index c31eeaf..3b90f41 100644
--- a/libc/arch-mips/syscalls/mlockall.S
+++ b/libc/arch-mips/syscalls/mlockall.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlockall)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/mount.S b/libc/arch-mips/syscalls/mount.S
index cb1f1d1..fdf299f 100644
--- a/libc/arch-mips/syscalls/mount.S
+++ b/libc/arch-mips/syscalls/mount.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mount)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/mprotect.S b/libc/arch-mips/syscalls/mprotect.S
index 4e390eb..5618310 100644
--- a/libc/arch-mips/syscalls/mprotect.S
+++ b/libc/arch-mips/syscalls/mprotect.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mprotect)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/mremap.S b/libc/arch-mips/syscalls/mremap.S
index 7b9a68a..7cbb94e 100644
--- a/libc/arch-mips/syscalls/mremap.S
+++ b/libc/arch-mips/syscalls/mremap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mremap)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/msync.S b/libc/arch-mips/syscalls/msync.S
index 7b19a83..fb7462d 100644
--- a/libc/arch-mips/syscalls/msync.S
+++ b/libc/arch-mips/syscalls/msync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(msync)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/munlock.S b/libc/arch-mips/syscalls/munlock.S
index 17dc719..6c65c02 100644
--- a/libc/arch-mips/syscalls/munlock.S
+++ b/libc/arch-mips/syscalls/munlock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlock)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/munlockall.S b/libc/arch-mips/syscalls/munlockall.S
index f0dc2d4..e30dddc 100644
--- a/libc/arch-mips/syscalls/munlockall.S
+++ b/libc/arch-mips/syscalls/munlockall.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlockall)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/munmap.S b/libc/arch-mips/syscalls/munmap.S
index dc3a524..903edde 100644
--- a/libc/arch-mips/syscalls/munmap.S
+++ b/libc/arch-mips/syscalls/munmap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munmap)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/nanosleep.S b/libc/arch-mips/syscalls/nanosleep.S
index fa74288..8dae88b 100644
--- a/libc/arch-mips/syscalls/nanosleep.S
+++ b/libc/arch-mips/syscalls/nanosleep.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(nanosleep)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/personality.S b/libc/arch-mips/syscalls/personality.S
index 467f2ec..2f51d39 100644
--- a/libc/arch-mips/syscalls/personality.S
+++ b/libc/arch-mips/syscalls/personality.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(personality)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/pipe2.S b/libc/arch-mips/syscalls/pipe2.S
index c505956..b06309c 100644
--- a/libc/arch-mips/syscalls/pipe2.S
+++ b/libc/arch-mips/syscalls/pipe2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pipe2)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/prctl.S b/libc/arch-mips/syscalls/prctl.S
index 60c18be..71544ee 100644
--- a/libc/arch-mips/syscalls/prctl.S
+++ b/libc/arch-mips/syscalls/prctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prctl)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/pread64.S b/libc/arch-mips/syscalls/pread64.S
index debc558..9e7248b 100644
--- a/libc/arch-mips/syscalls/pread64.S
+++ b/libc/arch-mips/syscalls/pread64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pread64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/prlimit64.S b/libc/arch-mips/syscalls/prlimit64.S
index ce1686f..ca913df 100644
--- a/libc/arch-mips/syscalls/prlimit64.S
+++ b/libc/arch-mips/syscalls/prlimit64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prlimit64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/pwrite64.S b/libc/arch-mips/syscalls/pwrite64.S
index b1ff89b..ac206aa 100644
--- a/libc/arch-mips/syscalls/pwrite64.S
+++ b/libc/arch-mips/syscalls/pwrite64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pwrite64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/read.S b/libc/arch-mips/syscalls/read.S
index d98c9a6..1355b66 100644
--- a/libc/arch-mips/syscalls/read.S
+++ b/libc/arch-mips/syscalls/read.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(read)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/readahead.S b/libc/arch-mips/syscalls/readahead.S
index 7dd4473..b28df08 100644
--- a/libc/arch-mips/syscalls/readahead.S
+++ b/libc/arch-mips/syscalls/readahead.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readahead)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/readlinkat.S b/libc/arch-mips/syscalls/readlinkat.S
index 99f07a4..5cf84a2 100644
--- a/libc/arch-mips/syscalls/readlinkat.S
+++ b/libc/arch-mips/syscalls/readlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readlinkat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/readv.S b/libc/arch-mips/syscalls/readv.S
index 3985c9c..57952a0 100644
--- a/libc/arch-mips/syscalls/readv.S
+++ b/libc/arch-mips/syscalls/readv.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readv)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/recvfrom.S b/libc/arch-mips/syscalls/recvfrom.S
index afda11e..707ba4b 100644
--- a/libc/arch-mips/syscalls/recvfrom.S
+++ b/libc/arch-mips/syscalls/recvfrom.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvfrom)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/recvmmsg.S b/libc/arch-mips/syscalls/recvmmsg.S
index 1122c01..796d0d8 100644
--- a/libc/arch-mips/syscalls/recvmmsg.S
+++ b/libc/arch-mips/syscalls/recvmmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmmsg)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/recvmsg.S b/libc/arch-mips/syscalls/recvmsg.S
index a64606b..fdcac32 100644
--- a/libc/arch-mips/syscalls/recvmsg.S
+++ b/libc/arch-mips/syscalls/recvmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmsg)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/removexattr.S b/libc/arch-mips/syscalls/removexattr.S
index a356160..d99e1ae 100644
--- a/libc/arch-mips/syscalls/removexattr.S
+++ b/libc/arch-mips/syscalls/removexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(removexattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/renameat.S b/libc/arch-mips/syscalls/renameat.S
index 63de839..c865d74 100644
--- a/libc/arch-mips/syscalls/renameat.S
+++ b/libc/arch-mips/syscalls/renameat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(renameat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sched_get_priority_max.S b/libc/arch-mips/syscalls/sched_get_priority_max.S
index ea88c0f..1c73af6 100644
--- a/libc/arch-mips/syscalls/sched_get_priority_max.S
+++ b/libc/arch-mips/syscalls/sched_get_priority_max.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_max)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sched_get_priority_min.S b/libc/arch-mips/syscalls/sched_get_priority_min.S
index 0320847..b69b72b 100644
--- a/libc/arch-mips/syscalls/sched_get_priority_min.S
+++ b/libc/arch-mips/syscalls/sched_get_priority_min.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_min)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sched_getparam.S b/libc/arch-mips/syscalls/sched_getparam.S
index 4be69b3..387257a 100644
--- a/libc/arch-mips/syscalls/sched_getparam.S
+++ b/libc/arch-mips/syscalls/sched_getparam.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getparam)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sched_getscheduler.S b/libc/arch-mips/syscalls/sched_getscheduler.S
index aaf0e91..9b293db 100644
--- a/libc/arch-mips/syscalls/sched_getscheduler.S
+++ b/libc/arch-mips/syscalls/sched_getscheduler.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getscheduler)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sched_rr_get_interval.S b/libc/arch-mips/syscalls/sched_rr_get_interval.S
index fcf2bcb..3d7b8a8 100644
--- a/libc/arch-mips/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-mips/syscalls/sched_rr_get_interval.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_rr_get_interval)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sched_setaffinity.S b/libc/arch-mips/syscalls/sched_setaffinity.S
index b9394c5..a0e9f6c 100644
--- a/libc/arch-mips/syscalls/sched_setaffinity.S
+++ b/libc/arch-mips/syscalls/sched_setaffinity.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setaffinity)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sched_setparam.S b/libc/arch-mips/syscalls/sched_setparam.S
index 90c82fe..a8a8982 100644
--- a/libc/arch-mips/syscalls/sched_setparam.S
+++ b/libc/arch-mips/syscalls/sched_setparam.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setparam)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sched_setscheduler.S b/libc/arch-mips/syscalls/sched_setscheduler.S
index 05e4e8b..a2cd7fa 100644
--- a/libc/arch-mips/syscalls/sched_setscheduler.S
+++ b/libc/arch-mips/syscalls/sched_setscheduler.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setscheduler)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sched_yield.S b/libc/arch-mips/syscalls/sched_yield.S
index 1556580..295266f 100644
--- a/libc/arch-mips/syscalls/sched_yield.S
+++ b/libc/arch-mips/syscalls/sched_yield.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_yield)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sendfile.S b/libc/arch-mips/syscalls/sendfile.S
index eb99d09..5e5e887 100644
--- a/libc/arch-mips/syscalls/sendfile.S
+++ b/libc/arch-mips/syscalls/sendfile.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendfile)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sendfile64.S b/libc/arch-mips/syscalls/sendfile64.S
index 1d5c5f0..78f1908 100644
--- a/libc/arch-mips/syscalls/sendfile64.S
+++ b/libc/arch-mips/syscalls/sendfile64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendfile64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sendmmsg.S b/libc/arch-mips/syscalls/sendmmsg.S
index 16f37a1..1dc7576 100644
--- a/libc/arch-mips/syscalls/sendmmsg.S
+++ b/libc/arch-mips/syscalls/sendmmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmmsg)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sendmsg.S b/libc/arch-mips/syscalls/sendmsg.S
index 31bb563..88c653e 100644
--- a/libc/arch-mips/syscalls/sendmsg.S
+++ b/libc/arch-mips/syscalls/sendmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmsg)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sendto.S b/libc/arch-mips/syscalls/sendto.S
index 2ba696d..ef3fa9f 100644
--- a/libc/arch-mips/syscalls/sendto.S
+++ b/libc/arch-mips/syscalls/sendto.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendto)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setfsgid.S b/libc/arch-mips/syscalls/setfsgid.S
index 81d33d0..158d2c0 100644
--- a/libc/arch-mips/syscalls/setfsgid.S
+++ b/libc/arch-mips/syscalls/setfsgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsgid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setfsuid.S b/libc/arch-mips/syscalls/setfsuid.S
index 6889077..f76fd17 100644
--- a/libc/arch-mips/syscalls/setfsuid.S
+++ b/libc/arch-mips/syscalls/setfsuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsuid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setgid.S b/libc/arch-mips/syscalls/setgid.S
index 83649da..44127cd 100644
--- a/libc/arch-mips/syscalls/setgid.S
+++ b/libc/arch-mips/syscalls/setgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setgroups.S b/libc/arch-mips/syscalls/setgroups.S
index b98608c..be4dc13 100644
--- a/libc/arch-mips/syscalls/setgroups.S
+++ b/libc/arch-mips/syscalls/setgroups.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgroups)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setitimer.S b/libc/arch-mips/syscalls/setitimer.S
index dc9a8f3..968b453 100644
--- a/libc/arch-mips/syscalls/setitimer.S
+++ b/libc/arch-mips/syscalls/setitimer.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setitimer)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setns.S b/libc/arch-mips/syscalls/setns.S
index 9a4939d..a9270ec 100644
--- a/libc/arch-mips/syscalls/setns.S
+++ b/libc/arch-mips/syscalls/setns.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setns)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setpgid.S b/libc/arch-mips/syscalls/setpgid.S
index cbc1ff3..d2db62f 100644
--- a/libc/arch-mips/syscalls/setpgid.S
+++ b/libc/arch-mips/syscalls/setpgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpgid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setpriority.S b/libc/arch-mips/syscalls/setpriority.S
index 6b8a504..9b68335 100644
--- a/libc/arch-mips/syscalls/setpriority.S
+++ b/libc/arch-mips/syscalls/setpriority.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpriority)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setregid.S b/libc/arch-mips/syscalls/setregid.S
index 6388784..6b7474c 100644
--- a/libc/arch-mips/syscalls/setregid.S
+++ b/libc/arch-mips/syscalls/setregid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setregid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setresgid.S b/libc/arch-mips/syscalls/setresgid.S
index 76968a8..223a0d0 100644
--- a/libc/arch-mips/syscalls/setresgid.S
+++ b/libc/arch-mips/syscalls/setresgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresgid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setresuid.S b/libc/arch-mips/syscalls/setresuid.S
index fae15f8..1f99682 100644
--- a/libc/arch-mips/syscalls/setresuid.S
+++ b/libc/arch-mips/syscalls/setresuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresuid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setreuid.S b/libc/arch-mips/syscalls/setreuid.S
index 8350cb7..fa9c3d2 100644
--- a/libc/arch-mips/syscalls/setreuid.S
+++ b/libc/arch-mips/syscalls/setreuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setreuid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setrlimit.S b/libc/arch-mips/syscalls/setrlimit.S
index d708c2d..016e24c 100644
--- a/libc/arch-mips/syscalls/setrlimit.S
+++ b/libc/arch-mips/syscalls/setrlimit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setrlimit)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setsid.S b/libc/arch-mips/syscalls/setsid.S
index cb5838d..9f3cb48 100644
--- a/libc/arch-mips/syscalls/setsid.S
+++ b/libc/arch-mips/syscalls/setsid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setsockopt.S b/libc/arch-mips/syscalls/setsockopt.S
index da348f1..b2368a1 100644
--- a/libc/arch-mips/syscalls/setsockopt.S
+++ b/libc/arch-mips/syscalls/setsockopt.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsockopt)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/settimeofday.S b/libc/arch-mips/syscalls/settimeofday.S
index cd52b40..e3a5a06 100644
--- a/libc/arch-mips/syscalls/settimeofday.S
+++ b/libc/arch-mips/syscalls/settimeofday.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(settimeofday)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setuid.S b/libc/arch-mips/syscalls/setuid.S
index a80ec5c..ff3da0a 100644
--- a/libc/arch-mips/syscalls/setuid.S
+++ b/libc/arch-mips/syscalls/setuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setuid)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/setxattr.S b/libc/arch-mips/syscalls/setxattr.S
index df7bcdb..5b3a241 100644
--- a/libc/arch-mips/syscalls/setxattr.S
+++ b/libc/arch-mips/syscalls/setxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setxattr)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/shutdown.S b/libc/arch-mips/syscalls/shutdown.S
index 71e6366..5db046f 100644
--- a/libc/arch-mips/syscalls/shutdown.S
+++ b/libc/arch-mips/syscalls/shutdown.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(shutdown)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sigaltstack.S b/libc/arch-mips/syscalls/sigaltstack.S
index b52c60a..f543759 100644
--- a/libc/arch-mips/syscalls/sigaltstack.S
+++ b/libc/arch-mips/syscalls/sigaltstack.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sigaltstack)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/socketpair.S b/libc/arch-mips/syscalls/socketpair.S
index 47223e1..7f85da3 100644
--- a/libc/arch-mips/syscalls/socketpair.S
+++ b/libc/arch-mips/syscalls/socketpair.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(socketpair)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/splice.S b/libc/arch-mips/syscalls/splice.S
index 611a062..a55b7e8 100644
--- a/libc/arch-mips/syscalls/splice.S
+++ b/libc/arch-mips/syscalls/splice.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(splice)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/swapoff.S b/libc/arch-mips/syscalls/swapoff.S
index 8b57068..ce782d0 100644
--- a/libc/arch-mips/syscalls/swapoff.S
+++ b/libc/arch-mips/syscalls/swapoff.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapoff)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/swapon.S b/libc/arch-mips/syscalls/swapon.S
index ef3a537..127c3a8 100644
--- a/libc/arch-mips/syscalls/swapon.S
+++ b/libc/arch-mips/syscalls/swapon.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapon)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/symlinkat.S b/libc/arch-mips/syscalls/symlinkat.S
index 65971a9..b0690a4 100644
--- a/libc/arch-mips/syscalls/symlinkat.S
+++ b/libc/arch-mips/syscalls/symlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(symlinkat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sync.S b/libc/arch-mips/syscalls/sync.S
index d62ae76..8858e74 100644
--- a/libc/arch-mips/syscalls/sync.S
+++ b/libc/arch-mips/syscalls/sync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sync)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/sysinfo.S b/libc/arch-mips/syscalls/sysinfo.S
index 600e086..beefc0e 100644
--- a/libc/arch-mips/syscalls/sysinfo.S
+++ b/libc/arch-mips/syscalls/sysinfo.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sysinfo)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/tee.S b/libc/arch-mips/syscalls/tee.S
index 90ec911..1115907 100644
--- a/libc/arch-mips/syscalls/tee.S
+++ b/libc/arch-mips/syscalls/tee.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tee)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/tgkill.S b/libc/arch-mips/syscalls/tgkill.S
index 39a148b..bea211d 100644
--- a/libc/arch-mips/syscalls/tgkill.S
+++ b/libc/arch-mips/syscalls/tgkill.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tgkill)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/timerfd_create.S b/libc/arch-mips/syscalls/timerfd_create.S
index b50903a..116c628 100644
--- a/libc/arch-mips/syscalls/timerfd_create.S
+++ b/libc/arch-mips/syscalls/timerfd_create.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_create)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/timerfd_gettime.S b/libc/arch-mips/syscalls/timerfd_gettime.S
index 97d3045..df7138c 100644
--- a/libc/arch-mips/syscalls/timerfd_gettime.S
+++ b/libc/arch-mips/syscalls/timerfd_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_gettime)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/timerfd_settime.S b/libc/arch-mips/syscalls/timerfd_settime.S
index 1e56f86..2bfadb9 100644
--- a/libc/arch-mips/syscalls/timerfd_settime.S
+++ b/libc/arch-mips/syscalls/timerfd_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_settime)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/times.S b/libc/arch-mips/syscalls/times.S
index 60904d1..90ce97f 100644
--- a/libc/arch-mips/syscalls/times.S
+++ b/libc/arch-mips/syscalls/times.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(times)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/truncate.S b/libc/arch-mips/syscalls/truncate.S
index ec7bc49..6800705 100644
--- a/libc/arch-mips/syscalls/truncate.S
+++ b/libc/arch-mips/syscalls/truncate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(truncate)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/truncate64.S b/libc/arch-mips/syscalls/truncate64.S
index b6a0234..870e735 100644
--- a/libc/arch-mips/syscalls/truncate64.S
+++ b/libc/arch-mips/syscalls/truncate64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(truncate64)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/umask.S b/libc/arch-mips/syscalls/umask.S
index 8f66e77..ccf4292 100644
--- a/libc/arch-mips/syscalls/umask.S
+++ b/libc/arch-mips/syscalls/umask.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umask)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/umount2.S b/libc/arch-mips/syscalls/umount2.S
index 58e31f3..65a7129 100644
--- a/libc/arch-mips/syscalls/umount2.S
+++ b/libc/arch-mips/syscalls/umount2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umount2)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/uname.S b/libc/arch-mips/syscalls/uname.S
index 401d139..f540b3a 100644
--- a/libc/arch-mips/syscalls/uname.S
+++ b/libc/arch-mips/syscalls/uname.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(uname)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/unlinkat.S b/libc/arch-mips/syscalls/unlinkat.S
index b6e849d..001f9cf 100644
--- a/libc/arch-mips/syscalls/unlinkat.S
+++ b/libc/arch-mips/syscalls/unlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unlinkat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/unshare.S b/libc/arch-mips/syscalls/unshare.S
index 5262832..13ca452 100644
--- a/libc/arch-mips/syscalls/unshare.S
+++ b/libc/arch-mips/syscalls/unshare.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unshare)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/utimensat.S b/libc/arch-mips/syscalls/utimensat.S
index 9ecb5c0..14e5a10 100644
--- a/libc/arch-mips/syscalls/utimensat.S
+++ b/libc/arch-mips/syscalls/utimensat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(utimensat)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/vmsplice.S b/libc/arch-mips/syscalls/vmsplice.S
index 5ad23a6..0191f53 100644
--- a/libc/arch-mips/syscalls/vmsplice.S
+++ b/libc/arch-mips/syscalls/vmsplice.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(vmsplice)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/wait4.S b/libc/arch-mips/syscalls/wait4.S
index 8f8d879..8a12533 100644
--- a/libc/arch-mips/syscalls/wait4.S
+++ b/libc/arch-mips/syscalls/wait4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(wait4)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/write.S b/libc/arch-mips/syscalls/write.S
index 3e37919..62dc36f 100644
--- a/libc/arch-mips/syscalls/write.S
+++ b/libc/arch-mips/syscalls/write.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(write)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips/syscalls/writev.S b/libc/arch-mips/syscalls/writev.S
index 72ea2f2..d8d6616 100644
--- a/libc/arch-mips/syscalls/writev.S
+++ b/libc/arch-mips/syscalls/writev.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(writev)
.set noreorder
.cpload t9
@@ -14,7 +12,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
diff --git a/libc/arch-mips64/bionic/__bionic_clone.S b/libc/arch-mips64/bionic/__bionic_clone.S
index 4f053f9..0d266ee 100644
--- a/libc/arch-mips64/bionic/__bionic_clone.S
+++ b/libc/arch-mips64/bionic/__bionic_clone.S
@@ -93,7 +93,7 @@
j t9
.L__error_bc:
- LA t9,__set_errno
+ LA t9,__set_errno_internal
RESTORE_GP64
PTR_ADDU sp,FRAMESZ
j t9
diff --git a/libc/arch-mips64/bionic/__get_sp.S b/libc/arch-mips64/bionic/__get_sp.S
deleted file mode 100644
index 5f5d32e..0000000
--- a/libc/arch-mips64/bionic/__get_sp.S
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-#include <private/bionic_asm.h>
-
-ENTRY_PRIVATE(__get_sp)
- move v0, sp
- j ra
-END(__get_sp)
diff --git a/libc/arch-mips64/bionic/syscall.S b/libc/arch-mips64/bionic/syscall.S
index c4fd009..4c739fd 100644
--- a/libc/arch-mips64/bionic/syscall.S
+++ b/libc/arch-mips64/bionic/syscall.S
@@ -52,7 +52,7 @@
#else
move a3, a4
move a4, a5
- REG_L a5, FRAMESZ(sp)
+ move a5, a6
#endif
syscall
move a0, v0
@@ -61,7 +61,7 @@
PTR_ADDU sp, FRAMESZ
j ra
1:
- LA t9,__set_errno
+ LA t9,__set_errno_internal
RESTORE_GP64
PTR_ADDU sp, FRAMESZ
j t9
diff --git a/libc/arch-mips64/bionic/vfork.S b/libc/arch-mips64/bionic/vfork.S
index 911a264..d180a8c 100644
--- a/libc/arch-mips64/bionic/vfork.S
+++ b/libc/arch-mips64/bionic/vfork.S
@@ -65,7 +65,7 @@
RESTORE_GP64
j ra
1:
- LA t9,__set_errno
+ LA t9,__set_errno_internal
RESTORE_GP64
j t9
END(vfork)
diff --git a/libc/arch-mips64/include/machine/asm.h b/libc/arch-mips64/include/machine/asm.h
index 5eacde3..cdc7914 100644
--- a/libc/arch-mips64/include/machine/asm.h
+++ b/libc/arch-mips64/include/machine/asm.h
@@ -28,9 +28,7 @@
#ifndef _MIPS64_ASM_H
#define _MIPS64_ASM_H
-#ifndef _ALIGN_TEXT
-# define _ALIGN_TEXT .align 4
-#endif
+#define __bionic_asm_align 4
#undef __bionic_asm_custom_entry
#undef __bionic_asm_custom_end
diff --git a/libc/arch-mips64/syscalls/__accept4.S b/libc/arch-mips64/syscalls/__accept4.S
index 0891d7f..ed9b6c7 100644
--- a/libc/arch-mips64/syscalls/__accept4.S
+++ b/libc/arch-mips64/syscalls/__accept4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__accept4)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__brk.S b/libc/arch-mips64/syscalls/__brk.S
index 86f390c..e1f89c7 100644
--- a/libc/arch-mips64/syscalls/__brk.S
+++ b/libc/arch-mips64/syscalls/__brk.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__brk)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__connect.S b/libc/arch-mips64/syscalls/__connect.S
index 2efbb2a..8c44464 100644
--- a/libc/arch-mips64/syscalls/__connect.S
+++ b/libc/arch-mips64/syscalls/__connect.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__connect)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__epoll_pwait.S b/libc/arch-mips64/syscalls/__epoll_pwait.S
index 430d9bb..5dfb380 100644
--- a/libc/arch-mips64/syscalls/__epoll_pwait.S
+++ b/libc/arch-mips64/syscalls/__epoll_pwait.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__epoll_pwait)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__exit.S b/libc/arch-mips64/syscalls/__exit.S
index ebee0d1..2d5e03d 100644
--- a/libc/arch-mips64/syscalls/__exit.S
+++ b/libc/arch-mips64/syscalls/__exit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__exit)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__getcpu.S b/libc/arch-mips64/syscalls/__getcpu.S
index 34a8acb..a16c21e 100644
--- a/libc/arch-mips64/syscalls/__getcpu.S
+++ b/libc/arch-mips64/syscalls/__getcpu.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcpu)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__getcwd.S b/libc/arch-mips64/syscalls/__getcwd.S
index e7a09a6..53eeb68 100644
--- a/libc/arch-mips64/syscalls/__getcwd.S
+++ b/libc/arch-mips64/syscalls/__getcwd.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcwd)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__getdents64.S b/libc/arch-mips64/syscalls/__getdents64.S
index dc51e72..3720b8e 100644
--- a/libc/arch-mips64/syscalls/__getdents64.S
+++ b/libc/arch-mips64/syscalls/__getdents64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getdents64)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__getpid.S b/libc/arch-mips64/syscalls/__getpid.S
index 86b4071..6d5d926 100644
--- a/libc/arch-mips64/syscalls/__getpid.S
+++ b/libc/arch-mips64/syscalls/__getpid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__getpriority.S b/libc/arch-mips64/syscalls/__getpriority.S
index f0c7267..19327ab 100644
--- a/libc/arch-mips64/syscalls/__getpriority.S
+++ b/libc/arch-mips64/syscalls/__getpriority.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpriority)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__ioctl.S b/libc/arch-mips64/syscalls/__ioctl.S
index 1f94075..7fad0d1 100644
--- a/libc/arch-mips64/syscalls/__ioctl.S
+++ b/libc/arch-mips64/syscalls/__ioctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ioctl)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__openat.S b/libc/arch-mips64/syscalls/__openat.S
index 6cc56da..d3ac13a 100644
--- a/libc/arch-mips64/syscalls/__openat.S
+++ b/libc/arch-mips64/syscalls/__openat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__openat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__ppoll.S b/libc/arch-mips64/syscalls/__ppoll.S
index ce3a551..4e6fb8a 100644
--- a/libc/arch-mips64/syscalls/__ppoll.S
+++ b/libc/arch-mips64/syscalls/__ppoll.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ppoll)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__pselect6.S b/libc/arch-mips64/syscalls/__pselect6.S
index dbfe79f..6d49d1c 100644
--- a/libc/arch-mips64/syscalls/__pselect6.S
+++ b/libc/arch-mips64/syscalls/__pselect6.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__pselect6)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__ptrace.S b/libc/arch-mips64/syscalls/__ptrace.S
index e26217f..5a3ce16 100644
--- a/libc/arch-mips64/syscalls/__ptrace.S
+++ b/libc/arch-mips64/syscalls/__ptrace.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ptrace)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__reboot.S b/libc/arch-mips64/syscalls/__reboot.S
index a4f4e71..587310d 100644
--- a/libc/arch-mips64/syscalls/__reboot.S
+++ b/libc/arch-mips64/syscalls/__reboot.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__reboot)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__rt_sigaction.S b/libc/arch-mips64/syscalls/__rt_sigaction.S
index 10f3598..7dd3cae 100644
--- a/libc/arch-mips64/syscalls/__rt_sigaction.S
+++ b/libc/arch-mips64/syscalls/__rt_sigaction.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigaction)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__rt_sigpending.S b/libc/arch-mips64/syscalls/__rt_sigpending.S
index 7855cca..68ae39a 100644
--- a/libc/arch-mips64/syscalls/__rt_sigpending.S
+++ b/libc/arch-mips64/syscalls/__rt_sigpending.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigpending)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__rt_sigprocmask.S b/libc/arch-mips64/syscalls/__rt_sigprocmask.S
index f1ba2e9..54620e9 100644
--- a/libc/arch-mips64/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-mips64/syscalls/__rt_sigprocmask.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigprocmask)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__rt_sigsuspend.S b/libc/arch-mips64/syscalls/__rt_sigsuspend.S
index 50ebf5e..ea15def 100644
--- a/libc/arch-mips64/syscalls/__rt_sigsuspend.S
+++ b/libc/arch-mips64/syscalls/__rt_sigsuspend.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigsuspend)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__rt_sigtimedwait.S b/libc/arch-mips64/syscalls/__rt_sigtimedwait.S
index 304d049..177f17c 100644
--- a/libc/arch-mips64/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-mips64/syscalls/__rt_sigtimedwait.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigtimedwait)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__sched_getaffinity.S b/libc/arch-mips64/syscalls/__sched_getaffinity.S
index cf590c3..2081706 100644
--- a/libc/arch-mips64/syscalls/__sched_getaffinity.S
+++ b/libc/arch-mips64/syscalls/__sched_getaffinity.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__sched_getaffinity)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__set_tid_address.S b/libc/arch-mips64/syscalls/__set_tid_address.S
index d08aa7b..cd966dd 100644
--- a/libc/arch-mips64/syscalls/__set_tid_address.S
+++ b/libc/arch-mips64/syscalls/__set_tid_address.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__set_tid_address)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__set_tls.S b/libc/arch-mips64/syscalls/__set_tls.S
index 430c5fb..cc98150 100644
--- a/libc/arch-mips64/syscalls/__set_tls.S
+++ b/libc/arch-mips64/syscalls/__set_tls.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__set_tls)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__signalfd4.S b/libc/arch-mips64/syscalls/__signalfd4.S
index 0200138..ea6eef1 100644
--- a/libc/arch-mips64/syscalls/__signalfd4.S
+++ b/libc/arch-mips64/syscalls/__signalfd4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__signalfd4)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__socket.S b/libc/arch-mips64/syscalls/__socket.S
index ac7586a..a499359 100644
--- a/libc/arch-mips64/syscalls/__socket.S
+++ b/libc/arch-mips64/syscalls/__socket.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__socket)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__timer_create.S b/libc/arch-mips64/syscalls/__timer_create.S
index 518207d..c66d8f9 100644
--- a/libc/arch-mips64/syscalls/__timer_create.S
+++ b/libc/arch-mips64/syscalls/__timer_create.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_create)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__timer_delete.S b/libc/arch-mips64/syscalls/__timer_delete.S
index 4db1c85..45cf5e8 100644
--- a/libc/arch-mips64/syscalls/__timer_delete.S
+++ b/libc/arch-mips64/syscalls/__timer_delete.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_delete)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__timer_getoverrun.S b/libc/arch-mips64/syscalls/__timer_getoverrun.S
index c5aa40f..8a73160 100644
--- a/libc/arch-mips64/syscalls/__timer_getoverrun.S
+++ b/libc/arch-mips64/syscalls/__timer_getoverrun.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_getoverrun)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__timer_gettime.S b/libc/arch-mips64/syscalls/__timer_gettime.S
index 8bebdd8..32ee5bf 100644
--- a/libc/arch-mips64/syscalls/__timer_gettime.S
+++ b/libc/arch-mips64/syscalls/__timer_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_gettime)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__timer_settime.S b/libc/arch-mips64/syscalls/__timer_settime.S
index 536c816..59764d8 100644
--- a/libc/arch-mips64/syscalls/__timer_settime.S
+++ b/libc/arch-mips64/syscalls/__timer_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_settime)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/__waitid.S b/libc/arch-mips64/syscalls/__waitid.S
index 28b99bc..5ee090d 100644
--- a/libc/arch-mips64/syscalls/__waitid.S
+++ b/libc/arch-mips64/syscalls/__waitid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__waitid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/_exit.S b/libc/arch-mips64/syscalls/_exit.S
index 370960e..da5a2f7 100644
--- a/libc/arch-mips64/syscalls/_exit.S
+++ b/libc/arch-mips64/syscalls/_exit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(_exit)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/_flush_cache.S b/libc/arch-mips64/syscalls/_flush_cache.S
deleted file mode 100644
index 997ccec..0000000
--- a/libc/arch-mips64/syscalls/_flush_cache.S
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Generated by gensyscalls.py. Do not edit. */
-
-#include <private/bionic_asm.h>
-
- .hidden __set_errno
-
-ENTRY(_flush_cache)
- .set push
- .set noreorder
- li v0, __NR_cacheflush
- 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(_flush_cache)
diff --git a/libc/arch-mips64/syscalls/acct.S b/libc/arch-mips64/syscalls/acct.S
index 70bdd3e..ff728dc 100644
--- a/libc/arch-mips64/syscalls/acct.S
+++ b/libc/arch-mips64/syscalls/acct.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(acct)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/bind.S b/libc/arch-mips64/syscalls/bind.S
index fab9b42..9c2b5b8 100644
--- a/libc/arch-mips64/syscalls/bind.S
+++ b/libc/arch-mips64/syscalls/bind.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(bind)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/capget.S b/libc/arch-mips64/syscalls/capget.S
index 6c1a13c..9d05438 100644
--- a/libc/arch-mips64/syscalls/capget.S
+++ b/libc/arch-mips64/syscalls/capget.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capget)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/capset.S b/libc/arch-mips64/syscalls/capset.S
index da8e9e6..e947028 100644
--- a/libc/arch-mips64/syscalls/capset.S
+++ b/libc/arch-mips64/syscalls/capset.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capset)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/chdir.S b/libc/arch-mips64/syscalls/chdir.S
index 37f8f69..14b22c9 100644
--- a/libc/arch-mips64/syscalls/chdir.S
+++ b/libc/arch-mips64/syscalls/chdir.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chdir)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/chroot.S b/libc/arch-mips64/syscalls/chroot.S
index 7dced37..e805f51 100644
--- a/libc/arch-mips64/syscalls/chroot.S
+++ b/libc/arch-mips64/syscalls/chroot.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chroot)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/clock_getres.S b/libc/arch-mips64/syscalls/clock_getres.S
index 72ad146..41003a0 100644
--- a/libc/arch-mips64/syscalls/clock_getres.S
+++ b/libc/arch-mips64/syscalls/clock_getres.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_getres)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/clock_gettime.S b/libc/arch-mips64/syscalls/clock_gettime.S
index 431e667..0813560 100644
--- a/libc/arch-mips64/syscalls/clock_gettime.S
+++ b/libc/arch-mips64/syscalls/clock_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_gettime)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/clock_nanosleep.S b/libc/arch-mips64/syscalls/clock_nanosleep.S
index c0db781..c958a10 100644
--- a/libc/arch-mips64/syscalls/clock_nanosleep.S
+++ b/libc/arch-mips64/syscalls/clock_nanosleep.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_nanosleep)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/clock_settime.S b/libc/arch-mips64/syscalls/clock_settime.S
index c9a4a79..77b6ae4 100644
--- a/libc/arch-mips64/syscalls/clock_settime.S
+++ b/libc/arch-mips64/syscalls/clock_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_settime)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/close.S b/libc/arch-mips64/syscalls/close.S
index ff093e4..5e237dd 100644
--- a/libc/arch-mips64/syscalls/close.S
+++ b/libc/arch-mips64/syscalls/close.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(close)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/delete_module.S b/libc/arch-mips64/syscalls/delete_module.S
index 86c64d6..8396537 100644
--- a/libc/arch-mips64/syscalls/delete_module.S
+++ b/libc/arch-mips64/syscalls/delete_module.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(delete_module)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/dup.S b/libc/arch-mips64/syscalls/dup.S
index 23aa5c0..d1ca5e7 100644
--- a/libc/arch-mips64/syscalls/dup.S
+++ b/libc/arch-mips64/syscalls/dup.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/dup3.S b/libc/arch-mips64/syscalls/dup3.S
index a5392dc..5601f31 100644
--- a/libc/arch-mips64/syscalls/dup3.S
+++ b/libc/arch-mips64/syscalls/dup3.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup3)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/epoll_create1.S b/libc/arch-mips64/syscalls/epoll_create1.S
index c3219d4..11f1ceb 100644
--- a/libc/arch-mips64/syscalls/epoll_create1.S
+++ b/libc/arch-mips64/syscalls/epoll_create1.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_create1)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/epoll_ctl.S b/libc/arch-mips64/syscalls/epoll_ctl.S
index 9b740d0..9eba605 100644
--- a/libc/arch-mips64/syscalls/epoll_ctl.S
+++ b/libc/arch-mips64/syscalls/epoll_ctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_ctl)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/eventfd.S b/libc/arch-mips64/syscalls/eventfd.S
index ea3a2c6..5cd63e4 100644
--- a/libc/arch-mips64/syscalls/eventfd.S
+++ b/libc/arch-mips64/syscalls/eventfd.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(eventfd)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/execve.S b/libc/arch-mips64/syscalls/execve.S
index af2c6d0..bcd5d60 100644
--- a/libc/arch-mips64/syscalls/execve.S
+++ b/libc/arch-mips64/syscalls/execve.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(execve)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/faccessat.S b/libc/arch-mips64/syscalls/faccessat.S
index c8ee9e5..18bb800 100644
--- a/libc/arch-mips64/syscalls/faccessat.S
+++ b/libc/arch-mips64/syscalls/faccessat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(faccessat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fallocate.S b/libc/arch-mips64/syscalls/fallocate.S
index 9e7c89e..c1ef0ed 100644
--- a/libc/arch-mips64/syscalls/fallocate.S
+++ b/libc/arch-mips64/syscalls/fallocate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fallocate)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fchdir.S b/libc/arch-mips64/syscalls/fchdir.S
index 780a8a2..e05625c 100644
--- a/libc/arch-mips64/syscalls/fchdir.S
+++ b/libc/arch-mips64/syscalls/fchdir.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchdir)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fchmod.S b/libc/arch-mips64/syscalls/fchmod.S
index b9e7cab..a877b78 100644
--- a/libc/arch-mips64/syscalls/fchmod.S
+++ b/libc/arch-mips64/syscalls/fchmod.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmod)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fchmodat.S b/libc/arch-mips64/syscalls/fchmodat.S
index ff04c8c..151492a 100644
--- a/libc/arch-mips64/syscalls/fchmodat.S
+++ b/libc/arch-mips64/syscalls/fchmodat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmodat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fchown.S b/libc/arch-mips64/syscalls/fchown.S
index 97bd208..5dc33c0 100644
--- a/libc/arch-mips64/syscalls/fchown.S
+++ b/libc/arch-mips64/syscalls/fchown.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchown)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fchownat.S b/libc/arch-mips64/syscalls/fchownat.S
index 0e5635a..f4cefe0 100644
--- a/libc/arch-mips64/syscalls/fchownat.S
+++ b/libc/arch-mips64/syscalls/fchownat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchownat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fcntl.S b/libc/arch-mips64/syscalls/fcntl.S
index 325d9fd..dabc65b 100644
--- a/libc/arch-mips64/syscalls/fcntl.S
+++ b/libc/arch-mips64/syscalls/fcntl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fcntl)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fdatasync.S b/libc/arch-mips64/syscalls/fdatasync.S
index 8a714c3..52be110 100644
--- a/libc/arch-mips64/syscalls/fdatasync.S
+++ b/libc/arch-mips64/syscalls/fdatasync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fdatasync)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fgetxattr.S b/libc/arch-mips64/syscalls/fgetxattr.S
index 87a21ce..44c248a 100644
--- a/libc/arch-mips64/syscalls/fgetxattr.S
+++ b/libc/arch-mips64/syscalls/fgetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fgetxattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/flistxattr.S b/libc/arch-mips64/syscalls/flistxattr.S
index b430931..1d5b1b0 100644
--- a/libc/arch-mips64/syscalls/flistxattr.S
+++ b/libc/arch-mips64/syscalls/flistxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flistxattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/flock.S b/libc/arch-mips64/syscalls/flock.S
index bc4c835..d74a5db 100644
--- a/libc/arch-mips64/syscalls/flock.S
+++ b/libc/arch-mips64/syscalls/flock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flock)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fremovexattr.S b/libc/arch-mips64/syscalls/fremovexattr.S
index 4121223..417be4a 100644
--- a/libc/arch-mips64/syscalls/fremovexattr.S
+++ b/libc/arch-mips64/syscalls/fremovexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fremovexattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fsetxattr.S b/libc/arch-mips64/syscalls/fsetxattr.S
index 4180bd0..0ad1f90 100644
--- a/libc/arch-mips64/syscalls/fsetxattr.S
+++ b/libc/arch-mips64/syscalls/fsetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsetxattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fstat64.S b/libc/arch-mips64/syscalls/fstat64.S
index 03cbf69..a14d51c 100644
--- a/libc/arch-mips64/syscalls/fstat64.S
+++ b/libc/arch-mips64/syscalls/fstat64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstat64)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fstatat64.S b/libc/arch-mips64/syscalls/fstatat64.S
index 55ae243..7888a43 100644
--- a/libc/arch-mips64/syscalls/fstatat64.S
+++ b/libc/arch-mips64/syscalls/fstatat64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstatat64)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fstatfs64.S b/libc/arch-mips64/syscalls/fstatfs64.S
index 5fb5d95..12e885c 100644
--- a/libc/arch-mips64/syscalls/fstatfs64.S
+++ b/libc/arch-mips64/syscalls/fstatfs64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstatfs64)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/fsync.S b/libc/arch-mips64/syscalls/fsync.S
index fa5de87..7056e36 100644
--- a/libc/arch-mips64/syscalls/fsync.S
+++ b/libc/arch-mips64/syscalls/fsync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsync)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/ftruncate.S b/libc/arch-mips64/syscalls/ftruncate.S
index b605a37..58b847b 100644
--- a/libc/arch-mips64/syscalls/ftruncate.S
+++ b/libc/arch-mips64/syscalls/ftruncate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(ftruncate)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getegid.S b/libc/arch-mips64/syscalls/getegid.S
index 7ef8fe3..439c6f0 100644
--- a/libc/arch-mips64/syscalls/getegid.S
+++ b/libc/arch-mips64/syscalls/getegid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getegid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/geteuid.S b/libc/arch-mips64/syscalls/geteuid.S
index c21f0ef..5619dc6 100644
--- a/libc/arch-mips64/syscalls/geteuid.S
+++ b/libc/arch-mips64/syscalls/geteuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(geteuid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getgid.S b/libc/arch-mips64/syscalls/getgid.S
index bd690dc..777be1a 100644
--- a/libc/arch-mips64/syscalls/getgid.S
+++ b/libc/arch-mips64/syscalls/getgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getgroups.S b/libc/arch-mips64/syscalls/getgroups.S
index d7aded7..93c4fa1 100644
--- a/libc/arch-mips64/syscalls/getgroups.S
+++ b/libc/arch-mips64/syscalls/getgroups.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgroups)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getitimer.S b/libc/arch-mips64/syscalls/getitimer.S
index a438faa..fe78a97 100644
--- a/libc/arch-mips64/syscalls/getitimer.S
+++ b/libc/arch-mips64/syscalls/getitimer.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getitimer)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getpeername.S b/libc/arch-mips64/syscalls/getpeername.S
index bf40141..121f1a6 100644
--- a/libc/arch-mips64/syscalls/getpeername.S
+++ b/libc/arch-mips64/syscalls/getpeername.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpeername)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getpgid.S b/libc/arch-mips64/syscalls/getpgid.S
index 739a6e2..19dc77f 100644
--- a/libc/arch-mips64/syscalls/getpgid.S
+++ b/libc/arch-mips64/syscalls/getpgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpgid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getppid.S b/libc/arch-mips64/syscalls/getppid.S
index e642a79..d00f309 100644
--- a/libc/arch-mips64/syscalls/getppid.S
+++ b/libc/arch-mips64/syscalls/getppid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getppid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getresgid.S b/libc/arch-mips64/syscalls/getresgid.S
index d88516f..18cb5a1 100644
--- a/libc/arch-mips64/syscalls/getresgid.S
+++ b/libc/arch-mips64/syscalls/getresgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresgid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getresuid.S b/libc/arch-mips64/syscalls/getresuid.S
index b439211..c217bf7 100644
--- a/libc/arch-mips64/syscalls/getresuid.S
+++ b/libc/arch-mips64/syscalls/getresuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresuid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getrlimit.S b/libc/arch-mips64/syscalls/getrlimit.S
index 423bc0f..7576c17 100644
--- a/libc/arch-mips64/syscalls/getrlimit.S
+++ b/libc/arch-mips64/syscalls/getrlimit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrlimit)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getrusage.S b/libc/arch-mips64/syscalls/getrusage.S
index 9f57b84..4bf557e 100644
--- a/libc/arch-mips64/syscalls/getrusage.S
+++ b/libc/arch-mips64/syscalls/getrusage.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrusage)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getsid.S b/libc/arch-mips64/syscalls/getsid.S
index 125da4e..030c91d 100644
--- a/libc/arch-mips64/syscalls/getsid.S
+++ b/libc/arch-mips64/syscalls/getsid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getsockname.S b/libc/arch-mips64/syscalls/getsockname.S
index 3481d65..88a9426 100644
--- a/libc/arch-mips64/syscalls/getsockname.S
+++ b/libc/arch-mips64/syscalls/getsockname.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockname)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getsockopt.S b/libc/arch-mips64/syscalls/getsockopt.S
index 2e9b6d7..08ee634 100644
--- a/libc/arch-mips64/syscalls/getsockopt.S
+++ b/libc/arch-mips64/syscalls/getsockopt.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockopt)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/gettimeofday.S b/libc/arch-mips64/syscalls/gettimeofday.S
index 9bbbd28..3a6d417 100644
--- a/libc/arch-mips64/syscalls/gettimeofday.S
+++ b/libc/arch-mips64/syscalls/gettimeofday.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(gettimeofday)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getuid.S b/libc/arch-mips64/syscalls/getuid.S
index 4809a5a..3d5f940 100644
--- a/libc/arch-mips64/syscalls/getuid.S
+++ b/libc/arch-mips64/syscalls/getuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getuid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/getxattr.S b/libc/arch-mips64/syscalls/getxattr.S
index 7a7a4d4..1c443f2 100644
--- a/libc/arch-mips64/syscalls/getxattr.S
+++ b/libc/arch-mips64/syscalls/getxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getxattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/init_module.S b/libc/arch-mips64/syscalls/init_module.S
index e46dedc..3e2f074 100644
--- a/libc/arch-mips64/syscalls/init_module.S
+++ b/libc/arch-mips64/syscalls/init_module.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(init_module)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/inotify_add_watch.S b/libc/arch-mips64/syscalls/inotify_add_watch.S
index 4a4fe5f..bffdad8 100644
--- a/libc/arch-mips64/syscalls/inotify_add_watch.S
+++ b/libc/arch-mips64/syscalls/inotify_add_watch.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_add_watch)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/inotify_init1.S b/libc/arch-mips64/syscalls/inotify_init1.S
index 6ef6021..c70d101 100644
--- a/libc/arch-mips64/syscalls/inotify_init1.S
+++ b/libc/arch-mips64/syscalls/inotify_init1.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_init1)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/inotify_rm_watch.S b/libc/arch-mips64/syscalls/inotify_rm_watch.S
index 10e239a..d893787 100644
--- a/libc/arch-mips64/syscalls/inotify_rm_watch.S
+++ b/libc/arch-mips64/syscalls/inotify_rm_watch.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_rm_watch)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/kill.S b/libc/arch-mips64/syscalls/kill.S
index f85a3ef..475b615 100644
--- a/libc/arch-mips64/syscalls/kill.S
+++ b/libc/arch-mips64/syscalls/kill.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(kill)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/klogctl.S b/libc/arch-mips64/syscalls/klogctl.S
index 8e94b62..98b9f0b 100644
--- a/libc/arch-mips64/syscalls/klogctl.S
+++ b/libc/arch-mips64/syscalls/klogctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(klogctl)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/lgetxattr.S b/libc/arch-mips64/syscalls/lgetxattr.S
index c5990ab..55d7c42 100644
--- a/libc/arch-mips64/syscalls/lgetxattr.S
+++ b/libc/arch-mips64/syscalls/lgetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lgetxattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/linkat.S b/libc/arch-mips64/syscalls/linkat.S
index 88db867..df749eb 100644
--- a/libc/arch-mips64/syscalls/linkat.S
+++ b/libc/arch-mips64/syscalls/linkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(linkat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/listen.S b/libc/arch-mips64/syscalls/listen.S
index 4db8789..195cade 100644
--- a/libc/arch-mips64/syscalls/listen.S
+++ b/libc/arch-mips64/syscalls/listen.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listen)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/listxattr.S b/libc/arch-mips64/syscalls/listxattr.S
index 56b13f6..30b0f2b 100644
--- a/libc/arch-mips64/syscalls/listxattr.S
+++ b/libc/arch-mips64/syscalls/listxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listxattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/llistxattr.S b/libc/arch-mips64/syscalls/llistxattr.S
index d800f7f..d349116 100644
--- a/libc/arch-mips64/syscalls/llistxattr.S
+++ b/libc/arch-mips64/syscalls/llistxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(llistxattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/lremovexattr.S b/libc/arch-mips64/syscalls/lremovexattr.S
index e05733f..db4e4d3 100644
--- a/libc/arch-mips64/syscalls/lremovexattr.S
+++ b/libc/arch-mips64/syscalls/lremovexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lremovexattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/lseek.S b/libc/arch-mips64/syscalls/lseek.S
index 34533cf..5c92d70 100644
--- a/libc/arch-mips64/syscalls/lseek.S
+++ b/libc/arch-mips64/syscalls/lseek.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lseek)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/lsetxattr.S b/libc/arch-mips64/syscalls/lsetxattr.S
index dea6add..c161eb3 100644
--- a/libc/arch-mips64/syscalls/lsetxattr.S
+++ b/libc/arch-mips64/syscalls/lsetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lsetxattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/madvise.S b/libc/arch-mips64/syscalls/madvise.S
index ab174e9..88f3830 100644
--- a/libc/arch-mips64/syscalls/madvise.S
+++ b/libc/arch-mips64/syscalls/madvise.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(madvise)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/mincore.S b/libc/arch-mips64/syscalls/mincore.S
index 349d2f6..695c9b2 100644
--- a/libc/arch-mips64/syscalls/mincore.S
+++ b/libc/arch-mips64/syscalls/mincore.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mincore)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/mkdirat.S b/libc/arch-mips64/syscalls/mkdirat.S
index b395ba4..71cdfd1 100644
--- a/libc/arch-mips64/syscalls/mkdirat.S
+++ b/libc/arch-mips64/syscalls/mkdirat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mkdirat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/mknodat.S b/libc/arch-mips64/syscalls/mknodat.S
index c13d979..9943e49 100644
--- a/libc/arch-mips64/syscalls/mknodat.S
+++ b/libc/arch-mips64/syscalls/mknodat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mknodat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/mlock.S b/libc/arch-mips64/syscalls/mlock.S
index 82338f3..081f12b 100644
--- a/libc/arch-mips64/syscalls/mlock.S
+++ b/libc/arch-mips64/syscalls/mlock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlock)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/mlockall.S b/libc/arch-mips64/syscalls/mlockall.S
index b34cf81..0e158f4 100644
--- a/libc/arch-mips64/syscalls/mlockall.S
+++ b/libc/arch-mips64/syscalls/mlockall.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlockall)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/mmap.S b/libc/arch-mips64/syscalls/mmap.S
index 814b745..393271a 100644
--- a/libc/arch-mips64/syscalls/mmap.S
+++ b/libc/arch-mips64/syscalls/mmap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mmap)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/mount.S b/libc/arch-mips64/syscalls/mount.S
index 3f42df5..50c7541 100644
--- a/libc/arch-mips64/syscalls/mount.S
+++ b/libc/arch-mips64/syscalls/mount.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mount)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/mprotect.S b/libc/arch-mips64/syscalls/mprotect.S
index adf9a67..d755489 100644
--- a/libc/arch-mips64/syscalls/mprotect.S
+++ b/libc/arch-mips64/syscalls/mprotect.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mprotect)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/mremap.S b/libc/arch-mips64/syscalls/mremap.S
index 70c8a8c..cf7f1de 100644
--- a/libc/arch-mips64/syscalls/mremap.S
+++ b/libc/arch-mips64/syscalls/mremap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mremap)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/msync.S b/libc/arch-mips64/syscalls/msync.S
index dced6e7..efe31c1 100644
--- a/libc/arch-mips64/syscalls/msync.S
+++ b/libc/arch-mips64/syscalls/msync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(msync)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/munlock.S b/libc/arch-mips64/syscalls/munlock.S
index 075c061..44b930a 100644
--- a/libc/arch-mips64/syscalls/munlock.S
+++ b/libc/arch-mips64/syscalls/munlock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlock)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/munlockall.S b/libc/arch-mips64/syscalls/munlockall.S
index 10ff274..ffeb5e1 100644
--- a/libc/arch-mips64/syscalls/munlockall.S
+++ b/libc/arch-mips64/syscalls/munlockall.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlockall)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/munmap.S b/libc/arch-mips64/syscalls/munmap.S
index 5d0b0b0..cd0c05c 100644
--- a/libc/arch-mips64/syscalls/munmap.S
+++ b/libc/arch-mips64/syscalls/munmap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munmap)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/nanosleep.S b/libc/arch-mips64/syscalls/nanosleep.S
index a0c7d36..bdaf256 100644
--- a/libc/arch-mips64/syscalls/nanosleep.S
+++ b/libc/arch-mips64/syscalls/nanosleep.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(nanosleep)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/personality.S b/libc/arch-mips64/syscalls/personality.S
index 326cf24..6a12c95 100644
--- a/libc/arch-mips64/syscalls/personality.S
+++ b/libc/arch-mips64/syscalls/personality.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(personality)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/pipe2.S b/libc/arch-mips64/syscalls/pipe2.S
index 8e207ac..1b08a45 100644
--- a/libc/arch-mips64/syscalls/pipe2.S
+++ b/libc/arch-mips64/syscalls/pipe2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pipe2)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/prctl.S b/libc/arch-mips64/syscalls/prctl.S
index 9e805f4..61bb7c2 100644
--- a/libc/arch-mips64/syscalls/prctl.S
+++ b/libc/arch-mips64/syscalls/prctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prctl)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/pread64.S b/libc/arch-mips64/syscalls/pread64.S
index 3aa0620..90e0612 100644
--- a/libc/arch-mips64/syscalls/pread64.S
+++ b/libc/arch-mips64/syscalls/pread64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pread64)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/prlimit64.S b/libc/arch-mips64/syscalls/prlimit64.S
index f767ac1..5f0ba1d 100644
--- a/libc/arch-mips64/syscalls/prlimit64.S
+++ b/libc/arch-mips64/syscalls/prlimit64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prlimit64)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/pwrite64.S b/libc/arch-mips64/syscalls/pwrite64.S
index 8b3bcc0..e34f8db 100644
--- a/libc/arch-mips64/syscalls/pwrite64.S
+++ b/libc/arch-mips64/syscalls/pwrite64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pwrite64)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/read.S b/libc/arch-mips64/syscalls/read.S
index ab687d1..74d39df 100644
--- a/libc/arch-mips64/syscalls/read.S
+++ b/libc/arch-mips64/syscalls/read.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(read)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/readahead.S b/libc/arch-mips64/syscalls/readahead.S
index 1d9b15b..ae511d9 100644
--- a/libc/arch-mips64/syscalls/readahead.S
+++ b/libc/arch-mips64/syscalls/readahead.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readahead)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/readlinkat.S b/libc/arch-mips64/syscalls/readlinkat.S
index 24da46b..473a946 100644
--- a/libc/arch-mips64/syscalls/readlinkat.S
+++ b/libc/arch-mips64/syscalls/readlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readlinkat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/readv.S b/libc/arch-mips64/syscalls/readv.S
index 6aca131..daa800c 100644
--- a/libc/arch-mips64/syscalls/readv.S
+++ b/libc/arch-mips64/syscalls/readv.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readv)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/recvfrom.S b/libc/arch-mips64/syscalls/recvfrom.S
index b9fb037..4c9b5fa 100644
--- a/libc/arch-mips64/syscalls/recvfrom.S
+++ b/libc/arch-mips64/syscalls/recvfrom.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvfrom)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/recvmmsg.S b/libc/arch-mips64/syscalls/recvmmsg.S
index b187cf0..817250c 100644
--- a/libc/arch-mips64/syscalls/recvmmsg.S
+++ b/libc/arch-mips64/syscalls/recvmmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmmsg)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/recvmsg.S b/libc/arch-mips64/syscalls/recvmsg.S
index 49dbb48..877899d 100644
--- a/libc/arch-mips64/syscalls/recvmsg.S
+++ b/libc/arch-mips64/syscalls/recvmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmsg)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/removexattr.S b/libc/arch-mips64/syscalls/removexattr.S
index 61d6da1..c9d8a0e 100644
--- a/libc/arch-mips64/syscalls/removexattr.S
+++ b/libc/arch-mips64/syscalls/removexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(removexattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/renameat.S b/libc/arch-mips64/syscalls/renameat.S
index f012fad..16b9333 100644
--- a/libc/arch-mips64/syscalls/renameat.S
+++ b/libc/arch-mips64/syscalls/renameat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(renameat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sched_get_priority_max.S b/libc/arch-mips64/syscalls/sched_get_priority_max.S
index 264545b..67e2675 100644
--- a/libc/arch-mips64/syscalls/sched_get_priority_max.S
+++ b/libc/arch-mips64/syscalls/sched_get_priority_max.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_max)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sched_get_priority_min.S b/libc/arch-mips64/syscalls/sched_get_priority_min.S
index 4984abf..957f523 100644
--- a/libc/arch-mips64/syscalls/sched_get_priority_min.S
+++ b/libc/arch-mips64/syscalls/sched_get_priority_min.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_min)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sched_getparam.S b/libc/arch-mips64/syscalls/sched_getparam.S
index 2837fc8..77bb4eb 100644
--- a/libc/arch-mips64/syscalls/sched_getparam.S
+++ b/libc/arch-mips64/syscalls/sched_getparam.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getparam)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sched_getscheduler.S b/libc/arch-mips64/syscalls/sched_getscheduler.S
index 3f8dbe3..324fa21 100644
--- a/libc/arch-mips64/syscalls/sched_getscheduler.S
+++ b/libc/arch-mips64/syscalls/sched_getscheduler.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getscheduler)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sched_rr_get_interval.S b/libc/arch-mips64/syscalls/sched_rr_get_interval.S
index 80ea18e..3019554 100644
--- a/libc/arch-mips64/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-mips64/syscalls/sched_rr_get_interval.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_rr_get_interval)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sched_setaffinity.S b/libc/arch-mips64/syscalls/sched_setaffinity.S
index 843e06f..1520902 100644
--- a/libc/arch-mips64/syscalls/sched_setaffinity.S
+++ b/libc/arch-mips64/syscalls/sched_setaffinity.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setaffinity)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sched_setparam.S b/libc/arch-mips64/syscalls/sched_setparam.S
index 78435b1..a37b15c 100644
--- a/libc/arch-mips64/syscalls/sched_setparam.S
+++ b/libc/arch-mips64/syscalls/sched_setparam.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setparam)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sched_setscheduler.S b/libc/arch-mips64/syscalls/sched_setscheduler.S
index 7f78cc7..ea4c6c4 100644
--- a/libc/arch-mips64/syscalls/sched_setscheduler.S
+++ b/libc/arch-mips64/syscalls/sched_setscheduler.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setscheduler)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sched_yield.S b/libc/arch-mips64/syscalls/sched_yield.S
index f81b7ef..5d86ea5 100644
--- a/libc/arch-mips64/syscalls/sched_yield.S
+++ b/libc/arch-mips64/syscalls/sched_yield.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_yield)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sendfile.S b/libc/arch-mips64/syscalls/sendfile.S
index c3e80de..f330242 100644
--- a/libc/arch-mips64/syscalls/sendfile.S
+++ b/libc/arch-mips64/syscalls/sendfile.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendfile)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sendmmsg.S b/libc/arch-mips64/syscalls/sendmmsg.S
index 40efcb6..4a8d855 100644
--- a/libc/arch-mips64/syscalls/sendmmsg.S
+++ b/libc/arch-mips64/syscalls/sendmmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmmsg)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sendmsg.S b/libc/arch-mips64/syscalls/sendmsg.S
index 9f90717..519dce4 100644
--- a/libc/arch-mips64/syscalls/sendmsg.S
+++ b/libc/arch-mips64/syscalls/sendmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmsg)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sendto.S b/libc/arch-mips64/syscalls/sendto.S
index 3ebfbae..84efc09 100644
--- a/libc/arch-mips64/syscalls/sendto.S
+++ b/libc/arch-mips64/syscalls/sendto.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendto)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setfsgid.S b/libc/arch-mips64/syscalls/setfsgid.S
index 9b36038..db1bd7f 100644
--- a/libc/arch-mips64/syscalls/setfsgid.S
+++ b/libc/arch-mips64/syscalls/setfsgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsgid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setfsuid.S b/libc/arch-mips64/syscalls/setfsuid.S
index e42601f..4254b18 100644
--- a/libc/arch-mips64/syscalls/setfsuid.S
+++ b/libc/arch-mips64/syscalls/setfsuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsuid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setgid.S b/libc/arch-mips64/syscalls/setgid.S
index 7ce8599..166a6d6 100644
--- a/libc/arch-mips64/syscalls/setgid.S
+++ b/libc/arch-mips64/syscalls/setgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setgroups.S b/libc/arch-mips64/syscalls/setgroups.S
index 2724068..24649f7 100644
--- a/libc/arch-mips64/syscalls/setgroups.S
+++ b/libc/arch-mips64/syscalls/setgroups.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgroups)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setitimer.S b/libc/arch-mips64/syscalls/setitimer.S
index f5dcff0..5764573 100644
--- a/libc/arch-mips64/syscalls/setitimer.S
+++ b/libc/arch-mips64/syscalls/setitimer.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setitimer)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setns.S b/libc/arch-mips64/syscalls/setns.S
index cbe2e06..6b6178f 100644
--- a/libc/arch-mips64/syscalls/setns.S
+++ b/libc/arch-mips64/syscalls/setns.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setns)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setpgid.S b/libc/arch-mips64/syscalls/setpgid.S
index da44532..233f784 100644
--- a/libc/arch-mips64/syscalls/setpgid.S
+++ b/libc/arch-mips64/syscalls/setpgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpgid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setpriority.S b/libc/arch-mips64/syscalls/setpriority.S
index 150a5d4..d88a2ff 100644
--- a/libc/arch-mips64/syscalls/setpriority.S
+++ b/libc/arch-mips64/syscalls/setpriority.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpriority)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setregid.S b/libc/arch-mips64/syscalls/setregid.S
index b80115c..c82b4fd 100644
--- a/libc/arch-mips64/syscalls/setregid.S
+++ b/libc/arch-mips64/syscalls/setregid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setregid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setresgid.S b/libc/arch-mips64/syscalls/setresgid.S
index 0fbf302..90b2939 100644
--- a/libc/arch-mips64/syscalls/setresgid.S
+++ b/libc/arch-mips64/syscalls/setresgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresgid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setresuid.S b/libc/arch-mips64/syscalls/setresuid.S
index 89af745..501ac5d 100644
--- a/libc/arch-mips64/syscalls/setresuid.S
+++ b/libc/arch-mips64/syscalls/setresuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresuid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setreuid.S b/libc/arch-mips64/syscalls/setreuid.S
index 797091f..1b3203c 100644
--- a/libc/arch-mips64/syscalls/setreuid.S
+++ b/libc/arch-mips64/syscalls/setreuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setreuid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setrlimit.S b/libc/arch-mips64/syscalls/setrlimit.S
index 034f3db..0e5e80e 100644
--- a/libc/arch-mips64/syscalls/setrlimit.S
+++ b/libc/arch-mips64/syscalls/setrlimit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setrlimit)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setsid.S b/libc/arch-mips64/syscalls/setsid.S
index ef14eba..6d872d3 100644
--- a/libc/arch-mips64/syscalls/setsid.S
+++ b/libc/arch-mips64/syscalls/setsid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setsockopt.S b/libc/arch-mips64/syscalls/setsockopt.S
index 5c263bd..b2fc736 100644
--- a/libc/arch-mips64/syscalls/setsockopt.S
+++ b/libc/arch-mips64/syscalls/setsockopt.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsockopt)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/settimeofday.S b/libc/arch-mips64/syscalls/settimeofday.S
index a73638f..9f1acfe 100644
--- a/libc/arch-mips64/syscalls/settimeofday.S
+++ b/libc/arch-mips64/syscalls/settimeofday.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(settimeofday)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setuid.S b/libc/arch-mips64/syscalls/setuid.S
index 4321fae..dcd39ff 100644
--- a/libc/arch-mips64/syscalls/setuid.S
+++ b/libc/arch-mips64/syscalls/setuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setuid)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/setxattr.S b/libc/arch-mips64/syscalls/setxattr.S
index 58ccb5f..4a1b87a 100644
--- a/libc/arch-mips64/syscalls/setxattr.S
+++ b/libc/arch-mips64/syscalls/setxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setxattr)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/shutdown.S b/libc/arch-mips64/syscalls/shutdown.S
index cdd6c78..d654288 100644
--- a/libc/arch-mips64/syscalls/shutdown.S
+++ b/libc/arch-mips64/syscalls/shutdown.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(shutdown)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sigaltstack.S b/libc/arch-mips64/syscalls/sigaltstack.S
index a2e663c..92778c1 100644
--- a/libc/arch-mips64/syscalls/sigaltstack.S
+++ b/libc/arch-mips64/syscalls/sigaltstack.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sigaltstack)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/socketpair.S b/libc/arch-mips64/syscalls/socketpair.S
index 7be7814..8fbf7a8 100644
--- a/libc/arch-mips64/syscalls/socketpair.S
+++ b/libc/arch-mips64/syscalls/socketpair.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(socketpair)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/splice.S b/libc/arch-mips64/syscalls/splice.S
index efee6cd..ea745cf 100644
--- a/libc/arch-mips64/syscalls/splice.S
+++ b/libc/arch-mips64/syscalls/splice.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(splice)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/statfs64.S b/libc/arch-mips64/syscalls/statfs64.S
index d377522..74351f7 100644
--- a/libc/arch-mips64/syscalls/statfs64.S
+++ b/libc/arch-mips64/syscalls/statfs64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(statfs64)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/swapoff.S b/libc/arch-mips64/syscalls/swapoff.S
index b257b1e..8c0048d 100644
--- a/libc/arch-mips64/syscalls/swapoff.S
+++ b/libc/arch-mips64/syscalls/swapoff.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapoff)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/swapon.S b/libc/arch-mips64/syscalls/swapon.S
index e18ff4c..e8f6ff2 100644
--- a/libc/arch-mips64/syscalls/swapon.S
+++ b/libc/arch-mips64/syscalls/swapon.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapon)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/symlinkat.S b/libc/arch-mips64/syscalls/symlinkat.S
index 560bf0d..592b8e2 100644
--- a/libc/arch-mips64/syscalls/symlinkat.S
+++ b/libc/arch-mips64/syscalls/symlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(symlinkat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sync.S b/libc/arch-mips64/syscalls/sync.S
index 240a6d4..8997c1b 100644
--- a/libc/arch-mips64/syscalls/sync.S
+++ b/libc/arch-mips64/syscalls/sync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sync)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/sysinfo.S b/libc/arch-mips64/syscalls/sysinfo.S
index 6b07be3..a54e158 100644
--- a/libc/arch-mips64/syscalls/sysinfo.S
+++ b/libc/arch-mips64/syscalls/sysinfo.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sysinfo)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/tee.S b/libc/arch-mips64/syscalls/tee.S
index 0115f71..99cf84b 100644
--- a/libc/arch-mips64/syscalls/tee.S
+++ b/libc/arch-mips64/syscalls/tee.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tee)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/tgkill.S b/libc/arch-mips64/syscalls/tgkill.S
index bf30a8d..f37f792 100644
--- a/libc/arch-mips64/syscalls/tgkill.S
+++ b/libc/arch-mips64/syscalls/tgkill.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tgkill)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/timerfd_create.S b/libc/arch-mips64/syscalls/timerfd_create.S
index e65874f..0e53a15 100644
--- a/libc/arch-mips64/syscalls/timerfd_create.S
+++ b/libc/arch-mips64/syscalls/timerfd_create.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_create)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/timerfd_gettime.S b/libc/arch-mips64/syscalls/timerfd_gettime.S
index a843598..26d6832 100644
--- a/libc/arch-mips64/syscalls/timerfd_gettime.S
+++ b/libc/arch-mips64/syscalls/timerfd_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_gettime)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/timerfd_settime.S b/libc/arch-mips64/syscalls/timerfd_settime.S
index 8c5994f..b06290e 100644
--- a/libc/arch-mips64/syscalls/timerfd_settime.S
+++ b/libc/arch-mips64/syscalls/timerfd_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_settime)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/times.S b/libc/arch-mips64/syscalls/times.S
index ff504e7..fa7f64f 100644
--- a/libc/arch-mips64/syscalls/times.S
+++ b/libc/arch-mips64/syscalls/times.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(times)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/truncate.S b/libc/arch-mips64/syscalls/truncate.S
index 3fc06a2..fb3b7eb 100644
--- a/libc/arch-mips64/syscalls/truncate.S
+++ b/libc/arch-mips64/syscalls/truncate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(truncate)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/umask.S b/libc/arch-mips64/syscalls/umask.S
index 9e6c910..9349030 100644
--- a/libc/arch-mips64/syscalls/umask.S
+++ b/libc/arch-mips64/syscalls/umask.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umask)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/umount2.S b/libc/arch-mips64/syscalls/umount2.S
index f8d1996..cc9ad16 100644
--- a/libc/arch-mips64/syscalls/umount2.S
+++ b/libc/arch-mips64/syscalls/umount2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umount2)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/uname.S b/libc/arch-mips64/syscalls/uname.S
index ce93f08..16157da 100644
--- a/libc/arch-mips64/syscalls/uname.S
+++ b/libc/arch-mips64/syscalls/uname.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(uname)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/unlinkat.S b/libc/arch-mips64/syscalls/unlinkat.S
index 870e8d7..4b11679 100644
--- a/libc/arch-mips64/syscalls/unlinkat.S
+++ b/libc/arch-mips64/syscalls/unlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unlinkat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/unshare.S b/libc/arch-mips64/syscalls/unshare.S
index 231c29a..2c82fea 100644
--- a/libc/arch-mips64/syscalls/unshare.S
+++ b/libc/arch-mips64/syscalls/unshare.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unshare)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/utimensat.S b/libc/arch-mips64/syscalls/utimensat.S
index 4b4243e..48da938 100644
--- a/libc/arch-mips64/syscalls/utimensat.S
+++ b/libc/arch-mips64/syscalls/utimensat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(utimensat)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/vmsplice.S b/libc/arch-mips64/syscalls/vmsplice.S
index f854004..3bcae74 100644
--- a/libc/arch-mips64/syscalls/vmsplice.S
+++ b/libc/arch-mips64/syscalls/vmsplice.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(vmsplice)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/wait4.S b/libc/arch-mips64/syscalls/wait4.S
index 2d2b487..f9c3974 100644
--- a/libc/arch-mips64/syscalls/wait4.S
+++ b/libc/arch-mips64/syscalls/wait4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(wait4)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/write.S b/libc/arch-mips64/syscalls/write.S
index f603fb5..ef9b19e 100644
--- a/libc/arch-mips64/syscalls/write.S
+++ b/libc/arch-mips64/syscalls/write.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(write)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-mips64/syscalls/writev.S b/libc/arch-mips64/syscalls/writev.S
index 032e749..d103d71 100644
--- a/libc/arch-mips64/syscalls/writev.S
+++ b/libc/arch-mips64/syscalls/writev.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(writev)
.set push
.set noreorder
@@ -19,7 +17,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
diff --git a/libc/arch-x86/atom/string/sse2-wcslen-atom.S b/libc/arch-x86/atom/string/sse2-wcslen-atom.S
index 6a6ad51..2f10db4 100644
--- a/libc/arch-x86/atom/string/sse2-wcslen-atom.S
+++ b/libc/arch-x86/atom/string/sse2-wcslen-atom.S
@@ -65,21 +65,21 @@
ENTRY (wcslen)
mov STR(%esp), %edx
#endif
- cmp $0, (%edx)
+ cmpl $0, (%edx)
jz L(exit_tail0)
- cmp $0, 4(%edx)
+ cmpl $0, 4(%edx)
jz L(exit_tail1)
- cmp $0, 8(%edx)
+ cmpl $0, 8(%edx)
jz L(exit_tail2)
- cmp $0, 12(%edx)
+ cmpl $0, 12(%edx)
jz L(exit_tail3)
- cmp $0, 16(%edx)
+ cmpl $0, 16(%edx)
jz L(exit_tail4)
- cmp $0, 20(%edx)
+ cmpl $0, 20(%edx)
jz L(exit_tail5)
- cmp $0, 24(%edx)
+ cmpl $0, 24(%edx)
jz L(exit_tail6)
- cmp $0, 28(%edx)
+ cmpl $0, 28(%edx)
jz L(exit_tail7)
pxor %xmm0, %xmm0
diff --git a/libc/arch-x86/bionic/__bionic_clone.S b/libc/arch-x86/bionic/__bionic_clone.S
index 917dc68..ef78aee 100644
--- a/libc/arch-x86/bionic/__bionic_clone.S
+++ b/libc/arch-x86/bionic/__bionic_clone.S
@@ -32,7 +32,7 @@
# An error occurred, so set errno and return -1.
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
jmp .L_bc_return
diff --git a/libc/arch-x86/bionic/__get_sp.S b/libc/arch-x86/bionic/__get_sp.S
deleted file mode 100644
index aea6ac6..0000000
--- a/libc/arch-x86/bionic/__get_sp.S
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-#include <private/bionic_asm.h>
-
-ENTRY_PRIVATE(__get_sp)
- mov %esp, %eax
- ret
-END(__get_sp)
diff --git a/libc/arch-x86/bionic/syscall.S b/libc/arch-x86/bionic/syscall.S
index 8e76c4e..f85ec39 100644
--- a/libc/arch-x86/bionic/syscall.S
+++ b/libc/arch-x86/bionic/syscall.S
@@ -38,7 +38,7 @@
# Yes, so set errno.
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
# Restore the callee save registers.
diff --git a/libc/arch-x86/bionic/vfork.S b/libc/arch-x86/bionic/vfork.S
index ffa6b16..6c02910 100644
--- a/libc/arch-x86/bionic/vfork.S
+++ b/libc/arch-x86/bionic/vfork.S
@@ -38,7 +38,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
1:
jmp *%ecx // Jump to the stored return address.
END(vfork)
diff --git a/libc/arch-x86/include/machine/asm.h b/libc/arch-x86/include/machine/asm.h
index 672493d..943f9dd 100644
--- a/libc/arch-x86/include/machine/asm.h
+++ b/libc/arch-x86/include/machine/asm.h
@@ -49,15 +49,6 @@
#define PIC_GOT(x) x@GOT(%ebx)
#define PIC_GOTOFF(x) x@GOTOFF(%ebx)
-/* let kernels and others override entrypoint alignment */
-#if !defined(_ALIGN_TEXT) && !defined(_KERNEL)
-# ifdef _STANDALONE
-# define _ALIGN_TEXT .align 1
-# elif defined __ELF__
-# define _ALIGN_TEXT .align 16
-# else
-# define _ALIGN_TEXT .align 4
-# endif
-#endif
+#define __bionic_asm_align 16
#endif /* !_I386_ASM_H_ */
diff --git a/libc/arch-x86/syscalls/__accept4.S b/libc/arch-x86/syscalls/__accept4.S
index c28f211..7b16dd4 100644
--- a/libc/arch-x86/syscalls/__accept4.S
+++ b/libc/arch-x86/syscalls/__accept4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__accept4)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/__brk.S b/libc/arch-x86/syscalls/__brk.S
index c5702cf..22acdad 100644
--- a/libc/arch-x86/syscalls/__brk.S
+++ b/libc/arch-x86/syscalls/__brk.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__brk)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/__connect.S b/libc/arch-x86/syscalls/__connect.S
index 4f845b7..475d452 100644
--- a/libc/arch-x86/syscalls/__connect.S
+++ b/libc/arch-x86/syscalls/__connect.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__connect)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/__epoll_pwait.S b/libc/arch-x86/syscalls/__epoll_pwait.S
index c7acb2b..171caa5 100644
--- a/libc/arch-x86/syscalls/__epoll_pwait.S
+++ b/libc/arch-x86/syscalls/__epoll_pwait.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__epoll_pwait)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -35,7 +33,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebp
diff --git a/libc/arch-x86/syscalls/__exit.S b/libc/arch-x86/syscalls/__exit.S
index bf76e04..8cf3663 100644
--- a/libc/arch-x86/syscalls/__exit.S
+++ b/libc/arch-x86/syscalls/__exit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__exit)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/__fcntl64.S b/libc/arch-x86/syscalls/__fcntl64.S
index 7c41c88..d900a52 100644
--- a/libc/arch-x86/syscalls/__fcntl64.S
+++ b/libc/arch-x86/syscalls/__fcntl64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__fcntl64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/__fstatfs64.S b/libc/arch-x86/syscalls/__fstatfs64.S
index b182ae3..9b44743 100644
--- a/libc/arch-x86/syscalls/__fstatfs64.S
+++ b/libc/arch-x86/syscalls/__fstatfs64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__fstatfs64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/__getcpu.S b/libc/arch-x86/syscalls/__getcpu.S
index 4cdbafa..bb4c41f 100644
--- a/libc/arch-x86/syscalls/__getcpu.S
+++ b/libc/arch-x86/syscalls/__getcpu.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcpu)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/__getcwd.S b/libc/arch-x86/syscalls/__getcwd.S
index f5b9b9c..8decd99 100644
--- a/libc/arch-x86/syscalls/__getcwd.S
+++ b/libc/arch-x86/syscalls/__getcwd.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcwd)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/__getdents64.S b/libc/arch-x86/syscalls/__getdents64.S
index 0ff217d..5190a68 100644
--- a/libc/arch-x86/syscalls/__getdents64.S
+++ b/libc/arch-x86/syscalls/__getdents64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getdents64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/__getpid.S b/libc/arch-x86/syscalls/__getpid.S
index 6a3602e..197202c 100644
--- a/libc/arch-x86/syscalls/__getpid.S
+++ b/libc/arch-x86/syscalls/__getpid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpid)
movl $__NR_getpid, %eax
int $0x80
@@ -11,7 +9,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
ret
diff --git a/libc/arch-x86/syscalls/__getpriority.S b/libc/arch-x86/syscalls/__getpriority.S
index 6a94f43..dd5591f 100644
--- a/libc/arch-x86/syscalls/__getpriority.S
+++ b/libc/arch-x86/syscalls/__getpriority.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpriority)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/__ioctl.S b/libc/arch-x86/syscalls/__ioctl.S
index edb990a..b6ee9f2 100644
--- a/libc/arch-x86/syscalls/__ioctl.S
+++ b/libc/arch-x86/syscalls/__ioctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ioctl)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/__llseek.S b/libc/arch-x86/syscalls/__llseek.S
index db39106..5cc907a 100644
--- a/libc/arch-x86/syscalls/__llseek.S
+++ b/libc/arch-x86/syscalls/__llseek.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__llseek)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/__mmap2.S b/libc/arch-x86/syscalls/__mmap2.S
index 5c8f2a3..08314c8 100644
--- a/libc/arch-x86/syscalls/__mmap2.S
+++ b/libc/arch-x86/syscalls/__mmap2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__mmap2)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -35,7 +33,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebp
diff --git a/libc/arch-x86/syscalls/__openat.S b/libc/arch-x86/syscalls/__openat.S
index 87687e5..4c11709 100644
--- a/libc/arch-x86/syscalls/__openat.S
+++ b/libc/arch-x86/syscalls/__openat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__openat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/__ppoll.S b/libc/arch-x86/syscalls/__ppoll.S
index e48f841..2a1f76e 100644
--- a/libc/arch-x86/syscalls/__ppoll.S
+++ b/libc/arch-x86/syscalls/__ppoll.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ppoll)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/__pselect6.S b/libc/arch-x86/syscalls/__pselect6.S
index 53edb8c..8ff102a 100644
--- a/libc/arch-x86/syscalls/__pselect6.S
+++ b/libc/arch-x86/syscalls/__pselect6.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__pselect6)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -35,7 +33,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebp
diff --git a/libc/arch-x86/syscalls/__ptrace.S b/libc/arch-x86/syscalls/__ptrace.S
index 9d1e460..d982cec 100644
--- a/libc/arch-x86/syscalls/__ptrace.S
+++ b/libc/arch-x86/syscalls/__ptrace.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ptrace)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/__reboot.S b/libc/arch-x86/syscalls/__reboot.S
index 3ef78bb..3d169bf 100644
--- a/libc/arch-x86/syscalls/__reboot.S
+++ b/libc/arch-x86/syscalls/__reboot.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__reboot)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/__rt_sigaction.S b/libc/arch-x86/syscalls/__rt_sigaction.S
index 1ce7ef9..59c3882 100644
--- a/libc/arch-x86/syscalls/__rt_sigaction.S
+++ b/libc/arch-x86/syscalls/__rt_sigaction.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigaction)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/__rt_sigpending.S b/libc/arch-x86/syscalls/__rt_sigpending.S
index a4cb3c1..9c6a106 100644
--- a/libc/arch-x86/syscalls/__rt_sigpending.S
+++ b/libc/arch-x86/syscalls/__rt_sigpending.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigpending)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/__rt_sigprocmask.S b/libc/arch-x86/syscalls/__rt_sigprocmask.S
index 9d8e90d..9b1532f 100644
--- a/libc/arch-x86/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-x86/syscalls/__rt_sigprocmask.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigprocmask)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/__rt_sigsuspend.S b/libc/arch-x86/syscalls/__rt_sigsuspend.S
index e0d0c3d..b05acd8 100644
--- a/libc/arch-x86/syscalls/__rt_sigsuspend.S
+++ b/libc/arch-x86/syscalls/__rt_sigsuspend.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigsuspend)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/__rt_sigtimedwait.S b/libc/arch-x86/syscalls/__rt_sigtimedwait.S
index 091c1a7..14cb70f 100644
--- a/libc/arch-x86/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-x86/syscalls/__rt_sigtimedwait.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigtimedwait)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/__sched_getaffinity.S b/libc/arch-x86/syscalls/__sched_getaffinity.S
index 2c278db..0b0a970 100644
--- a/libc/arch-x86/syscalls/__sched_getaffinity.S
+++ b/libc/arch-x86/syscalls/__sched_getaffinity.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__sched_getaffinity)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/__set_thread_area.S b/libc/arch-x86/syscalls/__set_thread_area.S
index 29e1238..8cd6880 100644
--- a/libc/arch-x86/syscalls/__set_thread_area.S
+++ b/libc/arch-x86/syscalls/__set_thread_area.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__set_thread_area)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/__set_tid_address.S b/libc/arch-x86/syscalls/__set_tid_address.S
index 3517442..08acce9 100644
--- a/libc/arch-x86/syscalls/__set_tid_address.S
+++ b/libc/arch-x86/syscalls/__set_tid_address.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__set_tid_address)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/__sigaction.S b/libc/arch-x86/syscalls/__sigaction.S
index 0a3e77e..0238247 100644
--- a/libc/arch-x86/syscalls/__sigaction.S
+++ b/libc/arch-x86/syscalls/__sigaction.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__sigaction)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/__signalfd4.S b/libc/arch-x86/syscalls/__signalfd4.S
index acfced5..02ddc73 100644
--- a/libc/arch-x86/syscalls/__signalfd4.S
+++ b/libc/arch-x86/syscalls/__signalfd4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__signalfd4)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/__socket.S b/libc/arch-x86/syscalls/__socket.S
index 59988f3..75952ee 100644
--- a/libc/arch-x86/syscalls/__socket.S
+++ b/libc/arch-x86/syscalls/__socket.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__socket)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/__statfs64.S b/libc/arch-x86/syscalls/__statfs64.S
index 63d866e..b9bccb0 100644
--- a/libc/arch-x86/syscalls/__statfs64.S
+++ b/libc/arch-x86/syscalls/__statfs64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__statfs64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/__timer_create.S b/libc/arch-x86/syscalls/__timer_create.S
index 1265aa6..b22f408 100644
--- a/libc/arch-x86/syscalls/__timer_create.S
+++ b/libc/arch-x86/syscalls/__timer_create.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_create)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/__timer_delete.S b/libc/arch-x86/syscalls/__timer_delete.S
index bc1fbc5..d77ae3e 100644
--- a/libc/arch-x86/syscalls/__timer_delete.S
+++ b/libc/arch-x86/syscalls/__timer_delete.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_delete)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/__timer_getoverrun.S b/libc/arch-x86/syscalls/__timer_getoverrun.S
index 2a8de1e..f21b08f 100644
--- a/libc/arch-x86/syscalls/__timer_getoverrun.S
+++ b/libc/arch-x86/syscalls/__timer_getoverrun.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_getoverrun)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/__timer_gettime.S b/libc/arch-x86/syscalls/__timer_gettime.S
index 9edd15a..73c8539 100644
--- a/libc/arch-x86/syscalls/__timer_gettime.S
+++ b/libc/arch-x86/syscalls/__timer_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_gettime)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/__timer_settime.S b/libc/arch-x86/syscalls/__timer_settime.S
index 4bb0790..1a6a8ec 100644
--- a/libc/arch-x86/syscalls/__timer_settime.S
+++ b/libc/arch-x86/syscalls/__timer_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_settime)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/__waitid.S b/libc/arch-x86/syscalls/__waitid.S
index 331baf5..2061abc 100644
--- a/libc/arch-x86/syscalls/__waitid.S
+++ b/libc/arch-x86/syscalls/__waitid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__waitid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/_exit.S b/libc/arch-x86/syscalls/_exit.S
index 0da6e79..8528ee4 100644
--- a/libc/arch-x86/syscalls/_exit.S
+++ b/libc/arch-x86/syscalls/_exit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(_exit)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/acct.S b/libc/arch-x86/syscalls/acct.S
index 34a23a4..d831771 100644
--- a/libc/arch-x86/syscalls/acct.S
+++ b/libc/arch-x86/syscalls/acct.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(acct)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/bind.S b/libc/arch-x86/syscalls/bind.S
index 1d45319..9ef817e 100644
--- a/libc/arch-x86/syscalls/bind.S
+++ b/libc/arch-x86/syscalls/bind.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(bind)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/capget.S b/libc/arch-x86/syscalls/capget.S
index 82b5b73..81c24e8 100644
--- a/libc/arch-x86/syscalls/capget.S
+++ b/libc/arch-x86/syscalls/capget.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capget)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/capset.S b/libc/arch-x86/syscalls/capset.S
index 79e8747..4e311e9 100644
--- a/libc/arch-x86/syscalls/capset.S
+++ b/libc/arch-x86/syscalls/capset.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capset)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/chdir.S b/libc/arch-x86/syscalls/chdir.S
index 98bdf37..2226a1a 100644
--- a/libc/arch-x86/syscalls/chdir.S
+++ b/libc/arch-x86/syscalls/chdir.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chdir)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/chroot.S b/libc/arch-x86/syscalls/chroot.S
index 978eec7..95ed0b5 100644
--- a/libc/arch-x86/syscalls/chroot.S
+++ b/libc/arch-x86/syscalls/chroot.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chroot)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/clock_getres.S b/libc/arch-x86/syscalls/clock_getres.S
index c93a279..9501799 100644
--- a/libc/arch-x86/syscalls/clock_getres.S
+++ b/libc/arch-x86/syscalls/clock_getres.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_getres)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/clock_gettime.S b/libc/arch-x86/syscalls/clock_gettime.S
index 9c5c240..0875cfb 100644
--- a/libc/arch-x86/syscalls/clock_gettime.S
+++ b/libc/arch-x86/syscalls/clock_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_gettime)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/clock_nanosleep.S b/libc/arch-x86/syscalls/clock_nanosleep.S
index edadec2..5e2cc03 100644
--- a/libc/arch-x86/syscalls/clock_nanosleep.S
+++ b/libc/arch-x86/syscalls/clock_nanosleep.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_nanosleep)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/clock_settime.S b/libc/arch-x86/syscalls/clock_settime.S
index 41012d0..96fafed 100644
--- a/libc/arch-x86/syscalls/clock_settime.S
+++ b/libc/arch-x86/syscalls/clock_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_settime)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/close.S b/libc/arch-x86/syscalls/close.S
index b73c4b4..f6cce62 100644
--- a/libc/arch-x86/syscalls/close.S
+++ b/libc/arch-x86/syscalls/close.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(close)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/delete_module.S b/libc/arch-x86/syscalls/delete_module.S
index 73a5128..58b8d6b 100644
--- a/libc/arch-x86/syscalls/delete_module.S
+++ b/libc/arch-x86/syscalls/delete_module.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(delete_module)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/dup.S b/libc/arch-x86/syscalls/dup.S
index f8e8772..0fd9cce 100644
--- a/libc/arch-x86/syscalls/dup.S
+++ b/libc/arch-x86/syscalls/dup.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/dup3.S b/libc/arch-x86/syscalls/dup3.S
index 1203e64..8348660 100644
--- a/libc/arch-x86/syscalls/dup3.S
+++ b/libc/arch-x86/syscalls/dup3.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup3)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/epoll_create1.S b/libc/arch-x86/syscalls/epoll_create1.S
index 6384b92..0fcd09c 100644
--- a/libc/arch-x86/syscalls/epoll_create1.S
+++ b/libc/arch-x86/syscalls/epoll_create1.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_create1)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/epoll_ctl.S b/libc/arch-x86/syscalls/epoll_ctl.S
index cdc880e..092c1e0 100644
--- a/libc/arch-x86/syscalls/epoll_ctl.S
+++ b/libc/arch-x86/syscalls/epoll_ctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_ctl)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/eventfd.S b/libc/arch-x86/syscalls/eventfd.S
index fe85967..cc165e5 100644
--- a/libc/arch-x86/syscalls/eventfd.S
+++ b/libc/arch-x86/syscalls/eventfd.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(eventfd)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/execve.S b/libc/arch-x86/syscalls/execve.S
index a897c42..e1c0253 100644
--- a/libc/arch-x86/syscalls/execve.S
+++ b/libc/arch-x86/syscalls/execve.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(execve)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/faccessat.S b/libc/arch-x86/syscalls/faccessat.S
index 4ac3e2a..9d52231 100644
--- a/libc/arch-x86/syscalls/faccessat.S
+++ b/libc/arch-x86/syscalls/faccessat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(faccessat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/fallocate64.S b/libc/arch-x86/syscalls/fallocate64.S
index e1dfa08..e2a7c3e 100644
--- a/libc/arch-x86/syscalls/fallocate64.S
+++ b/libc/arch-x86/syscalls/fallocate64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fallocate64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -35,7 +33,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebp
diff --git a/libc/arch-x86/syscalls/fchdir.S b/libc/arch-x86/syscalls/fchdir.S
index af43acb..c40c2c1 100644
--- a/libc/arch-x86/syscalls/fchdir.S
+++ b/libc/arch-x86/syscalls/fchdir.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchdir)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/fchmod.S b/libc/arch-x86/syscalls/fchmod.S
index 5c58359..37851ff 100644
--- a/libc/arch-x86/syscalls/fchmod.S
+++ b/libc/arch-x86/syscalls/fchmod.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmod)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/fchmodat.S b/libc/arch-x86/syscalls/fchmodat.S
index aed8d29..f515512 100644
--- a/libc/arch-x86/syscalls/fchmodat.S
+++ b/libc/arch-x86/syscalls/fchmodat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmodat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/fchown.S b/libc/arch-x86/syscalls/fchown.S
index da80251..1a4f749 100644
--- a/libc/arch-x86/syscalls/fchown.S
+++ b/libc/arch-x86/syscalls/fchown.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchown)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/fchownat.S b/libc/arch-x86/syscalls/fchownat.S
index 8514243..c2b358e 100644
--- a/libc/arch-x86/syscalls/fchownat.S
+++ b/libc/arch-x86/syscalls/fchownat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchownat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/fdatasync.S b/libc/arch-x86/syscalls/fdatasync.S
index fc2c163..debd4e3 100644
--- a/libc/arch-x86/syscalls/fdatasync.S
+++ b/libc/arch-x86/syscalls/fdatasync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fdatasync)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/fgetxattr.S b/libc/arch-x86/syscalls/fgetxattr.S
index 767a675..1eff931 100644
--- a/libc/arch-x86/syscalls/fgetxattr.S
+++ b/libc/arch-x86/syscalls/fgetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fgetxattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/flistxattr.S b/libc/arch-x86/syscalls/flistxattr.S
index dbb4977..fc81a37 100644
--- a/libc/arch-x86/syscalls/flistxattr.S
+++ b/libc/arch-x86/syscalls/flistxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flistxattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/flock.S b/libc/arch-x86/syscalls/flock.S
index b4b748e..0fc76a8 100644
--- a/libc/arch-x86/syscalls/flock.S
+++ b/libc/arch-x86/syscalls/flock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flock)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/fremovexattr.S b/libc/arch-x86/syscalls/fremovexattr.S
index c34cbc4..2053a9a 100644
--- a/libc/arch-x86/syscalls/fremovexattr.S
+++ b/libc/arch-x86/syscalls/fremovexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fremovexattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/fsetxattr.S b/libc/arch-x86/syscalls/fsetxattr.S
index 5593dca..7af0ef0 100644
--- a/libc/arch-x86/syscalls/fsetxattr.S
+++ b/libc/arch-x86/syscalls/fsetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsetxattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/fstat64.S b/libc/arch-x86/syscalls/fstat64.S
index 2e29ae5..fc16233 100644
--- a/libc/arch-x86/syscalls/fstat64.S
+++ b/libc/arch-x86/syscalls/fstat64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstat64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/fstatat64.S b/libc/arch-x86/syscalls/fstatat64.S
index 72922cb..a3697e6 100644
--- a/libc/arch-x86/syscalls/fstatat64.S
+++ b/libc/arch-x86/syscalls/fstatat64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstatat64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/fsync.S b/libc/arch-x86/syscalls/fsync.S
index af10e9a..b19a3ab 100644
--- a/libc/arch-x86/syscalls/fsync.S
+++ b/libc/arch-x86/syscalls/fsync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsync)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/ftruncate.S b/libc/arch-x86/syscalls/ftruncate.S
index 7343985..78d1e18 100644
--- a/libc/arch-x86/syscalls/ftruncate.S
+++ b/libc/arch-x86/syscalls/ftruncate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(ftruncate)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/ftruncate64.S b/libc/arch-x86/syscalls/ftruncate64.S
index 47b925b..7233447 100644
--- a/libc/arch-x86/syscalls/ftruncate64.S
+++ b/libc/arch-x86/syscalls/ftruncate64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(ftruncate64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/getegid.S b/libc/arch-x86/syscalls/getegid.S
index bc21b5a..729b7ad 100644
--- a/libc/arch-x86/syscalls/getegid.S
+++ b/libc/arch-x86/syscalls/getegid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getegid)
movl $__NR_getegid32, %eax
int $0x80
@@ -11,7 +9,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
ret
diff --git a/libc/arch-x86/syscalls/geteuid.S b/libc/arch-x86/syscalls/geteuid.S
index 469f9c9..dcc76b1 100644
--- a/libc/arch-x86/syscalls/geteuid.S
+++ b/libc/arch-x86/syscalls/geteuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(geteuid)
movl $__NR_geteuid32, %eax
int $0x80
@@ -11,7 +9,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
ret
diff --git a/libc/arch-x86/syscalls/getgid.S b/libc/arch-x86/syscalls/getgid.S
index 6b15674..b36a2c9 100644
--- a/libc/arch-x86/syscalls/getgid.S
+++ b/libc/arch-x86/syscalls/getgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgid)
movl $__NR_getgid32, %eax
int $0x80
@@ -11,7 +9,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
ret
diff --git a/libc/arch-x86/syscalls/getgroups.S b/libc/arch-x86/syscalls/getgroups.S
index a7aa1b2..0a5de35 100644
--- a/libc/arch-x86/syscalls/getgroups.S
+++ b/libc/arch-x86/syscalls/getgroups.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgroups)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/getitimer.S b/libc/arch-x86/syscalls/getitimer.S
index 1b424a3..a0cb761 100644
--- a/libc/arch-x86/syscalls/getitimer.S
+++ b/libc/arch-x86/syscalls/getitimer.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getitimer)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/getpeername.S b/libc/arch-x86/syscalls/getpeername.S
index 94b43fb..6773e6a 100644
--- a/libc/arch-x86/syscalls/getpeername.S
+++ b/libc/arch-x86/syscalls/getpeername.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpeername)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/getpgid.S b/libc/arch-x86/syscalls/getpgid.S
index 7d7149e..f702cfd 100644
--- a/libc/arch-x86/syscalls/getpgid.S
+++ b/libc/arch-x86/syscalls/getpgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpgid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/getppid.S b/libc/arch-x86/syscalls/getppid.S
index 3103ed2..edbe384 100644
--- a/libc/arch-x86/syscalls/getppid.S
+++ b/libc/arch-x86/syscalls/getppid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getppid)
movl $__NR_getppid, %eax
int $0x80
@@ -11,7 +9,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
ret
diff --git a/libc/arch-x86/syscalls/getresgid.S b/libc/arch-x86/syscalls/getresgid.S
index 2f03a03..9f1a9dd 100644
--- a/libc/arch-x86/syscalls/getresgid.S
+++ b/libc/arch-x86/syscalls/getresgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresgid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/getresuid.S b/libc/arch-x86/syscalls/getresuid.S
index d6fe915..61e1370 100644
--- a/libc/arch-x86/syscalls/getresuid.S
+++ b/libc/arch-x86/syscalls/getresuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresuid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/getrlimit.S b/libc/arch-x86/syscalls/getrlimit.S
index 4587a2e..c3acff3 100644
--- a/libc/arch-x86/syscalls/getrlimit.S
+++ b/libc/arch-x86/syscalls/getrlimit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrlimit)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/getrusage.S b/libc/arch-x86/syscalls/getrusage.S
index 4b2e38b..0d715cd 100644
--- a/libc/arch-x86/syscalls/getrusage.S
+++ b/libc/arch-x86/syscalls/getrusage.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrusage)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/getsid.S b/libc/arch-x86/syscalls/getsid.S
index eac9f2c..e142c05 100644
--- a/libc/arch-x86/syscalls/getsid.S
+++ b/libc/arch-x86/syscalls/getsid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/getsockname.S b/libc/arch-x86/syscalls/getsockname.S
index 738fa6d..6050190 100644
--- a/libc/arch-x86/syscalls/getsockname.S
+++ b/libc/arch-x86/syscalls/getsockname.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockname)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/getsockopt.S b/libc/arch-x86/syscalls/getsockopt.S
index f8338f5..aec40cf 100644
--- a/libc/arch-x86/syscalls/getsockopt.S
+++ b/libc/arch-x86/syscalls/getsockopt.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockopt)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/gettimeofday.S b/libc/arch-x86/syscalls/gettimeofday.S
index 96c1e11..a508c14 100644
--- a/libc/arch-x86/syscalls/gettimeofday.S
+++ b/libc/arch-x86/syscalls/gettimeofday.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(gettimeofday)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/getuid.S b/libc/arch-x86/syscalls/getuid.S
index cde5da8..cc62884 100644
--- a/libc/arch-x86/syscalls/getuid.S
+++ b/libc/arch-x86/syscalls/getuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getuid)
movl $__NR_getuid32, %eax
int $0x80
@@ -11,7 +9,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
ret
diff --git a/libc/arch-x86/syscalls/getxattr.S b/libc/arch-x86/syscalls/getxattr.S
index 7679cbf..a2cf137 100644
--- a/libc/arch-x86/syscalls/getxattr.S
+++ b/libc/arch-x86/syscalls/getxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getxattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/init_module.S b/libc/arch-x86/syscalls/init_module.S
index 02e55f0..1d0f111 100644
--- a/libc/arch-x86/syscalls/init_module.S
+++ b/libc/arch-x86/syscalls/init_module.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(init_module)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/inotify_add_watch.S b/libc/arch-x86/syscalls/inotify_add_watch.S
index 74a59f3..8cadc6e 100644
--- a/libc/arch-x86/syscalls/inotify_add_watch.S
+++ b/libc/arch-x86/syscalls/inotify_add_watch.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_add_watch)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/inotify_init1.S b/libc/arch-x86/syscalls/inotify_init1.S
index de714c9..23671e0 100644
--- a/libc/arch-x86/syscalls/inotify_init1.S
+++ b/libc/arch-x86/syscalls/inotify_init1.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_init1)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/inotify_rm_watch.S b/libc/arch-x86/syscalls/inotify_rm_watch.S
index 3edc152..c246c00 100644
--- a/libc/arch-x86/syscalls/inotify_rm_watch.S
+++ b/libc/arch-x86/syscalls/inotify_rm_watch.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_rm_watch)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/kill.S b/libc/arch-x86/syscalls/kill.S
index 0cf38a9..edc9cde 100644
--- a/libc/arch-x86/syscalls/kill.S
+++ b/libc/arch-x86/syscalls/kill.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(kill)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/klogctl.S b/libc/arch-x86/syscalls/klogctl.S
index 52b04e1..5de9a31e 100644
--- a/libc/arch-x86/syscalls/klogctl.S
+++ b/libc/arch-x86/syscalls/klogctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(klogctl)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/lgetxattr.S b/libc/arch-x86/syscalls/lgetxattr.S
index 8c2eb47..55697a0 100644
--- a/libc/arch-x86/syscalls/lgetxattr.S
+++ b/libc/arch-x86/syscalls/lgetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lgetxattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/linkat.S b/libc/arch-x86/syscalls/linkat.S
index 56b8368..8b2646d 100644
--- a/libc/arch-x86/syscalls/linkat.S
+++ b/libc/arch-x86/syscalls/linkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(linkat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/listen.S b/libc/arch-x86/syscalls/listen.S
index 2c8cc76..8ae4186 100644
--- a/libc/arch-x86/syscalls/listen.S
+++ b/libc/arch-x86/syscalls/listen.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listen)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/listxattr.S b/libc/arch-x86/syscalls/listxattr.S
index f43ab3c..a73dc1a 100644
--- a/libc/arch-x86/syscalls/listxattr.S
+++ b/libc/arch-x86/syscalls/listxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listxattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/llistxattr.S b/libc/arch-x86/syscalls/llistxattr.S
index d326526..63d4489 100644
--- a/libc/arch-x86/syscalls/llistxattr.S
+++ b/libc/arch-x86/syscalls/llistxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(llistxattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/lremovexattr.S b/libc/arch-x86/syscalls/lremovexattr.S
index b4f4817..42c7e0f 100644
--- a/libc/arch-x86/syscalls/lremovexattr.S
+++ b/libc/arch-x86/syscalls/lremovexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lremovexattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/lseek.S b/libc/arch-x86/syscalls/lseek.S
index 1115be8..bfe9e63 100644
--- a/libc/arch-x86/syscalls/lseek.S
+++ b/libc/arch-x86/syscalls/lseek.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lseek)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/lsetxattr.S b/libc/arch-x86/syscalls/lsetxattr.S
index fc62cdd..f36fc6a 100644
--- a/libc/arch-x86/syscalls/lsetxattr.S
+++ b/libc/arch-x86/syscalls/lsetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lsetxattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/madvise.S b/libc/arch-x86/syscalls/madvise.S
index 1de4456..b69f5d4 100644
--- a/libc/arch-x86/syscalls/madvise.S
+++ b/libc/arch-x86/syscalls/madvise.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(madvise)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/mincore.S b/libc/arch-x86/syscalls/mincore.S
index 118063c..6d1df67 100644
--- a/libc/arch-x86/syscalls/mincore.S
+++ b/libc/arch-x86/syscalls/mincore.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mincore)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/mkdirat.S b/libc/arch-x86/syscalls/mkdirat.S
index 6969d2a..5b6ae18 100644
--- a/libc/arch-x86/syscalls/mkdirat.S
+++ b/libc/arch-x86/syscalls/mkdirat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mkdirat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/mknodat.S b/libc/arch-x86/syscalls/mknodat.S
index 6c743d2..b19d972 100644
--- a/libc/arch-x86/syscalls/mknodat.S
+++ b/libc/arch-x86/syscalls/mknodat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mknodat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/mlock.S b/libc/arch-x86/syscalls/mlock.S
index 5ec799e..517e5a5 100644
--- a/libc/arch-x86/syscalls/mlock.S
+++ b/libc/arch-x86/syscalls/mlock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlock)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/mlockall.S b/libc/arch-x86/syscalls/mlockall.S
index 72a8da5..756ca16 100644
--- a/libc/arch-x86/syscalls/mlockall.S
+++ b/libc/arch-x86/syscalls/mlockall.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlockall)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/mount.S b/libc/arch-x86/syscalls/mount.S
index 1e06b8e..0537528 100644
--- a/libc/arch-x86/syscalls/mount.S
+++ b/libc/arch-x86/syscalls/mount.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mount)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/mprotect.S b/libc/arch-x86/syscalls/mprotect.S
index 11037c3..1ba186c 100644
--- a/libc/arch-x86/syscalls/mprotect.S
+++ b/libc/arch-x86/syscalls/mprotect.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mprotect)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/mremap.S b/libc/arch-x86/syscalls/mremap.S
index b7f96ff..869ef5d 100644
--- a/libc/arch-x86/syscalls/mremap.S
+++ b/libc/arch-x86/syscalls/mremap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mremap)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/msync.S b/libc/arch-x86/syscalls/msync.S
index e2549f7..81bd598 100644
--- a/libc/arch-x86/syscalls/msync.S
+++ b/libc/arch-x86/syscalls/msync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(msync)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/munlock.S b/libc/arch-x86/syscalls/munlock.S
index 6b79e99..67ca3fe 100644
--- a/libc/arch-x86/syscalls/munlock.S
+++ b/libc/arch-x86/syscalls/munlock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlock)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/munlockall.S b/libc/arch-x86/syscalls/munlockall.S
index 96e238b..bf0bfa1 100644
--- a/libc/arch-x86/syscalls/munlockall.S
+++ b/libc/arch-x86/syscalls/munlockall.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlockall)
movl $__NR_munlockall, %eax
int $0x80
@@ -11,7 +9,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
ret
diff --git a/libc/arch-x86/syscalls/munmap.S b/libc/arch-x86/syscalls/munmap.S
index a77a777..272cb52 100644
--- a/libc/arch-x86/syscalls/munmap.S
+++ b/libc/arch-x86/syscalls/munmap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munmap)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/nanosleep.S b/libc/arch-x86/syscalls/nanosleep.S
index 444aa7e..5c46a4a 100644
--- a/libc/arch-x86/syscalls/nanosleep.S
+++ b/libc/arch-x86/syscalls/nanosleep.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(nanosleep)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/personality.S b/libc/arch-x86/syscalls/personality.S
index 5344e1c..d60ced1 100644
--- a/libc/arch-x86/syscalls/personality.S
+++ b/libc/arch-x86/syscalls/personality.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(personality)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/pipe2.S b/libc/arch-x86/syscalls/pipe2.S
index 62665a0..ee49ff8 100644
--- a/libc/arch-x86/syscalls/pipe2.S
+++ b/libc/arch-x86/syscalls/pipe2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pipe2)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/prctl.S b/libc/arch-x86/syscalls/prctl.S
index 28e84d8..496591e 100644
--- a/libc/arch-x86/syscalls/prctl.S
+++ b/libc/arch-x86/syscalls/prctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prctl)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/pread64.S b/libc/arch-x86/syscalls/pread64.S
index e7502b9..42e54ec 100644
--- a/libc/arch-x86/syscalls/pread64.S
+++ b/libc/arch-x86/syscalls/pread64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pread64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/prlimit64.S b/libc/arch-x86/syscalls/prlimit64.S
index 2ca8b23..07b5585 100644
--- a/libc/arch-x86/syscalls/prlimit64.S
+++ b/libc/arch-x86/syscalls/prlimit64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prlimit64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/pwrite64.S b/libc/arch-x86/syscalls/pwrite64.S
index b798a8e..d5c9b31 100644
--- a/libc/arch-x86/syscalls/pwrite64.S
+++ b/libc/arch-x86/syscalls/pwrite64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pwrite64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/read.S b/libc/arch-x86/syscalls/read.S
index 483c5ef..c10a83b 100644
--- a/libc/arch-x86/syscalls/read.S
+++ b/libc/arch-x86/syscalls/read.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(read)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/readahead.S b/libc/arch-x86/syscalls/readahead.S
index b1e0870..1c0ccfc 100644
--- a/libc/arch-x86/syscalls/readahead.S
+++ b/libc/arch-x86/syscalls/readahead.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readahead)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/readlinkat.S b/libc/arch-x86/syscalls/readlinkat.S
index a06ae73..4a24c2c 100644
--- a/libc/arch-x86/syscalls/readlinkat.S
+++ b/libc/arch-x86/syscalls/readlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readlinkat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/readv.S b/libc/arch-x86/syscalls/readv.S
index a0b46b8..c18c1b1 100644
--- a/libc/arch-x86/syscalls/readv.S
+++ b/libc/arch-x86/syscalls/readv.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readv)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/recvfrom.S b/libc/arch-x86/syscalls/recvfrom.S
index 86f12c0..88c9d0a 100644
--- a/libc/arch-x86/syscalls/recvfrom.S
+++ b/libc/arch-x86/syscalls/recvfrom.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvfrom)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/recvmmsg.S b/libc/arch-x86/syscalls/recvmmsg.S
index f77f794..09404d4 100644
--- a/libc/arch-x86/syscalls/recvmmsg.S
+++ b/libc/arch-x86/syscalls/recvmmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmmsg)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/recvmsg.S b/libc/arch-x86/syscalls/recvmsg.S
index 5d25d7a..6cfcd63 100644
--- a/libc/arch-x86/syscalls/recvmsg.S
+++ b/libc/arch-x86/syscalls/recvmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmsg)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/removexattr.S b/libc/arch-x86/syscalls/removexattr.S
index cbbdf4e..b067a9f 100644
--- a/libc/arch-x86/syscalls/removexattr.S
+++ b/libc/arch-x86/syscalls/removexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(removexattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/renameat.S b/libc/arch-x86/syscalls/renameat.S
index e424daf..bb2181e 100644
--- a/libc/arch-x86/syscalls/renameat.S
+++ b/libc/arch-x86/syscalls/renameat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(renameat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/sched_get_priority_max.S b/libc/arch-x86/syscalls/sched_get_priority_max.S
index eee6f92..be66cfb 100644
--- a/libc/arch-x86/syscalls/sched_get_priority_max.S
+++ b/libc/arch-x86/syscalls/sched_get_priority_max.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_max)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/sched_get_priority_min.S b/libc/arch-x86/syscalls/sched_get_priority_min.S
index 0edcab1..8dde67b 100644
--- a/libc/arch-x86/syscalls/sched_get_priority_min.S
+++ b/libc/arch-x86/syscalls/sched_get_priority_min.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_min)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/sched_getparam.S b/libc/arch-x86/syscalls/sched_getparam.S
index 9a4ebbd..d0551ef 100644
--- a/libc/arch-x86/syscalls/sched_getparam.S
+++ b/libc/arch-x86/syscalls/sched_getparam.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getparam)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/sched_getscheduler.S b/libc/arch-x86/syscalls/sched_getscheduler.S
index 19a925e..5b7c817 100644
--- a/libc/arch-x86/syscalls/sched_getscheduler.S
+++ b/libc/arch-x86/syscalls/sched_getscheduler.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getscheduler)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/sched_rr_get_interval.S b/libc/arch-x86/syscalls/sched_rr_get_interval.S
index c2592a9..073f3c7 100644
--- a/libc/arch-x86/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-x86/syscalls/sched_rr_get_interval.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_rr_get_interval)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/sched_setaffinity.S b/libc/arch-x86/syscalls/sched_setaffinity.S
index 4a0ac86..79ec113 100644
--- a/libc/arch-x86/syscalls/sched_setaffinity.S
+++ b/libc/arch-x86/syscalls/sched_setaffinity.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setaffinity)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/sched_setparam.S b/libc/arch-x86/syscalls/sched_setparam.S
index a99c0de..970747d 100644
--- a/libc/arch-x86/syscalls/sched_setparam.S
+++ b/libc/arch-x86/syscalls/sched_setparam.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setparam)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/sched_setscheduler.S b/libc/arch-x86/syscalls/sched_setscheduler.S
index dbfd01e..da50aaf 100644
--- a/libc/arch-x86/syscalls/sched_setscheduler.S
+++ b/libc/arch-x86/syscalls/sched_setscheduler.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setscheduler)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/sched_yield.S b/libc/arch-x86/syscalls/sched_yield.S
index 87ebaf9..e3878e3 100644
--- a/libc/arch-x86/syscalls/sched_yield.S
+++ b/libc/arch-x86/syscalls/sched_yield.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_yield)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/sendfile.S b/libc/arch-x86/syscalls/sendfile.S
index 58433fb..c5f9a2d 100644
--- a/libc/arch-x86/syscalls/sendfile.S
+++ b/libc/arch-x86/syscalls/sendfile.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendfile)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/sendfile64.S b/libc/arch-x86/syscalls/sendfile64.S
index 97c7146..bc5d0dd 100644
--- a/libc/arch-x86/syscalls/sendfile64.S
+++ b/libc/arch-x86/syscalls/sendfile64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendfile64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/sendmmsg.S b/libc/arch-x86/syscalls/sendmmsg.S
index 3c359ee..784c6b6 100644
--- a/libc/arch-x86/syscalls/sendmmsg.S
+++ b/libc/arch-x86/syscalls/sendmmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmmsg)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/sendmsg.S b/libc/arch-x86/syscalls/sendmsg.S
index 51288cc..bf0d1fb 100644
--- a/libc/arch-x86/syscalls/sendmsg.S
+++ b/libc/arch-x86/syscalls/sendmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmsg)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/sendto.S b/libc/arch-x86/syscalls/sendto.S
index 4b77f24..b39eaf0 100644
--- a/libc/arch-x86/syscalls/sendto.S
+++ b/libc/arch-x86/syscalls/sendto.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendto)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/setfsgid.S b/libc/arch-x86/syscalls/setfsgid.S
index a8160c3..dc81f72 100644
--- a/libc/arch-x86/syscalls/setfsgid.S
+++ b/libc/arch-x86/syscalls/setfsgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsgid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/setfsuid.S b/libc/arch-x86/syscalls/setfsuid.S
index abcf0b3..fdf7850 100644
--- a/libc/arch-x86/syscalls/setfsuid.S
+++ b/libc/arch-x86/syscalls/setfsuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsuid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/setgid.S b/libc/arch-x86/syscalls/setgid.S
index 47c011e..ce6ee26 100644
--- a/libc/arch-x86/syscalls/setgid.S
+++ b/libc/arch-x86/syscalls/setgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/setgroups.S b/libc/arch-x86/syscalls/setgroups.S
index 7a58910..7e46ad0 100644
--- a/libc/arch-x86/syscalls/setgroups.S
+++ b/libc/arch-x86/syscalls/setgroups.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgroups)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/setitimer.S b/libc/arch-x86/syscalls/setitimer.S
index e87a26e..370ab5e 100644
--- a/libc/arch-x86/syscalls/setitimer.S
+++ b/libc/arch-x86/syscalls/setitimer.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setitimer)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/setns.S b/libc/arch-x86/syscalls/setns.S
index 75f23fa..736df59 100644
--- a/libc/arch-x86/syscalls/setns.S
+++ b/libc/arch-x86/syscalls/setns.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setns)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/setpgid.S b/libc/arch-x86/syscalls/setpgid.S
index c20b789..0bff10a 100644
--- a/libc/arch-x86/syscalls/setpgid.S
+++ b/libc/arch-x86/syscalls/setpgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpgid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/setpriority.S b/libc/arch-x86/syscalls/setpriority.S
index 4606c23..4233871 100644
--- a/libc/arch-x86/syscalls/setpriority.S
+++ b/libc/arch-x86/syscalls/setpriority.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpriority)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/setregid.S b/libc/arch-x86/syscalls/setregid.S
index ff6cf36..a56ccfd 100644
--- a/libc/arch-x86/syscalls/setregid.S
+++ b/libc/arch-x86/syscalls/setregid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setregid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/setresgid.S b/libc/arch-x86/syscalls/setresgid.S
index a4846ae..2299831 100644
--- a/libc/arch-x86/syscalls/setresgid.S
+++ b/libc/arch-x86/syscalls/setresgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresgid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/setresuid.S b/libc/arch-x86/syscalls/setresuid.S
index 6ed0fad..8624e15 100644
--- a/libc/arch-x86/syscalls/setresuid.S
+++ b/libc/arch-x86/syscalls/setresuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresuid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/setreuid.S b/libc/arch-x86/syscalls/setreuid.S
index 57d7540..9f6e117 100644
--- a/libc/arch-x86/syscalls/setreuid.S
+++ b/libc/arch-x86/syscalls/setreuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setreuid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/setrlimit.S b/libc/arch-x86/syscalls/setrlimit.S
index 9ca6134..2024688 100644
--- a/libc/arch-x86/syscalls/setrlimit.S
+++ b/libc/arch-x86/syscalls/setrlimit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setrlimit)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/setsid.S b/libc/arch-x86/syscalls/setsid.S
index 5c933b3..dda6ad8 100644
--- a/libc/arch-x86/syscalls/setsid.S
+++ b/libc/arch-x86/syscalls/setsid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsid)
movl $__NR_setsid, %eax
int $0x80
@@ -11,7 +9,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
ret
diff --git a/libc/arch-x86/syscalls/setsockopt.S b/libc/arch-x86/syscalls/setsockopt.S
index f002344..29e73bb 100644
--- a/libc/arch-x86/syscalls/setsockopt.S
+++ b/libc/arch-x86/syscalls/setsockopt.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsockopt)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/settimeofday.S b/libc/arch-x86/syscalls/settimeofday.S
index b35791d..4a861ab 100644
--- a/libc/arch-x86/syscalls/settimeofday.S
+++ b/libc/arch-x86/syscalls/settimeofday.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(settimeofday)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/setuid.S b/libc/arch-x86/syscalls/setuid.S
index f5b8315..048e0c1 100644
--- a/libc/arch-x86/syscalls/setuid.S
+++ b/libc/arch-x86/syscalls/setuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setuid)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/setxattr.S b/libc/arch-x86/syscalls/setxattr.S
index 24eb2c4..1e87bf0 100644
--- a/libc/arch-x86/syscalls/setxattr.S
+++ b/libc/arch-x86/syscalls/setxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setxattr)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -31,7 +29,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edi
diff --git a/libc/arch-x86/syscalls/shutdown.S b/libc/arch-x86/syscalls/shutdown.S
index e5497e6..f224fc6 100644
--- a/libc/arch-x86/syscalls/shutdown.S
+++ b/libc/arch-x86/syscalls/shutdown.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(shutdown)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/sigaltstack.S b/libc/arch-x86/syscalls/sigaltstack.S
index 150e398..875ef8c 100644
--- a/libc/arch-x86/syscalls/sigaltstack.S
+++ b/libc/arch-x86/syscalls/sigaltstack.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sigaltstack)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/socketpair.S b/libc/arch-x86/syscalls/socketpair.S
index f2188e3..4c5154e 100644
--- a/libc/arch-x86/syscalls/socketpair.S
+++ b/libc/arch-x86/syscalls/socketpair.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(socketpair)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -20,7 +18,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/splice.S b/libc/arch-x86/syscalls/splice.S
index 38d9ddf..1dc9037 100644
--- a/libc/arch-x86/syscalls/splice.S
+++ b/libc/arch-x86/syscalls/splice.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(splice)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -35,7 +33,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebp
diff --git a/libc/arch-x86/syscalls/swapoff.S b/libc/arch-x86/syscalls/swapoff.S
index a0cbc0e..0788529 100644
--- a/libc/arch-x86/syscalls/swapoff.S
+++ b/libc/arch-x86/syscalls/swapoff.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapoff)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/swapon.S b/libc/arch-x86/syscalls/swapon.S
index 5a2bc94..1070d8e 100644
--- a/libc/arch-x86/syscalls/swapon.S
+++ b/libc/arch-x86/syscalls/swapon.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapon)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/symlinkat.S b/libc/arch-x86/syscalls/symlinkat.S
index 7d7a9da..e7fe69e 100644
--- a/libc/arch-x86/syscalls/symlinkat.S
+++ b/libc/arch-x86/syscalls/symlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(symlinkat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/sync.S b/libc/arch-x86/syscalls/sync.S
index 423c01d..252c666 100644
--- a/libc/arch-x86/syscalls/sync.S
+++ b/libc/arch-x86/syscalls/sync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sync)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/sysinfo.S b/libc/arch-x86/syscalls/sysinfo.S
index 0870761..f59a0c3 100644
--- a/libc/arch-x86/syscalls/sysinfo.S
+++ b/libc/arch-x86/syscalls/sysinfo.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sysinfo)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/tee.S b/libc/arch-x86/syscalls/tee.S
index 85ff3cc..b47c460 100644
--- a/libc/arch-x86/syscalls/tee.S
+++ b/libc/arch-x86/syscalls/tee.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tee)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/tgkill.S b/libc/arch-x86/syscalls/tgkill.S
index aab80e1..7a43a01 100644
--- a/libc/arch-x86/syscalls/tgkill.S
+++ b/libc/arch-x86/syscalls/tgkill.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tgkill)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/timerfd_create.S b/libc/arch-x86/syscalls/timerfd_create.S
index f1bef4c..ad099a5 100644
--- a/libc/arch-x86/syscalls/timerfd_create.S
+++ b/libc/arch-x86/syscalls/timerfd_create.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_create)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/timerfd_gettime.S b/libc/arch-x86/syscalls/timerfd_gettime.S
index d7ec28f..c679b7c 100644
--- a/libc/arch-x86/syscalls/timerfd_gettime.S
+++ b/libc/arch-x86/syscalls/timerfd_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_gettime)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/timerfd_settime.S b/libc/arch-x86/syscalls/timerfd_settime.S
index 7e03edb..4e889ea 100644
--- a/libc/arch-x86/syscalls/timerfd_settime.S
+++ b/libc/arch-x86/syscalls/timerfd_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_settime)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/times.S b/libc/arch-x86/syscalls/times.S
index 6a14cff..0ba0b6f 100644
--- a/libc/arch-x86/syscalls/times.S
+++ b/libc/arch-x86/syscalls/times.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(times)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/truncate.S b/libc/arch-x86/syscalls/truncate.S
index 33ce47f..31fec17 100644
--- a/libc/arch-x86/syscalls/truncate.S
+++ b/libc/arch-x86/syscalls/truncate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(truncate)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/truncate64.S b/libc/arch-x86/syscalls/truncate64.S
index 2168eb4..45e24d0 100644
--- a/libc/arch-x86/syscalls/truncate64.S
+++ b/libc/arch-x86/syscalls/truncate64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(truncate64)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/umask.S b/libc/arch-x86/syscalls/umask.S
index 03bee20..9b4d3c7 100644
--- a/libc/arch-x86/syscalls/umask.S
+++ b/libc/arch-x86/syscalls/umask.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umask)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/umount2.S b/libc/arch-x86/syscalls/umount2.S
index 9701e03..13757ab 100644
--- a/libc/arch-x86/syscalls/umount2.S
+++ b/libc/arch-x86/syscalls/umount2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umount2)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -19,7 +17,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ecx
diff --git a/libc/arch-x86/syscalls/uname.S b/libc/arch-x86/syscalls/uname.S
index 6de3b41..dab7e0d 100644
--- a/libc/arch-x86/syscalls/uname.S
+++ b/libc/arch-x86/syscalls/uname.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(uname)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/unlinkat.S b/libc/arch-x86/syscalls/unlinkat.S
index 93ea201..6faf71e 100644
--- a/libc/arch-x86/syscalls/unlinkat.S
+++ b/libc/arch-x86/syscalls/unlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unlinkat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/unshare.S b/libc/arch-x86/syscalls/unshare.S
index 9d11466..b724798 100644
--- a/libc/arch-x86/syscalls/unshare.S
+++ b/libc/arch-x86/syscalls/unshare.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unshare)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -15,7 +13,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %ebx
diff --git a/libc/arch-x86/syscalls/utimensat.S b/libc/arch-x86/syscalls/utimensat.S
index 62e1525..07eca45 100644
--- a/libc/arch-x86/syscalls/utimensat.S
+++ b/libc/arch-x86/syscalls/utimensat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(utimensat)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/vmsplice.S b/libc/arch-x86/syscalls/vmsplice.S
index 4707635..f12cc65 100644
--- a/libc/arch-x86/syscalls/vmsplice.S
+++ b/libc/arch-x86/syscalls/vmsplice.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(vmsplice)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/wait4.S b/libc/arch-x86/syscalls/wait4.S
index 137b721..bed7c40 100644
--- a/libc/arch-x86/syscalls/wait4.S
+++ b/libc/arch-x86/syscalls/wait4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(wait4)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -27,7 +25,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %esi
diff --git a/libc/arch-x86/syscalls/write.S b/libc/arch-x86/syscalls/write.S
index 2f040b2..e147208 100644
--- a/libc/arch-x86/syscalls/write.S
+++ b/libc/arch-x86/syscalls/write.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(write)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/syscalls/writev.S b/libc/arch-x86/syscalls/writev.S
index 2840eea..07ba7b5 100644
--- a/libc/arch-x86/syscalls/writev.S
+++ b/libc/arch-x86/syscalls/writev.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(writev)
pushl %ebx
.cfi_def_cfa_offset 8
@@ -23,7 +21,7 @@
jb 1f
negl %eax
pushl %eax
- call __set_errno
+ call __set_errno_internal
addl $4, %esp
1:
popl %edx
diff --git a/libc/arch-x86/x86.mk b/libc/arch-x86/x86.mk
index 019dc8e..a141548 100644
--- a/libc/arch-x86/x86.mk
+++ b/libc/arch-x86/x86.mk
@@ -25,7 +25,6 @@
libc_bionic_src_files_x86 += \
arch-x86/bionic/__bionic_clone.S \
arch-x86/bionic/_exit_with_stack_teardown.S \
- arch-x86/bionic/__get_sp.S \
arch-x86/bionic/_setjmp.S \
arch-x86/bionic/setjmp.S \
arch-x86/bionic/__set_tls.c \
diff --git a/libc/arch-x86_64/bionic/__bionic_clone.S b/libc/arch-x86_64/bionic/__bionic_clone.S
index e0ce5a6..0c73e5f 100644
--- a/libc/arch-x86_64/bionic/__bionic_clone.S
+++ b/libc/arch-x86_64/bionic/__bionic_clone.S
@@ -54,7 +54,7 @@
# An error occurred, set errno and return -1.
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
ret
.L_bc_child:
diff --git a/libc/arch-x86_64/bionic/__get_sp.S b/libc/arch-x86_64/bionic/__get_sp.S
deleted file mode 100644
index 49a2406..0000000
--- a/libc/arch-x86_64/bionic/__get_sp.S
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-#include <private/bionic_asm.h>
-
-ENTRY_PRIVATE(__get_sp)
- mov %rsp, %rax
- ret
-END(__get_sp)
diff --git a/libc/arch-x86_64/bionic/syscall.S b/libc/arch-x86_64/bionic/syscall.S
index d5694cb..87939ba 100644
--- a/libc/arch-x86_64/bionic/syscall.S
+++ b/libc/arch-x86_64/bionic/syscall.S
@@ -57,7 +57,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(syscall)
diff --git a/libc/arch-x86_64/bionic/vfork.S b/libc/arch-x86_64/bionic/vfork.S
index 7c14cc0..129f1db 100644
--- a/libc/arch-x86_64/bionic/vfork.S
+++ b/libc/arch-x86_64/bionic/vfork.S
@@ -39,7 +39,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(vfork)
diff --git a/libc/arch-x86_64/include/machine/asm.h b/libc/arch-x86_64/include/machine/asm.h
index 06da39a..28cd08f 100644
--- a/libc/arch-x86_64/include/machine/asm.h
+++ b/libc/arch-x86_64/include/machine/asm.h
@@ -40,13 +40,6 @@
#define PIC_PLT(x) x@PLT
#define PIC_GOT(x) x@GOTPCREL(%rip)
-/* let kernels and others override entrypoint alignment */
-#ifndef _ALIGN_TEXT
-# ifdef _STANDALONE
-# define _ALIGN_TEXT .align 4
-# else
-# define _ALIGN_TEXT .align 16
-# endif
-#endif
+#define __bionic_asm_align 16
#endif /* !_AMD64_ASM_H_ */
diff --git a/libc/arch-x86_64/syscalls/__accept4.S b/libc/arch-x86_64/syscalls/__accept4.S
index 774cdd5..aa5beba 100644
--- a/libc/arch-x86_64/syscalls/__accept4.S
+++ b/libc/arch-x86_64/syscalls/__accept4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__accept4)
movq %rcx, %r10
movl $__NR_accept4, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__accept4)
diff --git a/libc/arch-x86_64/syscalls/__arch_prctl.S b/libc/arch-x86_64/syscalls/__arch_prctl.S
index c0dad45..0a604f4 100644
--- a/libc/arch-x86_64/syscalls/__arch_prctl.S
+++ b/libc/arch-x86_64/syscalls/__arch_prctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__arch_prctl)
movl $__NR_arch_prctl, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__arch_prctl)
diff --git a/libc/arch-x86_64/syscalls/__brk.S b/libc/arch-x86_64/syscalls/__brk.S
index df942a1..b6c0f2f 100644
--- a/libc/arch-x86_64/syscalls/__brk.S
+++ b/libc/arch-x86_64/syscalls/__brk.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__brk)
movl $__NR_brk, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__brk)
diff --git a/libc/arch-x86_64/syscalls/__clock_gettime.S b/libc/arch-x86_64/syscalls/__clock_gettime.S
index 6c11fb6..ccacdb2 100644
--- a/libc/arch-x86_64/syscalls/__clock_gettime.S
+++ b/libc/arch-x86_64/syscalls/__clock_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__clock_gettime)
movl $__NR_clock_gettime, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__clock_gettime)
diff --git a/libc/arch-x86_64/syscalls/__connect.S b/libc/arch-x86_64/syscalls/__connect.S
index 05a8202..d7531ad 100644
--- a/libc/arch-x86_64/syscalls/__connect.S
+++ b/libc/arch-x86_64/syscalls/__connect.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__connect)
movl $__NR_connect, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__connect)
diff --git a/libc/arch-x86_64/syscalls/__epoll_pwait.S b/libc/arch-x86_64/syscalls/__epoll_pwait.S
index b0aee80..b486c4a 100644
--- a/libc/arch-x86_64/syscalls/__epoll_pwait.S
+++ b/libc/arch-x86_64/syscalls/__epoll_pwait.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__epoll_pwait)
movq %rcx, %r10
movl $__NR_epoll_pwait, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__epoll_pwait)
diff --git a/libc/arch-x86_64/syscalls/__exit.S b/libc/arch-x86_64/syscalls/__exit.S
index e552f04..99b11fc 100644
--- a/libc/arch-x86_64/syscalls/__exit.S
+++ b/libc/arch-x86_64/syscalls/__exit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__exit)
movl $__NR_exit, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__exit)
diff --git a/libc/arch-x86_64/syscalls/__getcpu.S b/libc/arch-x86_64/syscalls/__getcpu.S
index c415fd7..3903e9f 100644
--- a/libc/arch-x86_64/syscalls/__getcpu.S
+++ b/libc/arch-x86_64/syscalls/__getcpu.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcpu)
movl $__NR_getcpu, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__getcpu)
diff --git a/libc/arch-x86_64/syscalls/__getcwd.S b/libc/arch-x86_64/syscalls/__getcwd.S
index 1ea5651..d39c1d7 100644
--- a/libc/arch-x86_64/syscalls/__getcwd.S
+++ b/libc/arch-x86_64/syscalls/__getcwd.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getcwd)
movl $__NR_getcwd, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__getcwd)
diff --git a/libc/arch-x86_64/syscalls/__getdents64.S b/libc/arch-x86_64/syscalls/__getdents64.S
index 42c130c..b5eb943 100644
--- a/libc/arch-x86_64/syscalls/__getdents64.S
+++ b/libc/arch-x86_64/syscalls/__getdents64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getdents64)
movl $__NR_getdents64, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__getdents64)
diff --git a/libc/arch-x86_64/syscalls/__getpid.S b/libc/arch-x86_64/syscalls/__getpid.S
index ae6bb49..ec4316e 100644
--- a/libc/arch-x86_64/syscalls/__getpid.S
+++ b/libc/arch-x86_64/syscalls/__getpid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpid)
movl $__NR_getpid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__getpid)
diff --git a/libc/arch-x86_64/syscalls/__getpriority.S b/libc/arch-x86_64/syscalls/__getpriority.S
index c82b008..7c618a1 100644
--- a/libc/arch-x86_64/syscalls/__getpriority.S
+++ b/libc/arch-x86_64/syscalls/__getpriority.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__getpriority)
movl $__NR_getpriority, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__getpriority)
diff --git a/libc/arch-x86_64/syscalls/__gettimeofday.S b/libc/arch-x86_64/syscalls/__gettimeofday.S
index e4b2409..69b9b6e 100644
--- a/libc/arch-x86_64/syscalls/__gettimeofday.S
+++ b/libc/arch-x86_64/syscalls/__gettimeofday.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__gettimeofday)
movl $__NR_gettimeofday, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__gettimeofday)
diff --git a/libc/arch-x86_64/syscalls/__ioctl.S b/libc/arch-x86_64/syscalls/__ioctl.S
index aa2f538..0eb34f0 100644
--- a/libc/arch-x86_64/syscalls/__ioctl.S
+++ b/libc/arch-x86_64/syscalls/__ioctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ioctl)
movl $__NR_ioctl, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__ioctl)
diff --git a/libc/arch-x86_64/syscalls/__openat.S b/libc/arch-x86_64/syscalls/__openat.S
index e7f5dc4..14f53ca 100644
--- a/libc/arch-x86_64/syscalls/__openat.S
+++ b/libc/arch-x86_64/syscalls/__openat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__openat)
movq %rcx, %r10
movl $__NR_openat, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__openat)
diff --git a/libc/arch-x86_64/syscalls/__ppoll.S b/libc/arch-x86_64/syscalls/__ppoll.S
index eb741ce..82b97dd 100644
--- a/libc/arch-x86_64/syscalls/__ppoll.S
+++ b/libc/arch-x86_64/syscalls/__ppoll.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ppoll)
movq %rcx, %r10
movl $__NR_ppoll, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__ppoll)
diff --git a/libc/arch-x86_64/syscalls/__pselect6.S b/libc/arch-x86_64/syscalls/__pselect6.S
index 75ea416..c11d814 100644
--- a/libc/arch-x86_64/syscalls/__pselect6.S
+++ b/libc/arch-x86_64/syscalls/__pselect6.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__pselect6)
movq %rcx, %r10
movl $__NR_pselect6, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__pselect6)
diff --git a/libc/arch-x86_64/syscalls/__ptrace.S b/libc/arch-x86_64/syscalls/__ptrace.S
index 45724e4..729e007 100644
--- a/libc/arch-x86_64/syscalls/__ptrace.S
+++ b/libc/arch-x86_64/syscalls/__ptrace.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__ptrace)
movq %rcx, %r10
movl $__NR_ptrace, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__ptrace)
diff --git a/libc/arch-x86_64/syscalls/__reboot.S b/libc/arch-x86_64/syscalls/__reboot.S
index bbff3f2..b462dc7 100644
--- a/libc/arch-x86_64/syscalls/__reboot.S
+++ b/libc/arch-x86_64/syscalls/__reboot.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__reboot)
movq %rcx, %r10
movl $__NR_reboot, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__reboot)
diff --git a/libc/arch-x86_64/syscalls/__rt_sigaction.S b/libc/arch-x86_64/syscalls/__rt_sigaction.S
index 7ce3d8c..17c5995 100644
--- a/libc/arch-x86_64/syscalls/__rt_sigaction.S
+++ b/libc/arch-x86_64/syscalls/__rt_sigaction.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigaction)
movq %rcx, %r10
movl $__NR_rt_sigaction, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__rt_sigaction)
diff --git a/libc/arch-x86_64/syscalls/__rt_sigpending.S b/libc/arch-x86_64/syscalls/__rt_sigpending.S
index 78c10ed..b5b81bb 100644
--- a/libc/arch-x86_64/syscalls/__rt_sigpending.S
+++ b/libc/arch-x86_64/syscalls/__rt_sigpending.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigpending)
movl $__NR_rt_sigpending, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__rt_sigpending)
diff --git a/libc/arch-x86_64/syscalls/__rt_sigprocmask.S b/libc/arch-x86_64/syscalls/__rt_sigprocmask.S
index bf2841c..e8b3f2a 100644
--- a/libc/arch-x86_64/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-x86_64/syscalls/__rt_sigprocmask.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigprocmask)
movq %rcx, %r10
movl $__NR_rt_sigprocmask, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__rt_sigprocmask)
diff --git a/libc/arch-x86_64/syscalls/__rt_sigsuspend.S b/libc/arch-x86_64/syscalls/__rt_sigsuspend.S
index a82b052..f6366a2 100644
--- a/libc/arch-x86_64/syscalls/__rt_sigsuspend.S
+++ b/libc/arch-x86_64/syscalls/__rt_sigsuspend.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigsuspend)
movl $__NR_rt_sigsuspend, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__rt_sigsuspend)
diff --git a/libc/arch-x86_64/syscalls/__rt_sigtimedwait.S b/libc/arch-x86_64/syscalls/__rt_sigtimedwait.S
index aceacb2..9bcb811 100644
--- a/libc/arch-x86_64/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-x86_64/syscalls/__rt_sigtimedwait.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__rt_sigtimedwait)
movq %rcx, %r10
movl $__NR_rt_sigtimedwait, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__rt_sigtimedwait)
diff --git a/libc/arch-x86_64/syscalls/__sched_getaffinity.S b/libc/arch-x86_64/syscalls/__sched_getaffinity.S
index fd1f607..0ca6818 100644
--- a/libc/arch-x86_64/syscalls/__sched_getaffinity.S
+++ b/libc/arch-x86_64/syscalls/__sched_getaffinity.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__sched_getaffinity)
movl $__NR_sched_getaffinity, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__sched_getaffinity)
diff --git a/libc/arch-x86_64/syscalls/__set_tid_address.S b/libc/arch-x86_64/syscalls/__set_tid_address.S
index 7e5226d..3dad660 100644
--- a/libc/arch-x86_64/syscalls/__set_tid_address.S
+++ b/libc/arch-x86_64/syscalls/__set_tid_address.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__set_tid_address)
movl $__NR_set_tid_address, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__set_tid_address)
diff --git a/libc/arch-x86_64/syscalls/__signalfd4.S b/libc/arch-x86_64/syscalls/__signalfd4.S
index d27f63c..b44bfe5 100644
--- a/libc/arch-x86_64/syscalls/__signalfd4.S
+++ b/libc/arch-x86_64/syscalls/__signalfd4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__signalfd4)
movq %rcx, %r10
movl $__NR_signalfd4, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__signalfd4)
diff --git a/libc/arch-x86_64/syscalls/__socket.S b/libc/arch-x86_64/syscalls/__socket.S
index 3b573e8..0563d2f 100644
--- a/libc/arch-x86_64/syscalls/__socket.S
+++ b/libc/arch-x86_64/syscalls/__socket.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__socket)
movl $__NR_socket, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__socket)
diff --git a/libc/arch-x86_64/syscalls/__timer_create.S b/libc/arch-x86_64/syscalls/__timer_create.S
index 920c935..cb955a4 100644
--- a/libc/arch-x86_64/syscalls/__timer_create.S
+++ b/libc/arch-x86_64/syscalls/__timer_create.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_create)
movl $__NR_timer_create, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__timer_create)
diff --git a/libc/arch-x86_64/syscalls/__timer_delete.S b/libc/arch-x86_64/syscalls/__timer_delete.S
index c76830e..7abc7d8 100644
--- a/libc/arch-x86_64/syscalls/__timer_delete.S
+++ b/libc/arch-x86_64/syscalls/__timer_delete.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_delete)
movl $__NR_timer_delete, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__timer_delete)
diff --git a/libc/arch-x86_64/syscalls/__timer_getoverrun.S b/libc/arch-x86_64/syscalls/__timer_getoverrun.S
index e35ee93..f2a0e24 100644
--- a/libc/arch-x86_64/syscalls/__timer_getoverrun.S
+++ b/libc/arch-x86_64/syscalls/__timer_getoverrun.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_getoverrun)
movl $__NR_timer_getoverrun, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__timer_getoverrun)
diff --git a/libc/arch-x86_64/syscalls/__timer_gettime.S b/libc/arch-x86_64/syscalls/__timer_gettime.S
index 8bb41d9..62c2b47 100644
--- a/libc/arch-x86_64/syscalls/__timer_gettime.S
+++ b/libc/arch-x86_64/syscalls/__timer_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_gettime)
movl $__NR_timer_gettime, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__timer_gettime)
diff --git a/libc/arch-x86_64/syscalls/__timer_settime.S b/libc/arch-x86_64/syscalls/__timer_settime.S
index 0eace4b..225fa8e 100644
--- a/libc/arch-x86_64/syscalls/__timer_settime.S
+++ b/libc/arch-x86_64/syscalls/__timer_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__timer_settime)
movq %rcx, %r10
movl $__NR_timer_settime, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__timer_settime)
diff --git a/libc/arch-x86_64/syscalls/__waitid.S b/libc/arch-x86_64/syscalls/__waitid.S
index 47bf7b3..ff8a3c5 100644
--- a/libc/arch-x86_64/syscalls/__waitid.S
+++ b/libc/arch-x86_64/syscalls/__waitid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(__waitid)
movq %rcx, %r10
movl $__NR_waitid, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(__waitid)
diff --git a/libc/arch-x86_64/syscalls/_exit.S b/libc/arch-x86_64/syscalls/_exit.S
index 06465c4..c79091d 100644
--- a/libc/arch-x86_64/syscalls/_exit.S
+++ b/libc/arch-x86_64/syscalls/_exit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(_exit)
movl $__NR_exit_group, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(_exit)
diff --git a/libc/arch-x86_64/syscalls/acct.S b/libc/arch-x86_64/syscalls/acct.S
index 6bf59e3..a739707 100644
--- a/libc/arch-x86_64/syscalls/acct.S
+++ b/libc/arch-x86_64/syscalls/acct.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(acct)
movl $__NR_acct, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(acct)
diff --git a/libc/arch-x86_64/syscalls/bind.S b/libc/arch-x86_64/syscalls/bind.S
index 4300c00..e5bc263 100644
--- a/libc/arch-x86_64/syscalls/bind.S
+++ b/libc/arch-x86_64/syscalls/bind.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(bind)
movl $__NR_bind, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(bind)
diff --git a/libc/arch-x86_64/syscalls/capget.S b/libc/arch-x86_64/syscalls/capget.S
index 8ce1846..9ce1583 100644
--- a/libc/arch-x86_64/syscalls/capget.S
+++ b/libc/arch-x86_64/syscalls/capget.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capget)
movl $__NR_capget, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(capget)
diff --git a/libc/arch-x86_64/syscalls/capset.S b/libc/arch-x86_64/syscalls/capset.S
index 3aff07c..2776756 100644
--- a/libc/arch-x86_64/syscalls/capset.S
+++ b/libc/arch-x86_64/syscalls/capset.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(capset)
movl $__NR_capset, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(capset)
diff --git a/libc/arch-x86_64/syscalls/chdir.S b/libc/arch-x86_64/syscalls/chdir.S
index f22b40d..269905c 100644
--- a/libc/arch-x86_64/syscalls/chdir.S
+++ b/libc/arch-x86_64/syscalls/chdir.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chdir)
movl $__NR_chdir, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(chdir)
diff --git a/libc/arch-x86_64/syscalls/chroot.S b/libc/arch-x86_64/syscalls/chroot.S
index eb8a463..713b1b3 100644
--- a/libc/arch-x86_64/syscalls/chroot.S
+++ b/libc/arch-x86_64/syscalls/chroot.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(chroot)
movl $__NR_chroot, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(chroot)
diff --git a/libc/arch-x86_64/syscalls/clock_getres.S b/libc/arch-x86_64/syscalls/clock_getres.S
index 00b4ed6..f65d127 100644
--- a/libc/arch-x86_64/syscalls/clock_getres.S
+++ b/libc/arch-x86_64/syscalls/clock_getres.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_getres)
movl $__NR_clock_getres, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(clock_getres)
diff --git a/libc/arch-x86_64/syscalls/clock_nanosleep.S b/libc/arch-x86_64/syscalls/clock_nanosleep.S
index 8bc87ae..2a79bdd 100644
--- a/libc/arch-x86_64/syscalls/clock_nanosleep.S
+++ b/libc/arch-x86_64/syscalls/clock_nanosleep.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_nanosleep)
movq %rcx, %r10
movl $__NR_clock_nanosleep, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(clock_nanosleep)
diff --git a/libc/arch-x86_64/syscalls/clock_settime.S b/libc/arch-x86_64/syscalls/clock_settime.S
index 5225770..26070a4 100644
--- a/libc/arch-x86_64/syscalls/clock_settime.S
+++ b/libc/arch-x86_64/syscalls/clock_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(clock_settime)
movl $__NR_clock_settime, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(clock_settime)
diff --git a/libc/arch-x86_64/syscalls/close.S b/libc/arch-x86_64/syscalls/close.S
index 029d09a..8a7ada1 100644
--- a/libc/arch-x86_64/syscalls/close.S
+++ b/libc/arch-x86_64/syscalls/close.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(close)
movl $__NR_close, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(close)
diff --git a/libc/arch-x86_64/syscalls/delete_module.S b/libc/arch-x86_64/syscalls/delete_module.S
index fc146bb..63f17ad 100644
--- a/libc/arch-x86_64/syscalls/delete_module.S
+++ b/libc/arch-x86_64/syscalls/delete_module.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(delete_module)
movl $__NR_delete_module, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(delete_module)
diff --git a/libc/arch-x86_64/syscalls/dup.S b/libc/arch-x86_64/syscalls/dup.S
index 53f06b0..5016f77 100644
--- a/libc/arch-x86_64/syscalls/dup.S
+++ b/libc/arch-x86_64/syscalls/dup.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup)
movl $__NR_dup, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(dup)
diff --git a/libc/arch-x86_64/syscalls/dup3.S b/libc/arch-x86_64/syscalls/dup3.S
index fb99941..9abd168 100644
--- a/libc/arch-x86_64/syscalls/dup3.S
+++ b/libc/arch-x86_64/syscalls/dup3.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(dup3)
movl $__NR_dup3, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(dup3)
diff --git a/libc/arch-x86_64/syscalls/epoll_create1.S b/libc/arch-x86_64/syscalls/epoll_create1.S
index 6aa1915..d1e4bfc 100644
--- a/libc/arch-x86_64/syscalls/epoll_create1.S
+++ b/libc/arch-x86_64/syscalls/epoll_create1.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_create1)
movl $__NR_epoll_create1, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(epoll_create1)
diff --git a/libc/arch-x86_64/syscalls/epoll_ctl.S b/libc/arch-x86_64/syscalls/epoll_ctl.S
index c9dda01..f429b96 100644
--- a/libc/arch-x86_64/syscalls/epoll_ctl.S
+++ b/libc/arch-x86_64/syscalls/epoll_ctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(epoll_ctl)
movq %rcx, %r10
movl $__NR_epoll_ctl, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(epoll_ctl)
diff --git a/libc/arch-x86_64/syscalls/eventfd.S b/libc/arch-x86_64/syscalls/eventfd.S
index ac7537f..dcc5105 100644
--- a/libc/arch-x86_64/syscalls/eventfd.S
+++ b/libc/arch-x86_64/syscalls/eventfd.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(eventfd)
movl $__NR_eventfd2, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(eventfd)
diff --git a/libc/arch-x86_64/syscalls/execve.S b/libc/arch-x86_64/syscalls/execve.S
index a699303..947baa4 100644
--- a/libc/arch-x86_64/syscalls/execve.S
+++ b/libc/arch-x86_64/syscalls/execve.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(execve)
movl $__NR_execve, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(execve)
diff --git a/libc/arch-x86_64/syscalls/faccessat.S b/libc/arch-x86_64/syscalls/faccessat.S
index 9426dd5..05a6e78 100644
--- a/libc/arch-x86_64/syscalls/faccessat.S
+++ b/libc/arch-x86_64/syscalls/faccessat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(faccessat)
movq %rcx, %r10
movl $__NR_faccessat, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(faccessat)
diff --git a/libc/arch-x86_64/syscalls/fallocate.S b/libc/arch-x86_64/syscalls/fallocate.S
index 91a2e65..8307f7e 100644
--- a/libc/arch-x86_64/syscalls/fallocate.S
+++ b/libc/arch-x86_64/syscalls/fallocate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fallocate)
movq %rcx, %r10
movl $__NR_fallocate, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fallocate)
diff --git a/libc/arch-x86_64/syscalls/fchdir.S b/libc/arch-x86_64/syscalls/fchdir.S
index 01c5030..d005c14 100644
--- a/libc/arch-x86_64/syscalls/fchdir.S
+++ b/libc/arch-x86_64/syscalls/fchdir.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchdir)
movl $__NR_fchdir, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fchdir)
diff --git a/libc/arch-x86_64/syscalls/fchmod.S b/libc/arch-x86_64/syscalls/fchmod.S
index 1f4d02b..b35bd21 100644
--- a/libc/arch-x86_64/syscalls/fchmod.S
+++ b/libc/arch-x86_64/syscalls/fchmod.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmod)
movl $__NR_fchmod, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fchmod)
diff --git a/libc/arch-x86_64/syscalls/fchmodat.S b/libc/arch-x86_64/syscalls/fchmodat.S
index cee05e3..2d78d8e 100644
--- a/libc/arch-x86_64/syscalls/fchmodat.S
+++ b/libc/arch-x86_64/syscalls/fchmodat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchmodat)
movq %rcx, %r10
movl $__NR_fchmodat, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fchmodat)
diff --git a/libc/arch-x86_64/syscalls/fchown.S b/libc/arch-x86_64/syscalls/fchown.S
index 1c43991..d5bdc71 100644
--- a/libc/arch-x86_64/syscalls/fchown.S
+++ b/libc/arch-x86_64/syscalls/fchown.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchown)
movl $__NR_fchown, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fchown)
diff --git a/libc/arch-x86_64/syscalls/fchownat.S b/libc/arch-x86_64/syscalls/fchownat.S
index 8f77888..ff05e9e 100644
--- a/libc/arch-x86_64/syscalls/fchownat.S
+++ b/libc/arch-x86_64/syscalls/fchownat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fchownat)
movq %rcx, %r10
movl $__NR_fchownat, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fchownat)
diff --git a/libc/arch-x86_64/syscalls/fcntl.S b/libc/arch-x86_64/syscalls/fcntl.S
index d415467..f28195b 100644
--- a/libc/arch-x86_64/syscalls/fcntl.S
+++ b/libc/arch-x86_64/syscalls/fcntl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fcntl)
movl $__NR_fcntl, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fcntl)
diff --git a/libc/arch-x86_64/syscalls/fdatasync.S b/libc/arch-x86_64/syscalls/fdatasync.S
index 8ec4193..27239b9 100644
--- a/libc/arch-x86_64/syscalls/fdatasync.S
+++ b/libc/arch-x86_64/syscalls/fdatasync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fdatasync)
movl $__NR_fdatasync, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fdatasync)
diff --git a/libc/arch-x86_64/syscalls/fgetxattr.S b/libc/arch-x86_64/syscalls/fgetxattr.S
index 9aacdbd..7762474 100644
--- a/libc/arch-x86_64/syscalls/fgetxattr.S
+++ b/libc/arch-x86_64/syscalls/fgetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fgetxattr)
movq %rcx, %r10
movl $__NR_fgetxattr, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fgetxattr)
diff --git a/libc/arch-x86_64/syscalls/flistxattr.S b/libc/arch-x86_64/syscalls/flistxattr.S
index 53c58d0..aa02db1 100644
--- a/libc/arch-x86_64/syscalls/flistxattr.S
+++ b/libc/arch-x86_64/syscalls/flistxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flistxattr)
movl $__NR_flistxattr, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(flistxattr)
diff --git a/libc/arch-x86_64/syscalls/flock.S b/libc/arch-x86_64/syscalls/flock.S
index fe57b47..1bc6678 100644
--- a/libc/arch-x86_64/syscalls/flock.S
+++ b/libc/arch-x86_64/syscalls/flock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(flock)
movl $__NR_flock, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(flock)
diff --git a/libc/arch-x86_64/syscalls/fremovexattr.S b/libc/arch-x86_64/syscalls/fremovexattr.S
index c37cc93..517094c 100644
--- a/libc/arch-x86_64/syscalls/fremovexattr.S
+++ b/libc/arch-x86_64/syscalls/fremovexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fremovexattr)
movl $__NR_fremovexattr, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fremovexattr)
diff --git a/libc/arch-x86_64/syscalls/fsetxattr.S b/libc/arch-x86_64/syscalls/fsetxattr.S
index cc3d7b7..97822c4 100644
--- a/libc/arch-x86_64/syscalls/fsetxattr.S
+++ b/libc/arch-x86_64/syscalls/fsetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsetxattr)
movq %rcx, %r10
movl $__NR_fsetxattr, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fsetxattr)
diff --git a/libc/arch-x86_64/syscalls/fstat64.S b/libc/arch-x86_64/syscalls/fstat64.S
index dbc6760..de57668 100644
--- a/libc/arch-x86_64/syscalls/fstat64.S
+++ b/libc/arch-x86_64/syscalls/fstat64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstat64)
movl $__NR_fstat, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fstat64)
diff --git a/libc/arch-x86_64/syscalls/fstatat64.S b/libc/arch-x86_64/syscalls/fstatat64.S
index 28b91fa..47785bb 100644
--- a/libc/arch-x86_64/syscalls/fstatat64.S
+++ b/libc/arch-x86_64/syscalls/fstatat64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstatat64)
movq %rcx, %r10
movl $__NR_newfstatat, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fstatat64)
diff --git a/libc/arch-x86_64/syscalls/fstatfs64.S b/libc/arch-x86_64/syscalls/fstatfs64.S
index 4b12afb..f727350 100644
--- a/libc/arch-x86_64/syscalls/fstatfs64.S
+++ b/libc/arch-x86_64/syscalls/fstatfs64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fstatfs64)
movl $__NR_fstatfs, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fstatfs64)
diff --git a/libc/arch-x86_64/syscalls/fsync.S b/libc/arch-x86_64/syscalls/fsync.S
index 820502e..e7ec6da 100644
--- a/libc/arch-x86_64/syscalls/fsync.S
+++ b/libc/arch-x86_64/syscalls/fsync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(fsync)
movl $__NR_fsync, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(fsync)
diff --git a/libc/arch-x86_64/syscalls/ftruncate.S b/libc/arch-x86_64/syscalls/ftruncate.S
index 0b14403..0365368 100644
--- a/libc/arch-x86_64/syscalls/ftruncate.S
+++ b/libc/arch-x86_64/syscalls/ftruncate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(ftruncate)
movl $__NR_ftruncate, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(ftruncate)
diff --git a/libc/arch-x86_64/syscalls/getegid.S b/libc/arch-x86_64/syscalls/getegid.S
index 155d37b..84ba240 100644
--- a/libc/arch-x86_64/syscalls/getegid.S
+++ b/libc/arch-x86_64/syscalls/getegid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getegid)
movl $__NR_getegid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getegid)
diff --git a/libc/arch-x86_64/syscalls/geteuid.S b/libc/arch-x86_64/syscalls/geteuid.S
index 9ffa3cd..18a991a 100644
--- a/libc/arch-x86_64/syscalls/geteuid.S
+++ b/libc/arch-x86_64/syscalls/geteuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(geteuid)
movl $__NR_geteuid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(geteuid)
diff --git a/libc/arch-x86_64/syscalls/getgid.S b/libc/arch-x86_64/syscalls/getgid.S
index d9c9da9..5e4b0ef 100644
--- a/libc/arch-x86_64/syscalls/getgid.S
+++ b/libc/arch-x86_64/syscalls/getgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgid)
movl $__NR_getgid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getgid)
diff --git a/libc/arch-x86_64/syscalls/getgroups.S b/libc/arch-x86_64/syscalls/getgroups.S
index 9f0701a..b5dd81c 100644
--- a/libc/arch-x86_64/syscalls/getgroups.S
+++ b/libc/arch-x86_64/syscalls/getgroups.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getgroups)
movl $__NR_getgroups, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getgroups)
diff --git a/libc/arch-x86_64/syscalls/getitimer.S b/libc/arch-x86_64/syscalls/getitimer.S
index 2d76430..c4bb120 100644
--- a/libc/arch-x86_64/syscalls/getitimer.S
+++ b/libc/arch-x86_64/syscalls/getitimer.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getitimer)
movl $__NR_getitimer, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getitimer)
diff --git a/libc/arch-x86_64/syscalls/getpeername.S b/libc/arch-x86_64/syscalls/getpeername.S
index b6de183..0b212be 100644
--- a/libc/arch-x86_64/syscalls/getpeername.S
+++ b/libc/arch-x86_64/syscalls/getpeername.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpeername)
movl $__NR_getpeername, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getpeername)
diff --git a/libc/arch-x86_64/syscalls/getpgid.S b/libc/arch-x86_64/syscalls/getpgid.S
index e321b66..d1b0e8b 100644
--- a/libc/arch-x86_64/syscalls/getpgid.S
+++ b/libc/arch-x86_64/syscalls/getpgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getpgid)
movl $__NR_getpgid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getpgid)
diff --git a/libc/arch-x86_64/syscalls/getppid.S b/libc/arch-x86_64/syscalls/getppid.S
index 4a238ad..e1cfee0 100644
--- a/libc/arch-x86_64/syscalls/getppid.S
+++ b/libc/arch-x86_64/syscalls/getppid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getppid)
movl $__NR_getppid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getppid)
diff --git a/libc/arch-x86_64/syscalls/getresgid.S b/libc/arch-x86_64/syscalls/getresgid.S
index 4727d29..0b7ea7a 100644
--- a/libc/arch-x86_64/syscalls/getresgid.S
+++ b/libc/arch-x86_64/syscalls/getresgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresgid)
movl $__NR_getresgid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getresgid)
diff --git a/libc/arch-x86_64/syscalls/getresuid.S b/libc/arch-x86_64/syscalls/getresuid.S
index 1098d56..0d7a054 100644
--- a/libc/arch-x86_64/syscalls/getresuid.S
+++ b/libc/arch-x86_64/syscalls/getresuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getresuid)
movl $__NR_getresuid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getresuid)
diff --git a/libc/arch-x86_64/syscalls/getrlimit.S b/libc/arch-x86_64/syscalls/getrlimit.S
index 60e5881..2d272a1 100644
--- a/libc/arch-x86_64/syscalls/getrlimit.S
+++ b/libc/arch-x86_64/syscalls/getrlimit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrlimit)
movl $__NR_getrlimit, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getrlimit)
diff --git a/libc/arch-x86_64/syscalls/getrusage.S b/libc/arch-x86_64/syscalls/getrusage.S
index 0eb0176..eef7fb8 100644
--- a/libc/arch-x86_64/syscalls/getrusage.S
+++ b/libc/arch-x86_64/syscalls/getrusage.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getrusage)
movl $__NR_getrusage, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getrusage)
diff --git a/libc/arch-x86_64/syscalls/getsid.S b/libc/arch-x86_64/syscalls/getsid.S
index 2543b10..022f959 100644
--- a/libc/arch-x86_64/syscalls/getsid.S
+++ b/libc/arch-x86_64/syscalls/getsid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsid)
movl $__NR_getsid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getsid)
diff --git a/libc/arch-x86_64/syscalls/getsockname.S b/libc/arch-x86_64/syscalls/getsockname.S
index 17cd5ea..36fdcf7 100644
--- a/libc/arch-x86_64/syscalls/getsockname.S
+++ b/libc/arch-x86_64/syscalls/getsockname.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockname)
movl $__NR_getsockname, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getsockname)
diff --git a/libc/arch-x86_64/syscalls/getsockopt.S b/libc/arch-x86_64/syscalls/getsockopt.S
index 988a2cb..c1e11e7 100644
--- a/libc/arch-x86_64/syscalls/getsockopt.S
+++ b/libc/arch-x86_64/syscalls/getsockopt.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getsockopt)
movq %rcx, %r10
movl $__NR_getsockopt, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getsockopt)
diff --git a/libc/arch-x86_64/syscalls/getuid.S b/libc/arch-x86_64/syscalls/getuid.S
index 9b7a1d9..93cd0f8 100644
--- a/libc/arch-x86_64/syscalls/getuid.S
+++ b/libc/arch-x86_64/syscalls/getuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getuid)
movl $__NR_getuid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getuid)
diff --git a/libc/arch-x86_64/syscalls/getxattr.S b/libc/arch-x86_64/syscalls/getxattr.S
index 4d6aecf..01378b0 100644
--- a/libc/arch-x86_64/syscalls/getxattr.S
+++ b/libc/arch-x86_64/syscalls/getxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(getxattr)
movq %rcx, %r10
movl $__NR_getxattr, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(getxattr)
diff --git a/libc/arch-x86_64/syscalls/init_module.S b/libc/arch-x86_64/syscalls/init_module.S
index 2c51414..c005de4 100644
--- a/libc/arch-x86_64/syscalls/init_module.S
+++ b/libc/arch-x86_64/syscalls/init_module.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(init_module)
movl $__NR_init_module, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(init_module)
diff --git a/libc/arch-x86_64/syscalls/inotify_add_watch.S b/libc/arch-x86_64/syscalls/inotify_add_watch.S
index da5aa36..edf2930 100644
--- a/libc/arch-x86_64/syscalls/inotify_add_watch.S
+++ b/libc/arch-x86_64/syscalls/inotify_add_watch.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_add_watch)
movl $__NR_inotify_add_watch, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(inotify_add_watch)
diff --git a/libc/arch-x86_64/syscalls/inotify_init1.S b/libc/arch-x86_64/syscalls/inotify_init1.S
index 46e5014..b158018 100644
--- a/libc/arch-x86_64/syscalls/inotify_init1.S
+++ b/libc/arch-x86_64/syscalls/inotify_init1.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_init1)
movl $__NR_inotify_init1, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(inotify_init1)
diff --git a/libc/arch-x86_64/syscalls/inotify_rm_watch.S b/libc/arch-x86_64/syscalls/inotify_rm_watch.S
index 5920c9d..f2fc10e 100644
--- a/libc/arch-x86_64/syscalls/inotify_rm_watch.S
+++ b/libc/arch-x86_64/syscalls/inotify_rm_watch.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(inotify_rm_watch)
movl $__NR_inotify_rm_watch, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(inotify_rm_watch)
diff --git a/libc/arch-x86_64/syscalls/kill.S b/libc/arch-x86_64/syscalls/kill.S
index dff2da6..fe93f34 100644
--- a/libc/arch-x86_64/syscalls/kill.S
+++ b/libc/arch-x86_64/syscalls/kill.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(kill)
movl $__NR_kill, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(kill)
diff --git a/libc/arch-x86_64/syscalls/klogctl.S b/libc/arch-x86_64/syscalls/klogctl.S
index 8560d28..fb2aca3 100644
--- a/libc/arch-x86_64/syscalls/klogctl.S
+++ b/libc/arch-x86_64/syscalls/klogctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(klogctl)
movl $__NR_syslog, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(klogctl)
diff --git a/libc/arch-x86_64/syscalls/lgetxattr.S b/libc/arch-x86_64/syscalls/lgetxattr.S
index b4bc204..36202a2 100644
--- a/libc/arch-x86_64/syscalls/lgetxattr.S
+++ b/libc/arch-x86_64/syscalls/lgetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lgetxattr)
movq %rcx, %r10
movl $__NR_lgetxattr, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(lgetxattr)
diff --git a/libc/arch-x86_64/syscalls/linkat.S b/libc/arch-x86_64/syscalls/linkat.S
index 509b579..d195e19 100644
--- a/libc/arch-x86_64/syscalls/linkat.S
+++ b/libc/arch-x86_64/syscalls/linkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(linkat)
movq %rcx, %r10
movl $__NR_linkat, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(linkat)
diff --git a/libc/arch-x86_64/syscalls/listen.S b/libc/arch-x86_64/syscalls/listen.S
index 6bd46a5..756b629 100644
--- a/libc/arch-x86_64/syscalls/listen.S
+++ b/libc/arch-x86_64/syscalls/listen.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listen)
movl $__NR_listen, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(listen)
diff --git a/libc/arch-x86_64/syscalls/listxattr.S b/libc/arch-x86_64/syscalls/listxattr.S
index 102518f..d0b2112 100644
--- a/libc/arch-x86_64/syscalls/listxattr.S
+++ b/libc/arch-x86_64/syscalls/listxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(listxattr)
movl $__NR_listxattr, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(listxattr)
diff --git a/libc/arch-x86_64/syscalls/llistxattr.S b/libc/arch-x86_64/syscalls/llistxattr.S
index 74d58a8..49fb969 100644
--- a/libc/arch-x86_64/syscalls/llistxattr.S
+++ b/libc/arch-x86_64/syscalls/llistxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(llistxattr)
movl $__NR_llistxattr, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(llistxattr)
diff --git a/libc/arch-x86_64/syscalls/lremovexattr.S b/libc/arch-x86_64/syscalls/lremovexattr.S
index 2566e33..1e1bc30 100644
--- a/libc/arch-x86_64/syscalls/lremovexattr.S
+++ b/libc/arch-x86_64/syscalls/lremovexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lremovexattr)
movl $__NR_lremovexattr, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(lremovexattr)
diff --git a/libc/arch-x86_64/syscalls/lseek.S b/libc/arch-x86_64/syscalls/lseek.S
index 93e5f0c..153b935 100644
--- a/libc/arch-x86_64/syscalls/lseek.S
+++ b/libc/arch-x86_64/syscalls/lseek.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lseek)
movl $__NR_lseek, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(lseek)
diff --git a/libc/arch-x86_64/syscalls/lsetxattr.S b/libc/arch-x86_64/syscalls/lsetxattr.S
index 905bd3b..965ee03 100644
--- a/libc/arch-x86_64/syscalls/lsetxattr.S
+++ b/libc/arch-x86_64/syscalls/lsetxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(lsetxattr)
movq %rcx, %r10
movl $__NR_lsetxattr, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(lsetxattr)
diff --git a/libc/arch-x86_64/syscalls/madvise.S b/libc/arch-x86_64/syscalls/madvise.S
index c565ca3..75d47f6 100644
--- a/libc/arch-x86_64/syscalls/madvise.S
+++ b/libc/arch-x86_64/syscalls/madvise.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(madvise)
movl $__NR_madvise, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(madvise)
diff --git a/libc/arch-x86_64/syscalls/mincore.S b/libc/arch-x86_64/syscalls/mincore.S
index f8acdeb..2d8a28a 100644
--- a/libc/arch-x86_64/syscalls/mincore.S
+++ b/libc/arch-x86_64/syscalls/mincore.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mincore)
movl $__NR_mincore, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(mincore)
diff --git a/libc/arch-x86_64/syscalls/mkdirat.S b/libc/arch-x86_64/syscalls/mkdirat.S
index b554d12..8a76013 100644
--- a/libc/arch-x86_64/syscalls/mkdirat.S
+++ b/libc/arch-x86_64/syscalls/mkdirat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mkdirat)
movl $__NR_mkdirat, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(mkdirat)
diff --git a/libc/arch-x86_64/syscalls/mknodat.S b/libc/arch-x86_64/syscalls/mknodat.S
index dd6496a..a8859d4 100644
--- a/libc/arch-x86_64/syscalls/mknodat.S
+++ b/libc/arch-x86_64/syscalls/mknodat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mknodat)
movq %rcx, %r10
movl $__NR_mknodat, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(mknodat)
diff --git a/libc/arch-x86_64/syscalls/mlock.S b/libc/arch-x86_64/syscalls/mlock.S
index 78389e2..d34b3ae 100644
--- a/libc/arch-x86_64/syscalls/mlock.S
+++ b/libc/arch-x86_64/syscalls/mlock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlock)
movl $__NR_mlock, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(mlock)
diff --git a/libc/arch-x86_64/syscalls/mlockall.S b/libc/arch-x86_64/syscalls/mlockall.S
index 3ac878a..31ccaa0 100644
--- a/libc/arch-x86_64/syscalls/mlockall.S
+++ b/libc/arch-x86_64/syscalls/mlockall.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mlockall)
movl $__NR_mlockall, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(mlockall)
diff --git a/libc/arch-x86_64/syscalls/mmap.S b/libc/arch-x86_64/syscalls/mmap.S
index 44189a9..8aa4780 100644
--- a/libc/arch-x86_64/syscalls/mmap.S
+++ b/libc/arch-x86_64/syscalls/mmap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mmap)
movq %rcx, %r10
movl $__NR_mmap, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(mmap)
diff --git a/libc/arch-x86_64/syscalls/mount.S b/libc/arch-x86_64/syscalls/mount.S
index 369e8df..dcbd473 100644
--- a/libc/arch-x86_64/syscalls/mount.S
+++ b/libc/arch-x86_64/syscalls/mount.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mount)
movq %rcx, %r10
movl $__NR_mount, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(mount)
diff --git a/libc/arch-x86_64/syscalls/mprotect.S b/libc/arch-x86_64/syscalls/mprotect.S
index 44888da..2ad4b25 100644
--- a/libc/arch-x86_64/syscalls/mprotect.S
+++ b/libc/arch-x86_64/syscalls/mprotect.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mprotect)
movl $__NR_mprotect, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(mprotect)
diff --git a/libc/arch-x86_64/syscalls/mremap.S b/libc/arch-x86_64/syscalls/mremap.S
index 74a05e2..a6042cb 100644
--- a/libc/arch-x86_64/syscalls/mremap.S
+++ b/libc/arch-x86_64/syscalls/mremap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(mremap)
movq %rcx, %r10
movl $__NR_mremap, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(mremap)
diff --git a/libc/arch-x86_64/syscalls/msync.S b/libc/arch-x86_64/syscalls/msync.S
index 1d0e785..099dbbf 100644
--- a/libc/arch-x86_64/syscalls/msync.S
+++ b/libc/arch-x86_64/syscalls/msync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(msync)
movl $__NR_msync, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(msync)
diff --git a/libc/arch-x86_64/syscalls/munlock.S b/libc/arch-x86_64/syscalls/munlock.S
index 17e368b..bb5940c 100644
--- a/libc/arch-x86_64/syscalls/munlock.S
+++ b/libc/arch-x86_64/syscalls/munlock.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlock)
movl $__NR_munlock, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(munlock)
diff --git a/libc/arch-x86_64/syscalls/munlockall.S b/libc/arch-x86_64/syscalls/munlockall.S
index 6bb7aa6..f9579df 100644
--- a/libc/arch-x86_64/syscalls/munlockall.S
+++ b/libc/arch-x86_64/syscalls/munlockall.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munlockall)
movl $__NR_munlockall, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(munlockall)
diff --git a/libc/arch-x86_64/syscalls/munmap.S b/libc/arch-x86_64/syscalls/munmap.S
index f423a66..d1c580e 100644
--- a/libc/arch-x86_64/syscalls/munmap.S
+++ b/libc/arch-x86_64/syscalls/munmap.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(munmap)
movl $__NR_munmap, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(munmap)
diff --git a/libc/arch-x86_64/syscalls/nanosleep.S b/libc/arch-x86_64/syscalls/nanosleep.S
index caa1ae6..b19f7f5 100644
--- a/libc/arch-x86_64/syscalls/nanosleep.S
+++ b/libc/arch-x86_64/syscalls/nanosleep.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(nanosleep)
movl $__NR_nanosleep, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(nanosleep)
diff --git a/libc/arch-x86_64/syscalls/personality.S b/libc/arch-x86_64/syscalls/personality.S
index a742dbf..6937e4c 100644
--- a/libc/arch-x86_64/syscalls/personality.S
+++ b/libc/arch-x86_64/syscalls/personality.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(personality)
movl $__NR_personality, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(personality)
diff --git a/libc/arch-x86_64/syscalls/pipe2.S b/libc/arch-x86_64/syscalls/pipe2.S
index e34ca69..d488c87 100644
--- a/libc/arch-x86_64/syscalls/pipe2.S
+++ b/libc/arch-x86_64/syscalls/pipe2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pipe2)
movl $__NR_pipe2, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(pipe2)
diff --git a/libc/arch-x86_64/syscalls/prctl.S b/libc/arch-x86_64/syscalls/prctl.S
index b4cdaa5..4f3d2ae 100644
--- a/libc/arch-x86_64/syscalls/prctl.S
+++ b/libc/arch-x86_64/syscalls/prctl.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prctl)
movq %rcx, %r10
movl $__NR_prctl, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(prctl)
diff --git a/libc/arch-x86_64/syscalls/pread64.S b/libc/arch-x86_64/syscalls/pread64.S
index 1d042ef..3aa56e5 100644
--- a/libc/arch-x86_64/syscalls/pread64.S
+++ b/libc/arch-x86_64/syscalls/pread64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pread64)
movq %rcx, %r10
movl $__NR_pread64, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(pread64)
diff --git a/libc/arch-x86_64/syscalls/prlimit64.S b/libc/arch-x86_64/syscalls/prlimit64.S
index 52151a8..63ec492 100644
--- a/libc/arch-x86_64/syscalls/prlimit64.S
+++ b/libc/arch-x86_64/syscalls/prlimit64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(prlimit64)
movq %rcx, %r10
movl $__NR_prlimit64, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(prlimit64)
diff --git a/libc/arch-x86_64/syscalls/pwrite64.S b/libc/arch-x86_64/syscalls/pwrite64.S
index 2fb0f16..2779fb4 100644
--- a/libc/arch-x86_64/syscalls/pwrite64.S
+++ b/libc/arch-x86_64/syscalls/pwrite64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(pwrite64)
movq %rcx, %r10
movl $__NR_pwrite64, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(pwrite64)
diff --git a/libc/arch-x86_64/syscalls/read.S b/libc/arch-x86_64/syscalls/read.S
index 3f2862e..df70e7f 100644
--- a/libc/arch-x86_64/syscalls/read.S
+++ b/libc/arch-x86_64/syscalls/read.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(read)
movl $__NR_read, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(read)
diff --git a/libc/arch-x86_64/syscalls/readahead.S b/libc/arch-x86_64/syscalls/readahead.S
index df3aba1..38cb1c0 100644
--- a/libc/arch-x86_64/syscalls/readahead.S
+++ b/libc/arch-x86_64/syscalls/readahead.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readahead)
movl $__NR_readahead, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(readahead)
diff --git a/libc/arch-x86_64/syscalls/readlinkat.S b/libc/arch-x86_64/syscalls/readlinkat.S
index 554b8b6..9fd64e5 100644
--- a/libc/arch-x86_64/syscalls/readlinkat.S
+++ b/libc/arch-x86_64/syscalls/readlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readlinkat)
movq %rcx, %r10
movl $__NR_readlinkat, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(readlinkat)
diff --git a/libc/arch-x86_64/syscalls/readv.S b/libc/arch-x86_64/syscalls/readv.S
index 75d04e9..2510c56 100644
--- a/libc/arch-x86_64/syscalls/readv.S
+++ b/libc/arch-x86_64/syscalls/readv.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(readv)
movl $__NR_readv, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(readv)
diff --git a/libc/arch-x86_64/syscalls/recvfrom.S b/libc/arch-x86_64/syscalls/recvfrom.S
index 4ee5631..6c09078 100644
--- a/libc/arch-x86_64/syscalls/recvfrom.S
+++ b/libc/arch-x86_64/syscalls/recvfrom.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvfrom)
movq %rcx, %r10
movl $__NR_recvfrom, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(recvfrom)
diff --git a/libc/arch-x86_64/syscalls/recvmmsg.S b/libc/arch-x86_64/syscalls/recvmmsg.S
index 3279325..78da691 100644
--- a/libc/arch-x86_64/syscalls/recvmmsg.S
+++ b/libc/arch-x86_64/syscalls/recvmmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmmsg)
movq %rcx, %r10
movl $__NR_recvmmsg, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(recvmmsg)
diff --git a/libc/arch-x86_64/syscalls/recvmsg.S b/libc/arch-x86_64/syscalls/recvmsg.S
index 7c186fd..945f17b 100644
--- a/libc/arch-x86_64/syscalls/recvmsg.S
+++ b/libc/arch-x86_64/syscalls/recvmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(recvmsg)
movl $__NR_recvmsg, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(recvmsg)
diff --git a/libc/arch-x86_64/syscalls/removexattr.S b/libc/arch-x86_64/syscalls/removexattr.S
index 9091647..9b47615 100644
--- a/libc/arch-x86_64/syscalls/removexattr.S
+++ b/libc/arch-x86_64/syscalls/removexattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(removexattr)
movl $__NR_removexattr, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(removexattr)
diff --git a/libc/arch-x86_64/syscalls/renameat.S b/libc/arch-x86_64/syscalls/renameat.S
index 7258712..3a94a75 100644
--- a/libc/arch-x86_64/syscalls/renameat.S
+++ b/libc/arch-x86_64/syscalls/renameat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(renameat)
movq %rcx, %r10
movl $__NR_renameat, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(renameat)
diff --git a/libc/arch-x86_64/syscalls/sched_get_priority_max.S b/libc/arch-x86_64/syscalls/sched_get_priority_max.S
index 604d6c8..1a0da23 100644
--- a/libc/arch-x86_64/syscalls/sched_get_priority_max.S
+++ b/libc/arch-x86_64/syscalls/sched_get_priority_max.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_max)
movl $__NR_sched_get_priority_max, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sched_get_priority_max)
diff --git a/libc/arch-x86_64/syscalls/sched_get_priority_min.S b/libc/arch-x86_64/syscalls/sched_get_priority_min.S
index eaeb765..3785877 100644
--- a/libc/arch-x86_64/syscalls/sched_get_priority_min.S
+++ b/libc/arch-x86_64/syscalls/sched_get_priority_min.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_get_priority_min)
movl $__NR_sched_get_priority_min, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sched_get_priority_min)
diff --git a/libc/arch-x86_64/syscalls/sched_getparam.S b/libc/arch-x86_64/syscalls/sched_getparam.S
index e269c7d..409b501 100644
--- a/libc/arch-x86_64/syscalls/sched_getparam.S
+++ b/libc/arch-x86_64/syscalls/sched_getparam.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getparam)
movl $__NR_sched_getparam, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sched_getparam)
diff --git a/libc/arch-x86_64/syscalls/sched_getscheduler.S b/libc/arch-x86_64/syscalls/sched_getscheduler.S
index 0cf3b54..5200504 100644
--- a/libc/arch-x86_64/syscalls/sched_getscheduler.S
+++ b/libc/arch-x86_64/syscalls/sched_getscheduler.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_getscheduler)
movl $__NR_sched_getscheduler, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sched_getscheduler)
diff --git a/libc/arch-x86_64/syscalls/sched_rr_get_interval.S b/libc/arch-x86_64/syscalls/sched_rr_get_interval.S
index 662a28c..276feb1 100644
--- a/libc/arch-x86_64/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-x86_64/syscalls/sched_rr_get_interval.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_rr_get_interval)
movl $__NR_sched_rr_get_interval, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sched_rr_get_interval)
diff --git a/libc/arch-x86_64/syscalls/sched_setaffinity.S b/libc/arch-x86_64/syscalls/sched_setaffinity.S
index 79b43fd..1fb87e5 100644
--- a/libc/arch-x86_64/syscalls/sched_setaffinity.S
+++ b/libc/arch-x86_64/syscalls/sched_setaffinity.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setaffinity)
movl $__NR_sched_setaffinity, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sched_setaffinity)
diff --git a/libc/arch-x86_64/syscalls/sched_setparam.S b/libc/arch-x86_64/syscalls/sched_setparam.S
index 871b492..91ca83b 100644
--- a/libc/arch-x86_64/syscalls/sched_setparam.S
+++ b/libc/arch-x86_64/syscalls/sched_setparam.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setparam)
movl $__NR_sched_setparam, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sched_setparam)
diff --git a/libc/arch-x86_64/syscalls/sched_setscheduler.S b/libc/arch-x86_64/syscalls/sched_setscheduler.S
index 0dcb47d..7fa499a 100644
--- a/libc/arch-x86_64/syscalls/sched_setscheduler.S
+++ b/libc/arch-x86_64/syscalls/sched_setscheduler.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_setscheduler)
movl $__NR_sched_setscheduler, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sched_setscheduler)
diff --git a/libc/arch-x86_64/syscalls/sched_yield.S b/libc/arch-x86_64/syscalls/sched_yield.S
index 12de511..8eb10f6 100644
--- a/libc/arch-x86_64/syscalls/sched_yield.S
+++ b/libc/arch-x86_64/syscalls/sched_yield.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sched_yield)
movl $__NR_sched_yield, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sched_yield)
diff --git a/libc/arch-x86_64/syscalls/sendfile.S b/libc/arch-x86_64/syscalls/sendfile.S
index 0255bf2..117b0aa 100644
--- a/libc/arch-x86_64/syscalls/sendfile.S
+++ b/libc/arch-x86_64/syscalls/sendfile.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendfile)
movq %rcx, %r10
movl $__NR_sendfile, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sendfile)
diff --git a/libc/arch-x86_64/syscalls/sendmmsg.S b/libc/arch-x86_64/syscalls/sendmmsg.S
index 47b2e3a..cf4a78d 100644
--- a/libc/arch-x86_64/syscalls/sendmmsg.S
+++ b/libc/arch-x86_64/syscalls/sendmmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmmsg)
movq %rcx, %r10
movl $__NR_sendmmsg, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sendmmsg)
diff --git a/libc/arch-x86_64/syscalls/sendmsg.S b/libc/arch-x86_64/syscalls/sendmsg.S
index e9eecf6..84566b5 100644
--- a/libc/arch-x86_64/syscalls/sendmsg.S
+++ b/libc/arch-x86_64/syscalls/sendmsg.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendmsg)
movl $__NR_sendmsg, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sendmsg)
diff --git a/libc/arch-x86_64/syscalls/sendto.S b/libc/arch-x86_64/syscalls/sendto.S
index f8cc149..be3bace 100644
--- a/libc/arch-x86_64/syscalls/sendto.S
+++ b/libc/arch-x86_64/syscalls/sendto.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sendto)
movq %rcx, %r10
movl $__NR_sendto, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sendto)
diff --git a/libc/arch-x86_64/syscalls/setfsgid.S b/libc/arch-x86_64/syscalls/setfsgid.S
index bfc9c5d..22a36b2 100644
--- a/libc/arch-x86_64/syscalls/setfsgid.S
+++ b/libc/arch-x86_64/syscalls/setfsgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsgid)
movl $__NR_setfsgid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setfsgid)
diff --git a/libc/arch-x86_64/syscalls/setfsuid.S b/libc/arch-x86_64/syscalls/setfsuid.S
index 2540a36..0bd0c97 100644
--- a/libc/arch-x86_64/syscalls/setfsuid.S
+++ b/libc/arch-x86_64/syscalls/setfsuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setfsuid)
movl $__NR_setfsuid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setfsuid)
diff --git a/libc/arch-x86_64/syscalls/setgid.S b/libc/arch-x86_64/syscalls/setgid.S
index 8f9ce53..650f8e2 100644
--- a/libc/arch-x86_64/syscalls/setgid.S
+++ b/libc/arch-x86_64/syscalls/setgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgid)
movl $__NR_setgid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setgid)
diff --git a/libc/arch-x86_64/syscalls/setgroups.S b/libc/arch-x86_64/syscalls/setgroups.S
index 81023ab..c798c14 100644
--- a/libc/arch-x86_64/syscalls/setgroups.S
+++ b/libc/arch-x86_64/syscalls/setgroups.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setgroups)
movl $__NR_setgroups, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setgroups)
diff --git a/libc/arch-x86_64/syscalls/setitimer.S b/libc/arch-x86_64/syscalls/setitimer.S
index 6882564..c5fabb2 100644
--- a/libc/arch-x86_64/syscalls/setitimer.S
+++ b/libc/arch-x86_64/syscalls/setitimer.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setitimer)
movl $__NR_setitimer, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setitimer)
diff --git a/libc/arch-x86_64/syscalls/setns.S b/libc/arch-x86_64/syscalls/setns.S
index 15dc51c..c2ae97d 100644
--- a/libc/arch-x86_64/syscalls/setns.S
+++ b/libc/arch-x86_64/syscalls/setns.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setns)
movl $__NR_setns, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setns)
diff --git a/libc/arch-x86_64/syscalls/setpgid.S b/libc/arch-x86_64/syscalls/setpgid.S
index 0cbb9a3..4d4313c 100644
--- a/libc/arch-x86_64/syscalls/setpgid.S
+++ b/libc/arch-x86_64/syscalls/setpgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpgid)
movl $__NR_setpgid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setpgid)
diff --git a/libc/arch-x86_64/syscalls/setpriority.S b/libc/arch-x86_64/syscalls/setpriority.S
index e2ee775..3c508c3 100644
--- a/libc/arch-x86_64/syscalls/setpriority.S
+++ b/libc/arch-x86_64/syscalls/setpriority.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setpriority)
movl $__NR_setpriority, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setpriority)
diff --git a/libc/arch-x86_64/syscalls/setregid.S b/libc/arch-x86_64/syscalls/setregid.S
index 1d53e4c..181a8b9 100644
--- a/libc/arch-x86_64/syscalls/setregid.S
+++ b/libc/arch-x86_64/syscalls/setregid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setregid)
movl $__NR_setregid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setregid)
diff --git a/libc/arch-x86_64/syscalls/setresgid.S b/libc/arch-x86_64/syscalls/setresgid.S
index 7663cc6..fe44786 100644
--- a/libc/arch-x86_64/syscalls/setresgid.S
+++ b/libc/arch-x86_64/syscalls/setresgid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresgid)
movl $__NR_setresgid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setresgid)
diff --git a/libc/arch-x86_64/syscalls/setresuid.S b/libc/arch-x86_64/syscalls/setresuid.S
index 96e691f..58cd2ca 100644
--- a/libc/arch-x86_64/syscalls/setresuid.S
+++ b/libc/arch-x86_64/syscalls/setresuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setresuid)
movl $__NR_setresuid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setresuid)
diff --git a/libc/arch-x86_64/syscalls/setreuid.S b/libc/arch-x86_64/syscalls/setreuid.S
index 9ee7208..e25658b 100644
--- a/libc/arch-x86_64/syscalls/setreuid.S
+++ b/libc/arch-x86_64/syscalls/setreuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setreuid)
movl $__NR_setreuid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setreuid)
diff --git a/libc/arch-x86_64/syscalls/setrlimit.S b/libc/arch-x86_64/syscalls/setrlimit.S
index 393a5c1..ef03068 100644
--- a/libc/arch-x86_64/syscalls/setrlimit.S
+++ b/libc/arch-x86_64/syscalls/setrlimit.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setrlimit)
movl $__NR_setrlimit, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setrlimit)
diff --git a/libc/arch-x86_64/syscalls/setsid.S b/libc/arch-x86_64/syscalls/setsid.S
index bed06c9..01d9269 100644
--- a/libc/arch-x86_64/syscalls/setsid.S
+++ b/libc/arch-x86_64/syscalls/setsid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsid)
movl $__NR_setsid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setsid)
diff --git a/libc/arch-x86_64/syscalls/setsockopt.S b/libc/arch-x86_64/syscalls/setsockopt.S
index 3c12cd6..629fdf0 100644
--- a/libc/arch-x86_64/syscalls/setsockopt.S
+++ b/libc/arch-x86_64/syscalls/setsockopt.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setsockopt)
movq %rcx, %r10
movl $__NR_setsockopt, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setsockopt)
diff --git a/libc/arch-x86_64/syscalls/settimeofday.S b/libc/arch-x86_64/syscalls/settimeofday.S
index 317946a..ac5b9b1 100644
--- a/libc/arch-x86_64/syscalls/settimeofday.S
+++ b/libc/arch-x86_64/syscalls/settimeofday.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(settimeofday)
movl $__NR_settimeofday, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(settimeofday)
diff --git a/libc/arch-x86_64/syscalls/setuid.S b/libc/arch-x86_64/syscalls/setuid.S
index 8da7d86..f335a76 100644
--- a/libc/arch-x86_64/syscalls/setuid.S
+++ b/libc/arch-x86_64/syscalls/setuid.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setuid)
movl $__NR_setuid, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setuid)
diff --git a/libc/arch-x86_64/syscalls/setxattr.S b/libc/arch-x86_64/syscalls/setxattr.S
index 2abaa76..d750423 100644
--- a/libc/arch-x86_64/syscalls/setxattr.S
+++ b/libc/arch-x86_64/syscalls/setxattr.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(setxattr)
movq %rcx, %r10
movl $__NR_setxattr, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(setxattr)
diff --git a/libc/arch-x86_64/syscalls/shutdown.S b/libc/arch-x86_64/syscalls/shutdown.S
index b5840d7..a030c97 100644
--- a/libc/arch-x86_64/syscalls/shutdown.S
+++ b/libc/arch-x86_64/syscalls/shutdown.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(shutdown)
movl $__NR_shutdown, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(shutdown)
diff --git a/libc/arch-x86_64/syscalls/sigaltstack.S b/libc/arch-x86_64/syscalls/sigaltstack.S
index 2dd6aa4..71ce537 100644
--- a/libc/arch-x86_64/syscalls/sigaltstack.S
+++ b/libc/arch-x86_64/syscalls/sigaltstack.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sigaltstack)
movl $__NR_sigaltstack, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sigaltstack)
diff --git a/libc/arch-x86_64/syscalls/socketpair.S b/libc/arch-x86_64/syscalls/socketpair.S
index cb32a8a..dbcf50d 100644
--- a/libc/arch-x86_64/syscalls/socketpair.S
+++ b/libc/arch-x86_64/syscalls/socketpair.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(socketpair)
movq %rcx, %r10
movl $__NR_socketpair, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(socketpair)
diff --git a/libc/arch-x86_64/syscalls/splice.S b/libc/arch-x86_64/syscalls/splice.S
index 351e1c7..1b2ec84 100644
--- a/libc/arch-x86_64/syscalls/splice.S
+++ b/libc/arch-x86_64/syscalls/splice.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(splice)
movq %rcx, %r10
movl $__NR_splice, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(splice)
diff --git a/libc/arch-x86_64/syscalls/statfs64.S b/libc/arch-x86_64/syscalls/statfs64.S
index 26c3d53..16f6bdd 100644
--- a/libc/arch-x86_64/syscalls/statfs64.S
+++ b/libc/arch-x86_64/syscalls/statfs64.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(statfs64)
movl $__NR_statfs, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(statfs64)
diff --git a/libc/arch-x86_64/syscalls/swapoff.S b/libc/arch-x86_64/syscalls/swapoff.S
index 1bf331c..df922a0 100644
--- a/libc/arch-x86_64/syscalls/swapoff.S
+++ b/libc/arch-x86_64/syscalls/swapoff.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapoff)
movl $__NR_swapoff, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(swapoff)
diff --git a/libc/arch-x86_64/syscalls/swapon.S b/libc/arch-x86_64/syscalls/swapon.S
index 7405ccb..036b422 100644
--- a/libc/arch-x86_64/syscalls/swapon.S
+++ b/libc/arch-x86_64/syscalls/swapon.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(swapon)
movl $__NR_swapon, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(swapon)
diff --git a/libc/arch-x86_64/syscalls/symlinkat.S b/libc/arch-x86_64/syscalls/symlinkat.S
index bea2da8..fdbced5 100644
--- a/libc/arch-x86_64/syscalls/symlinkat.S
+++ b/libc/arch-x86_64/syscalls/symlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(symlinkat)
movl $__NR_symlinkat, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(symlinkat)
diff --git a/libc/arch-x86_64/syscalls/sync.S b/libc/arch-x86_64/syscalls/sync.S
index 97aa427..a4153fd 100644
--- a/libc/arch-x86_64/syscalls/sync.S
+++ b/libc/arch-x86_64/syscalls/sync.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sync)
movl $__NR_sync, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sync)
diff --git a/libc/arch-x86_64/syscalls/sysinfo.S b/libc/arch-x86_64/syscalls/sysinfo.S
index de8fb8f..754ef61 100644
--- a/libc/arch-x86_64/syscalls/sysinfo.S
+++ b/libc/arch-x86_64/syscalls/sysinfo.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(sysinfo)
movl $__NR_sysinfo, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(sysinfo)
diff --git a/libc/arch-x86_64/syscalls/tee.S b/libc/arch-x86_64/syscalls/tee.S
index 41e2370..31d66dc 100644
--- a/libc/arch-x86_64/syscalls/tee.S
+++ b/libc/arch-x86_64/syscalls/tee.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tee)
movq %rcx, %r10
movl $__NR_tee, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(tee)
diff --git a/libc/arch-x86_64/syscalls/tgkill.S b/libc/arch-x86_64/syscalls/tgkill.S
index 00b2b42..9c46887 100644
--- a/libc/arch-x86_64/syscalls/tgkill.S
+++ b/libc/arch-x86_64/syscalls/tgkill.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(tgkill)
movl $__NR_tgkill, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(tgkill)
diff --git a/libc/arch-x86_64/syscalls/timerfd_create.S b/libc/arch-x86_64/syscalls/timerfd_create.S
index eef3208..56b45e8 100644
--- a/libc/arch-x86_64/syscalls/timerfd_create.S
+++ b/libc/arch-x86_64/syscalls/timerfd_create.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_create)
movl $__NR_timerfd_create, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(timerfd_create)
diff --git a/libc/arch-x86_64/syscalls/timerfd_gettime.S b/libc/arch-x86_64/syscalls/timerfd_gettime.S
index 9f11c5a..8c9b5d6 100644
--- a/libc/arch-x86_64/syscalls/timerfd_gettime.S
+++ b/libc/arch-x86_64/syscalls/timerfd_gettime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_gettime)
movl $__NR_timerfd_gettime, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(timerfd_gettime)
diff --git a/libc/arch-x86_64/syscalls/timerfd_settime.S b/libc/arch-x86_64/syscalls/timerfd_settime.S
index 65a17e1..a524c0c 100644
--- a/libc/arch-x86_64/syscalls/timerfd_settime.S
+++ b/libc/arch-x86_64/syscalls/timerfd_settime.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(timerfd_settime)
movq %rcx, %r10
movl $__NR_timerfd_settime, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(timerfd_settime)
diff --git a/libc/arch-x86_64/syscalls/times.S b/libc/arch-x86_64/syscalls/times.S
index 5ee21be..89502bd 100644
--- a/libc/arch-x86_64/syscalls/times.S
+++ b/libc/arch-x86_64/syscalls/times.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(times)
movl $__NR_times, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(times)
diff --git a/libc/arch-x86_64/syscalls/truncate.S b/libc/arch-x86_64/syscalls/truncate.S
index 2dc1793..2ecd05b 100644
--- a/libc/arch-x86_64/syscalls/truncate.S
+++ b/libc/arch-x86_64/syscalls/truncate.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(truncate)
movl $__NR_truncate, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(truncate)
diff --git a/libc/arch-x86_64/syscalls/umask.S b/libc/arch-x86_64/syscalls/umask.S
index ad102bd..acd37e8 100644
--- a/libc/arch-x86_64/syscalls/umask.S
+++ b/libc/arch-x86_64/syscalls/umask.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umask)
movl $__NR_umask, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(umask)
diff --git a/libc/arch-x86_64/syscalls/umount2.S b/libc/arch-x86_64/syscalls/umount2.S
index 31588de..438aedb 100644
--- a/libc/arch-x86_64/syscalls/umount2.S
+++ b/libc/arch-x86_64/syscalls/umount2.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(umount2)
movl $__NR_umount2, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(umount2)
diff --git a/libc/arch-x86_64/syscalls/uname.S b/libc/arch-x86_64/syscalls/uname.S
index ad2d8f4..6f077df 100644
--- a/libc/arch-x86_64/syscalls/uname.S
+++ b/libc/arch-x86_64/syscalls/uname.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(uname)
movl $__NR_uname, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(uname)
diff --git a/libc/arch-x86_64/syscalls/unlinkat.S b/libc/arch-x86_64/syscalls/unlinkat.S
index e6aac2e..80f0251 100644
--- a/libc/arch-x86_64/syscalls/unlinkat.S
+++ b/libc/arch-x86_64/syscalls/unlinkat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unlinkat)
movl $__NR_unlinkat, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(unlinkat)
diff --git a/libc/arch-x86_64/syscalls/unshare.S b/libc/arch-x86_64/syscalls/unshare.S
index 6594df0..8316d20 100644
--- a/libc/arch-x86_64/syscalls/unshare.S
+++ b/libc/arch-x86_64/syscalls/unshare.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(unshare)
movl $__NR_unshare, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(unshare)
diff --git a/libc/arch-x86_64/syscalls/utimensat.S b/libc/arch-x86_64/syscalls/utimensat.S
index 5eaac1b..3e43826 100644
--- a/libc/arch-x86_64/syscalls/utimensat.S
+++ b/libc/arch-x86_64/syscalls/utimensat.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(utimensat)
movq %rcx, %r10
movl $__NR_utimensat, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(utimensat)
diff --git a/libc/arch-x86_64/syscalls/vmsplice.S b/libc/arch-x86_64/syscalls/vmsplice.S
index 6f9e5d1..df775c6 100644
--- a/libc/arch-x86_64/syscalls/vmsplice.S
+++ b/libc/arch-x86_64/syscalls/vmsplice.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(vmsplice)
movq %rcx, %r10
movl $__NR_vmsplice, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(vmsplice)
diff --git a/libc/arch-x86_64/syscalls/wait4.S b/libc/arch-x86_64/syscalls/wait4.S
index 141fe19..d392dc7 100644
--- a/libc/arch-x86_64/syscalls/wait4.S
+++ b/libc/arch-x86_64/syscalls/wait4.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(wait4)
movq %rcx, %r10
movl $__NR_wait4, %eax
@@ -12,7 +10,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(wait4)
diff --git a/libc/arch-x86_64/syscalls/write.S b/libc/arch-x86_64/syscalls/write.S
index 498fca7..145c793 100644
--- a/libc/arch-x86_64/syscalls/write.S
+++ b/libc/arch-x86_64/syscalls/write.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(write)
movl $__NR_write, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(write)
diff --git a/libc/arch-x86_64/syscalls/writev.S b/libc/arch-x86_64/syscalls/writev.S
index ef80eb8..8f8956f 100644
--- a/libc/arch-x86_64/syscalls/writev.S
+++ b/libc/arch-x86_64/syscalls/writev.S
@@ -2,8 +2,6 @@
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(writev)
movl $__NR_writev, %eax
syscall
@@ -11,7 +9,7 @@
jb 1f
negl %eax
movl %eax, %edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(writev)
diff --git a/libc/arch-x86_64/x86_64.mk b/libc/arch-x86_64/x86_64.mk
index 7887c51..b001b5e 100644
--- a/libc/arch-x86_64/x86_64.mk
+++ b/libc/arch-x86_64/x86_64.mk
@@ -30,7 +30,6 @@
libc_bionic_src_files_x86_64 := \
arch-x86_64/bionic/__bionic_clone.S \
arch-x86_64/bionic/_exit_with_stack_teardown.S \
- arch-x86_64/bionic/__get_sp.S \
arch-x86_64/bionic/__rt_sigreturn.S \
arch-x86_64/bionic/_setjmp.S \
arch-x86_64/bionic/setjmp.S \
diff --git a/libc/arch-arm/bionic/__get_sp.S b/libc/bionic/__gnu_basename.cpp
similarity index 83%
copy from libc/arch-arm/bionic/__get_sp.S
copy to libc/bionic/__gnu_basename.cpp
index 9ae6f24..1eb3f65 100644
--- a/libc/arch-arm/bionic/__get_sp.S
+++ b/libc/bionic/__gnu_basename.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2014 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,9 +26,10 @@
* SUCH DAMAGE.
*/
-#include <private/bionic_asm.h>
+#define _GNU_SOURCE 1
+#include <string.h>
-ENTRY_PRIVATE(__get_sp)
- mov r0, sp
- bx lr
-END(__get_sp)
+extern "C" const char* __gnu_basename(const char* path) {
+ const char* last_slash = strrchr(path, '/');
+ return (last_slash != NULL) ? last_slash + 1 : path;
+}
diff --git a/libc/bionic/__set_errno.cpp b/libc/bionic/__set_errno.cpp
index 236aeac..30df350 100644
--- a/libc/bionic/__set_errno.cpp
+++ b/libc/bionic/__set_errno.cpp
@@ -36,14 +36,20 @@
// system these are the same size, but on a 64-bit system they're not.
// 'long' gives us 32-bit on 32-bit systems, 64-bit on 64-bit systems.
-#if __LP64__
-extern "C" __LIBC_HIDDEN__ long __set_errno(int);
-#else
// __set_errno was mistakenly exposed in <errno.h> in the 32-bit NDK.
-extern "C" long __set_errno(int);
-#endif
+// We need the extra level of indirection so that the .hidden directives
+// in the system call stubs don't cause __set_errno to be hidden, breaking
+// old NDK apps.
-long __set_errno(int n) {
+// This one is for internal use only and used by both LP32 and LP64 assembler.
+extern "C" __LIBC_HIDDEN__ long __set_errno_internal(int n) {
errno = n;
return -1;
}
+
+// This one exists for the LP32 NDK and is not present at all in LP64.
+#if !defined(__LP64__)
+extern "C" long __set_errno(int n) {
+ return __set_errno_internal(n);
+}
+#endif
diff --git a/libc/bionic/bionic_systrace.cpp b/libc/bionic/bionic_systrace.cpp
index b8e892e..f5be415 100644
--- a/libc/bionic/bionic_systrace.cpp
+++ b/libc/bionic/bionic_systrace.cpp
@@ -74,7 +74,7 @@
}
if (g_trace_marker_fd == -1) {
- g_trace_marker_fd = open("/sys/kernel/debug/tracing/trace_marker", O_WRONLY | O_CLOEXEC);
+ g_trace_marker_fd = open("/sys/kernel/debug/tracing/trace_marker", O_CLOEXEC | O_WRONLY);
if (g_trace_marker_fd == -1) {
__libc_fatal("Could not open kernel trace file: %s\n", strerror(errno));
}
diff --git a/libc/bionic/clone.cpp b/libc/bionic/clone.cpp
index 0a0fdd5..9b5c9e7 100644
--- a/libc/bionic/clone.cpp
+++ b/libc/bionic/clone.cpp
@@ -26,7 +26,7 @@
* SUCH DAMAGE.
*/
-#define __GNU_SOURCE 1
+#define _GNU_SOURCE 1
#include <sched.h>
#include <stdlib.h>
#include <stdarg.h>
diff --git a/libc/bionic/daemon.c b/libc/bionic/daemon.c
deleted file mode 100644
index 8181d16..0000000
--- a/libc/bionic/daemon.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-int daemon( int nochdir, int noclose )
-{
- pid_t pid;
-
- if ( !nochdir && chdir("/") != 0 )
- return -1;
-
- if ( !noclose )
- {
- int fd = open("/dev/null", O_RDWR);
-
- if ( fd < 0 )
- return -1;
-
- if ( dup2( fd, 0 ) < 0 ||
- dup2( fd, 1 ) < 0 ||
- dup2( fd, 2 ) < 0 )
- {
- close(fd);
- return -1;
- }
- close(fd);
- }
-
- pid = fork();
- if (pid < 0)
- return -1;
-
- if (pid > 0)
- _exit(0);
-
- if ( setsid() < 0 )
- return -1;
-
- return 0;
-}
-
diff --git a/libc/bionic/debug_mapinfo.cpp b/libc/bionic/debug_mapinfo.cpp
index d83799a..698ab6b 100644
--- a/libc/bionic/debug_mapinfo.cpp
+++ b/libc/bionic/debug_mapinfo.cpp
@@ -71,7 +71,7 @@
struct mapinfo_t* milist = NULL;
char data[1024]; // Used to read lines as well as to construct the filename.
snprintf(data, sizeof(data), "/proc/%d/maps", pid);
- FILE* fp = fopen(data, "r");
+ FILE* fp = fopen(data, "re");
if (fp != NULL) {
while (fgets(data, sizeof(data), fp) != NULL) {
mapinfo_t* mi = parse_maps_line(data);
diff --git a/libc/bionic/dirent.cpp b/libc/bionic/dirent.cpp
index 7abc7f3..5e1c7a5 100644
--- a/libc/bionic/dirent.cpp
+++ b/libc/bionic/dirent.cpp
@@ -78,7 +78,7 @@
}
DIR* opendir(const char* path) {
- int fd = open(path, O_RDONLY | O_DIRECTORY);
+ int fd = open(path, O_CLOEXEC | O_DIRECTORY | O_RDONLY);
return (fd != -1) ? __allocate_DIR(fd) : NULL;
}
diff --git a/libc/bionic/dlmalloc.c b/libc/bionic/dlmalloc.c
index e89c5d1..5853e7c 100644
--- a/libc/bionic/dlmalloc.c
+++ b/libc/bionic/dlmalloc.c
@@ -16,6 +16,7 @@
#include "dlmalloc.h"
+#include "malloc.h"
#include "private/bionic_prctl.h"
#include "private/libc_logging.h"
@@ -54,3 +55,25 @@
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, map, length, "libc_malloc");
return map;
}
+
+// Since dlmalloc isn't the default, we'll leave this unimplemented for now. If
+// we decide we need it later, we can fill it in.
+size_t __mallinfo_narenas() {
+ return 0;
+}
+
+size_t __mallinfo_nbins() {
+ return 0;
+}
+
+struct mallinfo __mallinfo_arena_info(size_t aidx __unused) {
+ struct mallinfo mi;
+ memset(&mi, 0, sizeof(mi));
+ return mi;
+}
+
+struct mallinfo __mallinfo_bin_info(size_t aidx __unused, size_t bidx __unused) {
+ struct mallinfo mi;
+ memset(&mi, 0, sizeof(mi));
+ return mi;
+}
diff --git a/libc/bionic/dlmalloc.h b/libc/bionic/dlmalloc.h
index 46efa91..ef78814 100644
--- a/libc/bionic/dlmalloc.h
+++ b/libc/bionic/dlmalloc.h
@@ -34,6 +34,13 @@
#define malloc_getpagesize getpagesize()
+/* dlmalloc_usable_size was exposed in the NDK, so change the name
+ * of the function on 32 bit architectures.
+ */
+#if !defined(__LP64__)
+#define dlmalloc_usable_size dlmalloc_usable_size_real
+#endif
+
/* Export two symbols used by the VM. */
__BEGIN_DECLS
int dlmalloc_trim(size_t) __LIBC_ABI_PUBLIC__;
diff --git a/libc/bionic/err.c b/libc/bionic/err.c
deleted file mode 100644
index 84a3d85..0000000
--- a/libc/bionic/err.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*-
- * Copyright (c) 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>
-#include <err.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <errno.h>
-
-extern const char* __progname;
-
-__noreturn void
-err(int eval, const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- verr(eval, fmt, ap);
- va_end(ap);
-}
-
-__noreturn void
-errx(int eval, const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- verrx(eval, fmt, ap);
- va_end(ap);
-}
-
-__noreturn void
-verr(int eval, const char *fmt, va_list ap)
-{
- int sverrno;
-
- sverrno = errno;
- (void)fprintf(stderr, "%s: ", __progname);
- if (fmt != NULL) {
- (void)vfprintf(stderr, fmt, ap);
- (void)fprintf(stderr, ": ");
- }
- (void)fprintf(stderr, "%s\n", strerror(sverrno));
- exit(eval);
-}
-
-
-__noreturn void
-verrx(int eval, const char *fmt, va_list ap)
-{
- (void)fprintf(stderr, "%s: ", __progname);
- if (fmt != NULL)
- (void)vfprintf(stderr, fmt, ap);
- (void)fprintf(stderr, "\n");
- exit(eval);
-}
-
-void
-warn(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vwarn(fmt, ap);
- va_end(ap);
-}
-
-void
-warnx(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vwarnx(fmt, ap);
- va_end(ap);
-}
-
-void
-vwarn(const char *fmt, va_list ap)
-{
- int sverrno;
-
- sverrno = errno;
- (void)fprintf(stderr, "%s: ", __progname);
- if (fmt != NULL) {
- (void)vfprintf(stderr, fmt, ap);
- (void)fprintf(stderr, ": ");
- }
- (void)fprintf(stderr, "%s\n", strerror(sverrno));
-}
-
-void
-vwarnx(const char *fmt, va_list ap)
-{
- (void)fprintf(stderr, "%s: ", __progname);
- if (fmt != NULL)
- (void)vfprintf(stderr, fmt, ap);
- (void)fprintf(stderr, "\n");
-}
diff --git a/libc/bionic/libc_init_common.cpp b/libc/bionic/libc_init_common.cpp
index ff9940e..2a6a03b 100644
--- a/libc/bionic/libc_init_common.cpp
+++ b/libc/bionic/libc_init_common.cpp
@@ -36,7 +36,6 @@
#include <stdlib.h>
#include <sys/auxv.h>
#include <sys/time.h>
-#include <sys/resource.h>
#include <unistd.h>
#include "private/bionic_auxv.h"
@@ -46,7 +45,6 @@
#include "pthread_internal.h"
extern "C" abort_msg_t** __abort_message_ptr;
-extern "C" uintptr_t __get_sp(void);
extern "C" int __system_properties_init(void);
extern "C" int __set_tls(void* ptr);
extern "C" int __set_tid_address(int* tid_address);
@@ -62,17 +60,6 @@
// Declared in "private/bionic_ssp.h".
uintptr_t __stack_chk_guard = 0;
-static size_t get_main_thread_stack_size() {
- rlimit stack_limit;
- int rlimit_result = getrlimit(RLIMIT_STACK, &stack_limit);
- if ((rlimit_result == 0) &&
- (stack_limit.rlim_cur != RLIM_INFINITY) &&
- (stack_limit.rlim_cur > PTHREAD_STACK_MIN)) {
- return (stack_limit.rlim_cur & ~(PAGE_SIZE - 1));
- }
- return PTHREAD_STACK_SIZE_DEFAULT;
-}
-
/* Init TLS for the initial thread. Called by the linker _before_ libc is mapped
* in memory. Beware: all writes to libc globals from this function will
* apply to linker-private copies and will not be visible from libc later on.
@@ -96,16 +83,15 @@
main_thread.tid = __set_tid_address(&main_thread.tid);
main_thread.set_cached_pid(main_thread.tid);
- // Work out the extent of the main thread's stack.
- uintptr_t stack_top = (__get_sp() & ~(PAGE_SIZE - 1)) + PAGE_SIZE;
- size_t stack_size = get_main_thread_stack_size();
- void* stack_bottom = reinterpret_cast<void*>(stack_top - stack_size);
-
// We don't want to free the main thread's stack even when the main thread exits
// because things like environment variables with global scope live on it.
+ // We also can't free the pthread_internal_t itself, since that lives on the main
+ // thread's stack rather than on the heap.
pthread_attr_init(&main_thread.attr);
- pthread_attr_setstack(&main_thread.attr, stack_bottom, stack_size);
main_thread.attr.flags = PTHREAD_ATTR_FLAG_USER_ALLOCATED_STACK | PTHREAD_ATTR_FLAG_MAIN_THREAD;
+ main_thread.attr.guard_size = 0; // The main thread has no guard page.
+ main_thread.attr.stack_size = 0; // User code should never see this; we'll compute it when asked.
+ // TODO: the main thread's sched_policy and sched_priority need to be queried.
__init_thread(&main_thread, false);
__init_tls(&main_thread);
diff --git a/libc/bionic/libc_logging.cpp b/libc/bionic/libc_logging.cpp
index d0172ed..49a3762 100644
--- a/libc/bionic/libc_logging.cpp
+++ b/libc/bionic/libc_logging.cpp
@@ -29,6 +29,7 @@
#include "../private/libc_logging.h" // Relative path so we can #include this .cpp file for testing.
#include "../private/ScopedPthreadMutexLocker.h"
+#include <android/set_abort_message.h>
#include <assert.h>
#include <errno.h>
#include <fcntl.h>
@@ -74,10 +75,12 @@
len = strlen(data);
}
+ total += len;
+
while (len > 0) {
int avail = end_ - pos_;
if (avail == 0) {
- break;
+ return;
}
if (avail > len) {
avail = len;
@@ -86,11 +89,10 @@
pos_ += avail;
pos_[0] = '\0';
len -= avail;
- total += avail;
}
}
- int total;
+ size_t total;
private:
char* buffer_;
@@ -108,18 +110,19 @@
len = strlen(data);
}
+ total += len;
+
while (len > 0) {
int rc = TEMP_FAILURE_RETRY(write(fd_, data, len));
if (rc == -1) {
- break;
+ return;
}
data += rc;
len -= rc;
- total += rc;
}
}
- int total;
+ size_t total;
private:
int fd_;
@@ -629,7 +632,7 @@
// Log to the log for the benefit of regular app developers (whose stdout and stderr are closed).
__libc_write_log(ANDROID_LOG_FATAL, "libc", msg);
- __android_set_abort_message(msg);
+ android_set_abort_message(msg);
}
void __libc_fatal_no_abort(const char* format, ...) {
@@ -647,7 +650,7 @@
abort();
}
-void __android_set_abort_message(const char* msg) {
+void android_set_abort_message(const char* msg) {
ScopedPthreadMutexLocker locker(&g_abort_msg_lock);
if (__abort_message_ptr == NULL) {
diff --git a/libc/bionic/libgen.cpp b/libc/bionic/libgen.cpp
index d8df494..b98f504 100644
--- a/libc/bionic/libgen.cpp
+++ b/libc/bionic/libgen.cpp
@@ -36,22 +36,7 @@
#include "private/ThreadLocalBuffer.h"
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(basename);
-GLOBAL_INIT_THREAD_LOCAL_BUFFER(dirname);
-
-char* basename(const char* path) {
- LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, basename, MAXPATHLEN);
- int rc = basename_r(path, basename_tls_buffer, basename_tls_buffer_size);
- return (rc < 0) ? NULL : basename_tls_buffer;
-}
-
-char* dirname(const char* path) {
- LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, dirname, MAXPATHLEN);
- int rc = dirname_r(path, dirname_tls_buffer, dirname_tls_buffer_size);
- return (rc < 0) ? NULL : dirname_tls_buffer;
-}
-
-int basename_r(const char* path, char* buffer, size_t buffer_size) {
+__LIBC64_HIDDEN__ int basename_r(const char* path, char* buffer, size_t buffer_size) {
const char* startp = NULL;
const char* endp = NULL;
int len;
@@ -103,7 +88,7 @@
return result;
}
-int dirname_r(const char* path, char* buffer, size_t buffer_size) {
+__LIBC64_HIDDEN__ int dirname_r(const char* path, char* buffer, size_t buffer_size) {
const char* endp = NULL;
int len;
int result;
@@ -161,3 +146,18 @@
}
return result;
}
+
+GLOBAL_INIT_THREAD_LOCAL_BUFFER(basename);
+GLOBAL_INIT_THREAD_LOCAL_BUFFER(dirname);
+
+char* basename(const char* path) {
+ LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, basename, MAXPATHLEN);
+ int rc = basename_r(path, basename_tls_buffer, basename_tls_buffer_size);
+ return (rc < 0) ? NULL : basename_tls_buffer;
+}
+
+char* dirname(const char* path) {
+ LOCAL_INIT_THREAD_LOCAL_BUFFER(char*, dirname, MAXPATHLEN);
+ int rc = dirname_r(path, dirname_tls_buffer, dirname_tls_buffer_size);
+ return (rc < 0) ? NULL : dirname_tls_buffer;
+}
diff --git a/libc/bionic/malloc_debug_leak.cpp b/libc/bionic/malloc_debug_leak.cpp
index 837dccc..df0f997 100644
--- a/libc/bionic/malloc_debug_leak.cpp
+++ b/libc/bionic/malloc_debug_leak.cpp
@@ -385,6 +385,36 @@
return ptr;
}
+extern "C" size_t leak_malloc_usable_size(const void* mem) {
+ if (DebugCallsDisabled()) {
+ return g_malloc_dispatch->malloc_usable_size(mem);
+ }
+
+ if (mem == NULL) {
+ return 0;
+ }
+
+ // Check the guard to make sure it is valid.
+ const AllocationEntry* header = const_to_header(mem);
+
+ if (header->guard == MEMALIGN_GUARD) {
+ // If this is a memalign'd pointer, then grab the header from
+ // entry.
+ header = const_to_header(header->entry);
+ } else if (header->guard != GUARD) {
+ debug_log("WARNING bad header guard: '0x%x'! and invalid entry: %p\n",
+ header->guard, header->entry);
+ return 0;
+ }
+
+ size_t ret = g_malloc_dispatch->malloc_usable_size(header);
+ if (ret != 0) {
+ // The usable area starts at 'mem' and stops at 'header+ret'.
+ return reinterpret_cast<uintptr_t>(header) + ret - reinterpret_cast<uintptr_t>(mem);
+ }
+ return 0;
+}
+
extern "C" void* leak_realloc(void* oldMem, size_t bytes) {
if (DebugCallsDisabled()) {
return g_malloc_dispatch->realloc(oldMem, bytes);
@@ -408,7 +438,7 @@
newMem = leak_malloc(bytes);
if (newMem != NULL) {
- size_t oldSize = header->entry->size & ~SIZE_FLAG_MASK;
+ size_t oldSize = leak_malloc_usable_size(oldMem);
size_t copySize = (oldSize <= bytes) ? oldSize : bytes;
memcpy(newMem, oldMem, copySize);
leak_free(oldMem);
@@ -462,34 +492,6 @@
return base;
}
-extern "C" size_t leak_malloc_usable_size(const void* mem) {
- if (DebugCallsDisabled()) {
- return g_malloc_dispatch->malloc_usable_size(mem);
- }
-
- if (mem != NULL) {
- // Check the guard to make sure it is valid.
- const AllocationEntry* header = const_to_header((void*)mem);
-
- if (header->guard == MEMALIGN_GUARD) {
- // If this is a memalign'd pointer, then grab the header from
- // entry.
- header = const_to_header(header->entry);
- } else if (header->guard != GUARD) {
- debug_log("WARNING bad header guard: '0x%x'! and invalid entry: %p\n",
- header->guard, header->entry);
- return 0;
- }
-
- size_t ret = g_malloc_dispatch->malloc_usable_size(header);
- if (ret != 0) {
- // The usable area starts at 'mem' and stops at 'header+ret'.
- return reinterpret_cast<uintptr_t>(header) + ret - reinterpret_cast<uintptr_t>(mem);
- }
- }
- return 0;
-}
-
extern "C" struct mallinfo leak_mallinfo() {
return g_malloc_dispatch->mallinfo();
}
diff --git a/libc/bionic/malloc_debug_qemu.cpp b/libc/bionic/malloc_debug_qemu.cpp
index b3b604d..2f4949b 100644
--- a/libc/bionic/malloc_debug_qemu.cpp
+++ b/libc/bionic/malloc_debug_qemu.cpp
@@ -606,7 +606,7 @@
* the memory mapped spaces into writes to an I/O port that emulator
* "listens to" on the other end. Note that until we open and map that
* device, logging to emulator's stdout will not be available. */
- int fd = open("/dev/qemu_trace", O_RDWR);
+ int fd = open("/dev/qemu_trace", O_CLOEXEC | O_RDWR);
if (fd < 0) {
error_log("Unable to open /dev/qemu_trace");
return false;
diff --git a/libc/bionic/malloc_info.cpp b/libc/bionic/malloc_info.cpp
new file mode 100644
index 0000000..99caedb
--- /dev/null
+++ b/libc/bionic/malloc_info.cpp
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "malloc_info.h"
+
+#include <errno.h>
+#include "private/bionic_macros.h"
+
+class __LIBC_HIDDEN__ Elem {
+public:
+ // name must be valid throughout lifetime of the object.
+ explicit Elem(FILE* fp, const char* name,
+ const char* attr_fmt = nullptr, ...) {
+ this->fp = fp;
+ this->name = name;
+
+ fprintf(fp, "<%s", name);
+ if (attr_fmt != nullptr) {
+ va_list args;
+ va_start(args, attr_fmt);
+ fputc(' ', fp);
+ vfprintf(fp, attr_fmt, args);
+ va_end(args);
+ }
+ fputc('>', fp);
+ }
+
+ ~Elem() noexcept {
+ fprintf(fp, "</%s>", name);
+ }
+
+ void contents(const char* fmt, ...) {
+ va_list args;
+ va_start(args, fmt);
+ vfprintf(fp, fmt, args);
+ va_end(args);
+ }
+
+private:
+ FILE* fp;
+ const char* name;
+
+ DISALLOW_COPY_AND_ASSIGN(Elem);
+};
+
+int malloc_info(int options, FILE* fp) {
+ if (options != 0) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ Elem root(fp, "malloc", "version=\"jemalloc-1\"");
+
+ // Dump all of the large allocations in the arenas.
+ for (size_t i = 0; i < __mallinfo_narenas(); i++) {
+ struct mallinfo mi = __mallinfo_arena_info(i);
+ if (mi.hblkhd != 0) {
+ Elem arena_elem(fp, "heap", "nr=\"%d\"", i);
+ {
+ Elem(fp, "allocated-large").contents("%zu", mi.ordblks);
+ Elem(fp, "allocated-huge").contents("%zu", mi.uordblks);
+ Elem(fp, "allocated-bins").contents("%zu", mi.fsmblks);
+
+ size_t total = 0;
+ for (size_t j = 0; j < __mallinfo_nbins(); j++) {
+ struct mallinfo mi = __mallinfo_bin_info(i, j);
+ if (mi.ordblks != 0) {
+ Elem bin_elem(fp, "bin", "nr=\"%d\"", j);
+ Elem(fp, "allocated").contents("%zu", mi.ordblks);
+ Elem(fp, "nmalloc").contents("%zu", mi.uordblks);
+ Elem(fp, "ndalloc").contents("%zu", mi.fordblks);
+ total += mi.ordblks;
+ }
+ }
+ Elem(fp, "bins-total").contents("%zu", total);
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/tests/libs/dlsym_local_symbol_private.cpp b/libc/bionic/malloc_info.h
similarity index 60%
copy from tests/libs/dlsym_local_symbol_private.cpp
copy to libc/bionic/malloc_info.h
index 2587508..5fffae9 100644
--- a/tests/libs/dlsym_local_symbol_private.cpp
+++ b/libc/bionic/malloc_info.h
@@ -14,11 +14,19 @@
* limitations under the License.
*/
-#include <stdlib.h>
-#include <dlfcn.h>
-#include <stdio.h>
+#ifndef LIBC_BIONIC_MALLOC_INFO_H_
+#define LIBC_BIONIC_MALLOC_INFO_H_
-// This symbol is declared local in
-// the linker version map: libdlsym_local_symbol.map.
-// It should not be visible from the outside.
-extern "C" const uint32_t __attribute__ ((visibility ("protected"))) private_taxicab_number = 1729;
+#include <malloc.h>
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+__LIBC_HIDDEN__ size_t __mallinfo_narenas();
+__LIBC_HIDDEN__ size_t __mallinfo_nbins();
+__LIBC_HIDDEN__ struct mallinfo __mallinfo_arena_info(size_t);
+__LIBC_HIDDEN__ struct mallinfo __mallinfo_bin_info(size_t, size_t);
+
+__END_DECLS
+
+#endif // LIBC_BIONIC_MALLOC_INFO_H_
diff --git a/libc/bionic/ndk_cruft.cpp b/libc/bionic/ndk_cruft.cpp
index 0c72019..829e8f3 100644
--- a/libc/bionic/ndk_cruft.cpp
+++ b/libc/bionic/ndk_cruft.cpp
@@ -303,4 +303,21 @@
return strchr(str, ch);
}
+// This was removed from BSD.
+extern "C" void arc4random_stir(void) {
+ // The current implementation stirs itself as needed.
+}
+
+// This was removed from BSD.
+extern "C" void arc4random_addrandom(unsigned char*, int) {
+ // The current implementation adds randomness as needed.
+}
+
+// Old versions of the NDK did not export malloc_usable_size, but did
+// export dlmalloc_usable_size. We are moving away from dlmalloc in L
+// so make this call malloc_usable_size.
+extern "C" size_t dlmalloc_usable_size(void* ptr) {
+ return malloc_usable_size(ptr);
+}
+
#endif
diff --git a/libc/bionic/new.cpp b/libc/bionic/new.cpp
index fcfd1bd..cd84c2e 100644
--- a/libc/bionic/new.cpp
+++ b/libc/bionic/new.cpp
@@ -38,11 +38,11 @@
return p;
}
-void operator delete(void* ptr) {
+void operator delete(void* ptr) throw() {
free(ptr);
}
-void operator delete[](void* ptr) {
+void operator delete[](void* ptr) throw() {
free(ptr);
}
@@ -54,10 +54,10 @@
return malloc(size);
}
-void operator delete(void* ptr, const std::nothrow_t&) {
+void operator delete(void* ptr, const std::nothrow_t&) throw() {
free(ptr);
}
-void operator delete[](void* ptr, const std::nothrow_t&) {
+void operator delete[](void* ptr, const std::nothrow_t&) throw() {
free(ptr);
}
diff --git a/libc/bionic/pthread_attr.cpp b/libc/bionic/pthread_attr.cpp
index e1cd853..c93970a 100644
--- a/libc/bionic/pthread_attr.cpp
+++ b/libc/bionic/pthread_attr.cpp
@@ -28,6 +28,13 @@
#include <pthread.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <sys/resource.h>
+
+#include "private/bionic_string_utils.h"
+#include "private/ErrnoRestorer.h"
+#include "private/libc_logging.h"
#include "pthread_internal.h"
int pthread_attr_init(pthread_attr_t* attr) {
@@ -90,8 +97,8 @@
}
int pthread_attr_getstacksize(const pthread_attr_t* attr, size_t* stack_size) {
- *stack_size = attr->stack_size;
- return 0;
+ void* unused;
+ return pthread_attr_getstack(attr, &unused, stack_size);
}
int pthread_attr_setstack(pthread_attr_t* attr, void* stack_base, size_t stack_size) {
@@ -106,7 +113,43 @@
return 0;
}
+static int __pthread_attr_getstack_main_thread(void** stack_base, size_t* stack_size) {
+ ErrnoRestorer errno_restorer;
+
+ rlimit stack_limit;
+ if (getrlimit(RLIMIT_STACK, &stack_limit) == -1) {
+ return errno;
+ }
+
+ // If the current RLIMIT_STACK is RLIM_INFINITY, only admit to an 8MiB stack for sanity's sake.
+ if (stack_limit.rlim_cur == RLIM_INFINITY) {
+ stack_limit.rlim_cur = 8 * 1024 * 1024;
+ }
+
+ // It doesn't matter which thread we are; we're just looking for "[stack]".
+ FILE* fp = fopen("/proc/self/maps", "re");
+ if (fp == NULL) {
+ return errno;
+ }
+ char line[BUFSIZ];
+ while (fgets(line, sizeof(line), fp) != NULL) {
+ if (ends_with(line, " [stack]\n")) {
+ uintptr_t lo, hi;
+ if (sscanf(line, "%" SCNxPTR "-%" SCNxPTR, &lo, &hi) == 2) {
+ *stack_size = stack_limit.rlim_cur;
+ *stack_base = reinterpret_cast<void*>(hi - *stack_size);
+ fclose(fp);
+ return 0;
+ }
+ }
+ }
+ __libc_fatal("No [stack] line found in /proc/self/maps!");
+}
+
int pthread_attr_getstack(const pthread_attr_t* attr, void** stack_base, size_t* stack_size) {
+ if ((attr->flags & PTHREAD_ATTR_FLAG_MAIN_THREAD) != 0) {
+ return __pthread_attr_getstack_main_thread(stack_base, stack_size);
+ }
*stack_base = attr->stack_base;
*stack_size = attr->stack_size;
return 0;
@@ -122,9 +165,8 @@
return 0;
}
-int pthread_getattr_np(pthread_t thid, pthread_attr_t* attr) {
- pthread_internal_t* thread = (pthread_internal_t*) thid;
- *attr = thread->attr;
+int pthread_getattr_np(pthread_t t, pthread_attr_t* attr) {
+ *attr = reinterpret_cast<pthread_internal_t*>(t)->attr;
return 0;
}
diff --git a/libc/bionic/pthread_setname_np.cpp b/libc/bionic/pthread_setname_np.cpp
index 1ddf810..7b2fa6b 100644
--- a/libc/bionic/pthread_setname_np.cpp
+++ b/libc/bionic/pthread_setname_np.cpp
@@ -67,7 +67,7 @@
}
char comm_name[sizeof(TASK_COMM_FMT) + 8];
snprintf(comm_name, sizeof(comm_name), TASK_COMM_FMT, tid);
- int fd = open(comm_name, O_WRONLY);
+ int fd = open(comm_name, O_CLOEXEC | O_WRONLY);
if (fd == -1) {
return errno;
}
diff --git a/libc/bionic/pututline.c b/libc/bionic/pututline.c
index c8427f7..8cbf470 100644
--- a/libc/bionic/pututline.c
+++ b/libc/bionic/pututline.c
@@ -36,7 +36,7 @@
struct utmp u;
long i;
- if (!(f = fopen(_PATH_UTMP, "w+")))
+ if (!(f = fopen(_PATH_UTMP, "w+e")))
return;
while (fread(&u, sizeof(struct utmp), 1, f) == 1)
@@ -55,7 +55,7 @@
fclose(f);
- if (!(f = fopen(_PATH_UTMP, "w+")))
+ if (!(f = fopen(_PATH_UTMP, "w+e")))
return;
fwrite(utmp, sizeof(struct utmp), 1, f);
diff --git a/libc/bionic/sigaction.cpp b/libc/bionic/sigaction.cpp
index 225a823..e1a031f 100644
--- a/libc/bionic/sigaction.cpp
+++ b/libc/bionic/sigaction.cpp
@@ -64,10 +64,6 @@
bionic_old_action->sa_mask = kernel_old_action.sa_mask;
#ifdef SA_RESTORER
bionic_old_action->sa_restorer = kernel_old_action.sa_restorer;
-
- if (bionic_old_action->sa_restorer == &__rt_sigreturn) {
- bionic_old_action->sa_flags &= ~SA_RESTORER;
- }
#endif
}
diff --git a/libc/bionic/strerror_r.cpp b/libc/bionic/strerror_r.cpp
index 1e57cc0..d419fb1 100644
--- a/libc/bionic/strerror_r.cpp
+++ b/libc/bionic/strerror_r.cpp
@@ -1,11 +1,16 @@
/* $OpenBSD: strerror_r.c,v 1.6 2005/08/08 08:05:37 espie Exp $ */
/* Public Domain <marc@snafu.org> */
+// G++ automatically defines _GNU_SOURCE, which then means that <string.h>
+// gives us the GNU variant.
+#undef _GNU_SOURCE
+
+#include <string.h>
+
#include <errno.h>
#include <limits.h>
#include <signal.h>
#include <stdio.h>
-#include <string.h>
#include "private/ErrnoRestorer.h"
#include "private/libc_logging.h"
@@ -62,6 +67,12 @@
return 0;
}
+extern "C" char* __gnu_strerror_r(int error_number, char* buf, size_t buf_len) {
+ ErrnoRestorer errno_restorer; // The glibc strerror_r doesn't set errno if it truncates...
+ strerror_r(error_number, buf, buf_len);
+ return buf; // ...and just returns whatever fit.
+}
+
extern "C" __LIBC_HIDDEN__ const char* __strsignal(int signal_number, char* buf, size_t buf_len) {
const char* signal_name = __strsignal_lookup(signal_number);
if (signal_name != NULL) {
diff --git a/libc/bionic/sysconf.cpp b/libc/bionic/sysconf.cpp
index 8309f08..d8aac4f 100644
--- a/libc/bionic/sysconf.cpp
+++ b/libc/bionic/sysconf.cpp
@@ -95,7 +95,7 @@
}
static int __sysconf_nprocessors_onln() {
- FILE* fp = fopen("/proc/stat", "r");
+ FILE* fp = fopen("/proc/stat", "re");
if (fp == NULL) {
return 1;
}
@@ -118,7 +118,7 @@
}
static int __get_meminfo(const char* pattern) {
- FILE* fp = fopen("/proc/meminfo", "r");
+ FILE* fp = fopen("/proc/meminfo", "re");
if (fp == NULL) {
return -1;
}
diff --git a/libc/bionic/system_properties.cpp b/libc/bionic/system_properties.cpp
index 30081a5..411d6bf 100644
--- a/libc/bionic/system_properties.cpp
+++ b/libc/bionic/system_properties.cpp
@@ -201,14 +201,6 @@
return -1;
}
- // TODO: Is this really required ? Does android run on any kernels that
- // don't support O_CLOEXEC ?
- const int ret = fcntl(fd, F_SETFD, FD_CLOEXEC);
- if (ret < 0) {
- close(fd);
- return -1;
- }
-
if (ftruncate(fd, PA_SIZE) < 0) {
close(fd);
return -1;
@@ -271,18 +263,9 @@
static int map_prop_area()
{
- int fd(open(property_filename, O_RDONLY | O_NOFOLLOW | O_CLOEXEC));
- if (fd >= 0) {
- /* For old kernels that don't support O_CLOEXEC */
- const int ret = fcntl(fd, F_SETFD, FD_CLOEXEC);
- if (ret < 0) {
- close(fd);
- return -1;
- }
- }
-
+ int fd = open(property_filename, O_CLOEXEC | O_NOFOLLOW | O_RDONLY);
bool close_fd = true;
- if ((fd < 0) && (errno == ENOENT)) {
+ if (fd == -1 && errno == ENOENT) {
/*
* For backwards compatibility, if the file doesn't
* exist, we use the environment to get the file descriptor.
@@ -611,6 +594,14 @@
return find_property(root_node(), name, strlen(name), NULL, 0, false);
}
+// The C11 standard doesn't allow atomic loads from const fields,
+// though C++11 does. Fudge it until standards get straightened out.
+static inline uint_least32_t load_const_atomic(const atomic_uint_least32_t* s,
+ memory_order mo) {
+ atomic_uint_least32_t* non_const_s = const_cast<atomic_uint_least32_t*>(s);
+ return atomic_load_explicit(non_const_s, mo);
+}
+
int __system_property_read(const prop_info *pi, char *name, char *value)
{
if (__predict_false(compat_mode)) {
@@ -631,7 +622,7 @@
// would be any different, so this should be OK.
atomic_thread_fence(memory_order_acquire);
if (serial ==
- atomic_load_explicit(&(pi->serial), memory_order_relaxed)) {
+ load_const_atomic(&(pi->serial), memory_order_relaxed)) {
if (name != 0) {
strcpy(name, pi->name);
}
@@ -733,12 +724,12 @@
// Wait for non-locked serial, and retrieve it with acquire semantics.
unsigned int __system_property_serial(const prop_info *pi)
{
- uint32_t serial = atomic_load_explicit(&pi->serial, memory_order_acquire);
+ uint32_t serial = load_const_atomic(&pi->serial, memory_order_acquire);
while (SERIAL_DIRTY(serial)) {
__futex_wait(const_cast<volatile void *>(
reinterpret_cast<const void *>(&pi->serial)),
serial, NULL);
- serial = atomic_load_explicit(&pi->serial, memory_order_acquire);
+ serial = load_const_atomic(&pi->serial, memory_order_acquire);
}
return serial;
}
diff --git a/libc/dns/gethnamaddr.c b/libc/dns/gethnamaddr.c
index 80fdcbe..cc33c61 100644
--- a/libc/dns/gethnamaddr.c
+++ b/libc/dns/gethnamaddr.c
@@ -899,7 +899,7 @@
res_static rs = __res_get_static();
if (rs == NULL) return;
if (!rs->hostf)
- rs->hostf = fopen(_PATH_HOSTS, "r" );
+ rs->hostf = fopen(_PATH_HOSTS, "re" );
else
rewind(rs->hostf);
rs->stayopen = f;
@@ -925,7 +925,7 @@
int af, len;
res_static rs = __res_get_static();
- if (!rs->hostf && !(rs->hostf = fopen(_PATH_HOSTS, "r" ))) {
+ if (!rs->hostf && !(rs->hostf = fopen(_PATH_HOSTS, "re" ))) {
h_errno = NETDB_INTERNAL;
return NULL;
}
diff --git a/libc/dns/net/getaddrinfo.c b/libc/dns/net/getaddrinfo.c
index 65fd1c1..a492318 100644
--- a/libc/dns/net/getaddrinfo.c
+++ b/libc/dns/net/getaddrinfo.c
@@ -2017,7 +2017,7 @@
{
if (!*hostf)
- *hostf = fopen(_PATH_HOSTS, "r" );
+ *hostf = fopen(_PATH_HOSTS, "re");
else
rewind(*hostf);
}
@@ -2046,7 +2046,7 @@
assert(name != NULL);
assert(pai != NULL);
- if (!*hostf && !(*hostf = fopen(_PATH_HOSTS, "r" )))
+ if (!*hostf && !(*hostf = fopen(_PATH_HOSTS, "re")))
return (NULL);
again:
if (!(p = fgets(hostbuf, sizeof hostbuf, *hostf)))
diff --git a/libc/dns/net/services.h b/libc/dns/net/services.h
index fa199d0..7f748f7 100644
--- a/libc/dns/net/services.h
+++ b/libc/dns/net/services.h
@@ -30,8 +30,8 @@
\6tacacs\0\61u\0\
\12re-mail-ck\0\62t\0\
\12re-mail-ck\0\62u\0\
-\6domain\0\65t\1\12nameserver\
-\6domain\0\65u\1\12nameserver\
+\6domain\0\65t\0\
+\6domain\0\65u\0\
\3mtp\0\71t\0\
\11tacacs-ds\0\101t\0\
\11tacacs-ds\0\101u\0\
@@ -44,8 +44,8 @@
\6gopher\0\106u\0\
\3rje\0\115t\1\6netrjs\
\6finger\0\117t\0\
-\3www\0\120t\1\4http\
-\3www\0\120u\0\
+\4http\0\120t\1\3www\
+\4http\0\120u\0\
\4link\0\127t\1\7ttylink\
\10kerberos\0\130t\3\11kerberos5\4krb5\14kerberos-sec\
\10kerberos\0\130u\3\11kerberos5\4krb5\14kerberos-sec\
@@ -138,12 +138,16 @@
\4ldap\1\205u\0\
\4imsp\1\226t\0\
\4imsp\1\226u\0\
+\6svrloc\1\253t\0\
+\6svrloc\1\253u\0\
\5https\1\273t\0\
\5https\1\273u\0\
\4snpp\1\274t\0\
\4snpp\1\274u\0\
\14microsoft-ds\1\275t\0\
\14microsoft-ds\1\275u\0\
+\7kpasswd\1\320t\0\
+\7kpasswd\1\320u\0\
\4saft\1\347t\0\
\4saft\1\347u\0\
\6isakmp\1\364t\0\
@@ -158,6 +162,8 @@
\10npmp-gui\2\143u\1\14dqs313_execd\
\10hmmp-ind\2\144t\1\20dqs313_intercell\
\10hmmp-ind\2\144u\1\20dqs313_intercell\
+\4qmqp\2\164t\0\
+\4qmqp\2\164u\0\
\3ipp\2\167t\0\
\3ipp\2\167u\0\
\4exec\2\0t\0\
@@ -181,8 +187,14 @@
\4uucp\2\34t\1\5uucpd\
\6klogin\2\37t\0\
\6kshell\2\40t\1\5krcmd\
+\15dhcpv6-client\2\42t\0\
+\15dhcpv6-client\2\42u\0\
+\15dhcpv6-server\2\43t\0\
+\15dhcpv6-server\2\43u\0\
\12afpovertcp\2\44t\0\
\12afpovertcp\2\44u\0\
+\4idfp\2\45t\0\
+\4idfp\2\45u\0\
\10remotefs\2\54t\2\12rfs_server\3rfs\
\5nntps\2\63t\1\5snntp\
\5nntps\2\63u\1\5snntp\
@@ -239,19 +251,33 @@
\13sa-msg-port\6\156u\1\13old-radacct\
\6kermit\6\161t\0\
\6kermit\6\161u\0\
+\11groupwise\6\215t\0\
+\11groupwise\6\215u\0\
\3l2f\6\245t\1\4l2tp\
\3l2f\6\245u\1\4l2tp\
\6radius\7\24t\0\
\6radius\7\24u\0\
\13radius-acct\7\25t\1\7radacct\
\13radius-acct\7\25u\1\7radacct\
+\4msnp\7\107t\0\
+\4msnp\7\107u\0\
\13unix-status\7\245t\0\
\12log-server\7\246t\0\
\12remoteping\7\247t\0\
+\12cisco-sccp\7\320t\0\
+\12cisco-sccp\7\320u\0\
+\6search\7\332t\1\4ndtp\
+\13pipe-server\7\332t\1\13pipe_server\
\3nfs\10\1t\0\
\3nfs\10\1u\0\
+\6gnunet\10\46t\0\
+\6gnunet\10\46u\0\
\12rtcm-sc104\10\65t\0\
\12rtcm-sc104\10\65u\0\
+\15gsigatekeeper\10\107t\0\
+\15gsigatekeeper\10\107u\0\
+\4gris\10\127t\0\
+\4gris\10\127u\0\
\12cvspserver\11\141t\0\
\12cvspserver\11\141u\0\
\5venus\11\176t\0\
@@ -266,10 +292,14 @@
\3mon\12\27u\0\
\4dict\12\104t\0\
\4dict\12\104u\0\
+\15f5-globalsite\12\350t\0\
+\15f5-globalsite\12\350u\0\
+\6gsiftp\12\373t\0\
+\6gsiftp\12\373u\0\
\4gpsd\13\203t\0\
\4gpsd\13\203u\0\
-\6gds_db\13\352t\0\
-\6gds_db\13\352u\0\
+\6gds-db\13\352t\1\6gds_db\
+\6gds-db\13\352u\1\6gds_db\
\5icpv2\14\72t\1\3icp\
\5icpv2\14\72u\1\3icp\
\5mysql\14\352t\0\
@@ -282,24 +312,49 @@
\4daap\16\151u\0\
\3svn\16\152t\1\12subversion\
\3svn\16\152u\1\12subversion\
+\5suucp\17\277t\0\
+\5suucp\17\277u\0\
+\6sysrqd\17\376t\0\
+\6sysrqd\17\376u\0\
+\5sieve\20\136t\0\
+\4epmd\21\21t\0\
+\4epmd\21\21u\0\
+\6remctl\21\25t\0\
+\6remctl\21\25u\0\
+\11f5-iquery\21\1t\0\
+\11f5-iquery\21\1u\0\
\3iax\21\331t\0\
\3iax\21\331u\0\
+\3mtn\22\123t\0\
+\3mtn\22\123u\0\
\13radmin-port\23\43t\0\
\13radmin-port\23\43u\0\
\3rfe\23\212u\0\
\3rfe\23\212t\0\
+\4mmcc\23\272t\0\
+\4mmcc\23\272u\0\
\3sip\23\304t\0\
\3sip\23\304u\0\
\7sip-tls\23\305t\0\
\7sip-tls\23\305u\0\
+\3aol\24\106t\0\
+\3aol\24\106u\0\
\13xmpp-client\24\146t\1\15jabber-client\
\13xmpp-client\24\146u\1\15jabber-client\
\13xmpp-server\24\225t\1\15jabber-server\
\13xmpp-server\24\225u\1\15jabber-server\
\10cfengine\24\274t\0\
\10cfengine\24\274u\0\
+\4mdns\24\351t\0\
+\4mdns\24\351u\0\
\12postgresql\25\70t\1\10postgres\
\12postgresql\25\70u\1\10postgres\
+\7freeciv\25\264t\1\4rptp\
+\7freeciv\25\264u\0\
+\4amqp\26\50t\0\
+\4amqp\26\50u\0\
+\3ggz\26\70t\0\
+\3ggz\26\70u\0\
\3x11\27\160t\1\5x11-0\
\3x11\27\160u\1\5x11-0\
\5x11-1\27\161t\0\
@@ -320,6 +375,12 @@
\14gnutella-svc\30\312u\0\
\14gnutella-rtr\30\313t\0\
\14gnutella-rtr\30\313u\0\
+\13sge-qmaster\31\54t\1\13sge_qmaster\
+\13sge-qmaster\31\54u\1\13sge_qmaster\
+\11sge-execd\31\55t\1\11sge_execd\
+\11sge-execd\31\55u\1\11sge_execd\
+\13mysql-proxy\31\56t\0\
+\13mysql-proxy\31\56u\0\
\17afs3-fileserver\33\130t\1\3bbs\
\17afs3-fileserver\33\130u\1\3bbs\
\15afs3-callback\33\131t\0\
@@ -342,12 +403,21 @@
\13afs3-rmtsys\33\141u\0\
\14font-service\33\274t\1\3xfs\
\14font-service\33\274u\1\3xfs\
+\10http-alt\37\220t\1\10webcache\
+\10http-alt\37\220u\0\
\12bacula-dir\43\215t\0\
\12bacula-dir\43\215u\0\
\11bacula-fd\43\216t\0\
\11bacula-fd\43\216u\0\
\11bacula-sd\43\217t\0\
\11bacula-sd\43\217u\0\
+\5xmms2\45\303t\0\
+\5xmms2\45\303u\0\
+\3nbd\52\71t\0\
+\14zabbix-agent\47\102t\0\
+\14zabbix-agent\47\102u\0\
+\16zabbix-trapper\47\103t\0\
+\16zabbix-trapper\47\103u\0\
\6amanda\47\140t\0\
\6amanda\47\140u\0\
\3hkp\54\153t\0\
@@ -364,16 +434,17 @@
\4bpcd\65\326u\0\
\6vopied\65\327t\0\
\6vopied\65\327u\0\
+\4dcap\126\155t\0\
+\7gsidcap\126\160t\0\
\4wnn6\127\1t\0\
\4wnn6\127\1u\0\
\11kerberos4\2\356u\2\13kerberos-iv\3kdc\
\11kerberos4\2\356t\2\13kerberos-iv\3kdc\
-\17kerberos_master\2\357u\0\
-\17kerberos_master\2\357t\0\
-\15passwd_server\2\360u\0\
-\10krb_prop\2\362t\2\11krb5_prop\5hprop\
+\17kerberos-master\2\357u\1\17kerberos_master\
+\17kerberos-master\2\357t\0\
+\15passwd-server\2\360u\1\15passwd_server\
+\10krb-prop\2\362t\3\10krb_prop\11krb5_prop\5hprop\
\11krbupdate\2\370t\1\4kreg\
-\7kpasswd\2\371t\1\4kpwd\
\4swat\3\205t\0\
\4kpop\4\125t\0\
\5knetd\10\5t\0\
@@ -389,9 +460,9 @@
\10poppassd\0\152t\0\
\10poppassd\0\152u\0\
\5ssmtp\1\321t\1\5smtps\
-\10moira_db\3\7t\0\
-\14moira_update\3\11t\0\
-\12moira_ureg\3\13u\0\
+\10moira-db\3\7t\1\10moira_db\
+\14moira-update\3\11t\1\14moira_update\
+\12moira-ureg\3\13u\1\12moira_ureg\
\5spamd\3\17t\0\
\5omirr\3\50t\1\6omirrd\
\5omirr\3\50u\1\6omirrd\
@@ -404,9 +475,7 @@
\4xtel\5\41t\0\
\5xtelw\5\42t\0\
\7support\5\371t\0\
-\5sieve\7\320t\0\
\7cfinger\7\323t\0\
-\4ndtp\7\332t\0\
\4frox\10\111t\0\
\10ninstall\10\146t\0\
\10ninstall\10\146u\0\
@@ -436,9 +505,7 @@
\7hostmon\24\353t\0\
\7hostmon\24\353u\0\
\5rplay\25\263u\0\
-\5rplay\25\263t\0\
-\4rptp\25\264u\0\
-\4rptp\25\264t\0\
+\4nrpe\26\42t\0\
\4nsca\26\43t\0\
\4mrtd\26\52t\0\
\6bgpsim\26\53t\0\
@@ -446,14 +513,15 @@
\11sane-port\31\246t\2\4sane\5saned\
\4ircd\32\13t\0\
\10zope-ftp\37\125t\0\
-\10webcache\37\220t\0\
\6tproxy\37\221t\0\
\7omniorb\37\230t\0\
\7omniorb\37\230u\0\
\20clc-build-daemon\43\36t\0\
\6xinetd\43\212t\0\
\13mandelspawn\44\217u\1\12mandelbrot\
+\3git\44\312t\0\
\4zope\45\311t\0\
+\6webmin\47\20t\0\
\7kamanda\47\141t\0\
\7kamanda\47\141u\0\
\11amandaidx\47\142t\0\
@@ -473,6 +541,7 @@
\5binkp\137\352t\0\
\3asp\152\356t\0\
\3asp\152\356u\0\
+\6csync2\170\221t\0\
\11dircproxy\336\250t\0\
\5tfido\353\21t\0\
\4fido\353\23t\0\
diff --git a/libc/dns/resolv/__dn_comp.c b/libc/dns/resolv/__dn_comp.c
deleted file mode 100644
index 93d3f19..0000000
--- a/libc/dns/resolv/__dn_comp.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* $NetBSD: __dn_comp.c,v 1.4 2005/09/13 01:44:10 christos Exp $ */
-
-/*
- * written by matthew green, 22/04/97.
- * public domain.
- */
-
-#include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: __dn_comp.c,v 1.4 2005/09/13 01:44:10 christos Exp $");
-#endif /* LIBC_SCCS and not lint */
-
-#if defined(__indr_reference)
-__indr_reference(__dn_comp,dn_comp)
-#else
-
-#include <sys/types.h>
-#include <netinet/in.h>
-#ifdef ANDROID_CHANGES
-#include "resolv_private.h"
-#else
-#include <resolv.h>
-#endif
-
-/* XXX THIS IS A MESS! SEE <resolv.h> XXX */
-
-#undef dn_comp
-int dn_comp(const char *, u_char *, int, u_char **, u_char **);
-
-int
-dn_comp(const char *exp_dn, u_char *comp_dn, u_char **dnptrs,
- u_char **lastdnptr, int length)
-{
-
- return __dn_comp(exp_dn, comp_dn, length, dnptrs, lastdnptr);
-}
-
-#endif
diff --git a/libc/dns/resolv/__res_close.c b/libc/dns/resolv/__res_close.c
deleted file mode 100644
index 3af50b0..0000000
--- a/libc/dns/resolv/__res_close.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* $NetBSD: __res_close.c,v 1.4 2005/09/13 01:44:10 christos Exp $ */
-
-/*
- * written by matthew green, 22/04/97.
- * public domain.
- */
-
-#include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: __res_close.c,v 1.4 2005/09/13 01:44:10 christos Exp $");
-#endif /* LIBC_SCCS and not lint */
-
-#if defined(__indr_reference)
-__indr_reference(__res_close, res_close)
-#else
-
-#include <sys/types.h>
-#include <netinet/in.h>
-#include "resolv_private.h"
-
-/* XXX THIS IS A MESS! SEE <resolv.h> XXX */
-
-#undef res_close
-void res_close(void);
-
-void
-res_close(void)
-{
-
- __res_close();
-}
-
-#endif
diff --git a/libc/dns/resolv/__res_send.c b/libc/dns/resolv/__res_send.c
deleted file mode 100644
index 198b05c..0000000
--- a/libc/dns/resolv/__res_send.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* $NetBSD: __res_send.c,v 1.4 2005/09/13 01:44:10 christos Exp $ */
-
-/*
- * written by matthew green, 22/04/97.
- * public domain.
- */
-
-#include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: __res_send.c,v 1.4 2005/09/13 01:44:10 christos Exp $");
-#endif
-
-#if defined(__indr_reference)
-__indr_reference(__res_send, res_send)
-#else
-
-#include <sys/types.h>
-#include <netinet/in.h>
-#ifdef ANDROID_CHANGES
-#include "resolv_private.h"
-#else
-#include <resolv.h>
-#endif
-
-/* XXX THIS IS A MESS! SEE <resolv.h> XXX */
-
-#undef res_send
-int res_send(const u_char *, int, u_char *, int);
-
-int
-res_send(const u_char *buf, int buflen, u_char *ans, int anssiz)
-{
-
- return __res_send(buf, buflen, ans, anssiz);
-}
-
-#endif
diff --git a/libc/dns/resolv/res_cache.c b/libc/dns/resolv/res_cache.c
index 6f1fcd3..9ca5419 100644
--- a/libc/dns/resolv/res_cache.c
+++ b/libc/dns/resolv/res_cache.c
@@ -1436,7 +1436,7 @@
char* buf;
int fileLen;
- fp = fopen("/data/reslog.txt", "w+");
+ fp = fopen("/data/reslog.txt", "w+e");
if (fp != NULL) {
statep = __res_get_state();
diff --git a/libc/dns/resolv/res_init.c b/libc/dns/resolv/res_init.c
index f1cbed8..713b6e0 100644
--- a/libc/dns/resolv/res_init.c
+++ b/libc/dns/resolv/res_init.c
@@ -289,7 +289,7 @@
line[sizeof(name) - 1] == '\t'))
nserv = 0;
- if ((fp = fopen(_PATH_RESCONF, "r")) != NULL) {
+ if ((fp = fopen(_PATH_RESCONF, "re")) != NULL) {
/* read the config file */
while (fgets(buf, sizeof(buf), fp) != NULL) {
/* skip comments */
@@ -616,47 +616,6 @@
}
#endif
-#ifdef ANDROID_CHANGES
-static int
-real_randomid(u_int *random_value) {
- /* open the nonblocking random device, returning -1 on failure */
- int random_device = open("/dev/urandom", O_RDONLY | O_CLOEXEC);
- if (random_device < 0) {
- return -1;
- }
-
- /* read from the random device, returning -1 on failure (or too many retries)*/
- for (u_int retry = 5; retry > 0; retry--) {
- int retval = read(random_device, random_value, sizeof(u_int));
- if (retval == sizeof(u_int)) {
- *random_value &= 0xffff;
- close(random_device);
- return 0;
- } else if ((retval < 0) && (errno != EINTR)) {
- break;
- }
- }
-
- close(random_device);
- return -1;
-}
-#endif /* ANDROID_CHANGES */
-
-u_int
-res_randomid(void) {
-#ifdef ANDROID_CHANGES
- int status = 0;
- u_int output = 0;
- status = real_randomid(&output);
- if (status != -1) {
- return output;
- }
-#endif /* ANDROID_CHANGES */
- struct timeval now;
- gettimeofday(&now, NULL);
- return (0xffff & (now.tv_sec ^ now.tv_usec ^ getpid()));
-}
-
/*%
* This routine is for closing the socket if a virtual circuit is used and
* the program wants to close it. This provides support for endhostent()
diff --git a/libc/arch-arm/bionic/__get_sp.S b/libc/include/android/set_abort_message.h
similarity index 83%
rename from libc/arch-arm/bionic/__get_sp.S
rename to libc/include/android/set_abort_message.h
index 9ae6f24..4b3d82b 100644
--- a/libc/arch-arm/bionic/__get_sp.S
+++ b/libc/include/android/set_abort_message.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2014 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,9 +26,15 @@
* SUCH DAMAGE.
*/
-#include <private/bionic_asm.h>
+#ifndef _SET_ABORT_MESSAGE_H
+#define _SET_ABORT_MESSAGE_H
-ENTRY_PRIVATE(__get_sp)
- mov r0, sp
- bx lr
-END(__get_sp)
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+void android_set_abort_message(const char* msg);
+
+__END_DECLS
+
+#endif // _SET_ABORT_MESSAGE_H
diff --git a/libc/include/arpa/inet.h b/libc/include/arpa/inet.h
index 067be1f..86265bf 100644
--- a/libc/include/arpa/inet.h
+++ b/libc/include/arpa/inet.h
@@ -25,6 +25,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
#ifndef _ARPA_INET_H_
#define _ARPA_INET_H_
@@ -34,8 +35,6 @@
__BEGIN_DECLS
-typedef uint32_t in_addr_t;
-
in_addr_t inet_addr(const char*);
int inet_aton(const char*, struct in_addr*);
in_addr_t inet_lnaof(struct in_addr);
diff --git a/libc/include/elf.h b/libc/include/elf.h
index faae73e..7a9485a 100644
--- a/libc/include/elf.h
+++ b/libc/include/elf.h
@@ -80,6 +80,4 @@
#define STT_LOPROC 13
#define STT_HIPROC 15
-#define R_386_IRELATIVE 42
-
#endif /* _ELF_H */
diff --git a/libc/include/fcntl.h b/libc/include/fcntl.h
index 4450bb6..32557d9 100644
--- a/libc/include/fcntl.h
+++ b/libc/include/fcntl.h
@@ -82,9 +82,9 @@
#if defined(__BIONIC_FORTIFY)
extern int __open_2(const char*, int);
-extern int __open_real(const char*, int, ...) __asm__(__USER_LABEL_PREFIX__ "open");
+extern int __open_real(const char*, int, ...) __RENAME(open);
extern int __openat_2(int, const char*, int);
-extern int __openat_real(int, const char*, int, ...) __asm__(__USER_LABEL_PREFIX__ "openat");
+extern int __openat_real(int, const char*, int, ...) __RENAME(openat);
__errordecl(__creat_missing_mode, "called with O_CREAT, but missing mode");
__errordecl(__creat_too_many_args, "too many arguments");
diff --git a/libc/include/features.h b/libc/include/features.h
index 343c84d..a279c7f 100644
--- a/libc/include/features.h
+++ b/libc/include/features.h
@@ -25,34 +25,11 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
#ifndef _FEATURES_H_
#define _FEATURES_H_
-/* certain Linux-specific programs expect a <features.h> header file
- * that defines various features macros
- */
-
-/* we do include a number of BSD extensions */
-#define _BSD_SOURCE 1
-
-/* we do include a number of GNU extensions */
-#define _GNU_SOURCE 1
-
-/* C95 support */
-#undef __USE_ISOC95
-#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L
-# define __USE_ISOC95 1
-#endif
-
-/* C99 support */
-#undef __USE_ISOC99
-#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
-# define __USE_ISOC99 1
-#endif
-
-/* Posix support */
-#define __USE_POSIX 1
-#define __USE_POSIX2 1
-#define __USE_XPG 1
+/* Our <features.h> macro fun is all in <sys/cdefs.h>. */
+#include <sys/cdefs.h>
#endif /* _FEATURES_H_ */
diff --git a/libc/include/libgen.h b/libc/include/libgen.h
index c5fc76a..e89328e 100644
--- a/libc/include/libgen.h
+++ b/libc/include/libgen.h
@@ -25,6 +25,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
#ifndef _LIBGEN_H
#define _LIBGEN_H
@@ -33,24 +34,25 @@
__BEGIN_DECLS
-/* our version of dirname/basename don't modify the input path */
-extern char* dirname (const char* path);
-extern char* basename(const char* path);
-
-/* special thread-safe Bionic versions
- *
- * if 'buffer' is NULL, 'bufflen' is ignored and the length of the result is returned
- * otherwise, place result in 'buffer'
- *
- * at most bufflen-1 characters written, plus a terminating zero
- *
- * return length of result, or -1 in case of error, with errno set to:
- *
- * ERANGE: buffer is too short
- * ENAMETOOLONG: the result is too long for a valid path
+#if !defined(__bionic_using_gnu_basename)
+/*
+ * <string.h> gets you the GNU basename.
+ * <libgen.h> the POSIX one.
+ * Note that our "POSIX" one has the wrong argument cv-qualifiers, but doesn't
+ * modify its input and uses thread-local storage for the result if necessary.
*/
-extern int dirname_r(const char* path, char* buffer, size_t bufflen);
-extern int basename_r(const char* path, char* buffer, size_t bufflen);
+extern char* basename(const char*);
+#define __bionic_using_posix_basename
+#endif
+
+/* This has the wrong argument cv-qualifiers, but doesn't modify its input and uses thread-local storage for the result if necessary. */
+extern char* dirname(const char*);
+
+#if !defined(__LP64__)
+/* These non-standard functions are not needed on Android; basename and dirname use thread-local storage. */
+extern int dirname_r(const char*, char*, size_t);
+extern int basename_r(const char*, char*, size_t);
+#endif
__END_DECLS
diff --git a/libc/include/malloc.h b/libc/include/malloc.h
index e6ea276..cb1dd3b 100644
--- a/libc/include/malloc.h
+++ b/libc/include/malloc.h
@@ -24,6 +24,7 @@
*/
#include <sys/cdefs.h>
#include <stddef.h>
+#include <stdio.h>
__BEGIN_DECLS
@@ -53,6 +54,27 @@
extern struct mallinfo mallinfo(void);
+/*
+ * XML structure for malloc_info(3) is in the following format:
+ *
+ * <malloc version="jemalloc-1">
+ * <heap nr="INT">
+ * <allocated-large>INT</allocated-large>
+ * <allocated-huge>INT</allocated-huge>
+ * <allocated-bins>INT</allocated-bins>
+ * <bins-total>INT</bins-total>
+ * <bin nr="INT">
+ * <allocated>INT</allocated>
+ * <nmalloc>INT</nmalloc>
+ * <ndalloc>INT</ndalloc>
+ * </bin>
+ * <!-- more bins -->
+ * </heap>
+ * <!-- more heaps -->
+ * </malloc>
+ */
+extern int malloc_info(int, FILE *);
+
__END_DECLS
#endif /* LIBC_INCLUDE_MALLOC_H_ */
diff --git a/libc/include/netinet/in.h b/libc/include/netinet/in.h
index bf3b498..44c7fc1 100644
--- a/libc/include/netinet/in.h
+++ b/libc/include/netinet/in.h
@@ -25,6 +25,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
#ifndef _NETINET_IN_H_
#define _NETINET_IN_H_
@@ -43,6 +44,9 @@
#define INET_ADDRSTRLEN 16
+typedef uint16_t in_port_t;
+typedef uint32_t in_addr_t;
+
extern int bindresvport (int sd, struct sockaddr_in *sin);
static const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
diff --git a/libc/include/sched.h b/libc/include/sched.h
index e43b6cc..6155ab7 100644
--- a/libc/include/sched.h
+++ b/libc/include/sched.h
@@ -52,7 +52,7 @@
extern int sched_getparam(pid_t, struct sched_param*);
extern int sched_rr_get_interval(pid_t, struct timespec*);
-#ifdef _GNU_SOURCE
+#if defined(__USE_GNU)
extern int clone(int (*)(void*), void*, int, void*, ...);
extern int unshare(int);
@@ -146,7 +146,7 @@
extern int __sched_cpucount(size_t setsize, cpu_set_t* set);
-#endif /* _GNU_SOURCE */
+#endif /* __USE_GNU */
__END_DECLS
diff --git a/libc/include/stdatomic.h b/libc/include/stdatomic.h
index 669cefd..3db25a7 100644
--- a/libc/include/stdatomic.h
+++ b/libc/include/stdatomic.h
@@ -31,17 +31,142 @@
#define _STDATOMIC_H_
#include <sys/cdefs.h>
+
+
+#if defined(__cplusplus) && defined(_USING_LIBCXX)
+# ifdef __clang__
+# if __has_feature(cxx_atomic)
+# define _STDATOMIC_HAVE_ATOMIC
+# endif
+# else /* gcc */
+# if __GNUC_PREREQ(4, 7)
+# define _STDATOMIC_HAVE_ATOMIC
+# endif
+# endif
+#endif
+
+#ifdef _STDATOMIC_HAVE_ATOMIC
+
+/* We have a usable C++ <atomic>; use it instead. */
+
+#include <atomic>
+
+#undef _Atomic
+ /* Also defined by <atomic> for gcc. But not used in macros. */
+ /* Also a clang intrinsic. */
+ /* Should not be used by client code before this file is */
+ /* included. The definitions in <atomic> themselves see */
+ /* the old definition, as they should. */
+ /* Client code sees the following definition. */
+
+#define _Atomic(t) std::atomic<t>
+
+using std::atomic_is_lock_free;
+using std::atomic_init;
+using std::atomic_store;
+using std::atomic_store_explicit;
+using std::atomic_load;
+using std::atomic_load_explicit;
+using std::atomic_exchange;
+using std::atomic_exchange_explicit;
+using std::atomic_compare_exchange_strong;
+using std::atomic_compare_exchange_strong_explicit;
+using std::atomic_compare_exchange_weak;
+using std::atomic_compare_exchange_weak_explicit;
+using std::atomic_fetch_add;
+using std::atomic_fetch_add_explicit;
+using std::atomic_fetch_sub;
+using std::atomic_fetch_sub_explicit;
+using std::atomic_fetch_or;
+using std::atomic_fetch_or_explicit;
+using std::atomic_fetch_xor;
+using std::atomic_fetch_xor_explicit;
+using std::atomic_fetch_and;
+using std::atomic_fetch_and_explicit;
+using std::atomic_thread_fence;
+using std::atomic_signal_fence;
+
+using std::memory_order;
+using std::memory_order_relaxed;
+using std::memory_order_consume;
+using std::memory_order_release;
+using std::memory_order_acq_rel;
+using std::memory_order_seq_cst;
+
+using std::atomic_bool;
+using std::atomic_char;
+using std::atomic_schar;
+using std::atomic_uchar;
+using std::atomic_short;
+using std::atomic_ushort;
+using std::atomic_int;
+using std::atomic_uint;
+using std::atomic_long;
+using std::atomic_ulong;
+using std::atomic_llong;
+using std::atomic_ullong;
+using std::atomic_char16_t;
+using std::atomic_char32_t;
+using std::atomic_wchar_t;
+using std::atomic_int_least8_t;
+using std::atomic_uint_least8_t;
+using std::atomic_int_least16_t;
+using std::atomic_uint_least16_t;
+using std::atomic_int_least32_t;
+using std::atomic_uint_least32_t;
+using std::atomic_int_least64_t;
+using std::atomic_uint_least64_t;
+using std::atomic_int_fast8_t;
+using std::atomic_uint_fast8_t;
+using std::atomic_int_fast16_t;
+using std::atomic_uint_fast16_t;
+using std::atomic_int_fast32_t;
+using std::atomic_uint_fast32_t;
+using std::atomic_int_fast64_t;
+using std::atomic_uint_fast64_t;
+using std::atomic_intptr_t;
+using std::atomic_uintptr_t;
+using std::atomic_size_t;
+using std::atomic_ptrdiff_t;
+using std::atomic_intmax_t;
+using std::atomic_uintmax_t;
+
+#else /* <atomic> unavailable, possibly because this is C, not C++ */
+
#include <sys/types.h>
#include <stdbool.h>
-#if __has_extension(c_atomic) || __has_extension(cxx_atomic)
-#define __CLANG_ATOMICS
-#elif __GNUC_PREREQ__(4, 7)
-#define __GNUC_ATOMICS
-#elif defined(__GNUC__)
-#define __SYNC_ATOMICS
+/*
+ * C: Do it ourselves.
+ * Note that the runtime representation defined here should be compatible
+ * with the C++ one, i.e. an _Atomic(T) needs to contain the same
+ * bits as a T.
+ */
+
+#include <stddef.h> /* For ptrdiff_t. */
+#include <stdint.h> /* TODO: Should pollute namespace less. */
+#if __STDC_VERSION__ >= 201112L
+# include <uchar.h> /* For char16_t and char32_t. */
+#endif
+
+#ifdef __clang__
+# if __has_extension(c_atomic) || __has_extension(cxx_atomic)
+# define __CLANG_ATOMICS
+# else
+# error "stdatomic.h does not support your compiler"
+# endif
+# if __has_builtin(__sync_swap)
+# define __HAS_BUILTIN_SYNC_SWAP
+# endif
#else
-#error "stdatomic.h does not support your compiler"
+# if __GNUC_PREREQ(4, 7)
+# define __GNUC_ATOMICS
+# else
+# define __SYNC_ATOMICS
+# ifdef __cplusplus
+# define __ATOMICS_AVOID_DOT_INIT
+# endif
+# endif
#endif
/*
@@ -50,33 +175,53 @@
#ifdef __GCC_ATOMIC_BOOL_LOCK_FREE
#define ATOMIC_BOOL_LOCK_FREE __GCC_ATOMIC_BOOL_LOCK_FREE
+#elif defined(__SYNC_ATOMICS)
+#define ATOMIC_BOOL_LOCK_FREE 2 /* For all modern platforms */
#endif
#ifdef __GCC_ATOMIC_CHAR_LOCK_FREE
#define ATOMIC_CHAR_LOCK_FREE __GCC_ATOMIC_CHAR_LOCK_FREE
+#elif defined(__SYNC_ATOMICS)
+#define ATOMIC_CHAR_LOCK_FREE 2
#endif
#ifdef __GCC_ATOMIC_CHAR16_T_LOCK_FREE
#define ATOMIC_CHAR16_T_LOCK_FREE __GCC_ATOMIC_CHAR16_T_LOCK_FREE
+#elif defined(__SYNC_ATOMICS)
+#define ATOMIC_CHAR16_T_LOCK_FREE 2
#endif
#ifdef __GCC_ATOMIC_CHAR32_T_LOCK_FREE
#define ATOMIC_CHAR32_T_LOCK_FREE __GCC_ATOMIC_CHAR32_T_LOCK_FREE
+#elif defined(__SYNC_ATOMICS)
+#define ATOMIC_CHAR32_T_LOCK_FREE 2
#endif
#ifdef __GCC_ATOMIC_WCHAR_T_LOCK_FREE
#define ATOMIC_WCHAR_T_LOCK_FREE __GCC_ATOMIC_WCHAR_T_LOCK_FREE
+#elif defined(__SYNC_ATOMICS)
+#define ATOMIC_WCHAR_T_LOCK_FREE 2
#endif
#ifdef __GCC_ATOMIC_SHORT_LOCK_FREE
#define ATOMIC_SHORT_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE
+#elif defined(__SYNC_ATOMICS)
+#define ATOMIC_SHORT_LOCK_FREE 2
#endif
#ifdef __GCC_ATOMIC_INT_LOCK_FREE
#define ATOMIC_INT_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE
+#elif defined(__SYNC_ATOMICS)
+#define ATOMIC_INT_LOCK_FREE 2
#endif
#ifdef __GCC_ATOMIC_LONG_LOCK_FREE
#define ATOMIC_LONG_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE
+#elif defined(__SYNC_ATOMICS)
+#define ATOMIC_LONG_LOCK_FREE 2
#endif
#ifdef __GCC_ATOMIC_LLONG_LOCK_FREE
#define ATOMIC_LLONG_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE
+#elif defined(__SYNC_ATOMICS)
+#define ATOMIC_LLONG_LOCK_FREE 1 /* maybe */
#endif
#ifdef __GCC_ATOMIC_POINTER_LOCK_FREE
#define ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE
+#elif defined(__SYNC_ATOMICS)
+#define ATOMIC_POINTER_LOCK_FREE 2
#endif
/*
@@ -87,7 +232,11 @@
#define ATOMIC_VAR_INIT(value) (value)
#define atomic_init(obj, value) __c11_atomic_init(obj, value)
#else
+#ifdef __ATOMICS_AVOID_DOT_INIT
+#define ATOMIC_VAR_INIT(value) { value }
+#else
#define ATOMIC_VAR_INIT(value) { .__val = (value) }
+#endif
#define atomic_init(obj, value) ((void)((obj)->__val = (value)))
#endif
@@ -121,6 +270,8 @@
*
* The memory_order_* constants that denote the barrier behaviour of the
* atomic operations.
+ * The enum values must be identical to those used by the
+ * C++ <atomic> header.
*/
typedef enum {
@@ -137,7 +288,7 @@
*/
static __inline void
-atomic_thread_fence(memory_order __order __unused)
+atomic_thread_fence(memory_order __order __attribute__((unused)))
{
#ifdef __CLANG_ATOMICS
@@ -150,7 +301,7 @@
}
static __inline void
-atomic_signal_fence(memory_order __order __unused)
+atomic_signal_fence(memory_order __order __attribute__((unused)))
{
#ifdef __CLANG_ATOMICS
@@ -172,7 +323,7 @@
((void)(obj), (_Bool)1)
#elif defined(__CLANG_ATOMICS)
#define atomic_is_lock_free(obj) \
- __atomic_is_lock_free(sizeof(*(obj)), obj)
+ __c11_atomic_is_lock_free(sizeof(*(obj)))
#elif defined(__GNUC_ATOMICS)
#define atomic_is_lock_free(obj) \
__atomic_is_lock_free(sizeof((obj)->__val), &(obj)->__val)
@@ -185,7 +336,7 @@
* 7.17.6 Atomic integer types.
*/
-#if !__has_extension(c_atomic) && !__has_extension(cxx_atomic)
+#ifndef __CLANG_ATOMICS
/*
* No native support for _Atomic(). Place object in structure to prevent
* most forms of direct non-atomic access.
@@ -306,7 +457,7 @@
desired, success, failure) \
atomic_compare_exchange_strong_explicit(object, expected, \
desired, success, failure)
-#if __has_builtin(__sync_swap)
+#ifdef __HAS_BUILTIN_SYNC_SWAP
/* Clang provides a full-barrier atomic exchange - use it if available. */
#define atomic_exchange_explicit(object, desired, order) \
((void)(order), __sync_swap(&(object)->__val, desired))
@@ -386,7 +537,7 @@
atomic_bool __flag;
} atomic_flag;
-#define ATOMIC_FLAG_INIT { ATOMIC_VAR_INIT(0) }
+#define ATOMIC_FLAG_INIT { ATOMIC_VAR_INIT(false) }
static __inline bool
atomic_flag_test_and_set_explicit(volatile atomic_flag *__object,
@@ -419,4 +570,6 @@
}
#endif /* !_KERNEL */
+#endif /* <atomic> unavailable */
+
#endif /* !_STDATOMIC_H_ */
diff --git a/libc/include/stdio.h b/libc/include/stdio.h
index 74e5732..ce60fd7 100644
--- a/libc/include/stdio.h
+++ b/libc/include/stdio.h
@@ -325,6 +325,11 @@
int putchar_unlocked(int);
#endif /* __POSIX_VISIBLE >= 199506 */
+#if __POSIX_VISIBLE >= 200809
+FILE* fmemopen(void*, size_t, const char*);
+FILE* open_memstream(char**, size_t*);
+#endif /* __POSIX_VISIBLE >= 200809 */
+
__END_DECLS
#endif /* __BSD_VISIBLE || __POSIX_VISIBLE || __XPG_VISIBLE */
@@ -343,6 +348,11 @@
int vasprintf(char ** __restrict, const char * __restrict,
__va_list)
__printflike(2, 0);
+
+void clearerr_unlocked(FILE*);
+int feof_unlocked(FILE*);
+int ferror_unlocked(FILE*);
+
__END_DECLS
/*
@@ -408,7 +418,7 @@
#endif
extern char* __fgets_chk(char*, int, FILE*, size_t);
-extern char* __fgets_real(char*, int, FILE*) __asm__(__USER_LABEL_PREFIX__ "fgets");
+extern char* __fgets_real(char*, int, FILE*) __RENAME(fgets);
__errordecl(__fgets_too_big_error, "fgets called with size bigger than buffer");
__errordecl(__fgets_too_small_error, "fgets called with size less than zero");
diff --git a/libc/arch-arm/bionic/__get_sp.S b/libc/include/stdio_ext.h
similarity index 71%
copy from libc/arch-arm/bionic/__get_sp.S
copy to libc/include/stdio_ext.h
index 9ae6f24..f299e54 100644
--- a/libc/arch-arm/bionic/__get_sp.S
+++ b/libc/include/stdio_ext.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2014 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,9 +26,29 @@
* SUCH DAMAGE.
*/
-#include <private/bionic_asm.h>
+#ifndef _STDIO_EXT_H
+#define _STDIO_EXT_H
-ENTRY_PRIVATE(__get_sp)
- mov r0, sp
- bx lr
-END(__get_sp)
+#include <sys/cdefs.h>
+#include <stdio.h>
+
+#define FSETLOCKING_QUERY 0
+#define FSETLOCKING_INTERNAL 1
+#define FSETLOCKING_BYCALLER 2
+
+__BEGIN_DECLS
+
+size_t __fbufsize(FILE*);
+int __freading(FILE*);
+int __fwriting(FILE*);
+int __freadable(FILE*);
+int __fwritable(FILE*);
+int __flbf(FILE*);
+void __fpurge(FILE*);
+size_t __fpending(FILE*);
+void _flushlbf(void);
+int __fsetlocking(FILE*, int);
+
+__END_DECLS
+
+#endif /* _STDIO_EXT_H */
diff --git a/libc/include/string.h b/libc/include/string.h
index 8df68e3..b0643af 100644
--- a/libc/include/string.h
+++ b/libc/include/string.h
@@ -25,8 +25,9 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-#ifndef _STRING_H_
-#define _STRING_H_
+
+#ifndef _STRING_H
+#define _STRING_H
#include <sys/cdefs.h>
#include <stddef.h>
@@ -66,8 +67,12 @@
extern char* strtok(char* __restrict, const char* __restrict);
extern char* strtok_r(char* __restrict, const char* __restrict, char** __restrict);
-extern char* strerror(int);
-extern int strerror_r(int errnum, char *buf, size_t n);
+extern char* strerror(int);
+#if defined(__USE_GNU)
+extern char* strerror_r(int, char*, size_t) __RENAME(__gnu_strerror_r);
+#else /* POSIX */
+extern int strerror_r(int, char*, size_t);
+#endif
extern size_t strnlen(const char *, size_t) __purefunc;
extern char* strncat(char* __restrict, const char* __restrict, size_t);
@@ -92,6 +97,20 @@
extern int strcoll_l(const char *, const char *, locale_t) __purefunc;
extern size_t strxfrm_l(char* __restrict, const char* __restrict, size_t, locale_t);
+#if defined(__USE_GNU) && !defined(__bionic_using_posix_basename)
+/*
+ * glibc has a basename in <string.h> that's different to the POSIX one in <libgen.h>.
+ * It doesn't modify its argument, and in C++ it's const-correct.
+ */
+#if defined(__cplusplus)
+extern "C++" char* basename(char*) __RENAME(__gnu_basename) __nonnull((1));
+extern "C++" const char* basename(const char*) __RENAME(__gnu_basename) __nonnull((1));
+#else
+extern char* basename(const char*) __RENAME(__gnu_basename) __nonnull((1));
+#endif
+#define __bionic_using_gnu_basename
+#endif
+
#if defined(__BIONIC_FORTIFY)
__BIONIC_FORTIFY_INLINE
@@ -180,8 +199,7 @@
return __builtin___memset_chk(s, c, n, __bos0(s));
}
-extern size_t __strlcpy_real(char* __restrict, const char* __restrict, size_t)
- __asm__(__USER_LABEL_PREFIX__ "strlcpy");
+extern size_t __strlcpy_real(char* __restrict, const char* __restrict, size_t) __RENAME(strlcpy);
extern size_t __strlcpy_chk(char *, const char *, size_t, size_t);
__BIONIC_FORTIFY_INLINE
@@ -204,8 +222,7 @@
return __strlcpy_chk(dest, src, size, bos);
}
-extern size_t __strlcat_real(char* __restrict, const char* __restrict, size_t)
- __asm__(__USER_LABEL_PREFIX__ "strlcat");
+extern size_t __strlcat_real(char* __restrict, const char* __restrict, size_t) __RENAME(strlcat);
extern size_t __strlcat_chk(char* __restrict, const char* __restrict, size_t, size_t);
@@ -291,4 +308,4 @@
__END_DECLS
-#endif /* _STRING_H_ */
+#endif /* _STRING_H */
diff --git a/libc/include/sys/cachectl.h b/libc/include/sys/cachectl.h
index 57e6ae7..a302ff8 100644
--- a/libc/include/sys/cachectl.h
+++ b/libc/include/sys/cachectl.h
@@ -31,6 +31,5 @@
#ifdef __mips__
#include <asm/cachectl.h>
extern int __cachectl (void *addr, __const int nbytes, __const int op);
-extern int _flush_cache (char *addr, __const int nbytes, __const int op);
#endif
#endif /* sys/cachectl.h */
diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h
index 0286616..5082327 100644
--- a/libc/include/sys/cdefs.h
+++ b/libc/include/sys/cdefs.h
@@ -60,18 +60,18 @@
* or later, for e.g. features that appeared in a particular version
* of GNU C. Usage:
*
- * #if __GNUC_PREREQ__(major, minor)
+ * #if __GNUC_PREREQ(major, minor)
* ...cool feature...
* #else
* ...delete feature...
* #endif
*/
#ifdef __GNUC__
-#define __GNUC_PREREQ__(x, y) \
+#define __GNUC_PREREQ(x, y) \
((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) || \
(__GNUC__ > (x)))
#else
-#define __GNUC_PREREQ__(x, y) 0
+#define __GNUC_PREREQ(x, y) 0
#endif
#include <sys/cdefs_elf.h>
@@ -163,7 +163,7 @@
* GCC2 provides __extension__ to suppress warnings for various GNU C
* language extensions under "-ansi -pedantic".
*/
-#if !__GNUC_PREREQ__(2, 0)
+#if !__GNUC_PREREQ(2, 0)
#define __extension__ /* delete __extension__ if non-gcc or gcc1 */
#endif
@@ -175,7 +175,7 @@
* these work for GNU C++ (modulo a slight glitch in the C++ grammar
* in the distribution version of 2.5.5).
*/
-#if !__GNUC_PREREQ__(2, 5)
+#if !__GNUC_PREREQ(2, 5)
#define __attribute__(x) /* delete __attribute__ if non-gcc or gcc1 */
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
#define __dead __volatile
@@ -189,7 +189,7 @@
#define __pure
#endif
-#if __GNUC_PREREQ__(2, 7)
+#if __GNUC_PREREQ(2, 7)
#define __unused __attribute__((__unused__))
#else
#define __unused /* delete */
@@ -197,13 +197,13 @@
#define __pure2 __attribute__((__const__)) /* Android-added: used by FreeBSD libm */
-#if __GNUC_PREREQ__(3, 1)
+#if __GNUC_PREREQ(3, 1)
#define __used __attribute__((__used__))
#else
#define __used /* delete */
#endif
-#if __GNUC_PREREQ__(2, 7)
+#if __GNUC_PREREQ(2, 7)
#define __packed __attribute__((__packed__))
#define __aligned(x) __attribute__((__aligned__(x)))
#define __section(x) __attribute__((__section__(x)))
@@ -217,11 +217,11 @@
#define __section(x) error: no __section for this compiler
#endif
-#if !__GNUC_PREREQ__(2, 8)
+#if !__GNUC_PREREQ(2, 8)
#define __extension__
#endif
-#if __GNUC_PREREQ__(2, 8)
+#if __GNUC_PREREQ(2, 8)
#define __statement(x) __extension__(x)
#elif defined(lint)
#define __statement(x) (0)
@@ -241,7 +241,7 @@
#if defined(__STDC__VERSION__) && __STDC_VERSION__ >= 199901L
#define __restrict restrict
#else
-#if !__GNUC_PREREQ__(2, 92)
+#if !__GNUC_PREREQ(2, 92)
#define __restrict /* delete __restrict when not supported */
#endif
#endif
@@ -251,9 +251,9 @@
* in GCC 2.95.
*/
#if !defined(__STDC_VERSION__) || !(__STDC_VERSION__ >= 199901L)
-#if __GNUC_PREREQ__(2, 6)
+#if __GNUC_PREREQ(2, 6)
#define __func__ __PRETTY_FUNCTION__
-#elif __GNUC_PREREQ__(2, 4)
+#elif __GNUC_PREREQ(2, 4)
#define __func__ __FUNCTION__
#else
#define __func__ ""
@@ -267,26 +267,12 @@
#endif /* NO_KERNEL_RCSIDS */
#endif /* _KERNEL */
-#if !defined(_STANDALONE) && !defined(_KERNEL)
-#ifdef __GNUC__
-#define __RENAME(x) ___RENAME(x)
-#else
-#ifdef __lint__
-#define __RENAME(x) __symbolrename(x)
-#else
-#error "No function renaming possible"
-#endif /* __lint__ */
-#endif /* __GNUC__ */
-#else /* _STANDALONE || _KERNEL */
-#define __RENAME(x) no renaming in kernel or standalone environment
-#endif
-
/*
* A barrier to stop the optimizer from moving code or assume live
* register values. This is gcc specific, the version is more or less
* arbitrary, might work with older compilers.
*/
-#if __GNUC_PREREQ__(2, 95)
+#if __GNUC_PREREQ(2, 95)
#define __insn_barrier() __asm __volatile("":::"memory")
#else
#define __insn_barrier() /* */
@@ -320,7 +306,7 @@
* basic block reordering that this affects can often generate
* larger code.
*/
-#if __GNUC_PREREQ__(2, 96)
+#if __GNUC_PREREQ(2, 96)
#define __predict_true(exp) __builtin_expect((exp) != 0, 1)
#define __predict_false(exp) __builtin_expect((exp) != 0, 0)
#else
@@ -328,7 +314,7 @@
#define __predict_false(exp) (exp)
#endif
-#if __GNUC_PREREQ__(2, 96)
+#if __GNUC_PREREQ(2, 96)
#define __noreturn __attribute__((__noreturn__))
#define __mallocfunc __attribute__((malloc))
#define __purefunc __attribute__((pure))
@@ -338,19 +324,19 @@
#define __purefunc
#endif
-#if __GNUC_PREREQ__(3, 1)
+#if __GNUC_PREREQ(3, 1)
#define __always_inline __attribute__((__always_inline__))
#else
#define __always_inline
#endif
-#if __GNUC_PREREQ__(3, 4)
+#if __GNUC_PREREQ(3, 4)
#define __wur __attribute__((__warn_unused_result__))
#else
#define __wur
#endif
-#if __GNUC_PREREQ__(4, 3)
+#if __GNUC_PREREQ(4, 3)
#define __errordecl(name, msg) extern void name(void) __attribute__((__error__(msg)))
#define __warnattr(msg) __attribute__((__warning__(msg)))
#else
@@ -359,64 +345,42 @@
#endif
/*
- * Macros for manipulating "link sets". Link sets are arrays of pointers
- * to objects, which are gathered up by the linker.
- *
- * Object format-specific code has provided us with the following macros:
- *
- * __link_set_add_text(set, sym)
- * Add a reference to the .text symbol `sym' to `set'.
- *
- * __link_set_add_rodata(set, sym)
- * Add a reference to the .rodata symbol `sym' to `set'.
- *
- * __link_set_add_data(set, sym)
- * Add a reference to the .data symbol `sym' to `set'.
- *
- * __link_set_add_bss(set, sym)
- * Add a reference to the .bss symbol `sym' to `set'.
- *
- * __link_set_decl(set, ptype)
- * Provide an extern declaration of the set `set', which
- * contains an array of the pointer type `ptype'. This
- * macro must be used by any code which wishes to reference
- * the elements of a link set.
- *
- * __link_set_start(set)
- * This points to the first slot in the link set.
- *
- * __link_set_end(set)
- * This points to the (non-existent) slot after the last
- * entry in the link set.
- *
- * __link_set_count(set)
- * Count the number of entries in link set `set'.
- *
- * In addition, we provide the following macros for accessing link sets:
- *
- * __link_set_foreach(pvar, set)
- * Iterate over the link set `set'. Because a link set is
- * an array of pointers, pvar must be declared as "type **pvar",
- * and the actual entry accessed as "*pvar".
- *
- * __link_set_entry(set, idx)
- * Access the link set entry at index `idx' from set `set'.
+ * Some BSD source needs these macros.
+ * Originally they embedded the rcs versions of each source file
+ * in the generated binary. We strip strings during build anyway,.
*/
-#define __link_set_foreach(pvar, set) \
- for (pvar = __link_set_start(set); pvar < __link_set_end(set); pvar++)
-
-#define __link_set_entry(set, idx) (__link_set_begin(set)[idx])
+#define __IDSTRING(_prefix,_s) /* nothing */
+#define __COPYRIGHT(_s) /* nothing */
+#define __FBSDID(_s) /* nothing */
+#define __RCSID(_s) /* nothing */
+#define __SCCSID(_s) /* nothing */
/*
- * Some of the FreeBSD sources used in Bionic need this.
- * Originally, this is used to embed the rcs versions of each source file
- * in the generated binary. We certainly don't want this in Bionic.
+ * _BSD_SOURCE and _GNU_SOURCE are expected to be defined by callers before
+ * any standard header file is included. In those header files we test
+ * against __USE_BSD and __USE_GNU. glibc does this in <features.h> but we
+ * do it in <sys/cdefs.h> instead because that's where our existing
+ * _POSIX_C_SOURCE tests were, and we're already confident that <sys/cdefs.h>
+ * is included everywhere it should be.
+ *
+ * The _GNU_SOURCE test needs to come before any _BSD_SOURCE or _POSIX* tests
+ * because _GNU_SOURCE implies everything else.
*/
-#define __FBSDID(s) /* nothing */
+#if defined(_GNU_SOURCE)
+# define __USE_GNU 1
+# undef _POSIX_SOURCE
+# define _POSIX_SOURCE 1
+# undef _POSIX_C_SOURCE
+# define _POSIX_C_SOURCE 200809L
+# undef _BSD_SOURCE
+# define _BSD_SOURCE 1
+#endif
+
+#if defined(_BSD_SOURCE)
+# define __USE_BSD 1
+#endif
/*-
- * The following definitions are an extension of the behavior originally
- * implemented in <sys/_posix.h>, but with a different level of granularity.
* POSIX.1 requires that the macros we test be defined before any standard
* header file is included.
*
@@ -570,11 +534,24 @@
#endif
#define __bos0(s) __builtin_object_size((s), 0)
-#define __BIONIC_FORTIFY_INLINE \
- extern __inline__ \
- __attribute__ ((always_inline)) \
- __attribute__ ((gnu_inline))
+#define __BIONIC_FORTIFY_INLINE extern __inline__ __always_inline __attribute__((gnu_inline))
#endif
#define __BIONIC_FORTIFY_UNKNOWN_SIZE ((size_t) -1)
+/* Used to tag non-static symbols that are private and never exposed by the shared library. */
+#define __LIBC_HIDDEN__ __attribute__((visibility("hidden")))
+
+/* Like __LIBC_HIDDEN__, but preserves binary compatibility for LP32. */
+#ifdef __LP64__
+#define __LIBC64_HIDDEN__ __LIBC_HIDDEN__
+#else
+#define __LIBC64_HIDDEN__ __LIBC_ABI_PUBLIC__
+#endif
+
+/* Used to tag non-static symbols that are public and exposed by the shared library. */
+#define __LIBC_ABI_PUBLIC__ __attribute__((visibility ("default")))
+
+/* Used to rename functions so that the compiler emits a call to 'x' rather than the function this was applied to. */
+#define __RENAME(x) __asm__(#x)
+
#endif /* !_SYS_CDEFS_H_ */
diff --git a/libc/include/sys/cdefs_elf.h b/libc/include/sys/cdefs_elf.h
index 4dd7dc3..a40a867 100644
--- a/libc/include/sys/cdefs_elf.h
+++ b/libc/include/sys/cdefs_elf.h
@@ -30,27 +30,9 @@
#ifndef _SYS_CDEFS_ELF_H_
#define _SYS_CDEFS_ELF_H_
-#ifdef __LEADING_UNDERSCORE
-#define _C_LABEL(x) __CONCAT(_,x)
-#define _C_LABEL_STRING(x) "_"x
-#else
-#define _C_LABEL(x) x
-#define _C_LABEL_STRING(x) x
-#endif
-
-#define ___RENAME(x) __asm__(___STRING(_C_LABEL(x)))
-
-#define __indr_reference(sym,alias) /* nada, since we do weak refs */
-
-#define __strong_alias(alias,sym) \
- __asm__(".global " _C_LABEL_STRING(#alias) "\n" \
- _C_LABEL_STRING(#alias) " = " _C_LABEL_STRING(#sym));
-
-#define __weak_alias(alias,sym) \
- __asm__(".weak " _C_LABEL_STRING(#alias) "\n" \
- _C_LABEL_STRING(#alias) " = " _C_LABEL_STRING(#sym));
-#define __weak_extern(sym) \
- __asm__(".weak " _C_LABEL_STRING(#sym));
+#define __strong_alias(alias, sym) \
+ __asm__(".global " #alias "\n" \
+ #alias " = " #sym);
/* We use __warnattr instead of __warn_references.
* TODO: remove this and put an empty definition in one of the upstream-* compatibility headers.
@@ -58,74 +40,4 @@
#define __warn_references(sym,msg) \
/*__asm__(".section .gnu.warning." #sym "\n\t.ascii \"" msg "\"\n\t.text");*/
-#define __SECTIONSTRING(_sec, _str) \
- __asm__(".section " #_sec "\n\t.asciz \"" _str "\"\n\t.previous")
-
-/* Used to tag non-static symbols that are private and never exposed by the shared library. */
-#define __LIBC_HIDDEN__ __attribute__((visibility ("hidden")))
-
-/* Like __LIBC_HIDDEN__, but preserves binary compatibility for LP32. */
-#ifdef __LP64__
-#define __LIBC64_HIDDEN__ __LIBC_HIDDEN__
-#else
-#define __LIBC64_HIDDEN__ __LIBC_ABI_PUBLIC__
-#endif
-
-/* Used to tag non-static symbols that are public and exposed by the shared library. */
-#define __LIBC_ABI_PUBLIC__ __attribute__((visibility ("default")))
-
-#define __IDSTRING(_n,_s) __SECTIONSTRING(.ident,_s)
-
-#define __RCSID(_s) __IDSTRING(rcsid,_s)
-#define __SCCSID(_s)
-#define __SCCSID2(_s)
-#if 0 /* XXX userland __COPYRIGHTs have \ns in them */
-#define __COPYRIGHT(_s) __SECTIONSTRING(.copyright,_s)
-#else
-#define __COPYRIGHT(_s) \
- static const char copyright[] \
- __attribute__((__unused__,__section__(".copyright"))) = _s
-#endif
-
-#define __KERNEL_RCSID(_n, _s) __RCSID(_s)
-#define __KERNEL_SCCSID(_n, _s)
-#if 0 /* XXX see above */
-#define __KERNEL_COPYRIGHT(_n, _s) __COPYRIGHT(_s)
-#else
-#define __KERNEL_COPYRIGHT(_n, _s) __SECTIONSTRING(.copyright, _s)
-#endif
-
-#ifndef __lint__
-#define __link_set_make_entry(set, sym) \
- static void const * const __link_set_##set##_sym_##sym \
- __section("link_set_" #set) __used = &sym
-#define __link_set_make_entry2(set, sym, n) \
- static void const * const __link_set_##set##_sym_##sym##_##n \
- __section("link_set_" #set) __used = &sym[n]
-#else
-#define __link_set_make_entry(set, sym) \
- extern void const * const __link_set_##set##_sym_##sym
-#define __link_set_make_entry2(set, sym, n) \
- extern void const * const __link_set_##set##_sym_##sym##_##n
-#endif /* __lint__ */
-
-#define __link_set_add_text(set, sym) __link_set_make_entry(set, sym)
-#define __link_set_add_rodata(set, sym) __link_set_make_entry(set, sym)
-#define __link_set_add_data(set, sym) __link_set_make_entry(set, sym)
-#define __link_set_add_bss(set, sym) __link_set_make_entry(set, sym)
-#define __link_set_add_text2(set, sym, n) __link_set_make_entry2(set, sym, n)
-#define __link_set_add_rodata2(set, sym, n) __link_set_make_entry2(set, sym, n)
-#define __link_set_add_data2(set, sym, n) __link_set_make_entry2(set, sym, n)
-#define __link_set_add_bss2(set, sym, n) __link_set_make_entry2(set, sym, n)
-
-#define __link_set_decl(set, ptype) \
- extern ptype * const __start_link_set_##set[]; \
- extern ptype * const __stop_link_set_##set[] \
-
-#define __link_set_start(set) (__start_link_set_##set)
-#define __link_set_end(set) (__stop_link_set_##set)
-
-#define __link_set_count(set) \
- (__link_set_end(set) - __link_set_start(set))
-
#endif /* !_SYS_CDEFS_ELF_H_ */
diff --git a/libc/include/sys/socket.h b/libc/include/sys/socket.h
index ae2f238..a8840ff 100644
--- a/libc/include/sys/socket.h
+++ b/libc/include/sys/socket.h
@@ -294,8 +294,7 @@
#if defined(__BIONIC_FORTIFY)
__errordecl(__recvfrom_error, "recvfrom called with size bigger than buffer");
extern ssize_t __recvfrom_chk(int, void*, size_t, size_t, int, const struct sockaddr*, socklen_t*);
-extern ssize_t __recvfrom_real(int, void*, size_t, int, const struct sockaddr*, socklen_t*)
- __asm__(__USER_LABEL_PREFIX__ "recvfrom");
+extern ssize_t __recvfrom_real(int, void*, size_t, int, const struct sockaddr*, socklen_t*) __RENAME(recvfrom);
__BIONIC_FORTIFY_INLINE
ssize_t recvfrom(int fd, void* buf, size_t len, int flags, const struct sockaddr* src_addr, socklen_t* addr_len) {
diff --git a/libc/include/sys/stat.h b/libc/include/sys/stat.h
index c0c168b..b56ffa4 100644
--- a/libc/include/sys/stat.h
+++ b/libc/include/sys/stat.h
@@ -25,6 +25,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
#ifndef _SYS_STAT_H_
#define _SYS_STAT_H_
@@ -162,7 +163,7 @@
#if defined(__BIONIC_FORTIFY)
extern mode_t __umask_chk(mode_t);
-extern mode_t __umask_real(mode_t) __asm__(__USER_LABEL_PREFIX__ "umask");
+extern mode_t __umask_real(mode_t) __RENAME(umask);
__errordecl(__umask_invalid_mode, "umask called with invalid mode");
__BIONIC_FORTIFY_INLINE
diff --git a/libc/include/unistd.h b/libc/include/unistd.h
index 7fbafdf..34ae2bc 100644
--- a/libc/include/unistd.h
+++ b/libc/include/unistd.h
@@ -25,6 +25,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
#ifndef _UNISTD_H_
#define _UNISTD_H_
@@ -112,7 +113,7 @@
extern int fchdir(int);
extern int rmdir(const char *);
extern int pipe(int *);
-#ifdef _GNU_SOURCE
+#if defined(__USE_GNU)
extern int pipe2(int *, int);
#endif
extern int chroot(const char *);
@@ -143,7 +144,7 @@
extern int dup(int);
extern int dup2(int, int);
-#ifdef _GNU_SOURCE
+#if defined(__USE_GNU)
extern int dup3(int, int, int);
#endif
extern int fcntl(int, int, ...);
@@ -201,8 +202,7 @@
extern ssize_t __read_chk(int, void*, size_t, size_t);
__errordecl(__read_dest_size_error, "read called with size bigger than destination");
__errordecl(__read_count_toobig_error, "read called with count > SSIZE_MAX");
-extern ssize_t __read_real(int, void*, size_t)
- __asm__(__USER_LABEL_PREFIX__ "read");
+extern ssize_t __read_real(int, void*, size_t) __RENAME(read);
__BIONIC_FORTIFY_INLINE
ssize_t read(int fd, void* buf, size_t count) {
diff --git a/libc/include/wchar.h b/libc/include/wchar.h
index 1898c7e..ae10d93 100644
--- a/libc/include/wchar.h
+++ b/libc/include/wchar.h
@@ -166,6 +166,7 @@
extern wctrans_t wctrans(const char*);
#if __POSIX_VISIBLE >= 200809
+FILE* open_wmemstream(wchar_t**, size_t*);
wchar_t* wcsdup(const wchar_t*);
size_t wcsnlen(const wchar_t*, size_t);
#endif
diff --git a/libc/kernel/tools/clean_header.py b/libc/kernel/tools/clean_header.py
index 6601817..ebebe80 100755
--- a/libc/kernel/tools/clean_header.py
+++ b/libc/kernel/tools/clean_header.py
@@ -199,8 +199,7 @@
if opt == '-u':
noUpdate = 0
elif opt == '-v':
- verbose = 1
- D_setlevel(1)
+ logging.basicConfig(level=logging.DEBUG)
elif opt == '-k':
kernel_original_path = arg
elif opt == '-d':
diff --git a/libc/kernel/tools/cpp.py b/libc/kernel/tools/cpp.py
index 2be9532..0c098de 100644
--- a/libc/kernel/tools/cpp.py
+++ b/libc/kernel/tools/cpp.py
@@ -1711,7 +1711,7 @@
while j < n and not blocks[j].isIf():
j += 1
if j > i:
- D2("appending lines %d to %d" % (blocks[i].lineno, blocks[j-1].lineno))
+ logging.debug("appending lines %d to %d" % (blocks[i].lineno, blocks[j-1].lineno))
result += blocks[i:j]
if j >= n:
break
@@ -1730,17 +1730,17 @@
break
dir = blocks[j].directive
if dir == "endif":
- D2("remove 'if 0' .. 'endif' (lines %d to %d)" % (blocks[i].lineno, blocks[j].lineno))
+ logging.debug("remove 'if 0' .. 'endif' (lines %d to %d)" % (blocks[i].lineno, blocks[j].lineno))
i = j + 1
elif dir == "else":
# convert 'else' into 'if 1'
- D2("convert 'if 0' .. 'else' into 'if 1' (lines %d to %d)" % (blocks[i].lineno, blocks[j-1].lineno))
+ logging.debug("convert 'if 0' .. 'else' into 'if 1' (lines %d to %d)" % (blocks[i].lineno, blocks[j-1].lineno))
blocks[j].directive = "if"
blocks[j].expr = CppExpr( CppLineTokenizer("1").toTokenList() )
i = j
elif dir == "elif":
# convert 'elif' into 'if'
- D2("convert 'if 0' .. 'elif' into 'if'")
+ logging.debug("convert 'if 0' .. 'elif' into 'if'")
blocks[j].directive = "if"
i = j
continue
@@ -1749,25 +1749,25 @@
k = find_matching_endif( blocks, j+1 )
if k >= n:
# unterminated #if 1, finish here
- D2("unterminated 'if 1'")
+ logging.debug("unterminated 'if 1'")
result += blocks[j+1:k]
break
dir = blocks[k].directive
if dir == "endif":
- D2("convert 'if 1' .. 'endif' (lines %d to %d)" % (blocks[j].lineno, blocks[k].lineno))
+ logging.debug("convert 'if 1' .. 'endif' (lines %d to %d)" % (blocks[j].lineno, blocks[k].lineno))
result += optimize_if01(blocks[j+1:k])
i = k+1
elif dir == "else":
# convert 'else' into 'if 0'
- D2("convert 'if 1' .. 'else' (lines %d to %d)" % (blocks[j].lineno, blocks[k].lineno))
+ logging.debug("convert 'if 1' .. 'else' (lines %d to %d)" % (blocks[j].lineno, blocks[k].lineno))
result += optimize_if01(blocks[j+1:k])
blocks[k].directive = "if"
blocks[k].expr = CppExpr( CppLineTokenizer("0").toTokenList() )
i = k
elif dir == "elif":
# convert 'elif' into 'if 0'
- D2("convert 'if 1' .. 'elif' (lines %d to %d)" % (blocks[j].lineno, blocks[k].lineno))
+ logging.debug("convert 'if 1' .. 'elif' (lines %d to %d)" % (blocks[j].lineno, blocks[k].lineno))
result += optimize_if01(blocks[j+1:k])
blocks[k].expr = CppExpr( CppLineTokenizer("0").toTokenList() )
i = k
@@ -1835,7 +1835,6 @@
out = StringOutput()
lines = string.split(text, '\n')
list = BlockParser().parse( CppLinesTokenizer(lines) )
- #D_setlevel(2)
list.replaceTokens( kernel_token_replacements )
list.optimizeAll( {"__KERNEL__":kCppUndefinedMacro} )
list.write(out)
diff --git a/libc/kernel/tools/utils.py b/libc/kernel/tools/utils.py
index 0478e93..e5a310e 100644
--- a/libc/kernel/tools/utils.py
+++ b/libc/kernel/tools/utils.py
@@ -1,59 +1,29 @@
# common python utility routines for the Bionic tool scripts
-import sys, os, commands, string, commands
+import commands
+import logging
+import os
+import string
+import sys
-# basic debugging trace support
-# call D_setlevel to set the verbosity level
-# and D(), D2(), D3(), D4() to add traces
-#
-verbose = 0
def panic(msg):
- sys.stderr.write( find_program_name() + ": error: " )
- sys.stderr.write( msg )
+ sys.stderr.write(os.path.basename(sys.argv[0]) + ": error: ")
+ sys.stderr.write(msg)
sys.exit(1)
-def D(msg):
- global verbose
- if verbose > 0:
- print msg
-
-def D2(msg):
- global verbose
- if verbose >= 2:
- print msg
-
-def D3(msg):
- global verbose
- if verbose >= 3:
- print msg
-
-def D4(msg):
- global verbose
- if verbose >= 4:
- print msg
-
-def D_setlevel(level):
- global verbose
- verbose = level
-
-
-# other stuff
-#
-#
-def find_program_name():
- return os.path.basename(sys.argv[0])
def find_program_dir():
return os.path.dirname(sys.argv[0])
+
class StringOutput:
def __init__(self):
self.line = ""
def write(self,msg):
self.line += msg
- D2("write '%s'" % msg)
+ logging.debug("write '%s'" % msg)
def get(self):
return self.line
@@ -76,47 +46,6 @@
continue
os.mkdir(dir)
-def walk_source_files(paths,callback,args,excludes=[]):
- """recursively walk a list of paths and files, only keeping the source files in directories"""
- for path in paths:
- if len(path) > 0 and path[0] == '@':
- # this is the name of another file, include it and parse it
- path = path[1:]
- if os.path.exists(path):
- for line in open(path):
- if len(line) > 0 and line[-1] == '\n':
- line = line[:-1]
- walk_source_files([line],callback,args,excludes)
- continue
- if not os.path.isdir(path):
- callback(path,args)
- else:
- for root, dirs, files in os.walk(path):
- #print "w-- %s (ex: %s)" % (repr((root,dirs)), repr(excludes))
- if len(excludes):
- for d in dirs[:]:
- if os.path.join(root,d) in excludes:
- dirs.remove(d)
- for f in files:
- r, ext = os.path.splitext(f)
- if ext in [ ".h", ".c", ".cpp", ".S" ]:
- callback( "%s/%s" % (root,f), args )
-
-def cleanup_dir(path):
- """create a directory if needed, and ensure that it is totally empty
- by removing any existing content in it"""
- if not os.path.exists(path):
- os.mkdir(path)
- else:
- for root, dirs, files in os.walk(path, topdown=False):
- if root.endswith("kernel_headers/"):
- # skip 'kernel_headers'
- continue
- for name in files:
- os.remove(os.path.join(root, name))
- for name in dirs:
- os.rmdir(os.path.join(root, name))
-
class BatchFileUpdater:
"""a class used to edit several files at once"""
diff --git a/libc/private/ScopeGuard.h b/libc/private/ScopeGuard.h
new file mode 100644
index 0000000..183e322
--- /dev/null
+++ b/libc/private/ScopeGuard.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SCOPE_GUARD_H
+#define SCOPE_GUARD_H
+
+// TODO: include explicit std::move when it becomes available
+template<typename F>
+class ScopeGuard {
+ public:
+ ScopeGuard(F f) : f_(f), active_(true) {}
+
+ ScopeGuard(ScopeGuard&& that) : f_(that.f_), active_(that.active_) {
+ that.active_ = false;
+ }
+
+ ~ScopeGuard() {
+ if (active_) {
+ f_();
+ }
+ }
+
+ void disable() {
+ active_ = false;
+ }
+ private:
+ F f_;
+ bool active_;
+
+ ScopeGuard() = delete;
+ ScopeGuard(const ScopeGuard&) = delete;
+ ScopeGuard& operator=(const ScopeGuard&) = delete;
+};
+
+template<typename T>
+ScopeGuard<T> create_scope_guard(T f) {
+ return ScopeGuard<T>(f);
+}
+
+#endif // SCOPE_GUARD_H
diff --git a/libc/private/UniquePtr.h b/libc/private/UniquePtr.h
new file mode 100644
index 0000000..5ac7599
--- /dev/null
+++ b/libc/private/UniquePtr.h
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef UNIQUE_PTR_H_included
+#define UNIQUE_PTR_H_included
+
+// Default deleter for pointer types.
+template <typename T>
+struct DefaultDelete {
+ enum { type_must_be_complete = sizeof(T) };
+ DefaultDelete() {}
+ void operator()(T* p) const {
+ delete p;
+ }
+};
+
+// Default deleter for array types.
+template <typename T>
+struct DefaultDelete<T[]> {
+ enum { type_must_be_complete = sizeof(T) };
+ void operator()(T* p) const {
+ delete[] p;
+ }
+};
+
+// A smart pointer that deletes the given pointer on destruction.
+// Equivalent to C++0x's std::unique_ptr (a combination of boost::scoped_ptr
+// and boost::scoped_array).
+// Named to be in keeping with Android style but also to avoid
+// collision with any other implementation, until we can switch over
+// to unique_ptr.
+// Use thus:
+// UniquePtr<C> c(new C);
+template <typename T, typename D = DefaultDelete<T> >
+class UniquePtr {
+public:
+ // Construct a new UniquePtr, taking ownership of the given raw pointer.
+ explicit UniquePtr(T* ptr = nullptr) : mPtr(ptr) { }
+
+ UniquePtr(UniquePtr<T, D>&& that) {
+ mPtr = that.mPtr;
+ that.mPtr = nullptr;
+ }
+
+ ~UniquePtr() {
+ reset();
+ }
+
+ // Accessors.
+ T& operator*() const { return *mPtr; }
+ T* operator->() const { return mPtr; }
+ T* get() const { return mPtr; }
+
+ // Returns the raw pointer and hands over ownership to the caller.
+ // The pointer will not be deleted by UniquePtr.
+ T* release() __attribute__((warn_unused_result)) {
+ T* result = mPtr;
+ mPtr = nullptr;
+ return result;
+ }
+
+ // Takes ownership of the given raw pointer.
+ // If this smart pointer previously owned a different raw pointer, that
+ // raw pointer will be freed.
+ void reset(T* ptr = nullptr) {
+ if (ptr != mPtr) {
+ D()(mPtr);
+ mPtr = ptr;
+ }
+ }
+
+private:
+ // The raw pointer.
+ T* mPtr;
+
+ // Comparing unique pointers is probably a mistake, since they're unique.
+ template <typename T2> bool operator==(const UniquePtr<T2>& p) const = delete;
+ template <typename T2> bool operator!=(const UniquePtr<T2>& p) const = delete;
+
+ // Disallow copy and assignment.
+ UniquePtr(const UniquePtr&) = delete;
+ void operator=(const UniquePtr&) = delete;
+};
+
+// Partial specialization for array types. Like std::unique_ptr, this removes
+// operator* and operator-> but adds operator[].
+template <typename T, typename D>
+class UniquePtr<T[], D> {
+public:
+ explicit UniquePtr(T* ptr = NULL) : mPtr(ptr) {
+ }
+ UniquePtr(UniquePtr<T, D>&& that) {
+ mPtr = that.mPtr;
+ that.mPtr = nullptr;
+ }
+
+ ~UniquePtr() {
+ reset();
+ }
+
+ T& operator[](size_t i) const {
+ return mPtr[i];
+ }
+ T* get() const { return mPtr; }
+
+ T* release() __attribute__((warn_unused_result)) {
+ T* result = mPtr;
+ mPtr = NULL;
+ return result;
+ }
+
+ void reset(T* ptr = NULL) {
+ if (ptr != mPtr) {
+ D()(mPtr);
+ mPtr = ptr;
+ }
+ }
+
+private:
+ T* mPtr;
+
+ // Disallow copy and assignment.
+ UniquePtr(const UniquePtr&) = delete;
+ void operator=(const UniquePtr&) = delete;
+};
+
+#endif // UNIQUE_PTR_H_included
diff --git a/libc/private/bionic_asm.h b/libc/private/bionic_asm.h
index 7c2686f..d53ebba 100644
--- a/libc/private/bionic_asm.h
+++ b/libc/private/bionic_asm.h
@@ -41,7 +41,7 @@
#define ENTRY(f) \
.text; \
.globl f; \
- _ALIGN_TEXT; \
+ .align __bionic_asm_align; \
.type f, __bionic_asm_function_type; \
f: \
__bionic_asm_custom_entry(f); \
diff --git a/tests/libs/dlsym_local_symbol_private.cpp b/libc/private/bionic_string_utils.h
similarity index 62%
rename from tests/libs/dlsym_local_symbol_private.cpp
rename to libc/private/bionic_string_utils.h
index 2587508..ab0eccf 100644
--- a/tests/libs/dlsym_local_symbol_private.cpp
+++ b/libc/private/bionic_string_utils.h
@@ -14,11 +14,18 @@
* limitations under the License.
*/
-#include <stdlib.h>
-#include <dlfcn.h>
-#include <stdio.h>
+#ifndef _BIONIC_STRING_UTILS_H_
+#define _BIONIC_STRING_UTILS_H_
-// This symbol is declared local in
-// the linker version map: libdlsym_local_symbol.map.
-// It should not be visible from the outside.
-extern "C" const uint32_t __attribute__ ((visibility ("protected"))) private_taxicab_number = 1729;
+#include <string.h>
+
+static inline bool ends_with(const char* s1, const char* s2) {
+ size_t s1_length = strlen(s1);
+ size_t s2_length = strlen(s2);
+ if (s2_length > s1_length) {
+ return false;
+ }
+ return memcmp(s1 + (s1_length - s2_length), s2, s2_length) == 0;
+}
+
+#endif // _BIONIC_STRING_UTILS_H_
diff --git a/libc/private/libc_logging.h b/libc/private/libc_logging.h
index 35c756b..da2192b 100644
--- a/libc/private/libc_logging.h
+++ b/libc/private/libc_logging.h
@@ -69,8 +69,6 @@
char msg[0];
};
-void __android_set_abort_message(const char* msg);
-
//
// Formats a message to the log (priority 'fatal'), then aborts.
//
diff --git a/libc/stdio/stdio_ext.cpp b/libc/stdio/stdio_ext.cpp
new file mode 100644
index 0000000..bfdecb8
--- /dev/null
+++ b/libc/stdio/stdio_ext.cpp
@@ -0,0 +1,96 @@
+/*
+ * 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.
+ */
+
+#include <stdio_ext.h>
+
+#include <stdio.h>
+#include "local.h"
+
+#define FSETLOCKING_QUERY 0
+#define FSETLOCKING_INTERNAL 1
+#define FSETLOCKING_BYCALLER 2
+
+size_t __fbufsize(FILE* fp) {
+ return fp->_bf._size;
+}
+
+/* For a _SRW stream, we don't know whether we last read or wrote.
+int __freading(FILE* fp) {
+ return (fp->_flags & _SRD) != 0 || ...;
+}
+*/
+
+/* For a _SRW stream, we don't know whether we last read or wrote.
+int __fwriting(FILE*) {
+ return (fp->_flags & _SWR) != 0 || ...;
+}
+*/
+
+int __freadable(FILE* fp) {
+ return (fp->_flags & (__SRD|__SRW)) != 0;
+}
+
+int __fwritable(FILE* fp) {
+ return (fp->_flags & (__SWR|__SRW)) != 0;
+}
+
+int __flbf(FILE* fp) {
+ return (fp->_flags & __SLBF) != 0;
+}
+
+void __fpurge(FILE* fp) {
+ fpurge(fp);
+}
+
+size_t __fpending(FILE* fp) {
+ return fp->_p - fp->_bf._base;
+}
+
+void _flushlbf() {
+ // If we flush all streams, we know we've flushed all the line-buffered streams.
+ fflush(NULL);
+}
+
+int __fsetlocking(FILE*, int) {
+ // We don't currently have an implementation that would obey this,
+ // so make setting the state a no-op and always return "we handle locking for you".
+ // http://b/17154740 suggests ways we could fix this.
+ return FSETLOCKING_INTERNAL;
+}
+
+void clearerr_unlocked(FILE* fp) {
+ return __sclearerr(fp);
+}
+
+int feof_unlocked(FILE* fp) {
+ return __sfeof(fp);
+}
+
+int ferror_unlocked(FILE* fp) {
+ return __sferror(fp);
+}
diff --git a/libc/tools/bionic_utils.py b/libc/tools/bionic_utils.py
deleted file mode 100644
index c38efb5..0000000
--- a/libc/tools/bionic_utils.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# common python utility routines for the Bionic tool scripts
-
-import sys, os, commands, string
-
-all_arches = [ "arm", "arm64", "mips", "mips64", "x86", "x86_64" ]
-
-# basic debugging trace support
-# call D_setlevel to set the verbosity level
-# and D(), D2(), D3(), D4() to add traces
-#
-verbose = 0
-
-def D(msg):
- global verbose
- if verbose > 0:
- print msg
-
-def D2(msg):
- global verbose
- if verbose >= 2:
- print msg
-
-def D3(msg):
- global verbose
- if verbose >= 3:
- print msg
-
-def D4(msg):
- global verbose
- if verbose >= 4:
- print msg
-
-def D_setlevel(level):
- global verbose
- verbose = level
-
-
-# parser for the SYSCALLS.TXT file
-#
-class SysCallsTxtParser:
- def __init__(self):
- self.syscalls = []
- self.lineno = 0
-
- def E(self, msg):
- print "%d: %s" % (self.lineno, msg)
-
- def parse_line(self, line):
- """ parse a syscall spec line.
-
- line processing, format is
- return type func_name[|alias_list][:syscall_name[:socketcall_id]] ( [paramlist] ) architecture_list
- """
- pos_lparen = line.find('(')
- E = self.E
- if pos_lparen < 0:
- E("missing left parenthesis in '%s'" % line)
- return
-
- pos_rparen = line.rfind(')')
- if pos_rparen < 0 or pos_rparen <= pos_lparen:
- E("missing or misplaced right parenthesis in '%s'" % line)
- return
-
- return_type = line[:pos_lparen].strip().split()
- if len(return_type) < 2:
- E("missing return type in '%s'" % line)
- return
-
- syscall_func = return_type[-1]
- return_type = string.join(return_type[:-1],' ')
- socketcall_id = -1
-
- pos_colon = syscall_func.find(':')
- if pos_colon < 0:
- syscall_name = syscall_func
- else:
- if pos_colon == 0 or pos_colon+1 >= len(syscall_func):
- E("misplaced colon in '%s'" % line)
- return
-
- # now find if there is a socketcall_id for a dispatch-type syscall
- # after the optional 2nd colon
- pos_colon2 = syscall_func.find(':', pos_colon + 1)
- if pos_colon2 < 0:
- syscall_name = syscall_func[pos_colon+1:]
- syscall_func = syscall_func[:pos_colon]
- else:
- if pos_colon2+1 >= len(syscall_func):
- E("misplaced colon2 in '%s'" % line)
- return
- syscall_name = syscall_func[(pos_colon+1):pos_colon2]
- socketcall_id = int(syscall_func[pos_colon2+1:])
- syscall_func = syscall_func[:pos_colon]
-
- alias_delim = syscall_func.find('|')
- if alias_delim > 0:
- alias_list = syscall_func[alias_delim+1:].strip()
- syscall_func = syscall_func[:alias_delim]
- alias_delim = syscall_name.find('|')
- if alias_delim > 0:
- syscall_name = syscall_name[:alias_delim]
- syscall_aliases = string.split(alias_list, ',')
- else:
- syscall_aliases = []
-
- if pos_rparen > pos_lparen+1:
- syscall_params = line[pos_lparen+1:pos_rparen].split(',')
- params = string.join(syscall_params,',')
- else:
- syscall_params = []
- params = "void"
-
- t = {
- "name" : syscall_name,
- "func" : syscall_func,
- "aliases" : syscall_aliases,
- "params" : syscall_params,
- "decl" : "%-15s %s (%s);" % (return_type, syscall_func, params),
- "socketcall_id" : socketcall_id
- }
-
- # Parse the architecture list.
- arch_list = line[pos_rparen+1:].strip()
- if arch_list == "all":
- for arch in all_arches:
- t[arch] = True
- else:
- for arch in string.split(arch_list, ','):
- if arch in all_arches:
- t[arch] = True
- else:
- E("invalid syscall architecture '%s' in '%s'" % (arch, line))
- return
-
- self.syscalls.append(t)
-
- global verbose
- if verbose >= 2:
- print t
-
-
- def parse_file(self, file_path):
- D2("parse_file: %s" % file_path)
- fp = open(file_path)
- for line in fp.xreadlines():
- self.lineno += 1
- line = line.strip()
- if not line: continue
- if line[0] == '#': continue
- self.parse_line(line)
-
- fp.close()
-
-
-class StringOutput:
- def __init__(self):
- self.line = ""
-
- def write(self,msg):
- self.line += msg
- D2("write '%s'" % msg)
-
- def get(self):
- return self.line
diff --git a/libc/tools/check-symbols-glibc.py b/libc/tools/check-symbols-glibc.py
index ffff964..8bcf7fc 100755
--- a/libc/tools/check-symbols-glibc.py
+++ b/libc/tools/check-symbols-glibc.py
@@ -70,6 +70,7 @@
'__res_mkquery': 'res_mkquery',
'__res_query': 'res_query',
'__res_search': 'res_search',
+ '__xpg_basename': '__gnu_basename',
}
glibc = GetSymbolsFromSystemSo('libc.so.*', 'librt.so.*', 'libpthread.so.*', 'libresolv.so.*', 'libm.so.*')
@@ -172,24 +173,6 @@
'dn_expand',
'nsdispatch',
])
-# libstdc++ stuff we took over.
-libstdcxx_stuff = set([
- # new, delete, nothrow
- '_ZSt7nothrow',
- '_ZdaPv',
- '_ZdaPvRKSt9nothrow_t',
- '_ZdlPv',
- '_ZdlPvRKSt9nothrow_t',
- '_Znam',
- '_ZnamRKSt9nothrow_t',
- '_Znwm',
- '_ZnwmRKSt9nothrow_t',
-
- '__cxa_guard_abort',
- '__cxa_guard_acquire',
- '__cxa_guard_release',
- '__cxa_pure_virtual',
-])
# Implementation details we know we export (and can't get away from).
known = set([
'_ctype_',
@@ -210,8 +193,7 @@
print 'in bionic but not glibc:'
allowed_stuff = (bsd_stuff | FORTIFY_stuff | linux_stuff | macro_stuff |
- std_stuff | weird_stuff | libresolv_stuff | libstdcxx_stuff |
- known)
+ std_stuff | weird_stuff | libresolv_stuff | known)
for symbol in sorted((bionic - allowed_stuff).difference(glibc)):
if symbol in ndk_ignored:
symbol += '*'
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 4619ec6..4e24077 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -8,14 +8,18 @@
import commands
import filecmp
import glob
+import logging
import os.path
import re
import shutil
import stat
+import string
import sys
import tempfile
-from bionic_utils import *
+
+all_arches = [ "arm", "arm64", "mips", "mips64", "x86", "x86_64" ]
+
# temp directory where we store all intermediate files
bionic_temp = tempfile.mkdtemp(prefix="bionic_gensyscalls");
@@ -48,8 +52,6 @@
"""
#include <private/bionic_asm.h>
- .hidden __set_errno
-
ENTRY(%(func)s)
"""
@@ -72,7 +74,7 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(%(func)s)
"""
@@ -92,7 +94,7 @@
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
- b __set_errno
+ b __set_errno_internal
END(%(func)s)
"""
@@ -107,7 +109,7 @@
cmn x0, #(MAX_ERRNO + 1)
cneg x0, x0, hi
- b.hi __set_errno
+ b.hi __set_errno_internal
ret
END(%(func)s)
@@ -128,7 +130,7 @@
j ra
nop
1:
- la t9,__set_errno
+ la t9,__set_errno_internal
j t9
nop
.set reorder
@@ -155,7 +157,7 @@
nop
2:
.cpsetup ra, t1, 2b
- LA t9,__set_errno
+ LA t9,__set_errno_internal
.cpreturn
j t9
move ra, t0
@@ -177,7 +179,7 @@
jb 1f
negl %%eax
pushl %%eax
- call __set_errno
+ call __set_errno_internal
addl $4, %%esp
1:
"""
@@ -199,7 +201,7 @@
jb 1f
negl %%eax
movl %%eax, %%edi
- call __set_errno
+ call __set_errno_internal
1:
ret
END(%(func)s)
@@ -387,6 +389,120 @@
return result
+class SysCallsTxtParser:
+ def __init__(self):
+ self.syscalls = []
+ self.lineno = 0
+
+ def E(self, msg):
+ print "%d: %s" % (self.lineno, msg)
+
+ def parse_line(self, line):
+ """ parse a syscall spec line.
+
+ line processing, format is
+ return type func_name[|alias_list][:syscall_name[:socketcall_id]] ( [paramlist] ) architecture_list
+ """
+ pos_lparen = line.find('(')
+ E = self.E
+ if pos_lparen < 0:
+ E("missing left parenthesis in '%s'" % line)
+ return
+
+ pos_rparen = line.rfind(')')
+ if pos_rparen < 0 or pos_rparen <= pos_lparen:
+ E("missing or misplaced right parenthesis in '%s'" % line)
+ return
+
+ return_type = line[:pos_lparen].strip().split()
+ if len(return_type) < 2:
+ E("missing return type in '%s'" % line)
+ return
+
+ syscall_func = return_type[-1]
+ return_type = string.join(return_type[:-1],' ')
+ socketcall_id = -1
+
+ pos_colon = syscall_func.find(':')
+ if pos_colon < 0:
+ syscall_name = syscall_func
+ else:
+ if pos_colon == 0 or pos_colon+1 >= len(syscall_func):
+ E("misplaced colon in '%s'" % line)
+ return
+
+ # now find if there is a socketcall_id for a dispatch-type syscall
+ # after the optional 2nd colon
+ pos_colon2 = syscall_func.find(':', pos_colon + 1)
+ if pos_colon2 < 0:
+ syscall_name = syscall_func[pos_colon+1:]
+ syscall_func = syscall_func[:pos_colon]
+ else:
+ if pos_colon2+1 >= len(syscall_func):
+ E("misplaced colon2 in '%s'" % line)
+ return
+ syscall_name = syscall_func[(pos_colon+1):pos_colon2]
+ socketcall_id = int(syscall_func[pos_colon2+1:])
+ syscall_func = syscall_func[:pos_colon]
+
+ alias_delim = syscall_func.find('|')
+ if alias_delim > 0:
+ alias_list = syscall_func[alias_delim+1:].strip()
+ syscall_func = syscall_func[:alias_delim]
+ alias_delim = syscall_name.find('|')
+ if alias_delim > 0:
+ syscall_name = syscall_name[:alias_delim]
+ syscall_aliases = string.split(alias_list, ',')
+ else:
+ syscall_aliases = []
+
+ if pos_rparen > pos_lparen+1:
+ syscall_params = line[pos_lparen+1:pos_rparen].split(',')
+ params = string.join(syscall_params,',')
+ else:
+ syscall_params = []
+ params = "void"
+
+ t = {
+ "name" : syscall_name,
+ "func" : syscall_func,
+ "aliases" : syscall_aliases,
+ "params" : syscall_params,
+ "decl" : "%-15s %s (%s);" % (return_type, syscall_func, params),
+ "socketcall_id" : socketcall_id
+ }
+
+ # Parse the architecture list.
+ arch_list = line[pos_rparen+1:].strip()
+ if arch_list == "all":
+ for arch in all_arches:
+ t[arch] = True
+ else:
+ for arch in string.split(arch_list, ','):
+ if arch in all_arches:
+ t[arch] = True
+ else:
+ E("invalid syscall architecture '%s' in '%s'" % (arch, line))
+ return
+
+ self.syscalls.append(t)
+
+ logging.debug(t)
+
+
+ def parse_file(self, file_path):
+ logging.debug("parse_file: %s" % file_path)
+ fp = open(file_path)
+ for line in fp.xreadlines():
+ self.lineno += 1
+ line = line.strip()
+ if not line: continue
+ if line[0] == '#': continue
+ self.parse_line(line)
+
+ fp.close()
+
+
class State:
def __init__(self):
self.old_stubs = []
@@ -444,7 +560,7 @@
def gen_glibc_syscalls_h(self):
# TODO: generate a separate file for each architecture, like glibc's bits/syscall.h.
glibc_syscalls_h_path = "include/sys/glibc-syscalls.h"
- D("generating " + glibc_syscalls_h_path)
+ logging.info("generating " + glibc_syscalls_h_path)
glibc_fp = create_file(glibc_syscalls_h_path)
glibc_fp.write("/* %s */\n" % warning)
glibc_fp.write("#ifndef _BIONIC_GLIBC_SYSCALLS_H_\n")
@@ -473,7 +589,7 @@
for arch in all_arches:
if syscall.has_key("asm-%s" % arch):
filename = "arch-%s/syscalls/%s.S" % (arch, syscall["func"])
- D2(">>> generating " + filename)
+ logging.info(">>> generating " + filename)
fp = create_file(filename)
fp.write(syscall["asm-%s" % arch])
fp.close()
@@ -481,28 +597,28 @@
def regenerate(self):
- D("scanning for existing architecture-specific stub files...")
+ logging.info("scanning for existing architecture-specific stub files...")
for arch in all_arches:
arch_dir = "arch-" + arch
- D("scanning " + os.path.join(bionic_libc_root, arch_dir))
+ logging.info("scanning " + os.path.join(bionic_libc_root, arch_dir))
rel_path = os.path.join(arch_dir, "syscalls")
for file in os.listdir(os.path.join(bionic_libc_root, rel_path)):
if file.endswith(".S"):
self.old_stubs.append(os.path.join(rel_path, file))
- D("found %d stub files" % len(self.old_stubs))
+ logging.info("found %d stub files" % len(self.old_stubs))
if not os.path.exists(bionic_temp):
- D("creating %s..." % bionic_temp)
+ logging.info("creating %s..." % bionic_temp)
make_dir(bionic_temp)
- D("re-generating stubs and support files...")
+ logging.info("re-generating stubs and support files...")
self.gen_glibc_syscalls_h()
self.gen_syscall_stubs()
- D("comparing files...")
+ logging.info("comparing files...")
adds = []
edits = []
@@ -511,18 +627,18 @@
libc_file = os.path.join(bionic_libc_root, stub)
if not os.path.exists(libc_file):
# new file, git add it
- D("new file: " + stub)
+ logging.info("new file: " + stub)
adds.append(libc_file)
shutil.copyfile(tmp_file, libc_file)
elif not filecmp.cmp(tmp_file, libc_file):
- D("changed file: " + stub)
+ logging.info("changed file: " + stub)
edits.append(stub)
deletes = []
for stub in self.old_stubs:
if not stub in self.new_stubs:
- D("deleted file: " + stub)
+ logging.info("deleted file: " + stub)
deletes.append(os.path.join(bionic_libc_root, stub))
if not DRY_RUN:
@@ -539,11 +655,11 @@
commands.getoutput("git add %s" % (os.path.join(bionic_libc_root, "SYSCALLS.TXT")))
if (not adds) and (not deletes) and (not edits):
- D("no changes detected!")
+ logging.info("no changes detected!")
else:
- D("ready to go!!")
+ logging.info("ready to go!!")
-D_setlevel(1)
+logging.basicConfig(level=logging.INFO)
state = State()
state.process_file(os.path.join(bionic_libc_root, "SYSCALLS.TXT"))
diff --git a/libc/upstream-freebsd/android/include/freebsd-compat.h b/libc/upstream-freebsd/android/include/freebsd-compat.h
index d5f1425..b44b94a 100644
--- a/libc/upstream-freebsd/android/include/freebsd-compat.h
+++ b/libc/upstream-freebsd/android/include/freebsd-compat.h
@@ -17,7 +17,7 @@
#ifndef _BIONIC_FREEBSD_COMPAT_H_included
#define _BIONIC_FREEBSD_COMPAT_H_included
-#define __USE_BSD
+#define _BSD_SOURCE
#define REPLACE_GETOPT
/*
diff --git a/libc/upstream-netbsd/android/include/namespace.h b/libc/upstream-netbsd/android/include/namespace.h
index 5df543c..630ea9b 100644
--- a/libc/upstream-netbsd/android/include/namespace.h
+++ b/libc/upstream-netbsd/android/include/namespace.h
@@ -17,11 +17,6 @@
#ifndef _BIONIC_NETBSD_NAMESPACE_H_included
#define _BIONIC_NETBSD_NAMESPACE_H_included
-// NetBSD uses __weak_alias on a lot of functions. We don't want that.
-#if defined(__weak_alias)
-#undef __weak_alias
-#endif
-
__LIBC_HIDDEN__ int __res_enable_mt(void);
__LIBC_HIDDEN__ int __res_disable_mt(void);
diff --git a/libc/upstream-netbsd/android/include/netbsd-compat.h b/libc/upstream-netbsd/android/include/netbsd-compat.h
index 84be931..04bc728 100644
--- a/libc/upstream-netbsd/android/include/netbsd-compat.h
+++ b/libc/upstream-netbsd/android/include/netbsd-compat.h
@@ -17,6 +17,9 @@
#ifndef _BIONIC_NETBSD_COMPAT_H_included
#define _BIONIC_NETBSD_COMPAT_H_included
+#define _BSD_SOURCE
+#define _GNU_SOURCE
+
// NetBSD uses _DIAGASSERT to null-check arguments and the like.
#include <assert.h>
#define _DIAGASSERT(e) ((e) ? (void) 0 : __assert2(__FILE__, __LINE__, __func__, #e))
@@ -24,9 +27,6 @@
// TODO: update our <sys/cdefs.h> to support this properly.
#define __type_fit(t, a) (0 == 0)
-#define _GNU_SOURCE
-#define __USE_BSD
-
// TODO: we don't yet have thread-safe environment variables.
#define __readlockenv() 0
#define __unlockenv() 0
diff --git a/libc/upstream-openbsd/android/include/openbsd-compat.h b/libc/upstream-openbsd/android/include/openbsd-compat.h
index 34ad2c5..630094d 100644
--- a/libc/upstream-openbsd/android/include/openbsd-compat.h
+++ b/libc/upstream-openbsd/android/include/openbsd-compat.h
@@ -17,10 +17,23 @@
#ifndef _BIONIC_OPENBSD_COMPAT_H_included
#define _BIONIC_OPENBSD_COMPAT_H_included
+#define _BSD_SOURCE
+
#include <sys/cdefs.h>
#include <stddef.h> // For size_t.
-#define __USE_BSD
+/* Redirect internal C library calls to the public function. */
+#define _err err
+#define _errx errx
+#define _verr verr
+#define _verrx verrx
+#define _vwarn vwarn
+#define _vwarnx vwarnx
+#define _warn warn
+#define _warnx warnx
+
+/* Ignore all __weak_alias in OpenBSD. */
+#define __weak_alias(alias,sym)
/* OpenBSD's <ctype.h> uses these names, which conflicted with stlport.
* Additionally, we changed the numeric/digit type from N to D for libcxx.
diff --git a/libc/upstream-openbsd/lib/libc/gen/daemon.c b/libc/upstream-openbsd/lib/libc/gen/daemon.c
new file mode 100644
index 0000000..79f4264
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/daemon.c
@@ -0,0 +1,64 @@
+/* $OpenBSD: daemon.c,v 1.7 2010/07/27 22:29:09 marco Exp $ */
+/*-
+ * Copyright (c) 1990, 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 <fcntl.h>
+#include <paths.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+int
+daemon(int nochdir, int noclose)
+{
+ int fd;
+
+ switch (fork()) {
+ case -1:
+ return (-1);
+ case 0:
+ break;
+ default:
+ _exit(0);
+ }
+
+ if (setsid() == -1)
+ return (-1);
+
+ if (!nochdir)
+ (void)chdir("/");
+
+ if (!noclose && (fd = open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
+ (void)dup2(fd, STDIN_FILENO);
+ (void)dup2(fd, STDOUT_FILENO);
+ (void)dup2(fd, STDERR_FILENO);
+ if (fd > 2)
+ (void)close(fd);
+ }
+ return (0);
+}
diff --git a/libc/upstream-openbsd/lib/libc/gen/err.c b/libc/upstream-openbsd/lib/libc/gen/err.c
new file mode 100644
index 0000000..e7ec29d
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/err.c
@@ -0,0 +1,47 @@
+/* $OpenBSD: err.c,v 1.11 2012/12/05 23:19:59 deraadt Exp $ */
+/*-
+ * Copyright (c) 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 <err.h>
+#include <stdarg.h>
+
+/* PRINTFLIKE2 */
+__dead void
+_err(int eval, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ _verr(eval, fmt, ap);
+ va_end(ap);
+}
+
+/* PRINTFLIKE2 */
+__weak_alias(err, _err);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/errx.c b/libc/upstream-openbsd/lib/libc/gen/errx.c
new file mode 100644
index 0000000..d213435
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/errx.c
@@ -0,0 +1,47 @@
+/* $OpenBSD: errx.c,v 1.10 2012/12/05 23:19:59 deraadt Exp $ */
+/*-
+ * Copyright (c) 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 <err.h>
+#include <stdarg.h>
+
+/* PRINTFLIKE2 */
+__dead void
+_errx(int eval, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ _verrx(eval, fmt, ap);
+ va_end(ap);
+}
+
+/* PRINTFLIKE2 */
+__weak_alias(errx, _errx);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/verr.c b/libc/upstream-openbsd/lib/libc/gen/verr.c
new file mode 100644
index 0000000..dcd8edc
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/verr.c
@@ -0,0 +1,56 @@
+/* $OpenBSD: verr.c,v 1.9 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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 <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+
+extern char *__progname; /* Program name, from crt0. */
+
+__dead void
+_verr(int eval, const char *fmt, va_list ap)
+{
+ int sverrno;
+
+ sverrno = errno;
+ (void)fprintf(stderr, "%s: ", __progname);
+ if (fmt != NULL) {
+ (void)vfprintf(stderr, fmt, ap);
+ (void)fprintf(stderr, ": ");
+ }
+ (void)fprintf(stderr, "%s\n", strerror(sverrno));
+ exit(eval);
+}
+
+__weak_alias(verr, _verr);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/verrx.c b/libc/upstream-openbsd/lib/libc/gen/verrx.c
new file mode 100644
index 0000000..60da062
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/verrx.c
@@ -0,0 +1,49 @@
+/* $OpenBSD: verrx.c,v 1.9 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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 <err.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+extern char *__progname; /* Program name, from crt0. */
+
+__dead void
+_verrx(int eval, const char *fmt, va_list ap)
+{
+ (void)fprintf(stderr, "%s: ", __progname);
+ if (fmt != NULL)
+ (void)vfprintf(stderr, fmt, ap);
+ (void)fprintf(stderr, "\n");
+ exit(eval);
+}
+
+__weak_alias(verrx, _verrx);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/vwarn.c b/libc/upstream-openbsd/lib/libc/gen/vwarn.c
new file mode 100644
index 0000000..26b60f3
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/vwarn.c
@@ -0,0 +1,54 @@
+/* $OpenBSD: vwarn.c,v 1.9 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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 <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+
+extern char *__progname; /* Program name, from crt0. */
+
+void
+_vwarn(const char *fmt, va_list ap)
+{
+ int sverrno;
+
+ sverrno = errno;
+ (void)fprintf(stderr, "%s: ", __progname);
+ if (fmt != NULL) {
+ (void)vfprintf(stderr, fmt, ap);
+ (void)fprintf(stderr, ": ");
+ }
+ (void)fprintf(stderr, "%s\n", strerror(sverrno));
+}
+
+__weak_alias(vwarn, _vwarn);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/vwarnx.c b/libc/upstream-openbsd/lib/libc/gen/vwarnx.c
new file mode 100644
index 0000000..e6b1957
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/vwarnx.c
@@ -0,0 +1,47 @@
+/* $OpenBSD: vwarnx.c,v 1.9 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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 <err.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+extern char *__progname; /* Program name, from crt0. */
+
+void
+_vwarnx(const char *fmt, va_list ap)
+{
+ (void)fprintf(stderr, "%s: ", __progname);
+ if (fmt != NULL)
+ (void)vfprintf(stderr, fmt, ap);
+ (void)fprintf(stderr, "\n");
+}
+
+__weak_alias(vwarnx, _vwarnx);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/warn.c b/libc/upstream-openbsd/lib/libc/gen/warn.c
new file mode 100644
index 0000000..c1b47a6
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/warn.c
@@ -0,0 +1,47 @@
+/* $OpenBSD: warn.c,v 1.10 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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 <err.h>
+#include <stdarg.h>
+
+/* PRINTFLIKE1 */
+void
+_warn(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ _vwarn(fmt, ap);
+ va_end(ap);
+}
+
+/* PRINTFLIKE1 */
+__weak_alias(warn, _warn);
+
diff --git a/libc/upstream-openbsd/lib/libc/gen/warnx.c b/libc/upstream-openbsd/lib/libc/gen/warnx.c
new file mode 100644
index 0000000..af2ab66
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/gen/warnx.c
@@ -0,0 +1,47 @@
+/* $OpenBSD: warnx.c,v 1.9 2012/12/05 23:20:00 deraadt Exp $ */
+/*-
+ * Copyright (c) 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 <err.h>
+#include <stdarg.h>
+
+/* PRINTFLIKE1 */
+void
+_warnx(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ _vwarnx(fmt, ap);
+ va_end(ap);
+}
+
+/* PRINTFLIKE1 */
+__weak_alias(warnx, _warnx);
+
diff --git a/libc/upstream-openbsd/lib/libc/net/res_random.c b/libc/upstream-openbsd/lib/libc/net/res_random.c
new file mode 100644
index 0000000..f28692f
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/net/res_random.c
@@ -0,0 +1,275 @@
+/* $OpenBSD: res_random.c,v 1.21 2014/07/20 04:22:34 guenther Exp $ */
+
+/*
+ * Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
+ * Copyright 2008 Damien Miller <djm@openbsd.org>
+ * All rights reserved.
+ *
+ * Theo de Raadt <deraadt@openbsd.org> came up with the idea of using
+ * such a mathematical system to generate more random (yet non-repeating)
+ * ids to solve the resolver/named problem. But Niels designed the
+ * actual system based on the constraints.
+ *
+ * Later modified by Damien Miller to wrap the LCG output in a 15-bit
+ * permutation generator based on a Luby-Rackoff block cipher. This
+ * ensures the output is non-repeating and preserves the MSB twiddle
+ * trick, but makes it more resistant to LCG prediction.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+/*
+ * seed = random 15bit
+ * n = prime, g0 = generator to n,
+ * j = random so that gcd(j,n-1) == 1
+ * g = g0^j mod n will be a generator again.
+ *
+ * X[0] = random seed.
+ * X[n] = a*X[n-1]+b mod m is a Linear Congruential Generator
+ * with a = 7^(even random) mod m,
+ * b = random with gcd(b,m) == 1
+ * m = 31104 and a maximal period of m-1.
+ *
+ * The transaction id is determined by:
+ * id[n] = seed xor (g^X[n] mod n)
+ *
+ * Effectivly the id is restricted to the lower 15 bits, thus
+ * yielding two different cycles by toggling the msb on and off.
+ * This avoids reuse issues caused by reseeding.
+ *
+ * The output of this generator is then randomly permuted though a
+ * custom 15 bit Luby-Rackoff block cipher.
+ */
+
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <sys/time.h>
+#include <resolv.h>
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "thread_private.h"
+
+#define RU_OUT 180 /* Time after wich will be reseeded */
+#define RU_MAX 30000 /* Uniq cycle, avoid blackjack prediction */
+#define RU_GEN 2 /* Starting generator */
+#define RU_N 32749 /* RU_N-1 = 2*2*3*2729 */
+#define RU_AGEN 7 /* determine ru_a as RU_AGEN^(2*rand) */
+#define RU_M 31104 /* RU_M = 2^7*3^5 - don't change */
+#define RU_ROUNDS 11 /* Number of rounds for permute (odd) */
+
+struct prf_ctx {
+ /* PRF lookup table for odd rounds (7 bits input to 8 bits output) */
+ u_char prf7[(RU_ROUNDS / 2) * (1 << 7)];
+
+ /* PRF lookup table for even rounds (8 bits input to 7 bits output) */
+ u_char prf8[((RU_ROUNDS + 1) / 2) * (1 << 8)];
+};
+
+#define PFAC_N 3
+static const u_int16_t pfacts[PFAC_N] = {
+ 2,
+ 3,
+ 2729
+};
+
+static u_int16_t ru_x;
+static u_int16_t ru_seed, ru_seed2;
+static u_int16_t ru_a, ru_b;
+static u_int16_t ru_g;
+static u_int16_t ru_counter = 0;
+static u_int16_t ru_msb = 0;
+static struct prf_ctx *ru_prf = NULL;
+static time_t ru_reseed;
+
+static u_int16_t pmod(u_int16_t, u_int16_t, u_int16_t);
+static void res_initid(void);
+
+/*
+ * Do a fast modular exponation, returned value will be in the range
+ * of 0 - (mod-1)
+ */
+static u_int16_t
+pmod(u_int16_t gen, u_int16_t exp, u_int16_t mod)
+{
+ u_int16_t s, t, u;
+
+ s = 1;
+ t = gen;
+ u = exp;
+
+ while (u) {
+ if (u & 1)
+ s = (s * t) % mod;
+ u >>= 1;
+ t = (t * t) % mod;
+ }
+ return (s);
+}
+
+/*
+ * 15-bit permutation based on Luby-Rackoff block cipher
+ */
+static u_int
+permute15(u_int in)
+{
+ int i;
+ u_int left, right, tmp;
+
+ if (ru_prf == NULL)
+ return in;
+
+ left = (in >> 8) & 0x7f;
+ right = in & 0xff;
+
+ /*
+ * Each round swaps the width of left and right. Even rounds have
+ * a 7-bit left, odd rounds have an 8-bit left. Since this uses an
+ * odd number of rounds, left is always 8 bits wide at the end.
+ */
+ for (i = 0; i < RU_ROUNDS; i++) {
+ if ((i & 1) == 0)
+ tmp = ru_prf->prf8[(i << (8 - 1)) | right] & 0x7f;
+ else
+ tmp = ru_prf->prf7[((i - 1) << (7 - 1)) | right];
+ tmp ^= left;
+ left = right;
+ right = tmp;
+ }
+
+ return (right << 8) | left;
+}
+
+/*
+ * Initializes the seed and chooses a suitable generator. Also toggles
+ * the msb flag. The msb flag is used to generate two distinct
+ * cycles of random numbers and thus avoiding reuse of ids.
+ *
+ * This function is called from res_randomid() when needed, an
+ * application does not have to worry about it.
+ */
+static void
+res_initid(void)
+{
+ u_int16_t j, i;
+ u_int32_t tmp;
+ int noprime = 1;
+ struct timespec ts;
+
+ ru_x = arc4random_uniform(RU_M);
+
+ /* 15 bits of random seed */
+ tmp = arc4random();
+ ru_seed = (tmp >> 16) & 0x7FFF;
+ ru_seed2 = tmp & 0x7FFF;
+
+ /* Determine the LCG we use */
+ tmp = arc4random();
+ ru_b = (tmp & 0xfffe) | 1;
+ ru_a = pmod(RU_AGEN, (tmp >> 16) & 0xfffe, RU_M);
+ while (ru_b % 3 == 0)
+ ru_b += 2;
+
+ j = arc4random_uniform(RU_N);
+
+ /*
+ * Do a fast gcd(j,RU_N-1), so we can find a j with
+ * gcd(j, RU_N-1) == 1, giving a new generator for
+ * RU_GEN^j mod RU_N
+ */
+
+ while (noprime) {
+ for (i = 0; i < PFAC_N; i++)
+ if (j % pfacts[i] == 0)
+ break;
+
+ if (i >= PFAC_N)
+ noprime = 0;
+ else
+ j = (j + 1) % RU_N;
+ }
+
+ ru_g = pmod(RU_GEN, j, RU_N);
+ ru_counter = 0;
+
+ /* Initialise PRF for Luby-Rackoff permutation */
+ if (ru_prf == NULL)
+ ru_prf = malloc(sizeof(*ru_prf));
+ if (ru_prf != NULL)
+ arc4random_buf(ru_prf, sizeof(*ru_prf));
+
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+ ru_reseed = ts.tv_sec + RU_OUT;
+ ru_msb = ru_msb == 0x8000 ? 0 : 0x8000;
+}
+
+u_int
+res_randomid(void)
+{
+ struct timespec ts;
+ u_int r;
+ _THREAD_PRIVATE_MUTEX(random);
+
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+
+ _THREAD_PRIVATE_MUTEX_LOCK(random);
+
+ if (ru_counter >= RU_MAX || ts.tv_sec > ru_reseed)
+ res_initid();
+
+ /* Linear Congruential Generator */
+ ru_x = (ru_a * ru_x + ru_b) % RU_M;
+ ru_counter++;
+
+ r = permute15(ru_seed ^ pmod(ru_g, ru_seed2 + ru_x, RU_N)) | ru_msb;
+
+ _THREAD_PRIVATE_MUTEX_UNLOCK(random);
+
+ return (r);
+}
+
+#if 0
+int
+main(int argc, char **argv)
+{
+ int i, n;
+ u_int16_t wert;
+
+ res_initid();
+
+ printf("Generator: %u\n", ru_g);
+ printf("Seed: %u\n", ru_seed);
+ printf("Reseed at %ld\n", ru_reseed);
+ printf("Ru_X: %u\n", ru_x);
+ printf("Ru_A: %u\n", ru_a);
+ printf("Ru_B: %u\n", ru_b);
+
+ n = argc > 1 ? atoi(argv[1]) : 60001;
+ for (i=0;i<n;i++) {
+ wert = res_randomid();
+ printf("%u\n", wert);
+ }
+ return 0;
+}
+#endif
+
diff --git a/libc/upstream-openbsd/lib/libc/stdio/fmemopen.c b/libc/upstream-openbsd/lib/libc/stdio/fmemopen.c
new file mode 100644
index 0000000..8cda047
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdio/fmemopen.c
@@ -0,0 +1,183 @@
+/* $OpenBSD: fmemopen.c,v 1.2 2013/03/27 15:06:25 mpi Exp $ */
+
+/*
+ * Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
+ * Copyright (c) 2009 Ted Unangst
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "local.h"
+
+struct state {
+ char *string; /* actual stream */
+ size_t pos; /* current position */
+ size_t size; /* allocated size */
+ size_t len; /* length of the data */
+ int update; /* open for update */
+};
+
+static int
+fmemopen_read(void *v, char *b, int l)
+{
+ struct state *st = v;
+ int i;
+
+ for (i = 0; i < l && i + st->pos < st->len; i++)
+ b[i] = st->string[st->pos + i];
+ st->pos += i;
+
+ return (i);
+}
+
+static int
+fmemopen_write(void *v, const char *b, int l)
+{
+ struct state *st = v;
+ int i;
+
+ for (i = 0; i < l && i + st->pos < st->size; i++)
+ st->string[st->pos + i] = b[i];
+ st->pos += i;
+
+ if (st->pos >= st->len) {
+ st->len = st->pos;
+
+ if (st->len < st->size)
+ st->string[st->len] = '\0';
+ else if (!st->update)
+ st->string[st->size - 1] = '\0';
+ }
+
+ return (i);
+}
+
+static fpos_t
+fmemopen_seek(void *v, fpos_t off, int whence)
+{
+ struct state *st = v;
+ ssize_t base = 0;
+
+ switch (whence) {
+ case SEEK_SET:
+ break;
+ case SEEK_CUR:
+ base = st->pos;
+ break;
+ case SEEK_END:
+ base = st->len;
+ break;
+ }
+
+ if (off > st->size - base || off < -base) {
+ errno = EOVERFLOW;
+ return (-1);
+ }
+
+ st->pos = base + off;
+
+ return (st->pos);
+}
+
+static int
+fmemopen_close(void *v)
+{
+ free(v);
+
+ return (0);
+}
+
+static int
+fmemopen_close_free(void *v)
+{
+ struct state *st = v;
+
+ free(st->string);
+ free(st);
+
+ return (0);
+}
+
+FILE *
+fmemopen(void *buf, size_t size, const char *mode)
+{
+ struct state *st;
+ FILE *fp;
+ int flags, oflags;
+
+ if (size == 0) {
+ errno = EINVAL;
+ return (NULL);
+ }
+
+ if ((flags = __sflags(mode, &oflags)) == 0) {
+ errno = EINVAL;
+ return (NULL);
+ }
+
+ if (buf == NULL && ((oflags & O_RDWR) == 0)) {
+ errno = EINVAL;
+ return (NULL);
+ }
+
+ if ((st = malloc(sizeof(*st))) == NULL)
+ return (NULL);
+
+ if ((fp = __sfp()) == NULL) {
+ free(st);
+ return (NULL);
+ }
+
+ st->pos = 0;
+ st->len = (oflags & O_WRONLY) ? 0 : size;
+ st->size = size;
+ st->update = oflags & O_RDWR;
+
+ if (buf == NULL) {
+ if ((st->string = malloc(size)) == NULL) {
+ free(st);
+ fp->_flags = 0;
+ return (NULL);
+ }
+ *st->string = '\0';
+ } else {
+ st->string = (char *)buf;
+
+ if (oflags & O_TRUNC)
+ *st->string = '\0';
+
+ if (oflags & O_APPEND) {
+ char *p;
+
+ if ((p = memchr(st->string, '\0', size)) != NULL)
+ st->pos = st->len = (p - st->string);
+ else
+ st->pos = st->len = size;
+ }
+ }
+
+ fp->_flags = (short)flags;
+ fp->_file = -1;
+ fp->_cookie = (void *)st;
+ fp->_read = (flags & __SWR) ? NULL : fmemopen_read;
+ fp->_write = (flags & __SRD) ? NULL : fmemopen_write;
+ fp->_seek = fmemopen_seek;
+ fp->_close = (buf == NULL) ? fmemopen_close_free : fmemopen_close;
+
+ return (fp);
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdio/open_memstream.c b/libc/upstream-openbsd/lib/libc/stdio/open_memstream.c
new file mode 100644
index 0000000..4610535
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdio/open_memstream.c
@@ -0,0 +1,158 @@
+/* $OpenBSD: open_memstream.c,v 1.3 2013/04/03 03:11:53 guenther Exp $ */
+
+/*
+ * Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/param.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "local.h"
+
+struct state {
+ char *string; /* actual stream */
+ char **pbuf; /* point to the stream */
+ size_t *psize; /* point to min(pos, len) */
+ size_t pos; /* current position */
+ size_t size; /* number of allocated char */
+ size_t len; /* length of the data */
+};
+
+static int
+memstream_write(void *v, const char *b, int l)
+{
+ struct state *st = v;
+ char *p;
+ size_t i, end;
+
+ end = (st->pos + l);
+
+ if (end >= st->size) {
+ /* 1.6 is (very) close to the golden ratio. */
+ size_t sz = st->size * 8 / 5;
+
+ if (sz < end + 1)
+ sz = end + 1;
+ p = realloc(st->string, sz);
+ if (!p)
+ return (-1);
+ bzero(p + st->size, sz - st->size);
+ *st->pbuf = st->string = p;
+ st->size = sz;
+ }
+
+ for (i = 0; i < l; i++)
+ st->string[st->pos + i] = b[i];
+ st->pos += l;
+
+ if (st->pos > st->len) {
+ st->len = st->pos;
+ st->string[st->len] = '\0';
+ }
+
+ *st->psize = st->pos;
+
+ return (i);
+}
+
+static fpos_t
+memstream_seek(void *v, fpos_t off, int whence)
+{
+ struct state *st = v;
+ ssize_t base = 0;
+
+ switch (whence) {
+ case SEEK_SET:
+ break;
+ case SEEK_CUR:
+ base = st->pos;
+ break;
+ case SEEK_END:
+ base = st->len;
+ break;
+ }
+
+ if (off > SIZE_MAX - base || off < -base) {
+ errno = EOVERFLOW;
+ return (-1);
+ }
+
+ st->pos = base + off;
+ *st->psize = MIN(st->pos, st->len);
+
+ return (st->pos);
+}
+
+static int
+memstream_close(void *v)
+{
+ struct state *st = v;
+
+ free(st);
+
+ return (0);
+}
+
+FILE *
+open_memstream(char **pbuf, size_t *psize)
+{
+ struct state *st;
+ FILE *fp;
+
+ if (pbuf == NULL || psize == NULL) {
+ errno = EINVAL;
+ return (NULL);
+ }
+
+ if ((st = malloc(sizeof(*st))) == NULL)
+ return (NULL);
+
+ if ((fp = __sfp()) == NULL) {
+ free(st);
+ return (NULL);
+ }
+
+ st->size = BUFSIZ;
+ if ((st->string = calloc(1, st->size)) == NULL) {
+ free(st);
+ fp->_flags = 0;
+ return (NULL);
+ }
+
+ *st->string = '\0';
+ st->pos = 0;
+ st->len = 0;
+ st->pbuf = pbuf;
+ st->psize = psize;
+
+ *pbuf = st->string;
+ *psize = st->len;
+
+ fp->_flags = __SWR;
+ fp->_file = -1;
+ fp->_cookie = st;
+ fp->_read = NULL;
+ fp->_write = memstream_write;
+ fp->_seek = memstream_seek;
+ fp->_close = memstream_close;
+ _SET_ORIENTATION(fp, -1);
+
+ return (fp);
+}
diff --git a/libc/upstream-openbsd/lib/libc/stdio/open_wmemstream.c b/libc/upstream-openbsd/lib/libc/stdio/open_wmemstream.c
new file mode 100644
index 0000000..9414187
--- /dev/null
+++ b/libc/upstream-openbsd/lib/libc/stdio/open_wmemstream.c
@@ -0,0 +1,169 @@
+/* $OpenBSD: open_wmemstream.c,v 1.3 2014/03/06 07:28:21 gerhard Exp $ */
+
+/*
+ * Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/param.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+#include "local.h"
+
+struct state {
+ wchar_t *string; /* actual stream */
+ wchar_t **pbuf; /* point to the stream */
+ size_t *psize; /* point to min(pos, len) */
+ size_t pos; /* current position */
+ size_t size; /* number of allocated wchar_t */
+ size_t len; /* length of the data */
+ mbstate_t mbs; /* conversion state of the stream */
+};
+
+static int
+wmemstream_write(void *v, const char *b, int l)
+{
+ struct state *st = v;
+ wchar_t *p;
+ size_t nmc, len, end;
+
+ end = (st->pos + l);
+
+ if (end >= st->size) {
+ /* 1.6 is (very) close to the golden ratio. */
+ size_t sz = st->size * 8 / 5;
+
+ if (sz < end + 1)
+ sz = end + 1;
+ p = realloc(st->string, sz * sizeof(wchar_t));
+ if (!p)
+ return (-1);
+ bzero(p + st->size, (sz - st->size) * sizeof(wchar_t));
+ *st->pbuf = st->string = p;
+ st->size = sz;
+ }
+
+ nmc = (st->size - st->pos) * sizeof(wchar_t);
+ len = mbsnrtowcs(st->string + st->pos, &b, nmc, l, &st->mbs);
+ if (len == (size_t)-1)
+ return (-1);
+ st->pos += len;
+
+ if (st->pos > st->len) {
+ st->len = st->pos;
+ st->string[st->len] = L'\0';
+ }
+
+ *st->psize = st->pos;
+
+ return (len);
+}
+
+static fpos_t
+wmemstream_seek(void *v, fpos_t off, int whence)
+{
+ struct state *st = v;
+ ssize_t base = 0;
+
+ switch (whence) {
+ case SEEK_SET:
+ break;
+ case SEEK_CUR:
+ base = st->pos;
+ break;
+ case SEEK_END:
+ base = st->len;
+ break;
+ }
+
+ if (off > (SIZE_MAX / sizeof(wchar_t)) - base || off < -base) {
+ errno = EOVERFLOW;
+ return (-1);
+ }
+
+ /*
+ * XXX Clearing mbs here invalidates shift state for state-
+ * dependent encodings, but they are not (yet) supported.
+ */
+ bzero(&st->mbs, sizeof(st->mbs));
+
+ st->pos = base + off;
+ *st->psize = MIN(st->pos, st->len);
+
+ return (st->pos);
+}
+
+static int
+wmemstream_close(void *v)
+{
+ struct state *st = v;
+
+ free(st);
+
+ return (0);
+}
+
+FILE *
+open_wmemstream(wchar_t **pbuf, size_t *psize)
+{
+ struct state *st;
+ FILE *fp;
+
+ if (pbuf == NULL || psize == NULL) {
+ errno = EINVAL;
+ return (NULL);
+ }
+
+ if ((st = malloc(sizeof(*st))) == NULL)
+ return (NULL);
+
+ if ((fp = __sfp()) == NULL) {
+ free(st);
+ return (NULL);
+ }
+
+ st->size = BUFSIZ * sizeof(wchar_t);
+ if ((st->string = calloc(1, st->size)) == NULL) {
+ free(st);
+ fp->_flags = 0;
+ return (NULL);
+ }
+
+ *st->string = L'\0';
+ st->pos = 0;
+ st->len = 0;
+ st->pbuf = pbuf;
+ st->psize = psize;
+ bzero(&st->mbs, sizeof(st->mbs));
+
+ *pbuf = st->string;
+ *psize = st->len;
+
+ fp->_flags = __SWR;
+ fp->_file = -1;
+ fp->_cookie = st;
+ fp->_read = NULL;
+ fp->_write = wmemstream_write;
+ fp->_seek = wmemstream_seek;
+ fp->_close = wmemstream_close;
+ _SET_ORIENTATION(fp, 1);
+
+ return (fp);
+}
diff --git a/libc/zoneinfo/tzdata b/libc/zoneinfo/tzdata
index 9547f58..8d574f5 100644
--- a/libc/zoneinfo/tzdata
+++ b/libc/zoneinfo/tzdata
Binary files differ
diff --git a/libm/Android.mk b/libm/Android.mk
index 994caa0..f59b71f 100644
--- a/libm/Android.mk
+++ b/libm/Android.mk
@@ -255,6 +255,10 @@
# libm.a for target.
#
include $(CLEAR_VARS)
+ifneq (,$(filter $(TARGET_ARCH),x86 x86_64))
+# Clang has wrong long double sizes for x86.
+LOCAL_CLANG := false
+endif
LOCAL_MODULE:= libm
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_ARM_MODE := arm
@@ -287,6 +291,10 @@
# libm.so for target.
#
include $(CLEAR_VARS)
+ifneq (,$(filter $(TARGET_ARCH),x86 x86_64))
+# Clang has wrong long double sizes for x86.
+LOCAL_CLANG := false
+endif
LOCAL_MODULE:= libm
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
diff --git a/libm/include/math.h b/libm/include/math.h
index 4faec33..1fcc578 100644
--- a/libm/include/math.h
+++ b/libm/include/math.h
@@ -36,11 +36,11 @@
float __uf;
} __nan;
-#if __GNUC_PREREQ__(3, 3) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
+#if __GNUC_PREREQ(3, 3) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
#define __MATH_BUILTIN_CONSTANTS
#endif
-#if __GNUC_PREREQ__(3, 0) && !defined(__INTEL_COMPILER)
+#if __GNUC_PREREQ(3, 0) && !defined(__INTEL_COMPILER)
#define __MATH_BUILTIN_RELOPS
#endif
@@ -462,11 +462,11 @@
#endif /* __ISO_C_VISIBLE >= 1999 */
-#if defined(_GNU_SOURCE)
+#if defined(__USE_GNU)
void sincos(double, double*, double*);
void sincosf(float, float*, float*);
void sincosl(long double, long double*, long double*);
-#endif /* _GNU_SOURCE */
+#endif /* __USE_GNU */
#pragma GCC visibility pop
__END_DECLS
diff --git a/libm/sincos.c b/libm/sincos.c
index ad75549..a5608cf 100644
--- a/libm/sincos.c
+++ b/libm/sincos.c
@@ -22,8 +22,8 @@
* 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.
- *
*/
+
#define _GNU_SOURCE 1
#include <math.h>
diff --git a/libstdc++/Android.mk b/libstdc++/Android.mk
deleted file mode 100644
index ff9609a..0000000
--- a/libstdc++/Android.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := src/libstdc++.cpp
-LOCAL_MODULE:= libstdc++
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-LOCAL_SYSTEM_SHARED_LIBRARIES := libc
-include $(BUILD_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES:= src/libstdc++.cpp
-LOCAL_MODULE:= libstdc++
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-LOCAL_SYSTEM_SHARED_LIBRARIES := libc
-include $(BUILD_STATIC_LIBRARY)
diff --git a/libstdc++/include/new b/libstdc++/include/new
index 0253e8b..c5a43de 100644
--- a/libstdc++/include/new
+++ b/libstdc++/include/new
@@ -13,19 +13,19 @@
void* operator new(std::size_t);
void* operator new[](std::size_t);
-void operator delete(void*);
-void operator delete[](void*);
+void operator delete(void*) throw();
+void operator delete[](void*) throw();
void* operator new(std::size_t, const std::nothrow_t&);
void* operator new[](std::size_t, const std::nothrow_t&);
-void operator delete(void*, const std::nothrow_t&);
-void operator delete[](void*, const std::nothrow_t&);
+void operator delete(void*, const std::nothrow_t&) throw();
+void operator delete[](void*, const std::nothrow_t&) throw();
inline void* operator new(std::size_t, void* p) { return p; }
inline void* operator new[](std::size_t, void* p) { return p; }
// these next two are not really required, since exceptions are off
-inline void operator delete(void*, void*) { }
-inline void operator delete[](void*, void*) { }
+inline void operator delete(void*, void*) throw() { }
+inline void operator delete[](void*, void*) throw() { }
} // extern C++
diff --git a/libstdc++/src/libstdc++.cpp b/libstdc++/src/libstdc++.cpp
deleted file mode 100644
index 3676aa1..0000000
--- a/libstdc++/src/libstdc++.cpp
+++ /dev/null
@@ -1 +0,0 @@
-extern "C" void __this_library_is_now_part_of_libc() {}
diff --git a/linker/Android.mk b/linker/Android.mk
index 5853c90..d6e0095 100644
--- a/linker/Android.mk
+++ b/linker/Android.mk
@@ -8,6 +8,7 @@
linker.cpp \
linker_allocator.cpp \
linker_environ.cpp \
+ linker_libc_support.c \
linker_phdr.cpp \
rt.cpp \
@@ -44,13 +45,11 @@
# TODO: split out the asflags.
LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk $(LOCAL_PATH)/linker_executable.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_STATIC_LIBRARIES := libc_nomalloc
-LOCAL_FORCE_STATIC_EXECUTABLE := true # not necessary when not including BUILD_EXECUTABLE
-
-LOCAL_2ND_ARCH_VAR_PREFIX := $(linker_2nd_arch_var_prefix)
+LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_MODULE := linker
LOCAL_MODULE_STEM_32 := linker
@@ -61,17 +60,12 @@
# meaningful name resolution.
LOCAL_STRIP_MODULE := keep_symbols
-include $(LOCAL_PATH)/linker_executable.mk
-ifdef TARGET_2ND_ARCH
-LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX)
-OVERRIDE_BUILT_MODULE_PATH :=
-LOCAL_BUILT_MODULE :=
-LOCAL_INSTALLED_MODULE :=
-LOCAL_MODULE_STEM :=
-LOCAL_BUILT_MODULE_STEM :=
-LOCAL_INSTALLED_MODULE_STEM :=
-LOCAL_INTERMEDIATE_TARGETS :=
-include $(LOCAL_PATH)/linker_executable.mk
-endif
+# Insert an extra objcopy step to add prefix to symbols.
+# Note we are using "=" instead of ":=" to defer the evaluation,
+# because LOCAL_2ND_ARCH_VAR_PREFIX or linked_module isn't set properly yet at this point.
+LOCAL_POST_LINK_CMD = $(hide) $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJCOPY) \
+ --prefix-symbols=__dl_ $(linked_module)
+
+include $(BUILD_EXECUTABLE)
include $(call first-makefiles-under,$(LOCAL_PATH))
diff --git a/linker/debugger.cpp b/linker/debugger.cpp
index 079682c..6565985 100644
--- a/linker/debugger.cpp
+++ b/linker/debugger.cpp
@@ -162,17 +162,17 @@
thread_name[MAX_TASK_NAME_LEN] = 0;
}
- // "info" will be NULL if the siginfo_t information was not available.
+ // "info" will be null if the siginfo_t information was not available.
// Many signals don't have an address or a code.
char code_desc[32]; // ", code -6"
char addr_desc[32]; // ", fault addr 0x1234"
addr_desc[0] = code_desc[0] = 0;
- if (info != NULL) {
+ if (info != nullptr) {
// For a rethrown signal, this si_code will be right and the one debuggerd shows will
// always be SI_TKILL.
- snprintf(code_desc, sizeof(code_desc), ", code %d", info->si_code);
+ __libc_format_buffer(code_desc, sizeof(code_desc), ", code %d", info->si_code);
if (has_address) {
- snprintf(addr_desc, sizeof(addr_desc), ", fault addr %p", info->si_addr);
+ __libc_format_buffer(addr_desc, sizeof(addr_desc), ", fault addr %p", info->si_addr);
}
}
__libc_format_log(ANDROID_LOG_FATAL, "libc",
@@ -198,7 +198,7 @@
}
bool result = (old_action.sa_flags & SA_SIGINFO) != 0;
- if (sigaction(signum, &old_action, NULL) == -1) {
+ if (sigaction(signum, &old_action, nullptr) == -1) {
__libc_format_log(ANDROID_LOG_WARN, "libc", "Restore failed in test for SA_SIGINFO: %s",
strerror(errno));
}
@@ -230,7 +230,7 @@
msg.action = DEBUGGER_ACTION_CRASH;
msg.tid = gettid();
msg.abort_msg_address = reinterpret_cast<uintptr_t>(g_abort_message);
- msg.original_si_code = (info != NULL) ? info->si_code : 0;
+ msg.original_si_code = (info != nullptr) ? info->si_code : 0;
int ret = TEMP_FAILURE_RETRY(write(s, &msg, sizeof(msg)));
if (ret == sizeof(msg)) {
char debuggerd_ack;
@@ -255,7 +255,7 @@
// It's possible somebody cleared the SA_SIGINFO flag, which would mean
// our "info" arg holds an undefined value.
if (!have_siginfo(signal_number)) {
- info = NULL;
+ info = nullptr;
}
log_signal_summary(signal_number, info);
@@ -296,14 +296,14 @@
// Use the alternate signal stack if available so we can catch stack overflows.
action.sa_flags |= SA_ONSTACK;
- sigaction(SIGABRT, &action, NULL);
- sigaction(SIGBUS, &action, NULL);
- sigaction(SIGFPE, &action, NULL);
- sigaction(SIGILL, &action, NULL);
- sigaction(SIGPIPE, &action, NULL);
- sigaction(SIGSEGV, &action, NULL);
+ sigaction(SIGABRT, &action, nullptr);
+ sigaction(SIGBUS, &action, nullptr);
+ sigaction(SIGFPE, &action, nullptr);
+ sigaction(SIGILL, &action, nullptr);
+ sigaction(SIGPIPE, &action, nullptr);
+ sigaction(SIGSEGV, &action, nullptr);
#if defined(SIGSTKFLT)
- sigaction(SIGSTKFLT, &action, NULL);
+ sigaction(SIGSTKFLT, &action, nullptr);
#endif
- sigaction(SIGTRAP, &action, NULL);
+ sigaction(SIGTRAP, &action, nullptr);
}
diff --git a/linker/dlfcn.cpp b/linker/dlfcn.cpp
index 8ebf357..3024b3c 100644
--- a/linker/dlfcn.cpp
+++ b/linker/dlfcn.cpp
@@ -42,7 +42,7 @@
static void __bionic_format_dlerror(const char* msg, const char* detail) {
char* buffer = __get_thread()->dlerror_buffer;
strlcpy(buffer, msg, __BIONIC_DLERROR_BUFFER_SIZE);
- if (detail != NULL) {
+ if (detail != nullptr) {
strlcat(buffer, ": ", __BIONIC_DLERROR_BUFFER_SIZE);
strlcat(buffer, detail, __BIONIC_DLERROR_BUFFER_SIZE);
}
@@ -51,7 +51,7 @@
}
const char* dlerror() {
- const char* old_value = __bionic_set_dlerror(NULL);
+ const char* old_value = __bionic_set_dlerror(nullptr);
return old_value;
}
@@ -68,9 +68,9 @@
static void* dlopen_ext(const char* filename, int flags, const android_dlextinfo* extinfo) {
ScopedPthreadMutexLocker locker(&g_dl_mutex);
soinfo* result = do_dlopen(filename, flags, extinfo);
- if (result == NULL) {
+ if (result == nullptr) {
__bionic_format_dlerror("dlopen failed", linker_get_error_buffer());
- return NULL;
+ return nullptr;
}
return result;
}
@@ -80,45 +80,52 @@
}
void* dlopen(const char* filename, int flags) {
- return dlopen_ext(filename, flags, NULL);
+ return dlopen_ext(filename, flags, nullptr);
}
void* dlsym(void* handle, const char* symbol) {
ScopedPthreadMutexLocker locker(&g_dl_mutex);
#if !defined(__LP64__)
- if (handle == NULL) {
- __bionic_format_dlerror("dlsym library handle is null", NULL);
- return NULL;
+ if (handle == nullptr) {
+ __bionic_format_dlerror("dlsym library handle is null", nullptr);
+ return nullptr;
}
#endif
- if (symbol == NULL) {
- __bionic_format_dlerror("dlsym symbol name is null", NULL);
- return NULL;
+ if (symbol == nullptr) {
+ __bionic_format_dlerror("dlsym symbol name is null", nullptr);
+ return nullptr;
}
- soinfo* found = NULL;
- ElfW(Sym)* sym = NULL;
- void* caller_addr = __builtin_return_address(0);
- soinfo* caller_si = find_containing_library(caller_addr);
-
+ soinfo* found = nullptr;
+ ElfW(Sym)* sym = nullptr;
if (handle == RTLD_DEFAULT) {
- sym = dlsym_linear_lookup(symbol, &found, NULL, caller_si);
+ sym = dlsym_linear_lookup(symbol, &found, nullptr);
} else if (handle == RTLD_NEXT) {
- sym = NULL;
- if (caller_si && caller_si->next) {
- sym = dlsym_linear_lookup(symbol, &found, caller_si->next, caller_si);
+ void* caller_addr = __builtin_return_address(0);
+ soinfo* si = find_containing_library(caller_addr);
+
+ sym = nullptr;
+ if (si && si->next) {
+ sym = dlsym_linear_lookup(symbol, &found, si->next);
}
} else {
- sym = dlsym_handle_lookup(reinterpret_cast<soinfo*>(handle), &found, symbol, caller_si);
+ sym = dlsym_handle_lookup(reinterpret_cast<soinfo*>(handle), &found, symbol);
}
- if (sym != NULL && sym->st_shndx != 0) {
- return reinterpret_cast<void*>(sym->st_value + found->load_bias);
+ if (sym != nullptr) {
+ unsigned bind = ELF_ST_BIND(sym->st_info);
+
+ if ((bind == STB_GLOBAL || bind == STB_WEAK) && sym->st_shndx != 0) {
+ return reinterpret_cast<void*>(sym->st_value + found->load_bias);
+ }
+
+ __bionic_format_dlerror("symbol found but not global", symbol);
+ return nullptr;
} else {
__bionic_format_dlerror("undefined symbol", symbol);
- return NULL;
+ return nullptr;
}
}
@@ -127,7 +134,7 @@
// Determine if this address can be found in any library currently mapped.
soinfo* si = find_containing_library(addr);
- if (si == NULL) {
+ if (si == nullptr) {
return 0;
}
@@ -139,7 +146,7 @@
// Determine if any symbol in the library contains the specified address.
ElfW(Sym)* sym = dladdr_find_symbol(si, addr);
- if (sym != NULL) {
+ if (sym != nullptr) {
info->dli_sname = si->strtab + sym->st_name;
info->dli_saddr = reinterpret_cast<void*>(si->load_bias + sym->st_value);
}
@@ -157,7 +164,7 @@
// name_offset: starting index of the name in libdl_info.strtab
#define ELF32_SYM_INITIALIZER(name_offset, value, shndx) \
{ name_offset, \
- reinterpret_cast<Elf32_Addr>(reinterpret_cast<void*>(value)), \
+ reinterpret_cast<Elf32_Addr>(value), \
/* st_size */ 0, \
(shndx == 0) ? 0 : (STB_GLOBAL << 4), \
/* st_other */ 0, \
@@ -169,7 +176,7 @@
(shndx == 0) ? 0 : (STB_GLOBAL << 4), \
/* st_other */ 0, \
shndx, \
- reinterpret_cast<Elf64_Addr>(reinterpret_cast<void*>(value)), \
+ reinterpret_cast<Elf64_Addr>(value), \
/* st_size */ 0, \
}
@@ -192,7 +199,7 @@
// This is actually the STH_UNDEF entry. Technically, it's
// supposed to have st_name == 0, but instead, it points to an index
// in the strtab with a \0 to make iterating through the symtab easier.
- ELFW(SYM_INITIALIZER)(sizeof(ANDROID_LIBDL_STRTAB) - 1, NULL, 0),
+ ELFW(SYM_INITIALIZER)(sizeof(ANDROID_LIBDL_STRTAB) - 1, nullptr, 0),
ELFW(SYM_INITIALIZER)( 0, &dlopen, 1),
ELFW(SYM_INITIALIZER)( 7, &dlclose, 1),
ELFW(SYM_INITIALIZER)( 15, &dlsym, 1),
@@ -225,17 +232,12 @@
static unsigned g_libdl_chains[] = { 0, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
#endif
-// Defined as global because we do not yet have access
-// to synchronization functions __cxa_guard_* needed
-// to define statics inside functions.
-static soinfo __libdl_info;
+static soinfo __libdl_info("libdl.so", nullptr);
// This is used by the dynamic linker. Every process gets these symbols for free.
soinfo* get_libdl_info() {
- if (__libdl_info.name[0] == '\0') {
- // initialize
- strncpy(__libdl_info.name, "libdl.so", sizeof(__libdl_info.name));
- __libdl_info.flags = FLAG_LINKED | FLAG_NEW_SOINFO;
+ if ((__libdl_info.flags & FLAG_LINKED) == 0) {
+ __libdl_info.flags |= FLAG_LINKED;
__libdl_info.strtab = ANDROID_LIBDL_STRTAB;
__libdl_info.symtab = g_libdl_symtab;
__libdl_info.nbucket = sizeof(g_libdl_buckets)/sizeof(unsigned);
@@ -243,6 +245,7 @@
__libdl_info.bucket = g_libdl_buckets;
__libdl_info.chain = g_libdl_chains;
__libdl_info.has_DT_SYMBOLIC = true;
+ __libdl_info.ref_count = 1;
}
return &__libdl_info;
diff --git a/linker/linked_list.h b/linker/linked_list.h
index 8096e62..4e62e20 100644
--- a/linker/linked_list.h
+++ b/linker/linked_list.h
@@ -32,6 +32,9 @@
class LinkedList {
public:
LinkedList() : head_(nullptr), tail_(nullptr) {}
+ ~LinkedList() {
+ clear();
+ }
void push_front(T* const element) {
LinkedListEntry<T>* new_entry = Allocator::alloc();
@@ -83,26 +86,54 @@
}
template<typename F>
- void for_each(F&& action) {
- for (LinkedListEntry<T>* e = head_; e != nullptr; e = e->next) {
- if (e->element != nullptr) {
- action(e->element);
- }
- }
+ void for_each(F action) {
+ visit([&] (T* si) {
+ action(si);
+ return true;
+ });
}
template<typename F>
- void remove_if(F&& predicate) {
+ bool visit(F action) {
for (LinkedListEntry<T>* e = head_; e != nullptr; e = e->next) {
- if (e->element != nullptr && predicate(e->element)) {
- e->element = nullptr;
+ if (!action(e->element)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ template<typename F>
+ void remove_if(F predicate) {
+ for (LinkedListEntry<T>* e = head_, *p = nullptr; e != nullptr;) {
+ if (predicate(e->element)) {
+ LinkedListEntry<T>* next = e->next;
+ if (p == nullptr) {
+ head_ = next;
+ } else {
+ p->next = next;
+ }
+ Allocator::free(e);
+ e = next;
+ } else {
+ p = e;
+ e = e->next;
}
}
}
- bool contains(const T* el) {
+ size_t copy_to_array(T* array[], size_t array_length) const {
+ size_t sz = 0;
+ for (LinkedListEntry<T>* e = head_; sz < array_length && e != nullptr; e = e->next) {
+ array[sz++] = e->element;
+ }
+
+ return sz;
+ }
+
+ bool contains(const T* el) const {
for (LinkedListEntry<T>* e = head_; e != nullptr; e = e->next) {
- if (e->element != nullptr && e->element == el) {
+ if (e->element == el) {
return true;
}
}
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 9ab4e61..793ffd5 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -35,14 +35,17 @@
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
-#include <sys/stat.h>
#include <unistd.h>
+#include <new>
+
// Private C library headers.
#include "private/bionic_tls.h"
#include "private/KernelArgumentBlock.h"
#include "private/ScopedPthreadMutexLocker.h"
#include "private/ScopedFd.h"
+#include "private/ScopeGuard.h"
+#include "private/UniquePtr.h"
#include "linker.h"
#include "linker_debug.h"
@@ -78,7 +81,6 @@
#define SEARCH_NAME(x) get_base_name(x)
#endif
-static bool soinfo_link_image(soinfo* si, const android_dlextinfo* extinfo);
static ElfW(Addr) get_elf_exec_load_bias(const ElfW(Ehdr)* elf);
static LinkerAllocator<soinfo> g_soinfo_allocator;
@@ -96,7 +98,7 @@
"/vendor/lib",
"/system/lib",
#endif
- NULL
+ nullptr
};
#define LDPATH_BUFSIZE (LDPATH_MAX*64)
@@ -115,7 +117,7 @@
__LIBC_HIDDEN__ int g_ld_debug_verbosity;
-__LIBC_HIDDEN__ abort_msg_t* g_abort_message = NULL; // For debuggerd.
+__LIBC_HIDDEN__ abort_msg_t* g_abort_message = nullptr; // For debuggerd.
enum RelocationKind {
kRelocAbsolute = 0,
@@ -125,11 +127,6 @@
kRelocMax
};
-enum class SymbolLookupScope {
- kAllowLocal,
- kExcludeLocal,
-};
-
#if STATS
struct linker_stats_t {
int count[kRelocMax];
@@ -175,7 +172,6 @@
DISALLOW_ALLOCATION(void*, realloc, (void* u1 __unused, size_t u2 __unused));
DISALLOW_ALLOCATION(void*, calloc, (size_t u1 __unused, size_t u2 __unused));
-static char tmp_err_buf[768];
static char __linker_dl_err_buf[768];
char* linker_get_error_buffer() {
@@ -193,7 +189,7 @@
extern "C" void __attribute__((noinline)) __attribute__((visibility("default"))) rtld_db_dlactivity();
static pthread_mutex_t g__r_debug_mutex = PTHREAD_MUTEX_INITIALIZER;
-static r_debug _r_debug = {1, NULL, reinterpret_cast<uintptr_t>(&rtld_db_dlactivity), r_debug::RT_CONSISTENT, 0};
+static r_debug _r_debug = {1, nullptr, reinterpret_cast<uintptr_t>(&rtld_db_dlactivity), r_debug::RT_CONSISTENT, 0};
static link_map* r_debug_tail = 0;
static void insert_soinfo_into_debug_map(soinfo* info) {
@@ -292,20 +288,10 @@
static soinfo* soinfo_alloc(const char* name, struct stat* file_stat) {
if (strlen(name) >= SOINFO_NAME_LEN) {
DL_ERR("library name \"%s\" too long", name);
- return NULL;
+ return nullptr;
}
- soinfo* si = g_soinfo_allocator.alloc();
-
- // Initialize the new element.
- memset(si, 0, sizeof(soinfo));
- strlcpy(si->name, name, sizeof(si->name));
- si->flags = FLAG_NEW_SOINFO;
-
- if (file_stat != NULL) {
- si->set_st_dev(file_stat->st_dev);
- si->set_st_ino(file_stat->st_ino);
- }
+ soinfo* si = new (g_soinfo_allocator.alloc()) soinfo(name, file_stat);
sonext->next = si;
sonext = si;
@@ -315,7 +301,7 @@
}
static void soinfo_free(soinfo* si) {
- if (si == NULL) {
+ if (si == nullptr) {
return;
}
@@ -323,16 +309,16 @@
munmap(reinterpret_cast<void*>(si->base), si->size);
}
- soinfo *prev = NULL, *trav;
+ soinfo *prev = nullptr, *trav;
TRACE("name %s: freeing soinfo @ %p", si->name, si);
- for (trav = solist; trav != NULL; trav = trav->next) {
+ for (trav = solist; trav != nullptr; trav = trav->next) {
if (trav == si)
break;
prev = trav;
}
- if (trav == NULL) {
+ if (trav == nullptr) {
/* si was not in solist */
DL_ERR("name \"%s\" is not in solist!", si->name);
return;
@@ -341,7 +327,7 @@
// clear links to/from si
si->remove_all_links();
- /* prev will never be NULL, because the first entry in solist is
+ /* prev will never be null, because the first entry in solist is
always the static libdl_info.
*/
prev->next = si->next;
@@ -355,7 +341,7 @@
static void parse_path(const char* path, const char* delimiters,
const char** array, char* buf, size_t buf_size, size_t max_count) {
- if (path == NULL) {
+ if (path == nullptr) {
return;
}
@@ -372,9 +358,9 @@
// Forget the last path if we had to truncate; this occurs if the 2nd to
// last char isn't '\0' (i.e. wasn't originally a delimiter).
if (i > 0 && len >= buf_size && buf[buf_size - 2] != '\0') {
- array[i - 1] = NULL;
+ array[i - 1] = nullptr;
} else {
- array[i] = NULL;
+ array[i] = nullptr;
}
}
@@ -410,7 +396,7 @@
}
}
*pcount = 0;
- return NULL;
+ return nullptr;
}
#endif
@@ -419,7 +405,7 @@
* loaded libraries. gcc_eh does the rest. */
int dl_iterate_phdr(int (*cb)(dl_phdr_info* info, size_t size, void* data), void* data) {
int rv = 0;
- for (soinfo* si = solist; si != NULL; si = si->next) {
+ for (soinfo* si = solist; si != nullptr; si = si->next) {
dl_phdr_info dl_info;
dl_info.dlpi_addr = si->link_map_head.l_addr;
dl_info.dlpi_name = si->link_map_head.l_name;
@@ -433,7 +419,7 @@
return rv;
}
-static ElfW(Sym)* soinfo_elf_lookup(soinfo* si, unsigned hash, const char* name, const SymbolLookupScope& lookup_scope) {
+static ElfW(Sym)* soinfo_elf_lookup(soinfo* si, unsigned hash, const char* name) {
ElfW(Sym)* symtab = si->symtab;
const char* strtab = si->strtab;
@@ -444,6 +430,7 @@
ElfW(Sym)* s = symtab + n;
if (strcmp(strtab + s->st_name, name)) continue;
+ /* only concern ourselves with global and weak symbol definitions */
switch (ELF_ST_BIND(s->st_info)) {
case STB_GLOBAL:
case STB_WEAK:
@@ -456,13 +443,7 @@
static_cast<size_t>(s->st_size));
return s;
case STB_LOCAL:
- if (lookup_scope != SymbolLookupScope::kAllowLocal) {
- continue;
- }
- TRACE_TYPE(LOOKUP, "FOUND LOCAL %s in %s (%p) %zd",
- name, si->name, reinterpret_cast<void*>(s->st_value),
- static_cast<size_t>(s->st_size));
- return s;
+ continue;
default:
__libc_fatal("ERROR: Unexpected ST_BIND value: %d for '%s' in '%s'",
ELF_ST_BIND(s->st_info), name, si->name);
@@ -473,17 +454,33 @@
name, si->name, reinterpret_cast<void*>(si->base), hash, hash % si->nbucket);
- return NULL;
+ return nullptr;
}
-static void resolve_ifunc_symbols(soinfo* si) {
+soinfo::soinfo(const char* name, const struct stat* file_stat) {
+ memset(this, 0, sizeof(*this));
- phdr_table_unprotect_segments(si->phdr, si->phnum, si->load_bias);
+ strlcpy(this->name, name, sizeof(this->name));
+ flags = FLAG_NEW_SOINFO;
+ version = SOINFO_VERSION;
+
+ if (file_stat != nullptr) {
+ set_st_dev(file_stat->st_dev);
+ set_st_ino(file_stat->st_ino);
+ }
+}
+
+void soinfo::resolve_ifunc_symbols() {
+ if (!get_has_ifuncs()) {
+ return;
+ }
+
+ phdr_table_unprotect_segments(phdr, phnum, load_bias);
TRACE_TYPE(IFUNC, "CHECKING FOR IFUNCS AND PERFORMING SYMBOL UPDATES");
- for (size_t i = 0; i < si->nchain; ++i) {
- ElfW(Sym)* s = &si->symtab[i];
+ for (size_t i = 0; i < nchain; ++i) {
+ ElfW(Sym)* s = &symtab[i];
if (ELF_ST_TYPE(s->st_info) == STT_GNU_IFUNC) {
// The address of the ifunc in the symbol table is the address of the
// function that chooses the function to which the ifunc will refer.
@@ -491,12 +488,12 @@
// in the linker and then return its result (minus the base offset).
TRACE_TYPE(IFUNC, "FOUND IFUNC");
ElfW(Addr) (*ifunc_ptr)();
- ifunc_ptr = reinterpret_cast<ElfW(Addr)(*)()>(s->st_value + si->base);
- s->st_value = (ifunc_ptr() - si->base);
+ ifunc_ptr = reinterpret_cast<ElfW(Addr)(*)()>(s->st_value + base);
+ s->st_value = (ifunc_ptr() - base);
TRACE_TYPE(IFUNC, "NEW VALUE IS %p", (void*)s->st_value);
}
}
- phdr_table_protect_segments(si->phdr, si->phnum, si->load_bias);
+ phdr_table_protect_segments(phdr, phnum, load_bias);
}
static unsigned elfhash(const char* _name) {
@@ -512,22 +509,31 @@
return h;
}
-static ElfW(Sym)* soinfo_do_lookup(soinfo* si, const char* name, soinfo** lsi, soinfo* needed[]) {
+static ElfW(Sym)* soinfo_do_lookup(soinfo* si, const char* name, soinfo** lsi) {
unsigned elf_hash = elfhash(name);
- ElfW(Sym)* s = NULL;
+ ElfW(Sym)* s = nullptr;
- if (si != NULL && somain != NULL) {
+ if (somain != nullptr) {
/*
* Local scope is executable scope. Just start looking into it right away
* for the shortcut.
*/
if (si == somain) {
- s = soinfo_elf_lookup(si, elf_hash, name, SymbolLookupScope::kAllowLocal);
- if (s != NULL) {
+ s = soinfo_elf_lookup(si, elf_hash, name);
+ if (s != nullptr) {
*lsi = si;
goto done;
}
+
+ /* Next, look for it in the preloads list */
+ for (int i = 0; g_ld_preloads[i] != NULL; i++) {
+ s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
+ if (s != NULL) {
+ *lsi = g_ld_preloads[i];
+ goto done;
+ }
+ }
} else {
/* Order of symbol lookup is controlled by DT_SYMBOLIC flag */
@@ -540,11 +546,20 @@
if (!si->has_DT_SYMBOLIC) {
DEBUG("%s: looking up %s in executable %s",
si->name, name, somain->name);
- s = soinfo_elf_lookup(somain, elf_hash, name, SymbolLookupScope::kExcludeLocal);
- if (s != NULL) {
+ s = soinfo_elf_lookup(somain, elf_hash, name);
+ if (s != nullptr) {
*lsi = somain;
goto done;
}
+
+ /* Next, look for it in the preloads list */
+ for (int i = 0; g_ld_preloads[i] != NULL; i++) {
+ s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
+ if (s != NULL) {
+ *lsi = g_ld_preloads[i];
+ goto done;
+ }
+ }
}
/* Look for symbols in the local scope (the object who is
@@ -557,8 +572,8 @@
* and some the first non-weak definition. This is system dependent.
* Here we return the first definition found for simplicity. */
- s = soinfo_elf_lookup(si, elf_hash, name, SymbolLookupScope::kAllowLocal);
- if (s != NULL) {
+ s = soinfo_elf_lookup(si, elf_hash, name);
+ if (s != nullptr) {
*lsi = si;
goto done;
}
@@ -571,36 +586,36 @@
if (si->has_DT_SYMBOLIC) {
DEBUG("%s: looking up %s in executable %s after local scope",
si->name, name, somain->name);
- s = soinfo_elf_lookup(somain, elf_hash, name, SymbolLookupScope::kExcludeLocal);
- if (s != NULL) {
+ s = soinfo_elf_lookup(somain, elf_hash, name);
+ if (s != nullptr) {
*lsi = somain;
goto done;
}
+
+ /* Next, look for it in the preloads list */
+ for (int i = 0; g_ld_preloads[i] != NULL; i++) {
+ s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
+ if (s != NULL) {
+ *lsi = g_ld_preloads[i];
+ goto done;
+ }
+ }
}
}
}
- /* Next, look for it in the preloads list */
- for (int i = 0; g_ld_preloads[i] != NULL; i++) {
- s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name, SymbolLookupScope::kExcludeLocal);
- if (s != NULL) {
- *lsi = g_ld_preloads[i];
- goto done;
+ si->get_children().visit([&](soinfo* child) {
+ DEBUG("%s: looking up %s in %s", si->name, name, child->name);
+ s = soinfo_elf_lookup(child, elf_hash, name);
+ if (s != nullptr) {
+ *lsi = child;
+ return false;
}
- }
-
- for (int i = 0; needed[i] != NULL; i++) {
- DEBUG("%s: looking up %s in %s",
- si->name, name, needed[i]->name);
- s = soinfo_elf_lookup(needed[i], elf_hash, name, SymbolLookupScope::kExcludeLocal);
- if (s != NULL) {
- *lsi = needed[i];
- goto done;
- }
- }
+ return true;
+ });
done:
- if (s != NULL) {
+ if (s != nullptr) {
TRACE_TYPE(LOOKUP, "si %s sym %s s->st_value = %p, "
"found in %s, base = %p, load bias = %p",
si->name, name, reinterpret_cast<void*>(s->st_value),
@@ -609,28 +624,88 @@
return s;
}
- return NULL;
+ return nullptr;
}
-// Another soinfo list allocator to use in dlsym. We don't reuse
-// SoinfoListAllocator because it is write-protected most of the time.
-static LinkerAllocator<LinkedListEntry<soinfo>> g_soinfo_list_allocator_rw;
-class SoinfoListAllocatorRW {
+// Each size has it's own allocator.
+template<size_t size>
+class SizeBasedAllocator {
public:
- static LinkedListEntry<soinfo>* alloc() {
- return g_soinfo_list_allocator_rw.alloc();
+ static void* alloc() {
+ return allocator_.alloc();
}
- static void free(LinkedListEntry<soinfo>* ptr) {
- g_soinfo_list_allocator_rw.free(ptr);
+ static void free(void* ptr) {
+ allocator_.free(ptr);
+ }
+
+ private:
+ static LinkerBlockAllocator allocator_;
+};
+
+template<size_t size>
+LinkerBlockAllocator SizeBasedAllocator<size>::allocator_(size);
+
+template<typename T>
+class TypeBasedAllocator {
+ public:
+ static T* alloc() {
+ return reinterpret_cast<T*>(SizeBasedAllocator<sizeof(T)>::alloc());
+ }
+
+ static void free(T* ptr) {
+ SizeBasedAllocator<sizeof(T)>::free(ptr);
}
};
+class LoadTask {
+ public:
+ struct deleter_t {
+ void operator()(LoadTask* t) {
+ TypeBasedAllocator<LoadTask>::free(t);
+ }
+ };
+
+ typedef UniquePtr<LoadTask, deleter_t> unique_ptr;
+
+ static deleter_t deleter;
+
+ static LoadTask* create(const char* name, soinfo* needed_by) {
+ LoadTask* ptr = TypeBasedAllocator<LoadTask>::alloc();
+ return new (ptr) LoadTask(name, needed_by);
+ }
+
+ const char* get_name() const {
+ return name_;
+ }
+
+ soinfo* get_needed_by() const {
+ return needed_by_;
+ }
+ private:
+ LoadTask(const char* name, soinfo* needed_by)
+ : name_(name), needed_by_(needed_by) {}
+
+ const char* name_;
+ soinfo* needed_by_;
+
+ DISALLOW_IMPLICIT_CONSTRUCTORS(LoadTask);
+};
+
+template <typename T>
+using linked_list_t = LinkedList<T, TypeBasedAllocator<LinkedListEntry<T>>>;
+
+typedef linked_list_t<soinfo> SoinfoLinkedList;
+typedef linked_list_t<const char> StringLinkedList;
+typedef linked_list_t<LoadTask> LoadTaskList;
+
+
// This is used by dlsym(3). It performs symbol lookup only within the
// specified soinfo object and its dependencies in breadth first order.
-ElfW(Sym)* dlsym_handle_lookup(soinfo* si, soinfo** found, const char* name, soinfo* caller) {
- LinkedList<soinfo, SoinfoListAllocatorRW> visit_list;
- LinkedList<soinfo, SoinfoListAllocatorRW> visited;
+ElfW(Sym)* dlsym_handle_lookup(soinfo* si, soinfo** found, const char* name) {
+ SoinfoLinkedList visit_list;
+ SoinfoLinkedList visited;
+
visit_list.push_back(si);
soinfo* current_soinfo;
while ((current_soinfo = visit_list.pop_front()) != nullptr) {
@@ -638,13 +713,10 @@
continue;
}
- ElfW(Sym)* result = soinfo_elf_lookup(current_soinfo, elfhash(name), name,
- caller == current_soinfo ? SymbolLookupScope::kAllowLocal : SymbolLookupScope::kExcludeLocal);
+ ElfW(Sym)* result = soinfo_elf_lookup(current_soinfo, elfhash(name), name);
if (result != nullptr) {
*found = current_soinfo;
- visit_list.clear();
- visited.clear();
return result;
}
visited.push_back(current_soinfo);
@@ -654,8 +726,6 @@
});
}
- visit_list.clear();
- visited.clear();
return nullptr;
}
@@ -664,24 +734,23 @@
beginning of the global solist. Otherwise the search starts at the
specified soinfo (for RTLD_NEXT).
*/
-ElfW(Sym)* dlsym_linear_lookup(const char* name, soinfo** found, soinfo* start, soinfo* caller) {
+ElfW(Sym)* dlsym_linear_lookup(const char* name, soinfo** found, soinfo* start) {
unsigned elf_hash = elfhash(name);
- if (start == NULL) {
+ if (start == nullptr) {
start = solist;
}
- ElfW(Sym)* s = NULL;
- for (soinfo* si = start; (s == NULL) && (si != NULL); si = si->next) {
- s = soinfo_elf_lookup(si, elf_hash, name,
- caller == si ? SymbolLookupScope::kAllowLocal : SymbolLookupScope::kExcludeLocal);
- if (s != NULL) {
+ ElfW(Sym)* s = nullptr;
+ for (soinfo* si = start; (s == nullptr) && (si != nullptr); si = si->next) {
+ s = soinfo_elf_lookup(si, elf_hash, name);
+ if (s != nullptr) {
*found = si;
break;
}
}
- if (s != NULL) {
+ if (s != nullptr) {
TRACE_TYPE(LOOKUP, "%s s->st_value = %p, found->base = %p",
name, reinterpret_cast<void*>(s->st_value), reinterpret_cast<void*>((*found)->base));
}
@@ -691,12 +760,12 @@
soinfo* find_containing_library(const void* p) {
ElfW(Addr) address = reinterpret_cast<ElfW(Addr)>(p);
- for (soinfo* si = solist; si != NULL; si = si->next) {
+ for (soinfo* si = solist; si != nullptr; si = si->next) {
if (address >= si->base && address - si->base < si->size) {
return si;
}
}
- return NULL;
+ return nullptr;
}
ElfW(Sym)* dladdr_find_symbol(soinfo* si, const void* addr) {
@@ -713,12 +782,12 @@
}
}
- return NULL;
+ return nullptr;
}
static int open_library_on_path(const char* name, const char* const paths[]) {
char buf[512];
- for (size_t i = 0; paths[i] != NULL; ++i) {
+ for (size_t i = 0; paths[i] != nullptr; ++i) {
int n = __libc_format_buffer(buf, sizeof(buf), "%s/%s", paths[i], name);
if (n < 0 || n >= static_cast<int>(sizeof(buf))) {
PRINT("Warning: ignoring very long library path: %s/%s", paths[i], name);
@@ -736,7 +805,7 @@
TRACE("[ opening %s ]", name);
// If the name contains a slash, we should attempt to open it directly and not search the paths.
- if (strchr(name, '/') != NULL) {
+ if (strchr(name, '/') != nullptr) {
int fd = TEMP_FAILURE_RETRY(open(name, O_RDONLY | O_CLOEXEC));
if (fd != -1) {
return fd;
@@ -755,116 +824,208 @@
return fd;
}
-static soinfo* load_library(const char* name, int dlflags, const android_dlextinfo* extinfo) {
- int fd = -1;
- ScopedFd file_guard(-1);
+template<typename F>
+static void for_each_dt_needed(const soinfo* si, F action) {
+ for (ElfW(Dyn)* d = si->dynamic; d->d_tag != DT_NULL; ++d) {
+ if (d->d_tag == DT_NEEDED) {
+ action(si->strtab + d->d_un.d_val);
+ }
+ }
+}
- if (extinfo != NULL && (extinfo->flags & ANDROID_DLEXT_USE_LIBRARY_FD) != 0) {
- fd = extinfo->library_fd;
- } else {
- // Open the file.
- fd = open_library(name);
- if (fd == -1) {
- DL_ERR("library \"%s\" not found", name);
- return NULL;
- }
+static soinfo* load_library(LoadTaskList& load_tasks, const char* name, int dlflags, const android_dlextinfo* extinfo) {
+ int fd = -1;
+ ScopedFd file_guard(-1);
- file_guard.reset(fd);
+ if (extinfo != nullptr && (extinfo->flags & ANDROID_DLEXT_USE_LIBRARY_FD) != 0) {
+ fd = extinfo->library_fd;
+ } else {
+ // Open the file.
+ fd = open_library(name);
+ if (fd == -1) {
+ DL_ERR("library \"%s\" not found", name);
+ return nullptr;
}
- ElfReader elf_reader(name, fd);
+ file_guard.reset(fd);
+ }
- struct stat file_stat;
- if (TEMP_FAILURE_RETRY(fstat(fd, &file_stat)) != 0) {
- DL_ERR("unable to stat file for the library %s: %s", name, strerror(errno));
- return NULL;
+ struct stat file_stat;
+ if (TEMP_FAILURE_RETRY(fstat(fd, &file_stat)) != 0) {
+ DL_ERR("unable to stat file for the library %s: %s", name, strerror(errno));
+ return nullptr;
+ }
+
+ // Check for symlink and other situations where
+ // file can have different names.
+ for (soinfo* si = solist; si != nullptr; si = si->next) {
+ if (si->get_st_dev() != 0 &&
+ si->get_st_ino() != 0 &&
+ si->get_st_dev() == file_stat.st_dev &&
+ si->get_st_ino() == file_stat.st_ino) {
+ TRACE("library \"%s\" is already loaded under different name/path \"%s\" - will return existing soinfo", name, si->name);
+ return si;
}
+ }
- // Check for symlink and other situations where
- // file can have different names.
- for (soinfo* si = solist; si != NULL; si = si->next) {
- if (si->get_st_dev() != 0 &&
- si->get_st_ino() != 0 &&
- si->get_st_dev() == file_stat.st_dev &&
- si->get_st_ino() == file_stat.st_ino) {
- TRACE("library \"%s\" is already loaded under different name/path \"%s\" - will return existing soinfo", name, si->name);
- return si;
- }
- }
+ if ((dlflags & RTLD_NOLOAD) != 0) {
+ return nullptr;
+ }
- if ((dlflags & RTLD_NOLOAD) != 0) {
- return NULL;
- }
+ // Read the ELF header and load the segments.
+ ElfReader elf_reader(name, fd);
+ if (!elf_reader.Load(extinfo)) {
+ return nullptr;
+ }
- // Read the ELF header and load the segments.
- if (!elf_reader.Load(extinfo)) {
- return NULL;
- }
+ soinfo* si = soinfo_alloc(SEARCH_NAME(name), &file_stat);
+ if (si == nullptr) {
+ return nullptr;
+ }
+ si->base = elf_reader.load_start();
+ si->size = elf_reader.load_size();
+ si->load_bias = elf_reader.load_bias();
+ si->phnum = elf_reader.phdr_count();
+ si->phdr = elf_reader.loaded_phdr();
- soinfo* si = soinfo_alloc(SEARCH_NAME(name), &file_stat);
- if (si == NULL) {
- return NULL;
- }
- si->base = elf_reader.load_start();
- si->size = elf_reader.load_size();
- si->load_bias = elf_reader.load_bias();
- si->phnum = elf_reader.phdr_count();
- si->phdr = elf_reader.loaded_phdr();
+ if (!si->PrelinkImage()) {
+ soinfo_free(si);
+ return nullptr;
+ }
- // At this point we know that whatever is loaded @ base is a valid ELF
- // shared library whose segments are properly mapped in.
- TRACE("[ load_library base=%p size=%zu name='%s' ]",
- reinterpret_cast<void*>(si->base), si->size, si->name);
+ for_each_dt_needed(si, [&] (const char* name) {
+ load_tasks.push_back(LoadTask::create(name, si));
+ });
- if (!soinfo_link_image(si, extinfo)) {
- soinfo_free(si);
- return NULL;
- }
-
- // if the library has any ifuncs, we will need to resolve them so that dlsym
- // can handle them properly
- resolve_ifunc_symbols(si);
-
- return si;
+ return si;
}
static soinfo *find_loaded_library_by_name(const char* name) {
const char* search_name = SEARCH_NAME(name);
- for (soinfo* si = solist; si != NULL; si = si->next) {
+ for (soinfo* si = solist; si != nullptr; si = si->next) {
if (!strcmp(search_name, si->name)) {
return si;
}
}
- return NULL;
+ return nullptr;
}
-static soinfo* find_library_internal(const char* name, int dlflags, const android_dlextinfo* extinfo) {
- if (name == NULL) {
- return somain;
- }
+static soinfo* find_library_internal(LoadTaskList& load_tasks, const char* name, int dlflags, const android_dlextinfo* extinfo) {
soinfo* si = find_loaded_library_by_name(name);
// Library might still be loaded, the accurate detection
- // of this fact is done by load_library
- if (si == NULL) {
+ // of this fact is done by load_library.
+ if (si == nullptr) {
TRACE("[ '%s' has not been found by name. Trying harder...]", name);
- si = load_library(name, dlflags, extinfo);
- }
-
- if (si != NULL && (si->flags & FLAG_LINKED) == 0) {
- DL_ERR("recursive link to \"%s\"", si->name);
- return NULL;
+ si = load_library(load_tasks, name, dlflags, extinfo);
}
return si;
}
-static soinfo* find_library(const char* name, int dlflags, const android_dlextinfo* extinfo) {
- soinfo* si = find_library_internal(name, dlflags, extinfo);
- if (si != NULL) {
- si->ref_count++;
+static void soinfo_unload(soinfo* si);
+
+static bool is_recursive(soinfo* si, soinfo* parent) {
+ if (parent == nullptr) {
+ return false;
}
+
+ if (si == parent) {
+ DL_ERR("recursive link to \"%s\"", si->name);
+ return true;
+ }
+
+ return !parent->get_parents().visit([&](soinfo* grandparent) {
+ return !is_recursive(si, grandparent);
+ });
+}
+
+static bool find_libraries(const char* const library_names[], size_t library_names_size, soinfo* soinfos[],
+ soinfo* ld_preloads[], size_t ld_preloads_size, int dlflags, const android_dlextinfo* extinfo) {
+ // Step 0: prepare.
+ LoadTaskList load_tasks;
+ for (size_t i = 0; i < library_names_size; ++i) {
+ const char* name = library_names[i];
+ load_tasks.push_back(LoadTask::create(name, nullptr));
+ }
+
+ // Libraries added to this list in reverse order so that we can
+ // start linking from bottom-up - see step 2.
+ SoinfoLinkedList found_libs;
+ size_t soinfos_size = 0;
+
+ auto failure_guard = create_scope_guard([&]() {
+ // Housekeeping
+ load_tasks.for_each([] (LoadTask* t) {
+ LoadTask::deleter(t);
+ });
+
+ for (size_t i = 0; i<soinfos_size; ++i) {
+ soinfo_unload(soinfos[i]);
+ }
+ });
+
+ // Step 1: load and pre-link all DT_NEEDED libraries in breadth first order.
+ for (LoadTask::unique_ptr task(load_tasks.pop_front()); task.get() != nullptr; task.reset(load_tasks.pop_front())) {
+ soinfo* si = find_library_internal(load_tasks, task->get_name(), dlflags, extinfo);
+ if (si == nullptr) {
+ return false;
+ }
+
+ soinfo* needed_by = task->get_needed_by();
+
+ if (is_recursive(si, needed_by)) {
+ soinfo_free(si);
+ return false;
+ }
+
+ si->ref_count++;
+ if (needed_by != nullptr) {
+ needed_by->add_child(si);
+ }
+ found_libs.push_front(si);
+
+ // When ld_preloads is not null first
+ // ld_preloads_size libs are in fact ld_preloads.
+ if (ld_preloads != nullptr && soinfos_size < ld_preloads_size) {
+ ld_preloads[soinfos_size] = si;
+ }
+
+ if (soinfos_size<library_names_size) {
+ soinfos[soinfos_size++] = si;
+ }
+ }
+
+ // Step 2: link libraries.
+ soinfo* si;
+ while ((si = found_libs.pop_front()) != nullptr) {
+ if ((si->flags & FLAG_LINKED) == 0) {
+ if (!si->LinkImage(extinfo)) {
+ return false;
+ }
+ si->flags |= FLAG_LINKED;
+ }
+ }
+
+ // All is well - found_libs and load_tasks are empty at this point
+ // and all libs are successfully linked.
+ failure_guard.disable();
+ return true;
+}
+
+static soinfo* find_library(const char* name, int dlflags, const android_dlextinfo* extinfo) {
+ if (name == nullptr) {
+ somain->ref_count++;
+ return somain;
+ }
+
+ soinfo* si;
+
+ if (!find_libraries(&name, 1, &si, nullptr, 0, dlflags, extinfo)) {
+ return nullptr;
+ }
+
return si;
}
@@ -873,26 +1034,24 @@
TRACE("unloading '%s'", si->name);
si->CallDestructors();
- if ((si->flags | FLAG_NEW_SOINFO) != 0) {
- si->get_children().for_each([&] (soinfo* child) {
+ if (si->has_min_version(0)) {
+ soinfo* child = nullptr;
+ while ((child = si->get_children().pop_front()) != nullptr) {
TRACE("%s needs to unload %s", si->name, child->name);
soinfo_unload(child);
- });
- } else {
- for (ElfW(Dyn)* d = si->dynamic; d->d_tag != DT_NULL; ++d) {
- if (d->d_tag == DT_NEEDED) {
- const char* library_name = si->strtab + d->d_un.d_val;
- TRACE("%s needs to unload %s", si->name, library_name);
- soinfo* needed = find_library(library_name, RTLD_NOLOAD, NULL);
- if (needed != NULL) {
- soinfo_unload(needed);
- } else {
- // Not found: for example if symlink was deleted between dlopen and dlclose
- // Since we cannot really handle errors at this point - print and continue.
- PRINT("warning: couldn't find %s needed by %s on unload.", library_name, si->name);
- }
- }
}
+ } else {
+ for_each_dt_needed(si, [&] (const char* library_name) {
+ TRACE("deprecated (old format of soinfo): %s needs to unload %s", si->name, library_name);
+ soinfo* needed = find_library(library_name, RTLD_NOLOAD, nullptr);
+ if (needed != nullptr) {
+ soinfo_unload(needed);
+ } else {
+ // Not found: for example if symlink was deleted between dlopen and dlclose
+ // Since we cannot really handle errors at this point - print and continue.
+ PRINT("warning: couldn't find %s needed by %s on unload.", library_name, si->name);
+ }
+ });
}
notify_gdb_of_unload(si);
@@ -905,7 +1064,21 @@
}
void do_android_get_LD_LIBRARY_PATH(char* buffer, size_t buffer_size) {
- snprintf(buffer, buffer_size, "%s:%s", kDefaultLdPaths[0], kDefaultLdPaths[1]);
+ // Use basic string manipulation calls to avoid snprintf.
+ // snprintf indirectly calls pthread_getspecific to get the size of a buffer.
+ // When debug malloc is enabled, this call returns 0. This in turn causes
+ // snprintf to do nothing, which causes libraries to fail to load.
+ // See b/17302493 for further details.
+ // Once the above bug is fixed, this code can be modified to use
+ // snprintf again.
+ size_t required_len = strlen(kDefaultLdPaths[0]) + strlen(kDefaultLdPaths[1]) + 2;
+ if (buffer_size < required_len) {
+ __libc_fatal("android_get_LD_LIBRARY_PATH failed, buffer too small: buffer len %zu, required len %zu",
+ buffer_size, required_len);
+ }
+ char* end = stpcpy(buffer, kDefaultLdPaths[0]);
+ *end = ':';
+ strcpy(end + 1, kDefaultLdPaths[1]);
}
void do_android_update_LD_LIBRARY_PATH(const char* ld_library_path) {
@@ -917,15 +1090,15 @@
soinfo* do_dlopen(const char* name, int flags, const android_dlextinfo* extinfo) {
if ((flags & ~(RTLD_NOW|RTLD_LAZY|RTLD_LOCAL|RTLD_GLOBAL|RTLD_NOLOAD)) != 0) {
DL_ERR("invalid flags to dlopen: %x", flags);
- return NULL;
+ return nullptr;
}
- if (extinfo != NULL && ((extinfo->flags & ~(ANDROID_DLEXT_VALID_FLAG_BITS)) != 0)) {
+ if (extinfo != nullptr && ((extinfo->flags & ~(ANDROID_DLEXT_VALID_FLAG_BITS)) != 0)) {
DL_ERR("invalid extended flags to android_dlopen_ext: %" PRIx64, extinfo->flags);
- return NULL;
+ return nullptr;
}
protect_data(PROT_READ | PROT_WRITE);
soinfo* si = find_library(name, flags, extinfo);
- if (si != NULL) {
+ if (si != nullptr) {
si->CallConstructors();
}
protect_data(PROT_READ);
@@ -940,7 +1113,7 @@
// ifuncs are only defined for x86
#if defined(__i386__)
-static void soinfo_ifunc_relocate(soinfo* si, ElfW(Rel)* rel, unsigned count, soinfo* needed[]) {
+static void soinfo_ifunc_relocate(soinfo* si, ElfW(Rel)* rel, unsigned count) {
for (size_t idx = 0; idx < count; ++idx, ++rel) {
ElfW(Sym)* s;
soinfo* lsi;
@@ -948,9 +1121,9 @@
unsigned sym = ELFW(R_SYM)(rel->r_info);
ElfW(Addr) reloc = static_cast<ElfW(Addr)>(rel->r_offset + si->load_bias);
ElfW(Addr) sym_addr = 0;
- const char* sym_name = NULL;
+ const char* sym_name = nullptr;
sym_name = reinterpret_cast<const char*>(si->strtab + si->symtab[sym].st_name);
- s = soinfo_do_lookup(si, sym_name, &lsi, needed);
+ s = soinfo_do_lookup(si, sym_name, &lsi);
if (ELF_ST_TYPE(s->st_info) == STT_GNU_IFUNC && type == R_386_JMP_SLOT) {
TRACE("IFUNC RELOCATION, PASS 2: %p", (void*)(sym_addr));
@@ -963,7 +1136,7 @@
#endif
#if defined(__x86_64__)
-static void soinfo_ifunc_relocate(soinfo* si, ElfW(Rela)* rela, unsigned count, soinfo* needed[]) {
+static void soinfo_ifunc_relocate(soinfo* si, ElfW(Rela)* rela, unsigned count) {
for (size_t idx = 0; idx < count; ++idx, ++rela) {
ElfW(Sym)* s;
soinfo* lsi;
@@ -971,9 +1144,9 @@
unsigned sym = ELFW(R_SYM)(rela->r_info);
ElfW(Addr) reloc = static_cast<ElfW(Addr)>(rela->r_offset + si->load_bias);
ElfW(Addr) sym_addr = 0;
- const char* sym_name = NULL;
+ const char* sym_name = nullptr;
sym_name = reinterpret_cast<const char*>(si->strtab + si->symtab[sym].st_name);
- s = soinfo_do_lookup(si, sym_name, &lsi, needed);
+ s = soinfo_do_lookup(si, sym_name, &lsi);
if (ELF_ST_TYPE(s->st_info) == STT_GNU_IFUNC && type == R_X86_64_JUMP_SLOT) {
TRACE("IFUNC RELOCATION, PASS 2: %p", (void*)(sym_addr + rela->r_addend));
@@ -986,29 +1159,30 @@
#endif
#if defined(USE_RELA)
-static int soinfo_relocate(soinfo* si, ElfW(Rela)* rela, unsigned count, soinfo* needed[]) {
- ElfW(Sym)* s;
- soinfo* lsi;
-
+int soinfo::Relocate(ElfW(Rela)* rela, unsigned count) {
for (size_t idx = 0; idx < count; ++idx, ++rela) {
unsigned type = ELFW(R_TYPE)(rela->r_info);
unsigned sym = ELFW(R_SYM)(rela->r_info);
- ElfW(Addr) reloc = static_cast<ElfW(Addr)>(rela->r_offset + si->load_bias);
+ ElfW(Addr) reloc = static_cast<ElfW(Addr)>(rela->r_offset + load_bias);
ElfW(Addr) sym_addr = 0;
- const char* sym_name = NULL;
+ const char* sym_name = nullptr;
- DEBUG("Processing '%s' relocation at index %zd", si->name, idx);
+ DEBUG("Processing '%s' relocation at index %zd", name, idx);
if (type == 0) { // R_*_NONE
continue;
}
+
+ ElfW(Sym)* s = nullptr;
+ soinfo* lsi = nullptr;
+
if (sym != 0) {
- sym_name = reinterpret_cast<const char*>(si->strtab + si->symtab[sym].st_name);
- s = soinfo_do_lookup(si, sym_name, &lsi, needed);
- if (s == NULL) {
+ sym_name = reinterpret_cast<const char*>(strtab + symtab[sym].st_name);
+ s = soinfo_do_lookup(this, sym_name, &lsi);
+ if (s == nullptr) {
// We only allow an undefined symbol if this is a weak reference...
- s = &si->symtab[sym];
+ s = &symtab[sym];
if (ELF_ST_BIND(s->st_info) != STB_WEAK) {
- DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, si->name);
+ DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, name);
return -1;
}
@@ -1059,8 +1233,6 @@
sym_addr = static_cast<ElfW(Addr)>(s->st_value + lsi->load_bias);
}
count_relocation(kRelocSymbol);
- } else {
- s = NULL;
}
switch (type) {
@@ -1166,8 +1338,8 @@
return -1;
}
TRACE_TYPE(RELO, "RELO RELATIVE %16llx <- %16llx\n",
- reloc, (si->base + rela->r_addend));
- *reinterpret_cast<ElfW(Addr)*>(reloc) = (si->base + rela->r_addend);
+ reloc, (base + rela->r_addend));
+ *reinterpret_cast<ElfW(Addr)*>(reloc) = (base + rela->r_addend);
break;
case R_AARCH64_COPY:
@@ -1180,7 +1352,7 @@
* R_AARCH64_COPY may only appear in executable objects where e_type is
* set to ET_EXEC.
*/
- DL_ERR("%s R_AARCH64_COPY relocations are not supported", si->name);
+ DL_ERR("%s R_AARCH64_COPY relocations are not supported", name);
return -1;
case R_AARCH64_TLS_TPREL64:
TRACE_TYPE(RELO, "RELO TLS_TPREL64 *** %16llx <- %16llx - %16llx\n",
@@ -1197,7 +1369,7 @@
TRACE_TYPE(RELO, "RELO JMP_SLOT %08zx <- %08zx %s", static_cast<size_t>(reloc),
static_cast<size_t>(sym_addr + rela->r_addend), sym_name);
if (ELF_ST_TYPE(s->st_info) == STT_GNU_IFUNC) {
- si->set_has_ifuncs(true);
+ set_has_ifuncs(true);
} else {
*reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + rela->r_addend;
}
@@ -1217,8 +1389,8 @@
return -1;
}
TRACE_TYPE(RELO, "RELO RELATIVE %08zx <- +%08zx", static_cast<size_t>(reloc),
- static_cast<size_t>(si->base));
- *reinterpret_cast<ElfW(Addr)*>(reloc) = si->base + rela->r_addend;
+ static_cast<size_t>(base));
+ *reinterpret_cast<ElfW(Addr)*>(reloc) = base + rela->r_addend;
break;
case R_X86_64_32:
count_relocation(kRelocRelative);
@@ -1253,31 +1425,31 @@
}
#else // REL, not RELA.
-
-static int soinfo_relocate(soinfo* si, ElfW(Rel)* rel, unsigned count, soinfo* needed[]) {
- ElfW(Sym)* s;
- soinfo* lsi;
-
+int soinfo::Relocate(ElfW(Rel)* rel, unsigned count) {
for (size_t idx = 0; idx < count; ++idx, ++rel) {
unsigned type = ELFW(R_TYPE)(rel->r_info);
// TODO: don't use unsigned for 'sym'. Use uint32_t or ElfW(Addr) instead.
unsigned sym = ELFW(R_SYM)(rel->r_info);
- ElfW(Addr) reloc = static_cast<ElfW(Addr)>(rel->r_offset + si->load_bias);
+ ElfW(Addr) reloc = static_cast<ElfW(Addr)>(rel->r_offset + load_bias);
ElfW(Addr) sym_addr = 0;
- const char* sym_name = NULL;
+ const char* sym_name = nullptr;
- DEBUG("Processing '%s' relocation at index %zd", si->name, idx);
+ DEBUG("Processing '%s' relocation at index %zd", name, idx);
if (type == 0) { // R_*_NONE
continue;
}
+
+ ElfW(Sym)* s = nullptr;
+ soinfo* lsi = nullptr;
+
if (sym != 0) {
- sym_name = reinterpret_cast<const char*>(si->strtab + si->symtab[sym].st_name);
- s = soinfo_do_lookup(si, sym_name, &lsi, needed);
- if (s == NULL) {
+ sym_name = reinterpret_cast<const char*>(strtab + symtab[sym].st_name);
+ s = soinfo_do_lookup(this, sym_name, &lsi);
+ if (s == nullptr) {
// We only allow an undefined symbol if this is a weak reference...
- s = &si->symtab[sym];
+ s = &symtab[sym];
if (ELF_ST_BIND(s->st_info) != STB_WEAK) {
- DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, si->name);
+ DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, name);
return -1;
}
@@ -1331,8 +1503,6 @@
sym_addr = static_cast<ElfW(Addr)>(s->st_value + lsi->load_bias);
}
count_relocation(kRelocSymbol);
- } else {
- s = NULL;
}
switch (type) {
@@ -1372,7 +1542,7 @@
* R_ARM_COPY may only appear in executable objects where e_type is
* set to ET_EXEC.
*/
- DL_ERR("%s R_ARM_COPY relocations are not supported", si->name);
+ DL_ERR("%s R_ARM_COPY relocations are not supported", name);
return -1;
#elif defined(__i386__)
case R_386_JMP_SLOT:
@@ -1380,7 +1550,7 @@
MARK(rel->r_offset);
TRACE_TYPE(RELO, "RELO JMP_SLOT %08x <- %08x %s", reloc, sym_addr, sym_name);
if (ELF_ST_TYPE(s->st_info) == STT_GNU_IFUNC) {
- si->set_has_ifuncs(true);
+ set_has_ifuncs(true);
} else {
*reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr;
}
@@ -1424,7 +1594,7 @@
if (s) {
*reinterpret_cast<ElfW(Addr)*>(reloc) += sym_addr;
} else {
- *reinterpret_cast<ElfW(Addr)*>(reloc) += si->base;
+ *reinterpret_cast<ElfW(Addr)*>(reloc) += base;
}
break;
#endif
@@ -1441,8 +1611,8 @@
return -1;
}
TRACE_TYPE(RELO, "RELO RELATIVE %p <- +%p",
- reinterpret_cast<void*>(reloc), reinterpret_cast<void*>(si->base));
- *reinterpret_cast<ElfW(Addr)*>(reloc) += si->base;
+ reinterpret_cast<void*>(reloc), reinterpret_cast<void*>(base));
+ *reinterpret_cast<ElfW(Addr)*>(reloc) += base;
break;
default:
@@ -1455,9 +1625,9 @@
#endif
#if defined(__mips__)
-static bool mips_relocate_got(soinfo* si, soinfo* needed[]) {
+static bool mips_relocate_got(soinfo* si) {
ElfW(Addr)** got = si->plt_got;
- if (got == NULL) {
+ if (got == nullptr) {
return true;
}
unsigned local_gotno = si->mips_local_gotno;
@@ -1487,9 +1657,9 @@
for (size_t g = gotsym; g < symtabno; g++, sym++, got++) {
// This is an undefined reference... try to locate it.
const char* sym_name = si->strtab + sym->st_name;
- soinfo* lsi;
- ElfW(Sym)* s = soinfo_do_lookup(si, sym_name, &lsi, needed);
- if (s == NULL) {
+ soinfo* lsi = nullptr;
+ ElfW(Sym)* s = soinfo_do_lookup(si, sym_name, &lsi);
+ if (s == nullptr) {
// We only allow an undefined symbol if this is a weak reference.
s = &symtab[g];
if (ELF_ST_BIND(s->st_info) != STB_WEAK) {
@@ -1509,7 +1679,7 @@
#endif
void soinfo::CallArray(const char* array_name __unused, linker_function_t* functions, size_t count, bool reverse) {
- if (functions == NULL) {
+ if (functions == nullptr) {
return;
}
@@ -1528,7 +1698,7 @@
}
void soinfo::CallFunction(const char* function_name __unused, linker_function_t function) {
- if (function == NULL || reinterpret_cast<uintptr_t>(function) == static_cast<uintptr_t>(-1)) {
+ if (function == nullptr || reinterpret_cast<uintptr_t>(function) == static_cast<uintptr_t>(-1)) {
return;
}
@@ -1564,7 +1734,7 @@
// out above, the libc constructor will be called again (recursively!).
constructors_called = true;
- if ((flags & FLAG_EXE) == 0 && preinit_array != NULL) {
+ if ((flags & FLAG_EXE) == 0 && preinit_array != nullptr) {
// The GNU dynamic linker silently ignores these, but we warn the developer.
PRINT("\"%s\": ignoring %zd-entry DT_PREINIT_ARRAY in shared library!",
name, preinit_array_count);
@@ -1579,9 +1749,14 @@
// DT_INIT should be called before DT_INIT_ARRAY if both are present.
CallFunction("DT_INIT", init_func);
CallArray("DT_INIT_ARRAY", init_array, init_array_count, false);
+
+ resolve_ifunc_symbols();
}
void soinfo::CallDestructors() {
+ if (!constructors_called) {
+ return;
+ }
TRACE("\"%s\": calling destructors", name);
// DT_FINI_ARRAY must be parsed in reverse order.
@@ -1596,16 +1771,14 @@
}
void soinfo::add_child(soinfo* child) {
- if ((this->flags & FLAG_NEW_SOINFO) == 0) {
- return;
+ if (has_min_version(0)) {
+ child->parents.push_back(this);
+ this->children.push_back(child);
}
-
- this->children.push_front(child);
- child->parents.push_front(this);
}
void soinfo::remove_all_links() {
- if ((this->flags & FLAG_NEW_SOINFO) == 0) {
+ if (!has_min_version(0)) {
return;
}
@@ -1617,7 +1790,7 @@
});
parents.for_each([&] (soinfo* parent) {
- parent->children.for_each([&] (const soinfo* child) {
+ parent->children.remove_if([&] (const soinfo* child) {
return child == this;
});
});
@@ -1628,63 +1801,65 @@
}
void soinfo::set_st_dev(dev_t dev) {
- if ((this->flags & FLAG_NEW_SOINFO) == 0) {
- return;
+ if (has_min_version(0)) {
+ st_dev = dev;
}
-
- st_dev = dev;
}
void soinfo::set_st_ino(ino_t ino) {
- if ((this->flags & FLAG_NEW_SOINFO) == 0) {
- return;
+ if (has_min_version(0)) {
+ st_ino = ino;
}
-
- st_ino = ino;
}
void soinfo::set_has_ifuncs(bool ifuncs) {
- if ((this->flags & FLAG_NEW_SOINFO) == 0) {
- return;
+ if (has_min_version(1)) {
+ has_ifuncs = ifuncs;
}
-
- has_ifuncs = ifuncs;
}
dev_t soinfo::get_st_dev() {
- if ((this->flags & FLAG_NEW_SOINFO) == 0) {
- return 0;
+ if (has_min_version(0)) {
+ return st_dev;
}
- return st_dev;
+ return 0;
};
ino_t soinfo::get_st_ino() {
- if ((this->flags & FLAG_NEW_SOINFO) == 0) {
- return 0;
+ if (has_min_version(0)) {
+ return st_ino;
}
- return st_ino;
+ return 0;
}
bool soinfo::get_has_ifuncs() {
- if ((this->flags & FLAG_NEW_SOINFO) == 0) {
- return false;
+ if (has_min_version(1)) {
+ return has_ifuncs;
}
- return has_ifuncs;
+ return false;
}
-// This is a return on get_children() in case
+// This is a return on get_children()/get_parents() if
// 'this->flags' does not have FLAG_NEW_SOINFO set.
static soinfo::soinfo_list_t g_empty_list;
soinfo::soinfo_list_t& soinfo::get_children() {
+ if (has_min_version(0)) {
+ return this->children;
+ }
+
+ return g_empty_list;
+}
+
+soinfo::soinfo_list_t& soinfo::get_parents() {
if ((this->flags & FLAG_NEW_SOINFO) == 0) {
return g_empty_list;
}
- return this->children;
+ return this->parents;
}
/* Force any of the closed stdin, stdout and stderr to be associated with
@@ -1748,84 +1923,78 @@
return return_value;
}
-static bool soinfo_link_image(soinfo* si, const android_dlextinfo* extinfo) {
- /* "base" might wrap around UINT32_MAX. */
- ElfW(Addr) base = si->load_bias;
- const ElfW(Phdr)* phdr = si->phdr;
- int phnum = si->phnum;
- bool relocating_linker = (si->flags & FLAG_LINKER) != 0;
+bool soinfo::PrelinkImage() {
+ phdr_table_get_dynamic_section(phdr, phnum, load_bias, &dynamic);
- /* We can't debug anything until the linker is relocated */
+ /* We can't log anything until the linker is relocated */
+ bool relocating_linker = (flags & FLAG_LINKER) != 0;
if (!relocating_linker) {
- INFO("[ linking %s ]", si->name);
- DEBUG("si->base = %p si->flags = 0x%08x", reinterpret_cast<void*>(si->base), si->flags);
+ INFO("[ linking %s ]", name);
+ DEBUG("si->base = %p si->flags = 0x%08x", reinterpret_cast<void*>(base), flags);
}
/* Extract dynamic section */
- size_t dynamic_count;
- ElfW(Word) dynamic_flags;
- phdr_table_get_dynamic_section(phdr, phnum, base, &si->dynamic,
- &dynamic_count, &dynamic_flags);
- if (si->dynamic == NULL) {
+ ElfW(Word) dynamic_flags = phdr->p_flags;
+ if (dynamic == nullptr) {
if (!relocating_linker) {
- DL_ERR("missing PT_DYNAMIC in \"%s\"", si->name);
+ DL_ERR("missing PT_DYNAMIC in \"%s\"", name);
}
return false;
} else {
if (!relocating_linker) {
- DEBUG("dynamic = %p", si->dynamic);
+ DEBUG("dynamic = %p", dynamic);
}
}
#if defined(__arm__)
- (void) phdr_table_get_arm_exidx(phdr, phnum, base,
- &si->ARM_exidx, &si->ARM_exidx_count);
+ (void) phdr_table_get_arm_exidx(phdr, phnum, load_bias,
+ &ARM_exidx, &ARM_exidx_count);
#endif
// Extract useful information from dynamic section.
uint32_t needed_count = 0;
- for (ElfW(Dyn)* d = si->dynamic; d->d_tag != DT_NULL; ++d) {
+ for (ElfW(Dyn)* d = dynamic; d->d_tag != DT_NULL; ++d) {
DEBUG("d = %p, d[0](tag) = %p d[1](val) = %p",
d, reinterpret_cast<void*>(d->d_tag), reinterpret_cast<void*>(d->d_un.d_val));
switch (d->d_tag) {
case DT_HASH:
- si->nbucket = reinterpret_cast<uint32_t*>(base + d->d_un.d_ptr)[0];
- si->nchain = reinterpret_cast<uint32_t*>(base + d->d_un.d_ptr)[1];
- si->bucket = reinterpret_cast<uint32_t*>(base + d->d_un.d_ptr + 8);
- si->chain = reinterpret_cast<uint32_t*>(base + d->d_un.d_ptr + 8 + si->nbucket * 4);
+ nbucket = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[0];
+ nchain = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr)[1];
+ bucket = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr + 8);
+ chain = reinterpret_cast<uint32_t*>(load_bias + d->d_un.d_ptr + 8 + nbucket * 4);
break;
case DT_STRTAB:
- si->strtab = reinterpret_cast<const char*>(base + d->d_un.d_ptr);
+ strtab = reinterpret_cast<const char*>(load_bias + d->d_un.d_ptr);
break;
case DT_SYMTAB:
- si->symtab = reinterpret_cast<ElfW(Sym)*>(base + d->d_un.d_ptr);
+ symtab = reinterpret_cast<ElfW(Sym)*>(load_bias + d->d_un.d_ptr);
break;
#if !defined(__LP64__)
case DT_PLTREL:
if (d->d_un.d_val != DT_REL) {
- DL_ERR("unsupported DT_RELA in \"%s\"", si->name);
+ DL_ERR("unsupported DT_RELA in \"%s\"", name);
return false;
}
break;
#endif
case DT_JMPREL:
#if defined(USE_RELA)
- si->plt_rela = reinterpret_cast<ElfW(Rela)*>(base + d->d_un.d_ptr);
+ plt_rela = reinterpret_cast<ElfW(Rela)*>(load_bias + d->d_un.d_ptr);
#else
- si->plt_rel = reinterpret_cast<ElfW(Rel)*>(base + d->d_un.d_ptr);
+ plt_rel = reinterpret_cast<ElfW(Rel)*>(load_bias + d->d_un.d_ptr);
#endif
break;
case DT_PLTRELSZ:
#if defined(USE_RELA)
- si->plt_rela_count = d->d_un.d_val / sizeof(ElfW(Rela));
+ plt_rela_count = d->d_un.d_val / sizeof(ElfW(Rela));
#else
- si->plt_rel_count = d->d_un.d_val / sizeof(ElfW(Rel));
+ plt_rel_count = d->d_un.d_val / sizeof(ElfW(Rel));
#endif
break;
#if defined(__mips__)
case DT_PLTGOT:
// Used by mips and mips64.
- si->plt_got = reinterpret_cast<ElfW(Addr)**>(base + d->d_un.d_ptr);
+ plt_got = reinterpret_cast<ElfW(Addr)**>(load_bias + d->d_un.d_ptr);
break;
#endif
case DT_DEBUG:
@@ -1833,7 +2002,7 @@
// if the dynamic table is writable
// FIXME: not working currently for N64
// The flags for the LOAD and DYNAMIC program headers do not agree.
-// The LOAD section containng the dynamic table has been mapped as
+// The LOAD section containing the dynamic table has been mapped as
// read-only, but the DYNAMIC header claims it is writable.
#if !(defined(__mips__) && defined(__LP64__))
if ((dynamic_flags & PF_W) != 0) {
@@ -1843,67 +2012,67 @@
#endif
#if defined(USE_RELA)
case DT_RELA:
- si->rela = reinterpret_cast<ElfW(Rela)*>(base + d->d_un.d_ptr);
+ rela = reinterpret_cast<ElfW(Rela)*>(load_bias + d->d_un.d_ptr);
break;
case DT_RELASZ:
- si->rela_count = d->d_un.d_val / sizeof(ElfW(Rela));
+ rela_count = d->d_un.d_val / sizeof(ElfW(Rela));
break;
case DT_REL:
- DL_ERR("unsupported DT_REL in \"%s\"", si->name);
+ DL_ERR("unsupported DT_REL in \"%s\"", name);
return false;
case DT_RELSZ:
- DL_ERR("unsupported DT_RELSZ in \"%s\"", si->name);
+ DL_ERR("unsupported DT_RELSZ in \"%s\"", name);
return false;
#else
case DT_REL:
- si->rel = reinterpret_cast<ElfW(Rel)*>(base + d->d_un.d_ptr);
+ rel = reinterpret_cast<ElfW(Rel)*>(load_bias + d->d_un.d_ptr);
break;
case DT_RELSZ:
- si->rel_count = d->d_un.d_val / sizeof(ElfW(Rel));
+ rel_count = d->d_un.d_val / sizeof(ElfW(Rel));
break;
case DT_RELA:
- DL_ERR("unsupported DT_RELA in \"%s\"", si->name);
+ DL_ERR("unsupported DT_RELA in \"%s\"", name);
return false;
#endif
case DT_INIT:
- si->init_func = reinterpret_cast<linker_function_t>(base + d->d_un.d_ptr);
- DEBUG("%s constructors (DT_INIT) found at %p", si->name, si->init_func);
+ init_func = reinterpret_cast<linker_function_t>(load_bias + d->d_un.d_ptr);
+ DEBUG("%s constructors (DT_INIT) found at %p", name, init_func);
break;
case DT_FINI:
- si->fini_func = reinterpret_cast<linker_function_t>(base + d->d_un.d_ptr);
- DEBUG("%s destructors (DT_FINI) found at %p", si->name, si->fini_func);
+ fini_func = reinterpret_cast<linker_function_t>(load_bias + d->d_un.d_ptr);
+ DEBUG("%s destructors (DT_FINI) found at %p", name, fini_func);
break;
case DT_INIT_ARRAY:
- si->init_array = reinterpret_cast<linker_function_t*>(base + d->d_un.d_ptr);
- DEBUG("%s constructors (DT_INIT_ARRAY) found at %p", si->name, si->init_array);
+ init_array = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
+ DEBUG("%s constructors (DT_INIT_ARRAY) found at %p", name, init_array);
break;
case DT_INIT_ARRAYSZ:
- si->init_array_count = ((unsigned)d->d_un.d_val) / sizeof(ElfW(Addr));
+ init_array_count = ((unsigned)d->d_un.d_val) / sizeof(ElfW(Addr));
break;
case DT_FINI_ARRAY:
- si->fini_array = reinterpret_cast<linker_function_t*>(base + d->d_un.d_ptr);
- DEBUG("%s destructors (DT_FINI_ARRAY) found at %p", si->name, si->fini_array);
+ fini_array = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
+ DEBUG("%s destructors (DT_FINI_ARRAY) found at %p", name, fini_array);
break;
case DT_FINI_ARRAYSZ:
- si->fini_array_count = ((unsigned)d->d_un.d_val) / sizeof(ElfW(Addr));
+ fini_array_count = ((unsigned)d->d_un.d_val) / sizeof(ElfW(Addr));
break;
case DT_PREINIT_ARRAY:
- si->preinit_array = reinterpret_cast<linker_function_t*>(base + d->d_un.d_ptr);
- DEBUG("%s constructors (DT_PREINIT_ARRAY) found at %p", si->name, si->preinit_array);
+ preinit_array = reinterpret_cast<linker_function_t*>(load_bias + d->d_un.d_ptr);
+ DEBUG("%s constructors (DT_PREINIT_ARRAY) found at %p", name, preinit_array);
break;
case DT_PREINIT_ARRAYSZ:
- si->preinit_array_count = ((unsigned)d->d_un.d_val) / sizeof(ElfW(Addr));
+ preinit_array_count = ((unsigned)d->d_un.d_val) / sizeof(ElfW(Addr));
break;
case DT_TEXTREL:
#if defined(__LP64__)
- DL_ERR("text relocations (DT_TEXTREL) found in 64-bit ELF file \"%s\"", si->name);
+ DL_ERR("text relocations (DT_TEXTREL) found in 64-bit ELF file \"%s\"", name);
return false;
#else
- si->has_text_relocations = true;
+ has_text_relocations = true;
break;
#endif
case DT_SYMBOLIC:
- si->has_DT_SYMBOLIC = true;
+ has_DT_SYMBOLIC = true;
break;
case DT_NEEDED:
++needed_count;
@@ -1911,14 +2080,14 @@
case DT_FLAGS:
if (d->d_un.d_val & DF_TEXTREL) {
#if defined(__LP64__)
- DL_ERR("text relocations (DF_TEXTREL) found in 64-bit ELF file \"%s\"", si->name);
+ DL_ERR("text relocations (DF_TEXTREL) found in 64-bit ELF file \"%s\"", name);
return false;
#else
- si->has_text_relocations = true;
+ has_text_relocations = true;
#endif
}
if (d->d_un.d_val & DF_SYMBOLIC) {
- si->has_DT_SYMBOLIC = true;
+ has_DT_SYMBOLIC = true;
}
break;
#if defined(__mips__)
@@ -1929,7 +2098,7 @@
case DT_MIPS_RLD_MAP:
// Set the DT_MIPS_RLD_MAP entry to the address of _r_debug for GDB.
{
- r_debug** dp = reinterpret_cast<r_debug**>(base + d->d_un.d_ptr);
+ r_debug** dp = reinterpret_cast<r_debug**>(load_bias + d->d_un.d_ptr);
*dp = &_r_debug;
}
break;
@@ -1940,15 +2109,15 @@
break;
case DT_MIPS_SYMTABNO:
- si->mips_symtabno = d->d_un.d_val;
+ mips_symtabno = d->d_un.d_val;
break;
case DT_MIPS_LOCAL_GOTNO:
- si->mips_local_gotno = d->d_un.d_val;
+ mips_local_gotno = d->d_un.d_val;
break;
case DT_MIPS_GOTSYM:
- si->mips_gotsym = d->d_un.d_val;
+ mips_gotsym = d->d_un.d_val;
break;
#endif
@@ -1960,100 +2129,67 @@
}
DEBUG("si->base = %p, si->strtab = %p, si->symtab = %p",
- reinterpret_cast<void*>(si->base), si->strtab, si->symtab);
+ reinterpret_cast<void*>(base), strtab, symtab);
// Sanity checks.
if (relocating_linker && needed_count != 0) {
DL_ERR("linker cannot have DT_NEEDED dependencies on other libraries");
return false;
}
- if (si->nbucket == 0) {
- DL_ERR("empty/missing DT_HASH in \"%s\" (built with --hash-style=gnu?)", si->name);
+ if (nbucket == 0) {
+ DL_ERR("empty/missing DT_HASH in \"%s\" (built with --hash-style=gnu?)", name);
return false;
}
- if (si->strtab == 0) {
- DL_ERR("empty/missing DT_STRTAB in \"%s\"", si->name);
+ if (strtab == 0) {
+ DL_ERR("empty/missing DT_STRTAB in \"%s\"", name);
return false;
}
- if (si->symtab == 0) {
- DL_ERR("empty/missing DT_SYMTAB in \"%s\"", si->name);
+ if (symtab == 0) {
+ DL_ERR("empty/missing DT_SYMTAB in \"%s\"", name);
return false;
}
+ return true;
+}
- // If this is the main executable, then load all of the libraries from LD_PRELOAD now.
- if (si->flags & FLAG_EXE) {
- memset(g_ld_preloads, 0, sizeof(g_ld_preloads));
- size_t preload_count = 0;
- for (size_t i = 0; g_ld_preload_names[i] != NULL; i++) {
- soinfo* lsi = find_library(g_ld_preload_names[i], 0, NULL);
- if (lsi != NULL) {
- g_ld_preloads[preload_count++] = lsi;
- } else {
- // As with glibc, failure to load an LD_PRELOAD library is just a warning.
- DL_WARN("could not load library \"%s\" from LD_PRELOAD for \"%s\"; caused by %s",
- g_ld_preload_names[i], si->name, linker_get_error_buffer());
- }
- }
- }
-
- soinfo** needed = reinterpret_cast<soinfo**>(alloca((1 + needed_count) * sizeof(soinfo*)));
- soinfo** pneeded = needed;
-
- for (ElfW(Dyn)* d = si->dynamic; d->d_tag != DT_NULL; ++d) {
- if (d->d_tag == DT_NEEDED) {
- const char* library_name = si->strtab + d->d_un.d_val;
- DEBUG("%s needs %s", si->name, library_name);
- soinfo* lsi = find_library(library_name, 0, NULL);
- if (lsi == NULL) {
- strlcpy(tmp_err_buf, linker_get_error_buffer(), sizeof(tmp_err_buf));
- DL_ERR("could not load library \"%s\" needed by \"%s\"; caused by %s",
- library_name, si->name, tmp_err_buf);
- return false;
- }
-
- si->add_child(lsi);
- *pneeded++ = lsi;
- }
- }
- *pneeded = NULL;
+bool soinfo::LinkImage(const android_dlextinfo* extinfo) {
#if !defined(__LP64__)
- if (si->has_text_relocations) {
+ if (has_text_relocations) {
// Make segments writable to allow text relocations to work properly. We will later call
// phdr_table_protect_segments() after all of them are applied and all constructors are run.
DL_WARN("%s has text relocations. This is wasting memory and prevents "
- "security hardening. Please fix.", si->name);
- if (phdr_table_unprotect_segments(si->phdr, si->phnum, si->load_bias) < 0) {
+ "security hardening. Please fix.", name);
+ if (phdr_table_unprotect_segments(phdr, phnum, load_bias) < 0) {
DL_ERR("can't unprotect loadable segments for \"%s\": %s",
- si->name, strerror(errno));
+ name, strerror(errno));
return false;
}
}
#endif
#if defined(USE_RELA)
- if (si->plt_rela != NULL) {
- DEBUG("[ relocating %s plt ]\n", si->name);
- if (soinfo_relocate(si, si->plt_rela, si->plt_rela_count, needed)) {
+ if (plt_rela != nullptr) {
+ DEBUG("[ relocating %s plt ]\n", name);
+ if (Relocate(plt_rela, plt_rela_count)) {
return false;
}
}
- if (si->rela != NULL) {
- DEBUG("[ relocating %s ]\n", si->name);
- if (soinfo_relocate(si, si->rela, si->rela_count, needed)) {
+ if (rela != nullptr) {
+ DEBUG("[ relocating %s ]\n", name);
+ if (Relocate(rela, rela_count)) {
return false;
}
}
#else
- if (si->plt_rel != NULL) {
- DEBUG("[ relocating %s plt ]", si->name);
- if (soinfo_relocate(si, si->plt_rel, si->plt_rel_count, needed)) {
+ if (plt_rel != nullptr) {
+ DEBUG("[ relocating %s plt ]", name);
+ if (Relocate(plt_rel, plt_rel_count)) {
return false;
}
}
- if (si->rel != NULL) {
- DEBUG("[ relocating %s ]", si->name);
- if (soinfo_relocate(si, si->rel, si->rel_count, needed)) {
+ if (rel != nullptr) {
+ DEBUG("[ relocating %s ]", name);
+ if (Relocate(rel, rel_count)) {
return false;
}
}
@@ -2063,59 +2199,58 @@
// they cannot be resolved until the rest of the relocations are done
// because we need to call the resolution function which may be waiting
// on relocations.
- if(si->get_has_ifuncs()) {
+ if(get_has_ifuncs()) {
#if defined(__i386__)
- soinfo_ifunc_relocate(si, si->plt_rel, si->plt_rel_count, needed);
+ soinfo_ifunc_relocate(this, plt_rel, plt_rel_count);
#elif defined(__x86_64__)
- soinfo_ifunc_relocate(si, si->plt_rela, si->plt_rela_count, needed);
+ soinfo_ifunc_relocate(this, plt_rela, plt_rela_count);
#endif
}
#if defined(__mips__)
- if (!mips_relocate_got(si, needed)) {
+ if (!mips_relocate_got(this)) {
return false;
}
#endif
- si->flags |= FLAG_LINKED;
- DEBUG("[ finished linking %s ]", si->name);
+ DEBUG("[ finished linking %s ]", name);
#if !defined(__LP64__)
- if (si->has_text_relocations) {
+ if (has_text_relocations) {
// All relocations are done, we can protect our segments back to read-only.
- if (phdr_table_protect_segments(si->phdr, si->phnum, si->load_bias) < 0) {
+ if (phdr_table_protect_segments(phdr, phnum, load_bias) < 0) {
DL_ERR("can't protect segments for \"%s\": %s",
- si->name, strerror(errno));
+ name, strerror(errno));
return false;
}
}
#endif
/* We can also turn on GNU RELRO protection */
- if (phdr_table_protect_gnu_relro(si->phdr, si->phnum, si->load_bias) < 0) {
+ if (phdr_table_protect_gnu_relro(phdr, phnum, load_bias) < 0) {
DL_ERR("can't enable GNU RELRO protection for \"%s\": %s",
- si->name, strerror(errno));
+ name, strerror(errno));
return false;
}
/* Handle serializing/sharing the RELRO segment */
if (extinfo && (extinfo->flags & ANDROID_DLEXT_WRITE_RELRO)) {
- if (phdr_table_serialize_gnu_relro(si->phdr, si->phnum, si->load_bias,
+ if (phdr_table_serialize_gnu_relro(phdr, phnum, load_bias,
extinfo->relro_fd) < 0) {
DL_ERR("failed serializing GNU RELRO section for \"%s\": %s",
- si->name, strerror(errno));
+ name, strerror(errno));
return false;
}
} else if (extinfo && (extinfo->flags & ANDROID_DLEXT_USE_RELRO)) {
- if (phdr_table_map_gnu_relro(si->phdr, si->phnum, si->load_bias,
+ if (phdr_table_map_gnu_relro(phdr, phnum, load_bias,
extinfo->relro_fd) < 0) {
DL_ERR("failed mapping GNU RELRO section for \"%s\": %s",
- si->name, strerror(errno));
+ name, strerror(errno));
return false;
}
}
- notify_gdb_of_load(si);
+ notify_gdb_of_load(this);
return true;
}
@@ -2127,11 +2262,11 @@
static void add_vdso(KernelArgumentBlock& args __unused) {
#if defined(AT_SYSINFO_EHDR)
ElfW(Ehdr)* ehdr_vdso = reinterpret_cast<ElfW(Ehdr)*>(args.getauxval(AT_SYSINFO_EHDR));
- if (ehdr_vdso == NULL) {
+ if (ehdr_vdso == nullptr) {
return;
}
- soinfo* si = soinfo_alloc("[vdso]", NULL);
+ soinfo* si = soinfo_alloc("[vdso]", nullptr);
si->phdr = reinterpret_cast<ElfW(Phdr)*>(reinterpret_cast<char*>(ehdr_vdso) + ehdr_vdso->e_phoff);
si->phnum = ehdr_vdso->e_phnum;
@@ -2139,14 +2274,20 @@
si->size = phdr_table_get_load_size(si->phdr, si->phnum);
si->load_bias = get_elf_exec_load_bias(ehdr_vdso);
- soinfo_link_image(si, NULL);
+ si->PrelinkImage();
+ si->LinkImage(nullptr);
#endif
}
/*
* This is linker soinfo for GDB. See details below.
*/
-static soinfo linker_soinfo_for_gdb;
+#if defined(__LP64__)
+#define LINKER_PATH "/system/bin/linker64"
+#else
+#define LINKER_PATH "/system/bin/linker"
+#endif
+static soinfo linker_soinfo_for_gdb(LINKER_PATH, nullptr);
/* gdb expects the linker to be in the debug shared object list.
* Without this, gdb has trouble locating the linker's ".text"
@@ -2156,12 +2297,6 @@
* be on the soinfo list.
*/
static void init_linker_info_for_gdb(ElfW(Addr) linker_base) {
-#if defined(__LP64__)
- strlcpy(linker_soinfo_for_gdb.name, "/system/bin/linker64", sizeof(linker_soinfo_for_gdb.name));
-#else
- strlcpy(linker_soinfo_for_gdb.name, "/system/bin/linker", sizeof(linker_soinfo_for_gdb.name));
-#endif
- linker_soinfo_for_gdb.flags = FLAG_NEW_SOINFO;
linker_soinfo_for_gdb.base = linker_base;
/*
@@ -2173,7 +2308,7 @@
ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(linker_base);
ElfW(Phdr)* phdr = reinterpret_cast<ElfW(Phdr)*>(linker_base + elf_hdr->e_phoff);
phdr_table_get_dynamic_section(phdr, elf_hdr->e_phnum, linker_base,
- &linker_soinfo_for_gdb.dynamic, NULL, NULL);
+ &linker_soinfo_for_gdb.dynamic);
insert_soinfo_into_debug_map(&linker_soinfo_for_gdb);
}
@@ -2183,16 +2318,6 @@
* and other non-local data at this point.
*/
static ElfW(Addr) __linker_init_post_relocation(KernelArgumentBlock& args, ElfW(Addr) linker_base) {
- /* NOTE: we store the args pointer on a special location
- * of the temporary TLS area in order to pass it to
- * the C Library's runtime initializer.
- *
- * The initializer must clear the slot and reset the TLS
- * to point to a different location to ensure that no other
- * shared library constructor can access it.
- */
- __libc_init_tls(args);
-
#if TIMING
struct timeval t0, t1;
gettimeofday(&t0, 0);
@@ -2211,14 +2336,14 @@
// Get a few environment variables.
const char* LD_DEBUG = linker_env_get("LD_DEBUG");
- if (LD_DEBUG != NULL) {
+ if (LD_DEBUG != nullptr) {
g_ld_debug_verbosity = atoi(LD_DEBUG);
}
// Normally, these are cleaned by linker_env_init, but the test
// doesn't cost us anything.
- const char* ldpath_env = NULL;
- const char* ldpreload_env = NULL;
+ const char* ldpath_env = nullptr;
+ const char* ldpreload_env = nullptr;
if (!get_AT_SECURE()) {
ldpath_env = linker_env_get("LD_LIBRARY_PATH");
ldpreload_env = linker_env_get("LD_PRELOAD");
@@ -2226,8 +2351,8 @@
INFO("[ android linker & debugger ]");
- soinfo* si = soinfo_alloc(args.argv[0], NULL);
- if (si == NULL) {
+ soinfo* si = soinfo_alloc(args.argv[0], nullptr);
+ if (si == nullptr) {
exit(EXIT_FAILURE);
}
@@ -2237,8 +2362,8 @@
map->l_addr = 0;
map->l_name = args.argv[0];
- map->l_prev = NULL;
- map->l_next = NULL;
+ map->l_prev = nullptr;
+ map->l_next = nullptr;
_r_debug.r_map = map;
r_debug_tail = map;
@@ -2264,7 +2389,7 @@
break;
}
}
- si->dynamic = NULL;
+ si->dynamic = nullptr;
si->ref_count = 1;
ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(si->base);
@@ -2279,7 +2404,38 @@
somain = si;
- if (!soinfo_link_image(si, NULL)) {
+ si->PrelinkImage();
+
+ // Load ld_preloads and dependencies.
+ StringLinkedList needed_library_name_list;
+ size_t needed_libraries_count = 0;
+ size_t ld_preloads_count = 0;
+ while (g_ld_preload_names[ld_preloads_count] != nullptr) {
+ needed_library_name_list.push_back(g_ld_preload_names[ld_preloads_count++]);
+ ++needed_libraries_count;
+ }
+
+ for_each_dt_needed(si, [&](const char* name) {
+ needed_library_name_list.push_back(name);
+ ++needed_libraries_count;
+ });
+
+ const char* needed_library_names[needed_libraries_count];
+ soinfo* needed_library_si[needed_libraries_count];
+
+ memset(needed_library_names, 0, sizeof(needed_library_names));
+ needed_library_name_list.copy_to_array(needed_library_names, needed_libraries_count);
+
+ if (needed_libraries_count > 0 && !find_libraries(needed_library_names, needed_libraries_count, needed_library_si, g_ld_preloads, ld_preloads_count, 0, nullptr)) {
+ __libc_format_fd(2, "CANNOT LINK EXECUTABLE DEPENDENCIES: %s\n", linker_get_error_buffer());
+ exit(EXIT_FAILURE);
+ }
+
+ for (size_t i = 0; i<needed_libraries_count; ++i) {
+ si->add_child(needed_library_si[i]);
+ }
+
+ if (!si->LinkImage(nullptr)) {
__libc_format_fd(2, "CANNOT LINK EXECUTABLE: %s\n", linker_get_error_buffer());
exit(EXIT_FAILURE);
}
@@ -2288,11 +2444,7 @@
si->CallPreInitConstructors();
- for (size_t i = 0; g_ld_preloads[i] != NULL; ++i) {
- g_ld_preloads[i]->CallConstructors();
- }
-
- /* After the link_image, the si->load_bias is initialized.
+ /* After the PrelinkImage, the si->load_bias is initialized.
* For so lib, the map->l_addr will be updated in notify_gdb_of_load.
* We need to update this value for so exe here. So Unwind_Backtrace
* for some arch like x86 could work correctly within so exe.
@@ -2301,7 +2453,7 @@
si->CallConstructors();
#if TIMING
- gettimeofday(&t1, NULL);
+ gettimeofday(&t1, nullptr);
PRINT("LINKER TIME: %s: %d microseconds", args.argv[0], (int) (
(((long long)t1.tv_sec * 1000000LL) + (long long)t1.tv_usec) -
(((long long)t0.tv_sec * 1000000LL) + (long long)t0.tv_usec)));
@@ -2380,10 +2532,6 @@
* function, or other GOT reference will generate a segfault.
*/
extern "C" ElfW(Addr) __linker_init(void* raw_args) {
- // Initialize static variables.
- solist = get_libdl_info();
- sonext = get_libdl_info();
-
KernelArgumentBlock args(raw_args);
ElfW(Addr) linker_addr = args.getauxval(AT_BASE);
@@ -2391,8 +2539,7 @@
ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(linker_addr);
ElfW(Phdr)* phdr = reinterpret_cast<ElfW(Phdr)*>(linker_addr + elf_hdr->e_phoff);
- soinfo linker_so;
- memset(&linker_so, 0, sizeof(soinfo));
+ soinfo linker_so("[dynamic linker]", nullptr);
// If the linker is not acting as PT_INTERP entry_point is equal to
// _start. Which means that the linker is running as an executable and
@@ -2404,16 +2551,15 @@
__libc_fatal("This is %s, the helper program for shared library executables.\n", args.argv[0]);
}
- strcpy(linker_so.name, "[dynamic linker]");
linker_so.base = linker_addr;
linker_so.size = phdr_table_get_load_size(phdr, elf_hdr->e_phnum);
linker_so.load_bias = get_elf_exec_load_bias(elf_hdr);
- linker_so.dynamic = NULL;
+ linker_so.dynamic = nullptr;
linker_so.phdr = phdr;
linker_so.phnum = elf_hdr->e_phnum;
linker_so.flags |= FLAG_LINKER;
- if (!soinfo_link_image(&linker_so, NULL)) {
+ if (!(linker_so.PrelinkImage() && linker_so.LinkImage(nullptr))) {
// It would be nice to print an error message, but if the linker
// can't link itself, there's no guarantee that we'll be able to
// call write() (because it involves a GOT reference). We may as
@@ -2425,9 +2571,17 @@
_exit(EXIT_FAILURE);
}
+ __libc_init_tls(args);
+
// Initialize the linker's own global variables
linker_so.CallConstructors();
+ // Initialize static variables. Note that in order to
+ // get correct libdl_info we need to call constructors
+ // before get_libdl_info().
+ solist = get_libdl_info();
+ sonext = get_libdl_info();
+
// We have successfully fixed our own relocations. It's safe to run
// the main part of the linker now.
args.abort_message_ptr = &g_abort_message;
diff --git a/linker/linker.h b/linker/linker.h
index 0ea1f03..3024d3a 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -30,6 +30,7 @@
#define _LINKER_H_
#include <elf.h>
+#include <inttypes.h>
#include <link.h>
#include <unistd.h>
#include <android/dlext.h>
@@ -88,6 +89,8 @@
#define FLAG_LINKER 0x00000010 // The linker itself
#define FLAG_NEW_SOINFO 0x40000000 // new soinfo format
+#define SOINFO_VERSION 1
+
#define SOINFO_NAME_LEN 128
typedef void (*linker_function_t)();
@@ -195,9 +198,14 @@
bool has_text_relocations;
#endif
bool has_DT_SYMBOLIC;
+
+ soinfo(const char* name, const struct stat* file_stat);
+
void CallConstructors();
void CallDestructors();
void CallPreInitConstructors();
+ bool PrelinkImage();
+ bool LinkImage(const android_dlextinfo* extinfo);
void add_child(soinfo* child);
void remove_all_links();
@@ -209,21 +217,28 @@
dev_t get_st_dev();
bool get_has_ifuncs();
-
-
soinfo_list_t& get_children();
+ soinfo_list_t& get_parents();
+ bool inline has_min_version(uint32_t min_version) {
+ return (flags & FLAG_NEW_SOINFO) != 0 && version >= min_version;
+ }
private:
void CallArray(const char* array_name, linker_function_t* functions, size_t count, bool reverse);
void CallFunction(const char* function_name, linker_function_t function);
+ void resolve_ifunc_symbols();
+#if defined(USE_RELA)
+ int Relocate(ElfW(Rela)* rela, unsigned count);
+#else
+ int Relocate(ElfW(Rel)* rel, unsigned count);
+#endif
private:
// This part of the structure is only available
// when FLAG_NEW_SOINFO is set in this->flags.
- unsigned int version;
+ uint32_t version;
- bool has_ifuncs;
-
+ // version >= 0
dev_t st_dev;
ino_t st_ino;
@@ -231,6 +246,8 @@
soinfo_list_t children;
soinfo_list_t parents;
+ // version >= 1
+ bool has_ifuncs;
};
extern soinfo* get_libdl_info();
@@ -240,11 +257,11 @@
soinfo* do_dlopen(const char* name, int flags, const android_dlextinfo* extinfo);
void do_dlclose(soinfo* si);
-ElfW(Sym)* dlsym_linear_lookup(const char* name, soinfo** found, soinfo* start, soinfo* caller_si);
+ElfW(Sym)* dlsym_linear_lookup(const char* name, soinfo** found, soinfo* start);
soinfo* find_containing_library(const void* addr);
ElfW(Sym)* dladdr_find_symbol(soinfo* si, const void* addr);
-ElfW(Sym)* dlsym_handle_lookup(soinfo* si, soinfo** found, const char* name, soinfo* caller_si);
+ElfW(Sym)* dlsym_handle_lookup(soinfo* si, soinfo** found, const char* name);
void debuggerd_init();
extern "C" abort_msg_t* g_abort_message;
diff --git a/linker/linker_environ.cpp b/linker/linker_environ.cpp
index 846624b..daee56f 100644
--- a/linker/linker_environ.cpp
+++ b/linker/linker_environ.cpp
@@ -58,7 +58,7 @@
// Check if the environment variable definition at 'envstr'
// starts with '<name>=', and if so return the address of the
-// first character after the equal sign. Otherwise return NULL.
+// first character after the equal sign. Otherwise return null.
static const char* env_match(const char* envstr, const char* name) {
size_t i = 0;
@@ -70,7 +70,7 @@
return envstr + i + 1;
}
- return NULL;
+ return nullptr;
}
static bool __is_valid_environment_variable(const char* name) {
@@ -78,7 +78,7 @@
// as the maximum size for an env. variable definition.
const int MAX_ENV_LEN = 32*4096;
- if (name == NULL) {
+ if (name == nullptr) {
return false;
}
@@ -136,10 +136,10 @@
"RES_OPTIONS",
"TMPDIR",
"TZDIR",
- NULL
+ nullptr
};
- for (size_t i = 0; UNSAFE_VARIABLE_NAMES[i] != NULL; ++i) {
- if (env_match(name, UNSAFE_VARIABLE_NAMES[i]) != NULL) {
+ for (size_t i = 0; UNSAFE_VARIABLE_NAMES[i] != nullptr; ++i) {
+ if (env_match(name, UNSAFE_VARIABLE_NAMES[i]) != nullptr) {
return true;
}
}
@@ -149,7 +149,7 @@
static void __sanitize_environment_variables() {
char** src = _envp;
char** dst = _envp;
- for (; src[0] != NULL; ++src) {
+ for (; src[0] != nullptr; ++src) {
if (!__is_valid_environment_variable(src[0])) {
continue;
}
@@ -160,11 +160,11 @@
dst[0] = src[0];
++dst;
}
- dst[0] = NULL;
+ dst[0] = nullptr;
}
void linker_env_init(KernelArgumentBlock& args) {
- // Store environment pointer - can't be NULL.
+ // Store environment pointer - can't be null.
_envp = args.envp;
__init_AT_SECURE(args);
@@ -172,18 +172,18 @@
}
const char* linker_env_get(const char* name) {
- if (name == NULL || name[0] == '\0') {
- return NULL;
+ if (name == nullptr || name[0] == '\0') {
+ return nullptr;
}
- for (char** p = _envp; p[0] != NULL; ++p) {
+ for (char** p = _envp; p[0] != nullptr; ++p) {
const char* val = env_match(p[0], name);
- if (val != NULL) {
+ if (val != nullptr) {
if (val[0] == '\0') {
- return NULL; // Return NULL for empty strings.
+ return nullptr; // Return null for empty strings.
}
return val;
}
}
- return NULL;
+ return nullptr;
}
diff --git a/linker/linker_environ.h b/linker/linker_environ.h
index d3f54fd..0f6ac08 100644
--- a/linker/linker_environ.h
+++ b/linker/linker_environ.h
@@ -35,7 +35,7 @@
extern void linker_env_init(KernelArgumentBlock& args);
// Returns the value of environment variable 'name' if defined and not
-// empty, or NULL otherwise.
+// empty, or null otherwise.
extern const char* linker_env_get(const char* name);
// Returns the value of this program's AT_SECURE variable.
diff --git a/linker/linker_executable.mk b/linker/linker_executable.mk
deleted file mode 100644
index 4902a0c..0000000
--- a/linker/linker_executable.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-
-#
-# Instead of including $(BUILD_EXECUTABLE), we execute the steps to create an executable by
-# hand, as we want to insert an extra objcopy step that is not supported by the build
-# system, and is probably specific the linker only, so there's no need to modify the build
-# system for the purpose.
-#
-
-LOCAL_MODULE_CLASS := EXECUTABLES
-LOCAL_MODULE_SUFFIX := $(TARGET_EXECUTABLE_SUFFIX)
-
-include $(BUILD_SYSTEM)/dynamic_binary.mk
-
-# See build/core/executable_internal.mk
-$(linked_module): PRIVATE_TARGET_GLOBAL_LD_DIRS := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LD_DIRS)
-$(linked_module): PRIVATE_TARGET_GLOBAL_LDFLAGS := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LDFLAGS)
-$(linked_module): PRIVATE_TARGET_FDO_LIB := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_LIB)
-$(linked_module): PRIVATE_TARGET_LIBGCC := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_LIBGCC)
-$(linked_module): PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTBEGIN_DYNAMIC_O)
-$(linked_module): PRIVATE_TARGET_CRTBEGIN_STATIC_O := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTBEGIN_STATIC_O)
-$(linked_module): PRIVATE_TARGET_CRTEND_O := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTEND_O)
-$(linked_module): PRIVATE_TARGET_OBJCOPY := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJCOPY)
-$(linked_module): $(TARGET_CRTBEGIN_STATIC_O) $(all_objects) $(all_libraries) $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTEND_O)
- $(transform-o-to-static-executable)
- @echo "target PrefixSymbols: $(PRIVATE_MODULE) ($@)"
- $(hide) $(PRIVATE_TARGET_OBJCOPY) --prefix-symbols=__dl_ $@
diff --git a/tests/libs/dlsym_local_symbol.map b/linker/linker_libc_support.c
similarity index 79%
copy from tests/libs/dlsym_local_symbol.map
copy to linker/linker_libc_support.c
index 58a2299..17db6d4 100644
--- a/tests/libs/dlsym_local_symbol.map
+++ b/linker/linker_libc_support.c
@@ -13,10 +13,5 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-LIBTEST_LOCAL_SYMBOL_1.0 {
- global:
- dlsym_local_symbol_get_taxicab_number;
- dlsym_local_symbol_get_taxicab_number_using_dlsym;
- local:
- *;
-};
+
+#include "../libc/arch-common/bionic/__dso_handle.h"
diff --git a/linker/linker_phdr.cpp b/linker/linker_phdr.cpp
index 0b99d20..4365172 100644
--- a/linker/linker_phdr.cpp
+++ b/linker/linker_phdr.cpp
@@ -121,13 +121,13 @@
ElfReader::ElfReader(const char* name, int fd)
: name_(name), fd_(fd),
- phdr_num_(0), phdr_mmap_(NULL), phdr_table_(NULL), phdr_size_(0),
- load_start_(NULL), load_size_(0), load_bias_(0),
- loaded_phdr_(NULL) {
+ phdr_num_(0), phdr_mmap_(nullptr), phdr_table_(nullptr), phdr_size_(0),
+ load_start_(nullptr), load_size_(0), load_bias_(0),
+ loaded_phdr_(nullptr) {
}
ElfReader::~ElfReader() {
- if (phdr_mmap_ != NULL) {
+ if (phdr_mmap_ != nullptr) {
munmap(phdr_mmap_, phdr_size_);
}
}
@@ -225,7 +225,7 @@
phdr_size_ = page_max - page_min;
- void* mmap_result = mmap(NULL, phdr_size_, PROT_READ, MAP_PRIVATE, fd_, page_min);
+ void* mmap_result = mmap(nullptr, phdr_size_, PROT_READ, MAP_PRIVATE, fd_, page_min);
if (mmap_result == MAP_FAILED) {
DL_ERR("\"%s\" phdr mmap failed: %s", name_, strerror(errno));
return false;
@@ -242,7 +242,7 @@
* process' address space. If there are no loadable segments, 0 is
* returned.
*
- * If out_min_vaddr or out_max_vaddr are non-NULL, they will be
+ * If out_min_vaddr or out_max_vaddr are not null, they will be
* set to the minimum and maximum addresses of pages to be reserved,
* or 0 if there is nothing to load.
*/
@@ -276,10 +276,10 @@
min_vaddr = PAGE_START(min_vaddr);
max_vaddr = PAGE_END(max_vaddr);
- if (out_min_vaddr != NULL) {
+ if (out_min_vaddr != nullptr) {
*out_min_vaddr = min_vaddr;
}
- if (out_max_vaddr != NULL) {
+ if (out_max_vaddr != nullptr) {
*out_max_vaddr = max_vaddr;
}
return max_vaddr - min_vaddr;
@@ -301,7 +301,7 @@
size_t reserved_size = 0;
bool reserved_hint = true;
- if (extinfo != NULL) {
+ if (extinfo != nullptr) {
if (extinfo->flags & ANDROID_DLEXT_RESERVED_ADDRESS) {
reserved_size = extinfo->reserved_size;
reserved_hint = false;
@@ -585,9 +585,9 @@
return -1;
}
off_t file_size = file_stat.st_size;
- void* temp_mapping = NULL;
+ void* temp_mapping = nullptr;
if (file_size > 0) {
- temp_mapping = mmap(NULL, file_size, PROT_READ, MAP_PRIVATE, fd, 0);
+ temp_mapping = mmap(nullptr, file_size, PROT_READ, MAP_PRIVATE, fd, 0);
if (temp_mapping == MAP_FAILED) {
return -1;
}
@@ -667,7 +667,7 @@
* phdr_count -> number of entries in tables
* load_bias -> load bias
* Output:
- * arm_exidx -> address of table in memory (NULL on failure).
+ * arm_exidx -> address of table in memory (null on failure).
* arm_exidx_count -> number of items in table (0 on failure).
* Return:
* 0 on error, -1 on failure (_no_ error code in errno)
@@ -687,49 +687,32 @@
*arm_exidx_count = (unsigned)(phdr->p_memsz / 8);
return 0;
}
- *arm_exidx = NULL;
+ *arm_exidx = nullptr;
*arm_exidx_count = 0;
return -1;
}
#endif
/* Return the address and size of the ELF file's .dynamic section in memory,
- * or NULL if missing.
+ * or null if missing.
*
* Input:
* phdr_table -> program header table
* phdr_count -> number of entries in tables
* load_bias -> load bias
* Output:
- * dynamic -> address of table in memory (NULL on failure).
- * dynamic_count -> number of items in table (0 on failure).
- * dynamic_flags -> protection flags for section (unset on failure)
+ * dynamic -> address of table in memory (null on failure).
* Return:
* void
*/
void phdr_table_get_dynamic_section(const ElfW(Phdr)* phdr_table, size_t phdr_count,
- ElfW(Addr) load_bias,
- ElfW(Dyn)** dynamic, size_t* dynamic_count, ElfW(Word)* dynamic_flags) {
- const ElfW(Phdr)* phdr = phdr_table;
- const ElfW(Phdr)* phdr_limit = phdr + phdr_count;
-
- for (phdr = phdr_table; phdr < phdr_limit; phdr++) {
- if (phdr->p_type != PT_DYNAMIC) {
- continue;
+ ElfW(Addr) load_bias, ElfW(Dyn)** dynamic) {
+ *dynamic = nullptr;
+ for (const ElfW(Phdr)* phdr = phdr_table, *phdr_limit = phdr + phdr_count; phdr < phdr_limit; phdr++) {
+ if (phdr->p_type == PT_DYNAMIC) {
+ *dynamic = reinterpret_cast<ElfW(Dyn)*>(load_bias + phdr->p_vaddr);
+ return;
}
-
- *dynamic = reinterpret_cast<ElfW(Dyn)*>(load_bias + phdr->p_vaddr);
- if (dynamic_count) {
- *dynamic_count = (unsigned)(phdr->p_memsz / 8);
- }
- if (dynamic_flags) {
- *dynamic_flags = phdr->p_flags;
- }
- return;
- }
- *dynamic = NULL;
- if (dynamic_count) {
- *dynamic_count = 0;
}
}
diff --git a/linker/linker_phdr.h b/linker/linker_phdr.h
index 611f1a7..d4c3ce8 100644
--- a/linker/linker_phdr.h
+++ b/linker/linker_phdr.h
@@ -81,7 +81,7 @@
};
size_t phdr_table_get_load_size(const ElfW(Phdr)* phdr_table, size_t phdr_count,
- ElfW(Addr)* min_vaddr = NULL, ElfW(Addr)* max_vaddr = NULL);
+ ElfW(Addr)* min_vaddr = nullptr, ElfW(Addr)* max_vaddr = nullptr);
int phdr_table_protect_segments(const ElfW(Phdr)* phdr_table, size_t phdr_count, ElfW(Addr) load_bias);
@@ -101,7 +101,6 @@
#endif
void phdr_table_get_dynamic_section(const ElfW(Phdr)* phdr_table, size_t phdr_count,
- ElfW(Addr) load_bias,
- ElfW(Dyn)** dynamic, size_t* dynamic_count, ElfW(Word)* dynamic_flags);
+ ElfW(Addr) load_bias, ElfW(Dyn)** dynamic);
#endif /* LINKER_PHDR_H */
diff --git a/linker/tests/linked_list_test.cpp b/linker/tests/linked_list_test.cpp
index b9816fa..09ad687 100644
--- a/linker/tests/linked_list_test.cpp
+++ b/linker/tests/linked_list_test.cpp
@@ -80,7 +80,7 @@
});
ASSERT_TRUE(!alloc_called);
- ASSERT_TRUE(!free_called);
+ ASSERT_TRUE(free_called);
ASSERT_EQ("dba", test_list_to_string(list));
alloc_called = free_called = false;
@@ -103,15 +103,114 @@
ASSERT_EQ("ab", test_list_to_string(list));
list.push_back("c");
ASSERT_EQ("abc", test_list_to_string(list));
- ASSERT_EQ("a", list.pop_front());
+ ASSERT_STREQ("a", list.pop_front());
ASSERT_EQ("bc", test_list_to_string(list));
- ASSERT_EQ("b", list.pop_front());
+ ASSERT_STREQ("b", list.pop_front());
ASSERT_EQ("c", test_list_to_string(list));
- ASSERT_EQ("c", list.pop_front());
+ ASSERT_STREQ("c", list.pop_front());
ASSERT_EQ("", test_list_to_string(list));
ASSERT_TRUE(list.pop_front() == nullptr);
list.push_back("r");
ASSERT_EQ("r", test_list_to_string(list));
- ASSERT_EQ("r", list.pop_front());
+ ASSERT_STREQ("r", list.pop_front());
ASSERT_TRUE(list.pop_front() == nullptr);
}
+
+TEST(linked_list, remove_if_then_pop) {
+ test_list_t list;
+ list.push_back("a");
+ list.push_back("b");
+ list.push_back("c");
+ list.push_back("d");
+ list.remove_if([](const char* c) {
+ return *c == 'b' || *c == 'c';
+ });
+
+ ASSERT_EQ("ad", test_list_to_string(list));
+ ASSERT_STREQ("a", list.pop_front());
+ ASSERT_EQ("d", test_list_to_string(list));
+ ASSERT_STREQ("d", list.pop_front());
+ ASSERT_TRUE(list.pop_front() == nullptr);
+}
+
+TEST(linked_list, copy_to_array) {
+ test_list_t list;
+ const size_t max_size = 128;
+ const char* buf[max_size];
+ memset(buf, 0, sizeof(buf));
+
+ ASSERT_EQ(0U, list.copy_to_array(buf, max_size));
+ ASSERT_EQ(nullptr, buf[0]);
+
+ list.push_back("a");
+ list.push_back("b");
+ list.push_back("c");
+ list.push_back("d");
+
+ memset(buf, 0, sizeof(buf));
+ ASSERT_EQ(2U, list.copy_to_array(buf, 2));
+ ASSERT_STREQ("a", buf[0]);
+ ASSERT_STREQ("b", buf[1]);
+ ASSERT_EQ(nullptr, buf[2]);
+
+ ASSERT_EQ(4U, list.copy_to_array(buf, max_size));
+ ASSERT_STREQ("a", buf[0]);
+ ASSERT_STREQ("b", buf[1]);
+ ASSERT_STREQ("c", buf[2]);
+ ASSERT_STREQ("d", buf[3]);
+ ASSERT_EQ(nullptr, buf[4]);
+
+ memset(buf, 0, sizeof(buf));
+ list.remove_if([](const char* c) {
+ return *c != 'c';
+ });
+ ASSERT_EQ(1U, list.copy_to_array(buf, max_size));
+ ASSERT_STREQ("c", buf[0]);
+ ASSERT_EQ(nullptr, buf[1]);
+
+ memset(buf, 0, sizeof(buf));
+
+ list.remove_if([](const char* c) {
+ return *c == 'c';
+ });
+
+ ASSERT_EQ(0U, list.copy_to_array(buf, max_size));
+ ASSERT_EQ(nullptr, buf[0]);
+}
+
+TEST(linked_list, test_visit) {
+ test_list_t list;
+ list.push_back("a");
+ list.push_back("b");
+ list.push_back("c");
+ list.push_back("d");
+
+ int visits = 0;
+ std::stringstream ss;
+ bool result = list.visit([&](const char* c) {
+ ++visits;
+ ss << c;
+ return true;
+ });
+
+ ASSERT_TRUE(result);
+ ASSERT_EQ(4, visits);
+ ASSERT_EQ("abcd", ss.str());
+
+ visits = 0;
+ ss.str(std::string());
+
+ result = list.visit([&](const char* c) {
+ if (++visits == 3) {
+ return false;
+ }
+
+ ss << c;
+ return true;
+ });
+
+ ASSERT_TRUE(!result);
+ ASSERT_EQ(3, visits);
+ ASSERT_EQ("ab", ss.str());
+}
+
diff --git a/tests/Android.mk b/tests/Android.mk
index b370b92..49efdad 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -92,8 +92,10 @@
stdatomic_test.cpp \
stdint_test.cpp \
stdio_test.cpp \
+ stdio_ext_test.cpp \
stdlib_test.cpp \
string_test.cpp \
+ string_posix_strerror_r_test.cpp \
strings_test.cpp \
stubs_test.cpp \
sstream_test.cpp \
@@ -112,6 +114,7 @@
system_properties_test.cpp \
time_test.cpp \
uchar_test.cpp \
+ uniqueptr_test.cpp \
unistd_test.cpp \
wchar_test.cpp \
@@ -129,6 +132,7 @@
libBionicStandardTests_c_includes := \
bionic/libc \
+ external/tinyxml2 \
libBionicStandardTests_ldlibs_host := \
-lrt \
@@ -237,11 +241,16 @@
# -----------------------------------------------------------------------------
# Tests for the device using bionic's .so. Run with:
-# adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests
+# adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests32
+# adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests64
# -----------------------------------------------------------------------------
bionic-unit-tests_whole_static_libraries := \
libBionicTests \
+bionic-unit-tests_static_libraries := \
+ libtinyxml2 \
+ liblog \
+
bionic-unit-tests_src_files := \
atexit_test.cpp \
dlext_test.cpp \
@@ -255,6 +264,7 @@
-Wl,-u,DlSymTestFunction \
bionic-unit-tests_c_includes := \
+ bionic/libc \
$(call include-path-for, libpagemap) \
bionic-unit-tests_shared_libraries_target := \
@@ -269,7 +279,8 @@
# -----------------------------------------------------------------------------
# Tests for the device linked against bionic's static library. Run with:
-# adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static
+# adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static32
+# adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static64
# -----------------------------------------------------------------------------
bionic-unit-tests-static_whole_static_libraries := \
libBionicTests \
@@ -279,6 +290,8 @@
libm \
libc \
libstdc++ \
+ libtinyxml2 \
+ liblog \
bionic-unit-tests-static_force_static_executable := true
@@ -354,6 +367,22 @@
$(TARGET_OUT_DATA_NATIVE_TESTS)/bionic-unit-tests/bionic-unit-tests$(NATIVE_TEST_SUFFIX) $(BIONIC_TEST_FLAGS)
endif
+ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86_64))
+# add target to run lp32 tests
+bionic-unit-tests-run-on-host32: bionic-unit-tests_32 $(TARGET_OUT_EXECUTABLES)/$(LINKER) $(TARGET_OUT_EXECUTABLES)/sh
+ if [ ! -d /system -o ! -d /system/bin ]; then \
+ echo "Attempting to create /system/bin"; \
+ sudo mkdir -p -m 0777 /system/bin; \
+ fi
+ mkdir -p $(TARGET_OUT_DATA)/local/tmp
+ cp $(TARGET_OUT_EXECUTABLES)/linker /system/bin
+ cp $(TARGET_OUT_EXECUTABLES)/sh /system/bin
+ ANDROID_DATA=$(TARGET_OUT_DATA) \
+ ANDROID_ROOT=$(TARGET_OUT) \
+ LD_LIBRARY_PATH=$(2ND_TARGET_OUT_SHARED_LIBRARIES) \
+ $(2ND_TARGET_OUT_DATA_NATIVE_TESTS)/bionic-unit-tests/bionic-unit-tests32 $(BIONIC_TEST_FLAGS)
+endif
+
endif # linux-x86
include $(call first-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/atexit_test.cpp b/tests/atexit_test.cpp
index e01220e..e92889d 100644
--- a/tests/atexit_test.cpp
+++ b/tests/atexit_test.cpp
@@ -24,20 +24,33 @@
#include <string>
-TEST(atexit, dlclose) {
+TEST(atexit, sofile) {
std::string atexit_call_sequence;
bool valid_this_in_static_dtor = false;
+ bool attr_dtor_called = false;
+
void* handle = dlopen("libtest_atexit.so", RTLD_NOW);
- ASSERT_TRUE(handle != NULL);
+ ASSERT_TRUE(handle != nullptr);
+
+ typedef int (*int_fn)(void);
+ int_fn get_cxx_ctor_called, get_attr_ctor_called;
+ get_cxx_ctor_called = reinterpret_cast<int_fn>(dlsym(handle, "get_cxx_ctor_called"));
+ get_attr_ctor_called = reinterpret_cast<int_fn>(dlsym(handle, "get_attr_ctor_called"));
+ ASSERT_TRUE(get_cxx_ctor_called != nullptr);
+ ASSERT_TRUE(get_attr_ctor_called != nullptr);
+
+ ASSERT_EQ(1, get_cxx_ctor_called());
+ ASSERT_EQ(1, get_attr_ctor_called());
void* sym = dlsym(handle, "register_atexit");
- ASSERT_TRUE(sym != NULL);
- reinterpret_cast<void (*)(std::string*, bool*)>(sym)(&atexit_call_sequence, &valid_this_in_static_dtor);
+ ASSERT_TRUE(sym != nullptr);
+ reinterpret_cast<void (*)(std::string*, bool*, bool*)>(sym)(&atexit_call_sequence, &valid_this_in_static_dtor, &attr_dtor_called);
ASSERT_EQ(0, dlclose(handle));
// this test verifies atexit call from atexit handler. as well as the order of calls
ASSERT_EQ("Humpty Dumpty sat on a wall", atexit_call_sequence);
ASSERT_TRUE(valid_this_in_static_dtor);
+ ASSERT_TRUE(attr_dtor_called);
}
class TestMainStaticDtorClass {
@@ -57,7 +70,7 @@
static const TestMainStaticDtorClass* expected_this;
};
-const TestMainStaticDtorClass* TestMainStaticDtorClass::expected_this = NULL;
+const TestMainStaticDtorClass* TestMainStaticDtorClass::expected_this = nullptr;
static void atexit_func5() {
fprintf(stderr, "5");
diff --git a/tests/dlext_test.cpp b/tests/dlext_test.cpp
index da63046..7bd59c8 100644
--- a/tests/dlext_test.cpp
+++ b/tests/dlext_test.cpp
@@ -117,7 +117,7 @@
ASSERT_DL_NOTNULL(handle_);
fn f = reinterpret_cast<fn>(dlsym(handle_, "getRandomNumber"));
ASSERT_DL_NOTNULL(f);
- EXPECT_GE(f, start);
+ EXPECT_GE(reinterpret_cast<void*>(f), start);
EXPECT_LT(reinterpret_cast<void*>(f),
reinterpret_cast<char*>(start) + LIBSIZE);
EXPECT_EQ(4, f());
@@ -147,7 +147,7 @@
ASSERT_DL_NOTNULL(handle_);
fn f = reinterpret_cast<fn>(dlsym(handle_, "getRandomNumber"));
ASSERT_DL_NOTNULL(f);
- EXPECT_GE(f, start);
+ EXPECT_GE(reinterpret_cast<void*>(f), start);
EXPECT_LT(reinterpret_cast<void*>(f),
reinterpret_cast<char*>(start) + LIBSIZE);
EXPECT_EQ(4, f());
@@ -165,8 +165,9 @@
ASSERT_DL_NOTNULL(handle_);
fn f = reinterpret_cast<fn>(dlsym(handle_, "getRandomNumber"));
ASSERT_DL_NOTNULL(f);
- EXPECT_TRUE(f < start || (reinterpret_cast<void*>(f) >=
- reinterpret_cast<char*>(start) + PAGE_SIZE));
+ EXPECT_TRUE(reinterpret_cast<void*>(f) < start ||
+ (reinterpret_cast<void*>(f) >=
+ reinterpret_cast<char*>(start) + PAGE_SIZE));
EXPECT_EQ(4, f());
}
@@ -259,6 +260,11 @@
}
TEST_F(DlExtRelroSharingTest, VerifyMemorySaving) {
+ if (geteuid() != 0) {
+ GTEST_LOG_(INFO) << "This test must be run as root.\n";
+ return;
+ }
+
ASSERT_NO_FATAL_FAILURE(CreateRelroFile(LIBNAME));
int relro_fd = open(relro_file_, O_RDONLY);
ASSERT_NOERROR(relro_fd);
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index be05230..3568f8f 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -22,6 +22,8 @@
#include <stdio.h>
#include <stdint.h>
+#include "private/ScopeGuard.h"
+
#include <string>
#define ASSERT_SUBSTR(needle, haystack) \
@@ -62,25 +64,6 @@
ASSERT_EQ(0, dlclose(self));
}
-#if defined(__arm__)
-// This seems to be working only for arm.
-// Others platforms optimize LOCAL PROTECTED symbols.
-TEST(dlfcn, dlsym_local_symbol) {
- void* handle = dlopen("libtest_local_symbol.so", RTLD_NOW);
- ASSERT_TRUE(handle != NULL);
- dlerror();
- void* sym = dlsym(handle, "private_taxicab_number");
- ASSERT_TRUE(sym == NULL);
- ASSERT_STREQ("undefined symbol: private_taxicab_number", dlerror());
-
- uint32_t (*f)(void);
- f = reinterpret_cast<uint32_t (*)(void)>(dlsym(handle, "dlsym_local_symbol_get_taxicab_number_using_dlsym"));
- ASSERT_TRUE(f != NULL);
- ASSERT_EQ(1729U, f());
- dlclose(handle);
-}
-#endif
-
TEST(dlfcn, dlsym_with_dependencies) {
void* handle = dlopen("libtest_with_dependency.so", RTLD_NOW);
ASSERT_TRUE(handle != NULL);
@@ -109,36 +92,121 @@
// ifuncs are only supported on intel for now
#if defined(__i386__) || defined(__x86_64__)
TEST(dlfcn, ifunc) {
- const char* (*foo_ptr)();
- const char* (*foo_library_ptr)();
+ typedef const char* (*fn_ptr)();
// ifunc's choice depends on whether IFUNC_CHOICE has a value
// first check the set case
setenv("IFUNC_CHOICE", "set", 1);
void* handle = dlopen("libtest_ifunc.so", RTLD_NOW);
ASSERT_TRUE(handle != NULL);
- *(void **)(&foo_ptr) = dlsym(handle, "foo");
- *(void **)(&foo_library_ptr) = dlsym(handle, "foo_library");
+ fn_ptr foo_ptr = reinterpret_cast<fn_ptr>(dlsym(handle, "foo"));
+ fn_ptr foo_library_ptr = reinterpret_cast<fn_ptr>(dlsym(handle, "foo_library"));
ASSERT_TRUE(foo_ptr != NULL);
ASSERT_TRUE(foo_library_ptr != NULL);
- ASSERT_EQ(strncmp("set", (*foo_ptr)(), 3), 0);
- ASSERT_EQ(strncmp("set", (*foo_library_ptr)(), 3), 0);
+ ASSERT_EQ(strncmp("set", foo_ptr(), 3), 0);
+ ASSERT_EQ(strncmp("set", foo_library_ptr(), 3), 0);
dlclose(handle);
// then check the unset case
unsetenv("IFUNC_CHOICE");
handle = dlopen("libtest_ifunc.so", RTLD_NOW);
ASSERT_TRUE(handle != NULL);
- *(void **)(&foo_ptr) = dlsym(handle, "foo");
- *(void **)(&foo_library_ptr) = dlsym(handle, "foo_library");
+ foo_ptr = reinterpret_cast<fn_ptr>(dlsym(handle, "foo"));
+ foo_library_ptr = reinterpret_cast<fn_ptr>(dlsym(handle, "foo_library"));
ASSERT_TRUE(foo_ptr != NULL);
ASSERT_TRUE(foo_library_ptr != NULL);
- ASSERT_EQ(strncmp("unset", (*foo_ptr)(), 5), 0);
- ASSERT_EQ(strncmp("unset", (*foo_library_ptr)(), 3), 0);
+ ASSERT_EQ(strncmp("unset", foo_ptr(), 5), 0);
+ ASSERT_EQ(strncmp("unset", foo_library_ptr(), 3), 0);
+ dlclose(handle);
+}
+
+TEST(dlfcn, ifunc_ctor_call) {
+ typedef const char* (*fn_ptr)();
+
+ void* handle = dlopen("libtest_ifunc.so", RTLD_NOW);
+ ASSERT_TRUE(handle != NULL) << dlerror();
+ fn_ptr is_ctor_called = reinterpret_cast<fn_ptr>(dlsym(handle, "is_ctor_called"));
+ ASSERT_TRUE(is_ctor_called != NULL) << dlerror();
+ ASSERT_STREQ("true", is_ctor_called());
dlclose(handle);
}
#endif
+TEST(dlfcn, dlopen_check_relocation_dt_needed_order) {
+ // This is the structure of the test library and
+ // its dt_needed libraries
+ // libtest_relo_check_dt_needed_order.so
+ // |
+ // +-> libtest_relo_check_dt_needed_order_1.so
+ // |
+ // +-> libtest_relo_check_dt_needed_order_2.so
+ //
+ // The root library references relo_test_get_answer_lib - which is defined
+ // in both dt_needed libraries, the correct relocation should
+ // use the function defined in libtest_relo_check_dt_needed_order_1.so
+ void* handle = nullptr;
+ auto guard = create_scope_guard([&]() {
+ dlclose(handle);
+ });
+
+ handle = dlopen("libtest_relo_check_dt_needed_order.so", RTLD_NOW);
+ ASSERT_TRUE(handle != nullptr) << dlerror();
+
+ typedef int (*fn_t) (void);
+ fn_t fn = reinterpret_cast<fn_t>(dlsym(handle, "relo_test_get_answer"));
+ ASSERT_TRUE(fn != nullptr) << dlerror();
+ ASSERT_EQ(1, fn());
+}
+
+TEST(dlfcn, dlopen_check_order) {
+ // Here is how the test library and its dt_needed
+ // libraries are arranged
+ //
+ // libtest_check_order.so
+ // |
+ // +-> libtest_check_order_1_left.so
+ // | |
+ // | +-> libtest_check_order_a.so
+ // | |
+ // | +-> libtest_check_order_b.so
+ // |
+ // +-> libtest_check_order_2_right.so
+ // | |
+ // | +-> libtest_check_order_d.so
+ // | |
+ // | +-> libtest_check_order_b.so
+ // |
+ // +-> libtest_check_order_3_c.so
+ //
+ // load order should be (1, 2, 3, a, b, d)
+ //
+ // get_answer() is defined in (2, 3, a, b, c)
+ // get_answer2() is defined in (b, d)
+ void* sym = dlsym(RTLD_DEFAULT, "dlopen_test_get_answer");
+ ASSERT_TRUE(sym == nullptr);
+ void* handle = dlopen("libtest_check_order.so", RTLD_NOW);
+ ASSERT_TRUE(handle != nullptr);
+ typedef int (*fn_t) (void);
+ fn_t fn, fn2;
+ fn = reinterpret_cast<fn_t>(dlsym(RTLD_DEFAULT, "dlopen_test_get_answer"));
+ ASSERT_TRUE(fn != NULL);
+ fn2 = reinterpret_cast<fn_t>(dlsym(RTLD_DEFAULT, "dlopen_test_get_answer2"));
+ ASSERT_TRUE(fn2 != NULL);
+
+ ASSERT_EQ(42, fn());
+ ASSERT_EQ(43, fn2());
+ dlclose(handle);
+}
+
+// libtest_with_dependency_loop.so -> libtest_with_dependency_loop_a.so ->
+// libtest_with_dependency_loop_b.so -> libtest_with_dependency_loop_c.so ->
+// libtest_with_dependency_loop_a.so
+TEST(dlfcn, dlopen_check_loop) {
+ void* handle = dlopen("libtest_with_dependency_loop.so", RTLD_NOW);
+ ASSERT_TRUE(handle == NULL);
+ ASSERT_STREQ("dlopen failed: recursive link to \"libtest_with_dependency_loop_a.so\"", dlerror());
+}
+
TEST(dlfcn, dlopen_failure) {
void* self = dlopen("/does/not/exist", RTLD_NOW);
ASSERT_TRUE(self == NULL);
@@ -240,10 +308,8 @@
// Look in /proc/pid/maps to find out what address we were loaded at.
// TODO: factor /proc/pid/maps parsing out into a class and reuse all over bionic.
void* base_address = NULL;
- char path[PATH_MAX];
- snprintf(path, sizeof(path), "/proc/%d/maps", getpid());
char line[BUFSIZ];
- FILE* fp = fopen(path, "r");
+ FILE* fp = fopen("/proc/self/maps", "r");
ASSERT_TRUE(fp != NULL);
while (fgets(line, sizeof(line), fp) != NULL) {
uintptr_t start = strtoul(line, 0, 16);
@@ -349,4 +415,6 @@
ASSERT_TRUE(handle1 != NULL);
ASSERT_TRUE(handle2 != NULL);
ASSERT_EQ(handle1, handle2);
+ dlclose(handle1);
+ dlclose(handle2);
}
diff --git a/tests/getauxval_test.cpp b/tests/getauxval_test.cpp
index 51c9db8..b331150 100644
--- a/tests/getauxval_test.cpp
+++ b/tests/getauxval_test.cpp
@@ -15,7 +15,6 @@
*/
#include <sys/cdefs.h>
-#include <features.h>
#include <gtest/gtest.h>
// getauxval() was only added as of glibc version 2.16.
diff --git a/tests/libc_logging_test.cpp b/tests/libc_logging_test.cpp
index 950161e..d4ceded 100644
--- a/tests/libc_logging_test.cpp
+++ b/tests/libc_logging_test.cpp
@@ -176,3 +176,15 @@
GTEST_LOG_(INFO) << "This test does nothing.\n";
#endif // __BIONIC__
}
+
+TEST(libc_logging, buffer_overrun) {
+#if defined(__BIONIC__)
+ char buf[BUFSIZ];
+ ASSERT_EQ(11, __libc_format_buffer(buf, sizeof(buf), "hello %s", "world"));
+ EXPECT_STREQ("hello world", buf);
+ ASSERT_EQ(11, __libc_format_buffer(buf, 8, "hello %s", "world"));
+ EXPECT_STREQ("hello w", buf);
+#else // __BIONIC__
+ GTEST_LOG_(INFO) << "This test does nothing.\n";
+#endif // __BIONIC__
+}
diff --git a/tests/libgen_test.cpp b/tests/libgen_test.cpp
index cae646f..e9a5d5c 100644
--- a/tests/libgen_test.cpp
+++ b/tests/libgen_test.cpp
@@ -14,11 +14,10 @@
* limitations under the License.
*/
-#include <gtest/gtest.h>
-
#include <libgen.h>
#include <errno.h>
+#include <gtest/gtest.h>
static void TestBasename(const char* in, const char* expected_out) {
char* writable_in = (in != NULL) ? strdup(in) : NULL;
@@ -40,7 +39,7 @@
// Do not use basename as the test name, it's defined to another value in glibc
// so leads to a differently named test on host versus target architectures.
-TEST(libgen, basename_smoke) {
+TEST(libgen, posix_basename) {
TestBasename(NULL, ".");
TestBasename("", ".");
TestBasename("/usr/lib", "lib");
@@ -64,7 +63,7 @@
TestDirname("/", "/");
}
-#if defined(__BIONIC__)
+#if defined(__BIONIC__) && !defined(__LP64__)
static void TestBasename(const char* in, const char* expected_out, int expected_rc,
char* buf, size_t buf_size, int expected_errno) {
errno = 0;
@@ -89,7 +88,7 @@
#endif // __BIONIC__
TEST(libgen, basename_r) {
-#if defined(__BIONIC__)
+#if defined(__BIONIC__) && !defined(__LP64__)
char buf[256];
TestBasename("", ".", 1, NULL, 0, 0);
TestBasename("", ".", -1, buf, 0, ERANGE);
@@ -108,7 +107,7 @@
}
TEST(libgen, dirname_r) {
-#if defined(__BIONIC__)
+#if defined(__BIONIC__) && !defined(__LP64__)
char buf[256];
TestDirname("", ".", 1, NULL, 0, 0);
TestDirname("", ".", -1, buf, 0, ERANGE);
diff --git a/tests/libs/Android.mk b/tests/libs/Android.mk
index bca2047..be6565b 100644
--- a/tests/libs/Android.mk
+++ b/tests/libs/Android.mk
@@ -17,6 +17,7 @@
LOCAL_PATH := $(call my-dir)
TEST_PATH := $(LOCAL_PATH)/..
+common_cppflags += -std=gnu++11
# -----------------------------------------------------------------------------
# Library used by dlfcn tests.
# -----------------------------------------------------------------------------
@@ -102,6 +103,183 @@
include $(TEST_PATH)/Android.build.mk
# -----------------------------------------------------------------------------
+# Libraries used by dlfcn tests to verify correct load order:
+# libtest_check_order_2_right.so
+# -----------------------------------------------------------------------------
+libtest_check_order_2_right_src_files := \
+ dlopen_testlib_answer.cpp
+
+libtest_check_order_2_right_cflags := -D__ANSWER=42
+module := libtest_check_order_2_right
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_a.so
+# -----------------------------------------------------------------------------
+libtest_check_order_a_src_files := \
+ dlopen_testlib_answer.cpp
+
+libtest_check_order_a_cflags := -D__ANSWER=1
+module := libtest_check_order_a
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_b.so
+# -----------------------------------------------------------------------------
+libtest_check_order_b_src_files := \
+ dlopen_testlib_answer.cpp
+
+libtest_check_order_b_cflags := -D__ANSWER=2 -D__ANSWER2=43
+module := libtest_check_order_b
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_c.so
+# -----------------------------------------------------------------------------
+libtest_check_order_3_c_src_files := \
+ dlopen_testlib_answer.cpp
+
+libtest_check_order_3_c_cflags := -D__ANSWER=3
+module := libtest_check_order_3_c
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_d.so
+# -----------------------------------------------------------------------------
+libtest_check_order_d_src_files := \
+ dlopen_testlib_answer.cpp
+
+libtest_check_order_d_shared_libraries := libtest_check_order_b
+libtest_check_order_d_cflags := -D__ANSWER=4 -D__ANSWER2=4
+module := libtest_check_order_d
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order_left.so
+# -----------------------------------------------------------------------------
+libtest_check_order_1_left_src_files := \
+ empty.cpp
+
+libtest_check_order_1_left_shared_libraries := libtest_check_order_a libtest_check_order_b
+
+module := libtest_check_order_1_left
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# libtest_check_order.so
+# -----------------------------------------------------------------------------
+libtest_check_order_src_files := \
+ empty.cpp
+
+libtest_check_order_shared_libraries := libtest_check_order_1_left \
+ libtest_check_order_2_right libtest_check_order_3_c
+
+module := libtest_check_order
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# Library with dependency loop used by dlfcn tests
+#
+# libtest_with_dependency_loop -> a -> b -> c -> a
+# -----------------------------------------------------------------------------
+libtest_with_dependency_loop_src_files := empty.cpp
+
+libtest_with_dependency_loop_shared_libraries := \
+ libtest_with_dependency_loop_a
+
+module := libtest_with_dependency_loop
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# libtest_with_dependency_loop_a.so
+# -----------------------------------------------------------------------------
+libtest_with_dependency_loop_a_src_files := empty.cpp
+
+libtest_with_dependency_loop_a_shared_libraries := \
+ libtest_with_dependency_loop_b_tmp
+
+module := libtest_with_dependency_loop_a
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# libtest_with_dependency_loop_b.so
+#
+# this is temporary placeholder - will be removed
+# -----------------------------------------------------------------------------
+libtest_with_dependency_loop_b_tmp_src_files := empty.cpp
+libtest_with_dependency_loop_b_tmp_ldflags := -Wl,-soname=libtest_with_dependency_loop_b.so
+
+module := libtest_with_dependency_loop_b_tmp
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# libtest_with_dependency_loop_b.so
+# -----------------------------------------------------------------------------
+libtest_with_dependency_loop_b_src_files := empty.cpp
+libtest_with_dependency_loop_b_shared_libraries := libtest_with_dependency_loop_c
+
+module := libtest_with_dependency_loop_b
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# libtest_with_dependency_loop_c.so
+# -----------------------------------------------------------------------------
+libtest_with_dependency_loop_c_src_files := empty.cpp
+
+libtest_with_dependency_loop_c_shared_libraries := \
+ libtest_with_dependency_loop_a
+
+module := libtest_with_dependency_loop_c
+build_type := target
+build_target := SHARED_LIBRARY
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
+# libtest_relo_check_dt_needed_order.so
+# |
+# +-> libtest_relo_check_dt_needed_order_1.so
+# |
+# +-> libtest_relo_check_dt_needed_order_2.so
+# -----------------------------------------------------------------------------
+libtest_relo_check_dt_needed_order_shared_libraries := \
+ libtest_relo_check_dt_needed_order_1 libtest_relo_check_dt_needed_order_2
+
+libtest_relo_check_dt_needed_order_src_files := dlopen_testlib_relo_check_dt_needed_order.cpp
+libtest_relo_check_dt_needed_order_1_src_files := dlopen_testlib_relo_check_dt_needed_order_1.cpp
+libtest_relo_check_dt_needed_order_2_src_files := dlopen_testlib_relo_check_dt_needed_order_2.cpp
+build_type := target
+build_target := SHARED_LIBRARY
+
+module := libtest_relo_check_dt_needed_order
+include $(TEST_PATH)/Android.build.mk
+module := libtest_relo_check_dt_needed_order_1
+include $(TEST_PATH)/Android.build.mk
+module := libtest_relo_check_dt_needed_order_2
+include $(TEST_PATH)/Android.build.mk
+
+# -----------------------------------------------------------------------------
# Library with dependency used by dlfcn tests
# -----------------------------------------------------------------------------
libtest_with_dependency_src_files := \
@@ -129,21 +307,6 @@
endif
# -----------------------------------------------------------------------------
-# Library used to test local symbol lookup
-# -----------------------------------------------------------------------------
-libtest_local_symbol_src_files := \
- dlsym_local_symbol_private.cpp \
- dlsym_local_symbol_public.cpp
-
-module := libtest_local_symbol
-build_target := SHARED_LIBRARY
-libtest_local_symbol_ldflags := -Wl,--version-script=$(LOCAL_PATH)/dlsym_local_symbol.map
-libtest_local_symbol_cppflags := -std=gnu++11
-libtest_local_symbol_shared_libraries_target := libdl
-build_type := target
-include $(TEST_PATH)/Android.build.mk
-
-# -----------------------------------------------------------------------------
# Library used by atexit tests
# -----------------------------------------------------------------------------
diff --git a/tests/libs/atexit_testlib.cpp b/tests/libs/atexit_testlib.cpp
index d35f57b..314e8de 100644
--- a/tests/libs/atexit_testlib.cpp
+++ b/tests/libs/atexit_testlib.cpp
@@ -19,12 +19,19 @@
#include <string>
// use external control number from main test
-static std::string* atexit_sequence = NULL;
-static bool* atexit_valid_this_in_static_dtor = NULL;
+static std::string* atexit_sequence = nullptr;
+static bool* atexit_valid_this_in_static_dtor = nullptr;
+static bool* atexit_attr_dtor_called = nullptr;
+
+static int cxx_ctor_called = 0;
+static int attr_ctor_called = 0;
static class AtExitStaticClass {
public:
- AtExitStaticClass() { expected_this = this; }
+ AtExitStaticClass() {
+ expected_this = this;
+ cxx_ctor_called = 1;
+ }
~AtExitStaticClass() {
if (atexit_valid_this_in_static_dtor) {
*atexit_valid_this_in_static_dtor = (expected_this == this);
@@ -35,7 +42,7 @@
} static_obj;
-const AtExitStaticClass* AtExitStaticClass::expected_this = NULL;
+const AtExitStaticClass* AtExitStaticClass::expected_this = nullptr;
// 4
static void atexit_handler_from_atexit_from_atexit2() {
@@ -66,10 +73,30 @@
*atexit_sequence += " a wall";
}
-extern "C" void register_atexit(std::string* sequence, bool* valid_this_in_static_dtor) {
+// attribute c-tor and d-tor
+static void __attribute__((constructor)) atexit_attr_ctor() {
+ attr_ctor_called = 1;
+}
+
+static void __attribute__((destructor)) atexit_attr_dtor() {
+ if (atexit_attr_dtor_called) {
+ *atexit_attr_dtor_called = true;
+ }
+}
+
+extern "C" void register_atexit(std::string* sequence, bool* valid_this_in_static_dtor, bool* attr_dtor_called) {
atexit_sequence = sequence;
atexit_valid_this_in_static_dtor = valid_this_in_static_dtor;
+ atexit_attr_dtor_called = attr_dtor_called;
atexit(atexit_handler_regular);
atexit(atexit_handler_with_atexit);
}
+extern "C" int get_cxx_ctor_called() {
+ return cxx_ctor_called;
+}
+
+extern "C" int get_attr_ctor_called() {
+ return attr_ctor_called;
+}
+
diff --git a/tests/libs/dlsym_local_symbol.map b/tests/libs/dlopen_testlib_answer.cpp
similarity index 79%
copy from tests/libs/dlsym_local_symbol.map
copy to tests/libs/dlopen_testlib_answer.cpp
index 58a2299..a4d7504 100644
--- a/tests/libs/dlsym_local_symbol.map
+++ b/tests/libs/dlopen_testlib_answer.cpp
@@ -13,10 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-LIBTEST_LOCAL_SYMBOL_1.0 {
- global:
- dlsym_local_symbol_get_taxicab_number;
- dlsym_local_symbol_get_taxicab_number_using_dlsym;
- local:
- *;
-};
+
+extern "C" int dlopen_test_get_answer() {
+ return __ANSWER;
+}
+
+#ifdef __ANSWER2
+extern "C" int dlopen_test_get_answer2() {
+ return __ANSWER2;
+}
+#endif
diff --git a/tests/libs/dlopen_testlib_ifunc.c b/tests/libs/dlopen_testlib_ifunc.c
index 1c4bafa..4874841 100644
--- a/tests/libs/dlopen_testlib_ifunc.c
+++ b/tests/libs/dlopen_testlib_ifunc.c
@@ -17,7 +17,22 @@
#include <stdio.h>
#include <stdlib.h>
+static int g_flag = 0;
+
+static void __attribute__((constructor)) init_flag() {
+ g_flag = 1;
+}
+
const char* foo() __attribute__ ((ifunc ("foo_ifunc")));
+const char* is_ctor_called() __attribute__ ((ifunc("is_ctor_called_ifun")));
+
+const char* return_true() {
+ return "true";
+}
+
+const char* return_false() {
+ return "false";
+}
const char* f1() {
return "unset";
@@ -27,6 +42,10 @@
return "set";
}
+void* is_ctor_called_ifun() {
+ return g_flag == 0 ? return_false : return_true;
+}
+
void* foo_ifunc() {
char* choice = getenv("IFUNC_CHOICE");
return choice == NULL ? f1 : f2;
@@ -34,4 +53,4 @@
const char* foo_library() {
return foo();
-}
\ No newline at end of file
+}
diff --git a/tests/libs/dlsym_local_symbol.map b/tests/libs/dlopen_testlib_relo_check_dt_needed_order.cpp
similarity index 79%
rename from tests/libs/dlsym_local_symbol.map
rename to tests/libs/dlopen_testlib_relo_check_dt_needed_order.cpp
index 58a2299..d8fb543 100644
--- a/tests/libs/dlsym_local_symbol.map
+++ b/tests/libs/dlopen_testlib_relo_check_dt_needed_order.cpp
@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-LIBTEST_LOCAL_SYMBOL_1.0 {
- global:
- dlsym_local_symbol_get_taxicab_number;
- dlsym_local_symbol_get_taxicab_number_using_dlsym;
- local:
- *;
-};
+
+extern "C" int relo_test_get_answer_lib();
+
+extern "C" int relo_test_get_answer() {
+ return relo_test_get_answer_lib();
+}
diff --git a/tests/libs/dlsym_local_symbol.map b/tests/libs/dlopen_testlib_relo_check_dt_needed_order_1.cpp
similarity index 79%
copy from tests/libs/dlsym_local_symbol.map
copy to tests/libs/dlopen_testlib_relo_check_dt_needed_order_1.cpp
index 58a2299..4c877d0 100644
--- a/tests/libs/dlsym_local_symbol.map
+++ b/tests/libs/dlopen_testlib_relo_check_dt_needed_order_1.cpp
@@ -13,10 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-LIBTEST_LOCAL_SYMBOL_1.0 {
- global:
- dlsym_local_symbol_get_taxicab_number;
- dlsym_local_symbol_get_taxicab_number_using_dlsym;
- local:
- *;
-};
+
+extern "C" int relo_test_get_answer_lib() {
+ return 1;
+}
diff --git a/tests/libs/dlsym_local_symbol.map b/tests/libs/dlopen_testlib_relo_check_dt_needed_order_2.cpp
similarity index 79%
copy from tests/libs/dlsym_local_symbol.map
copy to tests/libs/dlopen_testlib_relo_check_dt_needed_order_2.cpp
index 58a2299..10288a0 100644
--- a/tests/libs/dlsym_local_symbol.map
+++ b/tests/libs/dlopen_testlib_relo_check_dt_needed_order_2.cpp
@@ -13,10 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-LIBTEST_LOCAL_SYMBOL_1.0 {
- global:
- dlsym_local_symbol_get_taxicab_number;
- dlsym_local_symbol_get_taxicab_number_using_dlsym;
- local:
- *;
-};
+
+extern "C" int relo_test_get_answer_lib() {
+ return 2;
+}
diff --git a/tests/libs/dlsym_local_symbol_public.cpp b/tests/libs/dlsym_local_symbol_public.cpp
deleted file mode 100644
index d9da32a..0000000
--- a/tests/libs/dlsym_local_symbol_public.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdlib.h>
-#include <dlfcn.h>
-#include <stdio.h>
-
-extern const uint32_t private_taxicab_number;
-
-extern "C" {
-uint32_t dlsym_local_symbol_get_taxicab_number();
-uint32_t dlsym_local_symbol_get_taxicab_number_using_dlsym();
-}
-
-uint32_t dlsym_local_symbol_get_taxicab_number() {
- return private_taxicab_number;
-}
-
-// Let's make sure that dlsym works correctly for local symbol
-uint32_t dlsym_local_symbol_get_taxicab_number_using_dlsym() {
- dlerror();
- uint32_t* ptr = reinterpret_cast<uint32_t*>(dlsym(RTLD_DEFAULT, "private_taxicab_number"));
- if (ptr == nullptr) {
- const char* dlerr = dlerror();
- if (dlerr != nullptr) {
- fprintf(stderr, "dlsym error: %s\n", dlerr);
- } else {
- fprintf(stderr, "dlsym returned NULL with no dlerror.\n");
- }
- return 0;
- }
-
- return *ptr;
-}
diff --git a/tests/locale_test.cpp b/tests/locale_test.cpp
index 325f6ce..7ec607a 100644
--- a/tests/locale_test.cpp
+++ b/tests/locale_test.cpp
@@ -114,11 +114,12 @@
locale_t cloc = newlocale(LC_ALL, "C", 0);
locale_t cloc_utf8 = newlocale(LC_ALL, "C.UTF-8", 0);
- uselocale(cloc);
+ locale_t old_locale = uselocale(cloc);
ASSERT_EQ(1U, MB_CUR_MAX);
uselocale(cloc_utf8);
ASSERT_EQ(4U, MB_CUR_MAX);
+ uselocale(old_locale);
freelocale(cloc);
freelocale(cloc_utf8);
}
diff --git a/tests/malloc_test.cpp b/tests/malloc_test.cpp
index 6b7a28b..b76625a 100644
--- a/tests/malloc_test.cpp
+++ b/tests/malloc_test.cpp
@@ -22,6 +22,8 @@
#include <malloc.h>
#include <unistd.h>
+#include <tinyxml2.h>
+
#include "private/bionic_config.h"
TEST(malloc, malloc_std) {
@@ -322,3 +324,51 @@
ASSERT_EQ(NULL, valloc(SIZE_MAX));
}
#endif
+
+TEST(malloc, malloc_info) {
+#ifdef __BIONIC__
+ char* buf;
+ size_t bufsize;
+ FILE* memstream = open_memstream(&buf, &bufsize);
+ ASSERT_NE(nullptr, memstream);
+ ASSERT_EQ(0, malloc_info(0, memstream));
+ ASSERT_EQ(0, fclose(memstream));
+
+ tinyxml2::XMLDocument doc;
+ ASSERT_EQ(tinyxml2::XML_SUCCESS, doc.Parse(buf));
+
+ auto root = doc.FirstChildElement();
+ ASSERT_NE(nullptr, root);
+ ASSERT_STREQ("malloc", root->Name());
+ ASSERT_STREQ("jemalloc-1", root->Attribute("version"));
+
+ auto arena = root->FirstChildElement();
+ for (; arena != nullptr; arena = arena->NextSiblingElement()) {
+ int val;
+
+ ASSERT_STREQ("heap", arena->Name());
+ ASSERT_EQ(tinyxml2::XML_SUCCESS, arena->QueryIntAttribute("nr", &val));
+ ASSERT_EQ(tinyxml2::XML_SUCCESS,
+ arena->FirstChildElement("allocated-large")->QueryIntText(&val));
+ ASSERT_EQ(tinyxml2::XML_SUCCESS,
+ arena->FirstChildElement("allocated-huge")->QueryIntText(&val));
+ ASSERT_EQ(tinyxml2::XML_SUCCESS,
+ arena->FirstChildElement("allocated-bins")->QueryIntText(&val));
+ ASSERT_EQ(tinyxml2::XML_SUCCESS,
+ arena->FirstChildElement("bins-total")->QueryIntText(&val));
+
+ auto bin = arena->FirstChildElement("bin");
+ for (; bin != nullptr; bin = bin ->NextSiblingElement()) {
+ if (strcmp(bin->Name(), "bin") == 0) {
+ ASSERT_EQ(tinyxml2::XML_SUCCESS, bin->QueryIntAttribute("nr", &val));
+ ASSERT_EQ(tinyxml2::XML_SUCCESS,
+ bin->FirstChildElement("allocated")->QueryIntText(&val));
+ ASSERT_EQ(tinyxml2::XML_SUCCESS,
+ bin->FirstChildElement("nmalloc")->QueryIntText(&val));
+ ASSERT_EQ(tinyxml2::XML_SUCCESS,
+ bin->FirstChildElement("ndalloc")->QueryIntText(&val));
+ }
+ }
+ }
+#endif
+}
diff --git a/tests/math_cos_test.cpp b/tests/math_cos_test.cpp
index c0a2d82..4917e87 100644
--- a/tests/math_cos_test.cpp
+++ b/tests/math_cos_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -5634,6 +5636,7 @@
TEST(math_cos, cos_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_cos_intel_data)/sizeof(cos_intel_data_t); i++) {
EXPECT_DOUBLE_EQ(g_cos_intel_data[i].expected, cos(g_cos_intel_data[i].call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_cosf_test.cpp b/tests/math_cosf_test.cpp
index ea95ff3..8520c1d 100644
--- a/tests/math_cosf_test.cpp
+++ b/tests/math_cosf_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -4346,6 +4348,7 @@
TEST(math_cosf, cosf_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_cosf_intel_data)/sizeof(cosf_intel_data_t); i++) {
EXPECT_FLOAT_EQ(g_cosf_intel_data[i].expected, cosf(g_cosf_intel_data[i].call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_exp_test.cpp b/tests/math_exp_test.cpp
index beb2584..c9c6ad5 100644
--- a/tests/math_exp_test.cpp
+++ b/tests/math_exp_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -1966,6 +1968,7 @@
TEST(math_exp, exp_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_exp_intel_data)/sizeof(exp_intel_data_t); i++) {
EXPECT_DOUBLE_EQ(g_exp_intel_data[i].expected, exp(g_exp_intel_data[i].call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_expf_test.cpp b/tests/math_expf_test.cpp
index 257aa26..30bc946 100644
--- a/tests/math_expf_test.cpp
+++ b/tests/math_expf_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -1430,6 +1432,7 @@
TEST(math_expf, expf_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_expf_intel_data)/sizeof(expf_intel_data_t); i++) {
EXPECT_FLOAT_EQ(g_expf_intel_data[i].expected, expf(g_expf_intel_data[i].call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_log_test.cpp b/tests/math_log_test.cpp
index da2a848..4f136a7 100644
--- a/tests/math_log_test.cpp
+++ b/tests/math_log_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -1666,6 +1668,7 @@
TEST(math_log, log_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_log_intel_data)/sizeof(log_intel_data_t); i++) {
EXPECT_DOUBLE_EQ(g_log_intel_data[i].expected, log(g_log_intel_data[i].call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_logf_test.cpp b/tests/math_logf_test.cpp
index e5d0921..ca02095 100644
--- a/tests/math_logf_test.cpp
+++ b/tests/math_logf_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -1318,6 +1320,7 @@
TEST(math_logf, logf_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_logf_intel_data)/sizeof(logf_intel_data_t); i++) {
EXPECT_FLOAT_EQ(g_logf_intel_data[i].expected, logf(g_logf_intel_data[i].call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_pow_test.cpp b/tests/math_pow_test.cpp
index c185424..a4caa36 100644
--- a/tests/math_pow_test.cpp
+++ b/tests/math_pow_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -3291,6 +3293,7 @@
TEST(math_pow, pow_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_pow_intel_data)/sizeof(pow_intel_data_t); i++) {
EXPECT_DOUBLE_EQ(g_pow_intel_data[i].expected, pow(g_pow_intel_data[i].x_call_data, g_pow_intel_data[i].y_call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_powf_test.cpp b/tests/math_powf_test.cpp
index f77b23a..7272644 100644
--- a/tests/math_powf_test.cpp
+++ b/tests/math_powf_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -2779,6 +2781,7 @@
TEST(math_powf, powf_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_powf_intel_data)/sizeof(powf_intel_data_t); i++) {
EXPECT_FLOAT_EQ(g_powf_intel_data[i].expected, powf(g_powf_intel_data[i].x_call_data, g_powf_intel_data[i].y_call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_sin_test.cpp b/tests/math_sin_test.cpp
index ffa4340..509642c 100644
--- a/tests/math_sin_test.cpp
+++ b/tests/math_sin_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -5786,6 +5788,7 @@
TEST(math_sin, sin_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_sin_intel_data)/sizeof(sin_intel_data_t); i++) {
EXPECT_DOUBLE_EQ(g_sin_intel_data[i].expected, sin(g_sin_intel_data[i].call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_sincos_test.cpp b/tests/math_sincos_test.cpp
index 0fab2c2..4093fb9 100644
--- a/tests/math_sincos_test.cpp
+++ b/tests/math_sincos_test.cpp
@@ -14,8 +14,12 @@
* limitations under the License.
*/
+#define _GNU_SOURCE 1
+
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -4776,6 +4780,7 @@
TEST(math_sincos, sincos_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_sincos_intel_data)/sizeof(sincos_intel_data_t); i++) {
double dsin, dcos;
sincos(g_sincos_intel_data[i].call_data, &dsin, &dcos);
diff --git a/tests/math_sincosf_test.cpp b/tests/math_sincosf_test.cpp
index c1a32c9..d30f72e 100644
--- a/tests/math_sincosf_test.cpp
+++ b/tests/math_sincosf_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -4646,6 +4648,7 @@
TEST(math_sincosf, sincosf_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_sincosf_intel_data)/sizeof(sincosf_intel_data_t); i++) {
float fsin, fcos;
sincosf(g_sincosf_intel_data[i].call_data, &fsin, &fcos);
diff --git a/tests/math_sinf_test.cpp b/tests/math_sinf_test.cpp
index bb1e2c9..0c2e6f1 100644
--- a/tests/math_sinf_test.cpp
+++ b/tests/math_sinf_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -4386,6 +4388,7 @@
TEST(math_sinf, sinf_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_sinf_intel_data)/sizeof(sinf_intel_data_t); i++) {
EXPECT_FLOAT_EQ(g_sinf_intel_data[i].expected, sinf(g_sinf_intel_data[i].call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_tan_test.cpp b/tests/math_tan_test.cpp
index 6862019..e555ef3 100644
--- a/tests/math_tan_test.cpp
+++ b/tests/math_tan_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -5194,6 +5196,7 @@
TEST(math_tan, tan_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_tan_intel_data)/sizeof(tan_intel_data_t); i++) {
EXPECT_DOUBLE_EQ(g_tan_intel_data[i].expected, tan(g_tan_intel_data[i].call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_tanf_test.cpp b/tests/math_tanf_test.cpp
index 9319046..db04116 100644
--- a/tests/math_tanf_test.cpp
+++ b/tests/math_tanf_test.cpp
@@ -16,6 +16,8 @@
#include <math.h>
+#include <fenv.h>
+
#include <gtest/gtest.h>
#if defined(__BIONIC__)
@@ -4450,6 +4452,7 @@
TEST(math_tanf, tanf_intel) {
#if defined(__BIONIC__)
+ fesetenv(FE_DFL_ENV);
for (size_t i = 0; i < sizeof(g_tanf_intel_data)/sizeof(tanf_intel_data_t); i++) {
EXPECT_FLOAT_EQ(g_tanf_intel_data[i].expected, tanf(g_tanf_intel_data[i].call_data)) << "Failed on element " << i;
}
diff --git a/tests/math_test.cpp b/tests/math_test.cpp
index b4f5b14..ad4654e 100644
--- a/tests/math_test.cpp
+++ b/tests/math_test.cpp
@@ -53,6 +53,8 @@
#include <limits.h>
#include <stdint.h>
+#include <private/ScopeGuard.h>
+
float float_subnormal() {
union {
float f;
@@ -760,6 +762,10 @@
}
TEST(math, lrint) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
+
fesetround(FE_UPWARD); // lrint/lrintf/lrintl obey the rounding mode.
ASSERT_EQ(1235, lrint(1234.01));
ASSERT_EQ(1235, lrintf(1234.01f));
@@ -780,6 +786,10 @@
}
TEST(math, rint) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
+
fesetround(FE_UPWARD); // rint/rintf/rintl obey the rounding mode.
feclearexcept(FE_ALL_EXCEPT); // rint/rintf/rintl do set the FE_INEXACT flag.
ASSERT_EQ(1234.0, rint(1234.0));
@@ -806,6 +816,9 @@
}
TEST(math, nearbyint) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // nearbyint/nearbyintf/nearbyintl obey the rounding mode.
feclearexcept(FE_ALL_EXCEPT); // nearbyint/nearbyintf/nearbyintl don't set the FE_INEXACT flag.
ASSERT_EQ(1234.0, nearbyint(1234.0));
@@ -832,6 +845,9 @@
}
TEST(math, lround) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // lround ignores the rounding mode.
ASSERT_EQ(1234, lround(1234.01));
ASSERT_EQ(1234, lroundf(1234.01f));
@@ -839,6 +855,9 @@
}
TEST(math, llround) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // llround ignores the rounding mode.
ASSERT_EQ(1234L, llround(1234.01));
ASSERT_EQ(1234L, llroundf(1234.01f));
@@ -933,6 +952,9 @@
}
TEST(math, round) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_TOWARDZERO); // round ignores the rounding mode and always rounds away from zero.
ASSERT_DOUBLE_EQ(1.0, round(0.5));
ASSERT_DOUBLE_EQ(-1.0, round(-0.5));
@@ -943,6 +965,9 @@
}
TEST(math, roundf) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_TOWARDZERO); // roundf ignores the rounding mode and always rounds away from zero.
ASSERT_FLOAT_EQ(1.0f, roundf(0.5f));
ASSERT_FLOAT_EQ(-1.0f, roundf(-0.5f));
@@ -953,6 +978,9 @@
}
TEST(math, roundl) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_TOWARDZERO); // roundl ignores the rounding mode and always rounds away from zero.
ASSERT_DOUBLE_EQ(1.0L, roundl(0.5L));
ASSERT_DOUBLE_EQ(-1.0L, roundl(-0.5L));
@@ -963,6 +991,9 @@
}
TEST(math, trunc) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // trunc ignores the rounding mode and always rounds toward zero.
ASSERT_DOUBLE_EQ(1.0, trunc(1.5));
ASSERT_DOUBLE_EQ(-1.0, trunc(-1.5));
@@ -973,6 +1004,9 @@
}
TEST(math, truncf) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // truncf ignores the rounding mode and always rounds toward zero.
ASSERT_FLOAT_EQ(1.0f, truncf(1.5f));
ASSERT_FLOAT_EQ(-1.0f, truncf(-1.5f));
@@ -983,6 +1017,9 @@
}
TEST(math, truncl) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // truncl ignores the rounding mode and always rounds toward zero.
ASSERT_DOUBLE_EQ(1.0L, truncl(1.5L));
ASSERT_DOUBLE_EQ(-1.0L, truncl(-1.5L));
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp
index 5328e48..9a9e515 100644
--- a/tests/pthread_test.cpp
+++ b/tests/pthread_test.cpp
@@ -23,9 +23,11 @@
#include <pthread.h>
#include <signal.h>
#include <sys/mman.h>
+#include <sys/syscall.h>
#include <time.h>
#include <unistd.h>
+#include "private/ScopeGuard.h"
#include "ScopedSignalHandler.h"
TEST(pthread, pthread_key_create) {
@@ -104,6 +106,7 @@
ASSERT_EQ(99, WEXITSTATUS(status));
ASSERT_EQ(expected, pthread_getspecific(key));
+ ASSERT_EQ(0, pthread_key_delete(key));
}
static void* DirtyKeyFn(void* key) {
@@ -131,6 +134,7 @@
ASSERT_EQ(nullptr, result); // Not ~0!
ASSERT_EQ(0, munmap(stack, stack_size));
+ ASSERT_EQ(0, pthread_key_delete(key));
}
static void* IdFn(void* arg) {
@@ -816,3 +820,92 @@
ASSERT_EQ(0, pthread_mutex_unlock(&m));
ASSERT_EQ(0, pthread_mutex_destroy(&m));
}
+
+TEST(pthread, pthread_attr_getstack__main_thread) {
+ // This test is only meaningful for the main thread, so make sure we're running on it!
+ ASSERT_EQ(getpid(), syscall(__NR_gettid));
+
+ // Get the main thread's attributes.
+ pthread_attr_t attributes;
+ ASSERT_EQ(0, pthread_getattr_np(pthread_self(), &attributes));
+
+ // Check that we correctly report that the main thread has no guard page.
+ size_t guard_size;
+ ASSERT_EQ(0, pthread_attr_getguardsize(&attributes, &guard_size));
+ ASSERT_EQ(0U, guard_size); // The main thread has no guard page.
+
+ // Get the stack base and the stack size (both ways).
+ void* stack_base;
+ size_t stack_size;
+ ASSERT_EQ(0, pthread_attr_getstack(&attributes, &stack_base, &stack_size));
+ size_t stack_size2;
+ ASSERT_EQ(0, pthread_attr_getstacksize(&attributes, &stack_size2));
+
+ // The two methods of asking for the stack size should agree.
+ EXPECT_EQ(stack_size, stack_size2);
+
+ // What does /proc/self/maps' [stack] line say?
+ void* maps_stack_hi = NULL;
+ FILE* fp = fopen("/proc/self/maps", "r");
+ ASSERT_TRUE(fp != NULL);
+ char line[BUFSIZ];
+ while (fgets(line, sizeof(line), fp) != NULL) {
+ uintptr_t lo, hi;
+ char name[10];
+ sscanf(line, "%" PRIxPTR "-%" PRIxPTR " %*4s %*x %*x:%*x %*d %10s", &lo, &hi, name);
+ if (strcmp(name, "[stack]") == 0) {
+ maps_stack_hi = reinterpret_cast<void*>(hi);
+ break;
+ }
+ }
+ fclose(fp);
+
+ // The stack size should correspond to RLIMIT_STACK.
+ rlimit rl;
+ ASSERT_EQ(0, getrlimit(RLIMIT_STACK, &rl));
+ uint64_t original_rlim_cur = rl.rlim_cur;
+#if defined(__BIONIC__)
+ if (rl.rlim_cur == RLIM_INFINITY) {
+ rl.rlim_cur = 8 * 1024 * 1024; // Bionic reports unlimited stacks as 8MiB.
+ }
+#endif
+ EXPECT_EQ(rl.rlim_cur, stack_size);
+
+ auto guard = create_scope_guard([&rl, original_rlim_cur]() {
+ rl.rlim_cur = original_rlim_cur;
+ ASSERT_EQ(0, setrlimit(RLIMIT_STACK, &rl));
+ });
+
+ // The high address of the /proc/self/maps [stack] region should equal stack_base + stack_size.
+ // Remember that the stack grows down (and is mapped in on demand), so the low address of the
+ // region isn't very interesting.
+ EXPECT_EQ(maps_stack_hi, reinterpret_cast<uint8_t*>(stack_base) + stack_size);
+
+ //
+ // What if RLIMIT_STACK is smaller than the stack's current extent?
+ //
+ rl.rlim_cur = rl.rlim_max = 1024; // 1KiB. We know the stack must be at least a page already.
+ rl.rlim_max = RLIM_INFINITY;
+ ASSERT_EQ(0, setrlimit(RLIMIT_STACK, &rl));
+
+ ASSERT_EQ(0, pthread_getattr_np(pthread_self(), &attributes));
+ ASSERT_EQ(0, pthread_attr_getstack(&attributes, &stack_base, &stack_size));
+ ASSERT_EQ(0, pthread_attr_getstacksize(&attributes, &stack_size2));
+
+ EXPECT_EQ(stack_size, stack_size2);
+ ASSERT_EQ(1024U, stack_size);
+
+ //
+ // What if RLIMIT_STACK isn't a whole number of pages?
+ //
+ rl.rlim_cur = rl.rlim_max = 6666; // Not a whole number of pages.
+ rl.rlim_max = RLIM_INFINITY;
+ ASSERT_EQ(0, setrlimit(RLIMIT_STACK, &rl));
+
+ ASSERT_EQ(0, pthread_getattr_np(pthread_self(), &attributes));
+ ASSERT_EQ(0, pthread_attr_getstack(&attributes, &stack_base, &stack_size));
+ ASSERT_EQ(0, pthread_attr_getstacksize(&attributes, &stack_size2));
+
+ EXPECT_EQ(stack_size, stack_size2);
+ ASSERT_EQ(6666U, stack_size);
+}
diff --git a/tests/signal_test.cpp b/tests/signal_test.cpp
index 89b8088..8fd8b72 100644
--- a/tests/signal_test.cpp
+++ b/tests/signal_test.cpp
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-#include <gtest/gtest.h>
+#include <signal.h>
#include <errno.h>
-#include <signal.h>
+#include <gtest/gtest.h>
#include "ScopedSignalHandler.h"
@@ -198,13 +198,19 @@
static void EmptySignalAction(int, siginfo_t*, void*) {}
TEST(signal, sigaction) {
+ // Both bionic and glibc set SA_RESTORER when talking to the kernel on arm,
+ // arm64, x86, and x86-64. The version of glibc we're using also doesn't
+ // define SA_RESTORER, but luckily it's the same value everywhere, and mips
+ // doesn't use the bit for anything.
+ static const unsigned sa_restorer = 0x4000000;
+
// See what's currently set for SIGALRM.
struct sigaction original_sa;
memset(&original_sa, 0, sizeof(original_sa));
ASSERT_EQ(0, sigaction(SIGALRM, NULL, &original_sa));
ASSERT_TRUE(original_sa.sa_handler == NULL);
ASSERT_TRUE(original_sa.sa_sigaction == NULL);
- ASSERT_TRUE(original_sa.sa_flags == 0);
+ ASSERT_EQ(0U, original_sa.sa_flags & ~sa_restorer);
// Set a traditional sa_handler signal handler.
struct sigaction sa;
@@ -219,7 +225,7 @@
ASSERT_EQ(0, sigaction(SIGALRM, NULL, &sa));
ASSERT_TRUE(sa.sa_handler == EmptySignalHandler);
ASSERT_TRUE((void*) sa.sa_sigaction == (void*) sa.sa_handler);
- ASSERT_TRUE(sa.sa_flags == SA_ONSTACK);
+ ASSERT_EQ(static_cast<unsigned>(SA_ONSTACK), sa.sa_flags & ~sa_restorer);
// Set a new-style sa_sigaction signal handler.
memset(&sa, 0, sizeof(sa));
@@ -233,7 +239,7 @@
ASSERT_EQ(0, sigaction(SIGALRM, NULL, &sa));
ASSERT_TRUE(sa.sa_sigaction == EmptySignalAction);
ASSERT_TRUE((void*) sa.sa_sigaction == (void*) sa.sa_handler);
- ASSERT_TRUE(sa.sa_flags == (SA_ONSTACK | SA_SIGINFO));
+ ASSERT_EQ(static_cast<unsigned>(SA_ONSTACK | SA_SIGINFO), sa.sa_flags & ~sa_restorer);
// Put everything back how it was.
ASSERT_EQ(0, sigaction(SIGALRM, &original_sa, NULL));
diff --git a/tests/stdatomic_test.cpp b/tests/stdatomic_test.cpp
index 5e88c88..b7fb19b 100644
--- a/tests/stdatomic_test.cpp
+++ b/tests/stdatomic_test.cpp
@@ -14,11 +14,10 @@
* limitations under the License.
*/
-#include <gtest/gtest.h>
-
-#if !defined(__GLIBC__) /* TODO: fix our prebuilt toolchains! */
-
#include <stdatomic.h>
+#include <gtest/gtest.h>
+#include <pthread.h>
+#include <stdint.h>
TEST(stdatomic, LOCK_FREE) {
ASSERT_TRUE(ATOMIC_BOOL_LOCK_FREE);
@@ -64,14 +63,17 @@
TEST(stdatomic, atomic_is_lock_free) {
atomic_char small;
- atomic_intmax_t big;
ASSERT_TRUE(atomic_is_lock_free(&small));
+#if defined(__clang__) || __GNUC_PREREQ(4, 7)
+ // Otherwise stdatomic.h doesn't handle this.
+ atomic_intmax_t big;
// atomic_intmax_t(size = 64) is not lock free on mips32.
#if defined(__mips__) && !defined(__LP64__)
ASSERT_FALSE(atomic_is_lock_free(&big));
#else
ASSERT_TRUE(atomic_is_lock_free(&big));
#endif
+#endif
}
TEST(stdatomic, atomic_flag) {
@@ -167,4 +169,80 @@
ASSERT_EQ(0x002, atomic_load(&i));
}
-#endif
+// And a rudimentary test of acquire-release memory ordering:
+
+constexpr static uint_least32_t BIG = 10000000ul; // Assumed even below.
+
+struct three_atomics {
+ atomic_uint_least32_t x;
+ char a[123]; // Everything in different cache lines,
+ // increase chance of compiler getting alignment wrong.
+ atomic_uint_least32_t y;
+ char b[4013];
+ atomic_uint_least32_t z;
+};
+
+// Very simple acquire/release memory ordering sanity check.
+static void* writer(void* arg) {
+ three_atomics* a = reinterpret_cast<three_atomics*>(arg);
+ for (uint_least32_t i = 0; i <= BIG; i+=2) {
+ atomic_store_explicit(&a->x, i, memory_order_relaxed);
+ atomic_store_explicit(&a->z, i, memory_order_relaxed);
+ atomic_store_explicit(&a->y, i, memory_order_release);
+ atomic_store_explicit(&a->x, i+1, memory_order_relaxed);
+ atomic_store_explicit(&a->z, i+1, memory_order_relaxed);
+ atomic_store_explicit(&a->y, i+1, memory_order_release);
+ }
+ return 0;
+}
+
+static void* reader(void* arg) {
+ three_atomics* a = reinterpret_cast<three_atomics*>(arg);
+ uint_least32_t xval = 0, yval = 0, zval = 0;
+ size_t repeat = 0;
+ size_t repeat_limit = 1000;
+ while (yval != BIG + 1) {
+ yval = atomic_load_explicit(&a->y, memory_order_acquire);
+ zval = atomic_load_explicit(&a->z, memory_order_relaxed);
+ xval = atomic_load_explicit(&a->x, memory_order_relaxed);
+ // If we see a given value of y, the immediately preceding
+ // stores to z and x, or later ones, should also be visible.
+ if (zval < yval) {
+ // Cant just ASSERT, since we are in a non-void function.
+ ADD_FAILURE() << "acquire-release ordering violation: "
+ << zval << " < " << yval << ", " << xval << "\n";
+ return 0; // Only report once.
+ }
+ if (xval < yval) {
+ // Cant just ASSERT, since we are in a non-void function.
+ ADD_FAILURE() << "acquire-release ordering violation: "
+ << xval << " < " << yval << ", " << zval << "\n";
+ return 0; // Only report once.
+ }
+ if (repeat < repeat_limit) ++repeat;
+ }
+ // The following assertion is not technically guaranteed to hold.
+ // But if it fails to hold, this test was useless, and we have a
+ // serious scheduling issue that we should probably know about.
+ EXPECT_EQ(repeat, repeat_limit);
+ return 0;
+}
+
+TEST(stdatomic, ordering) {
+ // Run a memory ordering sanity test.
+ void* result;
+ three_atomics a;
+ atomic_init(&a.x, 0ul);
+ atomic_init(&a.y, 0ul);
+ atomic_init(&a.z, 0ul);
+ pthread_t t1,t2;
+ ASSERT_EQ(0, pthread_create(&t1, 0, reader, &a));
+ ASSERT_EQ(0, pthread_create(&t2, 0, writer, &a));
+ ASSERT_EQ(0, pthread_join(t1, &result));
+ EXPECT_EQ(0, result);
+ ASSERT_EQ(0, pthread_join(t2, &result));
+ EXPECT_EQ(0, result);
+ EXPECT_EQ(atomic_load_explicit(&a.x, memory_order_consume), BIG + 1);
+ EXPECT_EQ(atomic_load_explicit(&a.y, memory_order_seq_cst), BIG + 1);
+ EXPECT_EQ(atomic_load(&a.z), BIG + 1);
+}
diff --git a/tests/stdio_ext_test.cpp b/tests/stdio_ext_test.cpp
new file mode 100644
index 0000000..3dbc485
--- /dev/null
+++ b/tests/stdio_ext_test.cpp
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio_ext.h>
+
+#include <gtest/gtest.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <math.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <wchar.h>
+#include <locale.h>
+
+#include "TemporaryFile.h"
+
+TEST(stdio_ext, __fbufsize) {
+ FILE* fp = fopen("/proc/version", "r");
+
+ char buf[128];
+
+ ASSERT_EQ(0, setvbuf(fp, buf, _IOFBF, 1));
+ ASSERT_EQ(1U, __fbufsize(fp));
+
+ ASSERT_EQ(0, setvbuf(fp, buf, _IOFBF, 8));
+ ASSERT_EQ(8U, __fbufsize(fp));
+
+ fclose(fp);
+}
+
+TEST(stdio_ext, __flbf) {
+ FILE* fp = fopen("/proc/version", "r");
+
+ ASSERT_FALSE(__flbf(fp));
+
+ char buf[128];
+ ASSERT_EQ(0, setvbuf(fp, buf, _IOLBF, sizeof(buf)));
+
+ ASSERT_TRUE(__flbf(fp));
+
+ fclose(fp);
+}
+
+TEST(stdio_ext, __fpending) {
+ FILE* fp = fopen("/dev/null", "w");
+ ASSERT_EQ(0U, __fpending(fp));
+ ASSERT_EQ('x', fputc('x', fp));
+ ASSERT_EQ(1U, __fpending(fp));
+ ASSERT_EQ('y', fputc('y', fp));
+ ASSERT_EQ(2U, __fpending(fp));
+ fflush(fp);
+ ASSERT_EQ(0U, __fpending(fp));
+ fclose(fp);
+}
+
+TEST(stdio_ext, __fpurge) {
+ FILE* fp = tmpfile();
+
+ ASSERT_EQ('a', fputc('a', fp));
+ ASSERT_EQ(1U, __fpending(fp));
+ __fpurge(fp);
+ ASSERT_EQ(0U, __fpending(fp));
+
+ ASSERT_EQ('b', fputc('b', fp));
+ ASSERT_EQ('\n', fputc('\n', fp));
+ ASSERT_EQ(2U, __fpending(fp));
+
+ rewind(fp);
+
+ char buf[16];
+ char* s = fgets(buf, sizeof(buf), fp);
+ ASSERT_TRUE(s != NULL);
+ ASSERT_STREQ("b\n", s);
+
+ fclose(fp);
+}
+
+TEST(stdio_ext, _flushlbf) {
+ FILE* fp = fopen("/dev/null", "w");
+
+ char buf[128];
+ ASSERT_EQ(0, setvbuf(fp, buf, _IOLBF, sizeof(buf)));
+
+ ASSERT_EQ('a', fputc('a', fp));
+ ASSERT_EQ(1U, __fpending(fp));
+
+ _flushlbf();
+
+ ASSERT_EQ(0U, __fpending(fp));
+
+ fclose(fp);
+}
+
+TEST(stdio_ext, __freadable__fwritable) {
+ FILE* fp = fopen("/dev/null", "r");
+ ASSERT_TRUE(__freadable(fp));
+ ASSERT_FALSE(__fwritable(fp));
+ fclose(fp);
+
+ fp = fopen("/dev/null", "w");
+ ASSERT_FALSE(__freadable(fp));
+ ASSERT_TRUE(__fwritable(fp));
+ fclose(fp);
+
+ fp = fopen("/dev/null", "w+");
+ ASSERT_TRUE(__freadable(fp));
+ ASSERT_TRUE(__fwritable(fp));
+ fclose(fp);
+}
+
+TEST(stdio_ext, __fsetlocking) {
+ FILE* fp = fopen("/proc/version", "r");
+ // Android doesn't actually support the other modes.
+ ASSERT_EQ(FSETLOCKING_INTERNAL, __fsetlocking(fp, FSETLOCKING_QUERY));
+ fclose(fp);
+}
diff --git a/tests/stdio_test.cpp b/tests/stdio_test.cpp
index bb86509..c01ab68 100644
--- a/tests/stdio_test.cpp
+++ b/tests/stdio_test.cpp
@@ -428,7 +428,7 @@
TEST(stdio, snprintf_utf8_15439554) {
locale_t cloc = newlocale(LC_ALL, "C.UTF-8", 0);
- uselocale(cloc);
+ locale_t old_locale = uselocale(cloc);
// http://b/15439554
char buf[BUFSIZ];
@@ -446,6 +446,7 @@
snprintf(buf, sizeof(buf), "%d\xf0\xa4\xad\xa2%d", 1, 2);
EXPECT_STREQ("1𤭢2", buf);
+ uselocale(old_locale);
freelocale(cloc);
}
@@ -676,3 +677,82 @@
fclose(fp);
}
+
+TEST(stdio, fmemopen) {
+ char buf[16];
+ memset(buf, 0, sizeof(buf));
+ FILE* fp = fmemopen(buf, sizeof(buf), "r+");
+ ASSERT_EQ('<', fputc('<', fp));
+ ASSERT_NE(EOF, fputs("abc>\n", fp));
+ fflush(fp);
+
+ ASSERT_STREQ("<abc>\n", buf);
+
+ rewind(fp);
+
+ char line[16];
+ char* s = fgets(line, sizeof(line), fp);
+ ASSERT_TRUE(s != NULL);
+ ASSERT_STREQ("<abc>\n", s);
+
+ fclose(fp);
+}
+
+TEST(stdio, fmemopen_NULL) {
+ FILE* fp = fmemopen(nullptr, 128, "r+");
+ ASSERT_NE(EOF, fputs("xyz\n", fp));
+
+ rewind(fp);
+
+ char line[16];
+ char* s = fgets(line, sizeof(line), fp);
+ ASSERT_TRUE(s != NULL);
+ ASSERT_STREQ("xyz\n", s);
+
+ fclose(fp);
+}
+
+TEST(stdio, fmemopen_EINVAL) {
+ char buf[16];
+
+ // Invalid size.
+ errno = 0;
+ ASSERT_EQ(nullptr, fmemopen(buf, 0, "r+"));
+ ASSERT_EQ(EINVAL, errno);
+
+ // No '+' with NULL buffer.
+ errno = 0;
+ ASSERT_EQ(nullptr, fmemopen(nullptr, 0, "r"));
+ ASSERT_EQ(EINVAL, errno);
+}
+
+TEST(stdio, open_memstream) {
+ char* p = nullptr;
+ size_t size = 0;
+ FILE* fp = open_memstream(&p, &size);
+ ASSERT_NE(EOF, fputs("hello, world!", fp));
+ fclose(fp);
+
+ ASSERT_STREQ("hello, world!", p);
+ ASSERT_EQ(strlen("hello, world!"), size);
+ free(p);
+}
+
+TEST(stdio, open_memstream_EINVAL) {
+#if defined(__BIONIC__)
+ char* p;
+ size_t size;
+
+ // Invalid buffer.
+ errno = 0;
+ ASSERT_EQ(nullptr, open_memstream(nullptr, &size));
+ ASSERT_EQ(EINVAL, errno);
+
+ // Invalid size.
+ errno = 0;
+ ASSERT_EQ(nullptr, open_memstream(&p, nullptr));
+ ASSERT_EQ(EINVAL, errno);
+#else
+ GTEST_LOG_(INFO) << "This test does nothing.\n";
+#endif
+}
diff --git a/tests/string_posix_strerror_r_test.cpp b/tests/string_posix_strerror_r_test.cpp
new file mode 100644
index 0000000..09cebfe
--- /dev/null
+++ b/tests/string_posix_strerror_r_test.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#undef _GNU_SOURCE
+
+// Old versions of glibc (like our current host prebuilt sysroot one) have
+// headers that don't work if you #undef _GNU_SOURCE, which makes it
+// impossible to build this test.
+#include <features.h>
+
+#if !defined(__GLIBC__)
+#include <string.h>
+
+#include <errno.h>
+#include <gtest/gtest.h>
+
+TEST(string, posix_strerror_r) {
+ char buf[256];
+
+ // Valid.
+ ASSERT_EQ(0, strerror_r(0, buf, sizeof(buf)));
+ ASSERT_STREQ("Success", buf);
+ ASSERT_EQ(0, strerror_r(1, buf, sizeof(buf)));
+ ASSERT_STREQ("Operation not permitted", buf);
+
+ // Invalid.
+ ASSERT_EQ(0, strerror_r(-1, buf, sizeof(buf)));
+ ASSERT_STREQ("Unknown error -1", buf);
+ ASSERT_EQ(0, strerror_r(1234, buf, sizeof(buf)));
+ ASSERT_STREQ("Unknown error 1234", buf);
+
+ // Buffer too small.
+ errno = 0;
+ memset(buf, 0, sizeof(buf));
+ ASSERT_EQ(-1, strerror_r(4567, buf, 2));
+ ASSERT_STREQ("U", buf);
+ // The POSIX strerror_r sets errno to ERANGE (the GNU one doesn't).
+ ASSERT_EQ(ERANGE, errno);
+}
+#else
+# if __GLIBC_PREREQ(2, 15)
+# error this test should work now
+# endif
+#endif
diff --git a/tests/string_test.cpp b/tests/string_test.cpp
index 73c94c6..6ecbb64 100644
--- a/tests/string_test.cpp
+++ b/tests/string_test.cpp
@@ -14,12 +14,14 @@
* limitations under the License.
*/
-#include <gtest/gtest.h>
+#define _GNU_SOURCE 1
+
+#include <string.h>
#include <errno.h>
+#include <gtest/gtest.h>
#include <malloc.h>
#include <math.h>
-#include <string.h>
#include "buffer_tests.h"
@@ -72,28 +74,34 @@
#endif // __BIONIC__
}
-TEST(string, strerror_r) {
-#if defined(__BIONIC__) // glibc's strerror_r doesn't even have the same signature as the POSIX one.
+TEST(string, gnu_strerror_r) {
char buf[256];
+ // Note that glibc doesn't necessarily write into the buffer.
+
// Valid.
- ASSERT_EQ(0, strerror_r(0, buf, sizeof(buf)));
+ ASSERT_STREQ("Success", strerror_r(0, buf, sizeof(buf)));
+#if defined(__BIONIC__)
ASSERT_STREQ("Success", buf);
- ASSERT_EQ(0, strerror_r(1, buf, sizeof(buf)));
+#endif
+ ASSERT_STREQ("Operation not permitted", strerror_r(1, buf, sizeof(buf)));
+#if defined(__BIONIC__)
ASSERT_STREQ("Operation not permitted", buf);
+#endif
// Invalid.
- ASSERT_EQ(0, strerror_r(-1, buf, sizeof(buf)));
+ ASSERT_STREQ("Unknown error -1", strerror_r(-1, buf, sizeof(buf)));
ASSERT_STREQ("Unknown error -1", buf);
- ASSERT_EQ(0, strerror_r(1234, buf, sizeof(buf)));
+ ASSERT_STREQ("Unknown error 1234", strerror_r(1234, buf, sizeof(buf)));
ASSERT_STREQ("Unknown error 1234", buf);
// Buffer too small.
- ASSERT_EQ(-1, strerror_r(0, buf, 2));
- ASSERT_EQ(ERANGE, errno);
-#else // __BIONIC__
- GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif // __BIONIC__
+ errno = 0;
+ memset(buf, 0, sizeof(buf));
+ ASSERT_EQ(buf, strerror_r(4567, buf, 2));
+ ASSERT_STREQ("U", buf);
+ // The GNU strerror_r doesn't set errno (the POSIX one sets it to ERANGE).
+ ASSERT_EQ(0, errno);
}
TEST(string, strsignal) {
@@ -129,8 +137,7 @@
ASSERT_STREQ("Unknown signal 1001", strsignal1001);
}
-// TODO: where did these numbers come from?
-#define POS_ITER 10
+// TODO: where did this number come from?
#define ITER 500
// For every length we want to test, vary and change alignment
@@ -139,8 +146,9 @@
// These tests contributed by Intel Corporation.
// TODO: make these tests more intention-revealing and less random.
template<class Character>
-struct StringTestState {
- StringTestState(size_t MAX_LEN) : MAX_LEN(MAX_LEN) {
+class StringTestState {
+ public:
+ StringTestState(size_t MAX_LEN) : MAX_LEN(MAX_LEN), align1_index_(0), align2_index_(0) {
int max_alignment = 64;
// TODO: fix the tests to not sometimes use twice their specified "MAX_LEN".
@@ -159,24 +167,42 @@
free(glob_ptr2);
}
- void NewIteration() {
- int alignments[] = { 24, 32, 16, 48, 1, 2, 3, 0, 5, 11 };
- int usable_alignments = 10;
- int align1 = alignments[random() % (usable_alignments - 1)];
- int align2 = alignments[random() % (usable_alignments - 1)];
+ void BeginIterations() {
+ align1_index_ = 0;
+ align2_index_ = 0;
- ptr = glob_ptr + align1;
- ptr1 = glob_ptr1 + align1;
- ptr2 = glob_ptr2 + align2;
+ ResetPointers();
+ }
+
+ bool HasNextIteration() {
+ return (align1_index_ != (alignments_size - 1) || align2_index_ != (alignments_size - 1));
+ }
+
+ void NextIteration() {
+ if (align1_index_ == (alignments_size - 1) && align2_index_ == (alignments_size - 1)) {
+ return;
+ }
+
+ if (align1_index_ == (alignments_size - 1)) {
+ align1_index_ = 0;
+ align2_index_++;
+ } else {
+ align1_index_++;
+ }
+
+ ResetPointers();
}
const size_t MAX_LEN;
Character *ptr, *ptr1, *ptr2;
size_t n;
- int len[ITER + 1];
+ size_t len[ITER + 1];
private:
+ static size_t alignments[];
+ static size_t alignments_size;
Character *glob_ptr, *glob_ptr1, *glob_ptr2;
+ size_t align1_index_, align2_index_;
// Calculate input lengths and fill state.len with them.
// Test small lengths with more density than big ones. Manually push
@@ -186,26 +212,40 @@
n = 0;
len[n++] = 0;
for (size_t i = 1; i < ITER; ++i) {
- int l = (int) exp(log((double) MAX_LEN) * i / ITER);
+ size_t l = static_cast<size_t>(exp(log(static_cast<double>(MAX_LEN)) * i / ITER));
if (l != len[n - 1]) {
len[n++] = l;
}
}
len[n++] = MAX_LEN;
}
+
+ void ResetPointers() {
+ if (align1_index_ == alignments_size || align2_index_ == alignments_size) {
+ ptr = ptr1 = ptr2 = nullptr;
+ } else {
+ ptr = glob_ptr + alignments[align1_index_];
+ ptr1 = glob_ptr1 + alignments[align1_index_];
+ ptr2 = glob_ptr2 + alignments[align2_index_];
+ }
+ }
};
+template<class Character>
+size_t StringTestState<Character>::alignments[] = { 24, 32, 16, 48, 0, 1, 2, 3, 4, 5, 6, 7, 11 };
+
+template<class Character>
+size_t StringTestState<Character>::alignments_size = sizeof(alignments)/sizeof(size_t);
+
TEST(string, strcat) {
StringTestState<char> state(SMALL);
for (size_t i = 1; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
memset(state.ptr2, '\2', state.MAX_LEN);
state.ptr2[state.MAX_LEN - 1] = '\0';
memcpy(state.ptr, state.ptr2, 2 * state.MAX_LEN);
- memset(state.ptr1, random() & 255, state.len[i]);
+ memset(state.ptr1, 'L', state.len[i]);
state.ptr1[random() % state.len[i]] = '\0';
state.ptr1[state.len[i] - 1] = '\0';
@@ -378,13 +418,11 @@
}
TEST(string, strchr) {
- int seek_char = random() & 255;
+ int seek_char = 'R';
StringTestState<char> state(SMALL);
for (size_t i = 1; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
if (~seek_char > 0) {
memset(state.ptr1, ~seek_char, state.len[i]);
} else {
@@ -392,7 +430,7 @@
}
state.ptr1[state.len[i] - 1] = '\0';
- int pos = random() % state.MAX_LEN;
+ size_t pos = random() % state.MAX_LEN;
char* expected;
if (pos >= state.len[i] - 1) {
if (seek_char == 0) {
@@ -413,15 +451,13 @@
TEST(string, strcmp) {
StringTestState<char> state(SMALL);
for (size_t i = 1; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
memset(state.ptr1, 'v', state.MAX_LEN);
memset(state.ptr2, 'n', state.MAX_LEN);
state.ptr1[state.len[i] - 1] = '\0';
state.ptr2[state.len[i] - 1] = '\0';
- int pos = 1 + (random() % (state.MAX_LEN - 1));
+ size_t pos = 1 + (random() % (state.MAX_LEN - 1));
int actual;
int expected;
if (pos >= state.len[i] - 1) {
@@ -449,9 +485,7 @@
TEST(string, stpcpy) {
StringTestState<char> state(SMALL);
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
size_t pos = random() % state.MAX_LEN;
memset(state.ptr1, '\2', pos);
@@ -475,9 +509,7 @@
TEST(string, strcpy) {
StringTestState<char> state(SMALL);
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
size_t pos = random() % state.MAX_LEN;
memset(state.ptr1, '\2', pos);
@@ -503,14 +535,12 @@
#if defined(__BIONIC__)
StringTestState<char> state(SMALL);
for (size_t i = 0; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
memset(state.ptr2, '\2', state.MAX_LEN + state.len[i]);
state.ptr2[state.MAX_LEN - 1] = '\0';
memcpy(state.ptr, state.ptr2, state.MAX_LEN + state.len[i]);
- int pos = random() % state.MAX_LEN;
+ size_t pos = random() % state.MAX_LEN;
memset(state.ptr1, '\3', pos);
state.ptr1[pos] = '\0';
if (pos < state.len[i]) {
@@ -533,13 +563,8 @@
TEST(string, strlcpy) {
#if defined(__BIONIC__)
StringTestState<char> state(SMALL);
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
- int rand = random() & 255;
- if (rand < 1) {
- rand = 1;
- }
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+ int rand = 'O';
memset(state.ptr1, rand, state.MAX_LEN);
size_t pos = random() % state.MAX_LEN;
@@ -548,7 +573,7 @@
}
memcpy(state.ptr, state.ptr1, state.MAX_LEN);
- memset(state.ptr2, random() & 255, state.MAX_LEN);
+ memset(state.ptr2, 'I', state.MAX_LEN);
memcpy(state.ptr + state.MAX_LEN, state.ptr2, state.MAX_LEN);
if (pos > state.MAX_LEN - 1) {
@@ -570,14 +595,12 @@
TEST(string, strncat) {
StringTestState<char> state(SMALL);
for (size_t i = 1; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
memset(state.ptr2, '\2', state.MAX_LEN);
state.ptr2[state.MAX_LEN - 1] = '\0';
memcpy(state.ptr, state.ptr2, 2 * state.MAX_LEN);
- memset(state.ptr1, random() & 255, state.len[i]);
+ memset(state.ptr1, 'I', state.len[i]);
state.ptr1[random() % state.len[i]] = '\0';
state.ptr1[state.len[i] - 1] = '\0';
@@ -596,15 +619,13 @@
TEST(string, strncmp) {
StringTestState<char> state(SMALL);
for (size_t i = 1; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
memset(state.ptr1, 'v', state.MAX_LEN);
memset(state.ptr2, 'n', state.MAX_LEN);
state.ptr1[state.len[i] - 1] = '\0';
state.ptr2[state.len[i] - 1] = '\0';
- int pos = 1 + (random() % (state.MAX_LEN - 1));
+ size_t pos = 1 + (random() % (state.MAX_LEN - 1));
int actual;
int expected;
if (pos >= state.len[i] - 1) {
@@ -632,12 +653,8 @@
TEST(string, stpncpy) {
StringTestState<char> state(SMALL);
- for (size_t j = 0; j < ITER; j++) {
- state.NewIteration();
-
- // Choose a random value to fill the string, except \0 (string terminator),
- // or \1 (guarantees it's different from anything in ptr2).
- memset(state.ptr1, (random() % 254) + 2, state.MAX_LEN);
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+ memset(state.ptr1, 'J', state.MAX_LEN);
// Choose a random size for our src buffer.
size_t ptr1_len = random() % state.MAX_LEN;
state.ptr1[ptr1_len] = '\0';
@@ -671,12 +688,10 @@
TEST(string, strncpy) {
StringTestState<char> state(SMALL);
- for (size_t j = 0; j < ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
// Choose a random value to fill the string, except \0 (string terminator),
// or \1 (guarantees it's different from anything in ptr2).
- memset(state.ptr1, (random() % 254) + 2, state.MAX_LEN);
+ memset(state.ptr1, 'K', state.MAX_LEN);
// Choose a random size for our src buffer.
size_t ptr1_len = random() % state.MAX_LEN;
state.ptr1[ptr1_len] = '\0';
@@ -709,12 +724,10 @@
}
TEST(string, strrchr) {
- int seek_char = random() & 255;
+ int seek_char = 'M';
StringTestState<char> state(SMALL);
for (size_t i = 1; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
if (~seek_char > 0) {
memset(state.ptr1, ~seek_char, state.len[i]);
} else {
@@ -722,7 +735,7 @@
}
state.ptr1[state.len[i] - 1] = '\0';
- int pos = random() % state.MAX_LEN;
+ size_t pos = random() % state.MAX_LEN;
char* expected;
if (pos >= state.len[i] - 1) {
if (seek_char == 0) {
@@ -741,15 +754,13 @@
}
TEST(string, memchr) {
- int seek_char = random() & 255;
+ int seek_char = 'N';
StringTestState<char> state(SMALL);
for (size_t i = 0; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
memset(state.ptr1, ~seek_char, state.len[i]);
- int pos = random() % state.MAX_LEN;
+ size_t pos = random() % state.MAX_LEN;
char* expected;
if (pos >= state.len[i]) {
expected = NULL;
@@ -772,15 +783,13 @@
}
TEST(string, memrchr) {
- int seek_char = random() & 255;
+ int seek_char = 'P';
StringTestState<char> state(SMALL);
for (size_t i = 0; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
memset(state.ptr1, ~seek_char, state.len[i]);
- int pos = random() % state.MAX_LEN;
+ size_t pos = random() % state.MAX_LEN;
char* expected;
if (pos >= state.len[i]) {
expected = NULL;
@@ -797,11 +806,9 @@
TEST(string, memcmp) {
StringTestState<char> state(SMALL);
for (size_t i = 0; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
- int c1 = random() & 0xff;
- int c2 = random() & 0xff;
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+ int c1 = 'A';
+ int c2 = 'N';
memset(state.ptr1, c1, state.MAX_LEN);
memset(state.ptr2, c1, state.MAX_LEN);
@@ -820,9 +827,7 @@
StringTestState<wchar_t> state(SMALL);
for (size_t i = 0; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
long long mask = ((long long) 1 << 8 * sizeof(wchar_t)) - 1;
int c1 = rand() & mask;
int c2 = rand() & mask;
@@ -842,11 +847,9 @@
TEST(string, memcpy) {
StringTestState<char> state(LARGE);
- int rand = random() & 255;
+ int rand = 4;
for (size_t i = 0; i < state.n - 1; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
size_t pos = random() % (state.MAX_LEN - state.len[i]);
memset(state.ptr1, rand, state.len[i]);
@@ -864,11 +867,9 @@
TEST(string, memset) {
StringTestState<char> state(LARGE);
- char ch = random () & 255;
+ char ch = 'P';
for (size_t i = 0; i < state.n - 1; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
memset(state.ptr1, ~ch, state.MAX_LEN);
memcpy(state.ptr2, state.ptr1, state.MAX_LEN);
@@ -887,14 +888,12 @@
TEST(string, memmove) {
StringTestState<char> state(LARGE);
for (size_t i = 0; i < state.n - 1; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
- memset(state.ptr1, random() & 255, 2 * state.MAX_LEN);
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+ memset(state.ptr1, 'Q', 2 * state.MAX_LEN);
size_t pos = random() % (state.MAX_LEN - state.len[i]);
- memset(state.ptr1, random() & 255, state.len[i]);
+ memset(state.ptr1, 'R', state.len[i]);
memcpy(state.ptr2, state.ptr1, 2 * state.MAX_LEN);
memcpy(state.ptr, state.ptr1, state.len[i]);
memcpy(state.ptr1 + pos, state.ptr, state.len[i]);
@@ -920,8 +919,8 @@
for (int i = 0; i < 5; i++) {
char* ptr2 = glob_ptr2 + alignments[i];
- memset(ptr1, random() & 255, 2 * len);
- memset(ptr1, random() & 255, len);
+ memset(ptr1, 'S', 2 * len);
+ memset(ptr1, 'T', len);
memcpy(ptr2, ptr1, 2 * len);
memcpy(ptr, ptr1, len);
memcpy(ptr1 + pos, ptr, len);
@@ -987,11 +986,9 @@
TEST(string, bcopy) {
StringTestState<char> state(LARGE);
for (size_t i = 0; i < state.n; i++) {
- for (size_t j = 0; j < POS_ITER; j++) {
- state.NewIteration();
-
- memset(state.ptr1, random() & 255, state.MAX_LEN);
- memset(state.ptr1 + state.MAX_LEN, random() & 255, state.MAX_LEN);
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+ memset(state.ptr1, '4', state.MAX_LEN);
+ memset(state.ptr1 + state.MAX_LEN, 'a', state.MAX_LEN);
memcpy(state.ptr2, state.ptr1, 2 * state.MAX_LEN);
size_t start = random() % (2 * state.MAX_LEN - state.len[i]);
@@ -1005,10 +1002,8 @@
TEST(string, bzero) {
StringTestState<char> state(LARGE);
- for (size_t j = 0; j < ITER; j++) {
- state.NewIteration();
-
- memset(state.ptr1, random() & 255, state.MAX_LEN);
+ for (state.BeginIterations(); state.HasNextIteration(); state.NextIteration()) {
+ memset(state.ptr1, 'R', state.MAX_LEN);
size_t start = random() % state.MAX_LEN;
size_t end = start + random() % (state.MAX_LEN - start);
@@ -1287,3 +1282,22 @@
TEST(string, strchr_overread) {
RunSingleBufferOverreadTest(DoStrchrTest);
}
+
+static void TestBasename(const char* in, const char* expected_out) {
+ errno = 0;
+ const char* out = basename(in);
+ ASSERT_STREQ(expected_out, out) << in;
+ ASSERT_EQ(0, errno) << in;
+}
+
+TEST(string, __gnu_basename) {
+ TestBasename("", "");
+ TestBasename("/usr/lib", "lib");
+ TestBasename("/usr/", "");
+ TestBasename("usr", "usr");
+ TestBasename("/", "");
+ TestBasename(".", ".");
+ TestBasename("..", "..");
+ TestBasename("///", "");
+ TestBasename("//usr//lib//", "");
+}
diff --git a/tests/sys_socket_test.cpp b/tests/sys_socket_test.cpp
index 0bde024..38ef68a 100644
--- a/tests/sys_socket_test.cpp
+++ b/tests/sys_socket_test.cpp
@@ -23,13 +23,9 @@
#include <fcntl.h>
#if defined(__BIONIC__)
- #define ACCEPT4_SUPPORTED 1
#define RECVMMSG_SUPPORTED 1
#define SENDMMSG_SUPPORTED 1
#elif defined(__GLIBC_PREREQ)
- #if __GLIBC_PREREQ(2, 9)
- #define ACCEPT4_SUPPORTED 1
- #endif
#if __GLIBC_PREREQ(2, 12)
#define RECVMMSG_SUPPORTED 1
#endif
@@ -38,8 +34,6 @@
#endif
#endif
-#if defined(ACCEPT4_SUPPORTED) || defined(RECVMMSG_SUPPORTED) || defined(SENDMMSG_SUPPORTED)
-
#define SOCK_PATH "test"
static void* ConnectFn(void* data) {
@@ -105,18 +99,12 @@
close(fd);
}
-#endif
TEST(sys_socket, accept4_error) {
-#if defined(ACCEPT4_SUPPORTED)
ASSERT_EQ(-1, accept4(-1, NULL, NULL, 0));
ASSERT_EQ(EBADF, errno);
-#else
- GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif
}
-#if defined(ACCEPT4_SUPPORTED)
static void TestAccept4(struct sockaddr_un* addr, int fd) {
socklen_t len = sizeof(*addr);
int fd_acc = accept4(fd, reinterpret_cast<struct sockaddr*>(addr), &len, SOCK_CLOEXEC);
@@ -127,14 +115,9 @@
close(fd_acc);
}
-#endif
TEST(sys_socket, accept4_smoke) {
-#if defined(ACCEPT4_SUPPORTED)
RunTest(TestAccept4, NULL);
-#else
- GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif
}
#if defined(RECVMMSG_SUPPORTED)
diff --git a/tests/time_test.cpp b/tests/time_test.cpp
index 241c4a0..c9ead8d 100644
--- a/tests/time_test.cpp
+++ b/tests/time_test.cpp
@@ -17,7 +17,6 @@
#include <time.h>
#include <errno.h>
-#include <features.h>
#include <gtest/gtest.h>
#include <pthread.h>
#include <signal.h>
diff --git a/tests/uchar_test.cpp b/tests/uchar_test.cpp
index eca3c5e..c887f8a 100644
--- a/tests/uchar_test.cpp
+++ b/tests/uchar_test.cpp
@@ -19,7 +19,6 @@
#if defined(__BIONIC__)
#define HAVE_UCHAR 1
#elif defined(__GLIBC__)
-#include <features.h>
#define HAVE_UCHAR __GLIBC_PREREQ(2, 16)
#endif
diff --git a/tests/uniqueptr_test.cpp b/tests/uniqueptr_test.cpp
new file mode 100644
index 0000000..4b6608a
--- /dev/null
+++ b/tests/uniqueptr_test.cpp
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <gtest/gtest.h>
+
+#include <private/UniquePtr.h>
+
+static int cCount = 0;
+struct C {
+ C() { ++cCount; }
+ ~C() { --cCount; }
+};
+
+static bool freed = false;
+struct Freer {
+ void operator() (int* p) {
+ ASSERT_EQ(123, *p);
+ free(p);
+ freed = true;
+ }
+};
+
+TEST(UniquePtr, smoke) {
+ //
+ // UniquePtr<T> tests...
+ //
+
+ // Can we free a single object?
+ {
+ UniquePtr<C> c(new C);
+ ASSERT_TRUE(cCount == 1);
+ }
+ ASSERT_TRUE(cCount == 0);
+ // Does release work?
+ C* rawC;
+ {
+ UniquePtr<C> c(new C);
+ ASSERT_TRUE(cCount == 1);
+ rawC = c.release();
+ }
+ ASSERT_TRUE(cCount == 1);
+ delete rawC;
+ // Does reset work?
+ {
+ UniquePtr<C> c(new C);
+ ASSERT_TRUE(cCount == 1);
+ c.reset(new C);
+ ASSERT_TRUE(cCount == 1);
+ }
+ ASSERT_TRUE(cCount == 0);
+
+ //
+ // UniquePtr<T[]> tests...
+ //
+
+ // Can we free an array?
+ {
+ UniquePtr<C[]> cs(new C[4]);
+ ASSERT_TRUE(cCount == 4);
+ }
+ ASSERT_TRUE(cCount == 0);
+ // Does release work?
+ {
+ UniquePtr<C[]> c(new C[4]);
+ ASSERT_TRUE(cCount == 4);
+ rawC = c.release();
+ }
+ ASSERT_TRUE(cCount == 4);
+ delete[] rawC;
+ // Does reset work?
+ {
+ UniquePtr<C[]> c(new C[4]);
+ ASSERT_TRUE(cCount == 4);
+ c.reset(new C[2]);
+ ASSERT_TRUE(cCount == 2);
+ }
+ ASSERT_TRUE(cCount == 0);
+
+ //
+ // Custom deleter tests...
+ //
+ ASSERT_TRUE(!freed);
+ {
+ UniquePtr<int, Freer> i(reinterpret_cast<int*>(malloc(sizeof(int))));
+ *i = 123;
+ }
+ ASSERT_TRUE(freed);
+}
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 2a65657..8195ea8 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -431,6 +431,10 @@
void* child_stack[1024];
int clone_result = clone(GetPidCachingCloneStartRoutine, &child_stack[1024], CLONE_NEWNS | SIGCHLD, NULL);
+ if (clone_result == -1 && errno == EPERM && getuid() != 0) {
+ GTEST_LOG_(INFO) << "This test only works if you have permission to CLONE_NEWNS; try running as root.\n";
+ return;
+ }
ASSERT_NE(clone_result, -1);
ASSERT_EQ(parent_pid, getpid());
diff --git a/tests/wchar_test.cpp b/tests/wchar_test.cpp
index d02c4bf..760475f 100644
--- a/tests/wchar_test.cpp
+++ b/tests/wchar_test.cpp
@@ -489,3 +489,34 @@
EXPECT_EQ(4U, n);
EXPECT_EQ(L'𤭢', wc);
}
+
+TEST(wchar, open_wmemstream) {
+ wchar_t* p = nullptr;
+ size_t size = 0;
+ FILE* fp = open_wmemstream(&p, &size);
+ ASSERT_NE(EOF, fputws(L"hello, world!", fp));
+ fclose(fp);
+
+ ASSERT_STREQ(L"hello, world!", p);
+ ASSERT_EQ(wcslen(L"hello, world!"), size);
+ free(p);
+}
+
+TEST(stdio, open_wmemstream_EINVAL) {
+#if defined(__BIONIC__)
+ wchar_t* p;
+ size_t size;
+
+ // Invalid buffer.
+ errno = 0;
+ ASSERT_EQ(nullptr, open_wmemstream(nullptr, &size));
+ ASSERT_EQ(EINVAL, errno);
+
+ // Invalid size.
+ errno = 0;
+ ASSERT_EQ(nullptr, open_wmemstream(&p, nullptr));
+ ASSERT_EQ(EINVAL, errno);
+#else
+ GTEST_LOG_(INFO) << "This test does nothing.\n";
+#endif
+}