From 1fdb75068d6b815baf9736e63e3545b66de688c5 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Sat, 19 Oct 2019 11:44:09 +0100 Subject: [PATCH] afl-gotcpu: porting to Darwin using mach API. --- src/afl-gotcpu.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/afl-gotcpu.c b/src/afl-gotcpu.c index bdb727de..dc938b65 100644 --- a/src/afl-gotcpu.c +++ b/src/afl-gotcpu.c @@ -52,7 +52,7 @@ #include "types.h" #include "debug.h" -#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) +#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) #define HAVE_AFFINITY 1 #if defined(__FreeBSD__) #include @@ -62,8 +62,12 @@ #elif defined(__NetBSD__) #include #include +#elif defined(__APPLE__) +#include +#include +#include #endif -#endif /* __linux__ || __FreeBSD__ || __NetBSD__ */ +#endif /* __linux__ || __FreeBSD__ || __NetBSD__ || __APPLE__ */ /* Get unix time in microseconds. */ @@ -176,6 +180,12 @@ int main(int argc, char** argv) { if (c == NULL) PFATAL("cpuset_create failed"); cpuset_set(i, c); +#elif defined(__APPLE__) + thread_affinity_policy_data_t c = { i }; + thread_port_t native_thread = pthread_mach_thread_np(pthread_self()); + if (thread_policy_set(native_thread, THREAD_AFFINITY_POLICY, + (thread_policy_t)&c, 1) != KERN_SUCCESS) + PFATAL("thread_policy_set failed"); #endif #if defined(__FreeBSD__)