File valgrind.xen-3.0.4-versioned-xen_domctl_createdomain.patch of Package valgrind

From: Olaf Hering <olaf@aepfle.de>
Date: Fri, 16 Nov 2018 17:21:10 +0100
Subject: xen-3.0.4: versioned xen_domctl_createdomain

Rename xen_domctl_createdomain which represents layout from xen-3.0.4 up to xen-4.5.

bz#390553
---
 coregrind/m_syswrap/syswrap-xen.c | 13 ++++++++++---
 include/vki/vki-xen-domctl.h      |  4 ++--
 2 files changed, 12 insertions(+), 5 deletions(-)

--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -840,27 +840,34 @@ PRE(domctl)
    case VKI_XEN_DOMCTL_destroydomain:
    case VKI_XEN_DOMCTL_pausedomain:
    case VKI_XEN_DOMCTL_max_vcpus:
    case VKI_XEN_DOMCTL_get_address_size:
    case VKI_XEN_DOMCTL_gettscinfo:
    case VKI_XEN_DOMCTL_getdomaininfo:
    case VKI_XEN_DOMCTL_unpausedomain:
    case VKI_XEN_DOMCTL_resumedomain:
       /* No input fields. */
       break;
 
    case VKI_XEN_DOMCTL_createdomain:
-      PRE_XEN_DOMCTL_READ(createdomain, ssidref);
-      PRE_XEN_DOMCTL_READ(createdomain, handle);
-      PRE_XEN_DOMCTL_READ(createdomain, flags);
+      switch (domctl->interface_version) {
+      case 0x00000007:
+      case 0x00000008:
+      case 0x00000009:
+      case 0x0000000a:
+         PRE_XEN_DOMCTL_READ(createdomain_00000004, ssidref);
+         PRE_XEN_DOMCTL_READ(createdomain_00000004, handle);
+         PRE_XEN_DOMCTL_READ(createdomain_00000004, flags);
+         break;
+      }
       break;
 
    case VKI_XEN_DOMCTL_gethvmcontext:
        /* Xen unconditionally reads the 'buffer' pointer */
        __PRE_XEN_DOMCTL_READ(gethvmcontext, hvmcontext, buffer);
        /* Xen only consumes 'size' if 'buffer' is non NULL. A NULL
         * buffer is a request for the required size. */
        if ( domctl->u.hvmcontext.buffer.p )
            __PRE_XEN_DOMCTL_READ(gethvmcontext, hvmcontext, size);
        break;
 
    case VKI_XEN_DOMCTL_sethvmcontext:
--- a/include/vki/vki-xen-domctl.h
+++ b/include/vki/vki-xen-domctl.h
@@ -118,25 +118,25 @@
 #define VKI_XEN_DOMCTL_setnodeaffinity               68
 #define VKI_XEN_DOMCTL_getnodeaffinity               69
 #define VKI_XEN_DOMCTL_set_max_evtchn                70
 #define VKI_XEN_DOMCTL_cacheflush                    71
 #define VKI_XEN_DOMCTL_get_vcpu_msrs                 72
 #define VKI_XEN_DOMCTL_set_vcpu_msrs                 73
 #define VKI_XEN_DOMCTL_monitor_op                    77 /* new in 4.6 */
 #define VKI_XEN_DOMCTL_gdbsx_guestmemio            1000
 #define VKI_XEN_DOMCTL_gdbsx_pausevcpu             1001
 #define VKI_XEN_DOMCTL_gdbsx_unpausevcpu           1002
 #define VKI_XEN_DOMCTL_gdbsx_domstatus             1003
 
-struct vki_xen_domctl_createdomain {
+struct vki_xen_domctl_createdomain_00000004 {
     /* IN parameters */
     vki_uint32_t ssidref;
     vki_xen_domain_handle_t handle;
     vki_uint32_t flags;
 };
 
 struct vki_xen_domctl_getdomaininfo_00000007 {
     /* OUT variables. */
     vki_xen_domid_t  domain;
     vki_uint32_t flags;
     vki_xen_uint64_aligned_t tot_pages;
     vki_xen_uint64_aligned_t max_pages;
@@ -654,25 +654,25 @@ struct vki_xen_domctl_monitor_op_00000011 {
         struct {
             /* Pause vCPU until response */
             vki_uint8_t sync;
         } debug_exception;
     } u;
 };
 
 struct vki_xen_domctl {
     vki_uint32_t cmd;
     vki_uint32_t interface_version; /* XEN_DOMCTL_INTERFACE_VERSION */
     vki_xen_domid_t  domain;
     union {
-        struct vki_xen_domctl_createdomain      createdomain;
+        struct vki_xen_domctl_createdomain_00000004  createdomain_00000004;
         struct vki_xen_domctl_getdomaininfo_00000007 getdomaininfo_00000007;
         struct vki_xen_domctl_getdomaininfo_00000008 getdomaininfo_00000008;
         struct vki_xen_domctl_getdomaininfo_00000009 getdomaininfo_00000009;
         //struct vki_xen_domctl_getmemlist        getmemlist;
         //struct vki_xen_domctl_getpageframeinfo  getpageframeinfo;
         //struct vki_xen_domctl_getpageframeinfo2 getpageframeinfo2;
         struct vki_xen_domctl_getpageframeinfo3 getpageframeinfo3;
         struct vki_xen_domctl_nodeaffinity      nodeaffinity;
         struct vki_xen_domctl_vcpuaffinity_00000009 vcpuaffinity_00000009;
         struct vki_xen_domctl_vcpuaffinity_0000000a vcpuaffinity_0000000a;
         struct vki_xen_domctl_shadow_op         shadow_op;
         struct vki_xen_domctl_max_mem           max_mem;
openSUSE Build Service is sponsored by