[compiler-rt] r203470 - A fix for platform-dependent types in sanitizers' profiling support lib on x64 FreeBSD in 32-bit mode

Viktor Kutuzov vkutuzov at accesssoftek.com
Mon Mar 10 09:50:53 PDT 2014


Author: vkutuzov
Date: Mon Mar 10 11:50:53 2014
New Revision: 203470

URL: http://llvm.org/viewvc/llvm-project?rev=203470&view=rev
Log:
A fix for platform-dependent types in sanitizers' profiling support lib on x64 FreeBSD in 32-bit mode

Modified:
    compiler-rt/trunk/lib/profile/GCDAProfiling.c
    compiler-rt/trunk/lib/profile/PGOProfiling.c

Modified: compiler-rt/trunk/lib/profile/GCDAProfiling.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/GCDAProfiling.c?rev=203470&r1=203469&r2=203470&view=diff
==============================================================================
--- compiler-rt/trunk/lib/profile/GCDAProfiling.c (original)
+++ compiler-rt/trunk/lib/profile/GCDAProfiling.c Mon Mar 10 11:50:53 2014
@@ -25,18 +25,33 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <sys/stat.h>
 #include <sys/mman.h>
-#include <sys/types.h>
 #ifdef _WIN32
 #include <direct.h>
 #endif
 
-#ifndef _MSC_VER
+#define I386_FREEBSD (defined(__FreeBSD__) && defined(__i386__))
+
+#if !I386_FREEBSD
+#include <sys/stat.h>
+#include <sys/types.h>
+#endif
+
+#if !defined(_MSC_VER) && !I386_FREEBSD
 #include <stdint.h>
-#else
+#endif
+
+#if defined(_MSC_VER)
 typedef unsigned int uint32_t;
 typedef unsigned int uint64_t;
+#elif I386_FREEBSD
+/* System headers define 'size_t' incorrectly on x64 FreeBSD (prior to
+ * FreeBSD 10, r232261) when compiled in 32-bit mode.
+ */
+typedef unsigned char uint8_t;
+typedef unsigned int uint32_t;
+typedef unsigned long long uint64_t;
+int mkdir(const char*, unsigned short);
 #endif
 
 /* #define DEBUG_GCDAPROFILING */

Modified: compiler-rt/trunk/lib/profile/PGOProfiling.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/PGOProfiling.c?rev=203470&r1=203469&r2=203470&view=diff
==============================================================================
--- compiler-rt/trunk/lib/profile/PGOProfiling.c (original)
+++ compiler-rt/trunk/lib/profile/PGOProfiling.c Mon Mar 10 11:50:53 2014
@@ -7,15 +7,29 @@
 |*
 \*===----------------------------------------------------------------------===*/
 
-#include <inttypes.h>
 #include <stdio.h>
 #include <stdlib.h>
 
-#ifndef _MSC_VER
+#define I386_FREEBSD (defined(__FreeBSD__) && defined(__i386__))
+
+#if !I386_FREEBSD
+#include <inttypes.h>
+#endif
+
+#if !defined(_MSC_VER) && !I386_FREEBSD
 #include <stdint.h>
-#else
+#endif
+
+#if defined(_MSC_VER)
 typedef unsigned int uint32_t;
 typedef unsigned int uint64_t;
+#elif I386_FREEBSD
+/* System headers define 'size_t' incorrectly on x64 FreeBSD (prior to
+ * FreeBSD 10, r232261) when compiled in 32-bit mode.
+ */
+#define PRIu64 "llu"
+typedef unsigned int uint32_t;
+typedef unsigned long long uint64_t;
 #endif
 
 static FILE *OutputFile = NULL;





More information about the llvm-commits mailing list