[ccing somebody else who ran into this, since I've figured out why.] On 3 May 2016 at 01:47, Christopher Friedt <chrisfri...@gmail.com> wrote: > The file ivshmem.c unconditionally references event_notifier_init_fd() > in util/event_notifier-posix.c, even if CONFIG_EVENTFD is not defined.
Yes, but ivshmem.c is only built if CONFIG_IVSHMEM, and CONFIG_IVSHMEM is set (in default-configs/pci.mak) to CONFIG_EVENTFD. So if CONFIG_EVENTFD is not defined then we should never build ivshmem.o. The problem here is that you've run into a bug in QEMU's makefiles, where a change in an included .mak file in default-configs fails to cause the config-devices.mak file to be rebuilt. In commit 330b583 we changed pci.mak so that CONFIG_IVSHMEM is set to CONFIG_EVENTFD rather than CONFIG_POSIX, so if your config-devices.mak predates that commit then it will have incorrectly not been recreated and so your build will still try to build ivshmem.c. You can check whether this is true by looking at (for instance) x86_64-softmmu/config-devices.mak in your build tree: if it has a line "CONFIG_IVSHMEM=$(CONFIG_POSIX)" in it then it's the out of date version. You should be able to fix this by deleting */config-devices.mak from your build tree (or by blowing away the build tree entirely and recreating it.) Then try rebuilding -- ivshmem.c should not be compiled. We really must track down this dependency bug, it is very confusing when it bites people. thanks -- PMM