Skip to content
  • Peter Maydell's avatar
    2b9f74ef
    configure: Move preadv check to meson.build · 2b9f74ef
    Peter Maydell authored
    
    
    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: default avatarPeter Maydell <peter.maydell@linaro.org>
    Acked-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
    Message-id: 20210126155846.17109-1-peter.maydell@linaro.org
    2b9f74ef
    configure: Move preadv check to meson.build
    Peter Maydell authored
    
    
    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: default avatarPeter Maydell <peter.maydell@linaro.org>
    Acked-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
    Message-id: 20210126155846.17109-1-peter.maydell@linaro.org
Loading