OSDN Git Service

Move __set_errno to ndk_cruft.cpp.
authorChristopher Ferris <cferris@google.com>
Fri, 30 Oct 2015 01:11:32 +0000 (18:11 -0700)
committerChristopher Ferris <cferris@google.com>
Fri, 30 Oct 2015 01:11:32 +0000 (18:11 -0700)
Change-Id: I5caa1cc161961d2e4629429c0d406875b93cdbd0

libc/bionic/__set_errno.cpp
libc/bionic/ndk_cruft.cpp

index 30df350..9ef0047 100644 (file)
 // 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.
 
-// __set_errno was mistakenly exposed in <errno.h> in the 32-bit NDK.
-// 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.
+// 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.
 
 // 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
index 231cf10..d6b8e8f 100644 (file)
@@ -357,6 +357,12 @@ extern "C" pthread_internal_t* __get_thread() {
   return __real_get_thread();
 }
 
+// This one exists only for the LP32 NDK and is not present anywhere else.
+extern "C" long __set_errno_internal(int);
+extern "C" long __set_errno(int n) {
+  return __set_errno_internal(n);
+}
+
 #endif // !defined(__LP64__)
 
 // This was never implemented in bionic, only needed for ABI compatibility with the NDK.