[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [xen-unstable test] 16231: regressions - FAIL



On Sat, 2013-02-23 at 16:26 +0000, Keir Fraser wrote:
> On 23/02/2013 16:09, "Ian Jackson" <Ian.Jackson@xxxxxxxxxxxxx> wrote:
> 
> > xen.org writes ("[xen-unstable test] 16231: regressions - FAIL"):
> >> flight 16231 xen-unstable real [real]
> >> http://www.chiark.greenend.org.uk/~xensrcts/logs/16231/
> >> 
> >> Regressions :-(
> >> 
> >> Tests which did not succeed and are blocking,
> >> including tests which could not be run:
> >>  build-i386                    4 xen-build             fail REGR. vs. 16226
> > 
> > gcc -Wall -Werror -Wstrict-prototypes -O2 -fomit-frame-pointer
> > -fno-strict-aliasing -Wdeclaration-after-statement -o checker checker.c
> > ./checker > tmp.size
> > diff -u reference.size tmp.size
> > --- reference.size 2013-02-22 22:53:31.000000000 +0000
> > +++ tmp.size 2013-02-22 23:12:05.000000000 +0000
> > @@ -5,7 +5,7 @@
> >  trap_info                 |       -       -       8      16
> >  cpu_user_regs             |       -       -      68     200
> >  vcpu_guest_core_regs      |     304     304       -       -
> > -vcpu_guest_context        |     336     336    2800    5168
> > +vcpu_guest_context        |     332     332    2800    5168
> >  arch_vcpu_info            |       -       -      24      16
> >  vcpu_time_info            |       -       -      32      32
> >  vcpu_info                 |       -       -      64      64
> > make[4]: *** [check-headers] Error 1
> > make[4]: Leaving directory
> > `/home/osstest/build.16231.build-i386/xen-unstable/tools/include/xen-foreign'
> > make[3]: Leaving directory
> > `/home/osstest/build.16231.build-i386/xen-unstable/tools/include'
> > make[3]: *** [xen-foreign] Error 2
> > 
> > Are we supposed to still be doing this for i386 ?
> 
> Yes we are, as we still support our i386 guest ABI.
> 
> However, the problem in this case appears to be that the ARM structure size
> has changed. If so, that needs to be fixed, or reference.size needs to be
> updated.

The problem is the use of '#pragma pack(4)' when building the foreign
headers on x86_32.

I think it is useful to keep checking all arches on every build, rather
than splitting into x86 and arm checks, since that will help catch
inadvertent cross-arch breakage.

8<-------------------


>From a20962085ef8d4c3d55f830647cdcb496bc5ee4a Mon Sep 17 00:00:00 2001
From: Ian Campbell <ian.campbell@xxxxxxxxxx>
Date: Mon, 25 Feb 2013 09:11:04 +0000
Subject: [PATCH] tools: foreign: ensure 64 bit values are properly aligned for 
arm

When building the foreign headers on x86_32 we use '#pragma pack(4)' and
therefore need to explicitly align types which should be aligned to 8-byte
boundaries.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
---
 tools/include/xen-foreign/mkheader.py |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/tools/include/xen-foreign/mkheader.py 
b/tools/include/xen-foreign/mkheader.py
index 8a784d3..5bd6eec 100644
--- a/tools/include/xen-foreign/mkheader.py
+++ b/tools/include/xen-foreign/mkheader.py
@@ -20,15 +20,18 @@ footer = {};
 inttypes["arm32"] = {
     "unsigned long" : "uint32_t",
     "long"          : "uint32_t",
-    "xen_pfn_t"     : "uint64_t",
-    "xen_ulong_t"   : "uint64_t",
+    "xen_pfn_t"     : "__align8__ uint64_t",
+    "xen_ulong_t"   : "__align8__ uint64_t",
+    "uint64_t"      : "__align8__ uint64_t",
 };
 header["arm32"] = """
 #define __arm___ARM32 1
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
 # define __DECL_REG(n64, n32) union { uint64_t n64; uint32_t n32; }
+# define __align8__ __attribute__((aligned (8)))
 #else
 # define __DECL_REG(n64, n32) uint64_t n64
+# define FIXME
 #endif
 """;
 footer["arm32"] = """
@@ -38,15 +41,18 @@ footer["arm32"] = """
 inttypes["arm64"] = {
     "unsigned long" : "__danger_unsigned_long_on_arm64",
     "long"          : "__danger_long_on_arm64",
-    "xen_pfn_t"     : "uint64_t",
-    "xen_ulong_t"   : "uint64_t",
+    "xen_pfn_t"     : "__align8__ uint64_t",
+    "xen_ulong_t"   : "__align8__ uint64_t",
+    "uint64_t"      : "__align8__ uint64_t",
 };
 header["arm64"] = """
 #define __aarch64___ARM64 1
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
 # define __DECL_REG(n64, n32) union { uint64_t n64; uint32_t n32; }
+# define __align8__ __attribute__((aligned (8)))
 #else
 # define __DECL_REG(n64, n32) uint64_t n64
+# define FIXME
 #endif
 """;
 footer["arm64"] = """
-- 
1.7.2.5




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.