summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2012-02-16 11:26:52 +0000
committerAlexey Samsonov <samsonov@google.com>2012-02-16 11:26:52 +0000
commitca37969c24f85d46b3985862d5ed25fb01ffcc88 (patch)
treea77e08bf138329ab584a334a9ee8736fe0c075dd
parent86fab844bbf3bd922cecca027a4d367ec82664bd (diff)
downloadbcm5719-llvm-ca37969c24f85d46b3985862d5ed25fb01ffcc88.tar.gz
bcm5719-llvm-ca37969c24f85d46b3985862d5ed25fb01ffcc88.zip
AddressSanitizer: don't include pthread.h and signal.h in interceptors on Mac
llvm-svn: 150683
-rw-r--r--compiler-rt/lib/asan/asan_interceptors.cc20
-rw-r--r--compiler-rt/lib/asan/asan_interceptors.h4
2 files changed, 12 insertions, 12 deletions
diff --git a/compiler-rt/lib/asan/asan_interceptors.cc b/compiler-rt/lib/asan/asan_interceptors.cc
index 87b3f676316..05fef27f4d8 100644
--- a/compiler-rt/lib/asan/asan_interceptors.cc
+++ b/compiler-rt/lib/asan/asan_interceptors.cc
@@ -34,11 +34,11 @@
#if defined(__APPLE__)
// FIXME(samsonov): Gradually replace system headers with declarations of
-// intercepted functions.
-#include <pthread.h>
-#include <signal.h>
+// intercepted functions. We need these declarations on Mac to get addresses of
+// the functions to intercept.
#include <string.h>
#include <strings.h>
+
#endif // __APPLE__
namespace __asan {
@@ -218,8 +218,10 @@ static void *asan_thread_start(void *arg) {
}
#ifndef _WIN32
-INTERCEPTOR(int, pthread_create, pthread_t *thread,
- const pthread_attr_t *attr,
+extern "C"
+int pthread_create(void *thread, const void *attr,
+ void *(*start_routine)(void*), void *arg);
+INTERCEPTOR(int, pthread_create, void *thread, const void *attr,
void *(*start_routine)(void*), void *arg) {
GET_STACK_TRACE_HERE(kStackTraceMax);
int current_tid = asanThreadRegistry().GetCurrentTidOrMinusOne();
@@ -237,8 +239,9 @@ INTERCEPTOR(void*, signal, int signum, void *handler) {
return NULL;
}
-INTERCEPTOR(int, sigaction, int signum, const struct sigaction *act,
- struct sigaction *oldact) {
+extern "C"
+int sigaction(int signum, const void *act, void *oldact);
+INTERCEPTOR(int, sigaction, int signum, const void *act, void *oldact) {
if (!AsanInterceptsSignal(signum)) {
return REAL(sigaction)(signum, act, oldact);
}
@@ -393,8 +396,7 @@ DEFINE_REAL(char*, index, const char *string, int c);
#endif
#ifdef ANDROID
-DEFINE_REAL(int, sigaction, int signum, const struct sigaction *act,
- struct sigaction *oldact);
+DEFINE_REAL(int, sigaction, int signum, const void *act, void *oldact);
#endif
INTERCEPTOR(int, strcasecmp, const char *s1, const char *s2) {
diff --git a/compiler-rt/lib/asan/asan_interceptors.h b/compiler-rt/lib/asan/asan_interceptors.h
index 012c9ab3e65..1df8daec670 100644
--- a/compiler-rt/lib/asan/asan_interceptors.h
+++ b/compiler-rt/lib/asan/asan_interceptors.h
@@ -24,9 +24,7 @@ DECLARE_REAL(char*, strchr, const char *str, int c);
DECLARE_REAL(size_t, strlen, const char *s);
DECLARE_REAL(char*, strncpy, char *to, const char *from, size_t size);
DECLARE_REAL(size_t, strnlen, const char *s, size_t maxlen);
-struct sigaction;
-DECLARE_REAL(int, sigaction, int signum, const struct sigaction *act,
- struct sigaction *oldact);
+DECLARE_REAL(int, sigaction, int signum, const void *act, void *oldact);
namespace __asan {
OpenPOWER on IntegriCloud