From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:53729) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1go2Vy-0006q4-1L for qemu-devel@nongnu.org; Mon, 28 Jan 2019 03:43:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1go2Vw-0007GI-61 for qemu-devel@nongnu.org; Mon, 28 Jan 2019 03:43:33 -0500 Received: from mx1.redhat.com ([209.132.183.28]:58816) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1go2Vu-0007El-8Z for qemu-devel@nongnu.org; Mon, 28 Jan 2019 03:43:30 -0500 References: <20190125192719.15339-1-philmd@redhat.com> <20190125192719.15339-2-philmd@redhat.com> From: Thomas Huth Message-ID: <76f0dc0e-620c-407b-a99f-8629c25472fb@redhat.com> Date: Mon, 28 Jan 2019 09:43:12 +0100 MIME-Version: 1.0 In-Reply-To: <20190125192719.15339-2-philmd@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 1/3] configure: Disable W^X on OpenBSD List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?Q?Philippe_Mathieu-Daud=c3=a9?= , qemu-devel@nongnu.org, Brad Smith , Kamil Rytarowski , Peter Maydell Cc: Fam Zheng , Li Qiang , Stefan Hajnoczi , Paolo Bonzini , =?UTF-8?Q?Marc-Andr=c3=a9_Lureau?= , =?UTF-8?Q?Alex_Benn=c3=a9e?= On 2019-01-25 20:27, Philippe Mathieu-Daud=C3=A9 wrote: > Since OpenBSD 6.0 [1], W^X is enforced by default [2]. > TCG requires WX access. Disable W^X if it is available. > This fixes: >=20 > # lm32-softmmu/qemu-system-lm32 > Could not allocate dynamic translator buffer >=20 > # sysctl kern.wxabort=3D1 > kern.wxabort: 0 -> 1 > # lm32-softmmu/qemu-system-lm32 > mmap: Not supported > Abort trap (core dumped) > # gdb -q lm32-softmmu/qemu-system-lm32 qemu-system-lm32.core > (gdb) bt > #0 0x000017e3c156c50a in _thread_sys___syscall () at {standard input= }:5 > #1 0x000017e3c15e5d7a in *_libc_mmap (addr=3DVariable "addr" is not = available.) at /usr/src/lib/libc/sys/mmap.c:47 > #2 0x000017e17d9abc8b in alloc_code_gen_buffer () at /usr/src/qemu/a= ccel/tcg/translate-all.c:1064 > #3 0x000017e17d9abd04 in code_gen_alloc (tb_size=3D0) at /usr/src/qe= mu/accel/tcg/translate-all.c:1112 > #4 0x000017e17d9abe81 in tcg_exec_init (tb_size=3D0) at /usr/src/qem= u/accel/tcg/translate-all.c:1149 > #5 0x000017e17d9897e9 in tcg_init (ms=3D0x17e45e456800) at /usr/src/= qemu/accel/tcg/tcg-all.c:66 > #6 0x000017e17d9891b8 in accel_init_machine (acc=3D0x17e3c3f50800, m= s=3D0x17e45e456800) at /usr/src/qemu/accel/accel.c:63 > #7 0x000017e17d989312 in configure_accelerator (ms=3D0x17e45e456800,= progname=3D0x7f7fffff07b0 "lm32-softmmu/qemu-system-lm32") at /usr/src/q= emu/accel/accel.c:111 > #8 0x000017e17d9d8616 in main (argc=3D1, argv=3D0x7f7fffff06b8, envp= =3D0x7f7fffff06c8) at vl.c:4325 >=20 > [1] https://www.openbsd.org/faq/upgrade60.html > [2] https://undeadly.org/cgi?action=3Darticle&sid=3D20160527203200 >=20 > Signed-off-by: Philippe Mathieu-Daud=C3=A9 > --- > configure | 11 +++++++++++ > 1 file changed, 11 insertions(+) >=20 > diff --git a/configure b/configure > index b18281c61f..f6acc028a7 100755 > --- a/configure > +++ b/configure > @@ -5795,6 +5795,17 @@ if test "$mingw32" =3D "yes" ; then > done > fi > =20 > +# Disable W^X if available I'd like to suggest to mention OpenBSD in the comment. > +if test "$tcg" =3D "yes" -a "$targetos" =3D "OpenBSD"; then > + cat > $TMPC < + int main(void) { return 0; } > +EOF > + wx_ldflags=3D"-Wl,-z,wxneeded" > + if compile_prog "" "$wx_ldflags"; then > + QEMU_LDFLAGS=3D"$QEMU_LDFLAGS -Wl,-z,wxneeded" Why do you introduce the wx_ldflags variable above, just to use it one time? I'd suggest to either use it in the QEMU_LDFLAGS line, too, or to get rid of the variable completely and always use -Wl,-z,wxneeded directl= y. Thomas > + fi > +fi > + > qemu_confdir=3D$sysconfdir$confsuffix > qemu_moddir=3D$libdir$confsuffix > qemu_datadir=3D$datadir$confsuffix