Re: [PATCH kvm-unit-tests] configure: fix non-newlib cross-compiling

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

 



On Mon, Jan 16, 2017 at 03:22:00PM +0000, Alex Bennée wrote:
> 
> Andrew Jones <drjones@xxxxxxxxxx> writes:
> 
> > Commit 529046c3 "libcflat: add PRI(dux)32 format types" applies a
> > detection trick that requires native compiling or cross-compiling
> > with newlib, an embedded system C standard library. We can avoid
> > the new dependency with a different trick.
> >
> > Cc: Alex Bennée <alex.bennee@xxxxxxxxxx>
> > Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx>
> > ---
> >  configure | 14 +++++---------
> >  1 file changed, 5 insertions(+), 9 deletions(-)
> >
> > diff --git a/configure b/configure
> > index 127868ce3090..3045dd129bda 100755
> > --- a/configure
> > +++ b/configure
> > @@ -12,6 +12,7 @@ host=$arch
> >  cross_prefix=
> >  endian=""
> >  pretty_print_stacks=yes
> > +u32_long=
> >
> >  usage() {
> >      cat <<-EOF
> > @@ -110,16 +111,11 @@ if [ -f $testdir/run ]; then
> >  fi
> >
> >  # check if uint32_t needs a long format modifier
> > -cat << EOF > lib_test.c
> > -#include <inttypes.h>
> > +cat << EOF > lib-test.c
> > +__UINT32_TYPE__
> >  EOF
> > -
> > -$cross_prefix$cc lib_test.c -E | grep "typedef" | grep "long" | grep "uint32_t" &> /dev/null
> > -exit=$?
> > -if [ $exit -eq 0 ]; then
> > -    u32_long=true
> > -fi
> > -rm -f lib_test.c
> > +u32_long=$($cross_prefix$cc -E lib-test.c | awk '! /^#/ && $2 == "long" {print "yes"}')
> > +rm -f lib-test.c
> 
> Hmm this fails on my system as the -E output is:
> 
>   15:18 alex@overdrive01/aarch64  [kvm-unit-tests-32bit.git/review/drew-config@github] >arm-none-eabi-gcc -E test.c
>   # 1 "test.c"
>   # 1 "<built-in>"
>   # 1 "<command-line>"
>   # 1 "test.c"
>   long unsigned int
> 
> Changing the line to:
> 
>   u32_long=$($cross_prefix$cc -E lib-test.c | awk '! /^#/ && $1 == "long" {print "yes"}')

Let's change it to a couple simple greps then

 u32_long=$(gcc -E lib-test.c | grep -v '^#' | grep -q long && echo yes)

> 
> Fixes the detection for me but I wonder if there are other corner cases
> to catch?

Hope not, but I wouldn't be surprised. This type of detection is
pretty fragile...

> 
> The rest of the compile fails later due to un-merged format fixes for
> pci_setup_msi which I guess is expected.

Hmm, those are in master already. Did you apply this to a latest pull?

Thanks for testing! I'll send a v2.

drew

> 
> >
> >  # check for dependent 32 bit libraries
> >  if [ "$arch" != "arm" ]; then
> 
> 
> --
> Alex Bennée
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux