mirror of
git://git.yoctoproject.org/meta-virtualization.git
synced 2025-07-19 20:59:41 +02:00
xen/4.16: fix gcc 12 build
There's no fix in the xen repository to fix gcc 12 issues yet, but there is one in the opensuse infrastructure. We import that change from: https://build.opensuse.org/package/view_file/openSUSE:Factory/xen/gcc12-fixes.patch?expand=1 to at least get things building and allow runtime testing against gcc 12. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
This commit is contained in:
parent
d7a2d1b7ab
commit
bd66956ceb
433
recipes-extended/xen/files/xen-fix-gcc12-build-issues.patch
Normal file
433
recipes-extended/xen/files/xen-fix-gcc12-build-issues.patch
Normal file
|
@ -0,0 +1,433 @@
|
|||
References: bsc#1196545
|
||||
|
||||
Compiling against gcc12.
|
||||
|
||||
Many of the failures are -Werror=array-bounds where macros
|
||||
from mm.h are being used. Common Examples are,
|
||||
include/asm/mm.h:528:61: error: array subscript 0 is outside array bounds of 'long unsigned int[0]' [-Werror=array-bounds]
|
||||
include/xen/mm.h:287:21: error: array subscript [0, 288230376151711743] is outside array bounds of 'struct page_info[0]' [-Werror=array-bounds]
|
||||
|
||||
There are also several other headers that generate array-bounds macro failures.
|
||||
The pragmas to override are mostly in '.c' files with the exception of,
|
||||
xen/arch/x86/mm/shadow/private.h
|
||||
xen/include/asm-x86/paging.h
|
||||
|
||||
[Upstream-Status: imported from: https://build.opensuse.org/package/view_file/openSUSE:Factory/xen/gcc12-fixes.patch?expand=1]
|
||||
|
||||
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
|
||||
|
||||
|
||||
Index: xen-4.16.1-testing/xen/drivers/passthrough/amd/iommu_intr.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/drivers/passthrough/amd/iommu_intr.c
|
||||
+++ xen-4.16.1-testing/xen/drivers/passthrough/amd/iommu_intr.c
|
||||
@@ -23,6 +23,10 @@
|
||||
|
||||
#include "iommu.h"
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
union irte32 {
|
||||
uint32_t raw;
|
||||
struct {
|
||||
Index: xen-4.16.1-testing/xen/drivers/passthrough/x86/hvm.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/drivers/passthrough/x86/hvm.c
|
||||
+++ xen-4.16.1-testing/xen/drivers/passthrough/x86/hvm.c
|
||||
@@ -901,6 +901,9 @@ static void __hvm_dpci_eoi(struct domain
|
||||
hvm_pirq_eoi(pirq);
|
||||
}
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Waddress"
|
||||
+#endif
|
||||
static void hvm_gsi_eoi(struct domain *d, unsigned int gsi)
|
||||
{
|
||||
struct pirq *pirq = pirq_info(d, gsi);
|
||||
Index: xen-4.16.1-testing/xen/common/domctl.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/common/domctl.c
|
||||
+++ xen-4.16.1-testing/xen/common/domctl.c
|
||||
@@ -32,6 +32,10 @@
|
||||
#include <public/domctl.h>
|
||||
#include <xsm/xsm.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
static DEFINE_SPINLOCK(domctl_lock);
|
||||
|
||||
static int nodemask_to_xenctl_bitmap(struct xenctl_bitmap *xenctl_nodemap,
|
||||
Index: xen-4.16.1-testing/xen/common/efi/boot.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/common/efi/boot.c
|
||||
+++ xen-4.16.1-testing/xen/common/efi/boot.c
|
||||
@@ -31,6 +31,10 @@
|
||||
#undef __ASSEMBLY__
|
||||
#endif
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
#define EFI_REVISION(major, minor) (((major) << 16) | (minor))
|
||||
|
||||
#define SMBIOS3_TABLE_GUID \
|
||||
Index: xen-4.16.1-testing/xen/common/xmalloc_tlsf.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/common/xmalloc_tlsf.c
|
||||
+++ xen-4.16.1-testing/xen/common/xmalloc_tlsf.c
|
||||
@@ -28,6 +28,10 @@
|
||||
#include <xen/pfn.h>
|
||||
#include <asm/time.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
#define MAX_POOL_NAME_LEN 16
|
||||
|
||||
/* Some IMPORTANT TLSF parameters */
|
||||
Index: xen-4.16.1-testing/xen/common/memory.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/common/memory.c
|
||||
+++ xen-4.16.1-testing/xen/common/memory.c
|
||||
@@ -35,6 +35,10 @@
|
||||
#include <asm/guest.h>
|
||||
#endif
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
struct memop_args {
|
||||
/* INPUT */
|
||||
struct domain *domain; /* Domain to be affected. */
|
||||
Index: xen-4.16.1-testing/xen/common/page_alloc.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/common/page_alloc.c
|
||||
+++ xen-4.16.1-testing/xen/common/page_alloc.c
|
||||
@@ -155,6 +155,10 @@
|
||||
#define PGC_reserved 0
|
||||
#endif
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* Comma-separated list of hexadecimal page numbers containing bad bytes.
|
||||
* e.g. 'badpage=0x3f45,0x8a321'.
|
||||
@@ -1529,6 +1533,7 @@ static void free_heap_pages(
|
||||
}
|
||||
|
||||
|
||||
+
|
||||
/*
|
||||
* Following rules applied for page offline:
|
||||
* Once a page is broken, it can't be assigned anymore
|
||||
Index: xen-4.16.1-testing/xen/common/vmap.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/common/vmap.c
|
||||
+++ xen-4.16.1-testing/xen/common/vmap.c
|
||||
@@ -9,6 +9,10 @@
|
||||
#include <xen/vmap.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
static DEFINE_SPINLOCK(vm_lock);
|
||||
static void *__read_mostly vm_base[VMAP_REGION_NR];
|
||||
#define vm_bitmap(x) ((unsigned long *)vm_base[x])
|
||||
Index: xen-4.16.1-testing/xen/include/asm-x86/paging.h
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/include/asm-x86/paging.h
|
||||
+++ xen-4.16.1-testing/xen/include/asm-x86/paging.h
|
||||
@@ -32,6 +32,10 @@
|
||||
#include <asm/flushtlb.h>
|
||||
#include <asm/domain.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
/*****************************************************************************
|
||||
* Macros to tell which paging mode a domain is in */
|
||||
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/x86_64/traps.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/x86_64/traps.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/x86_64/traps.c
|
||||
@@ -25,6 +25,9 @@
|
||||
#include <asm/hvm/hvm.h>
|
||||
#include <asm/hvm/support.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
|
||||
static void print_xen_info(void)
|
||||
{
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/cpu/mcheck/mcaction.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/cpu/mcheck/mcaction.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/cpu/mcheck/mcaction.c
|
||||
@@ -4,6 +4,10 @@
|
||||
#include "vmce.h"
|
||||
#include "mce.h"
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
static struct mcinfo_recovery *
|
||||
mci_action_add_pageoffline(int bank, struct mc_info *mi,
|
||||
mfn_t mfn, uint32_t status)
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/cpu/mcheck/mce.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/cpu/mcheck/mce.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/cpu/mcheck/mce.c
|
||||
@@ -30,6 +30,10 @@
|
||||
#include "util.h"
|
||||
#include "vmce.h"
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
bool __read_mostly opt_mce = true;
|
||||
boolean_param("mce", opt_mce);
|
||||
bool __read_mostly mce_broadcast;
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/hvm/hvm.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/hvm/hvm.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/hvm/hvm.c
|
||||
@@ -81,6 +81,10 @@
|
||||
|
||||
#include <compat/hvm/hvm_op.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
bool_t __read_mostly hvm_enabled;
|
||||
|
||||
#ifdef DBG_LEVEL_0
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/pv/dom0_build.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/pv/dom0_build.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/pv/dom0_build.c
|
||||
@@ -22,6 +22,10 @@
|
||||
#include <asm/pv/mm.h>
|
||||
#include <asm/setup.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
/* Allow ring-3 access in long mode as guest cannot use ring 1 ... */
|
||||
#define BASE_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_USER)
|
||||
#define L1_PROT (BASE_PROT|_PAGE_GUEST_KERNEL)
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/pv/ro-page-fault.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/pv/ro-page-fault.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/pv/ro-page-fault.c
|
||||
@@ -26,6 +26,10 @@
|
||||
#include "emulate.h"
|
||||
#include "mm.h"
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
/*********************
|
||||
* Writable Pagetables
|
||||
*/
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/pv/emul-priv-op.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/pv/emul-priv-op.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/pv/emul-priv-op.c
|
||||
@@ -40,6 +40,10 @@
|
||||
#include "emulate.h"
|
||||
#include "mm.h"
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
struct priv_op_ctxt {
|
||||
struct x86_emulate_ctxt ctxt;
|
||||
struct {
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/pv/mm.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/pv/mm.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/pv/mm.c
|
||||
@@ -26,6 +26,10 @@
|
||||
|
||||
#include "mm.h"
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* Get a mapping of a PV guest's l1e for this linear address. The return
|
||||
* pointer should be unmapped using unmap_domain_page().
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/domain_page.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/domain_page.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/domain_page.c
|
||||
@@ -18,6 +18,10 @@
|
||||
#include <asm/hardirq.h>
|
||||
#include <asm/setup.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
static DEFINE_PER_CPU(struct vcpu *, override);
|
||||
|
||||
static inline struct vcpu *mapcache_current_vcpu(void)
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/mm/shadow/private.h
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/mm/shadow/private.h
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/mm/shadow/private.h
|
||||
@@ -33,6 +33,10 @@
|
||||
|
||||
#include "../mm-locks.h"
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
/******************************************************************************
|
||||
* Levels of self-test and paranoia
|
||||
*/
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/mm/hap/hap.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/mm/hap/hap.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/mm/hap/hap.c
|
||||
@@ -42,6 +42,10 @@
|
||||
|
||||
#include "private.h"
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
/************************************************/
|
||||
/* HAP VRAM TRACKING SUPPORT */
|
||||
/************************************************/
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/mm/p2m-pod.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/mm/p2m-pod.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/mm/p2m-pod.c
|
||||
@@ -31,6 +31,10 @@
|
||||
|
||||
#include "mm-locks.h"
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
#define superpage_aligned(_x) (((_x)&(SUPERPAGE_PAGES-1))==0)
|
||||
|
||||
/* Enforce lock ordering when grabbing the "external" page_alloc lock */
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/mm/p2m-ept.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/mm/p2m-ept.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/mm/p2m-ept.c
|
||||
@@ -36,6 +36,10 @@
|
||||
|
||||
#include "mm-locks.h"
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
#define atomic_read_ept_entry(__pepte) \
|
||||
( (ept_entry_t) { .epte = read_atomic(&(__pepte)->epte) } )
|
||||
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/mm/p2m.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/mm/p2m.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/mm/p2m.c
|
||||
@@ -44,6 +44,10 @@
|
||||
|
||||
#include "mm-locks.h"
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
/* Override macro from asm/page.h to make work with mfn_t */
|
||||
#undef virt_to_mfn
|
||||
#define virt_to_mfn(v) _mfn(__virt_to_mfn(v))
|
||||
Index: xen-4.16.1-testing/xen/arch/x86/tboot.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/xen/arch/x86/tboot.c
|
||||
+++ xen-4.16.1-testing/xen/arch/x86/tboot.c
|
||||
@@ -16,6 +16,10 @@
|
||||
#include <asm/setup.h>
|
||||
#include <crypto/vmac.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
/* tboot=<physical address of shared page> */
|
||||
static unsigned long __initdata opt_tboot_pa;
|
||||
integer_param("tboot", opt_tboot_pa);
|
||||
Index: xen-4.16.1-testing/tools/firmware/hvmloader/ovmf.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/tools/firmware/hvmloader/ovmf.c
|
||||
+++ xen-4.16.1-testing/tools/firmware/hvmloader/ovmf.c
|
||||
@@ -34,6 +34,11 @@
|
||||
#include <xen/hvm/ioreq.h>
|
||||
#include <xen/memory.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
||||
+#endif
|
||||
+
|
||||
#define OVMF_MAXOFFSET 0x000FFFFFULL
|
||||
#define OVMF_END 0x100000000ULL
|
||||
#define LOWCHUNK_BEGIN 0x000F0000
|
||||
Index: xen-4.16.1-testing/tools/firmware/hvmloader/seabios.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/tools/firmware/hvmloader/seabios.c
|
||||
+++ xen-4.16.1-testing/tools/firmware/hvmloader/seabios.c
|
||||
@@ -29,6 +29,11 @@
|
||||
#include <acpi2_0.h>
|
||||
#include <libacpi.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
||||
+#endif
|
||||
+
|
||||
struct seabios_info {
|
||||
char signature[14]; /* XenHVMSeaBIOS\0 */
|
||||
uint8_t length; /* Length of this struct */
|
||||
Index: xen-4.16.1-testing/tools/firmware/hvmloader/util.c
|
||||
===================================================================
|
||||
--- xen-4.16.1-testing.orig/tools/firmware/hvmloader/util.c
|
||||
+++ xen-4.16.1-testing/tools/firmware/hvmloader/util.c
|
||||
@@ -31,6 +31,10 @@
|
||||
#include <xen/hvm/hvm_xs_strings.h>
|
||||
#include <xen/hvm/params.h>
|
||||
|
||||
+#if __GNUC__ >= 12
|
||||
+#pragma GCC diagnostic ignored "-Warray-bounds"
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* Check whether there exists overlap in the specified memory range.
|
||||
* Returns true if exists, else returns false.
|
||||
|
|
@ -7,6 +7,7 @@ XEN_BRANCH ?= "stable-${XEN_REL}"
|
|||
SRC_URI = " \
|
||||
git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
|
||||
file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch \
|
||||
file://xen-fix-gcc12-build-issues.patch \
|
||||
"
|
||||
|
||||
LIC_FILES_CHKSUM ?= "file://COPYING;md5=419739e325a50f3d7b4501338e44a4e5"
|
||||
|
|
Loading…
Reference in New Issue
Block a user