diff -urp gcc-6.3.0.bak/gcc/ada/adaint.c gcc-6.3.0/gcc/ada/adaint.c --- gcc-6.3.0.bak/gcc/ada/adaint.c 2017-12-08 20:39:08.024709803 +0000 +++ gcc-6.3.0/gcc/ada/adaint.c 2017-12-08 20:06:13.674636566 +0000 @@ -103,6 +103,15 @@ #define xmalloc(S) malloc (S) #define xrealloc(V,S) realloc (V,S) #else +#if !defined(__ANDROID__) && defined(__linux__) +#ifdef __cplusplus +extern "C" { +#endif +#include +#ifdef __cplusplus +} +#endif +#endif #include "config.h" #include "system.h" #include "version.h" @@ -3096,7 +3105,7 @@ __gnat_lwp_self (void) /* Dynamic cpu sets */ -cpu_set_t * +void * __gnat_cpu_alloc (size_t count) { return CPU_ALLOC (count); @@ -3109,33 +3118,33 @@ __gnat_cpu_alloc_size (size_t count) } void -__gnat_cpu_free (cpu_set_t *set) +__gnat_cpu_free (void *set) { - CPU_FREE (set); + CPU_FREE ((cpu_set_t *)set); } void -__gnat_cpu_zero (size_t count, cpu_set_t *set) +__gnat_cpu_zero (size_t count, void *set) { CPU_ZERO_S (count, set); } void -__gnat_cpu_set (int cpu, size_t count, cpu_set_t *set) +__gnat_cpu_set (int cpu, size_t count, void *set) { /* Ada handles CPU numbers starting from 1, while C identifies the first CPU by a 0, so we need to adjust. */ - CPU_SET_S (cpu - 1, count, set); + CPU_SET_S (cpu - 1, count, (cpu_set_t *)set); } #else /* !CPU_ALLOC */ /* Static cpu sets */ -cpu_set_t * +void * __gnat_cpu_alloc (size_t count ATTRIBUTE_UNUSED) { - return (cpu_set_t *) xmalloc (sizeof (cpu_set_t)); + return xmalloc (sizeof (cpu_set_t)); } size_t @@ -3145,23 +3154,23 @@ __gnat_cpu_alloc_size (size_t count ATTR } void -__gnat_cpu_free (cpu_set_t *set) +__gnat_cpu_free (void *set) { free (set); } void -__gnat_cpu_zero (size_t count ATTRIBUTE_UNUSED, cpu_set_t *set) +__gnat_cpu_zero (size_t count ATTRIBUTE_UNUSED, void *set) { CPU_ZERO (set); } void -__gnat_cpu_set (int cpu, size_t count ATTRIBUTE_UNUSED, cpu_set_t *set) +__gnat_cpu_set (int cpu, size_t count ATTRIBUTE_UNUSED, void *set) { /* Ada handles CPU numbers starting from 1, while C identifies the first CPU by a 0, so we need to adjust. */ - CPU_SET (cpu - 1, set); + CPU_SET (cpu - 1, (cpu_set_t *)set); } #endif /* !CPU_ALLOC */ #endif /* __linux__ */ diff -urp gcc-6.3.0.bak/gcc/ada/adaint.h gcc-6.3.0/gcc/ada/adaint.h --- gcc-6.3.0.bak/gcc/ada/adaint.h 2017-12-08 20:39:08.024709803 +0000 +++ gcc-6.3.0/gcc/ada/adaint.h 2017-12-08 19:52:31.627939406 +0000 @@ -287,13 +287,11 @@ extern void *__gnat_lwp_self (voi /* Routines for interface to required CPU set primitives */ -#include - -extern cpu_set_t *__gnat_cpu_alloc (size_t); +extern void *__gnat_cpu_alloc (size_t); extern size_t __gnat_cpu_alloc_size (size_t); -extern void __gnat_cpu_free (cpu_set_t *); -extern void __gnat_cpu_zero (size_t, cpu_set_t *); -extern void __gnat_cpu_set (int, size_t, cpu_set_t *); +extern void __gnat_cpu_free (void *); +extern void __gnat_cpu_zero (size_t, void *); +extern void __gnat_cpu_set (int, size_t, void *); #endif #if defined (_WIN32)