From 6db1f0e66e3d52419578006a97e5126e3318b0f3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roger=20Pau=20Monn=C3=A9?= Date: Wed, 24 Jan 2018 18:01:33 +0100 Subject: [PATCH] x86/compat: fix compilation errors with clang 6 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The following errors are generated when compiling Xen with clang 6: In file included from x86_64/asm-offsets.c:9: In file included from /root/src/xen/xen/include/xen/sched.h:8: In file included from /root/src/xen/xen/include/xen/shared.h:6: In file included from /root/src/xen/xen/include/compat/arch-x86/../xen.h:9: /root/src/xen/xen/include/compat/arch-x86/xen.h:10:10: error: the current #pragma pack aligment value is modified in the included file [-Werror,-Wpragma-pack] #include "xen-x86_32.h" ^ /root/src/xen/xen/include/compat/arch-x86/xen-x86_32.h:40:9: note: previous '#pragma pack' directive that modifies alignment is here #pragma pack() ^ In file included from x86_64/asm-offsets.c:9: In file included from /root/src/xen/xen/include/xen/sched.h:8: In file included from /root/src/xen/xen/include/xen/shared.h:6: /root/src/xen/xen/include/compat/arch-x86/../xen.h:9:10: error: the current #pragma pack aligment value is modified in the included file [-Werror,-Wpragma-pack] #include "arch-x86/xen.h" ^ /root/src/xen/xen/include/compat/arch-x86/xen.h:71:9: note: previous '#pragma pack' directive that modifies alignment is here #pragma pack() ^ 2 errors generated. Fix this by using pragma push/pop in order to store the current pragma value in the compiler stack and later restoring it when using clang. Signed-off-by: Roger Pau Monné Acked-by: Jan Beulich --- xen/include/Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xen/include/Makefile b/xen/include/Makefile index 1299b1962f..19066a33a0 100644 --- a/xen/include/Makefile +++ b/xen/include/Makefile @@ -35,8 +35,13 @@ cppflags-y := -include public/xen-compat.h -DXEN_GENERATING_COMPA cppflags-$(CONFIG_X86) += -m32 # 8-byte types are 4-byte aligned on x86_32 ... +ifeq ($(clang),y) +prefix-$(CONFIG_X86) := \#pragma pack(push, 4) +suffix-$(CONFIG_X86) := \#pragma pack(pop) +else prefix-$(CONFIG_X86) := \#pragma pack(4) suffix-$(CONFIG_X86) := \#pragma pack() +endif endif -- 2.30.2