[Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image

Fam Zheng posted 9 patches 8 years, 5 months ago
There is a newer version of this series
[Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Fam Zheng 8 years, 5 months ago
The image is prepared following instructions as in:

https://wiki.qemu.org/Hosts/BSD

Signed-off-by: Fam Zheng <famz@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 <famz@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;
+    """
+
+    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))
-- 
2.13.4


Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Philippe Mathieu-Daudé 7 years ago
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 <famz@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 <famz@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.

> +    """
> +
> +    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))
> 

Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Kamil Rytarowski 7 years ago
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 <famz@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 <famz@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?

>> +    """
>> +
>> +    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))
>>
> 


Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Philippe Mathieu-Daudé 7 years ago
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 <famz@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 <famz@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))
>>>
>>
> 
> 

Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Daniel P. Berrangé 7 years ago
On Thu, Jan 24, 2019 at 05:10:19PM +0100, Philippe Mathieu-Daudé wrote:
> 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 <famz@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 <famz@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:

ENOTSUP from mmap is certainly what you'd expect from the W^X  scenario

  https://undeadly.org/cgi?action=article&sid=20160527203200

 "W^X violations are no longer permitted by default.  A kernel log message
  is generated, and mprotect/mmap return ENOTSUP.  If the sysctl(8) flag
  kern.wxabort is set then a SIGABRT occurs instead, for gdb use or coredump
  creation."


> 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.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Brad Smith 7 years ago
On 1/24/2019 11:52 AM, Daniel P. Berrangé wrote:

> On Thu, Jan 24, 2019 at 05:10:19PM +0100, Philippe Mathieu-Daudé wrote:
>> 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 <famz@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 <famz@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:
> ENOTSUP from mmap is certainly what you'd expect from the W^X  scenario
>
>    https://undeadly.org/cgi?action=article&sid=20160527203200
>
>   "W^X violations are no longer permitted by default.  A kernel log message
>    is generated, and mprotect/mmap return ENOTSUP.  If the sysctl(8) flag
>    kern.wxabort is set then a SIGABRT occurs instead, for gdb use or coredump
>    creation."

Yes, this policy change was introduced with 6.0.

Our ports tree has an option which results in the QEMU binaries being 
linked with "-z wxneeded".


Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Thomas Huth 7 years ago
On 2019-01-25 01:48, Brad Smith wrote:
> On 1/24/2019 11:52 AM, Daniel P. Berrangé wrote:
> 
>> On Thu, Jan 24, 2019 at 05:10:19PM +0100, Philippe Mathieu-Daudé wrote:
>>> 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 <famz@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 <famz@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:
>> ENOTSUP from mmap is certainly what you'd expect from the W^X  scenario
>>
>>    https://undeadly.org/cgi?action=article&sid=20160527203200
>>
>>   "W^X violations are no longer permitted by default.  A kernel log
>> message
>>    is generated, and mprotect/mmap return ENOTSUP.  If the sysctl(8) flag
>>    kern.wxabort is set then a SIGABRT occurs instead, for gdb use or
>> coredump
>>    creation."
> 
> Yes, this policy change was introduced with 6.0.
> 
> Our ports tree has an option which results in the QEMU binaries being
> linked with "-z wxneeded".

Then it's maybe high time to send such changes upstream now ;-)

 Thomas

Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Brad Smith 7 years ago
On 1/25/2019 1:24 AM, Thomas Huth wrote:

> On 2019-01-25 01:48, Brad Smith wrote:
>> On 1/24/2019 11:52 AM, Daniel P. Berrangé wrote:
>>
>>> On Thu, Jan 24, 2019 at 05:10:19PM +0100, Philippe Mathieu-Daudé wrote:
>>>> 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 <famz@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 <famz@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:
>>> ENOTSUP from mmap is certainly what you'd expect from the W^X  scenario
>>>
>>>     https://undeadly.org/cgi?action=article&sid=20160527203200
>>>
>>>    "W^X violations are no longer permitted by default.  A kernel log
>>> message
>>>     is generated, and mprotect/mmap return ENOTSUP.  If the sysctl(8) flag
>>>     kern.wxabort is set then a SIGABRT occurs instead, for gdb use or
>>> coredump
>>>     creation."
>> Yes, this policy change was introduced with 6.0.
>>
>> Our ports tree has an option which results in the QEMU binaries being
>> linked with "-z wxneeded".
> Then it's maybe high time to send such changes upstream now ;-)


I have not considered submitting such a patch as it's just a workaround 
for an
issue within QEMU. Everything else that we had as local patches or local 
build
fiddling to build things properly has been integrated in some manner.


Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Peter Maydell 7 years ago
On Fri, 25 Jan 2019 at 18:36, Brad Smith <brad@comstyle.com> wrote:
>
> On 1/25/2019 1:24 AM, Thomas Huth wrote:
>
> > On 2019-01-25 01:48, Brad Smith wrote:
> >> Our ports tree has an option which results in the QEMU binaries being
> >> linked with "-z wxneeded".
> > Then it's maybe high time to send such changes upstream now ;-)
>
>
> I have not considered submitting such a patch as it's just a workaround
> for an
> issue within QEMU. Everything else that we had as local patches or local
> build
> fiddling to build things properly has been integrated in some manner.

We'll happily take a patch that fixes the underlying issue properly
if you'd prefer...

thanks
-- PMM

Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Philippe Mathieu-Daudé 7 years ago
On 1/25/19 7:38 PM, Peter Maydell wrote:
> On Fri, 25 Jan 2019 at 18:36, Brad Smith <brad@comstyle.com> wrote:
>>
>> On 1/25/2019 1:24 AM, Thomas Huth wrote:
>>
>>> On 2019-01-25 01:48, Brad Smith wrote:
>>>> Our ports tree has an option which results in the QEMU binaries being
>>>> linked with "-z wxneeded".
>>> Then it's maybe high time to send such changes upstream now ;-)
>>
>>
>> I have not considered submitting such a patch as it's just a workaround
>> for an
>> issue within QEMU. Everything else that we had as local patches or local
>> build
>> fiddling to build things properly has been integrated in some manner.
> 
> We'll happily take a patch that fixes the underlying issue properly
> if you'd prefer...

I sent "configure: Disable W^X on OpenBSD" to help upstream developers
to test their patches on OpenBSD here:
https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg06674.html

Regards,

Phil.

Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Philippe Mathieu-Daudé 7 years ago
On 1/25/19 1:48 AM, Brad Smith wrote:
> On 1/24/2019 11:52 AM, Daniel P. Berrangé wrote:
> 
>> On Thu, Jan 24, 2019 at 05:10:19PM +0100, Philippe Mathieu-Daudé wrote:
>>> 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 <famz@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 <famz@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:
>> ENOTSUP from mmap is certainly what you'd expect from the W^X  scenario
>>
>>    https://undeadly.org/cgi?action=article&sid=20160527203200
>>
>>   "W^X violations are no longer permitted by default.  A kernel log
>> message
>>    is generated, and mprotect/mmap return ENOTSUP.  If the sysctl(8) flag
>>    kern.wxabort is set then a SIGABRT occurs instead, for gdb use or
>> coredump
>>    creation."
> 
> Yes, this policy change was introduced with 6.0.
> 
> Our ports tree has an option which results in the QEMU binaries being
> linked with "-z wxneeded".

I was preparing a draft about deprecating/removing OpenBSD support
because it is broken/untested... For sure it is untested.
/me feeling he lost 2 days...

Re: [Qemu-devel] [PATCH RFC 8/9] tests: Add OpenBSD image
Posted by Peter Maydell 7 years ago
On Thu, 24 Jan 2019 at 15:52, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
> After spending various hours trying to fix various issues on OpenBSD, I
> notice that we never ran tests on this OS.

When I was running tests on a custom OpenBSD VM rather than
using the tests/vm one I'm pretty sure I used to run "make check"
on it, so I was a bit surprised to see that tests weren't run
for the tests/vm setup, but I never cared enough to try to
find out why...

thanks
-- PMM