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

Re: [Xen-devel] [PATCH] build fixes for cross-compiling



On Thu, 2011-09-29 at 08:43 +0100, Jan Beulich wrote:
> >>> On 28.09.11 at 23:31, Adin Scannell <adin@xxxxxxxxxxxxxxx> wrote:
> > I always have problems cross-compiling tools (I build everything on a
> > 64-bit machine and generally target a 32-bit host), because all the
> > link steps are missing targets.  I've use this tiny patch on the base
> > of my workspaces.
> > 
> > To my knowledge, this doesn't break anything -- but who knows with
> > builds, particularly cross-compiling. I just thought I'd throw this
> > there in case others have the same issue and it doesn't affect
> > standard build environments.
> 
> Are you saying this actually works for you (building everything, not just
> the tools)?
> 
> I do cross builds too, but generally the other way around (64-bit
> build on 32-bit host), and hence need to only cross-build the
> hypervisor to put underneath everything.
> 
> > diff -r a422e2a4451e config/x86_32.mk
> > --- a/config/x86_32.mk
> > +++ b/config/x86_32.mk
> > @@ -8,6 +8,7 @@ CONFIG_XCUTILS := y
> >  CONFIG_IOEMU := y
> > 
> >  CFLAGS += -m32 -march=i686
> > +LDFLAGS += -m32 -march=i686
> 
> I can't seem to find an ld (native or cross) that would accept -m32,
> -march=i686, ...
> 
> >
> >  # Use only if calling $(LD) directly.
> >  LDFLAGS_DIRECT_OpenBSD = _obsd
> > diff -r a422e2a4451e config/x86_64.mk
> > --- a/config/x86_64.mk
> > +++ b/config/x86_64.mk
> > @@ -9,6 +9,7 @@ CONFIG_XCUTILS := y
> >  CONFIG_IOEMU := y
> > 
> >  CFLAGS += -m64
> > +LDFLAGS += -m64
> 
> ... or -m64. But $(LDFLAGS) gets passed to $(LD) when building Xen
> (other than for the tools, where generally $(CC) is used to do the
> linking).

This worked for me, the link line ends up as 

ld -m64   -melf_x86_64  -T xen.lds -N prelink.o \
            /local/scratch/ianc/devel/xen-unstable.hg/xen/.xen-x86_64-syms.1.o 
-o /local/scratch/ianc/devel/xen-unstable.hg/xen/xen-x86_64-syms

(the inclusion of the arch in the filename is a local patch)

This is with ld from Debian Squeeze:
$ ld --version
GNU ld (GNU Binutils for Debian) 2.20.1-system.20100303

Ah, I think I see what's happening: the -melf... simply silently
overrides the -m64, just "ld -m64" gives errors as you suggested, so
does "ld -melf... -m64".

We have LDFLAGS_DIRECT, adding LDFLAGS_INDIRECT seems a bit gross
though... I wonder if perhaps LDFLAGS and LDFLAGS_DIRECT should be
mut8lly exclusive, i.e. direct calls to the linker use only the latter
and not both?

Ian.

> 
> Jan
> 
> > 
> >  LIBLEAFDIR = $(LIBLEAFDIR_x86_64)
> >  LIBDIR = $(LIBDIR_x86_64)
> 
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.