On 1/26/21 4:58 PM, Peter Maydell wrote: > Move the preadv availability check to meson.build. This is what we > want to be doing for host-OS-feature-checks anyway, but it also fixes > a problem with building for macOS with the most recent XCode SDK on a > Catalina host. > > On that configuration, 'preadv()' is provided as a weak symbol, so > that programs can be built with optional support for it and make a > runtime availability check to see whether the preadv() they have is a > working one or one which they must not call because it will > runtime-assert. QEMU's configure test passes (unless you're building > with --enable-werror) because the test program using preadv() > compiles, but then QEMU crashes at runtime when preadv() is called, > with errors like: > > dyld: lazy symbol binding failed: Symbol not found: _preadv > Referenced from: /Users/pm215/src/qemu/./build/x86/tests/test-replication > Expected in: /usr/lib/libSystem.B.dylib > > dyld: Symbol not found: _preadv > Referenced from: /Users/pm215/src/qemu/./build/x86/tests/test-replication > Expected in: /usr/lib/libSystem.B.dylib > > Meson's own function availability check has a special case for macOS > which adds '-Wl,-no_weak_imports' to the compiler flags, which forces > the test to require the real function, not the macOS-version-too-old > stub. > > So this commit fixes the bug where macOS builds on Catalina currently > require --disable-werror. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > --- > configure | 16 ---------------- > meson.build | 4 +++- > 2 files changed, 3 insertions(+), 17 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com>