On 1/24/19 4:56 PM, Kamil Rytarowski wrote: > On 24.01.2019 16:52, Philippe Mathieu-Daudé wrote: >> On 8/16/17 9:21 AM, Fam Zheng wrote: >>> The image is prepared following instructions as in: >>> >>> https://wiki.qemu.org/Hosts/BSD >>> >>> Signed-off-by: Fam Zheng <f...@redhat.com> >>> --- >>> tests/vm/openbsd | 45 +++++++++++++++++++++++++++++++++++++++++++++ >>> 1 file changed, 45 insertions(+) >>> create mode 100755 tests/vm/openbsd >>> >>> diff --git a/tests/vm/openbsd b/tests/vm/openbsd >>> new file mode 100755 >>> index 0000000000..d37ff83a59 >>> --- /dev/null >>> +++ b/tests/vm/openbsd >>> @@ -0,0 +1,45 @@ >>> +#!/usr/bin/env python >>> +# >>> +# OpenBSD VM image >>> +# >>> +# Copyright (C) 2017 Red Hat Inc. >>> +# >>> +# Authors: >>> +# Fam Zheng <f...@redhat.com> >>> +# >>> +# This work is licensed under the terms of the GNU GPL, version 2. See >>> +# the COPYING file in the top-level directory. >>> +# >>> + >>> +import os >>> +import sys >>> +import logging >>> +import subprocess >>> +import tempfile >>> +import time >>> +import basevm >>> + >>> +class OpenBSDVM(basevm.BaseVM): >>> + name = "openbsd" >>> + BUILD_SCRIPT = """ >>> + set -e; >>> + cd $(mktemp -d /var/tmp/qemu-test.XXXXXX); >>> + tar -xf /dev/rsd1c; >>> + ./configure --cc=x86_64-unknown-openbsd6.1-gcc-4.9.4 >>> --python=python2.7 {configure_opts}; >>> + gmake -j{jobs}; >>> + # XXX: "gmake check" seems to always hang or fail >>> + #gmake check; >> >> OK, Now it makes more sense... >> >> After spending various hours trying to fix various issues on OpenBSD, I >> notice that we never ran tests on this OS. >> The only binary I can run is qemu-img, the rest seems useless. >> I'll summarize in a different thread. >> > > Is this W^X related?
Part of it could be but I'm not sure. The 6.1 VM provided by Fam has /usr/local mounted with wxallowed, I tried building/running there and nothing changed, mmap() still returns ENOTSUP: (gdb) bt #0 0x000017e3c156c50a in _thread_sys___syscall () at {standard input}:5 #1 0x000017e3c15e5d7a in *_libc_mmap (addr=Variable "addr" is not available. ) at /usr/local/lib/libc/sys/mmap.c:47 #2 0x000017e17d9abc8b in alloc_code_gen_buffer () at /usr/local/qemu/accel/tcg/translate-all.c:1064 #3 0x000017e17d9abd04 in code_gen_alloc (tb_size=0) at /usr/local/qemu/accel/tcg/translate-all.c:1112 #4 0x000017e17d9abe81 in tcg_exec_init (tb_size=0) at /usr/local/qemu/accel/tcg/translate-all.c:1149 #5 0x000017e17d9897e9 in tcg_init (ms=0x17e45e456800) at /usr/local/qemu/accel/tcg/tcg-all.c:66 #6 0x000017e17d9891b8 in accel_init_machine (acc=0x17e3c3f50800, ms=0x17e45e456800) at /usr/local/qemu/accel/accel.c:63 #7 0x000017e17d989312 in configure_accelerator (ms=0x17e45e456800, progname=0x7f7fffff07b0 "lm32-softmmu/qemu-system-lm32") at /usr/local/qemu/accel/accel.c:111 #8 0x000017e17d9d8616 in main (argc=1, argv=0x7f7fffff06b8, envp=0x7f7fffff06c8) at vl.c:4325 Since the current script build into /var/tmp (which is symlinked to /tmp) I also mounted /tmp wxallowed using the following patch: -- >8 -- --- a/tests/vm/openbsd +++ b/tests/vm/openbsd @@ -39,6 +39,12 @@ class OpenBSDVM(basevm.BaseVM): if os.path.exists(img): os.rename(img_tmp, img) + self.boot(img) + self.wait_ssh() + self.ssh_root_check("sed -E -i 's_(/tmp\ ffs)\ ([^\ ]*)_\\1 \\2,wxallowed_' /etc/fstab") + self.ssh_root_check("cat /etc/fstab") + self.ssh_root("halt -p") + self.wait() --- $ mount /dev/sd0a on / type ffs (local) /dev/sd0k on /home type ffs (local, nodev, nosuid) /dev/sd0d on /tmp type ffs (local, nodev, nosuid, wxallowed) /dev/sd0f on /usr type ffs (local, nodev) /dev/sd0g on /usr/X11R6 type ffs (local, nodev) /dev/sd0h on /usr/local type ffs (local, nodev, wxallowed) /dev/sd0j on /usr/obj type ffs (local, nodev, nosuid) /dev/sd0i on /usr/src type ffs (local, nodev, nosuid) /dev/sd0e on /var type ffs (local, nodev, nosuid) Still no progress. > >>> + """ >>> + >>> + def build_image(self, img, rebuild=False): >>> + if os.path.exists(img) and not rebuild: >>> + return >>> + cimg = >>> self._download_with_cache("http://download.patchew.org/openbsd.img.xz") >>> + img_tmp_xz = img + ".tmp.xz" >>> + img_tmp = img + ".tmp" >>> + subprocess.check_call(["cp", "-f", cimg, img_tmp_xz]) >>> + subprocess.check_call(["xz", "-df", img_tmp_xz]) >>> + subprocess.check_call(["mv", img_tmp, img]) >>> + >>> +if __name__ == "__main__": >>> + sys.exit(basevm.main(OpenBSDVM)) >>> >> > >
signature.asc
Description: OpenPGP digital signature