[Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available

Kamil Rytarowski posted 1 patch 6 years, 10 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170531120049.14111-1-n54@gmx.com
Test checkpatch passed
Test docker passed
Test s390x passed
configure                            | 2 ++
contrib/ivshmem-client/Makefile.objs | 2 +-
contrib/ivshmem-server/Makefile.objs | 2 +-
3 files changed, 4 insertions(+), 2 deletions(-)
[Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Kamil Rytarowski 6 years, 10 months ago
Currently ivshmem requires eventfd() which is Linux specific.
Do not and build it unconditionally on every Linux/BSD/Solaris.

This patch indirectly fixes build failure on NetBSD, where these tools
additionally require -lrt for shm_open(3). In future there should be
added support for NetBSD and the linking addressed appropriately.

Signed-off-by: Kamil Rytarowski <n54@gmx.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
---
 configure                            | 2 ++
 contrib/ivshmem-client/Makefile.objs | 2 +-
 contrib/ivshmem-server/Makefile.objs | 2 +-
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 1a5ee4b909..483307be53 100755
--- a/configure
+++ b/configure
@@ -4928,6 +4928,8 @@ if test "$want_tools" = "yes" ; then
   tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
   if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
     tools="qemu-nbd\$(EXESUF) $tools"
+  fi
+  if [ "$eventfd" = "yes" ]; then
     tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
   fi
 fi
diff --git a/contrib/ivshmem-client/Makefile.objs b/contrib/ivshmem-client/Makefile.objs
index bfab2d20dd..13d864082d 100644
--- a/contrib/ivshmem-client/Makefile.objs
+++ b/contrib/ivshmem-client/Makefile.objs
@@ -1 +1 @@
-ivshmem-client-obj-y = ivshmem-client.o main.o
+ivshmem-client-obj-$(CONFIG_IVSHMEM) = ivshmem-client.o main.o
diff --git a/contrib/ivshmem-server/Makefile.objs b/contrib/ivshmem-server/Makefile.objs
index c060dd3698..d9469fd777 100644
--- a/contrib/ivshmem-server/Makefile.objs
+++ b/contrib/ivshmem-server/Makefile.objs
@@ -1 +1 @@
-ivshmem-server-obj-y = ivshmem-server.o main.o
+ivshmem-server-obj-$(CONFIG_IVSHMEM) = ivshmem-server.o main.o
-- 
2.13.0


Re: [Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Michael Tokarev 6 years, 10 months ago
31.05.2017 15:00, Kamil Rytarowski wrote:
> Currently ivshmem requires eventfd() which is Linux specific.
> Do not and build it unconditionally on every Linux/BSD/Solaris.
> 
> This patch indirectly fixes build failure on NetBSD, where these tools
> additionally require -lrt for shm_open(3). In future there should be
> added support for NetBSD and the linking addressed appropriately.

Applied to -trivial, thanks!

/mjt

Re: [Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Michael Tokarev 6 years, 10 months ago
31.05.2017 15:00, Kamil Rytarowski wrote:
> Currently ivshmem requires eventfd() which is Linux specific.
> Do not and build it unconditionally on every Linux/BSD/Solaris.
> 
> This patch indirectly fixes build failure on NetBSD, where these tools
> additionally require -lrt for shm_open(3). In future there should be
> added support for NetBSD and the linking addressed appropriately.

Unfortunately this breaks static build.

$ ../configure --disable-system --disable-linux-user --static
$ make V=1
...
c++ -I/usr/include/pixman-1  -Werror -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -m64 -mcx16 -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 -fwrapv  -Wendif-labels -Wno-shift-negative-value -Wno-missing-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/include/libpng16 -I/build/qemu/git/tests -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g  -Wl,--warn-common -m64 -static -g  -o ivshmem-server
libqemuutil.a libqemustub.a   -lm -lgthread-2.0 -pthread -lglib-2.0 -pthread -lpcre -pthread  -lz -lrt -lz -lnettle  -lutil
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
Makefile:475: error building «ivshmem-server»
$ _

I'll take a look at this later. reverting it for now.

Thanks,

/mjt

Re: [Qemu-devel] [Qemu-trivial] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Kamil Rytarowski 6 years, 10 months ago
On 05.06.2017 16:29, Michael Tokarev wrote:
> 31.05.2017 15:00, Kamil Rytarowski wrote:
>> Currently ivshmem requires eventfd() which is Linux specific.
>> Do not and build it unconditionally on every Linux/BSD/Solaris.
>>
>> This patch indirectly fixes build failure on NetBSD, where these tools
>> additionally require -lrt for shm_open(3). In future there should be
>> added support for NetBSD and the linking addressed appropriately.
> 
> Unfortunately this breaks static build.
> 
> $ ../configure --disable-system --disable-linux-user --static
> $ make V=1
> ...
> c++ -I/usr/include/pixman-1  -Werror -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -m64 -mcx16 -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 -fwrapv  -Wendif-labels -Wno-shift-negative-value -Wno-missing-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/include/libpng16 -I/build/qemu/git/tests -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g  -Wl,--warn-common -m64 -static -g  -o ivshmem-server
> libqemuutil.a libqemustub.a   -lm -lgthread-2.0 -pthread -lglib-2.0 -pthread -lpcre -pthread  -lz -lrt -lz -lnettle  -lutil
> /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
> (.text+0x20): undefined reference to `main'
> collect2: error: ld returned 1 exit status
> Makefile:475: error building «ivshmem-server»
> $ _
> 
> I'll take a look at this later. reverting it for now.
> 
> Thanks,
> 
> /mjt
> 

I will try to reproduce it locally.

Re: [Qemu-devel] [Qemu-trivial] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Markus Armbruster 6 years, 10 months ago
Kamil Rytarowski <n54@gmx.com> writes:

> On 05.06.2017 16:29, Michael Tokarev wrote:
>> 31.05.2017 15:00, Kamil Rytarowski wrote:
>>> Currently ivshmem requires eventfd() which is Linux specific.
>>> Do not and build it unconditionally on every Linux/BSD/Solaris.
>>>
>>> This patch indirectly fixes build failure on NetBSD, where these tools
>>> additionally require -lrt for shm_open(3). In future there should be
>>> added support for NetBSD and the linking addressed appropriately.
>> 
>> Unfortunately this breaks static build.
>> 
>> $ ../configure --disable-system --disable-linux-user --static
>> $ make V=1
>> ...
>> c++ -I/usr/include/pixman-1  -Werror -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -m64 -mcx16 -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 -fwrapv  -Wendif-labels -Wno-shift-negative-value -Wno-missing-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/include/libpng16 -I/build/qemu/git/tests -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g  -Wl,--warn-common -m64 -static -g  -o ivshmem-server
>> libqemuutil.a libqemustub.a   -lm -lgthread-2.0 -pthread -lglib-2.0 -pthread -lpcre -pthread  -lz -lrt -lz -lnettle  -lutil
>> /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
>> (.text+0x20): undefined reference to `main'
>> collect2: error: ld returned 1 exit status
>> Makefile:475: error building «ivshmem-server»
>> $ _
>> 
>> I'll take a look at this later. reverting it for now.
>> 
>> Thanks,
>> 
>> /mjt
>> 
>
> I will try to reproduce it locally.

I haven't, but here's a quick guess on what we need to squash into the
patch:

diff --git a/Makefile b/Makefile
index c830d7a..2ef5a78 100644
--- a/Makefile
+++ b/Makefile
@@ -469,10 +469,12 @@ ifneq ($(EXESUF),)
 qemu-ga: qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI)
 endif
 
+ifdef CONFIG_IVSHMEM
 ivshmem-client$(EXESUF): $(ivshmem-client-obj-y) $(COMMON_LDADDS)
 	$(call LINK, $^)
 ivshmem-server$(EXESUF): $(ivshmem-server-obj-y) $(COMMON_LDADDS)
 	$(call LINK, $^)
+endif
 
 module_block.h: $(SRC_PATH)/scripts/modules/module_block.py config-host.mak
 	$(call quiet-command,$(PYTHON) $< $@ \
diff --git a/tests/Makefile.include b/tests/Makefile.include
index f42f3df..ab70d01 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -203,7 +203,7 @@ gcov-files-pci-y += hw/display/virtio-gpu-pci.c
 gcov-files-pci-$(CONFIG_VIRTIO_VGA) += hw/display/virtio-vga.c
 check-qtest-pci-y += tests/intel-hda-test$(EXESUF)
 gcov-files-pci-y += hw/audio/intel-hda.c hw/audio/hda-codec.c
-check-qtest-pci-$(CONFIG_EVENTFD) += tests/ivshmem-test$(EXESUF)
+check-qtest-pci-$(CONFIG_IVSHMEM) += tests/ivshmem-test$(EXESUF)
 gcov-files-pci-y += hw/misc/ivshmem.c
 
 check-qtest-i386-y = tests/endianness-test$(EXESUF)

Re: [Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Michael Tokarev 6 years, 10 months ago
06.06.2017 09:54, Markus Armbruster wrote:

[ ./configure --disable-linux-user --disable-system --static ]

> I haven't, but here's a quick guess on what we need to squash into the
> patch:
> 
> diff --git a/Makefile b/Makefile
> index c830d7a..2ef5a78 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -469,10 +469,12 @@ ifneq ($(EXESUF),)
>  qemu-ga: qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI)
>  endif
>  
> +ifdef CONFIG_IVSHMEM
>  ivshmem-client$(EXESUF): $(ivshmem-client-obj-y) $(COMMON_LDADDS)
>  	$(call LINK, $^)
>  ivshmem-server$(EXESUF): $(ivshmem-server-obj-y) $(COMMON_LDADDS)
>  	$(call LINK, $^)
> +endif

This effectively disables building ivshmem executables on this config
on linux, while previously they were building fine. Hmm..

/mjt

Re: [Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Markus Armbruster 6 years, 10 months ago
Michael Tokarev <mjt@tls.msk.ru> writes:

> 06.06.2017 09:54, Markus Armbruster wrote:
>
> [ ./configure --disable-linux-user --disable-system --static ]
>
>> I haven't, but here's a quick guess on what we need to squash into the
>> patch:
>> 
>> diff --git a/Makefile b/Makefile
>> index c830d7a..2ef5a78 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -469,10 +469,12 @@ ifneq ($(EXESUF),)
>>  qemu-ga: qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI)
>>  endif
>>  
>> +ifdef CONFIG_IVSHMEM
>>  ivshmem-client$(EXESUF): $(ivshmem-client-obj-y) $(COMMON_LDADDS)
>>  	$(call LINK, $^)
>>  ivshmem-server$(EXESUF): $(ivshmem-server-obj-y) $(COMMON_LDADDS)
>>  	$(call LINK, $^)
>> +endif
>
> This effectively disables building ivshmem executables on this config
> on linux, while previously they were building fine. Hmm..

These executables are only useful together with an ivshmem device.  Not
building them when they can't be useful makes sense to me.

See previous discussion
Message-ID: <87fufwjfqw.fsf@dusky.pond.sub.org>
https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg05108.html

Re: [Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Kamil Rytarowski 6 years, 10 months ago
On 06.06.2017 09:10, Michael Tokarev wrote:
> 06.06.2017 09:54, Markus Armbruster wrote:
> 
> [ ./configure --disable-linux-user --disable-system --static ]
> 
>> I haven't, but here's a quick guess on what we need to squash into the
>> patch:
>>
>> diff --git a/Makefile b/Makefile
>> index c830d7a..2ef5a78 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -469,10 +469,12 @@ ifneq ($(EXESUF),)
>>  qemu-ga: qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI)
>>  endif
>>  
>> +ifdef CONFIG_IVSHMEM
>>  ivshmem-client$(EXESUF): $(ivshmem-client-obj-y) $(COMMON_LDADDS)
>>  	$(call LINK, $^)
>>  ivshmem-server$(EXESUF): $(ivshmem-server-obj-y) $(COMMON_LDADDS)
>>  	$(call LINK, $^)
>> +endif
> 
> This effectively disables building ivshmem executables on this config
> on linux, while previously they were building fine. Hmm..
> 
> /mjt
> 

I've linked qemu with the original patch and:
./configure --disable-linux-user --disable-system --static

I got some warnings, I think they are originated from our libc and are
not related to qemu:
  LINK    sparc64-bsd-user/qemu-sparc64
/usr/lib/libc.a(initfini.o): warning: common of `__ps_strings'
overridden by definition
/usr/lib/crt0.o: warning: defined here
/usr/lib/libc.a(_env.o): warning: multiple common of `environ'
/usr/lib/crt0.o: warning: previous common is here
/usr/lib/libc.a(getprogname.o): warning: common of `__progname'
overridden by definition
/usr/lib/crt0.o: warning: defined here
  LINK    x86_64-bsd-user/qemu-x86_64
/usr/lib/libc.a(initfini.o): warning: common of `__ps_strings'
overridden by definition
/usr/lib/crt0.o: warning: defined here
/usr/lib/libc.a(_env.o): warning: multiple common of `environ'
/usr/lib/crt0.o: warning: previous common is here
/usr/lib/libc.a(getprogname.o): warning: common of `__progname'
overridden by definition
/usr/lib/crt0.o: warning: defined here
  LINK    i386-bsd-user/qemu-i386
/usr/lib/libc.a(initfini.o): warning: common of `__ps_strings'
overridden by definition
/usr/lib/crt0.o: warning: defined here
/usr/lib/libc.a(_env.o): warning: multiple common of `environ'
/usr/lib/crt0.o: warning: previous common is here
/usr/lib/libc.a(getprogname.o): warning: common of `__progname'
overridden by definition
/usr/lib/crt0.o: warning: defined here

I will ask other NetBSD developers about __ps_strings, environ and
__progname.

Re: [Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Peter Maydell 6 years, 10 months ago
On 6 June 2017 at 14:38, Kamil Rytarowski <n54@gmx.com> wrote:
> I've linked qemu with the original patch and:
> ./configure --disable-linux-user --disable-system --static
>
> I got some warnings, I think they are originated from our libc and are
> not related to qemu:
>   LINK    sparc64-bsd-user/qemu-sparc64
> /usr/lib/libc.a(initfini.o): warning: common of `__ps_strings'
> overridden by definition
> /usr/lib/crt0.o: warning: defined here
> /usr/lib/libc.a(_env.o): warning: multiple common of `environ'
> /usr/lib/crt0.o: warning: previous common is here
> /usr/lib/libc.a(getprogname.o): warning: common of `__progname'
> overridden by definition
> /usr/lib/crt0.o: warning: defined here

Yes, I think I've seen those before on NetBSD -- they look
like a bug in your libc to me, it shouldn't be confusing itself
with itself like that :-)

thanks
-- PMM

Re: [Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Kamil Rytarowski 6 years, 10 months ago
On 06.06.2017 16:34, Peter Maydell wrote:
> On 6 June 2017 at 14:38, Kamil Rytarowski <n54@gmx.com> wrote:
>> I've linked qemu with the original patch and:
>> ./configure --disable-linux-user --disable-system --static
>>
>> I got some warnings, I think they are originated from our libc and are
>> not related to qemu:
>>   LINK    sparc64-bsd-user/qemu-sparc64
>> /usr/lib/libc.a(initfini.o): warning: common of `__ps_strings'
>> overridden by definition
>> /usr/lib/crt0.o: warning: defined here
>> /usr/lib/libc.a(_env.o): warning: multiple common of `environ'
>> /usr/lib/crt0.o: warning: previous common is here
>> /usr/lib/libc.a(getprogname.o): warning: common of `__progname'
>> overridden by definition
>> /usr/lib/crt0.o: warning: defined here
> 
> Yes, I think I've seen those before on NetBSD -- they look
> like a bug in your libc to me, it shouldn't be confusing itself
> with itself like that :-)
> 
> thanks
> -- PMM
> 

I have filed this bug upstream: http://gnats.netbsd.org/52278


Re: [Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Kamil Rytarowski 6 years, 10 months ago
On 06.06.2017 16:56, Kamil Rytarowski wrote:
> On 06.06.2017 16:34, Peter Maydell wrote:
>> On 6 June 2017 at 14:38, Kamil Rytarowski <n54@gmx.com> wrote:
>>> I've linked qemu with the original patch and:
>>> ./configure --disable-linux-user --disable-system --static
>>>
>>> I got some warnings, I think they are originated from our libc and are
>>> not related to qemu:
>>>   LINK    sparc64-bsd-user/qemu-sparc64
>>> /usr/lib/libc.a(initfini.o): warning: common of `__ps_strings'
>>> overridden by definition
>>> /usr/lib/crt0.o: warning: defined here
>>> /usr/lib/libc.a(_env.o): warning: multiple common of `environ'
>>> /usr/lib/crt0.o: warning: previous common is here
>>> /usr/lib/libc.a(getprogname.o): warning: common of `__progname'
>>> overridden by definition
>>> /usr/lib/crt0.o: warning: defined here
>>
>> Yes, I think I've seen those before on NetBSD -- they look
>> like a bug in your libc to me, it shouldn't be confusing itself
>> with itself like that :-)
>>
>> thanks
>> -- PMM
>>
> 
> I have filed this bug upstream: http://gnats.netbsd.org/52278
> 
> 


What's the status with this patch?

NetBSD build still breaks due to ivshmem-*.

Re: [Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Markus Armbruster 6 years, 10 months ago
Kamil Rytarowski <n54@gmx.com> writes:

> On 06.06.2017 16:56, Kamil Rytarowski wrote:
>> On 06.06.2017 16:34, Peter Maydell wrote:
>>> On 6 June 2017 at 14:38, Kamil Rytarowski <n54@gmx.com> wrote:
>>>> I've linked qemu with the original patch and:
>>>> ./configure --disable-linux-user --disable-system --static
>>>>
>>>> I got some warnings, I think they are originated from our libc and are
>>>> not related to qemu:
>>>>   LINK    sparc64-bsd-user/qemu-sparc64
>>>> /usr/lib/libc.a(initfini.o): warning: common of `__ps_strings'
>>>> overridden by definition
>>>> /usr/lib/crt0.o: warning: defined here
>>>> /usr/lib/libc.a(_env.o): warning: multiple common of `environ'
>>>> /usr/lib/crt0.o: warning: previous common is here
>>>> /usr/lib/libc.a(getprogname.o): warning: common of `__progname'
>>>> overridden by definition
>>>> /usr/lib/crt0.o: warning: defined here
>>>
>>> Yes, I think I've seen those before on NetBSD -- they look
>>> like a bug in your libc to me, it shouldn't be confusing itself
>>> with itself like that :-)
>>>
>>> thanks
>>> -- PMM
>>>
>> 
>> I have filed this bug upstream: http://gnats.netbsd.org/52278
>> 
>> 
>
>
> What's the status with this patch?
>
> NetBSD build still breaks due to ivshmem-*.

I guess Michael expects a v4 that doesn't break the static build.

Re: [Qemu-devel] [Qemu-trivial] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Kamil Rytarowski 6 years, 10 months ago
On 10.06.2017 17:15, Markus Armbruster wrote:
> Kamil Rytarowski <n54@gmx.com> writes:
> 
>> On 06.06.2017 16:56, Kamil Rytarowski wrote:
>>> On 06.06.2017 16:34, Peter Maydell wrote:
>>>> On 6 June 2017 at 14:38, Kamil Rytarowski <n54@gmx.com> wrote:
>>>>> I've linked qemu with the original patch and:
>>>>> ./configure --disable-linux-user --disable-system --static
>>>>>
>>>>> I got some warnings, I think they are originated from our libc and are
>>>>> not related to qemu:
>>>>>   LINK    sparc64-bsd-user/qemu-sparc64
>>>>> /usr/lib/libc.a(initfini.o): warning: common of `__ps_strings'
>>>>> overridden by definition
>>>>> /usr/lib/crt0.o: warning: defined here
>>>>> /usr/lib/libc.a(_env.o): warning: multiple common of `environ'
>>>>> /usr/lib/crt0.o: warning: previous common is here
>>>>> /usr/lib/libc.a(getprogname.o): warning: common of `__progname'
>>>>> overridden by definition
>>>>> /usr/lib/crt0.o: warning: defined here
>>>>
>>>> Yes, I think I've seen those before on NetBSD -- they look
>>>> like a bug in your libc to me, it shouldn't be confusing itself
>>>> with itself like that :-)
>>>>
>>>> thanks
>>>> -- PMM
>>>>
>>>
>>> I have filed this bug upstream: http://gnats.netbsd.org/52278
>>>
>>>
>>
>>
>> What's the status with this patch?
>>
>> NetBSD build still breaks due to ivshmem-*.
> 
> I guess Michael expects a v4 that doesn't break the static build.
> 

-static works for me, I have restricted options to test build on !NetBSD
systems.

Was this patch ok?

diff --git a/Makefile b/Makefile
index c830d7a..2ef5a78 100644
--- a/Makefile
+++ b/Makefile
@@ -469,10 +469,12 @@ ifneq ($(EXESUF),)
 qemu-ga: qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI)
 endif

+ifdef CONFIG_IVSHMEM
 ivshmem-client$(EXESUF): $(ivshmem-client-obj-y) $(COMMON_LDADDS)
 	$(call LINK, $^)
 ivshmem-server$(EXESUF): $(ivshmem-server-obj-y) $(COMMON_LDADDS)
 	$(call LINK, $^)
+endif


So I could amend it.

Re: [Qemu-devel] [Qemu-trivial] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Markus Armbruster 6 years, 10 months ago
Kamil Rytarowski <n54@gmx.com> writes:

> On 10.06.2017 17:15, Markus Armbruster wrote:
>> Kamil Rytarowski <n54@gmx.com> writes:
>> 
>>> On 06.06.2017 16:56, Kamil Rytarowski wrote:
>>>> On 06.06.2017 16:34, Peter Maydell wrote:
>>>>> On 6 June 2017 at 14:38, Kamil Rytarowski <n54@gmx.com> wrote:
>>>>>> I've linked qemu with the original patch and:
>>>>>> ./configure --disable-linux-user --disable-system --static
>>>>>>
>>>>>> I got some warnings, I think they are originated from our libc and are
>>>>>> not related to qemu:
>>>>>>   LINK    sparc64-bsd-user/qemu-sparc64
>>>>>> /usr/lib/libc.a(initfini.o): warning: common of `__ps_strings'
>>>>>> overridden by definition
>>>>>> /usr/lib/crt0.o: warning: defined here
>>>>>> /usr/lib/libc.a(_env.o): warning: multiple common of `environ'
>>>>>> /usr/lib/crt0.o: warning: previous common is here
>>>>>> /usr/lib/libc.a(getprogname.o): warning: common of `__progname'
>>>>>> overridden by definition
>>>>>> /usr/lib/crt0.o: warning: defined here
>>>>>
>>>>> Yes, I think I've seen those before on NetBSD -- they look
>>>>> like a bug in your libc to me, it shouldn't be confusing itself
>>>>> with itself like that :-)
>>>>>
>>>>> thanks
>>>>> -- PMM
>>>>>
>>>>
>>>> I have filed this bug upstream: http://gnats.netbsd.org/52278
>>>>
>>>>
>>>
>>>
>>> What's the status with this patch?
>>>
>>> NetBSD build still breaks due to ivshmem-*.
>> 
>> I guess Michael expects a v4 that doesn't break the static build.
>> 
>
> -static works for me, I have restricted options to test build on !NetBSD
> systems.
>
> Was this patch ok?
>
> diff --git a/Makefile b/Makefile
> index c830d7a..2ef5a78 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -469,10 +469,12 @@ ifneq ($(EXESUF),)
>  qemu-ga: qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI)
>  endif
>
> +ifdef CONFIG_IVSHMEM
>  ivshmem-client$(EXESUF): $(ivshmem-client-obj-y) $(COMMON_LDADDS)
>  	$(call LINK, $^)
>  ivshmem-server$(EXESUF): $(ivshmem-server-obj-y) $(COMMON_LDADDS)
>  	$(call LINK, $^)
> +endif
>
>
> So I could amend it.

Please do.  Additionally consider

diff --git a/tests/Makefile.include b/tests/Makefile.include
index f42f3df..ab70d01 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -203,7 +203,7 @@ gcov-files-pci-y += hw/display/virtio-gpu-pci.c
 gcov-files-pci-$(CONFIG_VIRTIO_VGA) += hw/display/virtio-vga.c
 check-qtest-pci-y += tests/intel-hda-test$(EXESUF)
 gcov-files-pci-y += hw/audio/intel-hda.c hw/audio/hda-codec.c
-check-qtest-pci-$(CONFIG_EVENTFD) += tests/ivshmem-test$(EXESUF)
+check-qtest-pci-$(CONFIG_IVSHMEM) += tests/ivshmem-test$(EXESUF)
 gcov-files-pci-y += hw/misc/ivshmem.c
 
 check-qtest-i386-y = tests/endianness-test$(EXESUF)

Re: [Qemu-devel] [Qemu-trivial] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Kamil Rytarowski 6 years, 10 months ago
On 19.06.2017 09:42, Markus Armbruster wrote:
> Kamil Rytarowski <n54@gmx.com> writes:
> 
>> On 10.06.2017 17:15, Markus Armbruster wrote:
>>> Kamil Rytarowski <n54@gmx.com> writes:
>>>
>>>> On 06.06.2017 16:56, Kamil Rytarowski wrote:
>>>>> On 06.06.2017 16:34, Peter Maydell wrote:
>>>>>> On 6 June 2017 at 14:38, Kamil Rytarowski <n54@gmx.com> wrote:
>>>>>>> I've linked qemu with the original patch and:
>>>>>>> ./configure --disable-linux-user --disable-system --static
>>>>>>>
>>>>>>> I got some warnings, I think they are originated from our libc and are
>>>>>>> not related to qemu:
>>>>>>>   LINK    sparc64-bsd-user/qemu-sparc64
>>>>>>> /usr/lib/libc.a(initfini.o): warning: common of `__ps_strings'
>>>>>>> overridden by definition
>>>>>>> /usr/lib/crt0.o: warning: defined here
>>>>>>> /usr/lib/libc.a(_env.o): warning: multiple common of `environ'
>>>>>>> /usr/lib/crt0.o: warning: previous common is here
>>>>>>> /usr/lib/libc.a(getprogname.o): warning: common of `__progname'
>>>>>>> overridden by definition
>>>>>>> /usr/lib/crt0.o: warning: defined here
>>>>>>
>>>>>> Yes, I think I've seen those before on NetBSD -- they look
>>>>>> like a bug in your libc to me, it shouldn't be confusing itself
>>>>>> with itself like that :-)
>>>>>>
>>>>>> thanks
>>>>>> -- PMM
>>>>>>
>>>>>
>>>>> I have filed this bug upstream: http://gnats.netbsd.org/52278
>>>>>
>>>>>
>>>>
>>>>
>>>> What's the status with this patch?
>>>>
>>>> NetBSD build still breaks due to ivshmem-*.
>>>
>>> I guess Michael expects a v4 that doesn't break the static build.
>>>
>>
>> -static works for me, I have restricted options to test build on !NetBSD
>> systems.
>>
>> Was this patch ok?
>>
>> diff --git a/Makefile b/Makefile
>> index c830d7a..2ef5a78 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -469,10 +469,12 @@ ifneq ($(EXESUF),)
>>  qemu-ga: qemu-ga$(EXESUF) $(QGA_VSS_PROVIDER) $(QEMU_GA_MSI)
>>  endif
>>
>> +ifdef CONFIG_IVSHMEM
>>  ivshmem-client$(EXESUF): $(ivshmem-client-obj-y) $(COMMON_LDADDS)
>>  	$(call LINK, $^)
>>  ivshmem-server$(EXESUF): $(ivshmem-server-obj-y) $(COMMON_LDADDS)
>>  	$(call LINK, $^)
>> +endif
>>
>>
>> So I could amend it.
> 
> Please do.  Additionally consider
> 
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index f42f3df..ab70d01 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -203,7 +203,7 @@ gcov-files-pci-y += hw/display/virtio-gpu-pci.c
>  gcov-files-pci-$(CONFIG_VIRTIO_VGA) += hw/display/virtio-vga.c
>  check-qtest-pci-y += tests/intel-hda-test$(EXESUF)
>  gcov-files-pci-y += hw/audio/intel-hda.c hw/audio/hda-codec.c
> -check-qtest-pci-$(CONFIG_EVENTFD) += tests/ivshmem-test$(EXESUF)
> +check-qtest-pci-$(CONFIG_IVSHMEM) += tests/ivshmem-test$(EXESUF)
>  gcov-files-pci-y += hw/misc/ivshmem.c
>  
>  check-qtest-i386-y = tests/endianness-test$(EXESUF)
> 

Thank you, I will give it a try.

Re: [Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Peter Maydell 6 years, 10 months ago
On 5 June 2017 at 15:29, Michael Tokarev <mjt@tls.msk.ru> wrote:
> 31.05.2017 15:00, Kamil Rytarowski wrote:
>> Currently ivshmem requires eventfd() which is Linux specific.
>> Do not and build it unconditionally on every Linux/BSD/Solaris.
>>
>> This patch indirectly fixes build failure on NetBSD, where these tools
>> additionally require -lrt for shm_open(3). In future there should be
>> added support for NetBSD and the linking addressed appropriately.
>
> Unfortunately this breaks static build.
>
> $ ../configure --disable-system --disable-linux-user --static
> $ make V=1
> ...

Why are you trying to build with both system emulation QEMU
and linux-user QEMU disabled anyway? That doesn't leave very
much left to build...

thanks
-- PMM

Re: [Qemu-devel] [PATCH v3] ivshmem-server: ivshmem-client: Build when eventfd() is available
Posted by Philippe Mathieu-Daudé 6 years, 10 months ago
On Thu, Jun 22, 2017 at 12:54 PM, Peter Maydell
<peter.maydell@linaro.org> wrote:
> On 5 June 2017 at 15:29, Michael Tokarev <mjt@tls.msk.ru> wrote:
[...]
>> $ ../configure --disable-system --disable-linux-user --static
>> $ make V=1
>> ...
>
> Why are you trying to build with both system emulation QEMU
> and linux-user QEMU disabled anyway? That doesn't leave very
> much left to build...

Hmm the only point would be to build libqemuutil.a...

Should the ./configure script return an error if $target_list is empty?