On 16 November 2012 09:35, Paolo Bonzini <pbonz...@redhat.com> wrote: > Ok, I reproduced the original binutils bug, and found a typo in the > weakrefs implementation. Does this work for you? > > diff --git a/compiler.h b/compiler.h > index 55d7d74..d552757 100644 > --- a/compiler.h > +++ b/compiler.h > @@ -50,11 +50,12 @@ > # define __printf__ __gnu_printf__ > # endif > # endif > -# if defined(__APPLE__) > +# if defined(__APPLE__) || defined(_WIN32) > # define QEMU_WEAK_ALIAS(newname, oldname) \ > - static typeof(oldname) weak_##newname __attribute__((unused, > weakref(#oldname))) > + static typeof(oldname) weak_##newname __attribute__((unused, > weakref(#newname))) > # define QEMU_WEAK_REF(newname, oldname) (weak_##newname ? weak_##newname : > oldname) > # else > +#error > # define QEMU_WEAK_ALIAS(newname, oldname) \ > typeof(oldname) newname __attribute__((weak, alias (#oldname))) > # define QEMU_WEAK_REF(newname, oldname) newname
This change makes compilation fail with clang: LINK qemu-ga Undefined symbols for architecture x86_64: "_monitor_fdset_dup_fd_add", referenced from: _qemu_open in osdep.o "_monitor_fdset_dup_fd_remove", referenced from: _qemu_close in osdep.o "_monitor_fdset_get_fd", referenced from: _qemu_open in osdep.o "_monitor_get_fd", referenced from: _socket_connect in qemu-sockets.o _socket_listen in qemu-sockets.o "_qemu_set_fd_handler2", referenced from: _inet_connect_addr in qemu-sockets.o _unix_connect_opts in qemu-sockets.o _wait_for_connect in qemu-sockets.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) (clang builds OK with current git master.) -- PMM