summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHalton Huo <halton.huo@intel.com>2014-02-21 18:05:29 +0800
committerHalton Huo <halton.huo@intel.com>2014-03-05 16:34:20 +0800
commitf0870c3bfeba99482392fafe6d5f49615393c2b1 (patch)
tree1890250f9c08baa19ddd7b0a6fccaab1f95dc3d4
parentbef5016491eed41521f514d5c5528e2274689948 (diff)
downloadbionic-f0870c3bfeba99482392fafe6d5f49615393c2b1.zip
bionic-f0870c3bfeba99482392fafe6d5f49615393c2b1.tar.gz
bionic-f0870c3bfeba99482392fafe6d5f49615393c2b1.tar.bz2
Fix some pthread symbols build as C++ symbol under x64 lunch.
Functions protected with !defined(__LP64__) will be get build as C++ symbols for X64 build. This is not the desired work. So protect the implementation with !defined(__LP64__) as well. Change-Id: I4ef50ec36e46289ab308063e24f6c5ac61a6ca8d
-rw-r--r--libc/bionic/pthread_attr.cpp7
-rw-r--r--libc/bionic/pthread_cond.cpp6
2 files changed, 8 insertions, 5 deletions
diff --git a/libc/bionic/pthread_attr.cpp b/libc/bionic/pthread_attr.cpp
index fdf2965..d597c7e 100644
--- a/libc/bionic/pthread_attr.cpp
+++ b/libc/bionic/pthread_attr.cpp
@@ -94,18 +94,21 @@ int pthread_attr_getstacksize(const pthread_attr_t* attr, size_t* stack_size) {
return 0;
}
-int pthread_attr_setstackaddr(pthread_attr_t*, void*) {
+#if !defined(__LP64__)
+// TODO: this exists only for backward binary compatibility on 32 bit platforms.
+extern "C" int pthread_attr_setstackaddr(pthread_attr_t*, void*) {
// This was removed from POSIX.1-2008, and is not implemented on bionic.
// Needed for ABI compatibility with the NDK.
return ENOSYS;
}
-int pthread_attr_getstackaddr(const pthread_attr_t* attr, void** stack_addr) {
+extern "C" int pthread_attr_getstackaddr(const pthread_attr_t* attr, void** stack_addr) {
// This was removed from POSIX.1-2008.
// Needed for ABI compatibility with the NDK.
*stack_addr = (char*)attr->stack_base + attr->stack_size;
return 0;
}
+#endif // !defined(__LP64__)
int pthread_attr_setstack(pthread_attr_t* attr, void* stack_base, size_t stack_size) {
if ((stack_size & (PAGE_SIZE - 1) || stack_size < PTHREAD_STACK_MIN)) {
diff --git a/libc/bionic/pthread_cond.cpp b/libc/bionic/pthread_cond.cpp
index 213bcd7..c09e972 100644
--- a/libc/bionic/pthread_cond.cpp
+++ b/libc/bionic/pthread_cond.cpp
@@ -206,14 +206,14 @@ extern "C" int pthread_cond_timedwait_monotonic(pthread_cond_t* cond, pthread_mu
extern "C" int pthread_cond_timedwait_monotonic_np(pthread_cond_t* cond, pthread_mutex_t* mutex, const timespec* abstime) {
return __pthread_cond_timedwait(cond, mutex, abstime, CLOCK_MONOTONIC);
}
-#endif // !defined(__LP64__)
-int pthread_cond_timedwait_relative_np(pthread_cond_t* cond, pthread_mutex_t* mutex, const timespec* reltime) {
+extern "C" int pthread_cond_timedwait_relative_np(pthread_cond_t* cond, pthread_mutex_t* mutex, const timespec* reltime) {
return __pthread_cond_timedwait_relative(cond, mutex, reltime);
}
-int pthread_cond_timeout_np(pthread_cond_t* cond, pthread_mutex_t* mutex, unsigned ms) {
+extern "C" int pthread_cond_timeout_np(pthread_cond_t* cond, pthread_mutex_t* mutex, unsigned ms) {
timespec ts;
timespec_from_ms(ts, ms);
return __pthread_cond_timedwait_relative(cond, mutex, &ts);
}
+#endif // !defined(__LP64__)