From d4308c8a9b57881310b59170c4ab5bcf934c829b Mon Sep 17 00:00:00 2001
From: Tibor Nagy <xnagytibor@gmail.com>
Date: Sun, 28 Oct 2018 13:24:34 +0100
Subject: [PATCH] Disable symbol mangling for C++

---
 include/bits/errno.h  | 8 ++++++++
 include/bits/fcntl.h  | 8 ++++++++
 include/bits/stdio.h  | 8 ++++++++
 include/bits/unistd.h | 8 ++++++++
 include/getopt.h      | 8 ++++++++
 include/malloc.h      | 8 ++++++++
 include/setjmp.h      | 8 ++++++++
 7 files changed, 56 insertions(+)

diff --git a/include/bits/errno.h b/include/bits/errno.h
index 1ade524d..c8594c12 100644
--- a/include/bits/errno.h
+++ b/include/bits/errno.h
@@ -1,7 +1,15 @@
 #ifndef _BITS_ERRNO_H
 #define _BITS_ERRNO_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 //TODO extern __thread int errno;
 extern int errno;
 
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
 #endif /* _BITS_ERRNO_H */
diff --git a/include/bits/fcntl.h b/include/bits/fcntl.h
index fff8987b..37764477 100644
--- a/include/bits/fcntl.h
+++ b/include/bits/fcntl.h
@@ -1,7 +1,15 @@
 #ifndef _BITS_FCNTL_H
 #define _BITS_FCNTL_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 int open(const char* filename, int flags, ...);
 int fcntl(int fildes, int cmd, ...);
 
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
 #endif
diff --git a/include/bits/stdio.h b/include/bits/stdio.h
index 9d4a595d..0af8e6ac 100644
--- a/include/bits/stdio.h
+++ b/include/bits/stdio.h
@@ -5,6 +5,10 @@
 
 typedef struct FILE FILE;
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 int fprintf(FILE * stream, const char * fmt, ...);
 int printf(const char * fmt, ...);
 int snprintf(char *s, size_t n, const char * fmt, ...);
@@ -13,4 +17,8 @@ int fscanf(FILE * stream, const char * fmt, ...);
 int scanf(const char * fmt, ...);
 int sscanf(const char * input, const char * fmt, ...);
 
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
 #endif /* _BITS_STDIO_H */
diff --git a/include/bits/unistd.h b/include/bits/unistd.h
index e37f3d2a..da27ac6f 100644
--- a/include/bits/unistd.h
+++ b/include/bits/unistd.h
@@ -3,7 +3,15 @@
 
 #define _POSIX_VERSION 200809L
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 int execl(const char *path, const char* argv0, ...);
 int execle(const char *path, const char* argv0, ...);
 
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
 #endif
diff --git a/include/getopt.h b/include/getopt.h
index 32575f15..3db90d70 100644
--- a/include/getopt.h
+++ b/include/getopt.h
@@ -4,10 +4,18 @@
 // Generated from:
 // `grep "opt" target/include/unistd.h`
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 extern char* optarg;
 extern int opterr;
 extern int optind;
 extern int optopt;
 int getopt(int argc, char *const *argv, const char *optstring);
 
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
 #endif
diff --git a/include/malloc.h b/include/malloc.h
index d7c21bad..98264954 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -6,6 +6,10 @@
 // Generated from:
 // `grep "malloc\|calloc\|realloc\|free\|valloc\|memalign" target/include/stdlib.h`
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void *calloc(size_t nelem, size_t elsize);
 void free(void *ptr);
 void *malloc(size_t size);
@@ -13,4 +17,8 @@ void *memalign(size_t alignment, size_t size);
 void *realloc(void *ptr, size_t size);
 void *valloc(size_t size);
 
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
 #endif
diff --git a/include/setjmp.h b/include/setjmp.h
index 837b21ba..2971781c 100644
--- a/include/setjmp.h
+++ b/include/setjmp.h
@@ -61,7 +61,15 @@ typedef unsigned long long jmp_buf[8];
 typedef unsigned long jmp_buf[8];
 #endif
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 int setjmp(jmp_buf buf);
 void longjmp(jmp_buf buf, int value);
 
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
 #endif /* _SETJMP_H */
-- 
GitLab