[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V9 2/4] tests/migration: Support cross compilati
From: |
Andrew Jones |
Subject: |
Re: [Qemu-devel] [PATCH V9 2/4] tests/migration: Support cross compilation in generating boot header file |
Date: |
Fri, 7 Sep 2018 09:04:35 +0200 |
User-agent: |
Mutt/1.6.0.1 (2016-04-01) |
On Thu, Sep 06, 2018 at 12:23:45PM -0400, Wei Huang wrote:
>
>
> ----- Original Message -----
> > From: "Andrew Jones" <address@hidden>
> > To: "Wei Huang" <address@hidden>
> > Cc: address@hidden, "peter maydell" <address@hidden>, address@hidden,
> > address@hidden,
> > address@hidden, "alex bennee" <address@hidden>
> > Sent: Thursday, September 6, 2018 9:00:33 AM
> > Subject: Re: [Qemu-devel] [PATCH V9 2/4] tests/migration: Support cross
> > compilation in generating boot header file
> >
> > On Thu, Sep 06, 2018 at 09:37:04AM -0400, Wei Huang wrote:
> > >
> > >
> > > ----- Original Message -----
> > > > From: "Andrew Jones" <address@hidden>
> > > > To: "Wei Huang" <address@hidden>
> > > > Cc: address@hidden, address@hidden, "peter maydell"
> > > > <address@hidden>, address@hidden,
> > > > address@hidden, "alex bennee" <address@hidden>
> > > > Sent: Thursday, September 6, 2018 7:03:32 AM
> > > > Subject: Re: [Qemu-devel] [PATCH V9 2/4] tests/migration: Support cross
> > > > compilation in generating boot header file
> > > >
> > > > On Wed, Sep 05, 2018 at 03:15:32PM -0400, Wei Huang wrote:
> > > > > Recently a new configure option, CROSS_CC_GUEST, was added to
> > > > > $(TARGET)-softmmu/config-target.mak to support TCG-related tests. This
> > > > > patch tries to leverage this option to support cross compilation when
> > > > > the
> > > > > migration boot block file is being re-generated:
> > > > >
> > > > > * The x86 related files are moved to a new sub-dir (named ./i386).
> > > > > * A new top-layer Makefile is created in tests/migration/ directory.
> > > > > This Makefile searches and parses CROSS_CC_GUEST to generate
> > > > > CROSS_PREFIX.
> > > > > The CROSS_PREFIX, if available, is then passed to
> > > > > migration/$ARCH/Makefile.
> > > > >
> > > > > Reviewed-by: Juan Quintela <address@hidden>
> > > > > Signed-off-by: Wei Huang <address@hidden>
> > > > > ---
> > > > > tests/migration-test.c | 2 +-
> > > > > tests/migration/Makefile | 44
> > > > > ++++++++++++----------
> > > > > tests/migration/i386/Makefile | 22 +++++++++++
> > > > > .../{x86-a-b-bootblock.S => i386/a-b-bootblock.S} | 4 --
> > > > > .../{x86-a-b-bootblock.h => i386/a-b-bootblock.h} | 8 ++--
> > > > > 5 files changed, 51 insertions(+), 29 deletions(-)
> > > > > create mode 100644 tests/migration/i386/Makefile
> > > > > rename tests/migration/{x86-a-b-bootblock.S => i386/a-b-bootblock.S}
> > > > > (93%)
> > > > > rename tests/migration/{x86-a-b-bootblock.h => i386/a-b-bootblock.h}
> > > > > (92%)
> > > > >
> > > > > diff --git a/tests/migration-test.c b/tests/migration-test.c
> > > > > index 0e687b7..fe6b41a 100644
> > > > > --- a/tests/migration-test.c
> > > > > +++ b/tests/migration-test.c
> > > > > @@ -83,7 +83,7 @@ static const char *tmpfs;
> > > > > /* A simple PC boot sector that modifies memory (1-100MB) quickly
> > > > > * outputting a 'B' every so often if it's still running.
> > > > > */
> > > > > -#include "tests/migration/x86-a-b-bootblock.h"
> > > > > +#include "tests/migration/i386/a-b-bootblock.h"
> > > > >
> > > > > static void init_bootfile_x86(const char *bootpath)
> > > > > {
> > > > > diff --git a/tests/migration/Makefile b/tests/migration/Makefile
> > > > > index c0824b4..a9ed875 100644
> > > > > --- a/tests/migration/Makefile
> > > > > +++ b/tests/migration/Makefile
> > > > > @@ -1,31 +1,35 @@
> > > > > -# To specify cross compiler prefix, use CROSS_PREFIX=
> > > > > -# $ make CROSS_PREFIX=x86_64-linux-gnu-
> > > > > +#
> > > > > +# Copyright (c) 2018 Red Hat, Inc. and/or its affiliates
> > > > > +#
> > > > > +# This work is licensed under the terms of the GNU GPL, version 2 or
> > > > > later.
> > > > > +# See the COPYING file in the top-level directory.
> > > > > +#
> > > > > +
> > > > > +TARGET_LIST = i386
> > > > > +
> > > > > +SRC_PATH = ../..
> > > > >
> > > > > override define __note
> > > > > -/* This file is automatically generated from
> > > > > - * tests/migration/x86-a-b-bootblock.S, edit that and then run
> > > > > - * tests/migration/rebuild-x86-bootblock.sh to update,
> > > > > - * and then remember to send both in your patch submission.
> > > > > +/* This file is automatically generated from the assembly file in
> > > > > + * tests/migration/address@hidden Edit that file and then run "make
> > > > > all"
> > > > > + * inside tests/migration to update, and then remember to send both
> > > > > + * the header and the assembler differences in your patch submission.
> > > > > */
> > > > > endef
> > > > > export __note
> > > > >
> > > > > -.PHONY: all clean
> > > > > -all: x86-a-b-bootblock.h
> > > > > -
> > > > > -x86-a-b-bootblock.h: x86.bootsect
> > > > > - echo "$$__note" > header.tmp
> > > > > - xxd -i $< | sed -e 's/.*int.*//' >> header.tmp
> > > > > - mv header.tmp $@
> > > > > +find-arch-cross-cc = $(lastword $(shell grep -h "CROSS_CC_GUEST="
> > > > > $(wildcard $(SRC_PATH)/$(patsubst
> > > > > i386,*86*,$(1))-softmmu/config-target.mak)))
> > > >
> > > > The above function hangs unless configuring with
> > > > '--target-list=x86_64-softmmu,aarch64-softmmu'. I tried just x86_64
> > > > alone,
> > > > just aarch64 alone, and also configuring both x86_64 and i386, but none
> > > > of those worked. For some reason grep isn't happy with the generated
> > > > path
> > > > list. I tested like this
> > > >
> > > > ./configure --target-list=x86_64-softmmu,i386-softmmu
> > > > make -C tests/migration
> > > >
> > > > And, while not an issue of this series, I had to manually add
> > > > CROSS_CC_GUEST="aarch64-linux-gnu-gcc" to
> > > > aarch64-softmmu/config-target.mak
> > > > for it to work, because configure's compiler test fails with the Fedora
> > > > aarch64-linux-gnu-gcc installation (the linker can't find code it needs
> > > > to a build a program with main()). I'm not sure if building programs
> > > > with
> > > > main() is something the CROSS_CC_GUEST compiler needs to do. Maybe that
> > > > test can be relaxed. Alex?
> > >
> > > I saw the same problem and it needs to be addressed in ./configure file.
> > > Most distros don't ship with
> > > cross-compiled glibc. So compiling main() will fail because of that.
> >
> > I don't care too much about that problem. You just need to have the right
> > cross compiler installed. I care about the one above, which is a separate
> > problem and should be fixed. The tests/migration build shouldn't hang
> > when a target-list other than x86_64-softmmu,aarch64-softmmu is used.
> >
>
> Since you don't have aarch64, the stall happens when grep is supplied with
> an empty file name and waiting on standard input. There is no easy way to
> skip standard input for grep. How about the following? Basically we always
> supply with a terminator.
>
> grep -h "CROSS_CC_GUEST=" $(wildcard $(SRC_PATH)/$(patsubst
> i386,*86*,$(1))-softmmu/config-target.mak) /dev/null)
Yeah, that should work. Also, when a target-list of
i386-softmmu,x86_64-softmmu is used, since lastword is applied to
the grep results, then the cross-cc-guest entry for x86_64 will be
selected for the i386 target (since it comes later in the alphabet).
That's not correct, but I won't hold the patch up over it.
Thanks,
drew
- Re: [Qemu-devel] [PATCH V9 4/4] tests: Add migration test for aarch64, (continued)
[Qemu-devel] [PATCH V9 1/4] tests/migration: Convert x86 boot block compilation script into Makefile, Wei Huang, 2018/09/05
[Qemu-devel] [PATCH V9 2/4] tests/migration: Support cross compilation in generating boot header file, Wei Huang, 2018/09/05
Re: [Qemu-devel] [PATCH V9 2/4] tests/migration: Support cross compilation in generating boot header file, Alex Bennée, 2018/09/10
Re: [Qemu-devel] [PATCH V9 0/4] tests: Add migration test for aarch64, Juan Quintela, 2018/09/06