qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] undefined symbol _nettle_cast5_set_key


From: Programmingkid
Subject: Re: [Qemu-devel] undefined symbol _nettle_cast5_set_key
Date: Tue, 31 May 2016 11:48:45 -0400

On May 31, 2016, at 10:51 AM, Daniel P. Berrange wrote:

> On Tue, May 31, 2016 at 10:25:20AM -0400, Programmingkid wrote:
>> 
>> On May 31, 2016, at 10:00 AM, Daniel P. Berrange wrote:
>> 
>>> On Fri, May 20, 2016 at 04:43:51PM -0600, Eric Blake wrote:
>>>> On 05/20/2016 01:15 PM, Programmingkid wrote:
>>>>> Noticed this bug after a 'git pull'. My repo is at commit 
>>>>> 65603e2fc18b48e6e55a3dd693669413141694ec - 
>>>>> tci: do not include exec/exec-all.h
>>>>> 
>>>>> I am building QEMU on Mac OS 10.6 with GCC 4.9.
>>>>> Here is the full message:
>>>>> 
>>>>> LINK  qemu-nbd
>>>>> Undefined symbols for architecture x86_64:
>>>>> "_nettle_cast5_set_key", referenced from:
>>>>>     _qcrypto_cipher_new in cipher.o
>>>> 
>>>> What version of nettle are you compiling against? Obviously it's an
>>>> older version, but is it one that we need to work around at configure
>>>> time, or one that you should just update locally?
>>> 
>>> So we already have compatibility code to allow us to build with older
>>> versions of nettle that I've tested right back to nettle 2.4.
>>> 
>>> The "cast5_set_key" method is present in the nettle 3.2 version that
>>> Programmingkid has installed. The nettle headers mangle the name
>>> 'cast5_set_key' into 'nettle_cast5_set_key', but I'm not sure where
>>> the extra leading '_' is coming from in either _nettle_cast5_set_key
>>> or _qcrypto_cipher_new. Presumably that is something specific to
>>> Os-X linking.
>>> 
>>> So I don't think this is a question of incompatible older versions of
>>> nettle. Rather than is some problem with linking going on here.
>>> 
>>> 
>>> I'd like to see the output of 'configure' as well as the config.log
>>> and config-host.mak files that it generates when showing this error.
>>> 
>>> Also I'd like the output of 'make V=1' so we see the full linker
>>> command line, not just the summary.
>>> 
>>> Regards,
>>> Daniel
>> 
>> Here is everything you wanted: configure output, config.log, 
>> config-host.mak, and make V=1.
>> 
>> $ ./configure --cxx=gcc-4.9 --cc=gcc-4.9 --objcc=gcc-4.9 --disable-gtk 
>> --disable-sdl --target-list=ppc-softmmu,i386-softmmu
>> ld: unknown option: --verbose
> 
> 
>> GNUTLS support    yes
>> GNUTLS hash       yes
>> GNUTLS rnd        yes
>> libgcrypt         no
>> libgcrypt kdf     no
>> nettle            yes (3.2)
>> nettle kdf        yes
> 
> Ok, that shows we've detected your nettle 3.2 install. The
> support for 'kdf' also shows we successfully compiled and
> linked against that. This is shows your 3.2 install of nettle
> is present & correct which is good.
> 
>> libtasn1          yes
>> curses support    yes
>> virgl support     no
>> curl support      yes
>> mingw32 support   no
>> Audio drivers     coreaudio
>> Block whitelist (rw) 
>> Block whitelist (ro) 
>> VirtFS support    no
>> VNC support       yes
>> VNC SASL support  yes
>> VNC JPEG support  yes
>> VNC PNG support   yes
>> xen support       no
>> brlapi support    no
>> bluez  support    no
>> Documentation     yes
>> PIE               no
>> vde support       no
>> netmap support    no
>> Linux AIO support no
>> ATTR/XATTR support no
>> Install blobs     yes
>> KVM support       no
>> RDMA support      no
>> TCG interpreter   no
>> fdt support       yes
>> preadv support    no
>> fdatasync         no
>> madvise           yes
>> posix_madvise     yes
>> sigev_thread_id   no
>> uuid support      yes
>> libcap-ng support no
>> vhost-net support no
>> vhost-scsi support no
>> Trace backends    log
>> spice support     no 
>> rbd support       no
>> xfsctl support    no
>> smartcard support no
>> libusb            yes
>> usb net redir     yes
>> OpenGL support    no
>> OpenGL dmabufs    no
>> libiscsi support  no
>> libnfs support    no
>> build guest agent yes
>> QGA VSS support   no
>> QGA w32 disk info no
>> QGA MSI support   no
>> seccomp support   no
>> coroutine backend sigaltstack
>> coroutine pool    yes
>> GlusterFS support no
>> Archipelago support no
>> gcov              gcov
>> gcov enabled      no
>> TPM support       yes
>> libssh2 support   no
>> TPM passthrough   no
>> QOM debugging     yes
>> vhdx              yes
>> lzo support       no
>> snappy support    no
>> bzip2 support     yes
>> NUMA host support no
>> tcmalloc support  no
>> jemalloc support  no
>> avx2 optimization no
>> 
>> 
>> 
>> The config.log file:
>> 
> 
> 
>> gcc-4.9 -m64 -DOS_OBJECT_USE_OBJC=0 -arch x86_64 -D_GNU_SOURCE 
>> -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes 
>> -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes 
>> -fno-strict-aliasing -fno-common -Wendif-labels -Wmissing-include-dirs 
>> -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self 
>> -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition 
>> -Wtype-limits -fstack-protector-strong 
>> -I/usr/local/Cellar/gnutls/3.4.11/include 
>> -I/usr/local/Cellar/nettle/3.2/include 
>> -I/usr/local/Cellar/libtasn1/4.8/include -I/opt/local/include -o 
>> config-temp/qemu-conf.exe config-temp/qemu-conf.c -m64 -framework 
>> CoreFoundation -framework IOKit -arch x86_64 -g 
>> -L/usr/local/Cellar/gnutls/3.4.11/lib -lgnutls
> 
> 
> 
>> gcc-4.9 -m64 -DOS_OBJECT_USE_OBJC=0 -arch x86_64 -D_GNU_SOURCE 
>> -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes 
>> -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes 
>> -fno-strict-aliasing -fno-common -Wendif-labels -Wmissing-include-dirs 
>> -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self 
>> -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition 
>> -Wtype-limits -fstack-protector-strong 
>> -I/usr/local/Cellar/gnutls/3.4.11/include 
>> -I/usr/local/Cellar/nettle/3.2/include 
>> -I/usr/local/Cellar/libtasn1/4.8/include -I/opt/local/include 
>> -I/usr/local/Cellar/nettle/3.2/include 
>> -I/usr/local/Cellar/nettle/3.2/include -o config-temp/qemu-conf.exe 
>> config-temp/qemu-conf.c -m64 -framework CoreFoundation -framework IOKit 
>> -arch x86_64 -g -L/usr/local/Cellar/nettle/3.2/lib -lnettle
> 
> This is the link line where configure tested for the KDF function and it 
> looks normal and
> is pointing the linker to /usr/local/Cellar/nettle/3.2/lib
> 
> 
> 
>> gcc-4.9 -I/opt/local/include/pixman-1 
>> -I/Users/john/Documents/Development/Projects/Qemu/qemu-git/dtc/libfdt -m64 
>> -DOS_OBJECT_USE_OBJC=0 -arch x86_64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 
>> -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef 
>> -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common  
>> -Wendif-labels -Wmissing-include-dirs -Wempty-body -Wnested-externs 
>> -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers 
>> -Wold-style-declaration -Wold-style-definition -Wtype-limits 
>> -fstack-protector-strong -I/usr/local/Cellar/gnutls/3.4.11/include 
>> -I/usr/local/Cellar/nettle/3.2/include 
>> -I/usr/local/Cellar/libtasn1/4.8/include -I/opt/local/include 
>> -I/usr/local/Cellar/nettle/3.2/include   -I/opt/local/include/libpng16 
>> -I/usr/local/Cellar/libusb/1.0.20/include/libusb-1.0 
>> -I/usr/local/Cellar/usbredir/0.7.1/include 
>> -I/Users/john/Documents/Development/Projects/Qemu/qemu-git/tests -O2 
>> -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -D_REENTRANT 
>> -I/usr/local/Cellar/glib/2.46.2/include/glib-2.0 
>> -I/usr/local/Cellar/glib/2.46.2/lib/glib-2.0/include 
>> -I/usr/local/opt/gettext/include -g  -m64 -framework CoreFoundation 
>> -framework IOKit -arch x86_64 -g  -o qemu-nbd qemu-nbd.o async.o 
>> thread-pool.o block.o blockjob.o main-loop.o iohandler.o qemu-timer.o 
>> aio-posix.o qemu-io-cmds.o block/raw_bsd.o block/qcow.o block/vdi.o 
>> block/vmdk.o block/cloop.o block/bochs.o block/vpc.o block/vvfat.o 
>> block/qcow2.o block/qcow2-refcount.o block/qcow2-cluster.o 
>> block/qcow2-snapshot.o block/qcow2-cache.o block/qed.o block/qed-gencb.o 
>> block/qed-l2-cache.o block/qed-table.o block/qed-cluster.o block/qed-check.o 
>> block/vhdx.o block/vhdx-endian.o block/vhdx-log.o block/quorum.o 
>> block/parallels.o block/blkdebug.o block/blkverify.o block/blkreplay.o 
>> block/block-backend.o block/snapshot.o block/qapi.o block/raw-posix.o 
>> block/null.o block/mirror.o block/io.o block/throttle-groups.o block/nbd.o 
>> block/nbd-client.o block/sheepdog.o block/accounting.o block/dirty-bitmap.o 
>> block/write-threshold.o block/crypto.o nbd/server.o nbd/client.o 
>> nbd/common.o block/curl.o block/dmg.o crypto/init.o crypto/hash.o 
>> crypto/aes.o crypto/desrfb.o crypto/cipher.o crypto/tlscreds.o 
>> crypto/tlscredsanon.o crypto/tlscredsx509.o crypto/tlssession.o 
>> crypto/secret.o crypto/random-gnutls.o crypto/pbkdf.o crypto/pbkdf-nettle.o 
>> crypto/ivgen.o crypto/ivgen-essiv.o crypto/ivgen-plain.o 
>> crypto/ivgen-plain64.o crypto/afsplit.o crypto/xts.o crypto/block.o 
>> crypto/block-qcow.o crypto/block-luks.o io/channel.o io/channel-buffer.o 
>> io/channel-command.o io/channel-file.o io/channel-socket.o io/channel-tls.o 
>> io/channel-watch.o io/channel-websock.o io/channel-util.o io/task.o 
>> qom/object.o qom/container.o qom/qom-qobject.o qom/object_interfaces.o  
>> libqemuutil.a libqemustub.a  -lz -L/opt/local/lib -lcurl -lbz2 
>> -L/usr/local/Cellar/glib/2.46.2/lib -L/usr/local/opt/gettext/lib 
>> -lgthread-2.0 -lglib-2.0 -lintl  -lz -lz -L/usr/local/Cellar/nettle/3.2/lib 
>> -lnettle -L/usr/local/Cellar/gnutls/3.4.11/lib -lgnutls  -lutil
>> Undefined symbols for architecture x86_64:
>>  "_nettle_cast5_set_key", referenced from:
>>      _qcrypto_cipher_new in cipher.o
>> ld: symbol(s) not found for architecture x86_64
>> collect2: error: ld returned 1 exit status
>> make: *** [qemu-nbd] Error 1
> 
> This linker line again looks basically sound. It is still passing the
> correct -lnettle arg, and the -I and -L args to point to the nettle
> 3.2 installation.
> 
> Given that we found the "KDF" support in nettle, we know that it is
> new enough to support the "nettle_cast5_set_key" function too so
> we ought to link correctly.
> 
> The only thing that occurs to me is that we have a number of other
> -L args present - eg -L/opt/local/lib.
> 
> I wonder if one of those  other search paths has a differnet version
> of nettle installed in it, causing gcc to link to the wrong one.

I did a search and found libnettle.4.7.dylib in /opt/local/lib. I also found 
libnettle.6.2.dylib in /usr/local/Cellar/nettle/3.2/lib.




reply via email to

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