If built with Xcode 11 (or below), a compile time error will occur due to symbol not found. (QEMU's ./configure detects this and doesn't enable it) If built with Xcode 12 without the checks, a runtime error will occur.
-j On Wed, Oct 28, 2020 at 5:23 AM Stefan Hajnoczi <stefa...@redhat.com> wrote: > > On Tue, Oct 27, 2020 at 08:07:01PM -0700, Joelle van Dyne wrote: > > macOS 11/iOS 14 added preadv/pwritev APIs. Due to weak linking, configure > > will succeed with CONFIG_PREADV even when targeting a lower OS version. We > > therefore need to check at run time if we can actually use these APIs. > > > > Signed-off-by: Joelle van Dyne <j...@getutm.app> > > --- > > block/file-posix.c | 12 ++++++++++++ > > 1 file changed, 12 insertions(+) > > What happens when preadv() is called prior to macOS 11/iOS 14? > > If I understand correctly the runtime check is preferrable because > otherwise a binary compiled on recent macOS/iOS would ship with preadv() > support but fail when executed on an older macOS/iOS?