Index: head/emulators/xen-kernel/Makefile =================================================================== --- head/emulators/xen-kernel/Makefile (revision 390111) +++ head/emulators/xen-kernel/Makefile (revision 390112) @@ -1,60 +1,61 @@ # $FreeBSD$ PORTNAME= xen PKGNAMESUFFIX= -kernel PORTVERSION= 4.5.0 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= emulators MASTER_SITES= http://bits.xensource.com/oss-xen/release/${PORTVERSION}/ MAINTAINER= bapt@FreeBSD.org COMMENT= Hypervisor using a microkernel design LICENSE= GPLv2 ONLY_FOR_ARCH= amd64 USES= cpe gmake python:build MAKE_ARGS= HOSTCC="${CC}" CC="${CC}" PYTHON=${PYTHON_CMD} \ NM="${NM}" LD="${LD}" USE_GCC= yes NO_MTREE= yes PLIST_FILES= /boot/xen \ /boot/xen.4th ALL_TARGET= build STRIP= # WRKSRC_SUBDIR= xen EXTRA_PATCHES= ${FILESDIR}/iommu_share_p2m_table.patch:-p2 \ ${FILESDIR}/0001-x86-pvh-disable-posted-interrupts.patch:-p2 \ ${FILESDIR}/xsa117.patch:-p2 \ ${FILESDIR}/xsa118-4.5-unstable-1.patch:-p2 \ ${FILESDIR}/xsa118-4.5-unstable-2.patch:-p2 \ ${FILESDIR}/xsa121.patch:-p2 \ ${FILESDIR}/xsa122.patch:-p2 \ ${FILESDIR}/xsa123.patch:-p2 \ ${FILESDIR}/xsa125.patch:-p2 \ ${FILESDIR}/xsa127-4.x.patch:-p2 \ ${FILESDIR}/xsa132.patch:-p2 \ ${FILESDIR}/xsa134.patch:-p2 \ - ${FILESDIR}/xsa136.patch:-p2 + ${FILESDIR}/xsa136.patch:-p2 \ + ${FILESDIR}/0001-libelf-fix-elf_parse_bsdsyms-call.patch:-p2 .include .if ${OPSYS} != FreeBSD IGNORE= Only supported on FreeBSD .endif .if ${OSVERSION} < 1100055 IGNORE= Only supported on recent FreeBSD 11 .endif do-install: ${MKDIR} ${STAGEDIR}/boot ${INSTALL_PROGRAM} ${WRKSRC}/xen ${STAGEDIR}/boot ${INSTALL_DATA} ${FILESDIR}/xen.4th ${STAGEDIR}/boot .include #Filter out LDFLAGS .undef LDFLAGS RUN_DEPENDS:= ${RUN_DEPENDS:N*gcc*} Index: head/emulators/xen-kernel/files/0001-libelf-fix-elf_parse_bsdsyms-call.patch =================================================================== --- head/emulators/xen-kernel/files/0001-libelf-fix-elf_parse_bsdsyms-call.patch (nonexistent) +++ head/emulators/xen-kernel/files/0001-libelf-fix-elf_parse_bsdsyms-call.patch (revision 390112) @@ -0,0 +1,36 @@ +From c2da83662498a5cd66512c684a0af178228f9d5a Mon Sep 17 00:00:00 2001 +From: Roger Pau Monne +Date: Thu, 11 Jun 2015 17:08:26 +0200 +Subject: [PATCH 1/2] libelf: fix elf_parse_bsdsyms call +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +elf_parse_bsdsyms expects the second paramater to be a physical address, not +a virtual one. + +Signed-off-by: Roger Pau Monné +Cc: Ian Campbell +Cc: Ian Jackson +Cc: Jan Beulich +Cc: Tim Deegan +--- + xen/common/libelf/libelf-dominfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xen/common/libelf/libelf-dominfo.c b/xen/common/libelf/libelf-dominfo.c +index 6120dd4..86403b9 100644 +--- a/xen/common/libelf/libelf-dominfo.c ++++ b/xen/common/libelf/libelf-dominfo.c +@@ -438,7 +438,7 @@ static elf_errorstatus elf_xen_addr_calc_check(struct elf_binary *elf, + + if ( parms->bsd_symtab ) + { +- elf_parse_bsdsyms(elf, parms->virt_kend); ++ elf_parse_bsdsyms(elf, elf->pend); + if ( elf->bsd_symtab_pend ) + parms->virt_kend = elf->bsd_symtab_pend + parms->virt_offset; + } +-- +1.9.5 (Apple Git-50.3) + Property changes on: head/emulators/xen-kernel/files/0001-libelf-fix-elf_parse_bsdsyms-call.patch ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/xen-tools/Makefile =================================================================== --- head/sysutils/xen-tools/Makefile (revision 390111) +++ head/sysutils/xen-tools/Makefile (revision 390112) @@ -1,90 +1,92 @@ # $FreeBSD$ PORTNAME= xen PKGNAMESUFFIX= -tools PORTVERSION= 4.5.0 -PORTREVISION= 6 +PORTREVISION= 7 CATEGORIES= sysutils emulators MASTER_SITES= http://bits.xensource.com/oss-xen/release/${PORTVERSION}/ \ http://code.coreboot.org/p/seabios/downloads/get/:seabios MAINTAINER= bapt@FreeBSD.org COMMENT= Xen management tool, based on LibXenlight LICENSE= GPLv2 LGPL3 LICENSE_COMB= multi OPTIONS_DEFINE= DOCS LIB_DEPENDS= libyajl.so:${PORTSDIR}/devel/yajl \ liblzo2.so:${PORTSDIR}/archivers/lzo2 \ libpixman-1.so:${PORTSDIR}/x11/pixman BUILD_DEPENDS= dev86>0:${PORTSDIR}/devel/dev86 ONLY_FOR_ARCHS= amd64 ONLY_FOR_ARCHS_REASON= "not yet ported to anything other than amd64" SEABIOSVERSION= 1.8.1 DISTFILES+= ${DISTNAME}.tar.gz \ seabios-${SEABIOSVERSION}.tar.gz:seabios WRKSRC= ${WRKDIR}/xen-${PORTVERSION} USES= cpe gmake perl5 python shebangfix libtool pkgconfig USE_GNOME= glib20 GNU_CONFIGURE= yes CONFIGURE_ENV= HOSTCC="${CC}" CC="${CC}" \ ac_cv_path_BASH=${TRUE} \ ac_cv_path_XGETTEXT=${TRUE} MAKE_ARGS= HOSTCC="${CC}" CC="${CC}" GCC="${GCC}" cc="${GCC}" QEMU_ARGS= --disable-gtk \ --disable-smartcard-nss \ --disable-sdl \ --disable-vte \ --disable-glx \ --disable-curses \ --disable-tools \ --disable-curl \ --cxx=c++ EXTRA_PATCHES= ${FILESDIR}/xsa119-unstable.patch:-p1 \ - ${FILESDIR}/xsa125.patch:-p1 + ${FILESDIR}/xsa125.patch:-p1 \ + ${FILESDIR}/0001-libelf-fix-elf_parse_bsdsyms-call.patch:-p1 \ + ${FILESDIR}/0002-libxc-fix-xc_dom_load_elf_symtab.patch:-p1 CONFIGURE_ARGS+= --with-extra-qemuu-configure-args="${QEMU_ARGS}" SHEBANG_FILES= tools/misc/xencov_split \ tools/misc/xen-ringwatch USE_GCC= yes ALL_TARGET= tools docs INSTALL_TARGET= install-tools install-docs .include .if ${OPSYS} != FreeBSD IGNORE= Only supported on FreeBSD .endif post-extract: ${MV} ${WRKDIR}/seabios-${SEABIOSVERSION} ${WRKSRC}/tools/firmware/seabios-dir post-patch: @${REINPLACE_CMD} "s,x86_64,amd64,g" ${WRKSRC}/tools/configure @${REINPLACE_CMD} -e "s,/var/lib,/var/db,g" \ ${WRKSRC}/tools/Makefile \ ${WRKSRC}/tools/libxc/include/xenguest.h \ ${WRKSRC}/tools/libxl/libxl_dom.c \ ${WRKSRC}/tools/libxl/libxl_dm.c \ ${WRKSRC}/tools/qemu-xen-traditional/i386-dm/helper2.c \ ${WRKSRC}/docs/man/* @for p in ${FILESDIR}/*qemut*.patch; do \ ${ECHO_CMD} "====> Applying $${p##*/}" ; \ patch -s -p1 -i $${p} -d ${WRKSRC}/tools/qemu-xen-traditional ; \ done @for p in ${FILESDIR}/*qemuu*.patch; do \ ${ECHO_CMD} "====> Applying $${p##*/}" ; \ patch -s -p1 -i $${p} -d ${WRKSRC}/tools/qemu-xen ; \ done post-install: ${MKDIR} ${STAGEDIR}/var/run/xen .include Index: head/sysutils/xen-tools/files/0001-libelf-fix-elf_parse_bsdsyms-call.patch =================================================================== --- head/sysutils/xen-tools/files/0001-libelf-fix-elf_parse_bsdsyms-call.patch (nonexistent) +++ head/sysutils/xen-tools/files/0001-libelf-fix-elf_parse_bsdsyms-call.patch (revision 390112) @@ -0,0 +1,36 @@ +From c2da83662498a5cd66512c684a0af178228f9d5a Mon Sep 17 00:00:00 2001 +From: Roger Pau Monne +Date: Thu, 11 Jun 2015 17:08:26 +0200 +Subject: [PATCH 1/2] libelf: fix elf_parse_bsdsyms call +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +elf_parse_bsdsyms expects the second paramater to be a physical address, not +a virtual one. + +Signed-off-by: Roger Pau Monné +Cc: Ian Campbell +Cc: Ian Jackson +Cc: Jan Beulich +Cc: Tim Deegan +--- + xen/common/libelf/libelf-dominfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xen/common/libelf/libelf-dominfo.c b/xen/common/libelf/libelf-dominfo.c +index 6120dd4..86403b9 100644 +--- a/xen/common/libelf/libelf-dominfo.c ++++ b/xen/common/libelf/libelf-dominfo.c +@@ -438,7 +438,7 @@ static elf_errorstatus elf_xen_addr_calc_check(struct elf_binary *elf, + + if ( parms->bsd_symtab ) + { +- elf_parse_bsdsyms(elf, parms->virt_kend); ++ elf_parse_bsdsyms(elf, elf->pend); + if ( elf->bsd_symtab_pend ) + parms->virt_kend = elf->bsd_symtab_pend + parms->virt_offset; + } +-- +1.9.5 (Apple Git-50.3) + Property changes on: head/sysutils/xen-tools/files/0001-libelf-fix-elf_parse_bsdsyms-call.patch ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/xen-tools/files/0002-libxc-fix-xc_dom_load_elf_symtab.patch =================================================================== --- head/sysutils/xen-tools/files/0002-libxc-fix-xc_dom_load_elf_symtab.patch (nonexistent) +++ head/sysutils/xen-tools/files/0002-libxc-fix-xc_dom_load_elf_symtab.patch (revision 390112) @@ -0,0 +1,125 @@ +From e438f954ae3c6685ccf83b3bd01983f3224af3ab Mon Sep 17 00:00:00 2001 +From: Roger Pau Monne +Date: Thu, 11 Jun 2015 17:31:43 +0200 +Subject: [PATCH 2/2] libxc: fix xc_dom_load_elf_symtab +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +xc_dom_load_elf_symtab was incorrectly trying to perform the same +calculations already done in elf_parse_bsdsyms when load == 0 is used. +Instead of trying to repeat the calculations, just trust what +elf_parse_bsdsyms has already accounted for. + +This also simplifies the code by allowing the non-load case to return +earlier. + +Signed-off-by: Roger Pau Monné +Cc: Ian Jackson +Cc: Stefano Stabellini +Cc: Ian Campbell +Cc: Wei Liu +--- + tools/libxc/xc_dom_elfloader.c | 33 ++++++++++++++------------------- + 1 file changed, 14 insertions(+), 19 deletions(-) + +diff --git a/tools/libxc/xc_dom_elfloader.c b/tools/libxc/xc_dom_elfloader.c +index 9843b1f..6ce1062 100644 +--- a/tools/libxc/xc_dom_elfloader.c ++++ b/tools/libxc/xc_dom_elfloader.c +@@ -128,6 +128,8 @@ static elf_errorstatus xc_dom_load_elf_symtab(struct xc_dom_image *dom, + return 0; + } + ++ size = elf->bsd_symtab_pend - elf->bsd_symtab_pstart; ++ + if ( load ) + { + char *hdr_ptr; +@@ -135,11 +137,10 @@ static elf_errorstatus xc_dom_load_elf_symtab(struct xc_dom_image *dom, + + if ( !dom->bsd_symtab_start ) + return 0; +- size = dom->kernel_seg.vend - dom->bsd_symtab_start; + hdr_ptr = xc_dom_vaddr_to_ptr(dom, dom->bsd_symtab_start, &allow_size); + if ( hdr_ptr == NULL ) + { +- DOMPRINTF("%s/load: xc_dom_vaddr_to_ptr(dom,dom->bsd_symtab_start" ++ DOMPRINTF("%s: xc_dom_vaddr_to_ptr(dom,dom->bsd_symtab_start" + " => NULL", __FUNCTION__); + return -1; + } +@@ -152,8 +153,6 @@ static elf_errorstatus xc_dom_load_elf_symtab(struct xc_dom_image *dom, + { + char *hdr_ptr; + +- size = sizeof(unsigned) + elf_size(elf, elf->ehdr) + +- elf_shdr_count(elf) * elf_size(elf, shdr); + hdr_ptr = xc_dom_malloc(dom, size); + if ( hdr_ptr == NULL ) + return 0; +@@ -161,6 +160,8 @@ static elf_errorstatus xc_dom_load_elf_symtab(struct xc_dom_image *dom, + elf->caller_xdest_size = size; + hdr = ELF_REALPTR2PTRVAL(hdr_ptr); + dom->bsd_symtab_start = elf_round_up(elf, dom->kernel_seg.vend); ++ dom->kernel_seg.vend = elf_round_up(elf, dom->bsd_symtab_start + size); ++ return 0; + } + + elf_memcpy_safe(elf, hdr + sizeof(unsigned), +@@ -189,9 +190,8 @@ static elf_errorstatus xc_dom_load_elf_symtab(struct xc_dom_image *dom, + } + if ( elf->caller_xdest_size < sizeof(unsigned) ) + { +- DOMPRINTF("%s/%s: header size %"PRIx64" too small", +- __FUNCTION__, load ? "load" : "parse", +- (uint64_t)elf->caller_xdest_size); ++ DOMPRINTF("%s: header size %"PRIx64" too small", ++ __FUNCTION__, (uint64_t)elf->caller_xdest_size); + return -1; + } + if ( elf_init(&syms, elf->caller_xdest_base + sizeof(unsigned), +@@ -219,10 +219,9 @@ static elf_errorstatus xc_dom_load_elf_symtab(struct xc_dom_image *dom, + maxaddr = elf_round_up(&syms, symtab + elf_size(&syms, syms.ehdr) + + elf_shdr_count(&syms) * elf_size(&syms, shdr)); + +- DOMPRINTF("%s/%s: bsd_symtab_start=%" PRIx64 ", kernel.end=0x%" PRIx64 ++ DOMPRINTF("%s: bsd_symtab_start=%" PRIx64 ", kernel.end=0x%" PRIx64 + " -- symtab=0x%" PRIx64 ", maxaddr=0x%" PRIx64 "", +- __FUNCTION__, load ? "load" : "parse", +- dom->bsd_symtab_start, dom->kernel_seg.vend, ++ __FUNCTION__, dom->bsd_symtab_start, dom->kernel_seg.vend, + symtab, maxaddr); + + count = elf_shdr_count(&syms); +@@ -279,13 +278,10 @@ static elf_errorstatus xc_dom_load_elf_symtab(struct xc_dom_image *dom, + type == SHT_SYMTAB ? "symtab" : "strtab", + size, maxaddr); + +- if ( load ) +- { +- shdr2 = elf_shdr_by_index(elf, h); +- elf_memcpy_safe(elf, elf_section_start(&syms, shdr), +- elf_section_start(elf, shdr2), +- size); +- } ++ shdr2 = elf_shdr_by_index(elf, h); ++ elf_memcpy_safe(elf, elf_section_start(&syms, shdr), ++ elf_section_start(elf, shdr2), ++ size); + } + + /* Name is NULL. */ +@@ -308,8 +304,7 @@ static elf_errorstatus xc_dom_load_elf_symtab(struct xc_dom_image *dom, + dom->bsd_symtab_start = 0; + return 0; + } +- if ( !load ) +- dom->kernel_seg.vend = maxaddr; ++ + return 0; + } + +-- +1.9.5 (Apple Git-50.3) + Property changes on: head/sysutils/xen-tools/files/0002-libxc-fix-xc_dom_load_elf_symtab.patch ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property