qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PULL 00/64] slirp updates


From: Marc-André Lureau
Subject: Re: [Qemu-devel] [PULL 00/64] slirp updates
Date: Thu, 20 Dec 2018 16:20:39 +0400

Hi

On Thu, Dec 20, 2018 at 4:01 PM Marc-André Lureau
<address@hidden> wrote:
>
> Hi
>
> On Wed, Dec 19, 2018 at 11:45 PM Peter Maydell <address@hidden> wrote:
> >
> > On Tue, 18 Dec 2018 at 23:04, Samuel Thibault
> > <address@hidden> wrote:
> > >
> > > The following changes since commit 
> > > e85c577158a2e8e252414959da9ef15c12eec63d:
> > >
> > >   Merge remote-tracking branch 
> > > 'remotes/huth-gitlab/tags/pull-request-2018-12-17' into staging 
> > > (2018-12-18 14:31:06 +0000)
> > >
> > > are available in the Git repository at:
> > >
> > >   https://people.debian.org/~sthibault/qemu.git tags/samuel-thibault
> > >
> > > for you to fetch changes up to 4c2b5ca1b5dd42bb96e954db7a46ebe39fd24620:
> > >
> > >   slirp: Mark debugging calls as unlikely (2018-12-18 23:44:35 +0100)
> > >
> > > ----------------------------------------------------------------
> > > Abstract away slirp toward a libslirp
> >
> > This fails to compile (all platforms):
> >
> > For the windows builds, a compile failure in slirp.c:
> > /home/petmay01/qemu-for-merges/net/slirp.c: In function 'net_slirp_init':
> > /home/petmay01/qemu-for-merges/net/slirp.c:302:10: error: implicit
> > declaration of function 'inet_pton'
> > [-Werror=implicit-function-declaration]
> >      if (!inet_pton(AF_INET6, vprefix6, &ip6_prefix)) {
> >           ^
> > /home/petmay01/qemu-for-merges/net/slirp.c:302:5: error: nested extern
> > declaration of 'inet_pton' [-Werror=nested-externs]
> >      if (!inet_pton(AF_INET6, vprefix6, &ip6_prefix)) {
> >      ^
> >
>
> This one is easy, it needs "build-sys: require Vista API by default
> globally" series that Paolo has been sending in his last pullreqs.
>
> > On Linux (x86-64 and other host archs) a link failure:
> >
> >   LINK    arm-softmmu/qemu-system-arm
> > ../slirp/ncsi.o: In function `ncsi_input':
> > /home/petmay01/linaro/qemu-for-merges/slirp/ncsi.c:166: undefined
> > reference to `slirp_output'
> > ../slirp/slirp.o: In function `arp_input':
> > /home/petmay01/linaro/qemu-for-merges/slirp/slirp.c:835: undefined
> > reference to `slirp_output'
> > ../slirp/slirp.o: In function `if_encap4':
> > /home/petmay01/linaro/qemu-for-merges/slirp/slirp.c:935: undefined
> > reference to `slirp_output'
> > ../slirp/slirp.o: In function `if_encap':
> > /home/petmay01/linaro/qemu-for-merges/slirp/slirp.c:1021: undefined
> > reference to `slirp_output'
> > collect2: error: ld returned 1 exit status
> > Makefile:199: recipe for target 'qemu-system-arm' failed
> >
>
> Hmm, weird linker error. Could you give some details on your build 
> environment?
>
> > It also manages to provoke an internal linker error on freebsd:
> >
> > /usr/bin/ld: error in ../slirp/socket.o(.eh_frame); no .eh_frame_hdr
> > table will be created.
> > /usr/bin/ld: ../slirp/socket.o: invalid string offset 1416 >= 978 for
> > section `.strtab'
> > /usr/bin/ld: ../slirp/socket.o: invalid relocation type 38
> > /usr/bin/ld: BFD 2.17.50 [FreeBSD] 2007-07-03 assertion fail
> > /usr/src/gnu/usr.bin/binutils/libbfd/../../../../contrib/binutils/bfd/elf64-x86-
> > 64.c:276
> > /usr/bin/ld: ../slirp/socket.o: invalid relocation type 51
> > /usr/bin/ld: BFD 2.17.50 [FreeBSD] 2007-07-03 assertion fail
> > /usr/src/gnu/usr.bin/binutils/libbfd/../../../../contrib/binutils/bfd/elf64-x86-64.c:276
> > /usr/bin/ld: ../slirp/socket.o: invalid relocation type 57
> > [enormous long list of similar messages]
> > /usr/bin/ld: ../slirp/socket.o: invalid relocation type 8248
> > /usr/bin/ld: BFD 2.17.50 [FreeBSD] 2007-07-03 assertion fail
> > /usr/src/gnu/usr.bin/binutils/libbfd/../../../../contrib/binutils/bfd/elf64-x86-
> > 64.c:276
> > /usr/bin/ld: BFD 2.17.50 [FreeBSD] 2007-07-03 internal error, aborting
> > at /usr/src/gnu/usr.bin/binutils/libbfd/../../../../contrib/binutils/b
> > fd/reloc.c line 5288 in bfd_byte
> > *bfd_generic_get_relocated_section_contents(bfd *, struct
> > bfd_link_info *, struct bfd_link_order *, bfd_byte
> >  *, bfd_boolean, asymbol **)
> >
> > /usr/bin/ld: Please report this bug.
>
> make vm-build-freebsd passes here... weirder
>
> >
> > c++: error: linker command failed with exit code 1 (use -v to see 
> > invocation)
> >
> > On NetBSD, a different slirp.c compiler error building the bsd-user
> > target:
> > In file included from ../slirp/slirp.c:31:0:
> > /var/tmp/qemu-test.nLOQbq/include/hw/hw.h:6:2: error: #error Cannot
> > include hw/hw.h from user emulation
> >  #error Cannot include hw/hw.h from user emulation
> >   ^
> >
>
> make vm-build-netbsd passes here too...
>
> > On OpenBSD, a rather uninformative linker error:
> > /usr/bin/ld: final link failed: Nonrepresentable section on output
> > collect2: error: ld returned 1 exit status
>
> make vm-build-openbsd fails here however with the:
> "Cannot include hw/hw.h from user emulation" (interesting, no? ;)
>
> Eh, git blame:
> 062e552 Anthony Liguori        2009-01-08 19:27 +0000   31│ #include "hw/hw.h"
>
> -#include "hw/hw.h"
> +#include "migration/vmstate.h"
> +#include "migration/qemu-file-types.h"
>
> Seems to solve it. I will send a seperate patch.

Ok I figure that the error only happen when build for -user, however
with the build fix below, it only builds for -softmmu. So that fix is
not required.

All in all, I think we should give it another try once the "build-sys:
require Vista API" series is merged, and with the build-sys fix below
squahed in "build-sys: use a seperate slirp-obj-y && slirp.mo".

>
> > On OSX, the clang version of the same issue as Linux:
> > Undefined symbols for architecture x86_64:
> >   "_slirp_output", referenced from:
> >       _ncsi_input in ncsi.o
> >       _slirp_input in slirp.o
> >       _if_encap in slirp.o
> > ld: symbol(s) not found for architecture x86_64
> > clang: error: linker command failed with exit code 1 (use -v to see 
> > invocation)
> >
>
> I don't have a mac, but all those linker errors look related.
>
> I don't get why it sometime succeeds to link, but there is an obvious
> mistake in "build-sys: use a seperate slirp-obj-y && slirp.mo" (Sam,
> you should squash that fix)
>
> diff --git a/Makefile.target b/Makefile.target
> index 37e2fc449b..39f72e81be 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -182,13 +182,13 @@ dummy := $(call unnest-vars,.., \
>                 slirp-obj-y)
>  target-obj-y := $(target-obj-y-save)
>  all-obj-y += $(common-obj-y)
> -all-obj-y += $(slirp-obj-y)
>  all-obj-y += $(target-obj-y)
>  all-obj-y += $(qom-obj-y)
>  all-obj-$(CONFIG_SOFTMMU) += $(block-obj-y) $(chardev-obj-y)
>  all-obj-$(CONFIG_USER_ONLY) += $(crypto-aes-obj-y)
>  all-obj-$(CONFIG_SOFTMMU) += $(crypto-obj-y)
>  all-obj-$(CONFIG_SOFTMMU) += $(io-obj-y)
> +all-obj-$(CONFIG_SOFTMMU) += $(slirp-obj-y)
>
> --
> Marc-André Lureau



-- 
Marc-André Lureau



reply via email to

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