qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v6 3/7] qemu: add support for iOS host


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v6 3/7] qemu: add support for iOS host
Date: Tue, 28 Nov 2023 16:12:14 +0100
User-agent: Mozilla Thunderbird

(Cc'ing Ariadne, libucontext maintainer)

On 21/1/21 19:53, Peter Maydell wrote:
On Tue, 5 Jan 2021 at 02:25, Joelle van Dyne <j@getutm.app> wrote:

This introduces support for building for iOS hosts. When the correct Xcode
toolchain is used, iOS host will be detected automatically.

* block: disable features not supported by iOS sandbox
* slirp: disable SMB features for iOS
* osdep: disable system() calls for iOS

+``ucontext`` support is broken on iOS. The implementation from ``libucontext``
+is used instead.

Just a note since it came up in another thread today, but
looking at libucontext its aarch64 backend doesn't handle
the floating point registers. I think if the *context
routines don't save/restore the callee-saves fp regs
(v8-v15, FPCR) then it's liable to result in tricky-to-track
down bugs where some kept-in-a-callee-saves-fp-register data
from a function further up the callstack gets corrupted, depending
on what the compiler happens to do. It would be good to work with
the libucontext maintainers to add that functionality.

Per https://github.com/kaniini/libucontext/blob/master/README.md#caveats
this is a design choice:

  Only basic GPR registers are saved and restored when context swapping.
  The glibc implementation uses hardware capability detection to
  save/restore other register groups, such as the FPU registers or
  vector processing (AltiVec/AVX/NEON) registers. Adding this capability
  detection would significantly increase the complexity of the project
  and thus is not implemented. Support for compiling in code to
  save/restore FPU registers or vector registers may be added in a later
  release as a build-time setting -- for now, we assume a soft-float ABI
  with no optional processor features.

Minor update in 2022:
https://github.com/kaniini/libucontext/commit/5244775fb93ab9

  This is a work in progress, as newer compilers will spill even
  non-floating-point state through floating point registers when allowed
  to do so.

Regards,

Phil.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]