// 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
+// Since __set_errno was mistakenly exposed in <errno.h> in the 32-bit
+// NDK, use a differently named internal function for the system call
+// stubs. This avoids having the stubs .hidden directives accidentally
+// hide __set_errno for 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;
}