File valgrind.xen-4.7-handle-XENVER_build_id.patch of Package valgrind

From: Olaf Hering <olaf@aepfle.de>
Date: Fri, 16 Nov 2018 17:21:33 +0100
Subject: xen-4.7: handle XENVER_build_id

Add code to handle XENVER_build_id, added in xen-4.7

bz#390553
---
 coregrind/m_syswrap/syswrap-xen.c |  4 ++++
 include/vki/vki-xen-version.h     | 11 +++++++++++
 2 files changed, 15 insertions(+)

--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -582,24 +582,25 @@ PRE(xen_version)
 
    switch (ARG1) {
    case VKI_XENVER_version:
    case VKI_XENVER_extraversion:
    case VKI_XENVER_compile_info:
    case VKI_XENVER_capabilities:
    case VKI_XENVER_changeset:
    case VKI_XENVER_platform_parameters:
    case VKI_XENVER_get_features:
    case VKI_XENVER_pagesize:
    case VKI_XENVER_guest_handle:
    case VKI_XENVER_commandline:
+   case VKI_XENVER_build_id:
       /* No inputs */
       break;
 
    default:
       bad_subop(tid, layout, arrghs, status, flags,
                 "__HYPERVISOR_xen_version", ARG1);
       break;
    }
 }
 
 PRE(grant_table_op)
 {
@@ -1859,24 +1860,27 @@ POST(xen_version)
    case VKI_XENVER_get_features:
       POST_MEM_WRITE((Addr)ARG2, sizeof(struct vki_xen_feature_info));
       break;
    case VKI_XENVER_pagesize:
       /* No outputs */
       break;
    case VKI_XENVER_guest_handle:
       POST_MEM_WRITE((Addr)ARG2, sizeof(vki_xen_domain_handle_t));
       break;
    case VKI_XENVER_commandline:
       POST_MEM_WRITE((Addr)ARG2, sizeof(vki_xen_commandline_t));
       break;
+   case VKI_XENVER_build_id:
+      POST_MEM_WRITE((Addr)ARG2, sizeof(struct vki_xen_build_id));
+      break;
    }
 }
 
 POST(grant_table_op)
 {
    switch (ARG1) {
    case VKI_XEN_GNTTABOP_setup_table: {
       struct vki_xen_gnttab_setup_table *gst =
 	      (struct vki_xen_gnttab_setup_table*)ARG2;
       PRE_MEM_WRITE("VKI_XEN_GNTTABOP_setup_table",
                     (Addr)&gst->status, sizeof(gst->status));
       PRE_MEM_WRITE("VKI_XEN_GNTTABOP_setup_table",
--- a/include/vki/vki-xen-version.h
+++ b/include/vki/vki-xen-version.h
@@ -27,24 +27,25 @@
 #define __VKI_XEN_VERSION_H
 
 #define VKI_XENVER_version      0
 #define VKI_XENVER_extraversion 1
 #define VKI_XENVER_compile_info 2
 #define VKI_XENVER_capabilities 3
 #define VKI_XENVER_changeset 4
 #define VKI_XENVER_platform_parameters 5
 #define VKI_XENVER_get_features 6
 #define VKI_XENVER_pagesize 7
 #define VKI_XENVER_guest_handle 8
 #define VKI_XENVER_commandline 9
+#define VKI_XENVER_build_id 10
 
 typedef char vki_xen_extraversion_t[16];
 
 struct vki_xen_compile_info {
     char compiler[64];
     char compile_by[16];
     char compile_domain[32];
     char compile_date[32];
 };
 
 typedef char vki_xen_capabilities_info_t[1024];
 
@@ -52,17 +53,27 @@ typedef char vki_xen_changeset_info_t[64];
 
 struct vki_xen_platform_parameters {
     unsigned long virt_start;
 };
 
 struct vki_xen_feature_info {
     unsigned int submap_idx;    /* IN: which 32-bit submap to return */
     vki_uint32_t     submap;        /* OUT: 32-bit submap */
 };
 
 typedef char vki_xen_commandline_t[1024];
 
+struct vki_xen_build_id {
+    unsigned int len;    /* IN: size of buf[]. */
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    unsigned char   buf[];
+#elif defined(__GNUC__)
+    unsigned char   buf[1]; /* OUT: Variable length buffer with build_id. */
+#endif
+
+};
+
 #endif // __VKI_XEN_VERSION_H
 
 /*--------------------------------------------------------------------*/
 /*--- end                                                          ---*/
 /*--------------------------------------------------------------------*/
openSUSE Build Service is sponsored by