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
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))
>
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))
>>
>
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))
>>>
>>
>
>
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 :|
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".
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
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.
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
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.
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...
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
© 2016 - 2026 Red Hat, Inc.