devel/qemu-cheri: update, drop MIPS, add Morello

Update to the latest CHERI Qemu, dropping support for the obsolete
MIPS targets (cheri128 and cheri128magic) and adding support for
Arm's Morello architecture.
This commit is contained in:
Brooks Davis 2022-04-18 17:46:34 +01:00
parent ca9eaf50bc
commit 6417835d78
5 changed files with 27 additions and 80 deletions

View file

@ -8,6 +8,8 @@ MAINTAINER= brooks@FreeBSD.org
COMMENT?= QEMU emulator with CHERI CPU support
# XXX: disabling gnutls doesn't work so depend on it to avoid breakage.
BUILD_DEPENDS= bash:shells/bash \
meson>=0.57.1_1:devel/meson
LIB_DEPENDS= libcapstone.so:devel/capstone3 \
libdrm.so:graphics/libdrm \
libepoxy.so:graphics/libepoxy \
@ -19,13 +21,15 @@ LICENSE= GPLv2
USE_GITHUB= yes
GH_TUPLE= CTSRD-CHERI:qemu:${QEMU_COMMIT} \
CTSRD-CHERI:dtc:${DTC_COMMIT}:dtc/dtc \
CTSRD-CHERI:libslirp:${LIBSLIRP_COMMIT}:libslirp/slirp \
qemu:keycodemapdb:6b3d716:qemu/ui/keycodemapdb \
qemu:dtc:85e5d83:qemu_dtc/dtc \
qemu:libslirp:487f4bf4:qemu_libslirp/slirp \
qemu:berkeley-softfloat-3:b64af41:qemu_berkeley_softfloat_3/tests/fp/berkeley-softfloat-3 \
qemu:berkeley-testfloat-3:ca9fa2b:qemu_berkeley_testfloat_3/tests/fp/berkeley-testfloat-3 \
qemu:keycodemapdb:6b3d716:qemu_keycodemapdb/ui/keycodemapdb \
HAS_CONFIGURE= yes
USES= compiler:c11 cpe gettext-runtime gl gmake gnome iconv:wchar_t perl5 \
pkgconfig python:build xorg
MAKEFILE= GNUmakefile
USES= cpe gmake gnome ninja:build perl5 pkgconfig python:build xorg
USE_XORG= pixman
USE_GNOME+= glib20 libxml2
USE_PERL5= build
@ -37,7 +41,7 @@ OPTIONS_DEFINE= DOCS
.include "Makefile.snapshot"
CONFIGURE_ARGS+= \
--target-list=cheri128-softmmu,cheri128magic-softmmu,riscv64cheri-softmmu \
--target-list=riscv64cheri-softmmu,morello-softmmu \
--disable-curl \
--disable-git-update \
--disable-gtk \
@ -49,19 +53,18 @@ CONFIGURE_ARGS+= \
--disable-sdl \
--disable-vte \
--disable-xen \
--meson=${LOCALBASE}/bin/meson \
--smbd=${LOCALBASE}/sbin/smbd \
--extra-cflags="-g ${EXTRA_CFLAGS}" \
--localstatedir=/var
EXTRA_CFLAGS= -DCHERI_UNALIGNED
PLIST_FILES= bin/qemu-system-cheri128 \
bin/qemu-system-cheri128magic \
PLIST_FILES= bin/qemu-system-morello \
bin/qemu-system-riscv64cheri
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/cheri128-softmmu/qemu-system-cheri128 \
${WRKSRC}/cheri128magic-softmmu/qemu-system-cheri128magic \
${WRKSRC}/riscv64cheri-softmmu/qemu-system-riscv64cheri \
${INSTALL_PROGRAM} ${WRKSRC}/build/qemu-system-morello \
${WRKSRC}/build/qemu-system-riscv64cheri \
${STAGEDIR}${PREFIX}/bin/
.include <bsd.port.mk>

View file

@ -2,8 +2,6 @@
#
# Generated by: files/gen-Makefile.snapshot.sh.
#
SNAPDATE= 20200327
SNAPDATE= 20220301
QEMU_COMMIT= 0a323821042c36e21ea80e58b9545dfc3b0cb8ef
LIBSLIRP_COMMIT= 6651ba26c4e94f64d6448a2db4991269ce553bd9
DTC_COMMIT= 87a656ae5ff96c4903e68eb2f999532a3b98e3a7
QEMU_COMMIT= ef6b6871875931eb77aaa36124fa5cee796d4782

View file

@ -1,9 +1,13 @@
TIMESTAMP = 1585324588
SHA256 (CTSRD-CHERI-qemu-0.d20200327-0a323821042c36e21ea80e58b9545dfc3b0cb8ef_GH0.tar.gz) = ba74e4192d02ec6a5c6f72a3ee42ea4113d4719692d98a590ef9968759492fbf
SIZE (CTSRD-CHERI-qemu-0.d20200327-0a323821042c36e21ea80e58b9545dfc3b0cb8ef_GH0.tar.gz) = 29937048
SHA256 (CTSRD-CHERI-dtc-87a656ae5ff96c4903e68eb2f999532a3b98e3a7_GH0.tar.gz) = 9dd7b32701106948f380acdd5d91391031b3d56e9fa84e8a49d469f50bdb2ddf
SIZE (CTSRD-CHERI-dtc-87a656ae5ff96c4903e68eb2f999532a3b98e3a7_GH0.tar.gz) = 200509
SHA256 (CTSRD-CHERI-libslirp-6651ba26c4e94f64d6448a2db4991269ce553bd9_GH0.tar.gz) = aaffa33addd3aec53b5def83c4735275c9f501425bb0d8706494a7724875d8a6
SIZE (CTSRD-CHERI-libslirp-6651ba26c4e94f64d6448a2db4991269ce553bd9_GH0.tar.gz) = 121465
TIMESTAMP = 1650064276
SHA256 (CTSRD-CHERI-qemu-0.d20220301-ef6b6871875931eb77aaa36124fa5cee796d4782_GH0.tar.gz) = 50736712857b58e6adbf73bd293683daea15e0036acabc3a4e7c496a22216bec
SIZE (CTSRD-CHERI-qemu-0.d20220301-ef6b6871875931eb77aaa36124fa5cee796d4782_GH0.tar.gz) = 31619793
SHA256 (qemu-dtc-85e5d83_GH0.tar.gz) = 3507d8e96d1942493128591b518c522cfd56d7779ce53283b2cf33661b809479
SIZE (qemu-dtc-85e5d83_GH0.tar.gz) = 200566
SHA256 (qemu-libslirp-487f4bf4_GH0.tar.gz) = 92b459875d1113db42a1cb1406f26c191b7c4af4d4ef7eed70eae2b4e55fc1ab
SIZE (qemu-libslirp-487f4bf4_GH0.tar.gz) = 131446
SHA256 (qemu-berkeley-softfloat-3-b64af41_GH0.tar.gz) = f22bf52cc980b122c663f2e22f8098fa60d8e468e0095f1da58231235a6b324e
SIZE (qemu-berkeley-softfloat-3-b64af41_GH0.tar.gz) = 148768
SHA256 (qemu-berkeley-testfloat-3-ca9fa2b_GH0.tar.gz) = 6df3f2dee4a1b50521d7270c89392fa4ba8ca80f6dbaba92816e03e517269562
SIZE (qemu-berkeley-testfloat-3-ca9fa2b_GH0.tar.gz) = 138959
SHA256 (qemu-keycodemapdb-6b3d716_GH0.tar.gz) = c9d3412510aac999865d01aaa14b1fa8dc0385db55c5cf6c4d95d160bd0eaee9
SIZE (qemu-keycodemapdb-6b3d716_GH0.tar.gz) = 47905

View file

@ -31,10 +31,6 @@ query_repo()
query_repo qemu qemu-cheri
QEMU_COMMIT=$SHA
query_repo libslirp
LIBSLIRP_COMMIT=$SHA
query_repo dtc
DTC_COMMIT=$SHA
cat <<EOF > Makefile.snapshot
# Generated file! Do not edit!
@ -44,8 +40,6 @@ cat <<EOF > Makefile.snapshot
SNAPDATE= ${MAX_DATE}
QEMU_COMMIT= ${QEMU_COMMIT}
LIBSLIRP_COMMIT= ${LIBSLIRP_COMMIT}
DTC_COMMIT= ${DTC_COMMIT}
EOF
rm -f $tmpfile

View file

@ -1,52 +0,0 @@
--- configure.orig 2019-12-09 17:14:11 UTC
+++ configure
@@ -6358,27 +6358,30 @@ if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ]
cat > $TMPC <<EOF
int main(void) { return 0; }
EOF
- textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
+ textseg_ldflags="-Wl,--image-base=$textseg_addr"
if ! compile_prog "" "$textseg_ldflags"; then
- # In case ld does not support -Ttext-segment, edit the default linker
- # script via sed to set the .text start addr. This is needed on FreeBSD
- # at least.
- if ! $ld --verbose >/dev/null 2>&1; then
- error_exit \
- "We need to link the QEMU user mode binaries at a" \
- "specific text address. Unfortunately your linker" \
- "doesn't support either the -Ttext-segment option or" \
- "printing the default linker script with --verbose." \
- "If you don't want the user mode binaries, pass the" \
- "--disable-user option to configure."
- fi
+ textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
+ if ! compile_prog "" "$textseg_ldflags"; then
+ # In case ld does not support -Ttext-segment, edit the default linker
+ # script via sed to set the .text start addr. This is needed on FreeBSD
+ # at least.
+ if ! $ld --verbose >/dev/null 2>&1; then
+ error_exit \
+ "We need to link the QEMU user mode binaries at a" \
+ "specific text address. Unfortunately your linker" \
+ "doesn't support either the -Ttext-segment option or" \
+ "printing the default linker script with --verbose." \
+ "If you don't want the user mode binaries, pass the" \
+ "--disable-user option to configure."
+ fi
- $ld --verbose | sed \
- -e '1,/==================================================/d' \
- -e '/==================================================/,$d' \
- -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
- -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
- textseg_ldflags="-Wl,-T../config-host.ld"
+ $ld --verbose | sed \
+ -e '1,/==================================================/d' \
+ -e '/==================================================/,$d' \
+ -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
+ -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
+ textseg_ldflags="-Wl,-T../config-host.ld"
+ fi
fi
fi
fi