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
|