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 ---*/
/*--------------------------------------------------------------------*/