summaryrefslogtreecommitdiffstats
path: root/main/gcc/musl-posix_memalign-c++.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/gcc/musl-posix_memalign-c++.patch')
-rw-r--r--main/gcc/musl-posix_memalign-c++.patch27
1 files changed, 27 insertions, 0 deletions
diff --git a/main/gcc/musl-posix_memalign-c++.patch b/main/gcc/musl-posix_memalign-c++.patch
new file mode 100644
index 000000000..15375651e
--- /dev/null
+++ b/main/gcc/musl-posix_memalign-c++.patch
@@ -0,0 +1,27 @@
+Fix conflicting prototype of posix_memalign for c++
+http://www.openwall.com/lists/musl/2013/11/10/1
+
+--- ./gcc/config/i386/pmm_malloc.h.orig
++++ ./gcc/config/i386/pmm_malloc.h
+@@ -28,11 +28,7 @@
+
+ /* We can't depend on <stdlib.h> since the prototype of posix_memalign
+ may not be visible. */
+-#ifndef __cplusplus
+-extern int posix_memalign (void **, size_t, size_t);
+-#else
+-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
+-#endif
++extern int __gcc_posix_memalign (void **, size_t, size_t) asm("posix_memalign");
+
+ static __inline void *
+ _mm_malloc (size_t size, size_t alignment)
+@@ -42,7 +38,7 @@
+ return malloc (size);
+ if (alignment == 2 || (sizeof (void *) == 8 && alignment == 4))
+ alignment = sizeof (void *);
+- if (posix_memalign (&ptr, alignment, size) == 0)
++ if (__gcc_posix_memalign (&ptr, alignment, size) == 0)
+ return ptr;
+ else
+ return NULL;