[PATCH] D50269: [compiler-rt][builtins] Don't #include CoreFoundation in os_version_check.c

Phabricator via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 29 16:03:52 PDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL345551: [compiler-rt][builtins] Don't #include CoreFoundation in os_version_check.c (authored by epilk, committed by ).
Herald added a subscriber: delcypher.

Changed prior to commit:
  https://reviews.llvm.org/D50269?vs=159084&id=171603#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D50269

Files:
  compiler-rt/trunk/lib/builtins/os_version_check.c


Index: compiler-rt/trunk/lib/builtins/os_version_check.c
===================================================================
--- compiler-rt/trunk/lib/builtins/os_version_check.c
+++ compiler-rt/trunk/lib/builtins/os_version_check.c
@@ -15,7 +15,6 @@
 
 #ifdef __APPLE__
 
-#include <CoreFoundation/CoreFoundation.h>
 #include <TargetConditionals.h>
 #include <dispatch/dispatch.h>
 #include <dlfcn.h>
@@ -28,6 +27,33 @@
 static int32_t GlobalMajor, GlobalMinor, GlobalSubminor;
 static dispatch_once_t DispatchOnceCounter;
 
+/* We can't include <CoreFoundation/CoreFoundation.h> directly from here, so
+ * just forward declare everything that we need from it. */
+
+typedef const void *CFDataRef, *CFAllocatorRef, *CFPropertyListRef,
+                   *CFStringRef, *CFDictionaryRef, *CFTypeRef, *CFErrorRef;
+
+#if __LLP64__
+typedef unsigned long long CFTypeID;
+typedef unsigned long long CFOptionFlags;
+typedef signed long long CFIndex;
+#else
+typedef unsigned long CFTypeID;
+typedef unsigned long CFOptionFlags;
+typedef signed long CFIndex;
+#endif
+
+typedef unsigned char UInt8;
+typedef _Bool Boolean;
+typedef CFIndex CFPropertyListFormat;
+typedef uint32_t CFStringEncoding;
+
+/* kCFStringEncodingASCII analog. */
+#define CF_STRING_ENCODING_ASCII 0x0600
+/* kCFStringEncodingUTF8 analog. */
+#define CF_STRING_ENCODING_UTF8 0x08000100
+#define CF_PROPERTY_LIST_IMMUTABLE 0
+
 typedef CFDataRef (*CFDataCreateWithBytesNoCopyFuncTy)(CFAllocatorRef,
                                                        const UInt8 *, CFIndex,
                                                        CFAllocatorRef);
@@ -55,8 +81,7 @@
   const void *NullAllocator = dlsym(RTLD_DEFAULT, "kCFAllocatorNull");
   if (!NullAllocator)
     return;
-  const CFAllocatorRef kCFAllocatorNull =
-      *(const CFAllocatorRef *)NullAllocator;
+  const CFAllocatorRef AllocatorNull = *(const CFAllocatorRef *)NullAllocator;
   CFDataCreateWithBytesNoCopyFuncTy CFDataCreateWithBytesNoCopyFunc =
       (CFDataCreateWithBytesNoCopyFuncTy)dlsym(RTLD_DEFAULT,
                                                "CFDataCreateWithBytesNoCopy");
@@ -140,21 +165,21 @@
   /* Get the file buffer into CF's format. We pass in a null allocator here *
    * because we free PListBuf ourselves */
   FileContentsRef = (*CFDataCreateWithBytesNoCopyFunc)(
-      NULL, PListBuf, (CFIndex)NumRead, kCFAllocatorNull);
+      NULL, PListBuf, (CFIndex)NumRead, AllocatorNull);
   if (!FileContentsRef)
     goto Fail;
 
   if (CFPropertyListCreateWithDataFunc)
     PListRef = (*CFPropertyListCreateWithDataFunc)(
-        NULL, FileContentsRef, kCFPropertyListImmutable, NULL, NULL);
+        NULL, FileContentsRef, CF_PROPERTY_LIST_IMMUTABLE, NULL, NULL);
   else
     PListRef = (*CFPropertyListCreateFromXMLDataFunc)(
-        NULL, FileContentsRef, kCFPropertyListImmutable, NULL);
+        NULL, FileContentsRef, CF_PROPERTY_LIST_IMMUTABLE, NULL);
   if (!PListRef)
     goto Fail;
 
   CFStringRef ProductVersion = (*CFStringCreateWithCStringNoCopyFunc)(
-      NULL, "ProductVersion", kCFStringEncodingASCII, kCFAllocatorNull);
+      NULL, "ProductVersion", CF_STRING_ENCODING_ASCII, AllocatorNull);
   if (!ProductVersion)
     goto Fail;
   CFTypeRef OpaqueValue = (*CFDictionaryGetValueFunc)(PListRef, ProductVersion);
@@ -165,7 +190,7 @@
 
   char VersionStr[32];
   if (!(*CFStringGetCStringFunc)((CFStringRef)OpaqueValue, VersionStr,
-                                 sizeof(VersionStr), kCFStringEncodingUTF8))
+                                 sizeof(VersionStr), CF_STRING_ENCODING_UTF8))
     goto Fail;
   sscanf(VersionStr, "%d.%d.%d", &GlobalMajor, &GlobalMinor, &GlobalSubminor);
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50269.171603.patch
Type: text/x-patch
Size: 3676 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20181029/d96aac48/attachment-0001.bin>


More information about the cfe-commits mailing list