diff options
Diffstat (limited to 'recipes-extended/xen/files/0001-firmware-provide-a-stand-alone-set-of-headers-Xen-4.14.patch')
-rw-r--r-- | recipes-extended/xen/files/0001-firmware-provide-a-stand-alone-set-of-headers-Xen-4.14.patch | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/recipes-extended/xen/files/0001-firmware-provide-a-stand-alone-set-of-headers-Xen-4.14.patch b/recipes-extended/xen/files/0001-firmware-provide-a-stand-alone-set-of-headers-Xen-4.14.patch deleted file mode 100644 index 7b062b7b..00000000 --- a/recipes-extended/xen/files/0001-firmware-provide-a-stand-alone-set-of-headers-Xen-4.14.patch +++ /dev/null @@ -1,178 +0,0 @@ -From 73b13705af7c3bb8fdf11932eb68788d090a443f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com> -Date: Thu, 4 Mar 2021 16:49:00 +0100 -Subject: [PATCH] firmware: provide a stand alone set of headers -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The current build of the firmware relies on having 32bit compatible -headers installed in order to build some of the 32bit firmware. -Usually this can be solved by using the -ffreestanding compiler option -which drops the usage of the system headers in favor of a private set -of freestanding headers provided by the compiler itself that are not -tied to libc. - -However such option is broken at least in the gcc compiler provided in -Alpine Linux, as the system include path (ie: /usr/include) takes -precedence over the gcc private include path: - -#include <...> search starts here: - /usr/include - /usr/lib/gcc/x86_64-alpine-linux-musl/10.2.1/include - -And the headers in /usr/include are exclusively 64bit. - -Since -ffreestanding is currently broken on at least that distro, and -for resilience against future compilers also having the option broken -provide a set of stand alone 32bit headers required for the firmware -build. - -Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> -Reviewed-by: Jan Beulich <jbeulich@suse.com> -Release-Acked-by: Ian Jackson <iwj@xenproject.org> -Applied to Xen 4.14 by: Christopher Clark <christopher.w.clark@gmail.com> ---- - tools/firmware/Rules.mk | 13 +++++++ - tools/firmware/include/stdarg.h | 10 +++++ - tools/firmware/include/stdbool.h | 9 +++++ - tools/firmware/include/stddef.h | 10 +++++ - tools/firmware/include/stdint.h | 39 +++++++++++++++++++ - tools/firmware/rombios/32bit/rombios_compat.h | 4 +- - 6 files changed, 82 insertions(+), 3 deletions(-) - create mode 100644 tools/firmware/include/stdarg.h - create mode 100644 tools/firmware/include/stdbool.h - create mode 100644 tools/firmware/include/stddef.h - create mode 100644 tools/firmware/include/stdint.h - -diff --git a/tools/firmware/include/stdarg.h b/tools/firmware/include/stdarg.h -new file mode 100644 -index 0000000000..c5e3761cd2 ---- /dev/null -+++ b/tools/firmware/include/stdarg.h -@@ -0,0 +1,10 @@ -+#ifndef _STDARG_H_ -+#define _STDARG_H_ -+ -+typedef __builtin_va_list va_list; -+#define va_copy(dest, src) __builtin_va_copy(dest, src) -+#define va_start(ap, last) __builtin_va_start(ap, last) -+#define va_end(ap) __builtin_va_end(ap) -+#define va_arg __builtin_va_arg -+ -+#endif -diff --git a/tools/firmware/include/stdbool.h b/tools/firmware/include/stdbool.h -new file mode 100644 -index 0000000000..0cf76b106c ---- /dev/null -+++ b/tools/firmware/include/stdbool.h -@@ -0,0 +1,9 @@ -+#ifndef _STDBOOL_H_ -+#define _STDBOOL_H_ -+ -+#define bool _Bool -+#define true 1 -+#define false 0 -+#define __bool_true_false_are_defined 1 -+ -+#endif -diff --git a/tools/firmware/include/stddef.h b/tools/firmware/include/stddef.h -new file mode 100644 -index 0000000000..c7f974608a ---- /dev/null -+++ b/tools/firmware/include/stddef.h -@@ -0,0 +1,10 @@ -+#ifndef _STDDEF_H_ -+#define _STDDEF_H_ -+ -+typedef __SIZE_TYPE__ size_t; -+ -+#define NULL ((void*)0) -+ -+#define offsetof(t, m) __builtin_offsetof(t, m) -+ -+#endif -diff --git a/tools/firmware/include/stdint.h b/tools/firmware/include/stdint.h -new file mode 100644 -index 0000000000..16a0b6de19 ---- /dev/null -+++ b/tools/firmware/include/stdint.h -@@ -0,0 +1,39 @@ -+#ifndef _STDINT_H_ -+#define _STDINT_H_ -+ -+#if defined(__LP64__) || defined(__P64__) -+#error "32bit only header" -+#endif -+ -+typedef unsigned char uint8_t; -+typedef signed char int8_t; -+ -+typedef unsigned short uint16_t; -+typedef signed short int16_t; -+ -+typedef unsigned int uint32_t; -+typedef signed int int32_t; -+ -+typedef unsigned long long uint64_t; -+typedef signed long long int64_t; -+ -+#define INT8_MIN (-0x7f-1) -+#define INT16_MIN (-0x7fff-1) -+#define INT32_MIN (-0x7fffffff-1) -+#define INT64_MIN (-0x7fffffffffffffffll-1) -+ -+#define INT8_MAX 0x7f -+#define INT16_MAX 0x7fff -+#define INT32_MAX 0x7fffffff -+#define INT64_MAX 0x7fffffffffffffffll -+ -+#define UINT8_MAX 0xff -+#define UINT16_MAX 0xffff -+#define UINT32_MAX 0xffffffffu -+#define UINT64_MAX 0xffffffffffffffffull -+ -+typedef uint32_t uintptr_t; -+ -+#define UINTPTR_MAX UINT32_MAX -+ -+#endif -diff --git a/tools/firmware/rombios/32bit/rombios_compat.h b/tools/firmware/rombios/32bit/rombios_compat.h -index 3fe7d67721..8ba4c17ffd 100644 ---- a/tools/firmware/rombios/32bit/rombios_compat.h -+++ b/tools/firmware/rombios/32bit/rombios_compat.h -@@ -8,9 +8,7 @@ - - #define ADDR_FROM_SEG_OFF(seg, off) (void *)((((uint32_t)(seg)) << 4) + (off)) - --typedef unsigned char uint8_t; --typedef unsigned short int uint16_t; --typedef unsigned int uint32_t; -+#include <stdint.h> - - typedef uint8_t Bit8u; - typedef uint16_t Bit16u; -diff --git a/tools/firmware/Rules.mk b/tools/firmware/Rules.mk -index 26bbddccd4..cb388b7011 100644 ---- a/tools/firmware/Rules.mk -+++ b/tools/firmware/Rules.mk -@@ -17,3 +17,16 @@ $(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS)) - - # Extra CFLAGS suitable for an embedded type of environment. - CFLAGS += -fno-builtin -msoft-float -+ -+# Use our own set of stand alone headers to build firmware. -+# -+# Ideally using -ffreestanding should be enough, but that relies on the -+# compiler having the right order for include paths (ie: compiler private -+# headers before system ones) or the libc headers having proper arch-agnostic -+# freestanding support. This is not the case in Alpine at least which searches -+# system headers before compiler ones and has arch-specific libc headers. This -+# has been reported upstream: -+# https://gitlab.alpinelinux.org/alpine/aports/-/issues/12477 -+# In the meantime (and for resilience against broken systems) use our own set -+# of headers that provide what's needed for the firmware build. -+CFLAGS += -nostdinc -I$(XEN_ROOT)/tools/firmware/include --- -2.25.1 - |