base: Fix fiber compilation issue for Mac OS
authorNikos Nikoleris <nikos.nikoleris@arm.com>
Sat, 1 Dec 2018 14:52:23 +0000 (14:52 +0000)
committerNikos Nikoleris <nikos.nikoleris@arm.com>
Tue, 4 Dec 2018 10:03:30 +0000 (10:03 +0000)
Mac OS has deprecated the use of ucontext and at the moment we are
using a workaround to enable it. A side-effect is that the code is
marked as _POSIX_C_SOURCE and consequently <sys/mman.h> requires the
code to be also marked as _DARWIN_C_SOURCE to include the definition
of MAP_ANONYMOUS.

Change-Id: I65550d11a0a21cd36d832a7de6320e7e3f332a9d
Signed-off-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/14817
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/base/fiber.cc

index af63216da207678a0abfebda46028b056785a8e4..177459aaae24341bb70255e9d14a84386f2605d7 100644 (file)
 #include <valgrind/valgrind.h>
 #endif
 
+// Mac OS requires _DARWIN_C_SOURCE if _POSIX_C_SOURCE is defined,
+// otherwise it will mask the definition of MAP_ANONYMOUS.
+// _POSIX_C_SOURCE is already defined by including <ucontext.h> in
+// base/fiber.hh
+#if defined(__APPLE__) && defined(__MACH__)
+#define _DARWIN_C_SOURCE
+#endif
+
 #include <sys/mman.h>
 #include <unistd.h>