Re: [PATCH] Fix test case qemuagenttest compilation.

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

 



If I build libvirt with CFLAGS="-O0" in fedora 19, the error will happen.
If CFLAGS="-O2", not. I think this optimization options break the rule of
lazy linking.

----- Original Message -----
From: "Eric Blake" <eblake@xxxxxxxxxx>
To: "Jincheng Miao" <jmiao@xxxxxxxxxx>
Cc: libvir-list@xxxxxxxxxx
Sent: Thursday, August 1, 2013 5:48:07 AM
Subject: Re:  [PATCH] Fix test case qemuagenttest compilation.

On 07/31/2013 02:36 PM, Jincheng Miao wrote:
> When compiling qemuagenttest, a link error occurs like:
> ./.libs/libqemumonitortestutils.a(qemumonitortestutils.o): In function `qemuMonitorTestFree':
> libvirt/tests/qemumonitortestutils.c:346: undefined reference to `qemuMonitorClose'
> ./.libs/libqemumonitortestutils.a(qemumonitortestutils.o): In function `qemuMonitorTestNew':
> libvirt/tests/qemumonitortestutils.c:870: undefined reference to `qemuMonitorOpen'
> collect2: error: ld returned 1 exit status

What platform was this on?  Some distros are set up to be tolerant of
lazy resolution, which masks issues like this (hence, I'm _not_ seeing
this error on Fedora).

> 
> And I checked this error, it caused by the position of
> libqemumonitortestutils.a in gcc arguments.
> 
> If libqemumonitortestutils.a before libvirt_driver_qemu_impl.a
> and libvirt_driver_network_impl.a, the compilation passed.
> Otherwise, failed.
> 
> I think this should be a gcc's bug, but nevermind,
> just fix it in libvirt.

No, it's not a bug in gcc, but an actual bug in libvirt.  If you can't
rely on lazy resolution (such as on platforms like mingw, except that
mingw doesn't build qemumonitortestutils in the first place), then
libraries MUST be listed in the order in which later libraries satisfy
symbols used by earlier libraries.

ACK, although I'd like to touch up your commit message (and in
particular mention the platform where this matters) before pushing.

> 
> ---
>  tests/Makefile.am | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> index 9c578fa..b36922e 100644
> --- a/tests/Makefile.am
> +++ b/tests/Makefile.am
> @@ -424,7 +424,7 @@ qemuagenttest_SOURCES = \
>  	testutils.c testutils.h \
>  	testutilsqemu.c testutilsqemu.h \
>  	$(NULL)
> -qemuagenttest_LDADD = $(qemu_LDADDS) libqemumonitortestutils.la
> +qemuagenttest_LDADD = libqemumonitortestutils.la $(qemu_LDADDS) 
>  
>  qemuhotplugtest_SOURCES = \
>  	qemuhotplugtest.c \
> 

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]