-
-
Notifications
You must be signed in to change notification settings - Fork 13
/
macosx_10_9.patch
74 lines (68 loc) · 2.21 KB
/
macosx_10_9.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
From eaa09b0ac70d1ebba29c4650cb5e5c14b9049499 Mon Sep 17 00:00:00 2001
From: Nehal J Wani <nehaljw.kkd1@gmail.com>
Date: Tue, 16 Oct 2018 21:23:44 -0500
Subject: [PATCH 3/3] compiler-rt: Make 7.0.0 compatible with 10.9 SDK
---
lib/xray/xray_buffer_queue.h | 7 +++++++
lib/xray/xray_utils.h | 30 ++++++++++++++++++++++++++++++
2 files changed, 37 insertions(+)
diff --git a/lib/xray/xray_buffer_queue.h b/lib/xray/xray_buffer_queue.h
index e76fa79..e20a69a 100644
--- a/lib/xray/xray_buffer_queue.h
+++ b/lib/xray/xray_buffer_queue.h
@@ -20,6 +20,13 @@
#include "sanitizer_common/sanitizer_mutex.h"
#include <cstddef>
+#include <sys/mman.h>
+/* MAP_ANONYMOUS is MAP_ANON on some systems,
+ e.g. OS X (before Sierra), OpenBSD etc */
+#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
namespace __xray {
/// BufferQueue implements a circular queue of fixed sized buffers (much like a
diff --git a/lib/xray/xray_utils.h b/lib/xray/xray_utils.h
index eafa16e..a8dad83 100644
--- a/lib/xray/xray_utils.h
+++ b/lib/xray/xray_utils.h
@@ -20,6 +20,39 @@
#include <sys/types.h>
#include <utility>
+#if defined __APPLE__
+#include <time.h>
+#include <mach/clock.h>
+#include <mach/mach.h>
+
+#if defined __APPLE__ && __x86_64__ && __MAC_OS_X_VERSION_MIN_REQUIRED < 101200 // less than macOS 10.12
+ #define clock_gettime alt_clock_gettime
+#endif
+#if defined __APPLE__ && __MAC_OS_X_VERSION_MAX_ALLOWED < 101200
+ #define CLOCK_REALTIME CALENDAR_CLOCK
+ #define CLOCK_MONOTONIC SYSTEM_CLOCK
+ typedef int clockid_t;
+#endif
+
+int alt_clock_gettime(clockid_t clock_id, timespec *ts) {
+ clock_serv_t cclock;
+ mach_timespec_t mts;
+ host_get_clock_service(mach_host_self(), clock_id, &cclock);
+ clock_get_time(cclock, &mts);
+ mach_port_deallocate(mach_task_self(), cclock);
+ ts->tv_sec = mts.tv_sec;
+ ts->tv_nsec = mts.tv_nsec;
+ return 0;
+}
+#include <sys/mman.h>
+/* MAP_ANONYMOUS is MAP_ANON on some systems,
+ e.g. OS X (before Sierra), OpenBSD etc */
+#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
+#endif
+
namespace __xray {
// Default implementation of the reporting interface for sanitizer errors.
--
2.5.4 (Apple Git-61)