diff --git a/SDKs/darwin/usr/include/stdio.h b/SDKs/darwin/usr/include/stdio.h
index 7441388..c66a47f 100644
--- a/SDKs/darwin/usr/include/stdio.h
+++ b/SDKs/darwin/usr/include/stdio.h
@@ -17,6 +17,10 @@
 #ifndef __STDIO_H__
 #define __STDIO_H__
 
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
 typedef struct __sFILE FILE;
 typedef __SIZE_TYPE__ size_t;
 
@@ -63,12 +67,17 @@ extern FILE *__stderrp;
 
 int fclose(FILE *);
 int fflush(FILE *);
-FILE *fopen(const char * restrict, const char * restrict) __asm(__FOPEN_NAME);
-int fprintf(FILE * restrict, const char * restrict, ...);
-size_t fwrite(const void * restrict, size_t, size_t, FILE * restrict)
+FILE *fopen(const char * __restrict, const char * __restrict) __asm(__FOPEN_NAME);
+int fprintf(FILE * __restrict, const char * __restrict, ...);
+int	 fputc(int, FILE *);
+size_t fwrite(const void * __restrict, size_t, size_t, FILE * __restrict)
   __asm(__FWRITE_NAME);
 size_t fread(void * __restrict, size_t, size_t, FILE * __restrict);
 long ftell(FILE *);
 int fseek(FILE *, long, int);
 
+#if defined(__cplusplus)
+}
+#endif
+
 #endif /* __STDIO_H__ */
diff --git a/SDKs/darwin/usr/include/stdlib.h b/SDKs/darwin/usr/include/stdlib.h
index c18c2e4..e118b9a 100644
--- a/SDKs/darwin/usr/include/stdlib.h
+++ b/SDKs/darwin/usr/include/stdlib.h
@@ -17,6 +17,10 @@
 #ifndef __STDLIB_H__
 #define __STDLIB_H__
 
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
 #define NULL ((void *)0)
 
 typedef __SIZE_TYPE__ size_t;
@@ -27,4 +31,8 @@ void free(void *);
 char *getenv(const char *);
 void *malloc(size_t);
 
+#if defined(__cplusplus)
+}
+#endif
+
 #endif /* __STDLIB_H__ */
diff --git a/SDKs/darwin/usr/include/string.h b/SDKs/darwin/usr/include/string.h
index bee9d46..4dd2254 100644
--- a/SDKs/darwin/usr/include/string.h
+++ b/SDKs/darwin/usr/include/string.h
@@ -17,6 +17,10 @@
 #ifndef __STRING_H__
 #define __STRING_H__
 
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
 typedef __SIZE_TYPE__ size_t;
 
 int memcmp(const void *, const void *, size_t);
@@ -27,4 +31,8 @@ char *strdup(const char *);
 size_t strlen(const char *);
 char *strncpy(char *, const char *, size_t);
 
+#if defined(__cplusplus)
+}
+#endif
+
 #endif /* __STRING_H__ */
diff --git a/SDKs/darwin/usr/include/unistd.h b/SDKs/darwin/usr/include/unistd.h
new file mode 100644
index 0000000..c01c57b
--- /dev/null
+++ b/SDKs/darwin/usr/include/unistd.h
@@ -0,0 +1,34 @@
+/* ===-- unistd.h - stub SDK header for compiler-rt -------------------------===
+ *
+ *                     The LLVM Compiler Infrastructure
+ *
+ * This file is dual licensed under the MIT and the University of Illinois Open
+ * Source Licenses. See LICENSE.TXT for details.
+ *
+ * ===-----------------------------------------------------------------------===
+ *
+ * This is a stub SDK header file. This file is not part of the interface of
+ * this library nor an official version of the appropriate SDK header. It is
+ * intended only to stub the features of this header required by compiler-rt.
+ *
+ * ===-----------------------------------------------------------------------===
+ */
+
+#ifndef __UNISTD_H__
+#define __UNISTD_H__
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#define	 STDIN_FILENO	0	/* standard input file descriptor */
+#define	STDOUT_FILENO	1	/* standard output file descriptor */
+#define	STDERR_FILENO	2	/* standard error file descriptor */
+
+int	 isatty(int);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __UNISTD_H__ */
