ports/emulators/qemu-user-static
Kyle Evans c4c2aea8a7 emulators/qemu-user-static: update to f7fd10d7677c
This features a number of fixes; highlights:
- Handle aarch64 YIELD instructions
- Bump ARG_MAX to match the FreeBSD default on LP64 platforms
- Implement __specialfd(2) and copy_file_range(2)
- Style fixes
- Fix an issue with binary execution[0]
- Fix page fault handling for self-modifying binaries[1]
- Suppress noise from CIOGSESSION usage and restore CRIOGET handling
- Patch _umtx_op(2) through to the kernel where possible[2]

[0] Attempting to execute a binary by name was broken when there was an
unrelated entry by the same name in PWD.  The report below observed it in the
cluster while building games/dobutsu, which tried to execute `xz` in a directory
that had an `xz` directory inside of it.

[1] From the fixing commit, qemu mprotect()s pages contained translated code
to PROT_READ | PROT_EXEC and upgrades protections as needed upon page fault.
This was broken in a previous commit that misidentified by the trap # that
should have been observed.  The observed issue a broken JIT compiler in
libpcre.

[2] _umtx_op can now be handled by the kernel in cases where the target long
size is not longer than the host, and the target and host are the same
endianness.  This is much more reliable than our previous emulation of these
operations, and should reduce hangs sometimes observed in threaded applications.
Note that this requires a recent stable/12 or 13.x/-CURRENT.

PR:		253375 [0]
PR:		253335 [1]
MFH:		2021Q1
2021-02-26 04:53:22 +00:00
..