From 9978a9a82e3b883b32a7a0bcd5cac18f31e7a68d Mon Sep 17 00:00:00 2001 From: Christopher Ferris Date: Thu, 29 Oct 2015 18:11:32 -0700 Subject: [PATCH] Move __set_errno to ndk_cruft.cpp. Change-Id: I5caa1cc161961d2e4629429c0d406875b93cdbd0 --- libc/bionic/__set_errno.cpp | 15 ++++----------- libc/bionic/ndk_cruft.cpp | 6 ++++++ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/libc/bionic/__set_errno.cpp b/libc/bionic/__set_errno.cpp index 30df350ea..9ef0047cc 100644 --- a/libc/bionic/__set_errno.cpp +++ b/libc/bionic/__set_errno.cpp @@ -36,20 +36,13 @@ // 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 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 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 diff --git a/libc/bionic/ndk_cruft.cpp b/libc/bionic/ndk_cruft.cpp index 231cf106e..d6b8e8f02 100644 --- a/libc/bionic/ndk_cruft.cpp +++ b/libc/bionic/ndk_cruft.cpp @@ -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.