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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
17 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Kamil Rytarowski-2
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 <[hidden email]>
Reviewed-by: Markus Armbruster <[hidden email]>
---
 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


Reply | Threaded
Open this post in threaded view
|

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

Michael Tokarev
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

Reply | Threaded
Open this post in threaded view
|

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

Michael Tokarev
In reply to this post by Kamil Rytarowski-2
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

Reply | Threaded
Open this post in threaded view
|

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

Kamil Rytarowski-2
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.


signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

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

Markus Armbruster
Kamil Rytarowski <[hidden email]> 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)

Reply | Threaded
Open this post in threaded view
|

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

Michael Tokarev
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

Reply | Threaded
Open this post in threaded view
|

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

Markus Armbruster
Michael Tokarev <[hidden email]> 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: <[hidden email]>
https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg05108.html

Reply | Threaded
Open this post in threaded view
|

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

Kamil Rytarowski-2
In reply to this post by Michael Tokarev
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.


signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

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

Peter Maydell-5
On 6 June 2017 at 14:38, Kamil Rytarowski <[hidden email]> 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

Reply | Threaded
Open this post in threaded view
|

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

Kamil Rytarowski-2
On 06.06.2017 16:34, Peter Maydell wrote:

> On 6 June 2017 at 14:38, Kamil Rytarowski <[hidden email]> 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



signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

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

Kamil Rytarowski-2
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 <[hidden email]> 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-*.


signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

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

Markus Armbruster
Kamil Rytarowski <[hidden email]> 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 <[hidden email]> 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.

Reply | Threaded
Open this post in threaded view
|

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

Kamil Rytarowski-2
On 10.06.2017 17:15, Markus Armbruster wrote:

> Kamil Rytarowski <[hidden email]> 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 <[hidden email]> 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.


signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

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

Markus Armbruster
Kamil Rytarowski <[hidden email]> writes:

> On 10.06.2017 17:15, Markus Armbruster wrote:
>> Kamil Rytarowski <[hidden email]> 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 <[hidden email]> 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)

Reply | Threaded
Open this post in threaded view
|

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

Kamil Rytarowski-2
On 19.06.2017 09:42, Markus Armbruster wrote:

> Kamil Rytarowski <[hidden email]> writes:
>
>> On 10.06.2017 17:15, Markus Armbruster wrote:
>>> Kamil Rytarowski <[hidden email]> 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 <[hidden email]> 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.


signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

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

Peter Maydell-5
In reply to this post by Michael Tokarev
On 5 June 2017 at 15:29, Michael Tokarev <[hidden email]> 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

Reply | Threaded
Open this post in threaded view
|

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

Philippe Mathieu-Daudé
On Thu, Jun 22, 2017 at 12:54 PM, Peter Maydell
<[hidden email]> wrote:
> On 5 June 2017 at 15:29, Michael Tokarev <[hidden email]> 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?