diff --git a/package/xen/0008-arm-fix-build-with-gcc-7.patch b/package/xen/0008-arm-fix-build-with-gcc-7.patch new file mode 100644 index 0000000000..7bd12a3c68 --- /dev/null +++ b/package/xen/0008-arm-fix-build-with-gcc-7.patch @@ -0,0 +1,70 @@ +From 9d3011bd1cd29f8f3841bf1b64d5ead9ed1434e8 Mon Sep 17 00:00:00 2001 +From: Jan Beulich +Date: Fri, 19 May 2017 10:12:08 +0200 +Subject: [PATCH] arm: fix build with gcc 7 + +The compiler dislikes duplicate "const", and the ones it complains +about look like they we in fact meant to be placed differently. + +Also fix array_access_okay() (just like on x86), despite the construct +being unused on ARM: -Wint-in-bool-context, enabled by default in +gcc 7, doesn't like multiplication in conditional operators. "Hide" it, +at the risk of the next compiler version becoming smarter and +recognizing even that. (The hope is that added smartness then would +also better deal with legitimate cases like the one here.) The change +could have been done in access_ok(), but I think we better keep it at +the place the compiler is actually unhappy about. + +Signed-off-by: Jan Beulich +Reviewed-by: Julien Grall +Release-acked-by: Julien Grall +Signed-off-by: Alistair Francis +--- + xen/arch/arm/platforms/brcm.c | 2 +- + xen/arch/arm/platforms/rcar2.c | 2 +- + xen/include/asm-arm/guest_access.h | 3 ++- + 3 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/xen/arch/arm/platforms/brcm.c b/xen/arch/arm/platforms/brcm.c +index 6d8b5b9175..d481b2c60f 100644 +--- a/xen/arch/arm/platforms/brcm.c ++++ b/xen/arch/arm/platforms/brcm.c +@@ -271,7 +271,7 @@ static __init int brcm_init(void) + return brcm_populate_plat_regs(); + } + +-static const char const *brcm_dt_compat[] __initconst = ++static const char *const brcm_dt_compat[] __initconst = + { + "brcm,bcm7445d0", + NULL +diff --git a/xen/arch/arm/platforms/rcar2.c b/xen/arch/arm/platforms/rcar2.c +index bb25751109..df0ac84709 100644 +--- a/xen/arch/arm/platforms/rcar2.c ++++ b/xen/arch/arm/platforms/rcar2.c +@@ -46,7 +46,7 @@ static int __init rcar2_smp_init(void) + return 0; + } + +-static const char const *rcar2_dt_compat[] __initdata = ++static const char *const rcar2_dt_compat[] __initconst = + { + "renesas,lager", + NULL +diff --git a/xen/include/asm-arm/guest_access.h b/xen/include/asm-arm/guest_access.h +index 5876988b23..421bca5f36 100644 +--- a/xen/include/asm-arm/guest_access.h ++++ b/xen/include/asm-arm/guest_access.h +@@ -8,7 +8,8 @@ + #define access_ok(addr,size) (1) + + #define array_access_ok(addr,count,size) \ +- (likely(count < (~0UL/size)) && access_ok(addr,count*size)) ++ (likely((count) < (~0UL / (size))) && \ ++ access_ok(addr, 0 + (count) * (size))) + + unsigned long raw_copy_to_guest(void *to, const void *from, unsigned len); + unsigned long raw_copy_to_guest_flush_dcache(void *to, const void *from, +-- +2.11.0 +