buildgcc: Add patch to work around Musl libc issue
GCC includes `sched.h` after poisoning calloc(). This results in a build failure with Musl libc. We work around the issue by including `sched.h` earlier and throw around some void pointers so we only have to do it in one place. Change-Id: I1d5462eb9a448147a95dd4ec50361b3f5a28910c Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/22786 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
This commit is contained in:
parent
afda56e1ad
commit
76a4f71e89
118
util/crossgcc/patches/gcc-6.3.0_ada-musl_workaround.patch
Normal file
118
util/crossgcc/patches/gcc-6.3.0_ada-musl_workaround.patch
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
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 <sched.h>
|
||||||
|
+#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 <sched.h>
|
||||||
|
-
|
||||||
|
-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)
|
Loading…
x
Reference in New Issue
Block a user