[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v1 5/5] xsplice: Use ld-embedded build-ids
On 16/09/2015 22:01, Konrad Rzeszutek Wilk wrote: > From: Martin Pohlack <mpohlack@xxxxxxxxx> > > The mechanism to get this is via the XSPLICE_OP and > we add a new subsequent hypercall to retrieve the > binary build-id. The hypercall allows an arbirarty > size (the buffer is provided to the hypervisor) - however > by default the toolstack will allocate it up to 128 > bytes. > > We also add two places for the build-id to be printed: > - xsplice keyhandler. We cannot use 'hh' in the hypervisor > snprintf handler (as it is not implemented) so instead > we use an simpler way to print it. > - In the 'xen-xsplice' tool add an extra parameter - build-id > to print this as an human readable value. > > Note that one can also retrieve the value by 'readelf -h xen-syms'. > > Signed-off-by: Martin Pohlack <mpohlack@xxxxxxxxx> > Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> > --- > tools/libxc/include/xenctrl.h | 1 + > tools/libxc/xc_misc.c | 26 +++++++++++++ > tools/misc/xen-xsplice.c | 39 ++++++++++++++++++++ > xen/arch/x86/Makefile | 4 +- > xen/arch/x86/xen.lds.S | 5 +++ > xen/common/xsplice.c | 86 > +++++++++++++++++++++++++++++++++++++++++++ > xen/include/public/sysctl.h | 18 +++++++++ > xen/include/xen/version.h | 1 + > 8 files changed, 178 insertions(+), 2 deletions(-) > > diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h > index 2cd982d..946ddc0 100644 > --- a/tools/libxc/include/xenctrl.h > +++ b/tools/libxc/include/xenctrl.h > @@ -2860,6 +2860,7 @@ int xc_xsplice_apply(xc_interface *xch, char *id); > int xc_xsplice_revert(xc_interface *xch, char *id); > int xc_xsplice_unload(xc_interface *xch, char *id); > int xc_xsplice_check(xc_interface *xch, char *id); > +int xc_xsplice_build_id(xc_interface *xch, char *build_id, unsigned int max); The build id of the current running hypervisor should belong in the xeninfo hypercall. It is not specific to xsplice. > diff --git a/xen/common/xsplice.c b/xen/common/xsplice.c > index d330efe..5728c4b 100644 > --- a/xen/common/xsplice.c > +++ b/xen/common/xsplice.c > @@ -14,6 +14,8 @@ > #include <xen/sched.h> > #include <xen/lib.h> > #include <xen/xsplice.h> > +#include <xen/elf.h> > +#include <xen/types.h> > #include <public/sysctl.h> > > #include <asm/event.h> > @@ -44,6 +46,36 @@ struct payload { > struct tasklet tasklet; > }; > > +#ifdef CONFIG_ARM > +static int build_id(char **p, unsigned int *len) > +{ > + return 0; > +} > +#else > +#define NT_GNU_BUILD_ID 3 > + > +extern char * __note_gnu_build_id_start; /* defined in linker script */ This is liable to cause you to deference the first 8 bytes of the note, as the symbol is not a char*. Use extern Elf_Note __note_gnu_build_id_start[]; instead. Also, it is probably worth having an _end symbol as well and check for end > start to confirm that the linker has actually put something in there. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |