qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH for-5.2] configure: Make "does libgio work" test pull in some


From: Peter Maydell
Subject: Re: [PATCH for-5.2] configure: Make "does libgio work" test pull in some actual functions
Date: Tue, 17 Nov 2020 11:44:22 +0000

On Mon, 16 Nov 2020 at 18:25, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> On 16/11/20 11:46, Peter Maydell wrote:
> > In commit 76346b6264a9b01979 we tried to add a configure check that
> > the libgio pkg-config data was correct, which builds an executable
> > linked against it.  Unfortunately this doesn't catch the problem
> > (missing static library dependency info), because a "do nothing" test
> > source file doesn't have any symbol references that cause the linker
> > to pull in .o files from libgio.a, and so we don't see the "missing
> > symbols from libmount" error that a full QEMU link triggers.
> >
> > (The ineffective test went unnoticed because of a typo that
> > effectively disabled libgio unconditionally, but after commit
> > 3569a5dfc11f2 fixed that, a static link of the system emulator on
> > Ubuntu stopped working again.)
> >
> > Improve the gio test by having the test source fragment reference a
> > g_dbus function (which is what is indirectly causing us to end up
> > wanting functions from libmount).
> >
> > Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> > ---
> > The ideal thing here might perhaps be to force the linker to
> > pull in everything in the library rather than trusting that
> > this particular function is sufficient to trigger the need
> > for libmount functions, but annoyingly gcc and clang
> > have different command line options to do that.
> >
> >   configure | 11 +++++++++--
> >   1 file changed, 9 insertions(+), 2 deletions(-)
> >
> > diff --git a/configure b/configure
> > index 4cef321d9dc..2717cf1db0a 100755
> > --- a/configure
> > +++ b/configure
> > @@ -3512,8 +3512,15 @@ if $pkg_config --atleast-version=$glib_req_ver 
> > gio-2.0; then
> >       # Check that the libraries actually work -- Ubuntu 18.04 ships
> >       # with pkg-config --static --libs data for gio-2.0 that is missing
> >       # -lblkid and will give a link error.
> > -    write_c_skeleton
> > -    if compile_prog "" "$gio_libs" ; then
> > +    cat > $TMPC <<EOF
> > +#include <gio/gio.h>
> > +int main(void)
> > +{
> > +    g_dbus_proxy_new_sync(0, 0, 0, 0, 0, 0, 0, 0);
> > +    return 0;
> > +}
> > +EOF
> > +    if compile_prog "$gio_cflags" "$gio_libs" ; then
> >           gio=yes
> >       else
> >           gio=no
> >
>
> Looks good,
>
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

Thanks; applied to target-arm.next for 5.2.

-- PMM



reply via email to

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