aboutsummaryrefslogtreecommitdiffstats
path: root/main/gcc/musl-posix_memalign-c++.patch
blob: f3fad93aec1c322224fd53979d016da3874fc592 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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;