File valgrind.rename-HVMOP_inject_trap-struct.patch of Package valgrind

From: Olaf Hering <olaf@aepfle.de>
Date: Wed, 26 Feb 2020 15:56:30 +0100
Subject: rename HVMOP_inject_trap struct

The implemented code to handle HVMOP_inject_trap handles the layout of
Xen 4.2. Rename the code accordingly. Since hvm_op is unversioned,
choose the Xen version as suffix.

Make it conditional on Xen 4.2 or later.

bz#390553
---
 coregrind/m_syswrap/syswrap-xen.c | 22 +++++++++++++++-------
 include/vki/vki-xen-hvm.h         |  4 ++--
 2 files changed, 17 insertions(+), 9 deletions(-)

--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -1573,31 +1573,39 @@ PRE(hvm_op)
       break;
 
    case VKI_XEN_HVMOP_get_mem_access:
       PRE_XEN_HVMOP_READ(get_mem_access, domid);
       PRE_XEN_HVMOP_READ(get_mem_access, pfn);
 
       PRE_MEM_WRITE("XEN_HVMOP_get_mem_access *hvmmem_access",
                     (Addr)&(((vki_xen_hvm_get_mem_access_t*)arg)->hvmmem_access),
                     sizeof(vki_uint16_t));
       break;
 
    case VKI_XEN_HVMOP_inject_trap:
-      PRE_XEN_HVMOP_READ(inject_trap, domid);
-      PRE_XEN_HVMOP_READ(inject_trap, vcpuid);
-      PRE_XEN_HVMOP_READ(inject_trap, vector);
-      PRE_XEN_HVMOP_READ(inject_trap, type);
-      PRE_XEN_HVMOP_READ(inject_trap, error_code);
-      PRE_XEN_HVMOP_READ(inject_trap, insn_len);
-      PRE_XEN_HVMOP_READ(inject_trap, cr2);
+      switch (vki_assumed_xenversion) {
+         case vki_xenversion_unset:
+            vki_report_unknown_xenversion("VKI_XEN_HVMOP_inject_trap");
+            /* fallthrough */
+         case vki_xenversion_402:
+         default:
+         PRE_XEN_HVMOP_READ(inject_trap_0402, domid);
+         PRE_XEN_HVMOP_READ(inject_trap_0402, vcpuid);
+         PRE_XEN_HVMOP_READ(inject_trap_0402, vector);
+         PRE_XEN_HVMOP_READ(inject_trap_0402, type);
+         PRE_XEN_HVMOP_READ(inject_trap_0402, error_code);
+         PRE_XEN_HVMOP_READ(inject_trap_0402, insn_len);
+         PRE_XEN_HVMOP_READ(inject_trap_0402, cr2);
+         break;
+      }
       break;
 
    case VKI_XEN_HVMOP_altp2m: {
       vki_xen_hvm_altp2m_op_t *altp2m_op = (vki_xen_hvm_altp2m_op_t *)arg;
 
       PRE_XEN_HVMOP_READ(altp2m_op, version);
       PRE_XEN_HVMOP_READ(altp2m_op, cmd);
       PRE_XEN_HVMOP_READ(altp2m_op, domain);
       PRE_XEN_HVMOP_READ(altp2m_op, pad1);
       PRE_XEN_HVMOP_READ(altp2m_op, pad2);
 
       switch (altp2m_op->cmd) {
--- a/include/vki/vki-xen-hvm.h
+++ b/include/vki/vki-xen-hvm.h
@@ -86,34 +86,34 @@ struct vki_xen_hvm_set_mem_access {
 };
 typedef struct vki_xen_hvm_set_mem_access vki_xen_hvm_set_mem_access_t;
 
 #define VKI_XEN_HVMOP_get_mem_access        13
 struct vki_xen_hvm_get_mem_access {
     vki_xen_domid_t domid;
     vki_uint16_t hvmmem_access; /* OUT */
     vki_uint64_t pfn;
 };
 typedef struct vki_xen_hvm_get_mem_access vki_xen_hvm_get_mem_access_t;
 
 #define VKI_XEN_HVMOP_inject_trap            14
-struct vki_xen_hvm_inject_trap {
+struct vki_xen_hvm_inject_trap_0402 {
     vki_xen_domid_t domid;
     vki_uint32_t vcpuid;
     vki_uint32_t vector;
     vki_uint32_t type;
     vki_uint32_t error_code;
     vki_uint32_t insn_len;
     vki_uint64_t cr2;
 };
-typedef struct vki_xen_hvm_inject_trap vki_xen_hvm_inject_trap_t;
+typedef struct vki_xen_hvm_inject_trap_0402 vki_xen_hvm_inject_trap_0402_t;
 
 #define VKI_XEN_HVMOP_altp2m 25
 #define VKI_XEN_HVMOP_altp2m_get_domain_state     1
 #define VKI_XEN_HVMOP_altp2m_set_domain_state     2
 #define VKI_XEN_HVMOP_altp2m_vcpu_enable_notify   3
 #define VKI_XEN_HVMOP_altp2m_create_p2m           4
 #define VKI_XEN_HVMOP_altp2m_destroy_p2m          5
 #define VKI_XEN_HVMOP_altp2m_switch_p2m           6
 #define VKI_XEN_HVMOP_altp2m_set_mem_access       7
 #define VKI_XEN_HVMOP_altp2m_change_gfn           8
 struct vki_xen_hvm_altp2m_domain_state {
     /* IN or OUT variable on/off */
openSUSE Build Service is sponsored by